@proappstore/sdk 1.16.3 → 1.16.4

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.
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @proappstore/sdk/ui — GateScreen reusable gate UI.
3
+ */
4
+ import type { ProAppStore } from './index.js';
5
+ export interface GateScreenProps {
6
+ gate: 'loading' | 'signed-out' | 'no-subscription';
7
+ app: ProAppStore;
8
+ appName?: string | undefined;
9
+ }
10
+ /** Renders the appropriate gate screen (loading, sign-in, or upgrade). */
11
+ export declare function GateScreen({ gate, app, appName }: GateScreenProps): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=ui-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-gate.d.ts","sourceRoot":"","sources":["../src/ui-gate.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,iBAAiB,CAAC;IACnD,GAAG,EAAE,WAAW,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,eAAe,2CAsCjE"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { SignInButton, UpgradeCard } from './ui-pro-components.js';
3
+ /** Renders the appropriate gate screen (loading, sign-in, or upgrade). */
4
+ export function GateScreen({ gate, app, appName }) {
5
+ if (gate === 'loading') {
6
+ return (_jsx("div", { style: { minHeight: '100dvh', display: 'flex', alignItems: 'center', justifyContent: 'center' }, children: _jsx("p", { style: { color: 'var(--muted, #64748b)' }, children: "Loading..." }) }));
7
+ }
8
+ if (gate === 'signed-out') {
9
+ return (_jsx("div", { style: { minHeight: '100dvh', display: 'flex', alignItems: 'center', justifyContent: 'center', padding: '2rem' }, children: _jsxs("div", { style: { maxWidth: 400, textAlign: 'center' }, children: [_jsx("h1", { style: { fontSize: '1.5rem', fontWeight: 800, marginBottom: '0.5rem', color: 'var(--ink, #1e293b)' }, children: appName || 'ProAppStore' }), _jsx("p", { style: { color: 'var(--muted, #64748b)', fontSize: '0.9rem', marginBottom: '1rem' }, children: "Sign in to your ProAppStore account to continue." }), _jsx(SignInButton, { app: app }), _jsx("p", { style: { color: 'var(--muted, #64748b)', fontSize: '0.75rem', marginTop: '0.75rem' }, children: "One account for all Pro apps." })] }) }));
10
+ }
11
+ // no-subscription
12
+ return (_jsx("div", { style: { minHeight: '100dvh', display: 'flex', alignItems: 'center', justifyContent: 'center', padding: '2rem' }, children: _jsx(UpgradeCard, { app: app, title: "Pro subscription required", description: `${appName || 'This app'} requires an active ProAppStore subscription.` }) }));
13
+ }
14
+ //# sourceMappingURL=ui-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-gate.js","sourceRoot":"","sources":["../src/ui-gate.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAYnE,0EAA0E;AAC1E,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAmB;IAChE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,YAClG,YAAG,KAAK,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,2BAAgB,GACxD,CACP,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,YACnH,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,aAChD,aAAI,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE,YACrG,OAAO,IAAI,aAAa,GACtB,EACL,YAAG,KAAK,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,iEAElF,EACJ,KAAC,YAAY,IAAC,GAAG,EAAE,GAAG,GAAI,EAC1B,YAAG,KAAK,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,8CAEnF,IACA,GACF,CACP,CAAC;IACJ,CAAC;IAED,kBAAkB;IAClB,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,YACnH,KAAC,WAAW,IACV,GAAG,EAAE,GAAG,EACR,KAAK,EAAC,2BAA2B,EACjC,WAAW,EAAE,GAAG,OAAO,IAAI,UAAU,+CAA+C,GACpF,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { ProAppStore } from './index.js';
2
+ export interface SignInButtonProps {
3
+ app: ProAppStore;
4
+ label?: string;
5
+ }
6
+ export declare function SignInButton({ app, label }: SignInButtonProps): import("react/jsx-runtime").JSX.Element;
7
+ export interface ProBadgeProps {
8
+ size?: 'sm' | 'md' | 'lg';
9
+ }
10
+ /** Purple "PRO" badge. Shows subscription tier. */
11
+ export declare function ProBadge({ size }: ProBadgeProps): import("react/jsx-runtime").JSX.Element;
12
+ export interface SubscriptionStatusProps {
13
+ app: ProAppStore;
14
+ showUpgrade?: boolean;
15
+ }
16
+ /** Inline subscription status: PRO badge or "Free" with optional upgrade link. */
17
+ export declare function SubscriptionStatus({ app, showUpgrade }: SubscriptionStatusProps): import("react/jsx-runtime").JSX.Element;
18
+ export interface UpgradeCardProps {
19
+ app: ProAppStore;
20
+ title?: string;
21
+ description?: string;
22
+ priceLabel?: string;
23
+ features?: string[];
24
+ }
25
+ /** Styled card prompting the user to upgrade to Pro. */
26
+ export declare function UpgradeCard({ app, title, description, priceLabel, features, }: UpgradeCardProps): import("react/jsx-runtime").JSX.Element;
27
+ export interface BillingButtonProps {
28
+ app: ProAppStore;
29
+ label?: string;
30
+ variant?: 'primary' | 'secondary' | 'ghost';
31
+ }
32
+ /** Button that opens the Stripe billing portal. */
33
+ export declare function BillingButton({ app, label, variant }: BillingButtonProps): import("react/jsx-runtime").JSX.Element;
34
+ //# sourceMappingURL=ui-pro-components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-pro-components.d.ts","sourceRoot":"","sources":["../src/ui-pro-components.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,EAAE,GAAG,EAAE,KAA6B,EAAE,EAAE,iBAAiB,2CAmBrF;AAMD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3B;AAED,mDAAmD;AACnD,wBAAgB,QAAQ,CAAC,EAAE,IAAW,EAAE,EAAE,aAAa,2CAsBtD;AAMD,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,WAAW,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,EAAE,GAAG,EAAE,WAAkB,EAAE,EAAE,uBAAuB,2CA4CtF;AAMD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,KAAwB,EACxB,WAAoE,EACpE,UAAuB,EACvB,QAAwG,GACzG,EAAE,gBAAgB,2CAuDlB;AAMD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;CAC7C;AAED,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,EAAE,GAAG,EAAE,KAAwB,EAAE,OAAqB,EAAE,EAAE,kBAAkB,2CAiCzG"}
@@ -0,0 +1,127 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @proappstore/sdk/ui — Pro-branded primitives and subscription components.
4
+ *
5
+ * SignInButton, ProBadge, SubscriptionStatus, UpgradeCard, BillingButton.
6
+ */
7
+ import { useState, useCallback } from 'react';
8
+ import { useProSubscription } from './hooks.js';
9
+ export function SignInButton({ app, label = 'Sign in with GitHub' }) {
10
+ return (_jsx("button", { onClick: () => app.auth.signIn(), style: {
11
+ background: 'var(--accent, #7c3aed)',
12
+ color: '#fff',
13
+ border: 'none',
14
+ padding: '0.6rem 1.5rem',
15
+ borderRadius: 'var(--radius, 0.75rem)',
16
+ fontSize: '0.9rem',
17
+ fontWeight: 700,
18
+ cursor: 'pointer',
19
+ fontFamily: 'inherit',
20
+ }, children: label }));
21
+ }
22
+ /** Purple "PRO" badge. Shows subscription tier. */
23
+ export function ProBadge({ size = 'sm' }) {
24
+ const sizes = {
25
+ sm: { fontSize: '0.6rem', padding: '0.1rem 0.4rem' },
26
+ md: { fontSize: '0.7rem', padding: '0.2rem 0.5rem' },
27
+ lg: { fontSize: '0.8rem', padding: '0.25rem 0.6rem' },
28
+ };
29
+ return (_jsx("span", { style: {
30
+ ...sizes[size],
31
+ fontWeight: 700,
32
+ background: 'var(--accent, #7c3aed)',
33
+ color: '#fff',
34
+ borderRadius: '0.25rem',
35
+ textTransform: 'uppercase',
36
+ letterSpacing: '0.03em',
37
+ whiteSpace: 'nowrap',
38
+ display: 'inline-flex',
39
+ alignItems: 'center',
40
+ }, children: "PRO" }));
41
+ }
42
+ /** Inline subscription status: PRO badge or "Free" with optional upgrade link. */
43
+ export function SubscriptionStatus({ app, showUpgrade = true }) {
44
+ const { subscription, isPro, loading, upgrade } = useProSubscription(app);
45
+ if (loading) {
46
+ return _jsx("span", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)' }, children: "..." });
47
+ }
48
+ if (isPro) {
49
+ const renewal = subscription?.cancelAtPeriodEnd
50
+ ? 'Cancels at period end'
51
+ : subscription?.currentPeriodEnd
52
+ ? `Renews ${new Date(subscription.currentPeriodEnd).toLocaleDateString()}`
53
+ : '';
54
+ return (_jsxs("span", { style: { display: 'inline-flex', alignItems: 'center', gap: '0.4rem' }, children: [_jsx(ProBadge, { size: "md" }), renewal && _jsx("span", { style: { fontSize: '0.75rem', color: 'var(--muted, #64748b)' }, children: renewal })] }));
55
+ }
56
+ return (_jsxs("span", { style: { display: 'inline-flex', alignItems: 'center', gap: '0.5rem' }, children: [_jsx("span", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)' }, children: "Free plan" }), showUpgrade && (_jsx("button", { onClick: () => upgrade(), style: {
57
+ background: 'none',
58
+ border: '1px solid var(--accent, #7c3aed)',
59
+ color: 'var(--accent, #7c3aed)',
60
+ padding: '0.2rem 0.6rem',
61
+ borderRadius: 'var(--radius-sm, 0.5rem)',
62
+ fontSize: '0.75rem',
63
+ fontWeight: 600,
64
+ cursor: 'pointer',
65
+ fontFamily: 'inherit',
66
+ }, children: "Upgrade" }))] }));
67
+ }
68
+ /** Styled card prompting the user to upgrade to Pro. */
69
+ export function UpgradeCard({ app, title = 'Upgrade to Pro', description = 'Unlock all premium features with a Pro subscription.', priceLabel = '$9/month', features = ['Cloud sync across devices', 'AI-powered features', 'Unlimited storage', 'Priority support'], }) {
70
+ const { upgrade } = useProSubscription(app);
71
+ return (_jsxs("div", { style: {
72
+ background: 'var(--surface, #ffffff)',
73
+ border: '1px solid var(--accent, #7c3aed)',
74
+ borderRadius: 'var(--radius, 0.75rem)',
75
+ padding: '1.75rem',
76
+ maxWidth: 400,
77
+ }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.5rem', marginBottom: '0.5rem' }, children: [_jsx("h3", { style: { fontSize: '1.25rem', fontWeight: 800, color: 'var(--ink-strong, var(--ink, #0f172a))', margin: 0 }, children: title }), _jsx(ProBadge, { size: "md" })] }), _jsx("p", { style: { fontSize: '0.9rem', color: 'var(--muted, #64748b)', marginBottom: '1rem' }, children: description }), features.length > 0 && (_jsx("ul", { style: { listStyle: 'none', padding: 0, margin: '0 0 1.25rem' }, children: features.map((f, i) => (_jsxs("li", { style: {
78
+ padding: '0.35rem 0',
79
+ fontSize: '0.85rem',
80
+ color: 'var(--ink, #1e293b)',
81
+ borderBottom: '1px solid var(--border, #e2e8f0)',
82
+ display: 'flex',
83
+ alignItems: 'center',
84
+ gap: '0.5rem',
85
+ }, children: [_jsx("span", { style: { color: 'var(--accent, #7c3aed)', fontWeight: 700 }, children: "+" }), f] }, i))) })), _jsxs("button", { onClick: () => upgrade(), style: {
86
+ width: '100%',
87
+ background: 'var(--accent, #7c3aed)',
88
+ color: '#fff',
89
+ border: 'none',
90
+ padding: '0.75rem',
91
+ borderRadius: 'var(--radius, 0.75rem)',
92
+ fontSize: '0.9rem',
93
+ fontWeight: 700,
94
+ cursor: 'pointer',
95
+ fontFamily: 'inherit',
96
+ }, children: ["Subscribe \u2014 ", priceLabel] })] }));
97
+ }
98
+ /** Button that opens the Stripe billing portal. */
99
+ export function BillingButton({ app, label = 'Manage billing', variant = 'secondary' }) {
100
+ const [loading, setLoading] = useState(false);
101
+ const handleClick = useCallback(async () => {
102
+ setLoading(true);
103
+ try {
104
+ await app.subscription.openPortal(window.location.href);
105
+ }
106
+ catch { }
107
+ finally {
108
+ setLoading(false);
109
+ }
110
+ }, [app]);
111
+ const baseStyle = {
112
+ padding: '0.6rem 1.25rem',
113
+ borderRadius: 'var(--radius, 0.75rem)',
114
+ fontSize: '0.85rem',
115
+ fontWeight: 600,
116
+ cursor: loading ? 'wait' : 'pointer',
117
+ fontFamily: 'inherit',
118
+ opacity: loading ? 0.7 : 1,
119
+ };
120
+ const variants = {
121
+ primary: { ...baseStyle, background: 'var(--accent, #7c3aed)', color: '#fff', border: 'none' },
122
+ secondary: { ...baseStyle, background: 'transparent', color: 'var(--ink, #1e293b)', border: '1px solid var(--border, #e2e8f0)' },
123
+ ghost: { ...baseStyle, background: 'none', color: 'var(--accent, #7c3aed)', border: 'none', padding: '0.4rem 0.75rem' },
124
+ };
125
+ return (_jsx("button", { onClick: handleClick, disabled: loading, style: variants[variant], children: loading ? 'Opening...' : label }));
126
+ }
127
+ //# sourceMappingURL=ui-pro-components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-pro-components.js","sourceRoot":"","sources":["../src/ui-pro-components.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @proappstore/sdk/ui — ProfileMenu (Pro-enhanced) avatar dropdown.
3
+ */
4
+ import { type ReactNode } from 'react';
5
+ import type { ProAppStore } from './index.js';
6
+ export interface ProfileMenuProps {
7
+ app: ProAppStore;
8
+ showThemeToggle?: boolean;
9
+ showBilling?: boolean;
10
+ children?: ReactNode;
11
+ }
12
+ /** Avatar button that opens dropdown with Pro features: badge, billing, theme, sign out. */
13
+ export declare function ProfileMenu({ app, showThemeToggle, showBilling, children }: ProfileMenuProps): import("react/jsx-runtime").JSX.Element | null;
14
+ //# sourceMappingURL=ui-profile-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-profile-menu.d.ts","sourceRoot":"","sources":["../src/ui-profile-menu.tsx"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,WAAW,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,EAAE,GAAG,EAAE,eAAsB,EAAE,WAAkB,EAAE,QAAQ,EAAE,EAAE,gBAAgB,kDAoF1G"}
@@ -0,0 +1,78 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @proappstore/sdk/ui — ProfileMenu (Pro-enhanced) avatar dropdown.
4
+ */
5
+ import { useState, useEffect, useCallback, useRef } from 'react';
6
+ import { useProAuth, useProSubscription, useTheme } from './hooks.js';
7
+ import { ProBadge } from './ui-pro-components.js';
8
+ /** Avatar button that opens dropdown with Pro features: badge, billing, theme, sign out. */
9
+ export function ProfileMenu({ app, showThemeToggle = true, showBilling = true, children }) {
10
+ const { user, signOut, deleteAccount } = useProAuth(app);
11
+ const { subscription, isPro, manageBilling } = useProSubscription(app);
12
+ const [open, setOpen] = useState(false);
13
+ const ref = useRef(null);
14
+ useEffect(() => {
15
+ if (!open)
16
+ return;
17
+ const handler = (e) => {
18
+ if (ref.current && !ref.current.contains(e.target))
19
+ setOpen(false);
20
+ };
21
+ document.addEventListener('mousedown', handler);
22
+ return () => document.removeEventListener('mousedown', handler);
23
+ }, [open]);
24
+ if (!user)
25
+ return null;
26
+ const handleSignOut = () => { signOut(); setOpen(false); };
27
+ const handleBilling = async () => { await manageBilling(); setOpen(false); };
28
+ const handleDelete = async () => {
29
+ const subClause = subscription?.status === 'active' ? ' and cancels your subscription' : '';
30
+ if (!confirm(`Delete your account? This permanently removes ALL your data across ALL apps${subClause}. This cannot be undone.`))
31
+ return;
32
+ if (!confirm('Are you absolutely sure? Last chance.'))
33
+ return;
34
+ await deleteAccount();
35
+ setOpen(false);
36
+ };
37
+ return (_jsxs("div", { ref: ref, style: { position: 'relative' }, children: [_jsx("button", { onClick: () => setOpen(!open), style: {
38
+ background: 'none',
39
+ border: '2px solid var(--border, #e2e8f0)',
40
+ borderRadius: '50%',
41
+ padding: 0,
42
+ cursor: 'pointer',
43
+ width: 32,
44
+ height: 32,
45
+ overflow: 'hidden',
46
+ display: 'block',
47
+ }, children: user.avatarUrl ? (_jsx("img", { src: user.avatarUrl, alt: user.login, width: 28, height: 28, style: { borderRadius: '50%', display: 'block' } })) : (_jsx("div", { style: { width: 28, height: 28, borderRadius: '50%', background: 'var(--accent, #7c3aed)', color: '#fff', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: 13, fontWeight: 700 }, children: user.login.charAt(0).toUpperCase() })) }), open && (_jsxs("div", { style: {
48
+ position: 'absolute', top: 40, right: 0,
49
+ background: 'var(--surface, #ffffff)',
50
+ border: '1px solid var(--border, #e2e8f0)',
51
+ borderRadius: 'var(--radius, 0.75rem)',
52
+ boxShadow: '0 4px 20px rgba(0,0,0,0.1)',
53
+ minWidth: 220, padding: '0.5rem 0', zIndex: 100,
54
+ }, children: [_jsxs("div", { style: { padding: '0.5rem 1rem', borderBottom: '1px solid var(--border, #e2e8f0)', display: 'flex', alignItems: 'center', gap: '0.5rem' }, children: [_jsx("strong", { style: { fontSize: '0.85rem', color: 'var(--ink, #1e293b)' }, children: user.login }), isPro && _jsx(ProBadge, {})] }), showThemeToggle && (_jsxs("div", { style: { padding: '0.5rem 1rem', borderBottom: '1px solid var(--border, #e2e8f0)', display: 'flex', alignItems: 'center', justifyContent: 'space-between' }, children: [_jsx("span", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)' }, children: "Theme" }), _jsx(ThemeToggleInline, {})] })), showBilling && isPro && (_jsx("button", { onClick: handleBilling, style: menuItemStyle, children: "Manage billing" })), children, _jsx("button", { onClick: handleSignOut, style: menuItemStyle, children: "Sign out" }), _jsx("button", { onClick: handleDelete, style: { ...menuItemStyle, color: '#dc2626' }, children: "Delete account" })] }))] }));
55
+ }
56
+ /** Inline theme toggle for menu (imports from same file to avoid circular) */
57
+ function ThemeToggleInline() {
58
+ const { theme, preference, setPreference } = useTheme();
59
+ const cycle = useCallback(() => {
60
+ const order = ['system', 'light', 'dark'];
61
+ const idx = order.indexOf(preference);
62
+ setPreference(order[(idx + 1) % order.length]);
63
+ }, [preference, setPreference]);
64
+ const icon = theme === 'dark' ? (_jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("circle", { cx: "12", cy: "12", r: "5" }), _jsx("line", { x1: "12", y1: "1", x2: "12", y2: "3" }), _jsx("line", { x1: "12", y1: "21", x2: "12", y2: "23" }), _jsx("line", { x1: "4.22", y1: "4.22", x2: "5.64", y2: "5.64" }), _jsx("line", { x1: "18.36", y1: "18.36", x2: "19.78", y2: "19.78" }), _jsx("line", { x1: "1", y1: "12", x2: "3", y2: "12" }), _jsx("line", { x1: "21", y1: "12", x2: "23", y2: "12" }), _jsx("line", { x1: "4.22", y1: "19.78", x2: "5.64", y2: "18.36" }), _jsx("line", { x1: "18.36", y1: "5.64", x2: "19.78", y2: "4.22" })] })) : (_jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" }) }));
65
+ return (_jsx("button", { onClick: cycle, "aria-label": `Theme: ${preference}`, style: {
66
+ width: 32, height: 32, borderRadius: 'var(--radius-sm, 0.5rem)',
67
+ border: '1px solid var(--border, #e2e8f0)', background: 'var(--surface, #ffffff)',
68
+ color: 'var(--ink, #1e293b)', display: 'inline-flex', alignItems: 'center',
69
+ justifyContent: 'center', cursor: 'pointer', padding: 0, fontFamily: 'inherit',
70
+ }, children: icon }));
71
+ }
72
+ const menuItemStyle = {
73
+ display: 'block', width: '100%', padding: '0.5rem 1rem',
74
+ background: 'none', border: 'none', textAlign: 'left',
75
+ fontSize: '0.85rem', cursor: 'pointer',
76
+ color: 'var(--ink, #1e293b)', fontFamily: 'inherit',
77
+ };
78
+ //# sourceMappingURL=ui-profile-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-profile-menu.js","sourceRoot":"","sources":["../src/ui-profile-menu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { ProAppStore } from './index.js';
2
+ export interface ProProfilePageProps {
3
+ app: ProAppStore;
4
+ showThemeToggle?: boolean;
5
+ }
6
+ /** Full-page profile/settings with subscription info, billing, theme, danger zone. */
7
+ export declare function ProProfilePage({ app, showThemeToggle }: ProProfilePageProps): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=ui-profile-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-profile-page.d.ts","sourceRoot":"","sources":["../src/ui-profile-page.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,WAAW,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,eAAsB,EAAE,EAAE,mBAAmB,2CAqJlF"}
@@ -0,0 +1,71 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * @proappstore/sdk/ui — ProProfilePage full-page profile/settings.
4
+ */
5
+ import {} from 'react';
6
+ import { useProAuth, useProSubscription, useTheme } from './hooks.js';
7
+ import { SignInButton, ProBadge, BillingButton } from './ui-pro-components.js';
8
+ /** Full-page profile/settings with subscription info, billing, theme, danger zone. */
9
+ export function ProProfilePage({ app, showThemeToggle = true }) {
10
+ const { user, loading, signOut, deleteAccount } = useProAuth(app);
11
+ const { subscription, isPro, loading: subLoading, upgrade, manageBilling } = useProSubscription(app);
12
+ const { preference, setPreference } = useTheme();
13
+ if (loading) {
14
+ return _jsx("div", { style: { padding: '2rem', textAlign: 'center', color: 'var(--muted, #64748b)' }, children: "Loading..." });
15
+ }
16
+ if (!user) {
17
+ return (_jsxs("div", { style: { padding: '2rem', textAlign: 'center' }, children: [_jsx("p", { style: { color: 'var(--muted, #64748b)', marginBottom: '1rem' }, children: "Sign in to view your profile." }), _jsx(SignInButton, { app: app })] }));
18
+ }
19
+ const handleDelete = async () => {
20
+ const subClause = subscription?.status === 'active' ? ' and cancels your subscription' : '';
21
+ if (!confirm(`Delete your account? This permanently removes ALL your data across ALL apps${subClause}. This cannot be undone.`))
22
+ return;
23
+ if (!confirm('Are you absolutely sure? Last chance.'))
24
+ return;
25
+ await deleteAccount();
26
+ };
27
+ const themeOptions = [
28
+ { value: 'system', label: 'System' },
29
+ { value: 'light', label: 'Light' },
30
+ { value: 'dark', label: 'Dark' },
31
+ ];
32
+ return (_jsxs("div", { style: { maxWidth: 520, margin: '0 auto', padding: '2rem 1rem' }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '1rem', marginBottom: '2rem' }, children: [user.avatarUrl ? (_jsx("img", { src: user.avatarUrl, alt: user.login, width: 64, height: 64, style: { borderRadius: '50%' } })) : (_jsx("div", { style: { width: 64, height: 64, borderRadius: '50%', background: 'var(--accent, #7c3aed)', color: '#fff', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: 28, fontWeight: 700 }, children: user.login.charAt(0).toUpperCase() })), _jsxs("div", { children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.5rem' }, children: [_jsx("span", { style: { fontSize: '1.25rem', fontWeight: 700, color: 'var(--ink-strong, var(--ink, #0f172a))' }, children: user.login }), isPro && _jsx(ProBadge, { size: "md" })] }), _jsx("div", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)' }, children: "ProAppStore account" })] })] }), _jsx(Section, { title: "Subscription", children: subLoading ? (_jsx("p", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)' }, children: "Loading..." })) : isPro ? (_jsxs("div", { children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.5rem', marginBottom: '0.75rem' }, children: [_jsx(ProBadge, { size: "lg" }), _jsx("span", { style: { fontSize: '0.9rem', fontWeight: 600, color: 'var(--ink, #1e293b)' }, children: "Active" })] }), subscription?.currentPeriodEnd && (_jsxs("p", { style: { fontSize: '0.82rem', color: 'var(--muted, #64748b)', marginBottom: '0.75rem' }, children: [subscription.cancelAtPeriodEnd ? 'Cancels' : 'Renews', " on ", new Date(subscription.currentPeriodEnd).toLocaleDateString()] })), _jsx(BillingButton, { app: app, variant: "secondary" })] })) : (_jsxs("div", { children: [_jsx("p", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)', marginBottom: '0.75rem' }, children: "You're on the free plan. Upgrade to unlock all premium features." }), _jsx("button", { onClick: () => upgrade(), style: {
33
+ background: 'var(--accent, #7c3aed)', color: '#fff', border: 'none',
34
+ padding: '0.6rem 1.25rem', borderRadius: 'var(--radius, 0.75rem)',
35
+ fontSize: '0.85rem', fontWeight: 700, cursor: 'pointer', fontFamily: 'inherit',
36
+ }, children: "Upgrade to Pro \u2014 $9/mo" })] })) }), showThemeToggle && (_jsx(Section, { title: "Appearance", children: _jsx("div", { style: { display: 'flex', gap: '0.5rem' }, children: themeOptions.map((opt) => (_jsx("button", { onClick: () => setPreference(opt.value), style: {
37
+ flex: 1, padding: '0.5rem',
38
+ borderRadius: 'var(--radius-sm, 0.5rem)',
39
+ border: preference === opt.value ? '2px solid var(--accent, #7c3aed)' : '1px solid var(--border, #e2e8f0)',
40
+ background: preference === opt.value ? 'var(--accent-soft, #f5f3ff)' : 'transparent',
41
+ color: preference === opt.value ? 'var(--accent, #7c3aed)' : 'var(--muted, #64748b)',
42
+ fontWeight: preference === opt.value ? 700 : 500,
43
+ fontSize: '0.85rem', cursor: 'pointer', fontFamily: 'inherit',
44
+ }, children: opt.label }, opt.value))) }) })), _jsx("button", { onClick: signOut, style: {
45
+ width: '100%', padding: '0.75rem',
46
+ borderRadius: 'var(--radius, 0.75rem)',
47
+ border: '1px solid var(--border, #e2e8f0)',
48
+ background: 'var(--surface, #ffffff)',
49
+ color: 'var(--ink, #1e293b)',
50
+ fontSize: '0.9rem', fontWeight: 600,
51
+ cursor: 'pointer', marginBottom: '1.5rem', fontFamily: 'inherit',
52
+ }, children: "Sign out" }), _jsxs("div", { style: { border: '1px solid #fecaca', borderRadius: 'var(--radius, 0.75rem)', padding: '1.25rem' }, children: [_jsx("div", { style: { fontSize: '0.9rem', fontWeight: 700, color: '#dc2626', marginBottom: '0.5rem' }, children: "Danger zone" }), _jsxs("p", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)', marginBottom: '0.75rem' }, children: ["Permanently delete your account and all data across all apps.", isPro && ' Your subscription will be cancelled.'] }), _jsx("button", { onClick: handleDelete, style: {
53
+ padding: '0.5rem 1rem', borderRadius: 'var(--radius-sm, 0.5rem)',
54
+ border: '1px solid #dc2626', background: 'transparent',
55
+ color: '#dc2626', fontSize: '0.85rem', fontWeight: 600,
56
+ cursor: 'pointer', fontFamily: 'inherit',
57
+ }, children: "Delete account" })] })] }));
58
+ }
59
+ // ---------------------------------------------------------------------------
60
+ // Section helper (internal)
61
+ // ---------------------------------------------------------------------------
62
+ function Section({ title, children }) {
63
+ return (_jsxs("div", { style: {
64
+ background: 'var(--surface, #ffffff)',
65
+ border: '1px solid var(--border, #e2e8f0)',
66
+ borderRadius: 'var(--radius, 0.75rem)',
67
+ padding: '1.25rem',
68
+ marginBottom: '1rem',
69
+ }, children: [_jsx("div", { style: { fontSize: '0.9rem', fontWeight: 700, marginBottom: '0.75rem', color: 'var(--ink, #1e293b)' }, children: title }), children] }));
70
+ }
71
+ //# sourceMappingURL=ui-profile-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-profile-page.js","sourceRoot":"","sources":["../src/ui-profile-page.tsx"],"names":[],"mappings":"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"}
package/dist/ui.d.ts CHANGED
@@ -5,61 +5,14 @@
5
5
  * plus Pro-specific components: ProBadge, UpgradeCard, BillingButton,
6
6
  * SubscriptionStatus, ProProfilePage.
7
7
  */
8
- import { type ReactNode } from 'react';
9
- import type { ProAppStore } from './index.js';
10
8
  export { Avatar, ThemeToggle, TextSizeToggle } from './ui-primitives.js';
11
9
  export type { AvatarProps } from './ui-primitives.js';
12
- export interface SignInButtonProps {
13
- app: ProAppStore;
14
- label?: string;
15
- }
16
- export declare function SignInButton({ app, label }: SignInButtonProps): import("react/jsx-runtime").JSX.Element;
17
- export interface ProBadgeProps {
18
- size?: 'sm' | 'md' | 'lg';
19
- }
20
- /** Purple "PRO" badge. Shows subscription tier. */
21
- export declare function ProBadge({ size }: ProBadgeProps): import("react/jsx-runtime").JSX.Element;
22
- export interface SubscriptionStatusProps {
23
- app: ProAppStore;
24
- showUpgrade?: boolean;
25
- }
26
- /** Inline subscription status: PRO badge or "Free" with optional upgrade link. */
27
- export declare function SubscriptionStatus({ app, showUpgrade }: SubscriptionStatusProps): import("react/jsx-runtime").JSX.Element;
28
- export interface UpgradeCardProps {
29
- app: ProAppStore;
30
- title?: string;
31
- description?: string;
32
- priceLabel?: string;
33
- features?: string[];
34
- }
35
- /** Styled card prompting the user to upgrade to Pro. */
36
- export declare function UpgradeCard({ app, title, description, priceLabel, features, }: UpgradeCardProps): import("react/jsx-runtime").JSX.Element;
37
- export interface BillingButtonProps {
38
- app: ProAppStore;
39
- label?: string;
40
- variant?: 'primary' | 'secondary' | 'ghost';
41
- }
42
- /** Button that opens the Stripe billing portal. */
43
- export declare function BillingButton({ app, label, variant }: BillingButtonProps): import("react/jsx-runtime").JSX.Element;
44
- export interface ProfileMenuProps {
45
- app: ProAppStore;
46
- showThemeToggle?: boolean;
47
- showBilling?: boolean;
48
- children?: ReactNode;
49
- }
50
- /** Avatar button that opens dropdown with Pro features: badge, billing, theme, sign out. */
51
- export declare function ProfileMenu({ app, showThemeToggle, showBilling, children }: ProfileMenuProps): import("react/jsx-runtime").JSX.Element | null;
52
- export interface ProProfilePageProps {
53
- app: ProAppStore;
54
- showThemeToggle?: boolean;
55
- }
56
- /** Full-page profile/settings with subscription info, billing, theme, danger zone. */
57
- export declare function ProProfilePage({ app, showThemeToggle }: ProProfilePageProps): import("react/jsx-runtime").JSX.Element;
58
- export interface GateScreenProps {
59
- gate: 'loading' | 'signed-out' | 'no-subscription';
60
- app: ProAppStore;
61
- appName?: string | undefined;
62
- }
63
- /** Renders the appropriate gate screen (loading, sign-in, or upgrade). */
64
- export declare function GateScreen({ gate, app, appName }: GateScreenProps): import("react/jsx-runtime").JSX.Element;
10
+ export { SignInButton, ProBadge, SubscriptionStatus, UpgradeCard, BillingButton } from './ui-pro-components.js';
11
+ export type { SignInButtonProps, ProBadgeProps, SubscriptionStatusProps, UpgradeCardProps, BillingButtonProps, } from './ui-pro-components.js';
12
+ export { ProfileMenu } from './ui-profile-menu.js';
13
+ export type { ProfileMenuProps } from './ui-profile-menu.js';
14
+ export { ProProfilePage } from './ui-profile-page.js';
15
+ export type { ProProfilePageProps } from './ui-profile-page.js';
16
+ export { GateScreen } from './ui-gate.js';
17
+ export type { GateScreenProps } from './ui-gate.js';
65
18
  //# sourceMappingURL=ui.d.ts.map
package/dist/ui.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAM9C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAMtD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,YAAY,CAAC,EAAE,GAAG,EAAE,KAA6B,EAAE,EAAE,iBAAiB,2CAmBrF;AAMD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3B;AAED,mDAAmD;AACnD,wBAAgB,QAAQ,CAAC,EAAE,IAAW,EAAE,EAAE,aAAa,2CAsBtD;AAMD,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,WAAW,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,EAAE,GAAG,EAAE,WAAkB,EAAE,EAAE,uBAAuB,2CA4CtF;AAMD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wDAAwD;AACxD,wBAAgB,WAAW,CAAC,EAC1B,GAAG,EACH,KAAwB,EACxB,WAAoE,EACpE,UAAuB,EACvB,QAAwG,GACzG,EAAE,gBAAgB,2CAuDlB;AAMD,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;CAC7C;AAED,mDAAmD;AACnD,wBAAgB,aAAa,CAAC,EAAE,GAAG,EAAE,KAAwB,EAAE,OAAqB,EAAE,EAAE,kBAAkB,2CAiCzG;AAMD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,WAAW,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,EAAE,GAAG,EAAE,eAAsB,EAAE,WAAkB,EAAE,QAAQ,EAAE,EAAE,gBAAgB,kDAoF1G;AA+CD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,WAAW,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,EAAE,GAAG,EAAE,eAAsB,EAAE,EAAE,mBAAmB,2CAqJlF;AAMD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,iBAAiB,CAAC;IACnD,GAAG,EAAE,WAAW,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,eAAe,2CAsCjE"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAChH,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
package/dist/ui.js CHANGED
@@ -1,4 +1,3 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
1
  /**
3
2
  * @proappstore/sdk/ui — Full UI component library for Pro apps.
4
3
  *
@@ -6,270 +5,14 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
5
  * plus Pro-specific components: ProBadge, UpgradeCard, BillingButton,
7
6
  * SubscriptionStatus, ProProfilePage.
8
7
  */
9
- import { useState, useEffect, useCallback, useRef } from 'react';
10
- import { useProAuth, useProSubscription, useTheme } from './hooks.js';
11
8
  // Re-export base primitives
12
9
  export { Avatar, ThemeToggle, TextSizeToggle } from './ui-primitives.js';
13
- export function SignInButton({ app, label = 'Sign in with GitHub' }) {
14
- return (_jsx("button", { onClick: () => app.auth.signIn(), style: {
15
- background: 'var(--accent, #7c3aed)',
16
- color: '#fff',
17
- border: 'none',
18
- padding: '0.6rem 1.5rem',
19
- borderRadius: 'var(--radius, 0.75rem)',
20
- fontSize: '0.9rem',
21
- fontWeight: 700,
22
- cursor: 'pointer',
23
- fontFamily: 'inherit',
24
- }, children: label }));
25
- }
26
- /** Purple "PRO" badge. Shows subscription tier. */
27
- export function ProBadge({ size = 'sm' }) {
28
- const sizes = {
29
- sm: { fontSize: '0.6rem', padding: '0.1rem 0.4rem' },
30
- md: { fontSize: '0.7rem', padding: '0.2rem 0.5rem' },
31
- lg: { fontSize: '0.8rem', padding: '0.25rem 0.6rem' },
32
- };
33
- return (_jsx("span", { style: {
34
- ...sizes[size],
35
- fontWeight: 700,
36
- background: 'var(--accent, #7c3aed)',
37
- color: '#fff',
38
- borderRadius: '0.25rem',
39
- textTransform: 'uppercase',
40
- letterSpacing: '0.03em',
41
- whiteSpace: 'nowrap',
42
- display: 'inline-flex',
43
- alignItems: 'center',
44
- }, children: "PRO" }));
45
- }
46
- /** Inline subscription status: PRO badge or "Free" with optional upgrade link. */
47
- export function SubscriptionStatus({ app, showUpgrade = true }) {
48
- const { subscription, isPro, loading, upgrade } = useProSubscription(app);
49
- if (loading) {
50
- return _jsx("span", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)' }, children: "..." });
51
- }
52
- if (isPro) {
53
- const renewal = subscription?.cancelAtPeriodEnd
54
- ? 'Cancels at period end'
55
- : subscription?.currentPeriodEnd
56
- ? `Renews ${new Date(subscription.currentPeriodEnd).toLocaleDateString()}`
57
- : '';
58
- return (_jsxs("span", { style: { display: 'inline-flex', alignItems: 'center', gap: '0.4rem' }, children: [_jsx(ProBadge, { size: "md" }), renewal && _jsx("span", { style: { fontSize: '0.75rem', color: 'var(--muted, #64748b)' }, children: renewal })] }));
59
- }
60
- return (_jsxs("span", { style: { display: 'inline-flex', alignItems: 'center', gap: '0.5rem' }, children: [_jsx("span", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)' }, children: "Free plan" }), showUpgrade && (_jsx("button", { onClick: () => upgrade(), style: {
61
- background: 'none',
62
- border: '1px solid var(--accent, #7c3aed)',
63
- color: 'var(--accent, #7c3aed)',
64
- padding: '0.2rem 0.6rem',
65
- borderRadius: 'var(--radius-sm, 0.5rem)',
66
- fontSize: '0.75rem',
67
- fontWeight: 600,
68
- cursor: 'pointer',
69
- fontFamily: 'inherit',
70
- }, children: "Upgrade" }))] }));
71
- }
72
- /** Styled card prompting the user to upgrade to Pro. */
73
- export function UpgradeCard({ app, title = 'Upgrade to Pro', description = 'Unlock all premium features with a Pro subscription.', priceLabel = '$9/month', features = ['Cloud sync across devices', 'AI-powered features', 'Unlimited storage', 'Priority support'], }) {
74
- const { upgrade } = useProSubscription(app);
75
- return (_jsxs("div", { style: {
76
- background: 'var(--surface, #ffffff)',
77
- border: '1px solid var(--accent, #7c3aed)',
78
- borderRadius: 'var(--radius, 0.75rem)',
79
- padding: '1.75rem',
80
- maxWidth: 400,
81
- }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.5rem', marginBottom: '0.5rem' }, children: [_jsx("h3", { style: { fontSize: '1.25rem', fontWeight: 800, color: 'var(--ink-strong, var(--ink, #0f172a))', margin: 0 }, children: title }), _jsx(ProBadge, { size: "md" })] }), _jsx("p", { style: { fontSize: '0.9rem', color: 'var(--muted, #64748b)', marginBottom: '1rem' }, children: description }), features.length > 0 && (_jsx("ul", { style: { listStyle: 'none', padding: 0, margin: '0 0 1.25rem' }, children: features.map((f, i) => (_jsxs("li", { style: {
82
- padding: '0.35rem 0',
83
- fontSize: '0.85rem',
84
- color: 'var(--ink, #1e293b)',
85
- borderBottom: '1px solid var(--border, #e2e8f0)',
86
- display: 'flex',
87
- alignItems: 'center',
88
- gap: '0.5rem',
89
- }, children: [_jsx("span", { style: { color: 'var(--accent, #7c3aed)', fontWeight: 700 }, children: "+" }), f] }, i))) })), _jsxs("button", { onClick: () => upgrade(), style: {
90
- width: '100%',
91
- background: 'var(--accent, #7c3aed)',
92
- color: '#fff',
93
- border: 'none',
94
- padding: '0.75rem',
95
- borderRadius: 'var(--radius, 0.75rem)',
96
- fontSize: '0.9rem',
97
- fontWeight: 700,
98
- cursor: 'pointer',
99
- fontFamily: 'inherit',
100
- }, children: ["Subscribe \u2014 ", priceLabel] })] }));
101
- }
102
- /** Button that opens the Stripe billing portal. */
103
- export function BillingButton({ app, label = 'Manage billing', variant = 'secondary' }) {
104
- const [loading, setLoading] = useState(false);
105
- const handleClick = useCallback(async () => {
106
- setLoading(true);
107
- try {
108
- await app.subscription.openPortal(window.location.href);
109
- }
110
- catch { }
111
- finally {
112
- setLoading(false);
113
- }
114
- }, [app]);
115
- const baseStyle = {
116
- padding: '0.6rem 1.25rem',
117
- borderRadius: 'var(--radius, 0.75rem)',
118
- fontSize: '0.85rem',
119
- fontWeight: 600,
120
- cursor: loading ? 'wait' : 'pointer',
121
- fontFamily: 'inherit',
122
- opacity: loading ? 0.7 : 1,
123
- };
124
- const variants = {
125
- primary: { ...baseStyle, background: 'var(--accent, #7c3aed)', color: '#fff', border: 'none' },
126
- secondary: { ...baseStyle, background: 'transparent', color: 'var(--ink, #1e293b)', border: '1px solid var(--border, #e2e8f0)' },
127
- ghost: { ...baseStyle, background: 'none', color: 'var(--accent, #7c3aed)', border: 'none', padding: '0.4rem 0.75rem' },
128
- };
129
- return (_jsx("button", { onClick: handleClick, disabled: loading, style: variants[variant], children: loading ? 'Opening...' : label }));
130
- }
131
- /** Avatar button that opens dropdown with Pro features: badge, billing, theme, sign out. */
132
- export function ProfileMenu({ app, showThemeToggle = true, showBilling = true, children }) {
133
- const { user, signOut, deleteAccount } = useProAuth(app);
134
- const { subscription, isPro, manageBilling } = useProSubscription(app);
135
- const [open, setOpen] = useState(false);
136
- const ref = useRef(null);
137
- useEffect(() => {
138
- if (!open)
139
- return;
140
- const handler = (e) => {
141
- if (ref.current && !ref.current.contains(e.target))
142
- setOpen(false);
143
- };
144
- document.addEventListener('mousedown', handler);
145
- return () => document.removeEventListener('mousedown', handler);
146
- }, [open]);
147
- if (!user)
148
- return null;
149
- const handleSignOut = () => { signOut(); setOpen(false); };
150
- const handleBilling = async () => { await manageBilling(); setOpen(false); };
151
- const handleDelete = async () => {
152
- const subClause = subscription?.status === 'active' ? ' and cancels your subscription' : '';
153
- if (!confirm(`Delete your account? This permanently removes ALL your data across ALL apps${subClause}. This cannot be undone.`))
154
- return;
155
- if (!confirm('Are you absolutely sure? Last chance.'))
156
- return;
157
- await deleteAccount();
158
- setOpen(false);
159
- };
160
- return (_jsxs("div", { ref: ref, style: { position: 'relative' }, children: [_jsx("button", { onClick: () => setOpen(!open), style: {
161
- background: 'none',
162
- border: '2px solid var(--border, #e2e8f0)',
163
- borderRadius: '50%',
164
- padding: 0,
165
- cursor: 'pointer',
166
- width: 32,
167
- height: 32,
168
- overflow: 'hidden',
169
- display: 'block',
170
- }, children: user.avatarUrl ? (_jsx("img", { src: user.avatarUrl, alt: user.login, width: 28, height: 28, style: { borderRadius: '50%', display: 'block' } })) : (_jsx("div", { style: { width: 28, height: 28, borderRadius: '50%', background: 'var(--accent, #7c3aed)', color: '#fff', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: 13, fontWeight: 700 }, children: user.login.charAt(0).toUpperCase() })) }), open && (_jsxs("div", { style: {
171
- position: 'absolute', top: 40, right: 0,
172
- background: 'var(--surface, #ffffff)',
173
- border: '1px solid var(--border, #e2e8f0)',
174
- borderRadius: 'var(--radius, 0.75rem)',
175
- boxShadow: '0 4px 20px rgba(0,0,0,0.1)',
176
- minWidth: 220, padding: '0.5rem 0', zIndex: 100,
177
- }, children: [_jsxs("div", { style: { padding: '0.5rem 1rem', borderBottom: '1px solid var(--border, #e2e8f0)', display: 'flex', alignItems: 'center', gap: '0.5rem' }, children: [_jsx("strong", { style: { fontSize: '0.85rem', color: 'var(--ink, #1e293b)' }, children: user.login }), isPro && _jsx(ProBadge, {})] }), showThemeToggle && (_jsxs("div", { style: { padding: '0.5rem 1rem', borderBottom: '1px solid var(--border, #e2e8f0)', display: 'flex', alignItems: 'center', justifyContent: 'space-between' }, children: [_jsx("span", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)' }, children: "Theme" }), _jsx(ThemeToggleInline, {})] })), showBilling && isPro && (_jsx("button", { onClick: handleBilling, style: menuItemStyle, children: "Manage billing" })), children, _jsx("button", { onClick: handleSignOut, style: menuItemStyle, children: "Sign out" }), _jsx("button", { onClick: handleDelete, style: { ...menuItemStyle, color: '#dc2626' }, children: "Delete account" })] }))] }));
178
- }
179
- /** Inline theme toggle for menu (imports from same file to avoid circular) */
180
- function ThemeToggleInline() {
181
- const { theme, preference, setPreference } = useTheme();
182
- const cycle = useCallback(() => {
183
- const order = ['system', 'light', 'dark'];
184
- const idx = order.indexOf(preference);
185
- setPreference(order[(idx + 1) % order.length]);
186
- }, [preference, setPreference]);
187
- const icon = theme === 'dark' ? (_jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [_jsx("circle", { cx: "12", cy: "12", r: "5" }), _jsx("line", { x1: "12", y1: "1", x2: "12", y2: "3" }), _jsx("line", { x1: "12", y1: "21", x2: "12", y2: "23" }), _jsx("line", { x1: "4.22", y1: "4.22", x2: "5.64", y2: "5.64" }), _jsx("line", { x1: "18.36", y1: "18.36", x2: "19.78", y2: "19.78" }), _jsx("line", { x1: "1", y1: "12", x2: "3", y2: "12" }), _jsx("line", { x1: "21", y1: "12", x2: "23", y2: "12" }), _jsx("line", { x1: "4.22", y1: "19.78", x2: "5.64", y2: "18.36" }), _jsx("line", { x1: "18.36", y1: "5.64", x2: "19.78", y2: "4.22" })] })) : (_jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: _jsx("path", { d: "M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" }) }));
188
- return (_jsx("button", { onClick: cycle, "aria-label": `Theme: ${preference}`, style: {
189
- width: 32, height: 32, borderRadius: 'var(--radius-sm, 0.5rem)',
190
- border: '1px solid var(--border, #e2e8f0)', background: 'var(--surface, #ffffff)',
191
- color: 'var(--ink, #1e293b)', display: 'inline-flex', alignItems: 'center',
192
- justifyContent: 'center', cursor: 'pointer', padding: 0, fontFamily: 'inherit',
193
- }, children: icon }));
194
- }
195
- const menuItemStyle = {
196
- display: 'block', width: '100%', padding: '0.5rem 1rem',
197
- background: 'none', border: 'none', textAlign: 'left',
198
- fontSize: '0.85rem', cursor: 'pointer',
199
- color: 'var(--ink, #1e293b)', fontFamily: 'inherit',
200
- };
201
- /** Full-page profile/settings with subscription info, billing, theme, danger zone. */
202
- export function ProProfilePage({ app, showThemeToggle = true }) {
203
- const { user, loading, signOut, deleteAccount } = useProAuth(app);
204
- const { subscription, isPro, loading: subLoading, upgrade, manageBilling } = useProSubscription(app);
205
- const { preference, setPreference } = useTheme();
206
- if (loading) {
207
- return _jsx("div", { style: { padding: '2rem', textAlign: 'center', color: 'var(--muted, #64748b)' }, children: "Loading..." });
208
- }
209
- if (!user) {
210
- return (_jsxs("div", { style: { padding: '2rem', textAlign: 'center' }, children: [_jsx("p", { style: { color: 'var(--muted, #64748b)', marginBottom: '1rem' }, children: "Sign in to view your profile." }), _jsx(SignInButton, { app: app })] }));
211
- }
212
- const handleDelete = async () => {
213
- const subClause = subscription?.status === 'active' ? ' and cancels your subscription' : '';
214
- if (!confirm(`Delete your account? This permanently removes ALL your data across ALL apps${subClause}. This cannot be undone.`))
215
- return;
216
- if (!confirm('Are you absolutely sure? Last chance.'))
217
- return;
218
- await deleteAccount();
219
- };
220
- const themeOptions = [
221
- { value: 'system', label: 'System' },
222
- { value: 'light', label: 'Light' },
223
- { value: 'dark', label: 'Dark' },
224
- ];
225
- return (_jsxs("div", { style: { maxWidth: 520, margin: '0 auto', padding: '2rem 1rem' }, children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '1rem', marginBottom: '2rem' }, children: [user.avatarUrl ? (_jsx("img", { src: user.avatarUrl, alt: user.login, width: 64, height: 64, style: { borderRadius: '50%' } })) : (_jsx("div", { style: { width: 64, height: 64, borderRadius: '50%', background: 'var(--accent, #7c3aed)', color: '#fff', display: 'flex', alignItems: 'center', justifyContent: 'center', fontSize: 28, fontWeight: 700 }, children: user.login.charAt(0).toUpperCase() })), _jsxs("div", { children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.5rem' }, children: [_jsx("span", { style: { fontSize: '1.25rem', fontWeight: 700, color: 'var(--ink-strong, var(--ink, #0f172a))' }, children: user.login }), isPro && _jsx(ProBadge, { size: "md" })] }), _jsx("div", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)' }, children: "ProAppStore account" })] })] }), _jsx(Section, { title: "Subscription", children: subLoading ? (_jsx("p", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)' }, children: "Loading..." })) : isPro ? (_jsxs("div", { children: [_jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.5rem', marginBottom: '0.75rem' }, children: [_jsx(ProBadge, { size: "lg" }), _jsx("span", { style: { fontSize: '0.9rem', fontWeight: 600, color: 'var(--ink, #1e293b)' }, children: "Active" })] }), subscription?.currentPeriodEnd && (_jsxs("p", { style: { fontSize: '0.82rem', color: 'var(--muted, #64748b)', marginBottom: '0.75rem' }, children: [subscription.cancelAtPeriodEnd ? 'Cancels' : 'Renews', " on ", new Date(subscription.currentPeriodEnd).toLocaleDateString()] })), _jsx(BillingButton, { app: app, variant: "secondary" })] })) : (_jsxs("div", { children: [_jsx("p", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)', marginBottom: '0.75rem' }, children: "You're on the free plan. Upgrade to unlock all premium features." }), _jsx("button", { onClick: () => upgrade(), style: {
226
- background: 'var(--accent, #7c3aed)', color: '#fff', border: 'none',
227
- padding: '0.6rem 1.25rem', borderRadius: 'var(--radius, 0.75rem)',
228
- fontSize: '0.85rem', fontWeight: 700, cursor: 'pointer', fontFamily: 'inherit',
229
- }, children: "Upgrade to Pro \u2014 $9/mo" })] })) }), showThemeToggle && (_jsx(Section, { title: "Appearance", children: _jsx("div", { style: { display: 'flex', gap: '0.5rem' }, children: themeOptions.map((opt) => (_jsx("button", { onClick: () => setPreference(opt.value), style: {
230
- flex: 1, padding: '0.5rem',
231
- borderRadius: 'var(--radius-sm, 0.5rem)',
232
- border: preference === opt.value ? '2px solid var(--accent, #7c3aed)' : '1px solid var(--border, #e2e8f0)',
233
- background: preference === opt.value ? 'var(--accent-soft, #f5f3ff)' : 'transparent',
234
- color: preference === opt.value ? 'var(--accent, #7c3aed)' : 'var(--muted, #64748b)',
235
- fontWeight: preference === opt.value ? 700 : 500,
236
- fontSize: '0.85rem', cursor: 'pointer', fontFamily: 'inherit',
237
- }, children: opt.label }, opt.value))) }) })), _jsx("button", { onClick: signOut, style: {
238
- width: '100%', padding: '0.75rem',
239
- borderRadius: 'var(--radius, 0.75rem)',
240
- border: '1px solid var(--border, #e2e8f0)',
241
- background: 'var(--surface, #ffffff)',
242
- color: 'var(--ink, #1e293b)',
243
- fontSize: '0.9rem', fontWeight: 600,
244
- cursor: 'pointer', marginBottom: '1.5rem', fontFamily: 'inherit',
245
- }, children: "Sign out" }), _jsxs("div", { style: { border: '1px solid #fecaca', borderRadius: 'var(--radius, 0.75rem)', padding: '1.25rem' }, children: [_jsx("div", { style: { fontSize: '0.9rem', fontWeight: 700, color: '#dc2626', marginBottom: '0.5rem' }, children: "Danger zone" }), _jsxs("p", { style: { fontSize: '0.85rem', color: 'var(--muted, #64748b)', marginBottom: '0.75rem' }, children: ["Permanently delete your account and all data across all apps.", isPro && ' Your subscription will be cancelled.'] }), _jsx("button", { onClick: handleDelete, style: {
246
- padding: '0.5rem 1rem', borderRadius: 'var(--radius-sm, 0.5rem)',
247
- border: '1px solid #dc2626', background: 'transparent',
248
- color: '#dc2626', fontSize: '0.85rem', fontWeight: 600,
249
- cursor: 'pointer', fontFamily: 'inherit',
250
- }, children: "Delete account" })] })] }));
251
- }
252
- /** Renders the appropriate gate screen (loading, sign-in, or upgrade). */
253
- export function GateScreen({ gate, app, appName }) {
254
- if (gate === 'loading') {
255
- return (_jsx("div", { style: { minHeight: '100dvh', display: 'flex', alignItems: 'center', justifyContent: 'center' }, children: _jsx("p", { style: { color: 'var(--muted, #64748b)' }, children: "Loading..." }) }));
256
- }
257
- if (gate === 'signed-out') {
258
- return (_jsx("div", { style: { minHeight: '100dvh', display: 'flex', alignItems: 'center', justifyContent: 'center', padding: '2rem' }, children: _jsxs("div", { style: { maxWidth: 400, textAlign: 'center' }, children: [_jsx("h1", { style: { fontSize: '1.5rem', fontWeight: 800, marginBottom: '0.5rem', color: 'var(--ink, #1e293b)' }, children: appName || 'ProAppStore' }), _jsx("p", { style: { color: 'var(--muted, #64748b)', fontSize: '0.9rem', marginBottom: '1rem' }, children: "Sign in to your ProAppStore account to continue." }), _jsx(SignInButton, { app: app }), _jsx("p", { style: { color: 'var(--muted, #64748b)', fontSize: '0.75rem', marginTop: '0.75rem' }, children: "One account for all Pro apps." })] }) }));
259
- }
260
- // no-subscription
261
- return (_jsx("div", { style: { minHeight: '100dvh', display: 'flex', alignItems: 'center', justifyContent: 'center', padding: '2rem' }, children: _jsx(UpgradeCard, { app: app, title: "Pro subscription required", description: `${appName || 'This app'} requires an active ProAppStore subscription.` }) }));
262
- }
263
- // ---------------------------------------------------------------------------
264
- // Section helper (internal)
265
- // ---------------------------------------------------------------------------
266
- function Section({ title, children }) {
267
- return (_jsxs("div", { style: {
268
- background: 'var(--surface, #ffffff)',
269
- border: '1px solid var(--border, #e2e8f0)',
270
- borderRadius: 'var(--radius, 0.75rem)',
271
- padding: '1.25rem',
272
- marginBottom: '1rem',
273
- }, children: [_jsx("div", { style: { fontSize: '0.9rem', fontWeight: 700, marginBottom: '0.75rem', color: 'var(--ink, #1e293b)' }, children: title }), children] }));
274
- }
10
+ // Pro-branded primitives + subscription components
11
+ export { SignInButton, ProBadge, SubscriptionStatus, UpgradeCard, BillingButton } from './ui-pro-components.js';
12
+ // ProfileMenu (Pro-enhanced)
13
+ export { ProfileMenu } from './ui-profile-menu.js';
14
+ // ProProfilePage
15
+ export { ProProfilePage } from './ui-profile-page.js';
16
+ // GateScreen
17
+ export { GateScreen } from './ui-gate.js';
275
18
  //# sourceMappingURL=ui.js.map
package/dist/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,4BAA4B;AAC5B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzE,mDAAmD;AACnD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAShH,6BAA6B;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,iBAAiB;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,aAAa;AACb,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proappstore/sdk",
3
- "version": "1.16.3",
3
+ "version": "1.16.4",
4
4
  "description": "Browser SDK for paid apps on proappstore.online — subscriptions, license keys, premium modules.",
5
5
  "license": "MIT",
6
6
  "type": "module",