@vibes.diy/base 14.3.103 → 14.3.106

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 (49) hide show
  1. package/components/HandlePickerMenu.d.ts +1 -2
  2. package/components/HandlePickerMenu.js +1 -2
  3. package/components/HandlePickerMenu.js.map +1 -1
  4. package/components/OnboardingOverlay.d.ts +2 -13
  5. package/components/OnboardingOverlay.js +51 -33
  6. package/components/OnboardingOverlay.js.map +1 -1
  7. package/components/ViewerTagView.d.ts +1 -3
  8. package/components/ViewerTagView.js +1 -17
  9. package/components/ViewerTagView.js.map +1 -1
  10. package/components/index.d.ts +0 -1
  11. package/components/index.js +0 -1
  12. package/components/index.js.map +1 -1
  13. package/components/vibe-menu/VibeMenu.js +18 -4
  14. package/components/vibe-menu/VibeMenu.js.map +1 -1
  15. package/components/vibe-menu/cards/AccountCard.d.ts +1 -9
  16. package/components/vibe-menu/cards/AccountCard.js +5 -60
  17. package/components/vibe-menu/cards/AccountCard.js.map +1 -1
  18. package/components/vibe-menu/cards/CodeCard.js +73 -19
  19. package/components/vibe-menu/cards/CodeCard.js.map +1 -1
  20. package/components/vibe-menu/cards/CodeModeWorkspace.d.ts +1 -0
  21. package/components/vibe-menu/cards/CodeModeWorkspace.js +2 -1
  22. package/components/vibe-menu/cards/CodeModeWorkspace.js.map +1 -1
  23. package/components/vibe-menu/cards/CodeTabRow.d.ts +29 -3
  24. package/components/vibe-menu/cards/CodeTabRow.js +73 -12
  25. package/components/vibe-menu/cards/CodeTabRow.js.map +1 -1
  26. package/components/vibe-menu/fixtures.js +0 -2
  27. package/components/vibe-menu/fixtures.js.map +1 -1
  28. package/components/vibe-menu/index.d.ts +1 -0
  29. package/components/vibe-menu/index.js +1 -0
  30. package/components/vibe-menu/index.js.map +1 -1
  31. package/components/vibe-menu/menu-state.d.ts +1 -1
  32. package/components/vibe-menu/open-resolver.d.ts +0 -2
  33. package/components/vibe-menu/open-resolver.js +0 -2
  34. package/components/vibe-menu/open-resolver.js.map +1 -1
  35. package/components/vibe-menu/parts/ScrollTabRow.d.ts +29 -0
  36. package/components/vibe-menu/parts/ScrollTabRow.js +172 -0
  37. package/components/vibe-menu/parts/ScrollTabRow.js.map +1 -0
  38. package/components/vibe-menu/sketches/AccountTabAudition.js +16 -36
  39. package/components/vibe-menu/sketches/AccountTabAudition.js.map +1 -1
  40. package/components/vibe-menu/sketches/CardTabRow.d.ts +1 -1
  41. package/components/vibe-menu/sketches/CodeTierAudition.d.ts +42 -0
  42. package/components/vibe-menu/sketches/CodeTierAudition.js +141 -0
  43. package/components/vibe-menu/sketches/CodeTierAudition.js.map +1 -0
  44. package/components/vibe-menu/slices.d.ts +0 -2
  45. package/components/vibe-menu/slices.js.map +1 -1
  46. package/package.json +5 -5
  47. package/components/HandleChooser.d.ts +0 -44
  48. package/components/HandleChooser.js +0 -112
  49. package/components/HandleChooser.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"open-resolver.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/open-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"open-resolver.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/open-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import * as React from "react";
