@vibes.diy/base 2.6.5 → 2.6.6

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.
@@ -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;AAuB1B,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAsB;IACxF,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,6FAEvG,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"}
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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"}
@@ -13,3 +13,5 @@ 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";
@@ -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
@@ -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.5",
3
+ "version": "2.6.6",
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.5",
15
- "@vibes.diy/vibe-runtime": "2.6.5",
16
- "@vibes.diy/vibe-types": "2.6.5",
14
+ "@vibes.diy/use-vibes-types": "2.6.6",
15
+ "@vibes.diy/vibe-runtime": "2.6.6",
16
+ "@vibes.diy/vibe-types": "2.6.6",
17
17
  "qrcode": "~1.5.4",
18
18
  "react": "~19.2.7",
19
19
  "react-dom": "~19.2.7"