@vibes.diy/base 14.3.101 → 14.3.103

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.
Files changed (26) hide show
  1. package/components/vibe-menu/cards/CodeCard.js +55 -17
  2. package/components/vibe-menu/cards/CodeCard.js.map +1 -1
  3. package/components/vibe-menu/cards/CodeTabRow.d.ts +15 -0
  4. package/components/vibe-menu/cards/CodeTabRow.js +75 -0
  5. package/components/vibe-menu/cards/CodeTabRow.js.map +1 -0
  6. package/components/vibe-menu/index.d.ts +1 -0
  7. package/components/vibe-menu/index.js +1 -0
  8. package/components/vibe-menu/index.js.map +1 -1
  9. package/components/vibe-menu/parts/MomentLine.d.ts +1 -0
  10. package/components/vibe-menu/parts/MomentLine.js +2 -1
  11. package/components/vibe-menu/parts/MomentLine.js.map +1 -1
  12. package/components/vibe-menu/sketches/AccountTabAudition.d.ts +11 -0
  13. package/components/vibe-menu/sketches/AccountTabAudition.js +110 -0
  14. package/components/vibe-menu/sketches/AccountTabAudition.js.map +1 -0
  15. package/components/vibe-menu/sketches/CardTabRow.d.ts +27 -0
  16. package/components/vibe-menu/sketches/CardTabRow.js +70 -0
  17. package/components/vibe-menu/sketches/CardTabRow.js.map +1 -0
  18. package/components/vibe-menu/sketches/HomeTabAudition.d.ts +26 -0
  19. package/components/vibe-menu/sketches/HomeTabAudition.js +87 -0
  20. package/components/vibe-menu/sketches/HomeTabAudition.js.map +1 -0
  21. package/components/vibe-menu/sketches/ShareTabAudition.d.ts +14 -0
  22. package/components/vibe-menu/sketches/ShareTabAudition.js +155 -0
  23. package/components/vibe-menu/sketches/ShareTabAudition.js.map +1 -0
  24. package/components/vibe-menu/slices.d.ts +1 -0
  25. package/components/vibe-menu/slices.js.map +1 -1
  26. package/package.json +5 -5
@@ -11,6 +11,7 @@ import { MomentLine } from "../parts/MomentLine.js";
11
11
  import { Row } from "../parts/Row.js";
12
12
  import { SURVEY_STRIP_CSS, SurveyStrip } from "../parts/SurveyStrip.js";
13
13
  import { CodeModeWorkspace, WORKSPACE_CODE_TABS, resolveActiveCodeTab } from "./CodeModeWorkspace.js";
14
+ import { CODE_TAB_ROW_CSS, CodeTabRow, codeNavItems } from "./CodeTabRow.js";
14
15
  export const CODE_DRILL_TITLES = Object.freeze({ look: "Look", details: "App details", help: "Help" });