2
+ import { type GlyphName } from "./Glyph.js";
3
+ export interface ScrollTabItem {
4
+ readonly key: string;
5
+ readonly label: string;
6
+ readonly glyph?: GlyphName;
7
+ readonly kind?: "tab" | "toggle";
8
+ readonly pressed?: boolean;
9
+ readonly disabled?: boolean;
10
+ }
11
+ export interface ScrollTabRowProps {
12
+ readonly label: string;
13
+ readonly items: readonly ScrollTabItem[];
14
+ readonly active: string | null;
15
+ readonly onPick: (key: string) => void;
16
+ readonly panelId?: string;
17
+ }
18
+ export declare const SCROLL_TAB_ROW_CSS = "\n[data-vibe-menu] .vm-srow {\n position: relative; flex: none;\n margin: var(--space-14) calc(-1 * var(--space-16)) 0;\n border-top: var(--stroke-hairline) solid var(--line-hairline);\n}\n[data-vibe-menu] .vm-srow-track {\n display: flex; overflow-x: auto; scrollbar-width: none; overscroll-behavior-x: contain;\n}\n[data-vibe-menu] .vm-srow-track::-webkit-scrollbar { display: none; }\n[data-vibe-menu] .vm-srow-tabs { display: flex; flex: none; }\n[data-vibe-menu] .vm-srow-item {\n position: relative; flex: none;\n display: flex; align-items: center; justify-content: center; gap: var(--space-6);\n height: 40px; padding: 0 var(--space-10);\n color: var(--ink); white-space: nowrap;\n font: 700 10px/1 var(--font-tab); letter-spacing: 0.5px; text-transform: uppercase;\n}\n/* Everything fits: the items share the band, as the row under it does. */\n[data-vibe-menu] .vm-srow[data-overflow=\"none\"] .vm-srow-tabs,\n[data-vibe-menu] .vm-srow[data-overflow=\"none\"] .vm-srow-item { flex: 1 1 auto; }\n[data-vibe-menu] .vm-srow-item:not(:first-child) { border-left: var(--stroke-hairline) solid var(--line-hairline); }\n[data-vibe-menu] .vm-srow-item .vm-glyph { width: 12px; height: 12px; flex: none; }\n[data-vibe-menu] .vm-srow-item:focus-visible { outline: var(--stroke-focus) solid var(--line-card); outline-offset: -3px; }\n[data-vibe-menu] .vm-srow-item[aria-selected=\"true\"] { background: var(--accent); color: var(--on-accent); }\n[data-vibe-menu] .vm-srow-item[aria-disabled=\"true\"] { opacity: 0.4; }\n[data-vibe-menu] .vm-srow-switch {\n position: relative; flex: none; width: 18px; height: 10px; border-radius: var(--radius-full);\n border: 1.5px solid currentColor; box-sizing: border-box;\n}\n[data-vibe-menu] .vm-srow-switch::after {\n content: \"\"; position: absolute; top: 1px; left: 1px; width: 5px; height: 5px; border-radius: 50%; background: currentColor;\n}\n[data-vibe-menu] .vm-srow-item[aria-pressed=\"true\"] > .vm-srow-switch { background: currentColor; }\n[data-vibe-menu] .vm-srow-item[aria-pressed=\"true\"] > .vm-srow-switch::after { left: auto; right: 1px; background: var(--card-bg); }\n[data-vibe-menu] .vm-srow::before,\n[data-vibe-menu] .vm-srow::after {\n content: \"\"; position: absolute; top: 0; bottom: 0; width: 48px; pointer-events: none; z-index: 1; display: none;\n}\n[data-vibe-menu] .vm-srow::before { left: 0; background: linear-gradient(to right, var(--card-bg) 55%, transparent); }\n[data-vibe-menu] .vm-srow::after { right: 0; background: linear-gradient(to left, var(--card-bg) 55%, transparent); }\n[data-vibe-menu] .vm-srow[data-more-prev]::before,\n[data-vibe-menu] .vm-srow[data-more-next]::after { display: block; }\n[data-vibe-menu] .vm-srow-hint {\n position: absolute; top: 0; bottom: 0; z-index: 2; width: 32px;\n display: flex; align-items: center; justify-content: center; color: var(--ink);\n}\n[data-vibe-menu] .vm-srow-hint[data-dir=\"next\"] { right: 0; }\n[data-vibe-menu] .vm-srow-hint[data-dir=\"prev\"] { left: 0; }\n[data-vibe-menu] .vm-srow-hint[data-dir=\"prev\"] .vm-glyph { transform: scaleX(-1); }\n[data-vibe-menu] .vm-srow-hint .vm-glyph { width: 14px; height: 14px; }\n";
19
+ interface Ends {
20
+ readonly prev: boolean;
21
+ readonly next: boolean;
22
+ }
23
+ export declare function scrollEnds(el: {
24
+ readonly scrollLeft: number;
25
+ readonly clientWidth: number;
26
+ readonly scrollWidth: number;
27
+ }): Ends;
28
+ export declare function ScrollTabRow(props: ScrollTabRowProps): React.ReactElement;
29
+ export {};
@@ -0,0 +1,172 @@
1
+ import * as React from "react";
2
+ import { Glyph } from "./Glyph.js";
3
+ import { nextRadioIndex } from "./radio-keys.js";
4
+ const CHEVRON_WIDTH = 32;
5
+ const EDGE_INSET = 48;
6
+ export const SCROLL_TAB_ROW_CSS = `
7
+ [data-vibe-menu] .vm-srow {
8
+ position: relative; flex: none;
9
+ margin: var(--space-14) calc(-1 * var(--space-16)) 0;
10
+ border-top: var(--stroke-hairline) solid var(--line-hairline);
11
+ }
12
+ [data-vibe-menu] .vm-srow-track {
13
+ display: flex; overflow-x: auto; scrollbar-width: none; overscroll-behavior-x: contain;
14
+ }
15
+ [data-vibe-menu] .vm-srow-track::-webkit-scrollbar { display: none; }
16
+ [data-vibe-menu] .vm-srow-tabs { display: flex; flex: none; }
17
+ [data-vibe-menu] .vm-srow-item {
18
+ position: relative; flex: none;
19
+ display: flex; align-items: center; justify-content: center; gap: var(--space-6);
20
+ height: 40px; padding: 0 var(--space-10);
21
+ color: var(--ink); white-space: nowrap;
22
+ font: 700 10px/1 var(--font-tab); letter-spacing: 0.5px; text-transform: uppercase;
23
+ }
24
+ /* Everything fits: the items share the band, as the row under it does. */
25
+ [data-vibe-menu] .vm-srow[data-overflow="none"] .vm-srow-tabs,
26
+ [data-vibe-menu] .vm-srow[data-overflow="none"] .vm-srow-item { flex: 1 1 auto; }
27
+ [data-vibe-menu] .vm-srow-item:not(:first-child) { border-left: var(--stroke-hairline) solid var(--line-hairline); }
28
+ [data-vibe-menu] .vm-srow-item .vm-glyph { width: 12px; height: 12px; flex: none; }
29
+ [data-vibe-menu] .vm-srow-item:focus-visible { outline: var(--stroke-focus) solid var(--line-card); outline-offset: -3px; }
30
+ [data-vibe-menu] .vm-srow-item[aria-selected="true"] { background: var(--accent); color: var(--on-accent); }
31
+ [data-vibe-menu] .vm-srow-item[aria-disabled="true"] { opacity: 0.4; }
32
+ [data-vibe-menu] .vm-srow-switch {
33
+ position: relative; flex: none; width: 18px; height: 10px; border-radius: var(--radius-full);
34
+ border: 1.5px solid currentColor; box-sizing: border-box;
35
+ }
36
+ [data-vibe-menu] .vm-srow-switch::after {
37
+ content: ""; position: absolute; top: 1px; left: 1px; width: 5px; height: 5px; border-radius: 50%; background: currentColor;
38
+ }
39
+ [data-vibe-menu] .vm-srow-item[aria-pressed="true"] > .vm-srow-switch { background: currentColor; }
40
+ [data-vibe-menu] .vm-srow-item[aria-pressed="true"] > .vm-srow-switch::after { left: auto; right: 1px; background: var(--card-bg); }
41
+ [data-vibe-menu] .vm-srow::before,
42
+ [data-vibe-menu] .vm-srow::after {
43
+ content: ""; position: absolute; top: 0; bottom: 0; width: ${EDGE_INSET}px; pointer-events: none; z-index: 1; display: none;
44
+ }
45
+ [data-vibe-menu] .vm-srow::before { left: 0; background: linear-gradient(to right, var(--card-bg) 55%, transparent); }
46
+ [data-vibe-menu] .vm-srow::after { right: 0; background: linear-gradient(to left, var(--card-bg) 55%, transparent); }
47
+ [data-vibe-menu] .vm-srow[data-more-prev]::before,
48
+ [data-vibe-menu] .vm-srow[data-more-next]::after { display: block; }
49
+ [data-vibe-menu] .vm-srow-hint {
50
+ position: absolute; top: 0; bottom: 0; z-index: 2; width: ${CHEVRON_WIDTH}px;
51
+ display: flex; align-items: center; justify-content: center; color: var(--ink);
52
+ }
53
+ [data-vibe-menu] .vm-srow-hint[data-dir="next"] { right: 0; }
54
+ [data-vibe-menu] .vm-srow-hint[data-dir="prev"] { left: 0; }
55
+ [data-vibe-menu] .vm-srow-hint[data-dir="prev"] .vm-glyph { transform: scaleX(-1); }
56
+ [data-vibe-menu] .vm-srow-hint .vm-glyph { width: 14px; height: 14px; }
57
+ `;
58
+ export function scrollEnds(el) {
59
+ return {
60
+ prev: el.scrollLeft > 1,
61
+ next: el.scrollLeft + el.clientWidth < el.scrollWidth - 1,
62
+ };
63
+ }
64
+ function revealItem(track, item) {
65
+ const trackBox = track.getBoundingClientRect();
66
+ const box = item.getBoundingClientRect();
67
+ const left = box.left - trackBox.left + track.scrollLeft;
68
+ const right = left + box.width;
69
+ if (left - EDGE_INSET < track.scrollLeft) {
70
+ track.scrollLeft = Math.max(0, left - EDGE_INSET);
71
+ }
72
+ else if (right + EDGE_INSET > track.scrollLeft + track.clientWidth) {
73
+ track.scrollLeft = right + EDGE_INSET - track.clientWidth;
74
+ }
75
+ }
76
+ function prefersReducedMotion() {
77
+ return typeof globalThis.matchMedia === "function" && globalThis.matchMedia("(prefers-reduced-motion: reduce)").matches;
78
+ }
79
+ export function ScrollTabRow(props) {
80
+ const track = React.useRef(null);
81
+ const [ends, setEnds] = React.useState({ prev: false, next: false });
82
+ const tabs = props.items.filter((item) => item.kind !== "toggle");
83
+ const toggles = props.items.filter((item) => item.kind === "toggle");
84
+ const itemKeys = props.items.map((item) => item.key).join("\u0000");
85
+ const measure = React.useCallback(() => {
86
+ const el = track.current;
87
+ if (el === null)
88
+ return;
89
+ const next = scrollEnds(el);
90
+ setEnds((was) => (was.prev === next.prev && was.next === next.next ? was : next));
91
+ }, []);
92
+ const revealedAt = React.useRef("");
93
+ const revealActive = React.useCallback(() => {
94
+ const el = track.current;
95
+ if (el === null)
96
+ return;
97
+ revealedAt.current = `${el.clientWidth}|${el.scrollWidth}`;
98
+ if (props.active === null)
99
+ return;
100
+ const item = el.querySelector(`[data-item="${CSS.escape(props.active)}"]`);
101
+ if (item !== null)
102
+ revealItem(el, item);
103
+ }, [props.active]);
104
+ React.useLayoutEffect(() => {
105
+ revealActive();
106
+ measure();
107
+ const el = track.current;
108
+ if (el === null || typeof ResizeObserver === "undefined")
109
+ return;
110
+ const observer = new ResizeObserver(() => {
111
+ if (`${el.clientWidth}|${el.scrollWidth}` !== revealedAt.current)
112
+ revealActive();
113
+ measure();
114
+ });
115
+ observer.observe(el);
116
+ for (const child of el.querySelectorAll(".vm-srow-item"))
117
+ observer.observe(child);
118
+ return () => observer.disconnect();
119
+ }, [revealActive, measure, itemKeys]);
120
+ const step = (dir) => {
121
+ const el = track.current;
122
+ if (el === null)
123
+ return;
124
+ el.scrollBy({ left: dir * Math.round(el.clientWidth * 0.7), behavior: prefersReducedMotion() ? "auto" : "smooth" });
125
+ };
126
+ const focusKey = tabs.some((tab) => tab.key === props.active) ? props.active : (tabs[0]?.key ?? null);
127
+ const onKeyDown = (event, index) => {
128
+ let target;
129
+ if (event.key === "Home")
130
+ target = 0;
131
+ else if (event.key === "End")
132
+ target = tabs.length - 1;
133
+ else
134
+ target = nextRadioIndex({ key: event.key, index, count: tabs.length });
135
+ if (target === undefined)
136
+ return;
137
+ event.preventDefault();
138
+ const key = tabs[target]?.key;
139
+ const el = track.current;
140
+ if (key === undefined || el === null)
141
+ return;
142
+ const button = el.querySelector(`[data-item="${CSS.escape(key)}"]`);
143
+ if (button === null)
144
+ return;
145
+ button.focus({ preventScroll: true });
146
+ revealItem(el, button);
147
+ };
148
+ const overflow = ends.prev || ends.next ? "scroll" : "none";
149
+ return (React.createElement("div", { className: "vm-srow", "data-overflow": overflow, "data-more-prev": ends.prev ? "" : undefined, "data-more-next": ends.next ? "" : undefined },
150
+ React.createElement("style", null, SCROLL_TAB_ROW_CSS),
151
+ React.createElement("div", { className: "vm-srow-track", ref: track, onScroll: measure },
152
+ tabs.length > 0 ? (React.createElement("div", { className: "vm-srow-tabs", role: "tablist", "aria-label": props.label }, tabs.map((tab, index) => {
153
+ const selected = tab.key === props.active && tab.disabled !== true;
154
+ return (React.createElement("button", { key: tab.key, className: "vm-srow-item", type: "button", role: "tab", "data-item": tab.key, "aria-selected": selected, "aria-disabled": tab.disabled === true ? true : undefined, "aria-controls": props.panelId, tabIndex: tab.key === focusKey ? 0 : -1, onKeyDown: (event) => onKeyDown(event, index), onClick: () => {
155
+ if (tab.disabled !== true)
156
+ props.onPick(tab.key);
157
+ } },
158
+ tab.glyph !== undefined ? React.createElement(Glyph, { name: tab.glyph }) : null,
159
+ React.createElement("span", null, tab.label)));
160
+ }))) : null,
161
+ toggles.map((toggle) => (React.createElement("button", { key: toggle.key, className: "vm-srow-item", type: "button", "data-item": toggle.key, "data-kind": "toggle", "aria-pressed": toggle.pressed === true, "aria-disabled": toggle.disabled === true ? true : undefined, onClick: () => {
162
+ if (toggle.disabled !== true)
163
+ props.onPick(toggle.key);
164
+ } },
165
+ React.createElement("span", null, toggle.label),
166
+ React.createElement("i", { className: "vm-srow-switch", "aria-hidden": "true" }))))),
167
+ ends.prev ? (React.createElement("button", { className: "vm-srow-hint", type: "button", "data-dir": "prev", tabIndex: -1, "aria-label": `Earlier ${props.label}`, onClick: () => step(-1) },
168
+ React.createElement(Glyph, { name: "chevron-right" }))) : null,
169
+ ends.next ? (React.createElement("button", { className: "vm-srow-hint", type: "button", "data-dir": "next", tabIndex: -1, "aria-label": `More ${props.label}`, onClick: () => step(1) },
170
+ React.createElement(Glyph, { name: "chevron-right" }))) : null));
171
+ }
172
+ //# sourceMappingURL=ScrollTabRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScrollTabRow.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/parts/ScrollTabRow.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { ACCOUNT_CARD_CSS, ACCOUNT_COPY, ChooseHandleDrill, HandlesDrill } from "../cards/AccountCard.js";
2
+ import { ACCOUNT_CARD_CSS, ACCOUNT_COPY, HandlesDrill } from "../cards/AccountCard.js";
3
3
  import { JOIN_OR_SIGN_IN } from "../copy.js";
