@vibes.diy/base 14.3.20 → 14.3.22
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
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { useState } from "react";
|
|
3
|
-
const THUMB_WIDTH = 76;
|
|
4
|
-
const LIST_MAX_HEIGHT = 340;
|
|
5
|
-
export function RecentVibesList(props) {
|
|
6
|
-
const { items, loading } = props;
|
|
7
|
-
const emptyText = props.emptyText ?? "No vibes yet.";
|
|
8
|
-
if (items.length === 0) {
|
|
9
|
-
return (React.createElement("div", { "data-testid": "recent-vibes-list", style: { padding: "4px 0 8px" } },
|
|
10
|
-
React.createElement("div", { className: "text-light-secondary dark:text-dark-secondary text-sm", style: { padding: "16px 4px" } }, loading ? "Loading…" : emptyText)));
|
|
11
|
-
}
|
|
12
|
-
return (React.createElement("div", { "data-testid": "recent-vibes-list", style: { padding: "4px 0 8px" } },
|
|
13
|
-
React.createElement("div", { "data-testid": "recent-vibes-rows", style: { display: "flex", flexDirection: "column", gap: 8, maxHeight: LIST_MAX_HEIGHT, overflowY: "auto" } }, items.map((item) => (React.createElement(Row, { key: item.id, item: item, onOpen: props.onOpenVibe, onTogglePin: props.onTogglePin }))))));
|
|
14
|
-
}
|
|
15
|
-
const STATUS_WORD = {
|
|
16
|
-
draft: "Draft",
|
|
17
|
-
published: "Published",
|
|
18
|
-
unpublished: "Unpublished",
|
|
19
|
-
};
|
|
20
|
-
const STATUS_VERB = {
|
|
21
|
-
draft: "Edited",
|
|
22
|
-
published: "Updated",
|
|
23
|
-
unpublished: "Taken down",
|
|
24
|
-
};
|
|
25
|
-
function statusLine(item) {
|
|
26
|
-
const rel = item.updatedLabel !== undefined && item.updatedLabel !== "" ? item.updatedLabel : undefined;
|
|
27
|
-
if (item.status === undefined)
|
|
28
|
-
return rel === undefined ? undefined : `Updated ${rel}`;
|
|
29
|
-
const word = STATUS_WORD[item.status];
|
|
30
|
-
if (rel === undefined)
|
|
31
|
-
return word;
|
|
32
|
-
return `${word} | ${STATUS_VERB[item.status]} ${rel}`;
|
|
33
|
-
}
|
|
34
|
-
function Row({ item, onOpen, onTogglePin, }) {
|
|
35
|
-
const name = item.title ?? item.appSlug;
|
|
36
|
-
const line = statusLine(item);
|
|
37
|
-
return (React.createElement("div", { "data-testid": "recent-vibes-row", style: { display: "flex", alignItems: "center", gap: 6 } },
|
|
38
|
-
React.createElement("button", { type: "button", "data-testid": "recent-vibes-row-open", "aria-label": `Open ${name}`, onClick: () => onOpen?.(item), className: "text-light-primary dark:text-dark-primary", style: {
|
|
39
|
-
display: "flex",
|
|
40
|
-
alignItems: "center",
|
|
41
|
-
gap: 10,
|
|
42
|
-
flex: 1,
|
|
43
|
-
minWidth: 0,
|
|
44
|
-
background: "none",
|
|
45
|
-
border: "none",
|
|
46
|
-
padding: 0,
|
|
47
|
-
cursor: "pointer",
|
|
48
|
-
textAlign: "left",
|
|
49
|
-
} },
|
|
50
|
-
React.createElement(Thumb, { item: item }),
|
|
51
|
-
React.createElement("span", { style: { display: "flex", flexDirection: "column", minWidth: 0, gap: 2 } },
|
|
52
|
-
React.createElement("span", { style: { fontSize: 13, fontWeight: 700, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" } }, name),
|
|
53
|
-
line !== undefined && (React.createElement("span", { "data-testid": "recent-vibes-status", className: "text-light-secondary dark:text-dark-secondary", style: { fontSize: 11, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" } }, line)))),
|
|
54
|
-
onTogglePin !== undefined && React.createElement(PinButton, { item: item, name: name, onTogglePin: onTogglePin })));
|
|
55
|
-
}
|
|
56
|
-
function PinButton({ item, name, onTogglePin, }) {
|
|
57
|
-
const [hovered, setHovered] = useState(false);
|
|
58
|
-
const pinned = item.pinned === true;
|
|
59
|
-
return (React.createElement("button", { type: "button", "data-testid": "recent-vibes-pin", "data-pinned": pinned ? "true" : "false", "aria-label": `${pinned ? "Unpin" : "Pin"} ${name}`, "aria-pressed": pinned, onClick: () => onTogglePin(item), onMouseEnter: () => setHovered(true), onMouseLeave: () => setHovered(false), onFocus: () => setHovered(true), onBlur: () => setHovered(false), className: "text-light-primary dark:text-dark-primary", style: {
|
|
60
|
-
display: "flex",
|
|
61
|
-
alignItems: "center",
|
|
62
|
-
justifyContent: "center",
|
|
63
|
-
flexShrink: 0,
|
|
64
|
-
width: 28,
|
|
65
|
-
height: 28,
|
|
66
|
-
background: "none",
|
|
67
|
-
border: "none",
|
|
68
|
-
padding: 0,
|
|
69
|
-
cursor: "pointer",
|
|
70
|
-
opacity: pinned || hovered ? 1 : 0.4,
|
|
71
|
-
} },
|
|
72
|
-
React.createElement(PushpinGlyph, { filled: pinned })));
|
|
73
|
-
}
|
|
74
|
-
function PushpinGlyph({ filled }) {
|
|
75
|
-
return (React.createElement("svg", { xmlns: "http://www.w3.org/2000/svg", width: 14, height: 14, viewBox: "0 0 8 8", fill: "none", "aria-hidden": true },
|
|
76
|
-
filled && (React.createElement("path", { fill: "currentColor", d: "M7.154 2.225 5.774.845A.753.753 0 0 0 4.63.942L3.488 2.538a.77.77 0 0 1-.613.337h-.937c-.686 0-1.105.94-.607 1.439l2.355 2.355c.499.498 1.439.079 1.439-.606v-.938c0-.243.139-.471.337-.613l1.597-1.141a.753.753 0 0 0 .095-1.146" })),
|
|
77
|
-
React.createElement("path", { stroke: "currentColor", strokeWidth: 0.6, strokeLinecap: "round", strokeLinejoin: "round", d: "M2.509 5.491.625 7.375m5.15-6.53 1.38 1.38c.329.33.283.875-.096 1.146L5.462 4.512a.77.77 0 0 0-.337.613v.938c0 .685-.94 1.104-1.439.606L1.331 4.314c-.498-.499-.079-1.439.607-1.439h.937a.77.77 0 0 0 .613-.337L4.629.941A.753.753 0 0 1 5.775.846" })));
|
|
78
|
-
}
|
|
79
|
-
function Thumb({ item }) {
|
|
80
|
-
const [imageFailed, setImageFailed] = useState(false);
|
|
81
|
-
const showImage = item.screenshotUrl !== undefined && item.screenshotUrl !== "" && imageFailed === false;
|
|
82
|
-
return (React.createElement("span", { className: "bg-light-background-01 dark:bg-dark-background-01 border-light-decorative-01 dark:border-dark-decorative-01", style: {
|
|
83
|
-
display: "flex",
|
|
84
|
-
alignItems: "center",
|
|
85
|
-
justifyContent: "center",
|
|
86
|
-
position: "relative",
|
|
87
|
-
width: THUMB_WIDTH,
|
|
88
|
-
aspectRatio: "16 / 10",
|
|
89
|
-
flexShrink: 0,
|
|
90
|
-
borderRadius: 8,
|
|
91
|
-
borderWidth: 1.5,
|
|
92
|
-
borderStyle: "solid",
|
|
93
|
-
overflow: "hidden",
|
|
94
|
-
} },
|
|
95
|
-
React.createElement("span", { "aria-hidden": true, className: "text-light-secondary dark:text-dark-secondary", style: {
|
|
96
|
-
fontSize: 8,
|
|
97
|
-
fontWeight: 700,
|
|
98
|
-
textTransform: "uppercase",
|
|
99
|
-
letterSpacing: "0.12em",
|
|
100
|
-
opacity: 0.55,
|
|
101
|
-
padding: "0 4px",
|
|
102
|
-
textAlign: "center",
|
|
103
|
-
} }, item.appSlug.slice(0, 12)),
|
|
104
|
-
showImage && (React.createElement("img", { src: item.screenshotUrl, alt: `Screenshot of ${item.title ?? item.appSlug}`, loading: "lazy", decoding: "async", onError: () => setImageFailed(true), style: { position: "absolute", inset: 0, width: "100%", height: "100%", objectFit: "cover" } }))));
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=RecentVibesList.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecentVibesList.js","sourceRoot":"","sources":["../../jsr/components/RecentVibesList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
export interface RecommendedItem {
|
|
3
|
-
readonly id: string;
|
|
4
|
-
readonly ownerHandle: string;
|
|
5
|
-
readonly appSlug: string;
|
|
6
|
-
readonly section: "chip-link" | "curated" | "owner" | "platform" | "similar";
|
|
7
|
-
readonly title?: string;
|
|
8
|
-
readonly iconUrl?: string;
|
|
9
|
-
readonly screenshotUrl?: string;
|
|
10
|
-
}
|
|
11
|
-
export interface RecommendedViewProps {
|
|
12
|
-
readonly items: readonly RecommendedItem[];
|
|
13
|
-
readonly loading?: boolean;
|
|
14
|
-
readonly label?: string;
|
|
15
|
-
readonly emptyText?: string;
|
|
16
|
-
readonly isOwner?: boolean;
|
|
17
|
-
readonly onOpenVibe?: (item: RecommendedItem) => void;
|
|
18
|
-
readonly onAddCurated?: (ownerHandle: string, appSlug: string) => Promise<void>;
|
|
19
|
-
readonly onRemoveCurated?: (id: string) => void;
|
|
20
|
-
readonly onMuteSuggestion?: (item: RecommendedItem) => void;
|
|
21
|
-
}
|
|
22
|
-
export declare function RecommendedView(props: RecommendedViewProps): React.JSX.Element;
|
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { useState } from "react";
|
|
3
|
-
import { HOME_BRAND_FONT } from "./homeBrandFont.js";
|
|
4
|
-
const NEAR_BLACK = "var(--vibes-near-black, #1a1a1a)";
|
|
5
|
-
const CREAM = "#FFFEF0";
|
|
6
|
-
const GRID_MAX_HEIGHT = 360;
|
|
7
|
-
export function RecommendedView(props) {
|
|
8
|
-
const { items, loading, isOwner } = props;
|
|
9
|
-
const label = props.label ?? "Recommended vibes";
|
|
10
|
-
const emptyText = props.emptyText ?? "Nothing to recommend yet.";
|
|
11
|
-
const [adding, setAdding] = useState(false);
|
|
12
|
-
const [draft, setDraft] = useState("");
|
|
13
|
-
const [error, setError] = useState(undefined);
|
|
14
|
-
const [busy, setBusy] = useState(false);
|
|
15
|
-
const submitAdd = async () => {
|
|
16
|
-
const m = /^\s*@?([a-z0-9-]+)\s*\/\s*([a-z0-9-]+)\s*$/i.exec(draft);
|
|
17
|
-
if (!m) {
|
|
18
|
-
setError("Use the form handle/app-slug");
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
setBusy(true);
|
|
22
|
-
setError(undefined);
|
|
23
|
-
try {
|
|
24
|
-
await props.onAddCurated?.(m[1], m[2]);
|
|
25
|
-
setDraft("");
|
|
26
|
-
setAdding(false);
|
|
27
|
-
}
|
|
28
|
-
catch (e) {
|
|
29
|
-
setError(e instanceof Error ? e.message : "Couldn’t add that vibe");
|
|
30
|
-
}
|
|
31
|
-
setBusy(false);
|
|
32
|
-
};
|
|
33
|
-
return (React.createElement("div", { "data-testid": "recommended-view", style: { padding: "4px 0 8px" } },
|
|
34
|
-
label !== "" && (React.createElement("div", { className: "text-light-secondary dark:text-dark-secondary", style: { fontSize: 12, fontWeight: 600, margin: "0 2px 8px", fontFamily: HOME_BRAND_FONT } }, label)),
|
|
35
|
-
React.createElement("div", { "data-testid": "recommended-grid", style: {
|
|
36
|
-
display: "grid",
|
|
37
|
-
gridTemplateColumns: "1fr 1fr",
|
|
38
|
-
gap: 10,
|
|
39
|
-
alignContent: "start",
|
|
40
|
-
maxHeight: GRID_MAX_HEIGHT,
|
|
41
|
-
overflowY: "auto",
|
|
42
|
-
padding: "8px 8px 8px 4px",
|
|
43
|
-
} },
|
|
44
|
-
isOwner &&
|
|
45
|
-
(adding ? (React.createElement("form", { onSubmit: (e) => {
|
|
46
|
-
e.preventDefault();
|
|
47
|
-
void submitAdd();
|
|
48
|
-
}, style: { gridColumn: "1 / -1", display: "flex", flexDirection: "column", gap: 4 } },
|
|
49
|
-
React.createElement("input", { autoFocus: true, "aria-label": "Vibe to feature (handle/app-slug)", placeholder: "handle/app-slug", value: draft, disabled: busy, onChange: (e) => setDraft(e.target.value), className: "text-sm", style: {
|
|
50
|
-
width: "100%",
|
|
51
|
-
borderRadius: 8,
|
|
52
|
-
border: "1px solid var(--color-light-decorative-01, #ddd)",
|
|
53
|
-
background: "var(--color-light-background-01, #f5f5f5)",
|
|
54
|
-
color: "var(--color-light-primary, #333)",
|
|
55
|
-
padding: "6px 8px",
|
|
56
|
-
} }),
|
|
57
|
-
React.createElement("div", { style: { display: "flex", gap: 4 } },
|
|
58
|
-
React.createElement("button", { type: "submit", disabled: busy, className: "text-xs font-semibold", style: {
|
|
59
|
-
borderRadius: 6,
|
|
60
|
-
border: "none",
|
|
61
|
-
background: "var(--vibes-blue, #3b82f6)",
|
|
62
|
-
color: "#fff",
|
|
63
|
-
padding: "4px 10px",
|
|
64
|
-
cursor: busy ? "default" : "pointer",
|
|
65
|
-
opacity: busy ? 0.6 : 1,
|
|
66
|
-
} }, "Feature"),
|
|
67
|
-
React.createElement("button", { type: "button", disabled: busy, onClick: () => {
|
|
68
|
-
setAdding(false);
|
|
69
|
-
setError(undefined);
|
|
70
|
-
}, className: "text-xs", style: {
|
|
71
|
-
borderRadius: 6,
|
|
72
|
-
border: "none",
|
|
73
|
-
background: "transparent",
|
|
74
|
-
cursor: "pointer",
|
|
75
|
-
padding: "4px 6px",
|
|
76
|
-
} }, "Cancel")),
|
|
77
|
-
error && (React.createElement("div", { role: "alert", className: "text-xs", style: { color: "#dc2626" } }, error)))) : (React.createElement("button", { type: "button", "aria-label": "Feature a vibe", title: "Feature a vibe at the front of this list", onClick: () => setAdding(true), style: {
|
|
78
|
-
width: "100%",
|
|
79
|
-
aspectRatio: "16 / 10",
|
|
80
|
-
borderRadius: 12,
|
|
81
|
-
border: "2px dashed var(--color-light-decorative-01, #ccc)",
|
|
82
|
-
background: "transparent",
|
|
83
|
-
color: "var(--color-light-secondary, #888)",
|
|
84
|
-
fontSize: 26,
|
|
85
|
-
lineHeight: 1,
|
|
86
|
-
cursor: "pointer",
|
|
87
|
-
} }, "+"))),
|
|
88
|
-
items.map((item) => (React.createElement(Tile, { key: item.id, item: item, onOpen: props.onOpenVibe, onRemove: isOwner !== true
|
|
89
|
-
? undefined
|
|
90
|
-
: item.section === "curated"
|
|
91
|
-
? props.onRemoveCurated && (() => props.onRemoveCurated?.(item.id))
|
|
92
|
-
: props.onMuteSuggestion && (() => props.onMuteSuggestion?.(item)), removeLabel: item.section === "curated" ? "Remove from recommendations" : "Hide from recommendations" }))),
|
|
93
|
-
loading !== true && items.length === 0 && (React.createElement("div", { className: "text-light-secondary dark:text-dark-secondary text-sm", style: { gridColumn: "1 / -1", padding: "16px 4px" } }, emptyText)),
|
|
94
|
-
loading && items.length === 0 && (React.createElement("div", { className: "text-light-secondary dark:text-dark-secondary text-sm", style: { gridColumn: "1 / -1", padding: "16px 4px" } }, "Loading\u2026")))));
|
|
95
|
-
}
|
|
96
|
-
function Tile({ item, onOpen, onRemove, removeLabel, }) {
|
|
97
|
-
const name = item.title ?? item.appSlug;
|
|
98
|
-
const [imageFailed, setImageFailed] = useState(false);
|
|
99
|
-
return (React.createElement("div", { "data-testid": "recommended-tile", "data-section": item.section, style: { position: "relative", width: "100%" } },
|
|
100
|
-
React.createElement("button", { type: "button", "aria-label": `Open ${name}`, onClick: () => onOpen?.(item), style: { display: "block", width: "100%", background: "none", border: "none", padding: 0, cursor: "pointer" } },
|
|
101
|
-
React.createElement("div", { style: {
|
|
102
|
-
overflow: "hidden",
|
|
103
|
-
borderRadius: 12,
|
|
104
|
-
border: `2px solid ${NEAR_BLACK}`,
|
|
105
|
-
background: CREAM,
|
|
106
|
-
color: NEAR_BLACK,
|
|
107
|
-
boxShadow: `2px 2px 0 ${NEAR_BLACK}`,
|
|
108
|
-
} },
|
|
109
|
-
React.createElement("div", { style: { position: "relative", width: "100%", aspectRatio: "16 / 10", overflow: "hidden" } },
|
|
110
|
-
React.createElement("span", { "aria-hidden": true, style: {
|
|
111
|
-
position: "absolute",
|
|
112
|
-
inset: 0,
|
|
113
|
-
display: "flex",
|
|
114
|
-
alignItems: "center",
|
|
115
|
-
justifyContent: "center",
|
|
116
|
-
textAlign: "center",
|
|
117
|
-
padding: "0 8px",
|
|
118
|
-
fontSize: 11,
|
|
119
|
-
fontWeight: 700,
|
|
120
|
-
textTransform: "uppercase",
|
|
121
|
-
letterSpacing: "0.14em",
|
|
122
|
-
opacity: 0.2,
|
|
123
|
-
} }, item.appSlug.slice(0, 12)),
|
|
124
|
-
item.screenshotUrl && !imageFailed && (React.createElement("img", { src: item.screenshotUrl, alt: `Screenshot of ${name}`, loading: "lazy", decoding: "async", onError: () => setImageFailed(true), style: { position: "absolute", inset: 0, width: "100%", height: "100%", objectFit: "cover", objectPosition: "top" } })),
|
|
125
|
-
React.createElement("div", { style: {
|
|
126
|
-
position: "absolute",
|
|
127
|
-
bottom: 4,
|
|
128
|
-
left: 4,
|
|
129
|
-
display: "flex",
|
|
130
|
-
alignItems: "center",
|
|
131
|
-
gap: 4,
|
|
132
|
-
maxWidth: "calc(100% - 8px)",
|
|
133
|
-
padding: "2px 4px",
|
|
134
|
-
color: "#fff",
|
|
135
|
-
textShadow: "0 1px 3px rgba(0,0,0,0.9)",
|
|
136
|
-
} },
|
|
137
|
-
React.createElement("span", { "aria-hidden": true, style: {
|
|
138
|
-
display: "flex",
|
|
139
|
-
alignItems: "center",
|
|
140
|
-
justifyContent: "center",
|
|
141
|
-
width: 22,
|
|
142
|
-
height: 22,
|
|
143
|
-
flexShrink: 0,
|
|
144
|
-
overflow: "hidden",
|
|
145
|
-
borderRadius: 6,
|
|
146
|
-
filter: "drop-shadow(0 1px 2px rgba(0,0,0,0.7))",
|
|
147
|
-
} }, item.iconUrl ? (React.createElement("img", { src: item.iconUrl, alt: "", loading: "lazy", style: { width: "100%", height: "100%", objectFit: "cover" } })) : (React.createElement("span", { style: { fontSize: 8, fontWeight: 700, textTransform: "uppercase", opacity: 0.85 } }, item.appSlug.slice(0, 2)))),
|
|
148
|
-
React.createElement("span", { style: { display: "flex", flexDirection: "column", minWidth: 0, lineHeight: 1.15, textAlign: "left" } },
|
|
149
|
-
React.createElement("span", { style: { fontSize: 11, fontWeight: 700, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" } }, name),
|
|
150
|
-
React.createElement("span", { style: { fontSize: 9, opacity: 0.9, overflow: "hidden", textOverflow: "ellipsis", whiteSpace: "nowrap" } },
|
|
151
|
-
"@",
|
|
152
|
-
item.ownerHandle)))))),
|
|
153
|
-
onRemove && (React.createElement("button", { type: "button", "aria-label": `${removeLabel}: ${name}`, title: removeLabel, onClick: onRemove, style: {
|
|
154
|
-
position: "absolute",
|
|
155
|
-
top: -6,
|
|
156
|
-
right: -6,
|
|
157
|
-
width: 20,
|
|
158
|
-
height: 20,
|
|
159
|
-
borderRadius: "50%",
|
|
160
|
-
border: `1.5px solid ${NEAR_BLACK}`,
|
|
161
|
-
background: CREAM,
|
|
162
|
-
color: NEAR_BLACK,
|
|
163
|
-
fontSize: 12,
|
|
164
|
-
lineHeight: 1,
|
|
165
|
-
cursor: "pointer",
|
|
166
|
-
display: "flex",
|
|
167
|
-
alignItems: "center",
|
|
168
|
-
justifyContent: "center",
|
|
169
|
-
boxShadow: `1.5px 1.5px 0 ${NEAR_BLACK}`,
|
|
170
|
-
} }, "\u00D7"))));
|
|
171
|
-
}
|
|
172
|
-
//# sourceMappingURL=RecommendedView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RecommendedView.js","sourceRoot":"","sources":["../../jsr/components/RecommendedView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
export declare const REMIX_INVITE_TEXT = "Send a message to initiate a remix.";
|
|
3
|
-
export declare const REMIX_INVITE_EXPLAINER = "A remix is your own copy of the app's code that you can change without impacting the original.";
|
|
4
|
-
export declare function RemixInviteView(): React.JSX.Element;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { ChatMessageRow } from "./ChatMessageRow.js";
|
|
3
|
-
export const REMIX_INVITE_TEXT = "Send a message to initiate a remix.";
|
|
4
|
-
export const REMIX_INVITE_EXPLAINER = "A remix is your own copy of the app's code that you can change without impacting the original.";
|
|
5
|
-
export function RemixInviteView() {
|
|
6
|
-
return (React.createElement("div", { className: "mx-auto w-full max-w-5xl", "data-testid": "vibe-card-remix-invite" },
|
|
7
|
-
React.createElement(ChatMessageRow, { role: "ai", rowAttrs: { "data-message-role": "remix-invite" } },
|
|
8
|
-
React.createElement("p", { style: { margin: "0 0 0.5em" } }, REMIX_INVITE_TEXT),
|
|
9
|
-
React.createElement("p", { style: { margin: 0 } }, REMIX_INVITE_EXPLAINER))));
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=RemixInviteView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RemixInviteView.js","sourceRoot":"","sources":["../../jsr/components/RemixInviteView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AASrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,qCAAqC,CAAC;AACvE,MAAM,CAAC,MAAM,sBAAsB,GACjC,gGAAgG,CAAC;AAEnG,MAAM,UAAU,eAAe;IAC7B,OAAO,CACL,6BAAK,SAAS,EAAC,0BAA0B,iBAAa,wBAAwB;QAC5E,oBAAC,cAAc,IAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,cAAc,EAAE;YACzE,2BAAG,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAG,iBAAiB,CAAK;YAC1D,2BAAG,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAG,sBAAsB,CAAK,CACtC,CACb,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export interface SeedDataOfferProps {
|
|
3
|
-
readonly onAdd: () => void;
|
|
4
|
-
readonly onDismiss: () => void;
|
|
5
|
-
readonly busy?: boolean;
|
|
6
|
-
readonly error?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare function SeedDataOffer({ onAdd, onDismiss, busy, error }: SeedDataOfferProps): React.JSX.Element;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export function SeedDataOffer({ onAdd, onDismiss, busy = false, error }) {
|
|
3
|
-
return (React.createElement("div", { className: "flex flex-col gap-1", "data-testid": "seed-data-offer" },
|
|
4
|
-
React.createElement("div", { className: "flex items-stretch gap-1.5" },
|
|
5
|
-
React.createElement("button", { type: "button", "data-testid": "seed-data-offer-add", disabled: busy, onClick: onAdd, className: "flex min-w-0 flex-1 items-center gap-2 rounded-md px-3 py-2 text-left text-sm font-medium transition-colors " +
|
|
6
|
-
"border border-sky-300 bg-sky-50 text-sky-900 hover:bg-sky-100 cursor-pointer disabled:cursor-default disabled:opacity-60 " +
|
|
7
|
-
"dark:border-sky-500/40 dark:bg-sky-500/10 dark:text-sky-100 dark:hover:bg-sky-500/20" },
|
|
8
|
-
React.createElement("span", { "aria-hidden": true, className: "shrink-0 text-sky-500 dark:text-sky-300" }, "\u25A6"),
|
|
9
|
-
React.createElement("span", { className: "min-w-0 flex-1" }, busy ? "Adding the example data…" : "This app came with example data — add it?")),
|
|
10
|
-
React.createElement("button", { type: "button", "aria-label": "Dismiss: add example data", "data-testid": "seed-data-offer-dismiss", onClick: onDismiss, className: "flex shrink-0 items-center justify-center rounded-md px-2 text-base leading-none transition-opacity cursor-pointer " +
|
|
11
|
-
"border border-sky-300 bg-sky-50 text-sky-700 opacity-60 hover:opacity-100 " +
|
|
12
|
-
"dark:border-sky-500/40 dark:bg-sky-500/10 dark:text-sky-300" }, "\u00D7")),
|
|
13
|
-
error === undefined ? null : (React.createElement("p", { className: "px-1 text-xs text-red-600 dark:text-red-400", "data-testid": "seed-data-offer-error" }, error))));
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=SeedDataOffer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SeedDataOffer.js","sourceRoot":"","sources":["../../jsr/components/SeedDataOffer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAgC1B,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,EAAsB;IACzF,OAAO,CACL,6BAAK,SAAS,EAAC,qBAAqB,iBAAa,iBAAiB;QAChE,6BAAK,SAAS,EAAC,4BAA4B;YACzC,gCACE,IAAI,EAAC,QAAQ,iBACD,qBAAqB,EACjC,QAAQ,EAAE,IAAI,EACd,OAAO,EAAE,KAAK,EACd,SAAS,EACP,8GAA8G;oBAC9G,2HAA2H;oBAC3H,sFAAsF;gBAGxF,mDAAkB,SAAS,EAAC,yCAAyC,aAE9D;gBACP,8BAAM,SAAS,EAAC,gBAAgB,IAAE,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,2CAA2C,CAAQ,CAClH;YACT,gCACE,IAAI,EAAC,QAAQ,gBACF,2BAA2B,iBAC1B,yBAAyB,EACrC,OAAO,EAAE,SAAS,EAClB,SAAS,EACP,qHAAqH;oBACrH,4EAA4E;oBAC5E,6DAA6D,aAIxD,CACL;QACL,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5B,2BAAG,SAAS,EAAC,6CAA6C,iBAAa,uBAAuB,IAC3F,KAAK,CACJ,CACL,CACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { type RecommendedViewProps } from "./RecommendedView.js";
|
|
3
|
-
type DiscoveryTab = "recommended" | "mine" | "memberships" | "account" | "subscription";
|
|
4
|
-
export interface SignedInDiscoveryViewProps extends RecommendedViewProps {
|
|
5
|
-
readonly accountSlug: string;
|
|
6
|
-
readonly accountDisplayName?: string;
|
|
7
|
-
readonly accountAvatarUrl?: string;
|
|
8
|
-
readonly onPickAvatar?: (file: File) => void | Promise<void>;
|
|
9
|
-
readonly settingsHref?: string;
|
|
10
|
-
readonly onOpenSettings?: () => void;
|
|
11
|
-
readonly initialTab?: DiscoveryTab;
|
|
12
|
-
readonly subscriptionPanel?: React.ReactNode;
|
|
13
|
-
readonly yourVibesPanel?: React.ReactNode;
|
|
14
|
-
readonly membershipsPanel?: React.ReactNode;
|
|
15
|
-
}
|
|
16
|
-
export declare function SignedInDiscoveryView(props: SignedInDiscoveryViewProps): React.JSX.Element;
|
|
17
|
-
export {};
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { useState } from "react";
|
|
3
|
-
import { SubTabStrip } from "./SubTabStrip.js";
|
|
4
|
-
import { RecommendedView } from "./RecommendedView.js";
|
|
5
|
-
import { AccountView } from "./AccountView.js";
|
|
6
|
-
export function SignedInDiscoveryView(props) {
|
|
7
|
-
const hasSubscription = props.subscriptionPanel != null;
|
|
8
|
-
const hasYourVibes = props.yourVibesPanel != null;
|
|
9
|
-
const hasMemberships = props.membershipsPanel != null;
|
|
10
|
-
const offered = {
|
|
11
|
-
recommended: true,
|
|
12
|
-
mine: hasYourVibes,
|
|
13
|
-
memberships: hasMemberships,
|
|
14
|
-
account: true,
|
|
15
|
-
subscription: hasSubscription,
|
|
16
|
-
};
|
|
17
|
-
const requested = props.initialTab ?? "recommended";
|
|
18
|
-
const seedTab = offered[requested] ? requested : "recommended";
|
|
19
|
-
const [tab, setTab] = useState(seedTab);
|
|
20
|
-
return (React.createElement("div", { "data-testid": "signed-in-discovery-view" },
|
|
21
|
-
React.createElement(SubTabStrip, { tabs: [
|
|
22
|
-
{ key: "recommended", label: "Recommended" },
|
|
23
|
-
...(hasYourVibes ? [{ key: "mine", label: "Your vibes" }] : []),
|
|
24
|
-
...(hasMemberships ? [{ key: "memberships", label: "Memberships" }] : []),
|
|
25
|
-
{ key: "account", label: "Your account" },
|
|
26
|
-
...(hasSubscription ? [{ key: "subscription", label: "Subscription" }] : []),
|
|
27
|
-
], active: tab, onSelect: (k) => setTab(k), ariaLabel: "Browse recommended vibes, your own vibes and memberships, view your account, or manage your subscription" }),
|
|
28
|
-
tab === "subscription" && hasSubscription ? (React.createElement("div", { "data-testid": "subscription-tab-body" }, props.subscriptionPanel)) : tab === "mine" && hasYourVibes ? (React.createElement("div", { "data-testid": "your-vibes-tab-body" }, props.yourVibesPanel)) : tab === "memberships" && hasMemberships ? (React.createElement("div", { "data-testid": "memberships-tab-body" }, props.membershipsPanel)) : tab === "account" ? (React.createElement(AccountView, { slug: props.accountSlug, displayName: props.accountDisplayName, avatarUrl: props.accountAvatarUrl, onPickFile: props.onPickAvatar, settingsHref: props.settingsHref, onOpenSettings: props.onOpenSettings })) : (React.createElement(RecommendedView, { items: props.items, loading: props.loading, label: "", isOwner: props.isOwner, onOpenVibe: props.onOpenVibe, onAddCurated: props.onAddCurated, onRemoveCurated: props.onRemoveCurated, onMuteSuggestion: props.onMuteSuggestion }))));
|
|
29
|
-
}
|
|
30
|
-
//# sourceMappingURL=SignedInDiscoveryView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignedInDiscoveryView.js","sourceRoot":"","sources":["../../jsr/components/SignedInDiscoveryView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { type RecommendedViewProps } from "./RecommendedView.js";
|
|
3
|
-
export interface SignedOutDiscoveryViewProps extends RecommendedViewProps {
|
|
4
|
-
readonly onSignIn?: () => void;
|
|
5
|
-
readonly initialTab?: "recommended" | "account";
|
|
6
|
-
}
|
|
7
|
-
export declare function SignedOutDiscoveryView(props: SignedOutDiscoveryViewProps): React.JSX.Element;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import { useState } from "react";
|
|
3
|
-
import { SubTabStrip } from "./SubTabStrip.js";
|
|
4
|
-
import { RecommendedView } from "./RecommendedView.js";
|
|
5
|
-
import { AccountSignInView } from "./AccountSignInView.js";
|
|
6
|
-
export function SignedOutDiscoveryView(props) {
|
|
7
|
-
const [tab, setTab] = useState(props.initialTab ?? "account");
|
|
8
|
-
return (React.createElement("div", { "data-testid": "signed-out-discovery-view" },
|
|
9
|
-
React.createElement(SubTabStrip, { tabs: [
|
|
10
|
-
{ key: "recommended", label: "Recommended" },
|
|
11
|
-
{ key: "account", label: "Your account" },
|
|
12
|
-
], active: tab, onSelect: (k) => setTab(k), ariaLabel: "Sign in or browse recommended vibes" }),
|
|
13
|
-
tab === "account" ? (React.createElement(AccountSignInView, { onSignIn: props.onSignIn })) : (React.createElement(RecommendedView, { items: props.items, loading: props.loading, label: "", onOpenVibe: props.onOpenVibe }))));
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=SignedOutDiscoveryView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignedOutDiscoveryView.js","sourceRoot":"","sources":["../../jsr/components/SignedOutDiscoveryView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAkB3D,MAAM,UAAU,sBAAsB,CAAC,KAAkC;IACvE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAA4B,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;IAEzF,OAAO,CACL,4CAAiB,2BAA2B;QAC1C,oBAAC,WAAW,IACV,IAAI,EAAE;gBACJ,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;gBAC5C,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE;aAC1C,EACD,MAAM,EAAE,GAAG,EACX,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAA8B,CAAC,EACvD,SAAS,EAAC,qCAAqC,GAC/C;QACD,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,CACnB,oBAAC,iBAAiB,IAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,GAAI,CAChD,CAAC,CAAC,CAAC,CAEF,oBAAC,eAAe,IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAC,EAAE,EAAC,UAAU,EAAE,KAAK,CAAC,UAAU,GAAI,CACvG,CACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
export function SignedOutSavePrompt({ onSignIn }) {
|
|
3
|
-
return (React.createElement(React.Fragment, null,
|
|
4
|
-
React.createElement("style", null, `
|
|
5
|
-
@keyframes vibes-save-arrow-nudge {
|
|
6
|
-
0%, 100% { transform: translate(0, 0); }
|
|
7
|
-
50% { transform: translate(2px, -2px); }
|
|
8
|
-
}
|
|
9
|
-
.vibes-save-arrow { animation: vibes-save-arrow-nudge 1.4s ease-in-out infinite; }
|
|
10
|
-
@media (prefers-reduced-motion: reduce) {
|
|
11
|
-
.vibes-save-arrow { animation: none; }
|
|
12
|
-
}
|
|
13
|
-
`),
|
|
14
|
-
React.createElement("button", { type: "button", onClick: onSignIn, "aria-label": "Sign in and keep what you make, on every device", style: {
|
|
15
|
-
display: "flex",
|
|
16
|
-
width: "100%",
|
|
17
|
-
alignItems: "center",
|
|
18
|
-
justifyContent: "space-between",
|
|
19
|
-
gap: 8,
|
|
20
|
-
background: "rgba(59,130,246,0.08)",
|
|
21
|
-
border: "1px solid var(--vibes-blue, #3b82f6)",
|
|
22
|
-
borderRadius: 10,
|
|
23
|
-
padding: "8px 12px",
|
|
24
|
-
fontSize: 13,
|
|
25
|
-
color: "var(--vibes-blue, #3b82f6)",
|
|
26
|
-
cursor: "pointer",
|
|
27
|
-
fontWeight: 500,
|
|
28
|
-
textAlign: "left",
|
|
29
|
-
} },
|
|
30
|
-
React.createElement("span", null, "Sign in and keep what you make, on every device."),
|
|
31
|
-
React.createElement("span", { className: "vibes-save-arrow", "aria-hidden": "true", style: { fontSize: 16, lineHeight: 1 } }, "\u2197"))));
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=SignedOutSavePrompt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SignedOutSavePrompt.js","sourceRoot":"","sources":["../../jsr/components/SignedOutSavePrompt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAkB/B,MAAM,UAAU,mBAAmB,CAAC,EAAE,QAAQ,EAAsC;IAClF,OAAO,CACL;QACE,mCAAQ;;;;;;;;;OASP,CAAS;QACV,gCACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,gBACN,iDAAiD,EAC5D,KAAK,EAAE;gBACL,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE,MAAM;gBACb,UAAU,EAAE,QAAQ;gBACpB,cAAc,EAAE,eAAe;gBAC/B,GAAG,EAAE,CAAC;gBACN,UAAU,EAAE,uBAAuB;gBACnC,MAAM,EAAE,sCAAsC;gBAC9C,YAAY,EAAE,EAAE;gBAChB,OAAO,EAAE,UAAU;gBACnB,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,4BAA4B;gBACnC,MAAM,EAAE,SAAS;gBACjB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,MAAM;aAClB;YAED,qFAA6D;YAC7D,8BAAM,SAAS,EAAC,kBAAkB,iBAAa,MAAM,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,aAErF,CACA,CACR,CACJ,CAAC;AACJ,CAAC"}
|