15
16
  export const CODE_CARD_CSS = `
16
17
  [data-vibe-menu] .vm-prompt-request { margin: 0 0 var(--space-16); font: 700 29px/1.12 var(--font-display); letter-spacing: -0.025em; color: var(--ink); overflow-wrap: anywhere; }
@@ -91,18 +92,21 @@ export function CodeCard(props) {
91
92
  const kicker = kickerFor({ code, banner: nav.banner, editor, pending });
92
93
  const composer = pending === true ? neutralComposer(code.composer) : code.composer;
93
94
  const placeholder = pending === true ? "" : composer.cap === "Remix this" && props.remixHint !== "" ? props.remixHint : composer.placeholder;
95
+ const requestHead = request !== undefined && request !== "" ? (React.createElement(React.Fragment, null,
96
+ React.createElement("p", { className: "vm-kicker" }, "Your request"),
97
+ React.createElement("h2", { className: "vm-prompt-request" }, request))) : null;
98
+ const composerNode = React.createElement(Composer, { composer: composer, draft: draft, placeholder: placeholder });
99
+ const boot = request !== undefined &&
100
+ moment.pinned === null &&
101
+ moment.live?.kind === "progress" &&
102
+ moment.live.resting !== true &&
103
+ (code.survey === undefined || code.survey === null || shownSurvey !== code.survey.id) ? (React.createElement("div", { className: "vm-prompt-boot" },
104
+ React.createElement("h3", null, "Starting your build."),
105
+ React.createElement("p", null, "We\u2019re firing up the tools to turn your request into an app."))) : null;
94
106
  const head = (React.createElement(React.Fragment, null,
95
- request !== undefined && request !== "" ? (React.createElement(React.Fragment, null,
96
- React.createElement("p", { className: "vm-kicker" }, "Your request"),
97
- React.createElement("h2", { className: "vm-prompt-request" }, request))) : kicker !== "" ? (React.createElement("p", { className: "vm-kicker" }, kicker)) : null,
98
- React.createElement(Composer, { composer: composer, draft: draft, placeholder: placeholder }),
99
- request !== undefined &&
100
- moment.pinned === null &&
101
- moment.live?.kind === "progress" &&
102
- moment.live.resting !== true &&
103
- (code.survey === undefined || code.survey === null || shownSurvey !== code.survey.id) ? (React.createElement("div", { className: "vm-prompt-boot" },
104
- React.createElement("h3", null, "Starting your build."),
105
- React.createElement("p", null, "We\u2019re firing up the tools to turn your request into an app."))) : null));
107
+ requestHead ?? (kicker !== "" ? React.createElement("p", { className: "vm-kicker" }, kicker) : null),
108
+ composerNode,
109
+ boot));
106
110
  if (codeModeOn) {
107
111
  const tab = activeWorkspaceTab(resolveActiveCodeTab({ tab: code.codeTab, disabled: code.disabledCodeTabs }), nav.view);
108
112
  function onTab(t) {
@@ -125,6 +129,44 @@ export function CodeCard(props) {
125
129
  head,
126
130
  hasMoment ? React.createElement(MomentLine, { moment: moment, log: log, onAction: code.onMomentAction }) : null));
127
131
  const drill = codeDrillOf({ view: nav.view, owner });
132
+ const suggestions = moment.pinned === null ? code.suggestions.slice(0, 3) : [];
133
+ const onToggleFastPath = owner === true ? code.onToggleFastPath : null;
134
+ const suggestionsNode = (React.createElement(Suggestions, { items: suggestions, gold: code.goldSuggestion, onPick: code.onSuggestion, fastPaths: code.suggestionFastPaths, onToggleFastPath: onToggleFastPath }));
135
+ const saveRow = editText !== null && editText.on === true && (editText.pending > 0 || editText.saving === true) ? (React.createElement(Row, { lead: "check", label: editText.saving === true ? EDIT_TEXT_SAVING : EDIT_TEXT_SAVE, compact: true, disabled: editText.saving === true || editText.pending === 0, tail: editText.pending > 0 ? { kind: "value", value: String(editText.pending) } : { kind: "none" }, ariaLabel: editText.saving === true
136
+ ? EDIT_TEXT_SAVING
137
+ : `${EDIT_TEXT_SAVE} ${editText.pending} text edit${editText.pending === 1 ? "" : "s"}`, onClick: editText.onSave })) : null;
138
+ if (code.tabRow === true) {
139
+ const editTextOn = editText !== null && editText.on === true;
140
+ const onPick = (item) => {
141
+ if (item === "codeMode")
142
+ code.onCodeMode(true);
143
+ else if (item === "editText")
144
+ editText?.onToggle(editTextOn === false);
145
+ else if (drill === item)
146
+ nav.onLeaveDrill();
147
+ else
148
+ nav.onDrill({ drill: item });
149
+ };
150
+ const row = (React.createElement(CodeTabRow, { items: codeNavItems({ owner, editor: editText !== null, codeModeAllowed }), active: drill, editTextOn: editTextOn, onPick: onPick }));
151
+ if (drill !== null) {
152
+ return (React.createElement("div", { className: "vm-code vm-ctab", "data-card": "vibe", "data-tab-row": "" },
153
+ React.createElement("style", null, CODE_CARD_CSS + CODE_TAB_ROW_CSS),
154
+ React.createElement("div", { className: "vm-drill", "data-drill": drill }, code.slots[drill]),
155
+ React.createElement(DoneButton, { onDone: nav.onLeaveDrill }),
156
+ row));
157
+ }
158
+ const invite = requestHead === null && nav.banner === "remixInvite" && kicker !== "" ? React.createElement("p", { className: "vm-kicker" }, kicker) : null;
159
+ const chatLog = log === null ? null : { ...log, tail: moment.live !== null ? suggestionsNode : undefined };
160
+ return (React.createElement("div", { className: "vm-code vm-ctab", "data-card": "vibe", "data-tab-row": "" },
161
+ React.createElement("style", null, CODE_CARD_CSS + CODE_TAB_ROW_CSS),
162
+ requestHead ?? invite,
163
+ hasMoment ? React.createElement(MomentLine, { moment: moment, log: chatLog, onAction: code.onMomentAction }) : null,
164
+ survey,
165
+ saveRow,
166
+ composerNode,
167
+ boot,
168
+ row));
169
+ }
128
170
  if (drill !== null) {
129
171
  return (React.createElement("div", { className: "vm-code", "data-card": "vibe" },
130
172
  React.createElement("style", null, CODE_CARD_CSS),
@@ -133,21 +175,17 @@ export function CodeCard(props) {
133
175
  React.createElement("div", { className: "vm-drill", "data-drill": drill }, code.slots[drill]),
134
176
  React.createElement(DoneButton, { onDone: nav.onLeaveDrill })));
135
177
  }
136
- const suggestions = moment.pinned === null ? code.suggestions.slice(0, 3) : [];
137
- const onToggleFastPath = owner === true ? code.onToggleFastPath : null;
138
178
  return (React.createElement("div", { className: "vm-code", "data-card": "vibe" },
139
179
  React.createElement("style", null, CODE_CARD_CSS),
140
180
  top,
141
181
  survey,
142
- React.createElement(Suggestions, { items: suggestions, gold: code.goldSuggestion, onPick: code.onSuggestion, fastPaths: code.suggestionFastPaths, onToggleFastPath: onToggleFastPath }),
182
+ suggestionsNode,
143
183
  React.createElement("div", { className: "vm-group" },
144
184
  owner ? (React.createElement(Row, { lead: "palette", label: CODE_DRILL_TITLES.look, compact: true, tail: { kind: "drill" }, onClick: () => nav.onDrill({ drill: "look" }) })) : null,
145
185
  owner ? (React.createElement(Row, { lead: "file", label: CODE_DRILL_TITLES.details, compact: true, tail: { kind: "drill" }, onClick: () => nav.onDrill({ drill: "details" }) })) : null,
146
186
  React.createElement(Row, { lead: "help-circle", label: CODE_DRILL_TITLES.help, compact: true, tail: { kind: "drill" }, onClick: () => nav.onDrill({ drill: "help" }) }),
147
187
  codeModeAllowed ? (React.createElement(Row, { lead: "braces", label: "Code mode", compact: true, tail: { kind: "switch", on: false }, onClick: () => code.onCodeMode(true) })) : null,
148
188
  editText !== null ? (React.createElement(Row, { lead: "lines", label: EDIT_TEXT_LABEL, compact: true, tail: { kind: "switch", on: editText.on }, onClick: () => editText.onToggle(editText.on === false) })) : null,
149
- editText !== null && editText.on === true && (editText.pending > 0 || editText.saving === true) ? (React.createElement(Row, { lead: "check", label: editText.saving === true ? EDIT_TEXT_SAVING : EDIT_TEXT_SAVE, compact: true, disabled: editText.saving === true || editText.pending === 0, tail: editText.pending > 0 ? { kind: "value", value: String(editText.pending) } : { kind: "none" }, ariaLabel: editText.saving === true
150
- ? EDIT_TEXT_SAVING
151
- : `${EDIT_TEXT_SAVE} ${editText.pending} text edit${editText.pending === 1 ? "" : "s"}`, onClick: editText.onSave })) : null)));
189
+ saveRow)));
152
190
  }
153
191
  //# sourceMappingURL=CodeCard.js.map
@@ -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":"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"}
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ export type CodeNavItem = "look" | "details" | "help" | "codeMode" | "editText";
3
+ export declare function codeNavItems(gates: {
4
+ readonly owner: boolean;
5
+ readonly editor: boolean;
6
+ readonly codeModeAllowed: boolean;
7
+ }): readonly CodeNavItem[];
8
+ export declare const CODE_TAB_ROW_CSS = "\n[data-vibe-menu] .vm-ctab { display: flex; flex-direction: column; }\n[data-vibe-menu] .vm-ctab .vm-composer { margin-bottom: 0; }\n[data-vibe-menu] .vm-ctab .vm-drill + .vm-done { margin-top: var(--space-14); }\n/* The opened chat ends with the suggestions: the clip holds the log's own\n 160px cap plus them, and the log alone scrolls. */\n[data-vibe-menu] .vm-ctab .vm-log-clip[data-open=\"true\"] { max-height: none; }\n[data-vibe-menu] .vm-ctab .vm-log-clip .vm-suggestions { margin: var(--space-12) 0 0; }\n[data-vibe-menu] .vm-cnav {\n display: flex; flex: none; height: var(--size-bar);\n margin: var(--space-14) calc(-1 * var(--space-16)) calc(-1 * var(--space-16));\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-cnav button {\n position: relative; flex: 1 1 auto; min-width: 0;\n display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-4);\n padding: var(--space-4) var(--space-2);\n color: var(--ink);\n}\n[data-vibe-menu] .vm-cnav button + button { border-left: var(--stroke-hairline) solid var(--line-hairline); }\n[data-vibe-menu] .vm-cnav button:focus-visible { outline: var(--stroke-focus) solid var(--line-card); outline-offset: -3px; }\n[data-vibe-menu] .vm-cnav button[aria-pressed=\"true\"] { background: var(--accent); color: var(--on-accent); }\n[data-vibe-menu] .vm-cnav-circle {\n display: flex; align-items: center; justify-content: center; flex: none;\n width: var(--size-icon-circle-phone); height: var(--size-icon-circle-phone);\n border-radius: 50%; background: var(--ink);\n}\n[data-vibe-menu] .vm-cnav-circle svg {\n width: 12px; height: 12px; fill: none; stroke: var(--card-bg); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round;\n}\n[data-vibe-menu] .vm-cnav button[aria-pressed=\"true\"] .vm-cnav-circle { background: var(--menu-ink); }\n[data-vibe-menu] .vm-cnav button[aria-pressed=\"true\"] .vm-cnav-circle svg { stroke: var(--vibes-cream); }\n[data-vibe-menu] .vm-cnav-label {\n max-width: 100%; overflow: hidden; text-overflow: ellipsis;\n font: 700 9.6px/1 var(--font-tab); letter-spacing: 0.5px; text-transform: uppercase; white-space: nowrap;\n}\n";
9
+ export interface CodeTabRowProps {
10
+ readonly items: readonly CodeNavItem[];
11
+ readonly active: CodeNavItem | null;
12
+ readonly editTextOn: boolean;
13
+ readonly onPick: (item: CodeNavItem) => void;
14
+ }
15
+ export declare function CodeTabRow(props: CodeTabRowProps): React.ReactElement;
@@ -0,0 +1,75 @@
1
+ import * as React from "react";
2
+ import { EDIT_TEXT_LABEL } from "../copy.js";
3
+ import { Glyph } from "../parts/Glyph.js";
4
+ const CODE_NAV_TITLES = Object.freeze({
5
+ look: "Look",
6
+ details: "App details",
7
+ help: "Help",
8
+ codeMode: "Code mode",
9
+ editText: EDIT_TEXT_LABEL,
10
+ });
11
+ const CODE_NAV_GLYPH = Object.freeze({
12
+ look: "palette",
13
+ details: "file",
14
+ help: "help-circle",
15
+ codeMode: "braces",
16
+ editText: "lines",
17
+ });
18
+ export function codeNavItems(gates) {
19
+ const items = [];
20
+ if (gates.owner)
21
+ items.push("look", "details");
22
+ items.push("help");
23
+ if (gates.codeModeAllowed)
24
+ items.push("codeMode");
25
+ if (gates.editor)
26
+ items.push("editText");
27
+ return items;
28
+ }
29
+ export const CODE_TAB_ROW_CSS = `
30
+ [data-vibe-menu] .vm-ctab { display: flex; flex-direction: column; }
31
+ [data-vibe-menu] .vm-ctab .vm-composer { margin-bottom: 0; }
32
+ [data-vibe-menu] .vm-ctab .vm-drill + .vm-done { margin-top: var(--space-14); }
33
+ /* The opened chat ends with the suggestions: the clip holds the log's own
34
+ 160px cap plus them, and the log alone scrolls. */
35
+ [data-vibe-menu] .vm-ctab .vm-log-clip[data-open="true"] { max-height: none; }
36
+ [data-vibe-menu] .vm-ctab .vm-log-clip .vm-suggestions { margin: var(--space-12) 0 0; }
37
+ [data-vibe-menu] .vm-cnav {
38
+ display: flex; flex: none; height: var(--size-bar);
39
+ margin: var(--space-14) calc(-1 * var(--space-16)) calc(-1 * var(--space-16));
40
+ border-top: var(--stroke-hairline) solid var(--line-hairline);
41
+ }
42
+ [data-vibe-menu] .vm-cnav button {
43
+ position: relative; flex: 1 1 auto; min-width: 0;
44
+ display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-4);
45
+ padding: var(--space-4) var(--space-2);
46
+ color: var(--ink);
47
+ }
48
+ [data-vibe-menu] .vm-cnav button + button { border-left: var(--stroke-hairline) solid var(--line-hairline); }
49
+ [data-vibe-menu] .vm-cnav button:focus-visible { outline: var(--stroke-focus) solid var(--line-card); outline-offset: -3px; }
50
+ [data-vibe-menu] .vm-cnav button[aria-pressed="true"] { background: var(--accent); color: var(--on-accent); }
51
+ [data-vibe-menu] .vm-cnav-circle {
52
+ display: flex; align-items: center; justify-content: center; flex: none;
53
+ width: var(--size-icon-circle-phone); height: var(--size-icon-circle-phone);
54
+ border-radius: 50%; background: var(--ink);
55
+ }
56
+ [data-vibe-menu] .vm-cnav-circle svg {
57
+ width: 12px; height: 12px; fill: none; stroke: var(--card-bg); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round;
58
+ }
59
+ [data-vibe-menu] .vm-cnav button[aria-pressed="true"] .vm-cnav-circle { background: var(--menu-ink); }
60
+ [data-vibe-menu] .vm-cnav button[aria-pressed="true"] .vm-cnav-circle svg { stroke: var(--vibes-cream); }
61
+ [data-vibe-menu] .vm-cnav-label {
62
+ max-width: 100%; overflow: hidden; text-overflow: ellipsis;
63
+ font: 700 9.6px/1 var(--font-tab); letter-spacing: 0.5px; text-transform: uppercase; white-space: nowrap;
64
+ }
65
+ `;
66
+ export function CodeTabRow(props) {
67
+ return (React.createElement("nav", { className: "vm-cnav", "aria-label": "Code tools" }, props.items.map((item) => {
68
+ const pressed = item === "editText" ? props.editTextOn : props.active === item;
69
+ return (React.createElement("button", { key: item, type: "button", "data-item": item, "aria-pressed": pressed, onClick: () => props.onPick(item) },
70
+ React.createElement("span", { className: "vm-cnav-circle", "aria-hidden": "true" },
71
+ React.createElement(Glyph, { name: CODE_NAV_GLYPH[item], className: "" })),
72
+ React.createElement("span", { className: "vm-cnav-label" }, CODE_NAV_TITLES[item])));
73
+ })));
74
+ }
75
+ //# sourceMappingURL=CodeTabRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeTabRow.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/CodeTabRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAkB,MAAM,mBAAmB,CAAC;AAY1D,MAAM,eAAe,GAA0C,MAAM,CAAC,MAAM,CAAC;IAC3E,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,eAAe;CAC1B,CAAC,CAAC;AAGH,MAAM,cAAc,GAA6C,MAAM,CAAC,MAAM,CAAC;IAC7E,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,aAAa;IACnB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,OAAO;CAClB,CAAC,CAAC;AAKH,MAAM,UAAU,YAAY,CAAC,KAI5B;IACC,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,IAAI,KAAK,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,IAAI,KAAK,CAAC,eAAe;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC;AACf,CAAC;AAMD,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC/B,CAAC;AAYF,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,OAAO,CACL,6BAAK,SAAS,EAAC,SAAS,gBAAY,YAAY,IAC7C,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC;QAC/E,OAAO,CACL,gCAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,EAAC,QAAQ,eAAY,IAAI,kBAAgB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;YACxG,8BAAM,SAAS,EAAC,gBAAgB,iBAAa,MAAM;gBACjD,oBAAC,KAAK,IAAC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,SAAS,EAAC,EAAE,GAAG,CAC7C;YACP,8BAAM,SAAS,EAAC,eAAe,IAAE,eAAe,CAAC,IAAI,CAAC,CAAQ,CACvD,CACV,CAAC;IACJ,CAAC,CAAC,CACE,CACP,CAAC;AACJ,CAAC"}
@@ -33,6 +33,7 @@ export * from "./cards/CodeModeWorkspace.js";
33
33
  export * from "./cards/HomeCard.js";
34
34
  export * from "./cards/AccountCard.js";
35
35
  export * from "./cards/CodeCard.js";
36
+ export * from "./cards/CodeTabRow.js";
36
37
  export * from "./cards/ShareCard.js";
37
38
  export * from "./cards/share-copy.js";
38
39
  export * from "./cards/share-actions.js";
@@ -33,6 +33,7 @@ export * from "./cards/CodeModeWorkspace.js";
33
33
  export * from "./cards/HomeCard.js";
34
34
  export * from "./cards/AccountCard.js";
35
35
  export * from "./cards/CodeCard.js";
36
+ export * from "./cards/CodeTabRow.js";
36
37
  export * from "./cards/ShareCard.js";
37
38
  export * from "./cards/share-copy.js";
38
39
  export * from "./cards/share-actions.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,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,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,wBAAwB,CAAC;AACvC,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,uBAAuB,CAAC;AACtC,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"}
@@ -10,6 +10,7 @@ export interface MomentLogControl {
10
10
  readonly open: boolean;
11
11
  readonly lines: readonly AgentLogLine[];
12
12
  readonly onToggle: () => void;
13
+ readonly tail?: React.ReactNode;
13
14
  }
14
15
  export interface MomentLineProps {
15
16
  readonly moment: CurrentMoment;
@@ -53,7 +53,8 @@ function LiveMoment(props) {
53
53
  React.createElement("span", null, item.text)),
54
54
  link,
55
55
  React.createElement("div", { className: "vm-log-clip", "data-log-clip": "", "data-open": log.open ? "true" : "false", inert: log.open ? undefined : true },
56
- React.createElement(AgentLog, { id: logId, lines: log.lines }))));
56
+ React.createElement(AgentLog, { id: logId, lines: log.lines }),
57
+ log.tail)));
57
58
  }
58
59
  export function MomentLine(props) {
59
60
  const { pinned, live } = props.moment;
@@ -1 +1 @@
1
- {"version":3,"file":"MomentLine.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/MomentLine.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MomentLine.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/MomentLine.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ import type { AccountSlice, ViewerSlice } from "../slices.js";
3
+ import { type CardTabItem } from "./CardTabRow.js";
4
+ export declare const ACCOUNT_TAB_CSS = "\n[data-vibe-menu] .vm-xtab .vm-who .vm-textbtn {\n width: auto; height: auto; margin: 0 0 0 auto; padding: var(--space-4) 0;\n}\n";
5
+ export interface AccountTabAuditionProps {
6
+ readonly viewer: ViewerSlice;
7
+ readonly account: AccountSlice;
8
+ readonly initialActive?: string | null;
9
+ }
10
+ export declare function accountTabItems(account: AccountSlice): readonly CardTabItem[];
11
+ export declare function AccountTabAudition(props: AccountTabAuditionProps): React.ReactElement;
@@ -0,0 +1,110 @@
1
+ import * as React from "react";
2
+ import { ACCOUNT_CARD_CSS, ACCOUNT_COPY, ChooseHandleDrill, HandlesDrill } from "../cards/AccountCard.js";
3
+ import { JOIN_OR_SIGN_IN } from "../copy.js";
4
+ import { ActionPill } from "../parts/ActionPill.js";
5
+ import { CARD_TAB_ROW_CSS, CardTabRow, MainAction, Stretch, toggleDrill } from "./CardTabRow.js";
6
+ export const ACCOUNT_TAB_CSS = `
7
+ [data-vibe-menu] .vm-xtab .vm-who .vm-textbtn {
8
+ width: auto; height: auto; margin: 0 0 0 auto; padding: var(--space-4) 0;
9
+ }
10
+ `;
11
+ function initialOf(name) {
12
+ return name.slice(0, 1).toUpperCase();
13
+ }
14
+ export function accountTabItems(account) {
15
+ const items = [];
16
+ if (account.needsHandle === false && account.activeHandle !== null) {
17
+ items.push({ key: "handles", label: ACCOUNT_COPY.handles, glyph: "at-sign", kind: "drill" });
18
+ }
19
+ else {
20
+ const action = account.creditsAction;
21
+ items.push({
22
+ key: "credits",
23
+ label: "Credits",
24
+ glyph: "plus",
25
+ kind: "link",
26
+ href: action.href,
27
+ onClick: () => action.onClick?.(),
28
+ });
29
+ }
30
+ items.push({ key: "memberships", label: ACCOUNT_COPY.memberships, glyph: "star", kind: "link", href: account.membershipsHref });
31
+ items.push({ key: "settings", label: ACCOUNT_COPY.settings, glyph: "sliders", kind: "link", href: account.settingsHref });
32
+ return items;
33
+ }
34
+ function Credits(props) {
35
+ const { remaining, included } = props.account.credits;
36
+ if (remaining === null)
37
+ return null;
38
+ const caption = included === null
39
+ ? [ACCOUNT_COPY.creditsLeft, ACCOUNT_COPY.thisMonth]
40
+ : [`/ ${included.toLocaleString("en-US")}`, ACCOUNT_COPY.creditsLeft, ACCOUNT_COPY.thisMonth];
41
+ const pct = included === null || included <= 0 ? null : Math.max(0, Math.min(100, (remaining / included) * 100));
42
+ return (React.createElement(React.Fragment, null,
43
+ React.createElement("div", { className: "vm-hero" },
44
+ React.createElement("span", { className: "vm-big" }, remaining.toLocaleString("en-US")),
45
+ React.createElement("span", { className: "vm-caption" }, caption.map((line, i) => (React.createElement(React.Fragment, { key: line },
46
+ i > 0 ? React.createElement("br", null) : null,
47
+ line))))),
48
+ pct === null || included === null ? null : (React.createElement("div", { className: "vm-meter", role: "img", "aria-label": `${remaining.toLocaleString("en-US")} of ${included.toLocaleString("en-US")} credits left` },
49
+ React.createElement("span", { style: { width: `${pct}%` } })))));
50
+ }
51
+ export function AccountTabAudition(props) {
52
+ const { viewer, account } = props;
53
+ const [active, setActive] = React.useState(props.initialActive ?? null);
54
+ const pending = viewer.identityPending === true;
55
+ const signedIn = viewer.role !== "signedOut";
56
+ const css = React.createElement("style", null, ACCOUNT_CARD_CSS + CARD_TAB_ROW_CSS + ACCOUNT_TAB_CSS);
57
+ const resolving = pending || (signedIn && account.needsHandle === false && account.activeHandle === null);
58
+ if (resolving) {
59
+ return (React.createElement("div", { className: "vm-account vm-ctab vm-xtab", "data-card": "settings" },
60
+ css,
61
+ React.createElement("div", { className: "vm-who", "aria-busy": "true" },
62
+ React.createElement("span", { className: "vm-busy", "aria-hidden": "true" }),
63
+ React.createElement("span", { className: "vm-no-handle" }, ACCOUNT_COPY.loading))));
64
+ }
65
+ if (signedIn === false) {
66
+ return (React.createElement("div", { className: "vm-account vm-ctab vm-xtab", "data-card": "settings" },
67
+ css,
68
+ account.savePrompt !== null && account.savePrompt !== "" ? React.createElement("p", { className: "vm-kicker" }, account.savePrompt) : null,
69
+ React.createElement(ActionPill, { label: JOIN_OR_SIGN_IN, onClick: account.onSignIn }),
70
+ React.createElement("p", { className: "vm-sub" }, ACCOUNT_COPY.signedOutSub)));
71
+ }
72
+ const nav = {
73
+ view: active === null ? null : { drill: active === "choose" ? "choose" : "handles" },
74
+ banner: null,
75
+ onDrill: (view) => setActive(view.drill),
76
+ onLeaveDrill: () => setActive(null),
77
+ };
78
+ const row = (React.createElement(CardTabRow, { label: ACCOUNT_COPY.settings, items: accountTabItems(account), active: active, onDrill: (key) => setActive((open) => toggleDrill(open, key)) }));
79
+ if (active === "handles" || active === "choose") {
80
+ return (React.createElement("div", { className: "vm-account vm-ctab vm-xtab", "data-card": "settings" },
81
+ css,
82
+ active === "handles" ? (React.createElement(HandlesDrill, { viewer: viewer, account: account, nav: nav })) : (React.createElement(ChooseHandleDrill, { viewer: viewer, account: account, nav: nav })),
83
+ row));
84
+ }
85
+ const logOut = account.onLogout !== null ? (React.createElement("button", { className: "vm-textbtn", type: "button", "data-item": "logOut", onClick: account.onLogout }, ACCOUNT_COPY.logOut)) : null;
86
+ const handle = account.activeHandle ?? "";
87
+ return (React.createElement("div", { className: "vm-account vm-ctab vm-xtab", "data-card": "settings" },
88
+ css,
89
+ account.needsHandle === true ? (React.createElement(React.Fragment, null,
90
+ React.createElement(Stretch, null,
91
+ React.createElement("div", { className: "vm-who" },
92
+ React.createElement("span", { className: "vm-avatar", "aria-hidden": "true" }, initialOf(account.handleIdeas.fromName[0] ?? "")),
93
+ React.createElement("span", { className: "vm-no-handle" }, ACCOUNT_COPY.noHandle),
94
+ logOut),
95
+ React.createElement(Credits, { account: account })),
96
+ React.createElement(MainAction, null,
97
+ React.createElement(ActionPill, { label: ACCOUNT_COPY.chooseHandle, solo: true, onClick: () => setActive("choose") })))) : (React.createElement(React.Fragment, null,
98
+ React.createElement(Stretch, null,
99
+ React.createElement("div", { className: "vm-who" },
100
+ React.createElement("span", { className: "vm-avatar", "aria-hidden": "true" }, initialOf(handle)),
101
+ React.createElement("span", { className: "vm-handle" },
102
+ "@",
103
+ handle),
104
+ logOut),
105
+ React.createElement(Credits, { account: account })),
106
+ React.createElement(MainAction, null,
107
+ React.createElement(ActionPill, { label: account.creditsAction.label, href: account.creditsAction.href, onClick: account.creditsAction.onClick, solo: true })))),
108
+ row));
109
+ }
110
+ //# sourceMappingURL=AccountTabAudition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccountTabAudition.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/sketches/AccountTabAudition.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import * as React from "react";
2
+ import { type GlyphName } from "../parts/Glyph.js";
3
+ export type CardTabKind = "drill" | "link" | "action";
4
+ export interface CardTabItem {
5
+ readonly key: string;
6
+ readonly label: string;
7
+ readonly glyph: GlyphName;
8
+ readonly kind: CardTabKind;
9
+ readonly href?: string;
10
+ readonly onClick?: (event: React.MouseEvent<HTMLElement>) => void;
11
+ }
12
+ export declare const CARD_TAB_ROW_CSS = "\n[data-vibe-menu] .vm-ctab { display: flex; flex-direction: column; }\n[data-vibe-menu] .vm-ctab .vm-composer { margin-bottom: 0; }\n[data-vibe-menu] .vm-ctab .vm-drill + .vm-done { margin-top: var(--space-14); }\n/* The opened chat ends with the suggestions: the clip holds the log's own\n 160px cap plus them, and the log alone scrolls. */\n[data-vibe-menu] .vm-ctab .vm-log-clip[data-open=\"true\"] { max-height: none; }\n[data-vibe-menu] .vm-ctab .vm-log-clip .vm-suggestions { margin: var(--space-12) 0 0; }\n[data-vibe-menu] .vm-cnav {\n display: flex; flex: none; height: var(--size-bar);\n margin: var(--space-14) calc(-1 * var(--space-16)) calc(-1 * var(--space-16));\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-cnav button {\n position: relative; flex: 1 1 auto; min-width: 0;\n display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-4);\n padding: var(--space-4) var(--space-2);\n color: var(--ink);\n}\n[data-vibe-menu] .vm-cnav button + button { border-left: var(--stroke-hairline) solid var(--line-hairline); }\n[data-vibe-menu] .vm-cnav button:focus-visible { outline: var(--stroke-focus) solid var(--line-card); outline-offset: -3px; }\n[data-vibe-menu] .vm-cnav button[aria-pressed=\"true\"] { background: var(--accent); color: var(--on-accent); }\n[data-vibe-menu] .vm-cnav-circle {\n display: flex; align-items: center; justify-content: center; flex: none;\n width: var(--size-icon-circle-phone); height: var(--size-icon-circle-phone);\n border-radius: 50%; background: var(--ink);\n}\n[data-vibe-menu] .vm-cnav-circle svg {\n width: 12px; height: 12px; fill: none; stroke: var(--card-bg); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round;\n}\n[data-vibe-menu] .vm-cnav button[aria-pressed=\"true\"] .vm-cnav-circle { background: var(--menu-ink); }\n[data-vibe-menu] .vm-cnav button[aria-pressed=\"true\"] .vm-cnav-circle svg { stroke: var(--vibes-cream); }\n[data-vibe-menu] .vm-cnav-label {\n max-width: 100%; overflow: hidden; text-overflow: ellipsis;\n font: 700 9.6px/1 var(--font-tab); letter-spacing: 0.5px; text-transform: uppercase; white-space: nowrap;\n}\n\n[data-vibe-menu] .vm-cnav > a {\n position: relative; flex: 1 1 auto; min-width: 0;\n display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-4);\n padding: var(--space-4) var(--space-2);\n color: var(--ink); text-decoration: none;\n}\n[data-vibe-menu] .vm-cnav > * + a,\n[data-vibe-menu] .vm-cnav > a + button { border-left: var(--stroke-hairline) solid var(--line-hairline); }\n[data-vibe-menu] .vm-cnav > a:focus-visible { outline: var(--stroke-focus) solid var(--line-card); outline-offset: -3px; }\n[data-vibe-menu] .vm-xtab .vm-back { display: none; }\n[data-vibe-menu] .vm-xtab .vm-drill > .vm-subhead:first-child { margin-top: 0; }\n/* A drill taller than the card (Handles, Share settings) scrolls the card; the\n row sticks on the band so it stays in view, pressed. Code's row never needed\n this: its drills are short. In flow (no overflow) this changes nothing. */\n[data-vibe-menu] .vm-xtab .vm-cnav { position: sticky; bottom: var(--vm-band, 0px); z-index: 1; background: var(--card-bg); }\n[data-vibe-menu] .vm-xtab .vm-drill + .vm-done { margin-top: var(--space-14); }\n/* The hierarchy (owner 2026-10-13), bottom up: the strip, this row, the card's\n ONE main action, then the stretch. The two zones are layout-free wrappers, so\n each card keeps its own spacing; the main action sits on the row's own top\n margin, as Code's composer does. */\n[data-vibe-menu] .vm-xtab .vm-stretch,\n[data-vibe-menu] .vm-xtab .vm-main { display: contents; }\n[data-vibe-menu] .vm-xtab .vm-main > :last-child { margin-bottom: 0; }\n[data-vibe-menu] .vm-xtab .vm-stretch > .vm-subhead:first-child { margin-top: 0; }\n[data-vibe-menu] .vm-xtab .vm-stretch > .vm-group.is-flush { border-bottom: var(--stroke-hairline) solid var(--line-hairline); }\n[data-vibe-menu] .vm-xtab .vm-stretch > .vm-group:last-child { margin-bottom: var(--space-14); }\n[data-vibe-menu] .vm-xtab .vm-stretch > .vm-group + * { margin-top: var(--space-14); }\n";
13
+ export interface CardTabRowProps {
14
+ readonly label: string;
15
+ readonly items: readonly CardTabItem[];
16
+ readonly active: string | null;
17
+ readonly onDrill: (key: string) => void;
18
+ }
19
+ export declare function CardTabRow(props: CardTabRowProps): React.ReactElement;
20
+ export declare function MainAction(props: {
21
+ readonly children: React.ReactNode;
22
+ }): React.ReactElement;
23
+ export declare function Stretch(props: {
24
+ readonly children: React.ReactNode;
25
+ }): React.ReactElement | null;
26
+ export declare function toggleDrill(open: string | null, key: string): string | null;
27
+ export declare function isPlainLeftClick(event: React.MouseEvent<HTMLElement>): boolean;
@@ -0,0 +1,70 @@
1
+ import * as React from "react";
2
+ import { CODE_TAB_ROW_CSS } from "../cards/CodeTabRow.js";
3
+ import { Glyph } from "../parts/Glyph.js";
4
+ export const CARD_TAB_ROW_CSS = `${CODE_TAB_ROW_CSS}
5
+ [data-vibe-menu] .vm-cnav > a {
6
+ position: relative; flex: 1 1 auto; min-width: 0;
7
+ display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-4);
8
+ padding: var(--space-4) var(--space-2);
9
+ color: var(--ink); text-decoration: none;
10
+ }
11
+ [data-vibe-menu] .vm-cnav > * + a,
12
+ [data-vibe-menu] .vm-cnav > a + button { border-left: var(--stroke-hairline) solid var(--line-hairline); }
13
+ [data-vibe-menu] .vm-cnav > a:focus-visible { outline: var(--stroke-focus) solid var(--line-card); outline-offset: -3px; }
14
+ [data-vibe-menu] .vm-xtab .vm-back { display: none; }
15
+ [data-vibe-menu] .vm-xtab .vm-drill > .vm-subhead:first-child { margin-top: 0; }
16
+ /* A drill taller than the card (Handles, Share settings) scrolls the card; the
17
+ row sticks on the band so it stays in view, pressed. Code's row never needed
18
+ this: its drills are short. In flow (no overflow) this changes nothing. */
19
+ [data-vibe-menu] .vm-xtab .vm-cnav { position: sticky; bottom: var(--vm-band, 0px); z-index: 1; background: var(--card-bg); }
20
+ [data-vibe-menu] .vm-xtab .vm-drill + .vm-done { margin-top: var(--space-14); }
21
+ /* The hierarchy (owner 2026-10-13), bottom up: the strip, this row, the card's
22
+ ONE main action, then the stretch. The two zones are layout-free wrappers, so
23
+ each card keeps its own spacing; the main action sits on the row's own top
24
+ margin, as Code's composer does. */
25
+ [data-vibe-menu] .vm-xtab .vm-stretch,
26
+ [data-vibe-menu] .vm-xtab .vm-main { display: contents; }
27
+ [data-vibe-menu] .vm-xtab .vm-main > :last-child { margin-bottom: 0; }
28
+ [data-vibe-menu] .vm-xtab .vm-stretch > .vm-subhead:first-child { margin-top: 0; }
29
+ [data-vibe-menu] .vm-xtab .vm-stretch > .vm-group.is-flush { border-bottom: var(--stroke-hairline) solid var(--line-hairline); }
30
+ [data-vibe-menu] .vm-xtab .vm-stretch > .vm-group:last-child { margin-bottom: var(--space-14); }
31
+ [data-vibe-menu] .vm-xtab .vm-stretch > .vm-group + * { margin-top: var(--space-14); }
32
+ `;
33
+ function ItemFace(props) {
34
+ return (React.createElement(React.Fragment, null,
35
+ React.createElement("span", { className: "vm-cnav-circle", "aria-hidden": "true" },
36
+ React.createElement(Glyph, { name: props.item.glyph, className: "" })),
37
+ React.createElement("span", { className: "vm-cnav-label" }, props.item.label)));
38
+ }
39
+ export function CardTabRow(props) {
40
+ return (React.createElement("nav", { className: "vm-cnav", "aria-label": props.label }, props.items.map((item) => {
41
+ if (item.kind === "link") {
42
+ return (React.createElement("a", { key: item.key, href: item.href, "data-item": item.key, "data-kind": "link", onClick: item.onClick },
43
+ React.createElement(ItemFace, { item: item })));
44
+ }
45
+ if (item.kind === "action") {
46
+ return (React.createElement("button", { key: item.key, type: "button", "data-item": item.key, "data-kind": "action", onClick: item.onClick },
47
+ React.createElement(ItemFace, { item: item })));
48
+ }
49
+ return (React.createElement("button", { key: item.key, type: "button", "data-item": item.key, "aria-pressed": props.active === item.key, onClick: () => props.onDrill(item.key) },
50
+ React.createElement(ItemFace, { item: item })));
51
+ })));
52
+ }
53
+ export function MainAction(props) {
54
+ return (React.createElement("div", { className: "vm-main", "data-zone": "main" }, props.children));
55
+ }
56
+ export function Stretch(props) {
57
+ const kids = React.Children.toArray(props.children);
58
+ if (kids.length === 0)
59
+ return null;
60
+ return (React.createElement("div", { className: "vm-stretch", "data-zone": "stretch" }, kids));
61
+ }
62
+ export function toggleDrill(open, key) {
63
+ return open === key ? null : key;
64
+ }
65
+ export function isPlainLeftClick(event) {
66
+ if (event.button !== 0)
67
+ return false;
68
+ return event.metaKey === false && event.ctrlKey === false && event.shiftKey === false && event.altKey === false;
69
+ }
70
+ //# sourceMappingURL=CardTabRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardTabRow.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/sketches/CardTabRow.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import * as React from "react";
2
+ import type { VibeMenuProps, ViewerSlice } from "../slices.js";
3
+ import { type CardTabItem } from "./CardTabRow.js";
4
+ export type HomeTabVariant = "picks" | "pill";
5
+ export declare const HOME_TAB_LABELS: Readonly<{
6
+ picks: "Recommended";
7
+ recent: "Recent";
8
+ site: "vibes.diy";
9
+ myVibes: "My Vibes";
10
+ getApp: "Get the app";
11
+ }>;
12
+ export interface HomeTabAuditionProps {
13
+ readonly variant: HomeTabVariant;
14
+ readonly viewer: ViewerSlice;
15
+ readonly homeHref: string;
16
+ onHome(): void;
17
+ readonly myVibesHref: string;
18
+ readonly newAppHref: string;
19
+ readonly recommended: VibeMenuProps["recommended"];
20
+ readonly recommendedHeading?: VibeMenuProps["recommendedHeading"];
21
+ readonly onMakeYourOwn?: () => void;
22
+ readonly onGetFullApp?: () => void;
23
+ readonly initialActive?: string | null;
24
+ }
25
+ export declare function homeTabItems(props: HomeTabAuditionProps): readonly CardTabItem[];
26
+ export declare function HomeTabAudition(props: HomeTabAuditionProps): React.ReactElement;
@@ -0,0 +1,87 @@
1
+ import * as React from "react";
2
+ import { HOME_CARD_CSS, HOME_COPY } from "../cards/HomeCard.js";
3
+ import { ActionPill } from "../parts/ActionPill.js";
4
+ import { DoneButton } from "../parts/DoneButton.js";
5
+ import { Row } from "../parts/Row.js";
6
+ import { CARD_TAB_ROW_CSS, CardTabRow, MainAction, Stretch, isPlainLeftClick, toggleDrill, } from "./CardTabRow.js";
7
+ export const HOME_TAB_LABELS = Object.freeze({
8
+ picks: HOME_COPY.recommended,
9
+ recent: HOME_COPY.recent,
10
+ site: "vibes.diy",
11
+ myVibes: HOME_COPY.myVibes,
12
+ getApp: "Get the app",
13
+ });
14
+ const APP_COLORS = [
15
+ "var(--section-home)",
16
+ "var(--section-account)",
17
+ "var(--section-code)",
18
+ "var(--section-share)",
19
+ ];
20
+ export function homeTabItems(props) {
21
+ const pending = props.viewer.identityPending === true;
22
+ const signedIn = props.viewer.role !== "signedOut" && pending === false;
23
+ const items = [];
24
+ if (props.variant === "pill" && props.recommended.length > 0) {
25
+ const label = props.recommendedHeading === "recent" ? HOME_TAB_LABELS.recent : HOME_TAB_LABELS.picks;
26
+ items.push({ key: "picks", label, glyph: "star", kind: "drill" });
27
+ }
28
+ items.push({
29
+ key: "site",
30
+ label: HOME_TAB_LABELS.site,
31
+ glyph: "home",
32
+ kind: "link",
33
+ href: props.homeHref,
34
+ onClick: (event) => {
35
+ if (isPlainLeftClick(event) === false)
36
+ return;
37
+ event.preventDefault();
38
+ props.onHome();
39
+ },
40
+ });
41
+ if (signedIn)
42
+ items.push({ key: "myVibes", label: HOME_TAB_LABELS.myVibes, glyph: "layout-grid", kind: "link", href: props.myVibesHref });
43
+ if (props.onGetFullApp !== undefined) {
44
+ const onGetFullApp = props.onGetFullApp;
45
+ items.push({ key: "getApp", label: HOME_TAB_LABELS.getApp, glyph: "app", kind: "action", onClick: () => onGetFullApp() });
46
+ }
47
+ return items;
48
+ }
49
+ function Picks(props) {
50
+ return (React.createElement("div", { className: "vm-group is-flush" }, props.recommended.slice(0, 3).map((rec, i) => (React.createElement(Row, { key: rec.href, lead: { letter: rec.title.slice(0, 1).toUpperCase(), kind: "app", color: APP_COLORS[i % APP_COLORS.length] }, label: rec.title, plain: true, href: rec.href })))));
51
+ }
52
+ function HomeAsk(props) {
53
+ const pending = props.viewer.identityPending === true;
54
+ if (pending)
55
+ return null;
56
+ if (props.viewer.role === "owner")
57
+ return React.createElement(ActionPill, { label: HOME_COPY.newApp, href: props.newAppHref, solo: true });
58
+ return (React.createElement(ActionPill, { label: HOME_COPY.makeYourOwn, href: props.onMakeYourOwn === undefined ? props.newAppHref : undefined, onClick: props.onMakeYourOwn, caption: HOME_COPY.makeSub }));
59
+ }
60
+ function madeOnLine(viewer) {
61
+ if (viewer.identityPending === true || viewer.role === "owner")
62
+ return null;
63
+ return (React.createElement("p", { className: "vm-kicker" },
64
+ React.createElement("span", { className: "vm-app-name" }, viewer.appTitle),
65
+ " ",
66
+ HOME_COPY.madeOn));
67
+ }
68
+ export function HomeTabAudition(props) {
69
+ const [active, setActive] = React.useState(props.initialActive ?? null);
70
+ const heading = props.recommendedHeading === "recent" ? HOME_COPY.recent : HOME_COPY.recommended;
71
+ const row = (React.createElement(CardTabRow, { label: "Home", items: homeTabItems(props), active: active, onDrill: (key) => setActive((open) => toggleDrill(open, key)) }));
72
+ return (React.createElement("div", { className: "vm-home vm-ctab vm-xtab", "data-card": "home", "data-variant": props.variant },
73
+ React.createElement("style", null, HOME_CARD_CSS + CARD_TAB_ROW_CSS),
74
+ active === "picks" ? (React.createElement(React.Fragment, null,
75
+ React.createElement("div", { className: "vm-drill", "data-drill": "picks" },
76
+ React.createElement("h3", { className: "vm-subhead" }, heading),
77
+ React.createElement(Picks, { recommended: props.recommended })),
78
+ React.createElement(DoneButton, { onDone: () => setActive(null) }))) : (React.createElement(React.Fragment, null,
79
+ React.createElement(Stretch, null,
80
+ props.variant === "picks" && props.recommended.length > 0 ? React.createElement("h3", { className: "vm-subhead" }, heading) : null,
81
+ props.variant === "picks" && props.recommended.length > 0 ? React.createElement(Picks, { recommended: props.recommended }) : null,
82
+ madeOnLine(props.viewer)),
83
+ React.createElement(MainAction, null,
84
+ React.createElement(HomeAsk, { ...props })))),
85
+ row));
86
+ }
87
+ //# sourceMappingURL=HomeTabAudition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HomeTabAudition.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/sketches/HomeTabAudition.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import * as React from "react";
2
+ import type { ShareSlice, ViewerSlice } from "../slices.js";
3
+ import { type CardTabItem } from "./CardTabRow.js";
4
+ export type ShareTabVariant = "code" | "link";
5
+ export declare const SHARE_TAB_CSS = "\n[data-vibe-menu] .vm-xtab .vm-share-link {\n margin: 0; font: 400 15px/1.35 var(--font-display); color: var(--ink); overflow-wrap: anywhere;\n}\n[data-vibe-menu] .vm-xtab .vm-share-hero[data-variant=\"link\"] { align-items: stretch; padding-top: 0; }\n[data-vibe-menu] .vm-xtab .vm-share-hero[data-variant=\"link\"] .vm-share-actions { justify-content: flex-start; }\n[data-vibe-menu] .vm-xtab[data-variant=\"code\"] .vm-main > .vm-share-actions { justify-content: center; }\n[data-vibe-menu] .vm-xtab .vm-share-hero[data-variant=\"link\"] > .vm-chip { align-self: flex-start; }\n[data-vibe-menu] .vm-xtab .vm-drill[data-drill=\"qr\"] { display: flex; flex-direction: column; align-items: center; gap: var(--space-12); }\n";
6
+ export interface ShareTabAuditionProps {
7
+ readonly variant: ShareTabVariant;
8
+ readonly viewer: ViewerSlice;
9
+ readonly share: ShareSlice | null;
10
+ readonly onSignIn: () => void;
11
+ readonly initialActive?: string | null;
12
+ }
13
+ export declare function shareTabItems(variant: ShareTabVariant, viewer: ViewerSlice, share: ShareSlice): readonly CardTabItem[];
14
+ export declare function ShareTabAudition(props: ShareTabAuditionProps): React.ReactElement;
@@ -0,0 +1,155 @@
1
+ import * as React from "react";
2
+ import { useContext, useState } from "react";
3
+ import { exception2Result } from "@adviser/cement";
4
+ import { QrCode } from "../../QrCode.js";
5
+ import { JOIN_OR_SIGN_IN, SHARE_DEV_DRAFT_LINE, SHARE_HANDLE_ASK } from "../copy.js";
6
+ import { ActionPill } from "../parts/ActionPill.js";
7
+ import { Chip } from "../parts/Chip.js";
8
+ import { DoneButton } from "../parts/DoneButton.js";
9
+ import { useShareActions } from "../cards/share-actions.js";
10
+ import { SHARE_CARD_CSS } from "../cards/share-card.styles.js";
11
+ import { CopyChip, CopyLinkChip, shareCopied } from "../cards/share-copy.js";
12
+ import { PUBLISH_COPY } from "../cards/share-parts.js";
13
+ import { ShareSheetContext } from "../cards/ShareAppDrill.js";
14
+ import { SHARE_SETTINGS_LABEL, ShareDrill } from "../cards/ShareDrills.js";
15
+ import { CARD_TAB_ROW_CSS, CardTabRow, MainAction, Stretch, toggleDrill } from "./CardTabRow.js";
16
+ export const SHARE_TAB_CSS = `
17
+ [data-vibe-menu] .vm-xtab .vm-share-link {
18
+ margin: 0; font: 400 15px/1.35 var(--font-display); color: var(--ink); overflow-wrap: anywhere;
19
+ }
20
+ [data-vibe-menu] .vm-xtab .vm-share-hero[data-variant="link"] { align-items: stretch; padding-top: 0; }
21
+ [data-vibe-menu] .vm-xtab .vm-share-hero[data-variant="link"] .vm-share-actions { justify-content: flex-start; }
22
+ [data-vibe-menu] .vm-xtab[data-variant="code"] .vm-main > .vm-share-actions { justify-content: center; }
23
+ [data-vibe-menu] .vm-xtab .vm-share-hero[data-variant="link"] > .vm-chip { align-self: flex-start; }
24
+ [data-vibe-menu] .vm-xtab .vm-drill[data-drill="qr"] { display: flex; flex-direction: column; align-items: center; gap: var(--space-12); }
25
+ `;
26
+ export function shareTabItems(variant, viewer, share) {
27
+ const items = [];
28
+ if (variant === "link")
29
+ items.push({ key: "qr", label: "QR code", glyph: "qr-code", kind: "drill" });
30
+ if (share.app !== null)
31
+ items.push({ key: "app", label: "Share as app", glyph: "app", kind: "drill" });
32
+ if (viewer.role !== "signedOut" && share.notificationsSlot !== null) {
33
+ items.push({ key: "notifications", label: "Notifications", glyph: "bell", kind: "drill" });
34
+ }
35
+ items.push({ key: "shareSettings", label: SHARE_SETTINGS_LABEL, glyph: "settings", kind: "drill" });
36
+ return items;
37
+ }
38
+ function useSendLink(viewer, share) {
39
+ const sheet = useContext(ShareSheetContext);
40
+ const send = sheet.share;
41
+ if (send === undefined)
42
+ return null;
43
+ return () => {
44
+ void exception2Result(() => send({ url: share.link.url, title: viewer.appTitle })).then((res) => {
45
+ if (res.isOk())
46
+ share.onShareEvent?.({ kind: "sent", surface: "link" });
47
+ });
48
+ };
49
+ }
50
+ function HandleAskLine(props) {
51
+ return (React.createElement("p", { className: "vm-handle-ask", "data-share-handle-ask": "" },
52
+ SHARE_HANDLE_ASK.sharedAs,
53
+ " ",
54
+ React.createElement("span", { className: "vm-handle-ask-name ph-no-capture" },
55
+ "@",
56
+ props.ask.handle),
57
+ React.createElement("span", { "aria-hidden": "true" }, " \u00B7 "),
58
+ React.createElement("button", { className: "vm-handle-ask-link", type: "button", onClick: props.ask.onChoose },
59
+ SHARE_HANDLE_ASK.choose,
60
+ " ",
61
+ React.createElement("span", { "aria-hidden": "true" }, "\u203A"))));
62
+ }
63
+ function EmbedReveal(props) {
64
+ const embed = props.share.embed;
65
+ if (embed === null)
66
+ return null;
67
+ return (React.createElement("div", { className: "vm-reveal", "data-reveal": "embed" },
68
+ React.createElement("textarea", { className: "vm-embed", readOnly: true, value: embed.snippet, "aria-label": "Embed code", onFocus: (e) => e.currentTarget.select() }),
69
+ React.createElement(CopyChip, { text: embed.snippet, label: "Copy embed code", ariaLabel: "Copy embed code", onCopied: shareCopied(props.share, "embed", props.owner) })));
70
+ }
71
+ function LinkActions(props) {
72
+ const { viewer, share, owner } = props;
73
+ const sendLink = useSendLink(viewer, share);
74
+ return (React.createElement("div", { className: "vm-share-actions", "data-share-main": "" },
75
+ React.createElement(CopyLinkChip, { url: share.link.url, display: share.link.display, onCopied: shareCopied(share, "link", owner) }),
76
+ sendLink !== null ? (React.createElement(Chip, { copy: true, glyph: "share", label: "Share\u2026", ariaLabel: `Share ${share.link.display}`, onClick: sendLink })) : null));
77
+ }
78
+ function ShareHero(props) {
79
+ const { variant, share, owner } = props;
80
+ const [embedOpen, setEmbedOpen] = useState(false);
81
+ const embed = owner ? share.embed : null;
82
+ return (React.createElement("div", { className: "vm-share-hero", "data-share-hero": true, "data-variant": variant },
83
+ variant === "code" ? (React.createElement("span", { className: "vm-qr" },
84
+ React.createElement(QrCode, { value: share.qrValue, size: 160, title: `QR code to open ${share.link.display}` }))) : (React.createElement("p", { className: "vm-share-link ph-no-capture" }, share.link.display)),
85
+ embed !== null ? (React.createElement(Chip, { copy: true, ghost: embedOpen === false, label: "Embed", ariaLabel: "Embed", ariaExpanded: embedOpen, onClick: () => setEmbedOpen((v) => v === false) })) : null,
86
+ props.actions,
87
+ owner && share.handleAsk !== undefined && share.handleAsk !== null ? React.createElement(HandleAskLine, { ask: share.handleAsk }) : null,
88
+ embed !== null && embedOpen ? React.createElement(EmbedReveal, { share: share, owner: owner }) : null));
89
+ }
90
+ function PublishAsk(props) {
91
+ const { publish } = props;
92
+ if (publish.state === "published")
93
+ return null;
94
+ const copy = PUBLISH_COPY[publish.state];
95
+ const failed = publish.error !== null;
96
+ const locked = publish.state === "locked";
97
+ return (React.createElement(ActionPill, { label: locked ? "Unlock" : failed ? "Retry" : "Publish", onClick: locked ? publish.onUnlock : publish.onPublish, caption: React.createElement(React.Fragment, null,
98
+ React.createElement("b", null, copy.lead),
99
+ " \u00B7 ",
100
+ failed ? publish.error : copy.line,
101
+ publish.state === "old" ? (React.createElement(React.Fragment, null,
102
+ " ",
103
+ React.createElement("button", { className: "vm-handle-ask-link", type: "button", onClick: publish.onViewLatest }, "View latest"))) : null) }));
104
+ }
105
+ export function ShareTabAudition(props) {
106
+ const { variant, viewer, share, onSignIn } = props;
107
+ const actions = useShareActions();
108
+ const [active, setActive] = useState(props.initialActive ?? null);
109
+ const css = React.createElement("style", null, SHARE_CARD_CSS + CARD_TAB_ROW_CSS + SHARE_TAB_CSS);
110
+ if (share === null) {
111
+ return (React.createElement("div", { className: "vm-ctab vm-xtab" },
112
+ css,
113
+ React.createElement("p", { className: "vm-share-empty", "data-share-draft": true }, SHARE_DEV_DRAFT_LINE)));
114
+ }
115
+ const owner = share.canManage === true && viewer.identityPending !== true;
116
+ const items = shareTabItems(variant, viewer, share);
117
+ const row = (React.createElement(CardTabRow, { label: "Share", items: items, active: active, onDrill: (key) => setActive((open) => toggleDrill(open, key)) }));
118
+ const close = () => setActive(null);
119
+ const unpublished = owner && share.publish !== null && share.publish.state !== "published";
120
+ const main = unpublished ? "publish" : viewer.role === "signedOut" ? "signIn" : "link";
121
+ const linkActions = React.createElement(LinkActions, { viewer: viewer, share: share, owner: owner });
122
+ let drill = null;
123
+ if (active === "qr") {
124
+ drill = (React.createElement(React.Fragment, null,
125
+ React.createElement("div", { className: "vm-drill", "data-drill": "qr" },
126
+ React.createElement("span", { className: "vm-qr" },
127
+ React.createElement(QrCode, { value: share.qrValue, size: 200, title: `QR code to open ${share.link.display}` })),
128
+ React.createElement("p", { className: "vm-share-link ph-no-capture" }, share.link.display)),
129
+ React.createElement(DoneButton, { onDone: close })));
130
+ }
131
+ else if (active === "embed") {
132
+ drill = (React.createElement(React.Fragment, null,
133
+ React.createElement("div", { className: "vm-drill", "data-drill": "embed" },
134
+ React.createElement(EmbedReveal, { share: share, owner: owner })),
135
+ React.createElement(DoneButton, { onDone: close })));
136
+ }
137
+ else if (active === "app" || active === "notifications" || active === "shareSettings") {
138
+ const nav = { view: { drill: active }, banner: null, onDrill: () => undefined, onLeaveDrill: close };
139
+ drill = (React.createElement(ShareDrill, { drill: active, viewer: viewer, share: share, memberKey: undefined, nav: nav, actions: actions, parent: "Share" }));
140
+ }
141
+ return (React.createElement("div", { className: "vm-ctab vm-xtab", "data-card": "share", "data-variant": variant },
142
+ css,
143
+ drill ?? (React.createElement(React.Fragment, null,
144
+ React.createElement(Stretch, null,
145
+ React.createElement(ShareHero, { variant: variant, share: share, owner: owner, actions: main === "link" ? null : linkActions })),
146
+ React.createElement(MainAction, null,
147
+ main === "publish" && share.publish !== null ? React.createElement(PublishAsk, { publish: share.publish }) : null,
148
+ main === "signIn" ? (React.createElement(ActionPill, { label: JOIN_OR_SIGN_IN, onClick: onSignIn, caption: React.createElement(React.Fragment, null,
149
+ "to become a member of ",
150
+ React.createElement("span", { className: "vm-app-name" }, viewer.appTitle),
151
+ ".") })) : null,
152
+ main === "link" ? linkActions : null))),
153
+ row));
154
+ }
155
+ //# sourceMappingURL=ShareTabAudition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareTabAudition.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/sketches/ShareTabAudition.tsx"],"names":[],"mappings":"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"}
@@ -91,6 +91,7 @@ export interface CodeSlice {
91
91
  };
92
92
  readonly survey?: CodeSurvey | null;
93
93
  readonly editText?: EditTextSlice | null;
94
+ readonly tabRow?: boolean;
94
95
  }
95
96
  export interface EditTextSlice {
96
97
  readonly on: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"slices.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/slices.ts"],"names":[],"mappings":"AAmTA,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":"AAuTA,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.101",
3
+ "version": "14.3.103",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -10,10 +10,10 @@
10
10
  "dependencies": {
11
11
  "@adviser/cement": "~0.5.34",
12
12
  "@emotion/css": "~11.13.5",
13
- "@vibes.diy/api-types": "14.3.101",
14
- "@vibes.diy/use-vibes-types": "14.3.101",
15
- "@vibes.diy/vibe-runtime": "14.3.101",
16
- "@vibes.diy/vibe-types": "14.3.101",
13
+ "@vibes.diy/api-types": "14.3.103",
14
+ "@vibes.diy/use-vibes-types": "14.3.103",
15
+ "@vibes.diy/vibe-runtime": "14.3.103",
16
+ "@vibes.diy/vibe-types": "14.3.103",
17
17
  "arktype": "~2.2.6",
18
18
  "officeparser": "~8.0.0",
19
19
  "qrcode-generator": "~2.0.4",