4
4
  import { ActionPill } from "../parts/ActionPill.js";
5
5
  import { CARD_TAB_ROW_CSS, CardTabRow, MainAction, Stretch, toggleDrill } from "./CardTabRow.js";
@@ -13,20 +13,9 @@ function initialOf(name) {
13
13
  }
14
14
  export function accountTabItems(account) {
15
15
  const items = [];
16
- if (account.needsHandle === false && account.activeHandle !== null) {
16
+ if (account.activeHandle !== null) {
17
17
  items.push({ key: "handles", label: ACCOUNT_COPY.handles, glyph: "at-sign", kind: "drill" });
18
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
19
  items.push({ key: "memberships", label: ACCOUNT_COPY.memberships, glyph: "star", kind: "link", href: account.membershipsHref });
31
20
  items.push({ key: "settings", label: ACCOUNT_COPY.settings, glyph: "sliders", kind: "link", href: account.settingsHref });
32
21
  return items;
@@ -54,7 +43,7 @@ export function AccountTabAudition(props) {
54
43
  const pending = viewer.identityPending === true;
55
44
  const signedIn = viewer.role !== "signedOut";
56
45
  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);
46
+ const resolving = pending || (signedIn && account.activeHandle === null);
58
47
  if (resolving) {
59
48
  return (React.createElement("div", { className: "vm-account vm-ctab vm-xtab", "data-card": "settings" },
60
49
  css,
@@ -70,41 +59,32 @@ export function AccountTabAudition(props) {
70
59
  React.createElement("p", { className: "vm-sub" }, ACCOUNT_COPY.signedOutSub)));
71
60
  }
72
61
  const nav = {
73
- view: active === null ? null : { drill: active === "choose" ? "choose" : "handles" },
62
+ view: active === null ? null : { drill: "handles" },
74
63
  banner: null,
75
64
  onDrill: (view) => setActive(view.drill),
76
65
  onLeaveDrill: () => setActive(null),
77
66
  };
78
67
  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") {
68
+ if (active === "handles") {
80
69
  return (React.createElement("div", { className: "vm-account vm-ctab vm-xtab", "data-card": "settings" },
81
70
  css,
82
- active === "handles" ? (React.createElement(HandlesDrill, { viewer: viewer, account: account, nav: nav })) : (React.createElement(ChooseHandleDrill, { viewer: viewer, account: account, nav: nav })),
71
+ React.createElement(HandlesDrill, { viewer: viewer, account: account, nav: nav }),
83
72
  row));
84
73
  }
85
74
  const logOut = account.onLogout !== null ? (React.createElement("button", { className: "vm-textbtn", type: "button", "data-item": "logOut", onClick: account.onLogout }, ACCOUNT_COPY.logOut)) : null;
86
75
  const handle = account.activeHandle ?? "";
87
76
  return (React.createElement("div", { className: "vm-account vm-ctab vm-xtab", "data-card": "settings" },
88
77
  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 })))),
78
+ React.createElement(Stretch, null,
79
+ React.createElement("div", { className: "vm-who" },
80
+ React.createElement("span", { className: "vm-avatar", "aria-hidden": "true" }, initialOf(handle)),
81
+ React.createElement("span", { className: "vm-handle" },
82
+ "@",
83
+ handle),
84
+ logOut),
85
+ React.createElement(Credits, { account: account })),
86
+ React.createElement(MainAction, null,
87
+ React.createElement(ActionPill, { label: account.creditsAction.label, href: account.creditsAction.href, onClick: account.creditsAction.onClick, solo: true })),
108
88
  row));
