@vibes.diy/base 14.3.4 → 14.3.5
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/AdminModeControl.d.ts +7 -0
- package/components/AdminModeControl.js +9 -0
- package/components/AdminModeControl.js.map +1 -0
- package/components/EditorTabStrip.d.ts +3 -2
- package/components/EditorTabStrip.js +8 -15
- package/components/EditorTabStrip.js.map +1 -1
- package/components/MemberAccessView.d.ts +37 -0
- package/components/MemberAccessView.js +94 -0
- package/components/MemberAccessView.js.map +1 -0
- package/components/MemberInvitationView.d.ts +11 -0
- package/components/MemberInvitationView.js +16 -0
- package/components/MemberInvitationView.js.map +1 -0
- package/components/PublishBanner.d.ts +16 -0
- package/components/PublishBanner.js +126 -0
- package/components/PublishBanner.js.map +1 -0
- package/components/ShareLinkView.d.ts +11 -0
- package/components/ShareLinkView.js +61 -0
- package/components/ShareLinkView.js.map +1 -0
- package/components/SharePanelView.d.ts +5 -1
- package/components/SharePanelView.js +17 -62
- package/components/SharePanelView.js.map +1 -1
- package/components/UnifiedVibeCard.d.ts +0 -1
- package/components/UnifiedVibeCard.js +49 -138
- package/components/UnifiedVibeCard.js.map +1 -1
- package/components/UnifiedVibeCardSettings.styles.d.ts +3 -0
- package/components/UnifiedVibeCardSettings.styles.js +95 -0
- package/components/UnifiedVibeCardSettings.styles.js.map +1 -0
- package/components/UnifiedVibeCardShare.styles.d.ts +3 -0
- package/components/UnifiedVibeCardShare.styles.js +72 -0
- package/components/UnifiedVibeCardShare.styles.js.map +1 -0
- package/components/ViewerAccessSummary.d.ts +28 -0
- package/components/ViewerAccessSummary.js +105 -0
- package/components/ViewerAccessSummary.js.map +1 -0
- package/components/ViewerStandingView.d.ts +4 -26
- package/components/ViewerStandingView.js +6 -104
- package/components/ViewerStandingView.js.map +1 -1
- package/components/editor-tabs.d.ts +28 -0
- package/components/editor-tabs.js +15 -0
- package/components/editor-tabs.js.map +1 -0
- package/components/index.d.ts +7 -1
- package/components/index.js +7 -1
- package/components/index.js.map +1 -1
- package/hooks/useCardFloat.d.ts +6 -0
- package/hooks/useCardFloat.js +191 -0
- package/hooks/useCardFloat.js.map +1 -0
- package/hooks/useHomeMotionPress.d.ts +17 -0
- package/hooks/useHomeMotionPress.js +93 -0
- package/hooks/useHomeMotionPress.js.map +1 -0
- package/motion/card-motion-source.d.ts +23 -0
- package/motion/card-motion-source.js +50 -0
- package/motion/card-motion-source.js.map +1 -0
- package/package.json +4 -4
- package/components/PromiseStrip.d.ts +0 -13
- package/components/PromiseStrip.js +0 -17
- package/components/PromiseStrip.js.map +0 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface AdminModeControlProps {
|
|
3
|
+
readonly isOwner: boolean;
|
|
4
|
+
readonly adminMode: boolean;
|
|
5
|
+
readonly onToggle?: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function AdminModeControl({ isOwner, adminMode, onToggle }: AdminModeControlProps): React.JSX.Element | null;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export function AdminModeControl({ isOwner, adminMode, onToggle }) {
|
|
3
|
+
if (isOwner === false || onToggle === undefined)
|
|
4
|
+
return null;
|
|
5
|
+
return (React.createElement("label", { className: "flex items-center gap-2 text-sm text-neutral-700 dark:text-neutral-300" },
|
|
6
|
+
React.createElement("input", { type: "checkbox", checked: adminMode, onChange: () => void onToggle(), className: "rounded border-gray-300 dark:border-gray-600" }),
|
|
7
|
+
React.createElement("span", null, "Admin mode")));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=AdminModeControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminModeControl.js","sourceRoot":"","sources":["../../jsr/components/AdminModeControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,MAAM,UAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAyB;IACtF,IAAI,OAAO,KAAK,KAAK,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,CACL,+BAAO,SAAS,EAAC,wEAAwE;QACvF,+BACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,EAC/B,SAAS,EAAC,8CAA8C,GACxD;QACF,+CAAuB,CACjB,CACT,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type EditorTabKey } from "./editor-tabs.js";
|
|
2
3
|
import { type ViewerStandingState } from "./ViewerStandingView.js";
|
|
3
|
-
export type EditorTabKey
|
|
4
|
+
export type { EditorTabKey } from "./editor-tabs.js";
|
|
4
5
|
export declare function EditorTabStrip({ tab, onTab, standing, disabledTabs, }: {
|
|
5
6
|
tab: EditorTabKey;
|
|
6
7
|
onTab: (t: EditorTabKey) => void;
|
|
@@ -1,22 +1,15 @@
|
|
|
1
|
-
import React from "react";
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { EDITOR_TAB_DEFINITIONS, isEditorTabKey } from "./editor-tabs.js";
|
|
2
3
|
import { SubTabStrip } from "./SubTabStrip.js";
|
|
3
4
|
import { ViewerStandingGlyph, viewerStandingCopy } from "./ViewerStandingView.js";
|
|
4
|
-
const TAB_LABELS = {
|
|
5
|
-
standing: "Your access",
|
|
6
|
-
"edit-chat": "Chat",
|
|
7
|
-
code: "Code",
|
|
8
|
-
files: "Files",
|
|
9
|
-
data: "Data",
|
|
10
|
-
style: "Style",
|
|
11
|
-
settings: "Settings",
|
|
12
|
-
faq: "FAQ",
|
|
13
|
-
};
|
|
14
|
-
const TAB_ORDER = ["standing", "edit-chat", "style", "code", "files", "data", "settings", "faq"];
|
|
15
5
|
export function EditorTabStrip({ tab, onTab, standing, disabledTabs = [], }) {
|
|
16
6
|
const copy = viewerStandingCopy(standing ?? {});
|
|
17
|
-
return (React.createElement(SubTabStrip, { ariaLabel: "Vibe editor", active: tab, compact: true, disabledKeys: disabledTabs, onSelect:
|
|
7
|
+
return (React.createElement(SubTabStrip, { ariaLabel: "Vibe editor", active: tab, compact: true, disabledKeys: disabledTabs, onSelect: (key) => {
|
|
8
|
+
if (isEditorTabKey(key))
|
|
9
|
+
onTab(key);
|
|
10
|
+
}, tabs: EDITOR_TAB_DEFINITIONS.map(({ key, label }) => key === "standing"
|
|
18
11
|
?
|
|
19
|
-
{ key
|
|
20
|
-
: { key
|
|
12
|
+
{ key, label: copy.label, icon: React.createElement(ViewerStandingGlyph, { tier: copy.tier }) }
|
|
13
|
+
: { key, label }) }));
|
|
21
14
|
}
|
|
22
15
|
//# sourceMappingURL=EditorTabStrip.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditorTabStrip.js","sourceRoot":"","sources":["../../jsr/components/EditorTabStrip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"EditorTabStrip.js","sourceRoot":"","sources":["../../jsr/components/EditorTabStrip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAqB,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAA4B,MAAM,yBAAyB,CAAC;AAW5G,MAAM,UAAU,cAAc,CAAC,EAC7B,GAAG,EACH,KAAK,EACL,QAAQ,EACR,YAAY,GAAG,EAAE,GASlB;IACC,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAChD,OAAO,CACL,oBAAC,WAAW,IACV,SAAS,EAAC,aAAa,EACvB,MAAM,EAAE,GAAG,EACX,OAAO,QACP,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,IAAI,cAAc,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,CAAC,EACD,IAAI,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAClD,GAAG,KAAK,UAAU;YAChB,CAAC;gBAGC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,oBAAC,mBAAmB,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,EAAE;YAC5E,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CACnB,GACD,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface MemberAccessAction {
|
|
3
|
+
readonly label: string;
|
|
4
|
+
readonly onSelect: () => void;
|
|
5
|
+
}
|
|
6
|
+
export interface MemberRoleControl {
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly label?: string;
|
|
9
|
+
readonly selectedRole?: "editor" | "viewer" | "submitter";
|
|
10
|
+
readonly intent: "change" | "approve" | "reactivate" | "invite";
|
|
11
|
+
readonly onSelect: (role: "editor" | "viewer") => void;
|
|
12
|
+
}
|
|
13
|
+
export interface MemberAccessEntry {
|
|
14
|
+
readonly id: string;
|
|
15
|
+
readonly name: string;
|
|
16
|
+
readonly detail: string;
|
|
17
|
+
readonly actions: readonly MemberAccessAction[];
|
|
18
|
+
readonly roles?: readonly MemberRoleControl[];
|
|
19
|
+
readonly busy?: boolean;
|
|
20
|
+
readonly developer?: {
|
|
21
|
+
readonly enabled: boolean;
|
|
22
|
+
readonly onChange?: (enabled: boolean) => void;
|
|
23
|
+
readonly unavailableReason?: string;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface MemberAccessViewProps {
|
|
27
|
+
readonly entries: readonly MemberAccessEntry[];
|
|
28
|
+
readonly loading?: boolean;
|
|
29
|
+
readonly error?: boolean;
|
|
30
|
+
readonly onRetry?: () => void;
|
|
31
|
+
readonly members?: readonly {
|
|
32
|
+
readonly id: string;
|
|
33
|
+
readonly name: string;
|
|
34
|
+
}[];
|
|
35
|
+
readonly invitationSlot?: React.ReactNode;
|
|
36
|
+
}
|
|
37
|
+
export declare function MemberAccessView({ entries, loading, error, onRetry, members, invitationSlot, }: MemberAccessViewProps): React.JSX.Element;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
const ACTION = {
|
|
3
|
+
border: "1px solid var(--color-light-decorative-01, #b8beb8)",
|
|
4
|
+
borderRadius: 8,
|
|
5
|
+
background: "transparent",
|
|
6
|
+
color: "inherit",
|
|
7
|
+
padding: "7px 10px",
|
|
8
|
+
minHeight: 36,
|
|
9
|
+
font: "inherit",
|
|
10
|
+
fontSize: 12,
|
|
11
|
+
cursor: "pointer",
|
|
12
|
+
};
|
|
13
|
+
const CHIP = {
|
|
14
|
+
borderRadius: 4,
|
|
15
|
+
padding: "2px 6px",
|
|
16
|
+
fontSize: 12,
|
|
17
|
+
lineHeight: "20px",
|
|
18
|
+
fontWeight: 500,
|
|
19
|
+
border: "1px solid transparent",
|
|
20
|
+
};
|
|
21
|
+
function RoleChips({ control, busy }) {
|
|
22
|
+
const verb = { change: "Make", approve: "Approve as", reactivate: "Reactivate as", invite: "Invite as" }[control.intent];
|
|
23
|
+
return (React.createElement("span", { style: { display: "inline-flex", flexWrap: "wrap", alignItems: "center", gap: 4 } },
|
|
24
|
+
control.label !== undefined && (React.createElement("span", { "data-member-helper": true, style: { fontSize: 12, marginRight: 2 } }, control.label)),
|
|
25
|
+
["editor", "viewer"].map((role) => {
|
|
26
|
+
const selected = control.selectedRole === role;
|
|
27
|
+
return (React.createElement("button", { key: role, type: "button", "data-member-role-chip": true, "aria-pressed": selected, "aria-label": `${control.label === undefined ? "" : `${control.label}: `}${verb} ${role === "editor" ? "editor" : "reader"}`, disabled: busy === true, onClick: () => {
|
|
28
|
+
if (!selected)
|
|
29
|
+
control.onSelect(role);
|
|
30
|
+
}, style: { ...CHIP, boxShadow: selected ? "inset 0 0 0 1px currentColor" : undefined }, className: `disabled:opacity-50 ${role === "editor" ? "text-blue-700 dark:text-blue-300" : "text-purple-700 dark:text-purple-300"} ${selected ? (role === "editor" ? "bg-blue-100 dark:bg-blue-900/40" : "bg-purple-100 dark:bg-purple-900/40") : "bg-transparent hover:bg-black/5 dark:hover:bg-white/5"}` }, role === "editor" ? "Editor" : "Reader"));
|
|
31
|
+
})));
|
|
32
|
+
}
|
|
33
|
+
export function MemberAccessView({ entries, loading = false, error = false, onRetry, members, invitationSlot, }) {
|
|
34
|
+
const [selectedId, setSelectedId] = React.useState();
|
|
35
|
+
const selected = entries.find((entry) => entry.id === selectedId);
|
|
36
|
+
const selectedName = selected?.name;
|
|
37
|
+
const visibleEntries = selected === undefined ? entries : [selected];
|
|
38
|
+
const heading = React.useRef(null);
|
|
39
|
+
React.useEffect(() => {
|
|
40
|
+
if (selectedName === undefined)
|
|
41
|
+
return;
|
|
42
|
+
heading.current?.focus({ preventScroll: true });
|
|
43
|
+
heading.current?.scrollIntoView({ block: "nearest" });
|
|
44
|
+
}, [selectedName]);
|
|
45
|
+
return (React.createElement("section", { "aria-label": "Manage members", style: { display: "flex", flexDirection: "column", gap: 14, minWidth: 0 } },
|
|
46
|
+
members !== undefined && (React.createElement("div", null,
|
|
47
|
+
React.createElement("p", { "data-member-helper": true, className: "mb-2 text-xs", style: { color: "var(--uvc-share-label, inherit)", opacity: "var(--uvc-share-helper-opacity, 0.75)" } }, "In this vibe \u00B7 you are the owner"),
|
|
48
|
+
React.createElement("div", { className: "flex flex-wrap gap-2" }, members.map((member) => (React.createElement("button", { key: member.id, type: "button", "aria-label": `Manage ${member.name}`, "aria-pressed": member.id === selectedId, style: ACTION, onClick: () => setSelectedId(member.id) }, member.name)))))),
|
|
49
|
+
invitationSlot,
|
|
50
|
+
React.createElement("div", null,
|
|
51
|
+
React.createElement("div", { style: { display: "flex", justifyContent: "space-between", gap: 8, alignItems: "center" } },
|
|
52
|
+
React.createElement("h3", { ref: heading, tabIndex: -1, style: { fontSize: 14, fontWeight: 600, margin: 0 } }, selectedName ?? "Member access"),
|
|
53
|
+
selectedName !== undefined && (React.createElement("button", { type: "button", style: ACTION, onClick: () => setSelectedId(undefined) }, "All members"))),
|
|
54
|
+
React.createElement("p", { "data-member-helper": true, style: {
|
|
55
|
+
fontSize: 12,
|
|
56
|
+
color: "var(--uvc-share-label, inherit)",
|
|
57
|
+
opacity: "var(--uvc-share-helper-opacity, 0.75)",
|
|
58
|
+
margin: "6px 0 10px",
|
|
59
|
+
} }, "Editors change app data; readers view it. Developer adds code editing, publishing, and all app data and secrets. Only you manage access."),
|
|
60
|
+
loading ? (React.createElement("p", { role: "status", style: { fontSize: 13 } }, "Loading member access\u2026")) : error ? (React.createElement("div", { role: "alert", style: { fontSize: 13 } },
|
|
61
|
+
React.createElement("p", null, "Couldn\u2019t load all member access. Refresh before making changes."),
|
|
62
|
+
React.createElement("button", { type: "button", style: ACTION, onClick: onRetry }, "Retry member access"))) : visibleEntries.length === 0 ? (React.createElement("p", { style: { fontSize: 13 } }, selectedName === undefined
|
|
63
|
+
? "No invitations or access requests yet. Invite someone above."
|
|
64
|
+
: "No direct member grant for this person. Their access may come from the app’s public setting or ownership.")) : (React.createElement("div", { style: { display: "flex", flexDirection: "column", gap: 8 } }, visibleEntries.map((entry) => (React.createElement("article", { key: entry.id, "aria-label": entry.name, "data-member-entry": true, style: {
|
|
65
|
+
padding: 12,
|
|
66
|
+
borderRadius: "var(--uvc-share-radius, 12px)",
|
|
67
|
+
border: "1px solid var(--uvc-share-border, var(--color-light-decorative-01, #b8beb8))",
|
|
68
|
+
background: "var(--uvc-share-bg, rgba(127,127,127,0.035))",
|
|
69
|
+
} },
|
|
70
|
+
React.createElement("div", { style: { display: "flex", flexWrap: "wrap", alignItems: "center", gap: 6 } },
|
|
71
|
+
React.createElement("span", { style: { fontSize: 14, fontWeight: 600, overflowWrap: "anywhere" } }, entry.name),
|
|
72
|
+
entry.roles?.length === 1 && entry.roles[0].label === undefined && (React.createElement(RoleChips, { control: entry.roles[0], busy: entry.busy })),
|
|
73
|
+
entry.developer !== undefined && (React.createElement("button", { type: "button", "data-member-role-chip": true, "aria-label": `Developer access for ${entry.name}`, "aria-pressed": entry.developer.enabled, disabled: entry.busy === true || entry.developer.onChange === undefined, onClick: () => entry.developer?.onChange?.(!entry.developer.enabled), style: { ...CHIP, boxShadow: entry.developer.enabled ? "inset 0 0 0 1px currentColor" : undefined }, className: `text-green-700 dark:text-green-300 disabled:opacity-50 ${entry.developer.enabled ? "bg-green-100 dark:bg-green-900/40" : "bg-transparent hover:bg-black/5 dark:hover:bg-white/5"}` }, "Developer"))),
|
|
74
|
+
entry.roles !== undefined && (entry.roles.length > 1 || entry.roles[0]?.label !== undefined) && (React.createElement("div", { style: { display: "flex", flexDirection: "column", gap: 4, marginTop: 6 } }, entry.roles.map((control) => (React.createElement(RoleChips, { key: control.id, control: control, busy: entry.busy }))))),
|
|
75
|
+
React.createElement("p", { "data-member-helper": true, style: {
|
|
76
|
+
fontSize: 12,
|
|
77
|
+
color: "var(--uvc-share-label, inherit)",
|
|
78
|
+
opacity: "var(--uvc-share-helper-opacity, 0.75)",
|
|
79
|
+
margin: "4px 0 10px",
|
|
80
|
+
} }, entry.detail),
|
|
81
|
+
entry.developer?.unavailableReason !== undefined && (React.createElement("p", { "data-member-helper": true, style: { fontSize: 12, color: "var(--uvc-share-label, inherit)", margin: "4px 0 6px" } }, entry.developer.unavailableReason)),
|
|
82
|
+
React.createElement("div", { style: { display: "flex", flexWrap: "wrap", gap: 6 } }, entry.actions.map((action) => (React.createElement("button", { key: action.label, type: "button", disabled: entry.busy === true, onClick: action.onSelect, style: {
|
|
83
|
+
border: 0,
|
|
84
|
+
background: "transparent",
|
|
85
|
+
color: "var(--uvc-share-label, inherit)",
|
|
86
|
+
padding: "2px 4px",
|
|
87
|
+
fontSize: 12,
|
|
88
|
+
textDecoration: "underline",
|
|
89
|
+
textUnderlineOffset: 3,
|
|
90
|
+
cursor: "pointer",
|
|
91
|
+
opacity: entry.busy === true ? 0.5 : 1,
|
|
92
|
+
} }, action.label))))))))))));
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=MemberAccessView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemberAccessView.js","sourceRoot":"","sources":["../../jsr/components/MemberAccessView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface MemberInvitationViewProps {
|
|
3
|
+
readonly channel: "handle" | "email";
|
|
4
|
+
readonly value: string;
|
|
5
|
+
readonly onChange: (value: string) => void;
|
|
6
|
+
readonly onInvite: (role: "editor" | "viewer") => void;
|
|
7
|
+
readonly onAddDeveloper?: () => void;
|
|
8
|
+
readonly busy?: boolean;
|
|
9
|
+
readonly message?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function MemberInvitationView({ channel, value, onChange, onInvite, onAddDeveloper, busy, message, }: MemberInvitationViewProps): React.JSX.Element;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export function MemberInvitationView({ channel, value, onChange, onInvite, onAddDeveloper, busy = false, message, }) {
|
|
3
|
+
const email = channel === "email";
|
|
4
|
+
return (React.createElement("section", { "data-member-section": true, "aria-label": email ? "Email invitations" : "Handle invitations", className: "mt-3" },
|
|
5
|
+
React.createElement("h3", { className: "mb-1 text-xs font-medium text-light-secondary dark:text-dark-secondary" },
|
|
6
|
+
"Invite by ",
|
|
7
|
+
channel),
|
|
8
|
+
React.createElement("div", { className: "flex flex-wrap items-center gap-2" },
|
|
9
|
+
React.createElement("input", { type: email ? "email" : "text", value: value, onChange: (event) => onChange(event.target.value), placeholder: email ? "name@example.com" : "their handle", "aria-label": email ? "Email to invite" : "Handle to invite", autoCapitalize: "off", autoCorrect: "off", spellCheck: false, disabled: busy, className: "min-w-0 flex-1 rounded border border-light-decorative-01 bg-transparent px-2 py-1 text-sm dark:border-dark-decorative-01 disabled:opacity-50" }),
|
|
10
|
+
React.createElement("div", { className: "flex items-center gap-1" },
|
|
11
|
+
["editor", "viewer"].map((role) => (React.createElement("button", { key: role, type: "button", disabled: busy || value.trim().length === 0, onClick: () => onInvite(role), "aria-label": `${email ? "Email an invite" : "Invite"} as ${role === "editor" ? "editor" : "reader"}`, className: `rounded px-1.5 py-0.5 text-xs font-medium disabled:opacity-50 ${role === "editor" ? "bg-blue-100 text-blue-700 hover:bg-blue-200 dark:bg-blue-900/40 dark:text-blue-300" : "bg-purple-100 text-purple-700 hover:bg-purple-200 dark:bg-purple-900/40 dark:text-purple-300"}` }, busy ? "…" : role === "editor" ? "Editor" : "Reader"))),
|
|
12
|
+
!email && onAddDeveloper !== undefined && (React.createElement("button", { type: "button", disabled: busy || value.trim().length === 0, onClick: onAddDeveloper, className: "rounded border border-light-decorative-01 px-1.5 py-0.5 text-xs font-medium dark:border-dark-decorative-01 disabled:opacity-50" }, "Developer only")))),
|
|
13
|
+
!email && onAddDeveloper !== undefined && (React.createElement("p", { "data-member-helper": true, className: "mt-2 text-xs", style: { color: "var(--uvc-share-label, inherit)" } }, "Developer includes code editing, publishing, and all app data and secrets.")),
|
|
14
|
+
message !== undefined && (React.createElement("p", { role: "status", className: "mt-1 text-xs text-light-secondary dark:text-dark-secondary" }, message))));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=MemberInvitationView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemberInvitationView.js","sourceRoot":"","sources":["../../jsr/components/MemberInvitationView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,MAAM,UAAU,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,IAAI,GAAG,KAAK,EACZ,OAAO,GACmB;IAC1B,MAAM,KAAK,GAAG,OAAO,KAAK,OAAO,CAAC;IAClC,OAAO,CACL,4EAAyC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,oBAAoB,EAAE,SAAS,EAAC,MAAM;QAC3G,4BAAI,SAAS,EAAC,wEAAwE;;YAAY,OAAO,CAAM;QAC/G,6BAAK,SAAS,EAAC,mCAAmC;YAChD,+BACE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAC9B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EACjD,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,cAAc,gBAC5C,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,EAC1D,cAAc,EAAC,KAAK,EACpB,WAAW,EAAC,KAAK,EACjB,UAAU,EAAE,KAAK,EACjB,QAAQ,EAAE,IAAI,EACd,SAAS,EAAC,8IAA8I,GACxJ;YACF,6BAAK,SAAS,EAAC,yBAAyB;gBACpC,CAAC,QAAQ,EAAE,QAAQ,CAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC7C,gCACE,GAAG,EAAE,IAAI,EACT,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAC3C,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,gBACjB,GAAG,KAAK,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,EACnG,SAAS,EAAE,iEAAiE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,oFAAoF,CAAC,CAAC,CAAC,8FAA8F,EAAE,IAEtR,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAC9C,CACV,CAAC;gBACD,CAAC,KAAK,IAAI,cAAc,KAAK,SAAS,IAAI,CACzC,gCACE,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAC3C,OAAO,EAAE,cAAc,EACvB,SAAS,EAAC,gIAAgI,qBAGnI,CACV,CACG,CACF;QACL,CAAC,KAAK,IAAI,cAAc,KAAK,SAAS,IAAI,CACzC,uDAAsB,SAAS,EAAC,cAAc,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,iFAE9F,CACL;QACA,OAAO,KAAK,SAAS,IAAI,CACxB,2BAAG,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,4DAA4D,IACpF,OAAO,CACN,CACL,CACO,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface PublishBannerProps {
|
|
3
|
+
readonly variant: "draft" | "old" | undefined;
|
|
4
|
+
readonly onPublish?: () => void;
|
|
5
|
+
readonly publishing?: boolean;
|
|
6
|
+
readonly locked?: boolean;
|
|
7
|
+
readonly onUnlock?: () => void;
|
|
8
|
+
readonly autoPublishError?: boolean;
|
|
9
|
+
readonly onRetryAutoPublish?: () => void;
|
|
10
|
+
readonly wizardActive?: boolean;
|
|
11
|
+
readonly wizardError?: boolean;
|
|
12
|
+
readonly escapeRevealed?: boolean;
|
|
13
|
+
readonly onPublishWithoutAccess?: () => void;
|
|
14
|
+
readonly onRetryWizard?: () => void;
|
|
15
|
+
}
|
|
16
|
+
export declare function PublishBanner({ variant, onPublish, publishing, locked, onUnlock, autoPublishError, onRetryAutoPublish, wizardActive, wizardError, escapeRevealed, onPublishWithoutAccess, onRetryWizard, }: PublishBannerProps): React.JSX.Element;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export function PublishBanner({ variant, onPublish, publishing, locked, onUnlock, autoPublishError, onRetryAutoPublish, wizardActive, wizardError, escapeRevealed, onPublishWithoutAccess, onRetryWizard, }) {
|
|
3
|
+
if (autoPublishError === true) {
|
|
4
|
+
return (React.createElement("div", { className: "rounded-md", "data-testid": "auto-publish-error-banner", style: {
|
|
5
|
+
background: "rgba(245,158,11,0.10)",
|
|
6
|
+
border: "1px solid rgba(245,158,11,0.4)",
|
|
7
|
+
padding: "8px 10px",
|
|
8
|
+
marginBottom: 10,
|
|
9
|
+
display: "flex",
|
|
10
|
+
alignItems: "center",
|
|
11
|
+
justifyContent: "space-between",
|
|
12
|
+
gap: 8,
|
|
13
|
+
} },
|
|
14
|
+
React.createElement("span", { className: "text-sm", style: { color: "var(--uvc-amber-text, #92400e)", lineHeight: 1.3 } },
|
|
15
|
+
React.createElement("strong", null, "Couldn\u2019t publish your latest edit."),
|
|
16
|
+
" Your changes are saved but not live yet."),
|
|
17
|
+
React.createElement("button", { type: "button", onClick: onRetryAutoPublish, disabled: onRetryAutoPublish === undefined, className: "rounded-md px-3 py-1.5 text-sm font-semibold disabled:opacity-50 disabled:cursor-not-allowed", style: {
|
|
18
|
+
flexShrink: 0,
|
|
19
|
+
background: "var(--vibes-near-black, #1a1a1a)",
|
|
20
|
+
color: "#fff",
|
|
21
|
+
border: "none",
|
|
22
|
+
cursor: "pointer",
|
|
23
|
+
} }, "Retry")));
|
|
24
|
+
}
|
|
25
|
+
if (locked === true) {
|
|
26
|
+
return (React.createElement("div", { className: "rounded-md", "data-testid": "version-locked-banner", style: {
|
|
27
|
+
background: "rgba(245,158,11,0.10)",
|
|
28
|
+
border: "1px solid rgba(245,158,11,0.4)",
|
|
29
|
+
padding: "8px 10px",
|
|
30
|
+
marginBottom: 10,
|
|
31
|
+
display: "flex",
|
|
32
|
+
alignItems: "center",
|
|
33
|
+
justifyContent: "space-between",
|
|
34
|
+
gap: 8,
|
|
35
|
+
} },
|
|
36
|
+
React.createElement("span", { className: "text-sm", style: { color: "var(--uvc-amber-text, #92400e)", lineHeight: 1.3 } },
|
|
37
|
+
React.createElement("strong", null, "Version locked."),
|
|
38
|
+
" New edits won\u2019t go live until you unlock."),
|
|
39
|
+
onUnlock && (React.createElement("button", { type: "button", onClick: onUnlock, className: "rounded-md px-3 py-1.5 text-sm font-semibold disabled:opacity-50 disabled:cursor-not-allowed", style: {
|
|
40
|
+
flexShrink: 0,
|
|
41
|
+
background: "var(--vibes-near-black, #1a1a1a)",
|
|
42
|
+
color: "#fff",
|
|
43
|
+
border: "none",
|
|
44
|
+
cursor: "pointer",
|
|
45
|
+
} }, "Unlock"))));
|
|
46
|
+
}
|
|
47
|
+
if (wizardActive === true || wizardError === true) {
|
|
48
|
+
const showEscape = (wizardActive === true && escapeRevealed === true) || wizardError === true;
|
|
49
|
+
return (React.createElement("div", { className: wizardError === true ? "rounded-md" : "rounded-md vibes-securing", role: wizardError === true ? "alert" : "status", "data-testid": "access-wizard-banner", "data-wizard-state": wizardError === true ? "error" : "running", style: {
|
|
50
|
+
backgroundColor: wizardError === true ? "rgba(245,158,11,0.10)" : "rgba(59,130,246,0.08)",
|
|
51
|
+
border: wizardError === true ? "1px solid rgba(245,158,11,0.4)" : "1px solid rgba(59,130,246,0.35)",
|
|
52
|
+
padding: "8px 10px",
|
|
53
|
+
marginBottom: 10,
|
|
54
|
+
display: "flex",
|
|
55
|
+
alignItems: "center",
|
|
56
|
+
justifyContent: "space-between",
|
|
57
|
+
gap: 8,
|
|
58
|
+
} },
|
|
59
|
+
React.createElement("span", { className: "text-sm", style: {
|
|
60
|
+
color: wizardError === true ? "var(--uvc-amber-text, #92400e)" : "var(--uvc-blue-text, #1d4ed8)",
|
|
61
|
+
lineHeight: 1.3,
|
|
62
|
+
} }, wizardError === true ? (React.createElement(React.Fragment, null,
|
|
63
|
+
React.createElement("strong", null, "Couldn\u2019t set up access rules."),
|
|
64
|
+
" Your app is still live for people you approve \u2014 it didn\u2019t go public.")) : (React.createElement(React.Fragment, null,
|
|
65
|
+
React.createElement("strong", null, "Securing\u2026"),
|
|
66
|
+
" Setting up data access control rules before opening this app to everyone with the link."))),
|
|
67
|
+
React.createElement("div", { style: { display: "flex", flexDirection: "column", gap: 6, flexShrink: 0, alignItems: "stretch" } },
|
|
68
|
+
wizardError === true ? (React.createElement("button", { type: "button", onClick: onRetryWizard, disabled: onRetryWizard === undefined, className: "rounded-md px-3 py-1.5 text-sm font-semibold disabled:opacity-50 disabled:cursor-not-allowed", style: { background: "var(--vibes-near-black, #1a1a1a)", color: "#fff", border: "none", cursor: "pointer" } }, "Retry")) : (React.createElement("button", { type: "button", onClick: onPublish, disabled: onPublish === undefined, className: "rounded-md px-3 py-1.5 text-sm font-semibold disabled:opacity-50 disabled:cursor-not-allowed", style: {
|
|
69
|
+
display: "flex",
|
|
70
|
+
alignItems: "center",
|
|
71
|
+
gap: 6,
|
|
72
|
+
background: "var(--vibes-blue, #3b82f6)",
|
|
73
|
+
color: "#fff",
|
|
74
|
+
border: "none",
|
|
75
|
+
cursor: "default",
|
|
76
|
+
opacity: 0.7,
|
|
77
|
+
} },
|
|
78
|
+
React.createElement("span", { "aria-hidden": "true", className: "vibes-securing-spinner", style: {
|
|
79
|
+
width: 12,
|
|
80
|
+
height: 12,
|
|
81
|
+
flexShrink: 0,
|
|
82
|
+
borderRadius: "50%",
|
|
83
|
+
border: "2px solid currentColor",
|
|
84
|
+
borderTopColor: "transparent",
|
|
85
|
+
} }),
|
|
86
|
+
"Securing\u2026")),
|
|
87
|
+
showEscape && (React.createElement("button", { type: "button", onClick: onPublishWithoutAccess, disabled: onPublishWithoutAccess === undefined, "data-testid": "publish-without-access-controls", className: "rounded-md px-3 py-1 text-xs font-medium disabled:opacity-50 disabled:cursor-not-allowed", style: {
|
|
88
|
+
background: "transparent",
|
|
89
|
+
color: wizardError === true ? "var(--uvc-amber-text, #92400e)" : "var(--uvc-blue-text, #1d4ed8)",
|
|
90
|
+
border: "1px solid currentColor",
|
|
91
|
+
cursor: "pointer",
|
|
92
|
+
whiteSpace: "nowrap",
|
|
93
|
+
} }, "Go public without access controls")))));
|
|
94
|
+
}
|
|
95
|
+
return (React.createElement("div", { className: "rounded-md", style: {
|
|
96
|
+
background: "rgba(245,158,11,0.10)",
|
|
97
|
+
border: "1px solid rgba(245,158,11,0.4)",
|
|
98
|
+
padding: 10,
|
|
99
|
+
marginBottom: 10,
|
|
100
|
+
display: "flex",
|
|
101
|
+
alignItems: "center",
|
|
102
|
+
justifyContent: "space-between",
|
|
103
|
+
gap: 8,
|
|
104
|
+
} },
|
|
105
|
+
React.createElement("span", { className: "text-sm", style: {
|
|
106
|
+
color: "var(--uvc-amber-text, #92400e)",
|
|
107
|
+
fontSize: 13,
|
|
108
|
+
lineHeight: 1.45,
|
|
109
|
+
} }, variant === "draft" ? (React.createElement(React.Fragment, null,
|
|
110
|
+
React.createElement("strong", null, "Draft."),
|
|
111
|
+
" Your latest changes aren\u2019t live yet.")) : (React.createElement(React.Fragment, null,
|
|
112
|
+
React.createElement("strong", null, "Older version."),
|
|
113
|
+
" This isn\u2019t what visitors currently see."))),
|
|
114
|
+
onPublish && (React.createElement("button", { type: "button", onClick: onPublish, disabled: publishing, className: "rounded-md px-3 py-1.5 text-sm font-semibold disabled:opacity-50 disabled:cursor-not-allowed", style: {
|
|
115
|
+
flexShrink: 0,
|
|
116
|
+
fontSize: 13,
|
|
117
|
+
minHeight: 38,
|
|
118
|
+
padding: "8px 10px",
|
|
119
|
+
background: "var(--vibes-near-black, #1a1a1a)",
|
|
120
|
+
color: "#fff",
|
|
121
|
+
border: "none",
|
|
122
|
+
cursor: publishing ? "default" : "pointer",
|
|
123
|
+
opacity: publishing ? 0.6 : 1,
|
|
124
|
+
} }, publishing ? "Publishing…" : variant === "draft" ? "Update" : "Publish this version"))));
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=PublishBanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PublishBanner.js","sourceRoot":"","sources":["../../jsr/components/PublishBanner.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface ShareLinkViewProps {
|
|
3
|
+
readonly url: string;
|
|
4
|
+
readonly copied?: boolean;
|
|
5
|
+
readonly onCopy?: () => void;
|
|
6
|
+
readonly embedSnippet?: string;
|
|
7
|
+
readonly embedCopied?: boolean;
|
|
8
|
+
readonly onCopyEmbed?: () => void;
|
|
9
|
+
readonly pinterestShareUrl?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function ShareLinkView({ url, copied, onCopy, embedSnippet, embedCopied, onCopyEmbed, pinterestShareUrl, }: ShareLinkViewProps): React.JSX.Element;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { QrCode } from "./QrCode.js";
|
|
3
|
+
const LINK_RADIUS = 8;
|
|
4
|
+
const LINK_ACTION_GAP = 10;
|
|
5
|
+
export function ShareLinkView({ url, copied, onCopy, embedSnippet, embedCopied, onCopyEmbed, pinterestShareUrl, }) {
|
|
6
|
+
return (React.createElement("div", { style: { display: "flex", flexDirection: "column", gap: 14, width: "100%", minWidth: 0 } },
|
|
7
|
+
React.createElement("div", { "data-testid": "share-qr-actions", style: { display: "grid", gridTemplateColumns: "150px minmax(0, 1fr)", alignItems: "start", gap: 14, width: "100%" } },
|
|
8
|
+
React.createElement("div", { className: "border border-light-decorative-01 dark:border-dark-decorative-01", style: {
|
|
9
|
+
background: "#ffffff",
|
|
10
|
+
borderRadius: LINK_RADIUS,
|
|
11
|
+
padding: 8,
|
|
12
|
+
lineHeight: 0,
|
|
13
|
+
boxSizing: "border-box",
|
|
14
|
+
width: 150,
|
|
15
|
+
} },
|
|
16
|
+
React.createElement(QrCode, { value: url, size: 132, title: "QR code \u2014 scan to open this vibe" })),
|
|
17
|
+
React.createElement("div", { style: { display: "flex", flexDirection: "column", gap: LINK_ACTION_GAP, minWidth: 0 } },
|
|
18
|
+
React.createElement("p", { className: "text-light-primary dark:text-dark-primary", style: { fontSize: 14, fontWeight: 600, lineHeight: 1.5, margin: 0 } }, "Send this link to a friend"),
|
|
19
|
+
React.createElement("span", { "data-share-secondary": true, className: "text-light-secondary dark:text-dark-secondary", style: {
|
|
20
|
+
fontSize: 14,
|
|
21
|
+
lineHeight: 1.5,
|
|
22
|
+
overflowWrap: "anywhere",
|
|
23
|
+
wordBreak: "break-word",
|
|
24
|
+
} }, url),
|
|
25
|
+
React.createElement("button", { type: "button", onClick: onCopy, "aria-label": "Copy link", className: "bg-blue-500 text-sm font-bold text-white transition-colors hover:bg-blue-600", style: {
|
|
26
|
+
borderRadius: LINK_RADIUS,
|
|
27
|
+
padding: "10px 12px",
|
|
28
|
+
minHeight: 44,
|
|
29
|
+
border: "none",
|
|
30
|
+
fontSize: 14,
|
|
31
|
+
lineHeight: "20px",
|
|
32
|
+
} }, copied ? "Copied" : "Copy link"))),
|
|
33
|
+
embedSnippet !== undefined && (React.createElement("div", { "data-testid": "share-embed", style: { display: "flex", flexDirection: "column", gap: 10, width: "100%" } },
|
|
34
|
+
React.createElement("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between", gap: 8 } },
|
|
35
|
+
React.createElement("p", { className: "text-light-primary dark:text-dark-primary", style: { fontSize: 14, fontWeight: 600, lineHeight: 1.5, margin: 0 } }, "Embed on your site")),
|
|
36
|
+
React.createElement("textarea", { "data-share-secondary": true, readOnly: true, rows: 3, value: embedSnippet, "aria-label": "Embed code", onFocus: (e) => e.currentTarget.select(), className: "code-editor border-light-decorative-01 dark:border-dark-decorative-01 text-light-secondary dark:text-dark-secondary font-mono", style: {
|
|
37
|
+
width: "100%",
|
|
38
|
+
resize: "none",
|
|
39
|
+
borderRadius: LINK_RADIUS,
|
|
40
|
+
borderWidth: 1,
|
|
41
|
+
borderStyle: "solid",
|
|
42
|
+
background: "transparent",
|
|
43
|
+
padding: "8px 10px 0",
|
|
44
|
+
fontSize: 14,
|
|
45
|
+
lineHeight: 1.5,
|
|
46
|
+
boxSizing: "border-box",
|
|
47
|
+
height: "calc(4.5em + 10px)",
|
|
48
|
+
} }),
|
|
49
|
+
React.createElement("button", { type: "button", onClick: onCopyEmbed, "aria-label": "Copy embed code", className: "border-light-decorative-01 dark:border-dark-decorative-01 text-light-primary dark:text-dark-primary text-sm font-bold transition-colors hover:bg-blue-500 hover:text-white", style: {
|
|
50
|
+
borderRadius: LINK_RADIUS,
|
|
51
|
+
padding: "10px 12px",
|
|
52
|
+
minHeight: 44,
|
|
53
|
+
fontSize: 14,
|
|
54
|
+
lineHeight: "20px",
|
|
55
|
+
borderWidth: 1,
|
|
56
|
+
borderStyle: "solid",
|
|
57
|
+
background: "transparent",
|
|
58
|
+
} }, embedCopied ? "Copied" : "Copy embed code"))),
|
|
59
|
+
pinterestShareUrl !== undefined && (React.createElement("a", { href: pinterestShareUrl, target: "_blank", rel: "noopener noreferrer", className: "text-light-primary dark:text-dark-primary text-sm font-bold", style: { padding: "10px 12px", borderRadius: LINK_RADIUS, textAlign: "center" } }, "Save to Pinterest"))));
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=ShareLinkView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShareLinkView.js","sourceRoot":"","sources":["../../jsr/components/ShareLinkView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -33,6 +33,9 @@ export interface SharePanelViewProps {
|
|
|
33
33
|
readonly embedSnippet?: string;
|
|
34
34
|
readonly embedCopied?: boolean;
|
|
35
35
|
readonly onCopyEmbed?: () => void;
|
|
36
|
+
readonly pinterestShareUrl?: string;
|
|
37
|
+
readonly publicationSlot?: React.ReactNode;
|
|
38
|
+
readonly accessSummarySlot?: React.ReactNode;
|
|
36
39
|
readonly viewer: ShareViewer;
|
|
37
40
|
readonly members?: readonly ShareMember[];
|
|
38
41
|
readonly access?: ShareAccess;
|
|
@@ -44,6 +47,7 @@ export interface SharePanelViewProps {
|
|
|
44
47
|
readonly onRevokeAnonWrite?: () => void;
|
|
45
48
|
readonly anonWritePending?: boolean;
|
|
46
49
|
readonly onSelectMember?: (member: ShareMember) => void;
|
|
50
|
+
readonly membersManagementSlot?: React.ReactNode;
|
|
47
51
|
readonly notifications?: readonly ShareNotification[];
|
|
48
52
|
readonly notificationsLoading?: boolean;
|
|
49
53
|
readonly notificationsError?: boolean;
|
|
@@ -56,4 +60,4 @@ export interface SharePanelViewProps {
|
|
|
56
60
|
readonly fill?: boolean;
|
|
57
61
|
readonly className?: string;
|
|
58
62
|
}
|
|
59
|
-
export declare function SharePanelView({ url, copied, onCopy, embedSnippet, embedCopied, onCopyEmbed, viewer, members, access, onChangeAccess, accessPending, posture, envelopeRows, anonWrite, onRevokeAnonWrite, anonWritePending, onSelectMember, requestsSlot, inviteSlot, notifications, notificationsLoading, notificationsError, notificationSettingsSlot, onSelectNotification, commentsSlot, developersSlot, fill, className, }: SharePanelViewProps): React.JSX.Element;
|
|
63
|
+
export declare function SharePanelView({ url, copied, onCopy, embedSnippet, embedCopied, onCopyEmbed, pinterestShareUrl, publicationSlot, accessSummarySlot, viewer, members, access, onChangeAccess, accessPending, posture, envelopeRows, anonWrite, onRevokeAnonWrite, anonWritePending, onSelectMember, membersManagementSlot, requestsSlot, inviteSlot, notifications, notificationsLoading, notificationsError, notificationSettingsSlot, onSelectNotification, commentsSlot, developersSlot, fill, className, }: SharePanelViewProps): React.JSX.Element;
|