@vibes.diy/base 2.6.5 → 2.6.8
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/OptionButtons.d.ts +2 -1
- package/components/OptionButtons.js +2 -2
- package/components/OptionButtons.js.map +1 -1
- package/components/SharePanelView.d.ts +22 -0
- package/components/SharePanelView.js +40 -0
- package/components/SharePanelView.js.map +1 -0
- package/components/UnifiedVibeCard.d.ts +25 -0
- package/components/UnifiedVibeCard.js +148 -0
- package/components/UnifiedVibeCard.js.map +1 -0
- package/components/index.d.ts +2 -0
- package/components/index.js +2 -0
- package/components/index.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -3,7 +3,8 @@ interface OptionButtonsProps {
|
|
|
3
3
|
readonly options: readonly string[];
|
|
4
4
|
readonly disabled?: boolean;
|
|
5
5
|
readonly isFirst?: boolean;
|
|
6
|
+
readonly firstMessage?: string;
|
|
6
7
|
readonly onSelect?: (option: string) => boolean | undefined | Promise<boolean | undefined>;
|
|
7
8
|
}
|
|
8
|
-
export declare function OptionButtons({ options, disabled, isFirst, onSelect }: OptionButtonsProps): React.JSX.Element | null;
|
|
9
|
+
export declare function OptionButtons({ options, disabled, isFirst, firstMessage, onSelect }: OptionButtonsProps): React.JSX.Element | null;
|
|
9
10
|
export default OptionButtons;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
export function OptionButtons({ options, disabled, isFirst, onSelect }) {
|
|
2
|
+
export function OptionButtons({ options, disabled, isFirst, firstMessage, onSelect }) {
|
|
3
3
|
const [selected, setSelected] = React.useState(null);
|
|
4
4
|
const clearIfStillSelected = React.useCallback((option) => {
|
|
5
5
|
setSelected((current) => (current === option ? null : current));
|
|
@@ -37,7 +37,7 @@ export function OptionButtons({ options, disabled, isFirst, onSelect }) {
|
|
|
37
37
|
}
|
|
38
38
|
};
|
|
39
39
|
return (React.createElement("div", { className: "mt-3 flex flex-col gap-2", "data-message-role": "brainstorm-options" },
|
|
40
|
-
isFirst && (React.createElement("p", { className: "text-xs text-light-secondary dark:text-dark-secondary", "data-testid": "option-buttons-explainer" }, "These are optional. Pick one to suggest the next improvement, or type your own change.")),
|
|
40
|
+
isFirst && (React.createElement("p", { className: "text-xs text-light-secondary dark:text-dark-secondary", "data-testid": "option-buttons-explainer" }, firstMessage ?? "These are optional. Pick one to suggest the next improvement, or type your own change.")),
|
|
41
41
|
options.map((option) => {
|
|
42
42
|
const isPressed = selected === option;
|
|
43
43
|
return (React.createElement("button", { key: option, type: "button", disabled: locked, "aria-pressed": isPressed, onClick: () => handleClick(option), className: "flex w-full items-center justify-between gap-2 rounded-md px-3 py-2 text-left text-sm font-medium transition-colors " +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OptionButtons.js","sourceRoot":"","sources":["../../jsr/components/OptionButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"OptionButtons.js","sourceRoot":"","sources":["../../jsr/components/OptionButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AA6B1B,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAsB;IACtG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEpE,MAAM,oBAAoB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,MAAc,EAAE,EAAE;QAChE,WAAW,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC,EAAE,EAAE,CAAC,CAAC;IAIP,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,QAAQ;YAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAGtC,MAAM,MAAM,GAAG,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC;IAE7C,MAAM,WAAW,GAAG,CAAC,MAAc,EAAE,EAAE;QACrC,IAAI,MAAM;YAAE,OAAO;QACnB,WAAW,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;gBAC3B,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,MAAM,IAAI,YAAY,EAAE,CAAC;gBAC/E,KAAK,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;qBAC/B,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;oBACX,IAAI,EAAE,KAAK,KAAK;wBAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBACjD,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,EAAE;oBACV,oBAAoB,CAAC,MAAM,CAAC,CAAC;gBAC/B,CAAC,CAAC,CAAC;YACP,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAC,0BAA0B,uBAAmB,oBAAoB;QAC7E,OAAO,IAAI,CACV,2BAAG,SAAS,EAAC,uDAAuD,iBAAa,0BAA0B,IACxG,YAAY,IAAI,wFAAwF,CACvG,CACL;QACA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACtB,MAAM,SAAS,GAAG,QAAQ,KAAK,MAAM,CAAC;YACtC,OAAO,CACL,gCACE,GAAG,EAAE,MAAM,EACX,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,MAAM,kBACF,SAAS,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAClC,SAAS,EACP,sHAAsH;oBACtH,mEAAmE;oBACnE,oDAAoD;oBACpD,4CAA4C;oBAC5C,CAAC,MAAM;wBACL,CAAC,CAAC,2BAA2B;wBAC7B,CAAC,CAAC,8EAA8E,CAAC;gBAGrF,kCAAO,MAAM,CAAQ;gBACpB,SAAS,IAAI,CACZ,6CACc,gBAAgB,iBAChB,MAAM,EAClB,SAAS,EAAC,yFAAyF,GACnG,CACH,CACM,CACV,CAAC;QACJ,CAAC,CAAC,CACE,CACP,CAAC;AACJ,CAAC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export type ShareViewer = "anonymous" | "member" | "author";
|
|
3
|
+
export type ShareAccess = "public" | "request";
|
|
4
|
+
export interface ShareMember {
|
|
5
|
+
readonly handle: string;
|
|
6
|
+
readonly role?: "owner" | "editor" | "viewer";
|
|
7
|
+
readonly avatarUrl?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface SharePanelViewProps {
|
|
10
|
+
readonly url: string;
|
|
11
|
+
readonly copied?: boolean;
|
|
12
|
+
readonly onCopy?: () => void;
|
|
13
|
+
readonly onViewLive?: () => void;
|
|
14
|
+
readonly viewer: ShareViewer;
|
|
15
|
+
readonly members?: readonly ShareMember[];
|
|
16
|
+
readonly access?: ShareAccess;
|
|
17
|
+
readonly onChangeAccess?: (access: ShareAccess) => void;
|
|
18
|
+
readonly onSelectMember?: (member: ShareMember) => void;
|
|
19
|
+
readonly className?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function SharePanelView({ url, copied, onCopy, onViewLive, viewer, members, access, onChangeAccess, onSelectMember, className, }: SharePanelViewProps): React.JSX.Element;
|
|
22
|
+
export default SharePanelView;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { ViewerTagView } from "./ViewerTagView.js";
|
|
3
|
+
const ROSTER_TAG_STYLE = {
|
|
4
|
+
background: "var(--color-light-background-01, #eee)",
|
|
5
|
+
border: "1px solid var(--color-light-decorative-01, #ddd)",
|
|
6
|
+
color: "var(--color-light-primary, #333)",
|
|
7
|
+
fontSize: 13,
|
|
8
|
+
padding: "3px 10px 3px 4px",
|
|
9
|
+
};
|
|
10
|
+
export function SharePanelView({ url, copied, onCopy, onViewLive, viewer, members = [], access = "public", onChangeAccess, onSelectMember, className, }) {
|
|
11
|
+
const isAuthor = viewer === "author";
|
|
12
|
+
const showRoster = isAuthor || (viewer === "member" && access === "request");
|
|
13
|
+
const roster = [...members].sort((a, b) => Number(b.role === "owner") - Number(a.role === "owner"));
|
|
14
|
+
return (React.createElement("div", { className: `text-light-primary dark:text-dark-primary ${className ?? ""}`, style: { display: "flex", flexDirection: "column", gap: 14 } },
|
|
15
|
+
React.createElement("div", null,
|
|
16
|
+
React.createElement("div", { className: "rounded-md border border-light-decorative-01 dark:border-dark-decorative-01 py-1.5 pl-3 pr-1.5", style: { display: "flex", alignItems: "center", gap: 8 } },
|
|
17
|
+
React.createElement("span", { className: "flex-1 truncate text-sm" }, url),
|
|
18
|
+
React.createElement("button", { type: "button", onClick: onCopy, "aria-label": "Copy link", className: "shrink-0 rounded-[5px] border-2 border-[#1a1a1a] bg-blue-500 px-3 py-1 text-xs font-bold text-white transition-colors hover:bg-blue-600 active:translate-x-[2px] active:translate-y-[2px]" }, copied ? "Copied" : "Copy")),
|
|
19
|
+
React.createElement("button", { type: "button", onClick: onViewLive, className: "mt-1.5 text-xs font-medium text-blue-600 hover:underline dark:text-blue-400" }, "View live \u2197")),
|
|
20
|
+
isAuthor ? (React.createElement("div", null,
|
|
21
|
+
React.createElement("p", { className: "text-xs text-light-secondary dark:text-dark-secondary", style: { marginBottom: 6 } }, "Who can open it"),
|
|
22
|
+
React.createElement("div", { role: "radiogroup", "aria-label": "Who can open it", style: { display: "flex", gap: 6 } }, [
|
|
23
|
+
{ value: "public", label: "Anyone with the link" },
|
|
24
|
+
{ value: "request", label: "People you approve" },
|
|
25
|
+
].map((opt) => {
|
|
26
|
+
const active = opt.value === access;
|
|
27
|
+
return (React.createElement("button", { key: opt.value, type: "button", role: "radio", "aria-checked": active, onClick: () => onChangeAccess?.(opt.value), className: "flex-1 rounded-md border px-3 py-2 text-center text-xs font-medium transition-colors " +
|
|
28
|
+
(active
|
|
29
|
+
? "border-[#1a1a1a] bg-light-background-01 dark:bg-dark-background-01"
|
|
30
|
+
: "border-light-decorative-01 dark:border-dark-decorative-01 hover:bg-light-background-01 dark:hover:bg-dark-background-01") }, opt.label));
|
|
31
|
+
})))) : (React.createElement("p", { className: "text-xs text-light-secondary dark:text-dark-secondary" }, access === "public" ? "Anyone with the link can open this vibe." : "Only approved members can access this vibe.")),
|
|
32
|
+
showRoster && (React.createElement("div", null,
|
|
33
|
+
React.createElement("p", { className: "text-xs text-light-secondary dark:text-dark-secondary", style: { marginBottom: 6 } }, "In this vibe"),
|
|
34
|
+
React.createElement("div", { style: { display: "flex", flexWrap: "wrap", gap: 6 } }, roster.map((m) => {
|
|
35
|
+
const tag = (React.createElement(ViewerTagView, { slug: m.handle, displayName: `@${m.handle}`, avatarUrl: m.avatarUrl, style: ROSTER_TAG_STYLE }));
|
|
36
|
+
return isAuthor ? (React.createElement("button", { key: m.handle, type: "button", "aria-label": `Manage @${m.handle}`, onClick: () => onSelectMember?.(m), style: { background: "none", border: "none", padding: 0, cursor: "pointer" } }, tag)) : (React.createElement("span", { key: m.handle }, tag));
|
|
37
|
+
}))))));
|
|
38
|
+
}
|
|
39
|
+
export default SharePanelView;
|
|
40
|
+
//# sourceMappingURL=SharePanelView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SharePanelView.js","sourceRoot":"","sources":["../../jsr/components/SharePanelView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface UnifiedVibeCardProps {
|
|
3
|
+
appTitle: string;
|
|
4
|
+
appSlug?: string;
|
|
5
|
+
appIconUrl?: string;
|
|
6
|
+
chips?: readonly string[];
|
|
7
|
+
onSelectChip?: (chip: string) => void;
|
|
8
|
+
onSubmitOther?: (text: string) => void;
|
|
9
|
+
isOwner?: boolean;
|
|
10
|
+
handleSlug?: string;
|
|
11
|
+
handleAvatarUrl?: string;
|
|
12
|
+
onHome?: () => void;
|
|
13
|
+
onEdit?: () => void;
|
|
14
|
+
onShare?: () => void;
|
|
15
|
+
shareButtonRef?: React.Ref<HTMLButtonElement>;
|
|
16
|
+
onSignIn?: () => void;
|
|
17
|
+
isTwinkling?: boolean;
|
|
18
|
+
open?: boolean;
|
|
19
|
+
onOpenChange?: (open: boolean) => void;
|
|
20
|
+
body?: React.ReactNode;
|
|
21
|
+
selectedNav?: "edit" | "share";
|
|
22
|
+
className?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function UnifiedVibeCard(props: UnifiedVibeCardProps): React.JSX.Element;
|
|
25
|
+
export default UnifiedVibeCard;
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
|
+
import { VibesSwitch } from "./VibesSwitch.js";
|
|
3
|
+
import { OptionButtons } from "./OptionButtons.js";
|
|
4
|
+
import { ViewerTagView } from "./ViewerTagView.js";
|
|
5
|
+
export function UnifiedVibeCard(props) {
|
|
6
|
+
const { appTitle, appSlug, isTwinkling, open: controlledOpen, onOpenChange } = props;
|
|
7
|
+
const [internalOpen, setInternalOpen] = useState(false);
|
|
8
|
+
const open = controlledOpen ?? internalOpen;
|
|
9
|
+
const setOpen = (next) => {
|
|
10
|
+
if (controlledOpen === undefined)
|
|
11
|
+
setInternalOpen(next);
|
|
12
|
+
onOpenChange?.(next);
|
|
13
|
+
};
|
|
14
|
+
const [mounted, setMounted] = useState(open);
|
|
15
|
+
const [grown, setGrown] = useState(open);
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
let t;
|
|
18
|
+
if (open) {
|
|
19
|
+
setMounted(true);
|
|
20
|
+
t = setTimeout(() => setGrown(true), 10);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
setGrown(false);
|
|
24
|
+
t = setTimeout(() => setMounted(false), 240);
|
|
25
|
+
}
|
|
26
|
+
return () => clearTimeout(t);
|
|
27
|
+
}, [open]);
|
|
28
|
+
return (React.createElement(React.Fragment, null,
|
|
29
|
+
mounted && (React.createElement("div", { role: "dialog", "aria-label": "Vibe menu", className: props.className, style: {
|
|
30
|
+
position: "absolute",
|
|
31
|
+
left: 12,
|
|
32
|
+
right: 12,
|
|
33
|
+
bottom: 12,
|
|
34
|
+
borderRadius: 16,
|
|
35
|
+
maxHeight: "82%",
|
|
36
|
+
overflow: "hidden",
|
|
37
|
+
display: "flex",
|
|
38
|
+
flexDirection: "column",
|
|
39
|
+
background: "var(--color-light-background-00, #fff)",
|
|
40
|
+
border: "1px solid var(--vibes-near-black, #1a1a1a)",
|
|
41
|
+
boxShadow: "0 8px 40px rgba(0,0,0,0.45)",
|
|
42
|
+
transformOrigin: "bottom right",
|
|
43
|
+
transform: grown ? "scale(1)" : "scale(0)",
|
|
44
|
+
transition: "transform 0.24s cubic-bezier(0.34, 1.56, 0.64, 1)",
|
|
45
|
+
pointerEvents: grown ? "auto" : "none",
|
|
46
|
+
} },
|
|
47
|
+
React.createElement("div", { style: {
|
|
48
|
+
display: "flex",
|
|
49
|
+
flexDirection: "column",
|
|
50
|
+
minHeight: 0,
|
|
51
|
+
opacity: grown ? 1 : 0,
|
|
52
|
+
transition: grown ? "opacity 0.18s ease 0.14s" : "opacity 0.1s ease",
|
|
53
|
+
}, className: "text-light-primary dark:text-dark-primary" },
|
|
54
|
+
React.createElement("div", { style: { display: "flex", alignItems: "center", gap: 10, padding: "14px 14px 8px" } },
|
|
55
|
+
React.createElement("div", { "aria-hidden": true, style: {
|
|
56
|
+
width: 30,
|
|
57
|
+
height: 30,
|
|
58
|
+
borderRadius: 8,
|
|
59
|
+
flexShrink: 0,
|
|
60
|
+
overflow: "hidden",
|
|
61
|
+
background: "linear-gradient(160deg,#312e81,#4c1d95)",
|
|
62
|
+
border: "1px solid rgba(0,0,0,0.15)",
|
|
63
|
+
} }, props.appIconUrl && (React.createElement("img", { src: props.appIconUrl, alt: "", style: { width: "100%", height: "100%", objectFit: "cover" } }))),
|
|
64
|
+
React.createElement("div", { style: { lineHeight: 1.2 } },
|
|
65
|
+
React.createElement("strong", { className: "text-sm" }, appTitle),
|
|
66
|
+
appSlug && (React.createElement("div", { className: "text-light-secondary dark:text-dark-secondary", style: { fontSize: 12 } }, appSlug))),
|
|
67
|
+
React.createElement("div", { style: { flex: 1 } }),
|
|
68
|
+
props.handleSlug ? (React.createElement(ViewerTagView, { slug: props.handleSlug, displayName: `@${props.handleSlug}`, avatarUrl: props.handleAvatarUrl, trailing: React.createElement("span", { style: { fontSize: 11, opacity: 0.6, marginLeft: 1 } }, "\u25BE"), style: {
|
|
69
|
+
background: "var(--color-light-background-01, #eee)",
|
|
70
|
+
border: "1px solid var(--color-light-decorative-01, #ddd)",
|
|
71
|
+
color: "var(--color-light-primary, #333)",
|
|
72
|
+
fontSize: 13,
|
|
73
|
+
padding: "3px 8px 3px 4px",
|
|
74
|
+
flexShrink: 0,
|
|
75
|
+
} })) : (React.createElement(ViewerTagView, { slug: "?", anonymous: true, onSignIn: props.onSignIn }))),
|
|
76
|
+
React.createElement("div", { style: { padding: "0 14px 12px", overflowY: "auto" } }, props.body ?? (React.createElement(React.Fragment, null,
|
|
77
|
+
props.chips && props.chips.length > 0 && (React.createElement(OptionButtons, { options: props.chips, isFirst: true, firstMessage: "Describe a change to edit this app live:", onSelect: (o) => {
|
|
78
|
+
props.onSelectChip?.(o);
|
|
79
|
+
return false;
|
|
80
|
+
} })),
|
|
81
|
+
React.createElement(OtherRow, { onSubmitOther: props.onSubmitOther })))),
|
|
82
|
+
React.createElement("div", { style: {
|
|
83
|
+
display: "flex",
|
|
84
|
+
alignItems: "center",
|
|
85
|
+
gap: 6,
|
|
86
|
+
padding: "10px 12px 6px",
|
|
87
|
+
borderTop: "1px solid var(--color-light-decorative-00, #e5e5e5)",
|
|
88
|
+
} },
|
|
89
|
+
React.createElement(NavIcon, { label: "Home", color: "#3b82f6", onClick: props.onHome },
|
|
90
|
+
React.createElement("svg", { width: "17", height: "17", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" },
|
|
91
|
+
React.createElement("path", { d: "M3 12l9-9 9 9" }),
|
|
92
|
+
React.createElement("path", { d: "M5 10v10a1 1 0 001 1h4v-6h4v6h4a1 1 0 001-1V10" }))),
|
|
93
|
+
React.createElement(NavIcon, { label: "Edit", color: "#fb923c", selected: (props.selectedNav ?? "edit") === "edit", onClick: props.onEdit },
|
|
94
|
+
React.createElement("svg", { width: "17", height: "17", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.2, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true" },
|
|
95
|
+
React.createElement("path", { d: "M12 20h9" }),
|
|
96
|
+
React.createElement("path", { d: "M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4 12.5-12.5z" }))),
|
|
97
|
+
React.createElement(NavIcon, { label: "Share", color: "#22c55e", selected: props.selectedNav === "share", onClick: props.onShare, buttonRef: props.shareButtonRef }, "\u2197"),
|
|
98
|
+
React.createElement("div", { "aria-hidden": true, style: { width: 120, height: 60, flexShrink: 0, marginLeft: "auto" } }))))),
|
|
99
|
+
React.createElement("div", { style: { position: "absolute", right: 16, bottom: 28, zIndex: 3, pointerEvents: "auto" } },
|
|
100
|
+
React.createElement("button", { type: "button", "aria-label": open ? "Close vibe menu" : "Open vibe menu", onClick: () => setOpen(!open), style: { display: "block", background: "none", border: "none", padding: 0, cursor: "pointer" } },
|
|
101
|
+
React.createElement(VibesSwitch, { size: 60, isActive: !open, isTwinkling: !open && isTwinkling })))));
|
|
102
|
+
}
|
|
103
|
+
function NavIcon({ label, color, selected, onClick, buttonRef, children, }) {
|
|
104
|
+
return (React.createElement("button", { ref: buttonRef, type: "button", "aria-label": label, onClick: onClick, style: {
|
|
105
|
+
width: 38,
|
|
106
|
+
height: 38,
|
|
107
|
+
borderRadius: "50%",
|
|
108
|
+
background: color,
|
|
109
|
+
display: "flex",
|
|
110
|
+
alignItems: "center",
|
|
111
|
+
justifyContent: "center",
|
|
112
|
+
color: "#fff",
|
|
113
|
+
fontSize: 16,
|
|
114
|
+
cursor: "pointer",
|
|
115
|
+
border: "1px solid var(--vibes-near-black, #1a1a1a)",
|
|
116
|
+
boxShadow: selected ? "0 0 0 3px var(--vibes-near-black, #1a1a1a)" : "none",
|
|
117
|
+
} }, children));
|
|
118
|
+
}
|
|
119
|
+
function OtherRow({ onSubmitOther }) {
|
|
120
|
+
const [value, setValue] = React.useState("");
|
|
121
|
+
return (React.createElement("form", { onSubmit: (e) => {
|
|
122
|
+
e.preventDefault();
|
|
123
|
+
const text = value.trim();
|
|
124
|
+
if (text)
|
|
125
|
+
onSubmitOther?.(text);
|
|
126
|
+
setValue("");
|
|
127
|
+
}, style: { display: "flex", alignItems: "center", gap: 8, marginTop: 10 }, className: "rounded-md border border-light-decorative-01 dark:border-dark-decorative-01 py-1.5 pl-3 pr-2.5" },
|
|
128
|
+
React.createElement("input", { value: value, onChange: (e) => setValue(e.target.value), placeholder: "Make it your own\u2026", className: "flex-1 bg-transparent text-sm text-light-primary dark:text-dark-primary outline-none placeholder:text-light-secondary dark:placeholder:text-dark-secondary" }),
|
|
129
|
+
React.createElement("button", { type: "submit", "aria-label": "Submit change", style: {
|
|
130
|
+
width: 30,
|
|
131
|
+
height: 30,
|
|
132
|
+
flexShrink: 0,
|
|
133
|
+
borderRadius: "50%",
|
|
134
|
+
border: "none",
|
|
135
|
+
background: "var(--vibes-blue, #3b82f6)",
|
|
136
|
+
color: "#fff",
|
|
137
|
+
fontSize: 17,
|
|
138
|
+
fontWeight: "bold",
|
|
139
|
+
lineHeight: 1,
|
|
140
|
+
cursor: "pointer",
|
|
141
|
+
display: "flex",
|
|
142
|
+
alignItems: "center",
|
|
143
|
+
justifyContent: "center",
|
|
144
|
+
} },
|
|
145
|
+
React.createElement("span", { "aria-hidden": "true" }, "\u2191"))));
|
|
146
|
+
}
|
|
147
|
+
export default UnifiedVibeCard;
|
|
148
|
+
//# sourceMappingURL=UnifiedVibeCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnifiedVibeCard.js","sourceRoot":"","sources":["../../jsr/components/UnifiedVibeCard.tsx"],"names":[],"mappings":"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"}
|
package/components/index.d.ts
CHANGED
package/components/index.js
CHANGED
|
@@ -13,4 +13,6 @@ export * from "./VibesSwitch.js";
|
|
|
13
13
|
export * from "./ExpandedVibesPill.js";
|
|
14
14
|
export * from "./OptionButtons.js";
|
|
15
15
|
export * from "./ViewerTagView.js";
|
|
16
|
+
export * from "./UnifiedVibeCard.js";
|
|
17
|
+
export * from "./SharePanelView.js";
|
|
16
18
|
//# sourceMappingURL=index.js.map
|
package/components/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../jsr/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../jsr/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC"}
|
package/index.d.ts
CHANGED
|
@@ -11,3 +11,4 @@ export { PromptBar } from "./components/PromptBar.js";
|
|
|
11
11
|
export { defaultClasses } from "./utils/style-utils.js";
|
|
12
12
|
export { isDebug, logDebug } from "./utils/debug.js";
|
|
13
13
|
export type { ImageDocument, PartialImageDocument } from "@vibes.diy/vibe-types";
|
|
14
|
+
export { resolveBuilderOrigin, resolveBuilderOriginFrom, VIBES_DIY_BUILDER_URL } from "@vibes.diy/vibe-runtime";
|
package/index.js
CHANGED
|
@@ -8,4 +8,5 @@ export { ControlsBar } from "./components/ControlsBar.js";
|
|
|
8
8
|
export { PromptBar } from "./components/PromptBar.js";
|
|
9
9
|
export { defaultClasses } from "./utils/style-utils.js";
|
|
10
10
|
export { isDebug, logDebug } from "./utils/debug.js";
|
|
11
|
+
export { resolveBuilderOrigin, resolveBuilderOriginFrom, VIBES_DIY_BUILDER_URL } from "@vibes.diy/vibe-runtime";
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../jsr/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE3G,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../jsr/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE3G,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAIrD,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibes.diy/base",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
"@emotion/css": "~11.13.5",
|
|
12
12
|
"@fireproof/core-runtime": "~0.24.19",
|
|
13
13
|
"@fireproof/use-fireproof": "~0.24.19",
|
|
14
|
-
"@vibes.diy/use-vibes-types": "2.6.
|
|
15
|
-
"@vibes.diy/vibe-runtime": "2.6.
|
|
16
|
-
"@vibes.diy/vibe-types": "2.6.
|
|
14
|
+
"@vibes.diy/use-vibes-types": "2.6.8",
|
|
15
|
+
"@vibes.diy/vibe-runtime": "2.6.8",
|
|
16
|
+
"@vibes.diy/vibe-types": "2.6.8",
|
|
17
17
|
"qrcode": "~1.5.4",
|
|
18
18
|
"react": "~19.2.7",
|
|
19
19
|
"react-dom": "~19.2.7"
|