@proappstore/sdk 1.16.19 → 1.16.21
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/README.md +36 -5
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/shell.d.ts +32 -1
- package/dist/shell.d.ts.map +1 -1
- package/dist/shell.js +18 -3
- package/dist/shell.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -72,14 +72,15 @@ interface MigrateResult {
|
|
|
72
72
|
|
|
73
73
|
### Auth
|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
PAS-owned auth across all ProAppStore apps. GitHub is the default OAuth
|
|
76
|
+
provider; Google OAuth and email magic links are also supported.
|
|
76
77
|
|
|
77
78
|
```ts
|
|
78
79
|
await app.auth.init()
|
|
79
80
|
app.auth.onChange((user) => console.log(user))
|
|
80
81
|
app.auth.signIn() // GitHub (default)
|
|
81
82
|
app.auth.signIn('google') // Google
|
|
82
|
-
app.auth.
|
|
83
|
+
app.auth.signInWithEmail('alice@example.com')
|
|
83
84
|
app.auth.signOut()
|
|
84
85
|
```
|
|
85
86
|
|
|
@@ -470,7 +471,7 @@ Pass `{ allowFree: true }` to skip the subscription check (lets free users throu
|
|
|
470
471
|
|
|
471
472
|
## ProShell Component
|
|
472
473
|
|
|
473
|
-
A React component that handles auth gates, subscription checks, and
|
|
474
|
+
A React component that handles auth gates, subscription checks, provider context, and optional platform chrome with topbar, user menu, text size control, and footer.
|
|
474
475
|
|
|
475
476
|
```tsx
|
|
476
477
|
import { initPro } from '@proappstore/sdk'
|
|
@@ -494,13 +495,43 @@ Props:
|
|
|
494
495
|
| `app` | `ProAppStore` | SDK instance from `initPro()` |
|
|
495
496
|
| `children` | `ReactNode` | App content (rendered only when gates pass) |
|
|
496
497
|
| `appName` | `string?` | Name shown in the topbar |
|
|
497
|
-
| `allowFree` | `boolean?` | Skip subscription gate (default: `
|
|
498
|
+
| `allowFree` | `boolean?` | Skip subscription gate (default: `true` until platform billing is live) |
|
|
499
|
+
| `showThemeToggle` | `boolean?` | Show theme toggle in the profile menu |
|
|
500
|
+
| `menuItems` | `{ label: string; onClick: () => void }[]` | Extra profile dropdown items |
|
|
501
|
+
| `hideTopbar` | `boolean?` | Omit the default topbar |
|
|
502
|
+
| `hideFooter` | `boolean?` | Omit the default footer |
|
|
503
|
+
| `renderTopbar` | `(ctx) => ReactNode` | Replace the default topbar |
|
|
504
|
+
| `renderFooter` | `(ctx) => ReactNode` | Replace the default footer |
|
|
498
505
|
|
|
499
506
|
ProShell handles:
|
|
500
507
|
- Auth initialization and sign-in gate
|
|
501
508
|
- Subscription check and upgrade wall (unless `allowFree=true`)
|
|
502
509
|
- Topbar with avatar, app name, text size toggle, and user menu (sign out, manage billing, delete account)
|
|
503
510
|
|
|
511
|
+
Apps with their own primary navigation should not stack a second navbar under the default shell. Replace the topbar while keeping ProShell gates:
|
|
512
|
+
|
|
513
|
+
```tsx
|
|
514
|
+
<ProShell
|
|
515
|
+
app={app}
|
|
516
|
+
appName="Chess Academy"
|
|
517
|
+
renderTopbar={({ appName, profileMenu, textSizeToggle }) => (
|
|
518
|
+
<header className="top-nav">
|
|
519
|
+
<a href="/">{appName}</a>
|
|
520
|
+
<nav>
|
|
521
|
+
<a href="/students">Students</a>
|
|
522
|
+
<a href="/tournaments">Tournaments</a>
|
|
523
|
+
</nav>
|
|
524
|
+
{textSizeToggle}
|
|
525
|
+
{profileMenu}
|
|
526
|
+
</header>
|
|
527
|
+
)}
|
|
528
|
+
>
|
|
529
|
+
<ChessAcademy />
|
|
530
|
+
</ProShell>
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
For a fully custom layout, use `<ProShell app={app} hideTopbar hideFooter>` and compose `ProfileMenu`, `SignInButton`, `GateScreen`, and hooks from `@proappstore/sdk/ui` and `@proappstore/sdk/hooks`.
|
|
534
|
+
|
|
504
535
|
## UI Components
|
|
505
536
|
|
|
506
537
|
Import from `@proappstore/sdk/ui`:
|
|
@@ -512,7 +543,7 @@ import { Avatar, SignInButton, ThemeToggle, TextSizeToggle, ProBadge, ProfileMen
|
|
|
512
543
|
- **TextSizeToggle** -- A/A+/A- button, cycles default/large/small text size. No props. Persists to localStorage.
|
|
513
544
|
- **ThemeToggle** -- Sun/moon button, cycles system/light/dark. No props.
|
|
514
545
|
|
|
515
|
-
See the [UI Component Library](https://proappstore.online/
|
|
546
|
+
See the [UI Component Library](https://kb.proappstore.online/platform/ui/) for the full list.
|
|
516
547
|
|
|
517
548
|
## Per-app SQL Database
|
|
518
549
|
|
package/dist/index.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export { useProAuth, useProSubscription, useProGate, useProNotifications } from
|
|
|
39
39
|
export { ProProvider, useApp } from './provider.js';
|
|
40
40
|
export type { ProProviderProps } from './provider.js';
|
|
41
41
|
export { ProShell } from './shell.js';
|
|
42
|
-
export type { ProShellProps, MenuItem } from './shell.js';
|
|
42
|
+
export type { ProShellProps, ProShellRenderContext, MenuItem } from './shell.js';
|
|
43
43
|
export { Avatar, ThemeToggle, TextSizeToggle, SignInButton, ProfileMenu, ProBadge, SubscriptionStatus, UpgradeCard, BillingButton, GateScreen, ProProfilePage, } from './ui.js';
|
|
44
44
|
/**
|
|
45
45
|
* Pro SDK instance — all features hit the PAS backend.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/shell.d.ts
CHANGED
|
@@ -1,9 +1,27 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
import type { ProAppStore } from './index.js';
|
|
3
|
+
import type { User } from './base-types.js';
|
|
4
|
+
import type { Subscription } from './types.js';
|
|
3
5
|
export interface MenuItem {
|
|
4
6
|
label: string;
|
|
5
7
|
onClick: () => void;
|
|
6
8
|
}
|
|
9
|
+
export interface ProShellRenderContext {
|
|
10
|
+
/** The SDK instance passed to ProShell. */
|
|
11
|
+
app: ProAppStore;
|
|
12
|
+
/** App name passed to ProShell, if any. */
|
|
13
|
+
appName: string | undefined;
|
|
14
|
+
/** Signed-in user. ProShell only calls render functions after auth gates pass. */
|
|
15
|
+
user: User;
|
|
16
|
+
/** Current subscription result, or null if unavailable/free-gated. */
|
|
17
|
+
subscription: Subscription | null;
|
|
18
|
+
/** Text size control used by the default shell. */
|
|
19
|
+
textSizeToggle: ReactNode;
|
|
20
|
+
/** Platform profile dropdown, including any menuItems passed to ProShell. */
|
|
21
|
+
profileMenu: ReactNode;
|
|
22
|
+
/** PRO badge when the current subscription is active; otherwise null. */
|
|
23
|
+
proBadge: ReactNode;
|
|
24
|
+
}
|
|
7
25
|
export interface ProShellProps {
|
|
8
26
|
/** The ProAppStore SDK instance from initPro(). */
|
|
9
27
|
app: ProAppStore;
|
|
@@ -22,6 +40,19 @@ export interface ProShellProps {
|
|
|
22
40
|
showThemeToggle?: boolean;
|
|
23
41
|
/** Custom items added to the profile dropdown (above sign-out). */
|
|
24
42
|
menuItems?: MenuItem[];
|
|
43
|
+
/** Hide the default ProShell topbar. Use when the app renders its own navigation. */
|
|
44
|
+
hideTopbar?: boolean;
|
|
45
|
+
/** Hide the default ProShell footer. */
|
|
46
|
+
hideFooter?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Replace the default topbar while keeping ProShell's auth/subscription gates.
|
|
49
|
+
*
|
|
50
|
+
* Use the provided `profileMenu`, `textSizeToggle`, and `proBadge` nodes to
|
|
51
|
+
* keep platform account controls consistent in custom app navigation.
|
|
52
|
+
*/
|
|
53
|
+
renderTopbar?: (ctx: ProShellRenderContext) => ReactNode;
|
|
54
|
+
/** Replace the default footer. Return null to omit it. */
|
|
55
|
+
renderFooter?: (ctx: ProShellRenderContext) => ReactNode;
|
|
25
56
|
}
|
|
26
57
|
/**
|
|
27
58
|
* ProShell — platform-level Shell for all ProAppStore apps.
|
|
@@ -49,5 +80,5 @@ export interface ProShellProps {
|
|
|
49
80
|
* }
|
|
50
81
|
* ```
|
|
51
82
|
*/
|
|
52
|
-
export declare function ProShell({ app, children, appName, allowFree, showThemeToggle, menuItems }: ProShellProps): import("react/jsx-runtime").JSX.Element;
|
|
83
|
+
export declare function ProShell({ app, children, appName, allowFree, showThemeToggle, menuItems, hideTopbar, hideFooter, renderTopbar, renderFooter, }: ProShellProps): import("react/jsx-runtime").JSX.Element;
|
|
53
84
|
//# sourceMappingURL=shell.d.ts.map
|
package/dist/shell.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../src/shell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../src/shell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,GAAG,EAAE,WAAW,CAAC;IACjB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,kFAAkF;IAClF,IAAI,EAAE,IAAI,CAAC;IACX,sEAAsE;IACtE,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,mDAAmD;IACnD,cAAc,EAAE,SAAS,CAAC;IAC1B,6EAA6E;IAC7E,WAAW,EAAE,SAAS,CAAC;IACvB,yEAAyE;IACzE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,GAAG,EAAE,WAAW,CAAC;IACjB,6EAA6E;IAC7E,QAAQ,EAAE,SAAS,CAAC;IACpB,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,mEAAmE;IACnE,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;IACvB,qFAAqF;IACrF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,SAAS,CAAC;IACzD,0DAA0D;IAC1D,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,SAAS,CAAC;CAC1D;AAID;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,QAAQ,CAAC,EACvB,GAAG,EACH,QAAQ,EACR,OAAO,EACP,SAAgB,EAChB,eAAsB,EACtB,SAAS,EACT,UAAkB,EAClB,UAAkB,EAClB,YAAY,EACZ,YAAY,GACb,EAAE,aAAa,2CA6Ff"}
|
package/dist/shell.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useEffect } from 'react';
|
|
3
|
-
import { ProfileMenu,
|
|
3
|
+
import { ProfileMenu, ProBadge, GateScreen, TextSizeToggle } from './ui.js';
|
|
4
4
|
import { ProProvider } from './provider.js';
|
|
5
5
|
/**
|
|
6
6
|
* ProShell — platform-level Shell for all ProAppStore apps.
|
|
@@ -28,7 +28,7 @@ import { ProProvider } from './provider.js';
|
|
|
28
28
|
* }
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
-
export function ProShell({ app, children, appName, allowFree = true, showThemeToggle = true, menuItems }) {
|
|
31
|
+
export function ProShell({ app, children, appName, allowFree = true, showThemeToggle = true, menuItems, hideTopbar = false, hideFooter = false, renderTopbar, renderFooter, }) {
|
|
32
32
|
const [user, setUser] = useState(app.auth.user);
|
|
33
33
|
const [subscription, setSubscription] = useState(null);
|
|
34
34
|
const [gate, setGate] = useState('loading');
|
|
@@ -61,8 +61,23 @@ export function ProShell({ app, children, appName, allowFree = true, showThemeTo
|
|
|
61
61
|
if (gate !== 'ready') {
|
|
62
62
|
return _jsx(GateScreen, { gate: gate, app: app, appName: appName });
|
|
63
63
|
}
|
|
64
|
+
if (!user) {
|
|
65
|
+
return _jsx(GateScreen, { gate: "signed-out", app: app, appName: appName });
|
|
66
|
+
}
|
|
67
|
+
const profileMenu = (_jsx(ProfileMenu, { app: app, showThemeToggle: showThemeToggle, children: menuItems?.map((item, i) => (_jsx("button", { onClick: item.onClick, style: menuItemStyle, children: item.label }, i))) }));
|
|
68
|
+
const shellContext = {
|
|
69
|
+
app,
|
|
70
|
+
appName,
|
|
71
|
+
user,
|
|
72
|
+
subscription,
|
|
73
|
+
textSizeToggle: _jsx(TextSizeToggle, {}),
|
|
74
|
+
profileMenu,
|
|
75
|
+
proBadge: subscription?.status === 'active' ? _jsx(ProBadge, {}) : null,
|
|
76
|
+
};
|
|
77
|
+
const topbar = renderTopbar ? renderTopbar(shellContext) : hideTopbar ? null : (_jsxs("header", { style: styles.topbar, children: [_jsxs("div", { style: styles.topbarLeft, children: [_jsx("a", { href: "https://proappstore.online", style: styles.logoLink, children: "Pro" }), appName && _jsx("span", { style: styles.appName, children: appName }), shellContext.proBadge] }), _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.5rem' }, children: [shellContext.textSizeToggle, shellContext.profileMenu] })] }));
|
|
78
|
+
const footer = renderFooter ? renderFooter(shellContext) : hideFooter ? null : (_jsxs("footer", { style: styles.footer, children: ["Part of", ' ', _jsx("a", { href: "https://proappstore.online", style: { color: 'var(--accent, #7c3aed)', fontWeight: 600, textDecoration: 'none' }, children: "ProAppStore" })] }));
|
|
64
79
|
// --- Ready: render app with topbar ---
|
|
65
|
-
return (_jsx(ProProvider, { app: app, children: _jsxs("div", { style: styles.shell, children: [
|
|
80
|
+
return (_jsx(ProProvider, { app: app, children: _jsxs("div", { style: styles.shell, children: [topbar, _jsx("main", { style: styles.main, children: children }), footer] }) }));
|
|
66
81
|
}
|
|
67
82
|
const menuItemStyle = {
|
|
68
83
|
display: 'block', width: '100%', padding: '0.5rem 1rem',
|
package/dist/shell.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../src/shell.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../src/shell.tsx"],"names":[],"mappings":"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"}
|