109
89
  }
110
90
  //# sourceMappingURL=AccountTabAudition.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccountTabAudition.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/sketches/AccountTabAudition.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AccountTabAudition.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/sketches/AccountTabAudition.tsx"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export interface CardTabItem {
9
9
  readonly href?: string;
10
10
  readonly onClick?: (event: React.MouseEvent<HTMLElement>) => void;
11
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";
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/* Code mode with the row: the retained workspace sits above this card's\n content, then the composer, the scroll tier and the row, flush. */\n[data-vibe-menu] .vm-ctab[data-tier-mode]:not([data-fill]) { padding-top: var(--space-14); }\n[data-vibe-menu] .vm-ctab[data-tier-mode] .vm-tier-body {\n flex: 1 1 auto; min-height: 0; overflow: auto; overscroll-behavior: contain; margin-bottom: var(--space-14);\n}\n[data-vibe-menu] .vm-ctab .vm-srow + .vm-cnav { margin-top: 0; }\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
13
  export interface CardTabRowProps {
14
14
  readonly label: string;
15
15
  readonly items: readonly CardTabItem[];
@@ -0,0 +1,42 @@
1
+ import * as React from "react";
2
+ import { type ScrollTabItem } from "../parts/ScrollTabRow.js";
3
+ import type { CodeSlice, ViewerSlice } from "../slices.js";
4
+ export type CodeRowItem = "agentLog" | "look" | "code" | "help";
5
+ export declare function codeRowItems(gates: {
6
+ readonly owner: boolean;
7
+ readonly editor: boolean;
8
+ readonly codeModeAllowed: boolean;
9
+ }): readonly CodeRowItem[];
10
+ export type CodeTierKey = "code" | "files" | "data" | "app-settings" | "details" | "ai-requests" | "help" | "editText";
11
+ export declare function codeTierItems(gates: {
12
+ readonly owner: boolean;
13
+ readonly editText: boolean;
14
+ }): readonly CodeTierKey[];
15
+ export declare const CODE_TIER_CSS = "\n[data-vibe-menu] .vm-tier[data-tier-mode] { flex: 1 1 auto; min-height: 0; }\n[data-vibe-menu] .vm-tier .vm-tier-ws {\n flex: 1 1 auto; min-height: 0; overflow: auto; overscroll-behavior: contain;\n}\n[data-vibe-menu] .vm-tier .vm-tier-ws > .vm-drill-sec:first-child,\n[data-vibe-menu] .vm-tier .vm-tier-ws > .vm-kicker:first-child { margin-top: 0; }\n[data-vibe-menu] .vm-tier[data-tier-mode] .vm-main > * { margin-top: var(--space-14); }\n[data-vibe-menu] .vm-tier .vm-srow + .vm-cnav { margin-top: 0; }\n";
16
+ export type CodeTierOpen = CodeRowItem | null;
17
+ export interface CodeTierState {
18
+ readonly open: CodeTierOpen;
19
+ readonly tab: CodeTierKey;
20
+ readonly editTextOn: boolean;
21
+ }
22
+ export interface CodeTierActions {
23
+ pick(item: CodeRowItem): void;
24
+ toggleLog(): void;
25
+ tierTab(key: CodeTierKey): void;
26
+ close(): void;
27
+ }
28
+ export declare function useCodeTierState(initial?: Partial<CodeTierState>): [CodeTierState, CodeTierActions];
29
+ export declare function codeTierRowItems(items: readonly CodeTierKey[], editTextOn: boolean): readonly ScrollTabItem[];
30
+ export interface CodeTierCardProps {
31
+ readonly viewer: ViewerSlice;
32
+ readonly code: CodeSlice;
33
+ readonly state: CodeTierState;
34
+ readonly actions: CodeTierActions;
35
+ readonly renderWorkspace?: (tab: CodeTierKey) => React.ReactNode;
36
+ }
37
+ export declare function CodeTierCard(props: CodeTierCardProps): React.ReactElement;
38
+ export declare function codeTierShell(state: CodeTierState): {
39
+ readonly codeMode: boolean;
40
+ readonly logOpen: boolean;
41
+ readonly key: string;
42
+ };
@@ -0,0 +1,141 @@
1
+ import * as React from "react";
2
+ import { CODE_CARD_CSS } from "../cards/CodeCard.js";
3
+ import { EDIT_TEXT_LABEL } from "../copy.js";
4
+ import { currentMoment, withOpenLog } from "../moments.js";
5
+ import { Suggestions } from "../parts/Chip.js";
6
+ import { Composer } from "../parts/Composer.js";
7
+ import { DoneButton } from "../parts/DoneButton.js";
8
+ import { MomentLine } from "../parts/MomentLine.js";
9
+ import { ScrollTabRow } from "../parts/ScrollTabRow.js";
10
+ import { useComposerDraft } from "../parts/use-composer-draft.js";
11
+ import { CARD_TAB_ROW_CSS, CardTabRow, MainAction, Stretch } from "./CardTabRow.js";
12
+ const ROW_FACE = Object.freeze({
13
+ agentLog: { label: "Agent log", glyph: "line-chart" },
14
+ look: { label: "Look", glyph: "palette" },
15
+ code: { label: "Code", glyph: "braces" },
16
+ help: { label: "Help", glyph: "help-circle" },
17
+ });
18
+ export function codeRowItems(gates) {
19
+ const items = [];
20
+ if (gates.editor)
21
+ items.push("agentLog");
22
+ if (gates.owner)
23
+ items.push("look");
24
+ if (gates.codeModeAllowed)
25
+ items.push("code");
26
+ else
27
+ items.push("help");
28
+ return items;
29
+ }
30
+ const TIER_FACE = Object.freeze({
31
+ code: { label: "Code", glyph: "braces" },
32
+ files: { label: "Files", glyph: "file" },
33
+ data: { label: "Data", glyph: "database" },
34
+ "app-settings": { label: "App settings", glyph: "sliders" },
35
+ details: { label: "App details", glyph: "app" },
36
+ "ai-requests": { label: "AI requests", glyph: "at-sign" },
37
+ help: { label: "Help", glyph: "help-circle" },
38
+ editText: { label: EDIT_TEXT_LABEL, glyph: "lines" },
39
+ });
40
+ export function codeTierItems(gates) {
41
+ const items = ["code", "files", "data", "app-settings"];
42
+ if (gates.owner)
43
+ items.push("details");
44
+ items.push("ai-requests", "help");
45
+ if (gates.editText)
46
+ items.push("editText");
47
+ return items;
48
+ }
49
+ export const CODE_TIER_CSS = `
50
+ [data-vibe-menu] .vm-tier[data-tier-mode] { flex: 1 1 auto; min-height: 0; }
51
+ [data-vibe-menu] .vm-tier .vm-tier-ws {
52
+ flex: 1 1 auto; min-height: 0; overflow: auto; overscroll-behavior: contain;
53
+ }
54
+ [data-vibe-menu] .vm-tier .vm-tier-ws > .vm-drill-sec:first-child,
55
+ [data-vibe-menu] .vm-tier .vm-tier-ws > .vm-kicker:first-child { margin-top: 0; }
56
+ [data-vibe-menu] .vm-tier[data-tier-mode] .vm-main > * { margin-top: var(--space-14); }
57
+ [data-vibe-menu] .vm-tier .vm-srow + .vm-cnav { margin-top: 0; }
58
+ `;
59
+ export function useCodeTierState(initial) {
60
+ const [state, setState] = React.useState({
61
+ open: initial?.open ?? null,
62
+ tab: initial?.tab ?? "code",
63
+ editTextOn: initial?.editTextOn ?? false,
64
+ });
65
+ const actions = React.useMemo(() => ({
66
+ pick: (item) => setState((s) => ({ ...s, open: s.open === item ? null : item })),
67
+ toggleLog: () => setState((s) => ({ ...s, open: s.open === "agentLog" ? null : "agentLog" })),
68
+ tierTab: (key) => setState((s) => (key === "editText" ? { ...s, editTextOn: !s.editTextOn } : { ...s, tab: key })),
69
+ close: () => setState((s) => ({ ...s, open: null })),
70
+ }), []);
71
+ return [state, actions];
72
+ }
73
+ export function codeTierRowItems(items, editTextOn) {
74
+ return items.map((key) => {
75
+ const face = TIER_FACE[key];
76
+ if (key === "editText")
77
+ return { key, label: face.label, kind: "toggle", pressed: editTextOn };
78
+ return { key, label: face.label, glyph: face.glyph };
79
+ });
80
+ }
81
+ export function CodeTierCard(props) {
82
+ const { viewer, code, state, actions } = props;
83
+ const pending = viewer.identityPending === true;
84
+ const owner = viewer.role === "owner" && pending === false;
85
+ const editor = viewer.canEditSource === true && pending === false;
86
+ const codeModeAllowed = code.codeModeAvailable === true && pending === false;
87
+ const editTextOffered = editor && code.editText !== undefined && code.editText !== null;
88
+ const draft = useComposerDraft({ composer: code.composer, resetKey: viewer.appSlug });
89
+ const rowItems = codeRowItems({ owner, editor, codeModeAllowed });
90
+ const open = state.open !== null && rowItems.includes(state.open) ? state.open : null;
91
+ const css = React.createElement("style", null, CODE_CARD_CSS + CARD_TAB_ROW_CSS + CODE_TIER_CSS);
92
+ const row = (React.createElement(CardTabRow, { label: "Code tools", items: rowItems.map((key) => ({ key, label: ROW_FACE[key].label, glyph: ROW_FACE[key].glyph, kind: "drill" })), active: open, onDrill: (key) => actions.pick(key) }));
93
+ const placeholder = code.composer.cap === "Remix this" ? (code.remixHints[0] ?? "") : code.composer.placeholder;
94
+ const composer = React.createElement(Composer, { composer: code.composer, draft: draft, placeholder: placeholder });
95
+ if (open === "code") {
96
+ const tierItems = codeTierItems({ owner, editText: editTextOffered });
97
+ const tab = tierItems.includes(state.tab) && state.tab !== "editText" ? state.tab : "code";
98
+ let body;
99
+ if (tab === "details")
100
+ body = code.slots.details;
101
+ else if (tab === "help")
102
+ body = code.slots.help;
103
+ else
104
+ body = props.renderWorkspace?.(tab) ?? code.slots.workspace;
105
+ return (React.createElement("div", { className: "vm-code vm-ctab vm-xtab vm-tier", "data-card": "vibe", "data-tier-mode": "" },
106
+ css,
107
+ React.createElement("div", { className: "vm-tier-ws", "data-zone": "workspace", "data-tool": tab, role: "tabpanel", "aria-label": TIER_FACE[tab].label }, body),
108
+ React.createElement(MainAction, null, composer),
109
+ React.createElement(ScrollTabRow, { label: "Code mode tools", items: codeTierRowItems(tierItems, state.editTextOn), active: tab, onPick: (key) => actions.tierTab(key) }),
110
+ row));
111
+ }
112
+ if (open === "look" || open === "help") {
113
+ return (React.createElement("div", { className: "vm-code vm-ctab vm-xtab vm-tier", "data-card": "vibe" },
114
+ css,
115
+ React.createElement("div", { className: "vm-drill", "data-drill": open }, code.slots[open]),
116
+ React.createElement(DoneButton, { onDone: actions.close }),
117
+ row));
118
+ }
119
+ const queued = draft.queued.map((text) => ({ who: "you", text }));
120
+ const lines = [...code.log, ...queued];
121
+ const logOpen = open === "agentLog";
122
+ const moment = editor
123
+ ? withOpenLog(currentMoment(code.moments), { logOpen, hasLog: lines.length > 0, codeMode: false })
124
+ : { pinned: null, live: null };
125
+ const suggestions = moment.pinned === null ? (React.createElement(Suggestions, { items: code.suggestions.slice(0, 3), gold: code.goldSuggestion, onPick: code.onSuggestion, fastPaths: code.suggestionFastPaths, onToggleFastPath: owner ? code.onToggleFastPath : null })) : undefined;
126
+ const log = moment.live !== null ? { open: logOpen, onToggle: actions.toggleLog, lines, tail: suggestions } : null;
127
+ const hasMoment = moment.pinned !== null || moment.live !== null;
128
+ return (React.createElement("div", { className: "vm-code vm-ctab vm-xtab vm-tier", "data-card": "vibe" },
129
+ css,
130
+ React.createElement(Stretch, null, hasMoment ? React.createElement(MomentLine, { moment: moment, log: log, onAction: code.onMomentAction }) : null),
131
+ React.createElement(MainAction, null, composer),
132
+ row));
133
+ }
134
+ export function codeTierShell(state) {
135
+ return {
136
+ codeMode: state.open === "code",
137
+ logOpen: state.open === "agentLog",
138
+ key: `${state.open ?? ""}|${state.tab}`,
139
+ };
140
+ }
141
+ //# sourceMappingURL=CodeTierAudition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeTierAudition.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/sketches/CodeTierAudition.tsx"],"names":[],"mappings":"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"}
@@ -30,11 +30,9 @@ export interface AccountSlice {
30
30
  avatarUrl?: string;
31
31
  }[];
32
32
  activeHandle: string | null;
33
- needsHandle: boolean;
34
33
  handleBusy: boolean;
35
34
  onSelectHandle(slug: string): void;
36
35
  onAddHandle(slug: string): Promise<Result<void>>;
37
- onClaimHandle(slug: string): Promise<Result<void>>;
38
36
  handleIdeas: {
39
37
  fromName: readonly string[];
40
38
  words: readonly string[];
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"slices.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/slices.ts"],"names":[],"mappings":"AAqTA,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7C,UAAU,EAAE,qDAAqD;IACjE,eAAe,EAAE,sDAAsD;CAC/D,CAAC,CAAC"}