@vibes.diy/base 14.3.21 → 14.3.23
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.
- package/components/StyleControls.js +27 -3
- package/components/StyleControls.js.map +1 -1
- package/components/VibesSwitch.d.ts +1 -2
- package/components/VibesSwitch.js +4 -59
- package/components/VibesSwitch.js.map +1 -1
- package/components/chip-fast-path.d.ts +6 -0
- package/components/chip-fast-path.js +2 -0
- package/components/chip-fast-path.js.map +1 -0
- package/components/editor-tabs.d.ts +3 -0
- package/components/editor-tabs.js +1 -0
- package/components/editor-tabs.js.map +1 -1
- package/components/index.d.ts +2 -17
- package/components/index.js +2 -17
- package/components/index.js.map +1 -1
- package/components/vibe-menu/VibeMenu.d.ts +16 -0
- package/components/vibe-menu/VibeMenu.js +99 -0
- package/components/vibe-menu/VibeMenu.js.map +1 -0
- package/components/vibe-menu/cards/AccountCard.d.ts +40 -0
- package/components/vibe-menu/cards/AccountCard.js +234 -0
- package/components/vibe-menu/cards/AccountCard.js.map +1 -0
- package/components/vibe-menu/cards/CodeCard.d.ts +20 -0
- package/components/vibe-menu/cards/CodeCard.js +109 -0
- package/components/vibe-menu/cards/CodeCard.js.map +1 -0
- package/components/vibe-menu/cards/CodeModeWorkspace.d.ts +31 -0
- package/components/vibe-menu/cards/CodeModeWorkspace.js +107 -0
- package/components/vibe-menu/cards/CodeModeWorkspace.js.map +1 -0
- package/components/vibe-menu/cards/HomeCard.d.ts +22 -0
- package/components/vibe-menu/cards/HomeCard.js +64 -0
- package/components/vibe-menu/cards/HomeCard.js.map +1 -0
- package/components/vibe-menu/cards/ShareCard.d.ts +9 -0
- package/components/vibe-menu/cards/ShareCard.js +84 -0
- package/components/vibe-menu/cards/ShareCard.js.map +1 -0
- package/components/vibe-menu/cards/ShareDrills.d.ts +35 -0
- package/components/vibe-menu/cards/ShareDrills.js +146 -0
- package/components/vibe-menu/cards/ShareDrills.js.map +1 -0
- package/components/vibe-menu/cards/ShareLinkRows.d.ts +6 -0
- package/components/vibe-menu/cards/ShareLinkRows.js +27 -0
- package/components/vibe-menu/cards/ShareLinkRows.js.map +1 -0
- package/components/vibe-menu/cards/share-actions.d.ts +13 -0
- package/components/vibe-menu/cards/share-actions.js +37 -0
- package/components/vibe-menu/cards/share-actions.js.map +1 -0
- package/components/vibe-menu/cards/share-card.styles.d.ts +1 -0
- package/components/vibe-menu/cards/share-card.styles.js +90 -0
- package/components/vibe-menu/cards/share-card.styles.js.map +1 -0
- package/components/vibe-menu/cards/share-copy.d.ts +24 -0
- package/components/vibe-menu/cards/share-copy.js +64 -0
- package/components/vibe-menu/cards/share-copy.js.map +1 -0
- package/components/vibe-menu/cards/share-parts.d.ts +46 -0
- package/components/vibe-menu/cards/share-parts.js +87 -0
- package/components/vibe-menu/cards/share-parts.js.map +1 -0
- package/components/vibe-menu/code-tabs.d.ts +11 -0
- package/components/vibe-menu/code-tabs.js +32 -0
- package/components/vibe-menu/code-tabs.js.map +1 -0
- package/components/vibe-menu/copy.d.ts +7 -0
- package/components/vibe-menu/copy.js +13 -0
- package/components/vibe-menu/copy.js.map +1 -0
- package/components/vibe-menu/fixtures.d.ts +42 -0
- package/components/vibe-menu/fixtures.js +184 -0
- package/components/vibe-menu/fixtures.js.map +1 -0
- package/components/vibe-menu/geometry.d.ts +24 -0
- package/components/vibe-menu/geometry.js +28 -0
- package/components/vibe-menu/geometry.js.map +1 -0
- package/components/vibe-menu/index.d.ts +42 -0
- package/components/vibe-menu/index.js +43 -0
- package/components/vibe-menu/index.js.map +1 -0
- package/components/vibe-menu/menu-state.d.ts +42 -0
- package/components/vibe-menu/menu-state.js +82 -0
- package/components/vibe-menu/menu-state.js.map +1 -0
- package/components/vibe-menu/moments.d.ts +13 -0
- package/components/vibe-menu/moments.js +39 -0
- package/components/vibe-menu/moments.js.map +1 -0
- package/components/vibe-menu/motion.d.ts +10 -0
- package/components/vibe-menu/motion.js +10 -0
- package/components/vibe-menu/motion.js.map +1 -0
- package/components/vibe-menu/open-resolver.d.ts +46 -0
- package/components/vibe-menu/open-resolver.js +91 -0
- package/components/vibe-menu/open-resolver.js.map +1 -0
- package/components/vibe-menu/parts/AccessToggle.d.ts +13 -0
- package/components/vibe-menu/parts/AccessToggle.js +58 -0
- package/components/vibe-menu/parts/AccessToggle.js.map +1 -0
- package/components/vibe-menu/parts/ActionPill.d.ts +18 -0
- package/components/vibe-menu/parts/ActionPill.js +21 -0
- package/components/vibe-menu/parts/ActionPill.js.map +1 -0
- package/components/vibe-menu/parts/BackRow.d.ts +8 -0
- package/components/vibe-menu/parts/BackRow.js +10 -0
- package/components/vibe-menu/parts/BackRow.js.map +1 -0
- package/components/vibe-menu/parts/Chip.d.ts +37 -0
- package/components/vibe-menu/parts/Chip.js +62 -0
- package/components/vibe-menu/parts/Chip.js.map +1 -0
- package/components/vibe-menu/parts/Composer.d.ts +39 -0
- package/components/vibe-menu/parts/Composer.js +47 -0
- package/components/vibe-menu/parts/Composer.js.map +1 -0
- package/components/vibe-menu/parts/DoneButton.d.ts +5 -0
- package/components/vibe-menu/parts/DoneButton.js +5 -0
- package/components/vibe-menu/parts/DoneButton.js.map +1 -0
- package/components/vibe-menu/parts/Glyph.d.ts +9 -0
- package/components/vibe-menu/parts/Glyph.js +123 -0
- package/components/vibe-menu/parts/Glyph.js.map +1 -0
- package/components/vibe-menu/parts/GrantControls.d.ts +13 -0
- package/components/vibe-menu/parts/GrantControls.js +61 -0
- package/components/vibe-menu/parts/GrantControls.js.map +1 -0
- package/components/vibe-menu/parts/MemberRow.d.ts +37 -0
- package/components/vibe-menu/parts/MemberRow.js +70 -0
- package/components/vibe-menu/parts/MemberRow.js.map +1 -0
- package/components/vibe-menu/parts/MenuCard.d.ts +10 -0
- package/components/vibe-menu/parts/MenuCard.js +7 -0
- package/components/vibe-menu/parts/MenuCard.js.map +1 -0
- package/components/vibe-menu/parts/MomentLine.d.ts +23 -0
- package/components/vibe-menu/parts/MomentLine.js +58 -0
- package/components/vibe-menu/parts/MomentLine.js.map +1 -0
- package/components/vibe-menu/parts/Row.d.ts +41 -0
- package/components/vibe-menu/parts/Row.js +60 -0
- package/components/vibe-menu/parts/Row.js.map +1 -0
- package/components/vibe-menu/parts/SectionStrip.d.ts +14 -0
- package/components/vibe-menu/parts/SectionStrip.js +26 -0
- package/components/vibe-menu/parts/SectionStrip.js.map +1 -0
- package/components/vibe-menu/parts/VibesSwitchGlass.d.ts +24 -0
- package/components/vibe-menu/parts/VibesSwitchGlass.js +66 -0
- package/components/vibe-menu/parts/VibesSwitchGlass.js.map +1 -0
- package/components/vibe-menu/parts/radio-keys.d.ts +5 -0
- package/components/vibe-menu/parts/radio-keys.js +13 -0
- package/components/vibe-menu/parts/radio-keys.js.map +1 -0
- package/components/vibe-menu/parts/use-composer-draft.d.ts +9 -0
- package/components/vibe-menu/parts/use-composer-draft.js +94 -0
- package/components/vibe-menu/parts/use-composer-draft.js.map +1 -0
- package/components/vibe-menu/share-fixtures.d.ts +15 -0
- package/components/vibe-menu/share-fixtures.js +72 -0
- package/components/vibe-menu/share-fixtures.js.map +1 -0
- package/components/vibe-menu/shell/VibeMenuShell.d.ts +30 -0
- package/components/vibe-menu/shell/VibeMenuShell.js +124 -0
- package/components/vibe-menu/shell/VibeMenuShell.js.map +1 -0
- package/components/vibe-menu/shell/menu-sequence.d.ts +20 -0
- package/components/vibe-menu/shell/menu-sequence.js +35 -0
- package/components/vibe-menu/shell/menu-sequence.js.map +1 -0
- package/components/vibe-menu/shell/outline-geometry.d.ts +63 -0
- package/components/vibe-menu/shell/outline-geometry.js +83 -0
- package/components/vibe-menu/shell/outline-geometry.js.map +1 -0
- package/components/vibe-menu/shell/shell.styles.d.ts +1 -0
- package/components/vibe-menu/shell/shell.styles.js +386 -0
- package/components/vibe-menu/shell/shell.styles.js.map +1 -0
- package/components/vibe-menu/shell/useMenuSequencer.d.ts +33 -0
- package/components/vibe-menu/shell/useMenuSequencer.js +490 -0
- package/components/vibe-menu/shell/useMenuSequencer.js.map +1 -0
- package/components/vibe-menu/slices.d.ts +182 -0
- package/components/vibe-menu/slices.js +5 -0
- package/components/vibe-menu/slices.js.map +1 -0
- package/components/vibe-menu/use-remix-hint.d.ts +9 -0
- package/components/vibe-menu/use-remix-hint.js +21 -0
- package/components/vibe-menu/use-remix-hint.js.map +1 -0
- package/components/vibe-menu/vibe-menu.styles.d.ts +5 -0
- package/components/vibe-menu/vibe-menu.styles.js +1424 -0
- package/components/vibe-menu/vibe-menu.styles.js.map +1 -0
- package/package.json +4 -4
- package/components/AccountView.d.ts +0 -10
- package/components/AccountView.js +0 -31
- package/components/AccountView.js.map +0 -1
- package/components/AdminModeControl.d.ts +0 -7
- package/components/AdminModeControl.js +0 -9
- package/components/AdminModeControl.js.map +0 -1
- package/components/CodingIndicator.d.ts +0 -6
- package/components/CodingIndicator.js +0 -53
- package/components/CodingIndicator.js.map +0 -1
- package/components/CreditsDetailMenu.d.ts +0 -15
- package/components/CreditsDetailMenu.js +0 -97
- package/components/CreditsDetailMenu.js.map +0 -1
- package/components/CreditsRingView.d.ts +0 -15
- package/components/CreditsRingView.js +0 -77
- package/components/CreditsRingView.js.map +0 -1
- package/components/EditorTabStrip.d.ts +0 -10
- package/components/EditorTabStrip.js +0 -15
- package/components/EditorTabStrip.js.map +0 -1
- package/components/LinkLineControls.d.ts +0 -9
- package/components/LinkLineControls.js +0 -72
- package/components/LinkLineControls.js.map +0 -1
- package/components/MadeHereView.d.ts +0 -8
- package/components/MadeHereView.js +0 -37
- package/components/MadeHereView.js.map +0 -1
- package/components/RecentVibesList.d.ts +0 -19
- package/components/RecentVibesList.js +0 -106
- package/components/RecentVibesList.js.map +0 -1
- package/components/RecommendedView.d.ts +0 -22
- package/components/RecommendedView.js +0 -172
- package/components/RecommendedView.js.map +0 -1
- package/components/RemixInviteView.d.ts +0 -4
- package/components/RemixInviteView.js +0 -11
- package/components/RemixInviteView.js.map +0 -1
- package/components/SeedDataOffer.d.ts +0 -8
- package/components/SeedDataOffer.js +0 -15
- package/components/SeedDataOffer.js.map +0 -1
- package/components/SignedInDiscoveryView.d.ts +0 -17
- package/components/SignedInDiscoveryView.js +0 -30
- package/components/SignedInDiscoveryView.js.map +0 -1
- package/components/SignedOutDiscoveryView.d.ts +0 -7
- package/components/SignedOutDiscoveryView.js +0 -15
- package/components/SignedOutDiscoveryView.js.map +0 -1
- package/components/SignedOutSavePrompt.d.ts +0 -4
- package/components/SignedOutSavePrompt.js +0 -33
- package/components/SignedOutSavePrompt.js.map +0 -1
- package/components/UnifiedVibeCard.d.ts +0 -129
- package/components/UnifiedVibeCard.js +0 -1658
- package/components/UnifiedVibeCard.js.map +0 -1
- package/components/UnifiedVibeCardSettings.styles.d.ts +0 -3
- package/components/UnifiedVibeCardSettings.styles.js +0 -95
- package/components/UnifiedVibeCardSettings.styles.js.map +0 -1
- package/components/UnifiedVibeCardShare.styles.d.ts +0 -3
- package/components/UnifiedVibeCardShare.styles.js +0 -72
- package/components/UnifiedVibeCardShare.styles.js.map +0 -1
- package/components/ViewerAccessSummary.d.ts +0 -28
- package/components/ViewerAccessSummary.js +0 -105
- package/components/ViewerAccessSummary.js.map +0 -1
- package/components/ViewerStandingView.d.ts +0 -7
- package/components/ViewerStandingView.js +0 -10
- package/components/ViewerStandingView.js.map +0 -1
- package/hooks/useCardFloat.d.ts +0 -6
- package/hooks/useCardFloat.js +0 -191
- package/hooks/useCardFloat.js.map +0 -1
- package/hooks/useHomeMotionPress.d.ts +0 -17
- package/hooks/useHomeMotionPress.js +0 -93
- package/hooks/useHomeMotionPress.js.map +0 -1
- package/motion/card-motion-source.d.ts +0 -23
- package/motion/card-motion-source.js +0 -50
- package/motion/card-motion-source.js.map +0 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { createContext, useCallback, useContext, useEffect, useRef, useState } from "react";
|
|
3
|
+
import { exception2Result } from "@adviser/cement";
|
|
4
|
+
import { MOTION } from "../motion.js";
|
|
5
|
+
import { Chip } from "../parts/Chip.js";
|
|
6
|
+
import { Glyph } from "../parts/Glyph.js";
|
|
7
|
+
export function navigatorClipboardWriter(text) {
|
|
8
|
+
return navigator.clipboard.writeText(text);
|
|
9
|
+
}
|
|
10
|
+
export const ClipboardWriterContext = createContext(navigatorClipboardWriter);
|
|
11
|
+
export function copyText(text, write = navigatorClipboardWriter) {
|
|
12
|
+
return exception2Result(async () => {
|
|
13
|
+
await write(text);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export function useCopyFeedback(text) {
|
|
17
|
+
const [copied, setCopied] = useState(false);
|
|
18
|
+
const ref = useRef(null);
|
|
19
|
+
const timer = useRef(null);
|
|
20
|
+
const write = useContext(ClipboardWriterContext);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
return function clearCopiedTimer() {
|
|
23
|
+
if (timer.current !== null)
|
|
24
|
+
clearTimeout(timer.current);
|
|
25
|
+
};
|
|
26
|
+
}, []);
|
|
27
|
+
const onCopy = useCallback(function onCopy() {
|
|
28
|
+
void copyText(text, write).then((res) => {
|
|
29
|
+
if (res.isErr())
|
|
30
|
+
return;
|
|
31
|
+
const el = ref.current;
|
|
32
|
+
if (el !== null && timer.current === null)
|
|
33
|
+
el.style.minWidth = `${el.getBoundingClientRect().width}px`;
|
|
34
|
+
setCopied(true);
|
|
35
|
+
if (timer.current !== null)
|
|
36
|
+
clearTimeout(timer.current);
|
|
37
|
+
timer.current = setTimeout(function restoreLabel() {
|
|
38
|
+
timer.current = null;
|
|
39
|
+
setCopied(false);
|
|
40
|
+
if (ref.current !== null)
|
|
41
|
+
ref.current.style.minWidth = "";
|
|
42
|
+
}, MOTION.copiedMs);
|
|
43
|
+
});
|
|
44
|
+
}, [text, write]);
|
|
45
|
+
return { copied, ref, onCopy };
|
|
46
|
+
}
|
|
47
|
+
export function CopyChip({ text, label, ariaLabel }) {
|
|
48
|
+
const { copied, ref, onCopy } = useCopyFeedback(text);
|
|
49
|
+
return (React.createElement(React.Fragment, null,
|
|
50
|
+
React.createElement(Chip, { copy: true, label: copied ? "Copied" : label, ariaLabel: ariaLabel, chipRef: ref, onClick: onCopy }),
|
|
51
|
+
React.createElement("span", { className: "vm-sr", role: "status" }, copied ? "Copied" : "")));
|
|
52
|
+
}
|
|
53
|
+
export function CopyLinkChip({ url, display }) {
|
|
54
|
+
return React.createElement(CopyChip, { text: url, label: "Copy link", ariaLabel: `Copy link ${display}` });
|
|
55
|
+
}
|
|
56
|
+
export function CopyLinkPill({ url, display }) {
|
|
57
|
+
const { copied, ref, onCopy } = useCopyFeedback(url);
|
|
58
|
+
return (React.createElement(React.Fragment, null,
|
|
59
|
+
React.createElement("button", { ref: ref, className: "vm-ask", type: "button", "aria-label": `Copy link ${display}`, "data-copied": copied ? "true" : "false", onClick: onCopy },
|
|
60
|
+
React.createElement("span", null, copied ? "Copied" : "Copy link"),
|
|
61
|
+
React.createElement(Glyph, { name: "copy" })),
|
|
62
|
+
React.createElement("span", { className: "vm-sr", role: "status" }, copied ? "Copied" : "")));
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=share-copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share-copy.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/share-copy.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import type { CardNav, RosterMember, ShareSlice } from "../slices.js";
|
|
3
|
+
import type { ShareActions, ShareFailures } from "./share-actions.js";
|
|
4
|
+
export declare const MEMBERS_ON_CARD = 2;
|
|
5
|
+
export declare const ESCAPE_LABEL = "Go public without access controls";
|
|
6
|
+
export declare const ANON_WRITES_LINE = "People can add to it without an account.";
|
|
7
|
+
export declare const INVITE_KEY = "invite";
|
|
8
|
+
export declare const MEMBERS_EMPTY_LINE = "Invite someone by handle or email and they'll show up here.";
|
|
9
|
+
export declare const PUBLISH_COPY: Readonly<Record<"draft" | "old" | "locked", {
|
|
10
|
+
readonly lead: string;
|
|
11
|
+
readonly line: string;
|
|
12
|
+
}>>;
|
|
13
|
+
export type SharePublish = NonNullable<ShareSlice["publish"]>;
|
|
14
|
+
export type ShareRequest = NonNullable<ShareSlice["request"]>;
|
|
15
|
+
export declare function withArticle(label: string): string;
|
|
16
|
+
export declare function listedMembers(share: ShareSlice): readonly RosterMember[];
|
|
17
|
+
export declare function showEscape(share: ShareSlice): boolean;
|
|
18
|
+
export declare function FailureLines({ failures, keys }: {
|
|
19
|
+
readonly failures: ShareFailures;
|
|
20
|
+
readonly keys?: readonly string[];
|
|
21
|
+
}): React.JSX.Element | null;
|
|
22
|
+
export declare function PublishLine({ publish }: {
|
|
23
|
+
readonly publish: SharePublish;
|
|
24
|
+
}): React.JSX.Element | null;
|
|
25
|
+
export declare function RequestBlock({ request, share, actions, }: {
|
|
26
|
+
readonly request: ShareRequest;
|
|
27
|
+
readonly share: ShareSlice;
|
|
28
|
+
readonly actions: ShareActions;
|
|
29
|
+
}): React.JSX.Element;
|
|
30
|
+
export declare function OwnerMemberRow({ member, share, actions, nav, }: {
|
|
31
|
+
readonly member: RosterMember;
|
|
32
|
+
readonly share: ShareSlice;
|
|
33
|
+
readonly actions: ShareActions;
|
|
34
|
+
readonly nav: CardNav;
|
|
35
|
+
}): React.JSX.Element;
|
|
36
|
+
export declare function YourAccessRow({ nav }: {
|
|
37
|
+
readonly nav: CardNav;
|
|
38
|
+
}): React.JSX.Element;
|
|
39
|
+
export declare function NotificationsRow({ share, nav }: {
|
|
40
|
+
readonly share: ShareSlice;
|
|
41
|
+
readonly nav: CardNav;
|
|
42
|
+
}): React.JSX.Element | null;
|
|
43
|
+
export declare function RosterRow({ share, nav }: {
|
|
44
|
+
readonly share: ShareSlice;
|
|
45
|
+
readonly nav: CardNav;
|
|
46
|
+
}): React.JSX.Element | null;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { APPROVE_DATA_ONLY } from "../slices.js";
|
|
3
|
+
import { Chip } from "../parts/Chip.js";
|
|
4
|
+
import { Row } from "../parts/Row.js";
|
|
5
|
+
import { MemberRequest, MemberRow, memberDisplayName } from "../parts/MemberRow.js";
|
|
6
|
+
export const MEMBERS_ON_CARD = 2;
|
|
7
|
+
export const ESCAPE_LABEL = "Go public without access controls";
|
|
8
|
+
export const ANON_WRITES_LINE = "People can add to it without an account.";
|
|
9
|
+
export const INVITE_KEY = "invite";
|
|
10
|
+
export const MEMBERS_EMPTY_LINE = "Invite someone by handle or email and they'll show up here.";
|
|
11
|
+
export const PUBLISH_COPY = {
|
|
12
|
+
draft: { lead: "Draft", line: "Your latest changes aren't live yet." },
|
|
13
|
+
old: { lead: "Older", line: "This isn't what visitors currently see." },
|
|
14
|
+
locked: { lead: "Locked", line: "New edits won't go live until you unlock." },
|
|
15
|
+
};
|
|
16
|
+
export function withArticle(label) {
|
|
17
|
+
return /^[aeiou]/i.test(label) ? `an ${label}` : `a ${label}`;
|
|
18
|
+
}
|
|
19
|
+
export function listedMembers(share) {
|
|
20
|
+
return share.roster.filter((m) => m.pendingEmail === false);
|
|
21
|
+
}
|
|
22
|
+
export function showEscape(share) {
|
|
23
|
+
if (share.posture !== "restricted")
|
|
24
|
+
return false;
|
|
25
|
+
if (share.postureState === "failed")
|
|
26
|
+
return true;
|
|
27
|
+
return share.postureState === "pending" && share.escape.revealed === true;
|
|
28
|
+
}
|
|
29
|
+
export function FailureLines({ failures, keys }) {
|
|
30
|
+
const shown = [...failures.entries()].filter(([key]) => keys === undefined || keys.includes(key));
|
|
31
|
+
if (shown.length === 0)
|
|
32
|
+
return null;
|
|
33
|
+
return (React.createElement(React.Fragment, null, shown.map(([key, failure]) => (React.createElement("p", { key: key, className: "vm-fail", role: "alert" },
|
|
34
|
+
React.createElement("span", null, failure.text),
|
|
35
|
+
React.createElement(Chip, { label: "Retry", onClick: failure.retry }))))));
|
|
36
|
+
}
|
|
37
|
+
export function PublishLine({ publish }) {
|
|
38
|
+
if (publish.state === "published")
|
|
39
|
+
return null;
|
|
40
|
+
const copy = PUBLISH_COPY[publish.state];
|
|
41
|
+
const failed = publish.error !== null;
|
|
42
|
+
return (React.createElement("div", { className: "vm-publish", "data-publish": publish.state },
|
|
43
|
+
React.createElement("b", null, copy.lead),
|
|
44
|
+
React.createElement("span", null, failed ? publish.error : copy.line),
|
|
45
|
+
publish.state === "locked" ? (React.createElement(Chip, { label: "Unlock", onClick: publish.onUnlock })) : (React.createElement(Chip, { label: failed ? "Retry" : "Publish", onClick: publish.onPublish })),
|
|
46
|
+
publish.state === "old" ? React.createElement(Chip, { label: "View latest", ghost: true, onClick: publish.onViewLatest }) : null));
|
|
47
|
+
}
|
|
48
|
+
function approveFailureText(handle) {
|
|
49
|
+
return function text(error) {
|
|
50
|
+
if (error.message === APPROVE_DATA_ONLY.codeFailed)
|
|
51
|
+
return `@${handle} has Data access. Code access didn't go through. Try again`;
|
|
52
|
+
if (error.message === APPROVE_DATA_ONLY.codeNeedsHandle)
|
|
53
|
+
return `@${handle} has Data access. Code access needs their handle.`;
|
|
54
|
+
return `Couldn't let @${handle} in. Try again`;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function RequestBlock({ request, share, actions, }) {
|
|
58
|
+
return (React.createElement(MemberRequest, { key: request.key, who: request.key, handle: request.handle, pending: actions.busy.has(request.key), onApprove: ({ data, code }) => void actions.run(request.key, approveFailureText(request.handle), () => share.onApprove(request.key, data, code)), onDecline: () => void actions.run(request.key, `Couldn't answer @${request.handle}. Try again`, () => share.onDecline(request.key)) }));
|
|
59
|
+
}
|
|
60
|
+
export function OwnerMemberRow({ member, share, actions, nav, }) {
|
|
61
|
+
const failure = `Couldn't change ${memberDisplayName(member)}'s access. Try again`;
|
|
62
|
+
function setData(g) {
|
|
63
|
+
void actions.run(member.key, failure, () => share.members.onData(member.key, g));
|
|
64
|
+
}
|
|
65
|
+
function setCode(on) {
|
|
66
|
+
void actions.run(member.key, failure, () => share.members.onCode(member.key, on));
|
|
67
|
+
}
|
|
68
|
+
function open() {
|
|
69
|
+
nav.onDrill({ drill: "member", memberKey: member.key });
|
|
70
|
+
}
|
|
71
|
+
return (React.createElement(MemberRow, { member: member, readOnly: share.canManage === false, busy: actions.busy.has(member.key), onData: setData, onCode: setCode, onOpen: open }));
|
|
72
|
+
}
|
|
73
|
+
export function YourAccessRow({ nav }) {
|
|
74
|
+
return React.createElement(Row, { lead: "key", label: "Your access", compact: true, tail: { kind: "drill" }, onClick: () => nav.onDrill({ drill: "access" }) });
|
|
75
|
+
}
|
|
76
|
+
export function NotificationsRow({ share, nav }) {
|
|
77
|
+
if (share.notificationsSlot === null)
|
|
78
|
+
return null;
|
|
79
|
+
return (React.createElement(Row, { lead: "bell", label: "Notifications", compact: true, tail: { kind: "drill" }, onClick: () => nav.onDrill({ drill: "notifications" }) }));
|
|
80
|
+
}
|
|
81
|
+
export function RosterRow({ share, nav }) {
|
|
82
|
+
const count = listedMembers(share).length;
|
|
83
|
+
if (count === 0)
|
|
84
|
+
return null;
|
|
85
|
+
return (React.createElement(Row, { lead: "user-plus", label: "See all members", compact: true, tail: { kind: "drill", value: String(count) }, onClick: () => nav.onDrill({ drill: "members" }) }));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=share-parts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"share-parts.js","sourceRoot":"","sources":["../../../../jsr/components/vibe-menu/cards/share-parts.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { EditorTabKey } from "../editor-tabs.js";
|
|
2
|
+
import type { MenuView } from "./menu-state.js";
|
|
3
|
+
export type CodeTab = "look" | "code" | "files" | "data" | "app-settings" | "ai-requests" | "agent-log" | "help";
|
|
4
|
+
export declare const CODE_TABS: readonly {
|
|
5
|
+
readonly key: CodeTab;
|
|
6
|
+
readonly label: string;
|
|
7
|
+
}[];
|
|
8
|
+
export declare const DEFAULT_CODE_TAB: CodeTab;
|
|
9
|
+
export declare function isCodeTab(v: unknown): v is CodeTab;
|
|
10
|
+
export declare const EDITOR_TAB_FOR_CODE_TAB: Readonly<Record<CodeTab, EditorTabKey | null>>;
|
|
11
|
+
export declare function activeWorkspaceTab(codeTab: CodeTab, view: MenuView | null): CodeTab;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export const CODE_TABS = Object.freeze([
|
|
2
|
+
{ key: "agent-log", label: "Agent log" },
|
|
3
|
+
{ key: "look", label: "Look" },
|
|
4
|
+
{ key: "code", label: "Code" },
|
|
5
|
+
{ key: "files", label: "Files" },
|
|
6
|
+
{ key: "data", label: "Data" },
|
|
7
|
+
{ key: "app-settings", label: "App settings" },
|
|
8
|
+
{ key: "ai-requests", label: "AI requests" },
|
|
9
|
+
{ key: "help", label: "Help" },
|
|
10
|
+
]);
|
|
11
|
+
export const DEFAULT_CODE_TAB = "agent-log";
|
|
12
|
+
export function isCodeTab(v) {
|
|
13
|
+
return CODE_TABS.some((t) => t.key === v);
|
|
14
|
+
}
|
|
15
|
+
export const EDITOR_TAB_FOR_CODE_TAB = Object.freeze({
|
|
16
|
+
look: null,
|
|
17
|
+
code: "code",
|
|
18
|
+
files: "files",
|
|
19
|
+
data: "data",
|
|
20
|
+
"app-settings": "settings",
|
|
21
|
+
"ai-requests": "requests",
|
|
22
|
+
"agent-log": null,
|
|
23
|
+
help: null,
|
|
24
|
+
});
|
|
25
|
+
export function activeWorkspaceTab(codeTab, view) {
|
|
26
|
+
if (view?.drill === "look")
|
|
27
|
+
return "look";
|
|
28
|
+
if (view?.drill === "help")
|
|
29
|
+
return "help";
|
|
30
|
+
return codeTab;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=code-tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-tabs.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/code-tabs.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,SAAS,GAAiE,MAAM,CAAC,MAAM,CAAC;IACnG,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;IACxC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9B,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9B,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAChC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9B,EAAE,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;IAC9C,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;IAC5C,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CAC/B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAY,WAAW,CAAC;AAErD,MAAM,UAAU,SAAS,CAAC,CAAU;IAClC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAC5C,CAAC;AAOD,MAAM,CAAC,MAAM,uBAAuB,GAAmD,MAAM,CAAC,MAAM,CAAC;IACnG,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,cAAc,EAAE,UAAU;IAC1B,aAAa,EAAE,UAAU;IACzB,WAAW,EAAE,IAAI;IACjB,IAAI,EAAE,IAAI;CACX,CAAC,CAAC;AAMH,MAAM,UAAU,kBAAkB,CAAC,OAAgB,EAAE,IAAqB;IACxE,IAAI,IAAI,EAAE,KAAK,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1C,IAAI,IAAI,EAAE,KAAK,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1C,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const CODE_KICKER_OWNER = "Chat edits the code for you";
|
|
2
|
+
export declare const CODE_KICKER_OTHER = "Make your own version";
|
|
3
|
+
export declare const REMIX_INVITE_KICKER = "Make it yours: describe a change and we'll remix it for you.";
|
|
4
|
+
export declare const OWNER_PLACEHOLDER = "Describe a change\u2026";
|
|
5
|
+
export declare const REMIX_HINTS: readonly string[];
|
|
6
|
+
export declare const JOIN_OR_SIGN_IN = "Join or sign in";
|
|
7
|
+
export declare const SHARE_DRAFT_LINE = "Sharing opens when your app is ready.";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const CODE_KICKER_OWNER = "Chat edits the code for you";
|
|
2
|
+
export const CODE_KICKER_OTHER = "Make your own version";
|
|
3
|
+
export const REMIX_INVITE_KICKER = "Make it yours: describe a change and we'll remix it for you.";
|
|
4
|
+
export const OWNER_PLACEHOLDER = "Describe a change…";
|
|
5
|
+
export const REMIX_HINTS = Object.freeze([
|
|
6
|
+
"Make it pink and add confetti…",
|
|
7
|
+
"Add a dark mode…",
|
|
8
|
+
"Let people leave comments…",
|
|
9
|
+
"Add sound effects…",
|
|
10
|
+
]);
|
|
11
|
+
export const JOIN_OR_SIGN_IN = "Join or sign in";
|
|
12
|
+
export const SHARE_DRAFT_LINE = "Sharing opens when your app is ready.";
|
|
13
|
+
//# sourceMappingURL=copy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/copy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAG,6BAA6B,CAAC;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAAG,8DAA8D,CAAC;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAEtD,MAAM,CAAC,MAAM,WAAW,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC1D,gCAAgC;IAChC,kBAAkB;IAClB,4BAA4B;IAC5B,oBAAoB;CACrB,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AACjD,MAAM,CAAC,MAAM,gBAAgB,GAAG,uCAAuC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Banner, MenuView } from "./menu-state.js";
|
|
2
|
+
import type { ViewerRole } from "./open-resolver.js";
|
|
3
|
+
import type { AccountSlice, CardNav, CodeSlice, LogLine, Posture, ShareSlice, VibeMenuProps, ViewerSlice } from "./slices.js";
|
|
4
|
+
export declare const FIXTURE_APP_TITLE = "My To-Do App";
|
|
5
|
+
export declare const HANDLE_SETS: Readonly<{
|
|
6
|
+
none: readonly string[];
|
|
7
|
+
one: readonly string[];
|
|
8
|
+
many: readonly string[];
|
|
9
|
+
}>;
|
|
10
|
+
export type HandleSetName = keyof typeof HANDLE_SETS;
|
|
11
|
+
export declare const NAME_HANDLES: readonly string[];
|
|
12
|
+
export declare const HANDLE_WORDS: readonly string[];
|
|
13
|
+
export declare const OWNER_SUGGESTIONS: readonly string[];
|
|
14
|
+
export declare const OTHER_SUGGESTIONS: readonly string[];
|
|
15
|
+
export declare const FIXTURE_LOG: readonly LogLine[];
|
|
16
|
+
export declare const FIXTURE_RECOMMENDED: VibeMenuProps["recommended"];
|
|
17
|
+
export declare function fixtureViewer(input: {
|
|
18
|
+
readonly role: ViewerRole;
|
|
19
|
+
readonly identityPending?: boolean;
|
|
20
|
+
readonly canEditSource?: boolean;
|
|
21
|
+
readonly draft?: boolean;
|
|
22
|
+
}): ViewerSlice;
|
|
23
|
+
export declare function fixtureAccount(input: {
|
|
24
|
+
readonly handles: HandleSetName;
|
|
25
|
+
readonly plan?: "free" | "plus";
|
|
26
|
+
readonly activeHandle?: string;
|
|
27
|
+
readonly over?: Partial<AccountSlice>;
|
|
28
|
+
}): AccountSlice;
|
|
29
|
+
export declare function fixtureCode(input: {
|
|
30
|
+
readonly role: ViewerRole;
|
|
31
|
+
readonly moment?: string;
|
|
32
|
+
readonly over?: Partial<CodeSlice>;
|
|
33
|
+
}): CodeSlice;
|
|
34
|
+
export declare function fixtureShare(input: {
|
|
35
|
+
readonly role: ViewerRole;
|
|
36
|
+
readonly posture?: Posture;
|
|
37
|
+
readonly pendingRequest?: boolean;
|
|
38
|
+
}): ShareSlice;
|
|
39
|
+
export declare function fixtureNav(input?: {
|
|
40
|
+
readonly view?: MenuView | null;
|
|
41
|
+
readonly banner?: Banner | null;
|
|
42
|
+
}): CardNav;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Result } from "@adviser/cement";
|
|
3
|
+
import { DEFAULT_CODE_TAB } from "./code-tabs.js";
|
|
4
|
+
import { MOMENT_FIXTURES } from "./moments.js";
|
|
5
|
+
import { CODE_KICKER_OTHER, CODE_KICKER_OWNER, OWNER_PLACEHOLDER, REMIX_HINTS } from "./copy.js";
|
|
6
|
+
import { SAMPLE_REQUEST, SAMPLE_ROSTER, makeShareSlice, makeVisitorShareSlice } from "./share-fixtures.js";
|
|
7
|
+
export const FIXTURE_APP_TITLE = "My To-Do App";
|
|
8
|
+
const NO_HANDLES = Object.freeze([]);
|
|
9
|
+
export const HANDLE_SETS = Object.freeze({
|
|
10
|
+
none: NO_HANDLES,
|
|
11
|
+
one: Object.freeze(["marcus"]),
|
|
12
|
+
many: Object.freeze([
|
|
13
|
+
"marcus",
|
|
14
|
+
"marcus-studio",
|
|
15
|
+
"marcus-games",
|
|
16
|
+
"mestes",
|
|
17
|
+
"vibes-demo",
|
|
18
|
+
"marcus-labs",
|
|
19
|
+
"estes-family",
|
|
20
|
+
"garden-club",
|
|
21
|
+
"pickup-soccer",
|
|
22
|
+
"book-club",
|
|
23
|
+
"marcus-music",
|
|
24
|
+
"mestes-qa",
|
|
25
|
+
"demo-day",
|
|
26
|
+
"tiny-tools",
|
|
27
|
+
"weekend-hacks",
|
|
28
|
+
"marcus-art",
|
|
29
|
+
"vibes-team",
|
|
30
|
+
]),
|
|
31
|
+
});
|
|
32
|
+
export const NAME_HANDLES = Object.freeze(["marcus", "marcusestes", "mestes"]);
|
|
33
|
+
export const HANDLE_WORDS = Object.freeze([
|
|
34
|
+
"sunny-otter",
|
|
35
|
+
"quiet-comet",
|
|
36
|
+
"brave-fern",
|
|
37
|
+
"lucky-pixel",
|
|
38
|
+
"tidy-moose",
|
|
39
|
+
"velvet-kite",
|
|
40
|
+
"rapid-plum",
|
|
41
|
+
"cosy-orbit",
|
|
42
|
+
"jolly-cedar",
|
|
43
|
+
]);
|
|
44
|
+
export const OWNER_SUGGESTIONS = Object.freeze(["Sort by due date", "Add a dark mode", "Make it feel playful"]);
|
|
45
|
+
export const OTHER_SUGGESTIONS = Object.freeze([
|
|
46
|
+
"Make it for groceries",
|
|
47
|
+
"Share one list",
|
|
48
|
+
"Change the colours",
|
|
49
|
+
]);
|
|
50
|
+
const LOG_LINES = [
|
|
51
|
+
{ who: "you", text: "Make a to-do list I can share with my family." },
|
|
52
|
+
{ who: "built", text: "A to-do list with tasks you can tick off." },
|
|
53
|
+
{ who: "you", text: "Let tasks have due dates." },
|
|
54
|
+
{ who: "built", text: "Added a date to each task and sorted by it." },
|
|
55
|
+
{ who: "built", text: "Tasks now have due dates." },
|
|
56
|
+
];
|
|
57
|
+
export const FIXTURE_LOG = Object.freeze(LOG_LINES);
|
|
58
|
+
export const FIXTURE_RECOMMENDED = Object.freeze([
|
|
59
|
+
{ title: "Garden Planner", href: "/vibe/sam/garden-planner" },
|
|
60
|
+
{ title: "Pickup Soccer Roster", href: "/vibe/priya/pickup-soccer" },
|
|
61
|
+
{ title: "Book Club Picks", href: "/vibe/mei/book-club" },
|
|
62
|
+
]);
|
|
63
|
+
function noop() {
|
|
64
|
+
}
|
|
65
|
+
async function ok() {
|
|
66
|
+
return Result.Ok(undefined);
|
|
67
|
+
}
|
|
68
|
+
export function fixtureViewer(input) {
|
|
69
|
+
return {
|
|
70
|
+
role: input.role,
|
|
71
|
+
identityPending: input.identityPending ?? false,
|
|
72
|
+
canEditSource: input.canEditSource ?? input.role === "owner",
|
|
73
|
+
appTitle: FIXTURE_APP_TITLE,
|
|
74
|
+
appSlug: input.draft === true ? null : "my-to-do-app",
|
|
75
|
+
ownerHandle: "marcus",
|
|
76
|
+
draft: input.draft ?? false,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
export function fixtureAccount(input) {
|
|
80
|
+
const list = HANDLE_SETS[input.handles];
|
|
81
|
+
const plan = input.plan ?? "plus";
|
|
82
|
+
const base = {
|
|
83
|
+
handles: list.map((slug) => ({ slug })),
|
|
84
|
+
activeHandle: input.activeHandle ?? list[0] ?? null,
|
|
85
|
+
needsHandle: list.length === 0,
|
|
86
|
+
handleBusy: false,
|
|
87
|
+
onSelectHandle: noop,
|
|
88
|
+
onAddHandle: ok,
|
|
89
|
+
onSurpriseHandle: () => "sunny-otter-42",
|
|
90
|
+
onClaimHandle: ok,
|
|
91
|
+
handleIdeas: { fromName: NAME_HANDLES, words: HANDLE_WORDS.slice(0, 3), refresh: noop },
|
|
92
|
+
onChangePicture: noop,
|
|
93
|
+
credits: { plan, remaining: 742, included: 1000 },
|
|
94
|
+
creditsAction: { label: plan === "free" ? "Get Vibes Plus" : "Get more credits", href: "/settings?tab=billing" },
|
|
95
|
+
onSignIn: noop,
|
|
96
|
+
onLogout: noop,
|
|
97
|
+
membershipsHref: "/settings?tab=memberships",
|
|
98
|
+
settingsHref: "/settings",
|
|
99
|
+
savePrompt: null,
|
|
100
|
+
};
|
|
101
|
+
return { ...base, ...input.over };
|
|
102
|
+
}
|
|
103
|
+
function momentItems(key) {
|
|
104
|
+
if (key === undefined)
|
|
105
|
+
return MOMENT_FIXTURES.summary ?? [];
|
|
106
|
+
const items = MOMENT_FIXTURES[key];
|
|
107
|
+
return items === undefined ? [] : items;
|
|
108
|
+
}
|
|
109
|
+
const FIXTURE_SLOTS = {
|
|
110
|
+
look: (React.createElement("div", { className: "vm-drill-sec" },
|
|
111
|
+
React.createElement("p", { className: "vm-kicker" }, "Style"),
|
|
112
|
+
React.createElement("div", { className: "vm-picks" },
|
|
113
|
+
React.createElement("button", { className: "vm-chip", type: "button" }, "Bold"),
|
|
114
|
+
React.createElement("button", { className: "vm-chip is-ghost", type: "button" }, "Minimal"),
|
|
115
|
+
React.createElement("button", { className: "vm-chip is-ghost", type: "button" }, "Playful")))),
|
|
116
|
+
details: (React.createElement("div", { className: "vm-drill-sec" },
|
|
117
|
+
React.createElement("p", { className: "vm-kicker" }, "Title"),
|
|
118
|
+
React.createElement("input", { className: "vm-input", defaultValue: FIXTURE_APP_TITLE, "aria-label": "App title" }))),
|
|
119
|
+
help: (React.createElement("div", null, ["How do I invite someone?", "Can I change how it looks?", "What happens when I publish?", "Where is my data kept?"].map((q) => (React.createElement("button", { key: q, className: "vm-faq", type: "button" }, q))))),
|
|
120
|
+
workspace: (React.createElement("div", { "data-testid": "workspace-fixture", style: { padding: 16 } },
|
|
121
|
+
React.createElement("input", { "aria-label": "Workspace probe", className: "vm-input" }))),
|
|
122
|
+
};
|
|
123
|
+
export function fixtureCode(input) {
|
|
124
|
+
const owner = input.role === "owner";
|
|
125
|
+
const moments = momentItems(input.moment);
|
|
126
|
+
const building = moments.some((m) => m.kind === "progress");
|
|
127
|
+
const base = {
|
|
128
|
+
composer: {
|
|
129
|
+
placeholder: owner ? OWNER_PLACEHOLDER : (REMIX_HINTS[0] ?? ""),
|
|
130
|
+
cap: owner ? (building ? "Stop" : "Send") : "Remix this",
|
|
131
|
+
queuedNote: owner && building,
|
|
132
|
+
disabled: false,
|
|
133
|
+
sendsNow: true,
|
|
134
|
+
onSubmit: () => true,
|
|
135
|
+
onStop: noop,
|
|
136
|
+
seed: null,
|
|
137
|
+
restore: null,
|
|
138
|
+
},
|
|
139
|
+
moments,
|
|
140
|
+
onMomentAction: noop,
|
|
141
|
+
log: FIXTURE_LOG,
|
|
142
|
+
suggestions: owner ? OWNER_SUGGESTIONS : OTHER_SUGGESTIONS,
|
|
143
|
+
onSuggestion: noop,
|
|
144
|
+
suggestionFastPaths: owner
|
|
145
|
+
? OWNER_SUGGESTIONS.map((text, i) => ({ text, state: i === 0 ? { shielded: true, canUnbless: true } : { canBless: true } }))
|
|
146
|
+
: [{ text: OTHER_SUGGESTIONS[0] ?? "", state: { shielded: true } }],
|
|
147
|
+
onToggleFastPath: owner ? noop : null,
|
|
148
|
+
kicker: owner ? CODE_KICKER_OWNER : CODE_KICKER_OTHER,
|
|
149
|
+
remixHints: REMIX_HINTS,
|
|
150
|
+
codeModeAvailable: owner,
|
|
151
|
+
codeMode: false,
|
|
152
|
+
onCodeMode: noop,
|
|
153
|
+
codeTab: DEFAULT_CODE_TAB,
|
|
154
|
+
onCodeTab: noop,
|
|
155
|
+
disabledCodeTabs: [],
|
|
156
|
+
slots: FIXTURE_SLOTS,
|
|
157
|
+
};
|
|
158
|
+
return { ...base, ...input.over };
|
|
159
|
+
}
|
|
160
|
+
export function fixtureShare(input) {
|
|
161
|
+
const posture = input.posture ?? "public";
|
|
162
|
+
if (input.role === "owner") {
|
|
163
|
+
return makeShareSlice({
|
|
164
|
+
posture,
|
|
165
|
+
request: input.pendingRequest === true ? SAMPLE_REQUEST : null,
|
|
166
|
+
autoApprove: { on: false, data: "read", onChange: noop },
|
|
167
|
+
publish: { state: "published", onPublish: noop, onUnlock: noop, onViewLatest: noop, error: null },
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
return makeVisitorShareSlice({
|
|
171
|
+
posture,
|
|
172
|
+
roster: SAMPLE_ROSTER,
|
|
173
|
+
...(input.role === "signedOut" ? { yourAccess: { summary: "", roleLabel: "", adminMode: null, onAdminMode: noop } } : {}),
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
export function fixtureNav(input) {
|
|
177
|
+
return {
|
|
178
|
+
view: input?.view ?? null,
|
|
179
|
+
banner: input?.banner ?? null,
|
|
180
|
+
onDrill: noop,
|
|
181
|
+
onLeaveDrill: noop,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=fixtures.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/fixtures.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface MenuGeometry {
|
|
2
|
+
readonly edgeDesktop: 24;
|
|
3
|
+
readonly edgePhone: 16;
|
|
4
|
+
readonly pillW: 120;
|
|
5
|
+
readonly pillH: 44;
|
|
6
|
+
readonly ring: 3;
|
|
7
|
+
readonly barH: 50;
|
|
8
|
+
readonly tabW: 176;
|
|
9
|
+
readonly homeExtra: 14;
|
|
10
|
+
readonly pillFlatInset: 19;
|
|
11
|
+
readonly band: 8;
|
|
12
|
+
readonly cardRadius: 16;
|
|
13
|
+
readonly phoneMaxWidth: 480;
|
|
14
|
+
readonly narrowMaxWidth: 359;
|
|
15
|
+
readonly logMax: 160;
|
|
16
|
+
}
|
|
17
|
+
export declare const MENU_GEOMETRY: MenuGeometry;
|
|
18
|
+
export type MenuViewport = "desktop" | "phone";
|
|
19
|
+
export declare function menuViewportFor(widthPx: number): MenuViewport;
|
|
20
|
+
export declare function switchInsetPx(viewport: MenuViewport): number;
|
|
21
|
+
export declare function switchInsetCss(viewport: MenuViewport): {
|
|
22
|
+
right: string;
|
|
23
|
+
bottom: string;
|
|
24
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const MENU_GEOMETRY = Object.freeze({
|
|
2
|
+
edgeDesktop: 24,
|
|
3
|
+
edgePhone: 16,
|
|
4
|
+
pillW: 120,
|
|
5
|
+
pillH: 44,
|
|
6
|
+
ring: 3,
|
|
7
|
+
barH: 50,
|
|
8
|
+
tabW: 176,
|
|
9
|
+
homeExtra: 14,
|
|
10
|
+
pillFlatInset: 19,
|
|
11
|
+
band: 8,
|
|
12
|
+
cardRadius: 16,
|
|
13
|
+
phoneMaxWidth: 480,
|
|
14
|
+
narrowMaxWidth: 359,
|
|
15
|
+
logMax: 160,
|
|
16
|
+
});
|
|
17
|
+
export function menuViewportFor(widthPx) {
|
|
18
|
+
return widthPx <= MENU_GEOMETRY.phoneMaxWidth ? "phone" : "desktop";
|
|
19
|
+
}
|
|
20
|
+
export function switchInsetPx(viewport) {
|
|
21
|
+
const edge = viewport === "phone" ? MENU_GEOMETRY.edgePhone : MENU_GEOMETRY.edgeDesktop;
|
|
22
|
+
return edge + MENU_GEOMETRY.ring;
|
|
23
|
+
}
|
|
24
|
+
export function switchInsetCss(viewport) {
|
|
25
|
+
const px = switchInsetPx(viewport);
|
|
26
|
+
return { right: `${px}px`, bottom: `calc(${px}px + env(safe-area-inset-bottom, 0px))` };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=geometry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geometry.js","sourceRoot":"","sources":["../../../jsr/components/vibe-menu/geometry.ts"],"names":[],"mappings":"AA+BA,MAAM,CAAC,MAAM,aAAa,GAAiB,MAAM,CAAC,MAAM,CAAC;IACvD,WAAW,EAAE,EAAE;IACf,SAAS,EAAE,EAAE;IACb,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,GAAG;IACT,SAAS,EAAE,EAAE;IACb,aAAa,EAAE,EAAE;IACjB,IAAI,EAAE,CAAC;IACP,UAAU,EAAE,EAAE;IACd,aAAa,EAAE,GAAG;IAClB,cAAc,EAAE,GAAG;IACnB,MAAM,EAAE,GAAG;CACZ,CAAC,CAAC;AAIH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,OAAO,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACtE,CAAC;AAKD,MAAM,UAAU,aAAa,CAAC,QAAsB;IAClD,MAAM,IAAI,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC;IACxF,OAAO,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AACnC,CAAC;AAGD,MAAM,UAAU,cAAc,CAAC,QAAsB;IACnD,MAAM,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,wCAAwC,EAAE,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export * from "./menu-state.js";
|
|
2
|
+
export * from "./motion.js";
|
|
3
|
+
export * from "./moments.js";
|
|
4
|
+
export * from "./code-tabs.js";
|
|
5
|
+
export * from "./open-resolver.js";
|
|
6
|
+
export * from "./geometry.js";
|
|
7
|
+
export * from "./vibe-menu.styles.js";
|
|
8
|
+
export * from "./parts/Glyph.js";
|
|
9
|
+
export * from "./parts/Row.js";
|
|
10
|
+
export * from "./parts/ActionPill.js";
|
|
11
|
+
export * from "./parts/DoneButton.js";
|
|
12
|
+
export * from "./parts/BackRow.js";
|
|
13
|
+
export * from "./parts/Chip.js";
|
|
14
|
+
export * from "./parts/Composer.js";
|
|
15
|
+
export * from "./parts/use-composer-draft.js";
|
|
16
|
+
export * from "./parts/MomentLine.js";
|
|
17
|
+
export * from "./parts/AccessToggle.js";
|
|
18
|
+
export * from "./parts/GrantControls.js";
|
|
19
|
+
export * from "./parts/MemberRow.js";
|
|
20
|
+
export * from "./shell/shell.styles.js";
|
|
21
|
+
export * from "./parts/SectionStrip.js";
|
|
22
|
+
export * from "./parts/VibesSwitchGlass.js";
|
|
23
|
+
export * from "./shell/useMenuSequencer.js";
|
|
24
|
+
export * from "./parts/MenuCard.js";
|
|
25
|
+
export * from "./shell/VibeMenuShell.js";
|
|
26
|
+
export * from "./slices.js";
|
|
27
|
+
export * from "./copy.js";
|
|
28
|
+
export * from "./use-remix-hint.js";
|
|
29
|
+
export * from "./fixtures.js";
|
|
30
|
+
export * from "./cards/CodeModeWorkspace.js";
|
|
31
|
+
export * from "./cards/HomeCard.js";
|
|
32
|
+
export * from "./cards/AccountCard.js";
|
|
33
|
+
export * from "./cards/CodeCard.js";
|
|
34
|
+
export * from "./cards/ShareCard.js";
|
|
35
|
+
export * from "./cards/share-copy.js";
|
|
36
|
+
export * from "./cards/share-actions.js";
|
|
37
|
+
export * from "./cards/share-parts.js";
|
|
38
|
+
export * from "./cards/share-card.styles.js";
|
|
39
|
+
export * from "./share-fixtures.js";
|
|
40
|
+
export * from "./cards/ShareDrills.js";
|
|
41
|
+
export * from "./cards/ShareLinkRows.js";
|
|
42
|
+
export * from "./VibeMenu.js";
|