@proappstore/sdk 1.16.56 → 1.16.57
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 +30 -16
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/navbar-css.d.ts +13 -0
- package/dist/navbar-css.d.ts.map +1 -0
- package/dist/navbar-css.js +21 -0
- package/dist/navbar-css.js.map +1 -0
- package/dist/navbar.d.ts +41 -0
- package/dist/navbar.d.ts.map +1 -0
- package/dist/navbar.js +90 -0
- package/dist/navbar.js.map +1 -0
- package/dist/shell.css +8 -0
- package/dist/shell.d.ts +33 -3
- package/dist/shell.d.ts.map +1 -1
- package/dist/shell.js +22 -3
- package/dist/shell.js.map +1 -1
- package/dist/ui.d.ts +2 -0
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +2 -0
- package/dist/ui.js.map +1 -1
- package/package.json +6 -3
package/README.md
CHANGED
|
@@ -571,17 +571,23 @@ Pass `{ allowFree: true }` to skip the subscription check (lets free users throu
|
|
|
571
571
|
|
|
572
572
|
## ProShell Component
|
|
573
573
|
|
|
574
|
-
|
|
574
|
+
The app frame. It handles the auth gates, subscription checks, provider context, the topbar (app name, text size control, user menu), the footer, and the **main navigation**.
|
|
575
575
|
|
|
576
576
|
```tsx
|
|
577
|
-
import { initPro } from '@proappstore/sdk'
|
|
578
|
-
import { ProShell } from '@proappstore/sdk/shell'
|
|
577
|
+
import { initPro, ProShell } from '@proappstore/sdk'
|
|
579
578
|
|
|
580
579
|
const app = initPro({ appId: 'meetup' })
|
|
581
580
|
|
|
582
581
|
export default function App() {
|
|
583
582
|
return (
|
|
584
|
-
<ProShell
|
|
583
|
+
<ProShell
|
|
584
|
+
app={app}
|
|
585
|
+
appName="Meetup"
|
|
586
|
+
nav={[
|
|
587
|
+
{ label: 'Events', href: '/' },
|
|
588
|
+
{ label: 'Groups', href: '/groups' },
|
|
589
|
+
]}
|
|
590
|
+
>
|
|
585
591
|
<MeetupApp />
|
|
586
592
|
</ProShell>
|
|
587
593
|
)
|
|
@@ -595,32 +601,40 @@ Props:
|
|
|
595
601
|
| `app` | `ProAppStore` | SDK instance from `initPro()` |
|
|
596
602
|
| `children` | `ReactNode` | App content (rendered only when gates pass) |
|
|
597
603
|
| `appName` | `string?` | Name shown in the topbar |
|
|
604
|
+
| `nav` | `{ label: string; href: string; icon?: ReactNode }[]` | **The app's screens**, rendered as the main navigation in the topbar |
|
|
605
|
+
| `onNavigate` | `(href: string) => void` | Client-side navigation for nav clicks (e.g. a router's `navigate`); without it items are links |
|
|
606
|
+
| `renderNav` | `(ctx) => ReactNode` | Replace the built-in NavBar (`ctx`: `items`, `currentPath`, `onNavigate`) |
|
|
598
607
|
| `allowFree` | `boolean?` | Skip subscription gate (default: `true` until platform billing is live) |
|
|
599
608
|
| `showThemeToggle` | `boolean?` | Show theme toggle in the profile menu |
|
|
600
609
|
| `menuItems` | `{ label: string; onClick: () => void }[]` | Extra profile dropdown items |
|
|
601
|
-
| `hideTopbar` | `boolean?` | Omit the default topbar |
|
|
610
|
+
| `hideTopbar` | `boolean?` | Omit the default topbar (and the navigation) |
|
|
602
611
|
| `hideFooter` | `boolean?` | Omit the default footer |
|
|
603
|
-
| `renderTopbar` | `(ctx) => ReactNode` | Replace the default topbar |
|
|
612
|
+
| `renderTopbar` | `(ctx) => ReactNode` | Replace the default topbar; place `ctx.nav` in it |
|
|
604
613
|
| `renderFooter` | `(ctx) => ReactNode` | Replace the default footer |
|
|
605
614
|
|
|
606
615
|
ProShell handles:
|
|
607
|
-
- Auth initialization and sign-in gate
|
|
608
|
-
-
|
|
609
|
-
-
|
|
616
|
+
- Auth initialization and the sign-in gate
|
|
617
|
+
- The subscription check and upgrade wall (unless `allowFree=true`)
|
|
618
|
+
- The topbar with app name, text size toggle and user menu (sign out, manage billing, delete account)
|
|
619
|
+
- The main navigation from `nav`:
|
|
620
|
+
- a `<nav aria-label="Main">` landmark;
|
|
621
|
+
- `aria-current="page"` on the current route, following `location.pathname` and back/forward;
|
|
622
|
+
- a menu button below 640 px (`aria-expanded`, Escape to close);
|
|
623
|
+
- 44 px targets and visible focus.
|
|
624
|
+
|
|
625
|
+
Its styles are injected when the navbar renders, so no setup is needed. They are also available as `@proappstore/sdk/shell.css`.
|
|
610
626
|
|
|
611
|
-
|
|
627
|
+
Do not build navigation into a page, and do not stack a second navbar under the shell. A custom topbar keeps the gates and places the rendered `nav`:
|
|
612
628
|
|
|
613
629
|
```tsx
|
|
614
630
|
<ProShell
|
|
615
631
|
app={app}
|
|
616
632
|
appName="Chess Academy"
|
|
617
|
-
|
|
633
|
+
nav={[{ label: 'Students', href: '/students' }, { label: 'Tournaments', href: '/tournaments' }]}
|
|
634
|
+
renderTopbar={({ appName, nav, profileMenu, textSizeToggle }) => (
|
|
618
635
|
<header className="top-nav">
|
|
619
636
|
<a href="/">{appName}</a>
|
|
620
|
-
|
|
621
|
-
<a href="/students">Students</a>
|
|
622
|
-
<a href="/tournaments">Tournaments</a>
|
|
623
|
-
</nav>
|
|
637
|
+
{nav}
|
|
624
638
|
{textSizeToggle}
|
|
625
639
|
{profileMenu}
|
|
626
640
|
</header>
|
|
@@ -630,7 +644,7 @@ Apps with their own primary navigation should not stack a second navbar under th
|
|
|
630
644
|
</ProShell>
|
|
631
645
|
```
|
|
632
646
|
|
|
633
|
-
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`.
|
|
647
|
+
For a fully custom layout, use `<ProShell app={app} hideTopbar hideFooter>` and compose `NavBar`, `ProfileMenu`, `SignInButton`, `GateScreen`, and hooks from `@proappstore/sdk/ui` and `@proappstore/sdk/hooks`.
|
|
634
648
|
|
|
635
649
|
## UI Components
|
|
636
650
|
|
package/dist/index.d.ts
CHANGED
|
@@ -47,7 +47,9 @@ export { useProAuth, useProSubscription, useProGate, useProNotifications } from
|
|
|
47
47
|
export { ProProvider, useApp } from './provider.js';
|
|
48
48
|
export type { ProProviderProps } from './provider.js';
|
|
49
49
|
export { ProShell } from './shell.js';
|
|
50
|
-
export type { ProShellProps, ProShellRenderContext, MenuItem } from './shell.js';
|
|
50
|
+
export type { ProShellProps, ProShellRenderContext, ProShellNavContext, MenuItem } from './shell.js';
|
|
51
|
+
export { NavBar } from './navbar.js';
|
|
52
|
+
export type { NavBarProps, NavItem } from './navbar.js';
|
|
51
53
|
export { Avatar, ThemeToggle, TextSizeToggle, SignInButton, ProfileMenu, ProBadge, SubscriptionStatus, UpgradeCard, BillingButton, GateScreen, ProProfilePage, } from './ui.js';
|
|
52
54
|
/**
|
|
53
55
|
* 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/index.js
CHANGED
|
@@ -36,6 +36,7 @@ export { useAuth, useSubscription, useGate, useNotifications, useTheme } from '.
|
|
|
36
36
|
export { useProAuth, useProSubscription, useProGate, useProNotifications } from './hooks.js';
|
|
37
37
|
export { ProProvider, useApp } from './provider.js';
|
|
38
38
|
export { ProShell } from './shell.js';
|
|
39
|
+
export { NavBar } from './navbar.js';
|
|
39
40
|
export { Avatar, ThemeToggle, TextSizeToggle, SignInButton, ProfileMenu, ProBadge, SubscriptionStatus, UpgradeCard, BillingButton, GateScreen, ProProfilePage, } from './ui.js';
|
|
40
41
|
/**
|
|
41
42
|
* Pro SDK instance — all features hit the PAS backend.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,uEAAuE;AACvE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAK3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAuBrC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,iGAAiG;AACjG,wFAAwF;AACxF,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3F,0BAA0B;AAC1B,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EACL,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAC9D,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EACpE,cAAc,GACf,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,MAAM,OAAO,WAAW;IACb,IAAI,CAAO;IACX,EAAE,CAAK;IACP,QAAQ,CAAW;IACnB,KAAK,CAAQ;IACb,KAAK,CAAQ;IACb,KAAK,CAAW;IAChB,YAAY,CAAkB;IAC9B,OAAO,CAAa;IACpB,EAAE,CAAW;IACb,OAAO,CAAU;IACjB,IAAI,CAAO;IACX,aAAa,CAAgB;IAC7B,GAAG,CAAM;IACT,EAAE,CAAK;IACP,KAAK,CAAQ;IACb,KAAK,CAAQ;IACb,QAAQ,CAAW;IACnB,OAAO,CAAU;IACjB,OAAO,CAAU;IAC1B,6DAA6D;IACpD,MAAM,CAAS;IACxB,qFAAqF;IAC5E,IAAI,CAAO;IAEpB,YAAY,IAAoB;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,gCAAgC,CAAC;QACpE,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,KAAK,qBAAqB,CAAC,CAAC;QACxI,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3D,iFAAiF;QACjF,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,qEAAqE;QACrE,qEAAqE;QACrE,kCAAkC;QAClC,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC;gBAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,iDAAiD,CAAC,CAAC;QACzF,CAAC;QACD,+EAA+E;QAC/E,8EAA8E;QAC9E,8EAA8E;QAC9E,kBAAkB;QAClB,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,KAAK,KAAK,EAAE,CAAC;YACpC,IAAI,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;CACF;AAED,+EAA+E;AAC/E,MAAM,UAAU,OAAO,CAAC,IAAoB;IAC1C,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NavBar styles (#235) — the single source for both delivery paths:
|
|
3
|
+
* NavBar injects this into <head> at render (so an app needs no configuration),
|
|
4
|
+
* and the build writes it to dist/shell.css (`@proappstore/sdk/shell.css`) for
|
|
5
|
+
* apps that prefer to import it.
|
|
6
|
+
*
|
|
7
|
+
* Built on the canonical tokens only (PAS-UI-001), so it follows the app's
|
|
8
|
+
* light/dark theme. The Tailwind classes on NavBar's elements mirror these
|
|
9
|
+
* rules; Tailwind v4 emits utilities inside a cascade layer, so these unlayered
|
|
10
|
+
* rules win wherever the two meet and they cannot disagree.
|
|
11
|
+
*/
|
|
12
|
+
export declare const NAVBAR_CSS = ".pas-nav{position:relative;display:flex;align-items:center;flex:1 1 auto;min-width:0;margin:0 .5rem}\n.pas-nav__toggle{display:none;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0;border:1px solid var(--line);border-radius:10px;background:transparent;color:var(--ink);font:inherit;cursor:pointer}\n.pas-nav__list{display:flex;align-items:center;gap:.25rem;margin:0;padding:0;list-style:none;overflow-x:auto}\n.pas-nav__link{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:0 .75rem;border-radius:10px;color:var(--muted);font-size:.9rem;font-weight:600;text-decoration:none;white-space:nowrap}\n.pas-nav__link:hover{color:var(--ink);background:var(--line)}\n.pas-nav__link[aria-current=\"page\"]{color:var(--accent);background:var(--line)}\n.pas-nav__toggle:focus-visible,.pas-nav__link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}\n@media (max-width:639px){.pas-nav{flex:0 0 auto;margin:0}.pas-nav__toggle{display:inline-flex}.pas-nav__list{display:none;position:absolute;top:calc(100% + .5rem);left:0;z-index:60;flex-direction:column;align-items:stretch;min-width:12rem;padding:.5rem;overflow:visible;background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.12)}.pas-nav[data-open=\"true\"] .pas-nav__list{display:flex}}\n";
|
|
13
|
+
//# sourceMappingURL=navbar-css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navbar-css.d.ts","sourceRoot":"","sources":["../src/navbar-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,60CAQtB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NavBar styles (#235) — the single source for both delivery paths:
|
|
3
|
+
* NavBar injects this into <head> at render (so an app needs no configuration),
|
|
4
|
+
* and the build writes it to dist/shell.css (`@proappstore/sdk/shell.css`) for
|
|
5
|
+
* apps that prefer to import it.
|
|
6
|
+
*
|
|
7
|
+
* Built on the canonical tokens only (PAS-UI-001), so it follows the app's
|
|
8
|
+
* light/dark theme. The Tailwind classes on NavBar's elements mirror these
|
|
9
|
+
* rules; Tailwind v4 emits utilities inside a cascade layer, so these unlayered
|
|
10
|
+
* rules win wherever the two meet and they cannot disagree.
|
|
11
|
+
*/
|
|
12
|
+
export const NAVBAR_CSS = `.pas-nav{position:relative;display:flex;align-items:center;flex:1 1 auto;min-width:0;margin:0 .5rem}
|
|
13
|
+
.pas-nav__toggle{display:none;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0;border:1px solid var(--line);border-radius:10px;background:transparent;color:var(--ink);font:inherit;cursor:pointer}
|
|
14
|
+
.pas-nav__list{display:flex;align-items:center;gap:.25rem;margin:0;padding:0;list-style:none;overflow-x:auto}
|
|
15
|
+
.pas-nav__link{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:0 .75rem;border-radius:10px;color:var(--muted);font-size:.9rem;font-weight:600;text-decoration:none;white-space:nowrap}
|
|
16
|
+
.pas-nav__link:hover{color:var(--ink);background:var(--line)}
|
|
17
|
+
.pas-nav__link[aria-current="page"]{color:var(--accent);background:var(--line)}
|
|
18
|
+
.pas-nav__toggle:focus-visible,.pas-nav__link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
|
|
19
|
+
@media (max-width:639px){.pas-nav{flex:0 0 auto;margin:0}.pas-nav__toggle{display:inline-flex}.pas-nav__list{display:none;position:absolute;top:calc(100% + .5rem);left:0;z-index:60;flex-direction:column;align-items:stretch;min-width:12rem;padding:.5rem;overflow:visible;background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.12)}.pas-nav[data-open="true"] .pas-nav__list{display:flex}}
|
|
20
|
+
`;
|
|
21
|
+
//# sourceMappingURL=navbar-css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navbar-css.js","sourceRoot":"","sources":["../src/navbar-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;CAQzB,CAAC"}
|
package/dist/navbar.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/** One screen in the app's main navigation. */
|
|
3
|
+
export interface NavItem {
|
|
4
|
+
label: string;
|
|
5
|
+
/** Same-origin path, e.g. `/` or `/cases`. */
|
|
6
|
+
href: string;
|
|
7
|
+
/** Optional icon, rendered before the label (mark it `aria-hidden`). */
|
|
8
|
+
icon?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export interface NavBarProps {
|
|
11
|
+
items: NavItem[];
|
|
12
|
+
/**
|
|
13
|
+
* The route to mark as current. Defaults to `location.pathname`, kept in
|
|
14
|
+
* step with back/forward (`popstate`). Pass your router's location when you
|
|
15
|
+
* use one.
|
|
16
|
+
*/
|
|
17
|
+
currentPath?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Client-side navigation: called instead of a full page load on a plain
|
|
20
|
+
* left click. Without it the items are ordinary links.
|
|
21
|
+
*/
|
|
22
|
+
onNavigate?: (href: string) => void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* The browser's current path, following back/forward. `initial` wins when
|
|
26
|
+
* given (router-driven apps, server rendering).
|
|
27
|
+
*/
|
|
28
|
+
export declare function useCurrentPath(initial?: string): [string, (path: string) => void];
|
|
29
|
+
/** The item to mark current: an exact match, else the longest prefix (`/cases` for `/cases/42`). */
|
|
30
|
+
export declare function activeHref(items: NavItem[], path: string): string | null;
|
|
31
|
+
/**
|
|
32
|
+
* NavBar (#235) — the app's main navigation, rendered by ProShell's topbar
|
|
33
|
+
* from its `nav` prop, and usable on its own in a custom topbar.
|
|
34
|
+
*
|
|
35
|
+
* `<nav aria-label="Main">` landmark (PAS-UI-003), `aria-current="page"` on the
|
|
36
|
+
* current item, 44 px targets (PAS-UI-009), visible focus, and below 640 px a
|
|
37
|
+
* menu button (`aria-expanded` / `aria-controls`; Escape or a click outside
|
|
38
|
+
* closes it and returns focus). Renders nothing when there are no items.
|
|
39
|
+
*/
|
|
40
|
+
export declare function NavBar({ items, currentPath, onNavigate }: NavBarProps): import("react/jsx-runtime").JSX.Element | null;
|
|
41
|
+
//# sourceMappingURL=navbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navbar.d.ts","sourceRoot":"","sources":["../src/navbar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA2E,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGhH,+CAA+C;AAC/C,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,CAYjF;AAED,oGAAoG;AACpG,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOxE;AAYD;;;;;;;;GAQG;AACH,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,WAAW,kDAmErE"}
|
package/dist/navbar.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useId, useInsertionEffect, useRef, useState } from 'react';
|
|
3
|
+
import { NAVBAR_CSS } from './navbar-css.js';
|
|
4
|
+
/**
|
|
5
|
+
* The browser's current path, following back/forward. `initial` wins when
|
|
6
|
+
* given (router-driven apps, server rendering).
|
|
7
|
+
*/
|
|
8
|
+
export function useCurrentPath(initial) {
|
|
9
|
+
const [path, setPath] = useState(() => initial ?? (typeof window === 'undefined' ? '/' : window.location.pathname));
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (initial !== undefined) {
|
|
12
|
+
setPath(initial);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const sync = () => setPath(window.location.pathname);
|
|
16
|
+
window.addEventListener('popstate', sync);
|
|
17
|
+
return () => window.removeEventListener('popstate', sync);
|
|
18
|
+
}, [initial]);
|
|
19
|
+
return [path, setPath];
|
|
20
|
+
}
|
|
21
|
+
/** The item to mark current: an exact match, else the longest prefix (`/cases` for `/cases/42`). */
|
|
22
|
+
export function activeHref(items, path) {
|
|
23
|
+
let best = null;
|
|
24
|
+
for (const { href } of items) {
|
|
25
|
+
const matches = href === path || (href !== '/' && path.startsWith(`${href.replace(/\/+$/, '')}/`));
|
|
26
|
+
if (matches && (best === null || href.length > best.length))
|
|
27
|
+
best = href;
|
|
28
|
+
}
|
|
29
|
+
return best;
|
|
30
|
+
}
|
|
31
|
+
function useNavbarStyles() {
|
|
32
|
+
useInsertionEffect(() => {
|
|
33
|
+
if (document.getElementById('pas-nav-css'))
|
|
34
|
+
return;
|
|
35
|
+
const style = document.createElement('style');
|
|
36
|
+
style.id = 'pas-nav-css';
|
|
37
|
+
style.textContent = NAVBAR_CSS;
|
|
38
|
+
document.head.appendChild(style);
|
|
39
|
+
}, []);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* NavBar (#235) — the app's main navigation, rendered by ProShell's topbar
|
|
43
|
+
* from its `nav` prop, and usable on its own in a custom topbar.
|
|
44
|
+
*
|
|
45
|
+
* `<nav aria-label="Main">` landmark (PAS-UI-003), `aria-current="page"` on the
|
|
46
|
+
* current item, 44 px targets (PAS-UI-009), visible focus, and below 640 px a
|
|
47
|
+
* menu button (`aria-expanded` / `aria-controls`; Escape or a click outside
|
|
48
|
+
* closes it and returns focus). Renders nothing when there are no items.
|
|
49
|
+
*/
|
|
50
|
+
export function NavBar({ items, currentPath, onNavigate }) {
|
|
51
|
+
useNavbarStyles();
|
|
52
|
+
const [path, setPath] = useCurrentPath(currentPath);
|
|
53
|
+
const [open, setOpen] = useState(false);
|
|
54
|
+
const listId = useId();
|
|
55
|
+
const navRef = useRef(null);
|
|
56
|
+
const toggleRef = useRef(null);
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
if (!open)
|
|
59
|
+
return;
|
|
60
|
+
const close = (returnFocus) => {
|
|
61
|
+
setOpen(false);
|
|
62
|
+
if (returnFocus)
|
|
63
|
+
toggleRef.current?.focus();
|
|
64
|
+
};
|
|
65
|
+
const onKey = (e) => { if (e.key === 'Escape')
|
|
66
|
+
close(true); };
|
|
67
|
+
const onPointer = (e) => { if (!navRef.current?.contains(e.target))
|
|
68
|
+
close(false); };
|
|
69
|
+
document.addEventListener('keydown', onKey);
|
|
70
|
+
document.addEventListener('pointerdown', onPointer);
|
|
71
|
+
return () => {
|
|
72
|
+
document.removeEventListener('keydown', onKey);
|
|
73
|
+
document.removeEventListener('pointerdown', onPointer);
|
|
74
|
+
};
|
|
75
|
+
}, [open]);
|
|
76
|
+
if (items.length === 0)
|
|
77
|
+
return null;
|
|
78
|
+
const current = activeHref(items, path);
|
|
79
|
+
const follow = (e, href) => {
|
|
80
|
+
setOpen(false);
|
|
81
|
+
if (!onNavigate || e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey)
|
|
82
|
+
return;
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
onNavigate(href);
|
|
85
|
+
if (currentPath === undefined)
|
|
86
|
+
setPath(href);
|
|
87
|
+
};
|
|
88
|
+
return (_jsxs("nav", { ref: navRef, "aria-label": "Main", className: "pas-nav relative flex min-w-0 flex-1 items-center", "data-open": open ? 'true' : 'false', children: [_jsx("button", { ref: toggleRef, type: "button", className: "pas-nav__toggle inline-flex min-h-11 min-w-11 items-center justify-center rounded-[10px] border border-[var(--line)] text-[var(--ink)] focus-visible:outline-2 focus-visible:outline-[var(--accent)] sm:hidden", "aria-expanded": open, "aria-controls": listId, "aria-label": "Menu", onClick: () => setOpen((o) => !o), children: _jsx("svg", { "aria-hidden": "true", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", children: _jsx("path", { d: open ? 'M6 6l12 12M18 6L6 18' : 'M4 7h16M4 12h16M4 17h16' }) }) }), _jsx("ul", { id: listId, className: "pas-nav__list m-0 flex list-none items-center gap-1 p-0", children: items.map((item) => (_jsx("li", { children: _jsxs("a", { href: item.href, "aria-current": item.href === current ? 'page' : undefined, className: "pas-nav__link inline-flex min-h-11 items-center gap-1.5 rounded-[10px] px-3 text-sm font-semibold whitespace-nowrap text-[var(--muted)] no-underline hover:text-[var(--ink)] focus-visible:outline-2 focus-visible:outline-[var(--accent)] aria-[current=page]:text-[var(--accent)]", onClick: (e) => follow(e, item.href), children: [item.icon, item.label] }) }, item.href))) })] }));
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=navbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navbar.js","sourceRoot":"","sources":["../src/navbar.tsx"],"names":[],"mappings":"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"}
|
package/dist/shell.css
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
.pas-nav{position:relative;display:flex;align-items:center;flex:1 1 auto;min-width:0;margin:0 .5rem}
|
|
2
|
+
.pas-nav__toggle{display:none;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:0;border:1px solid var(--line);border-radius:10px;background:transparent;color:var(--ink);font:inherit;cursor:pointer}
|
|
3
|
+
.pas-nav__list{display:flex;align-items:center;gap:.25rem;margin:0;padding:0;list-style:none;overflow-x:auto}
|
|
4
|
+
.pas-nav__link{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;padding:0 .75rem;border-radius:10px;color:var(--muted);font-size:.9rem;font-weight:600;text-decoration:none;white-space:nowrap}
|
|
5
|
+
.pas-nav__link:hover{color:var(--ink);background:var(--line)}
|
|
6
|
+
.pas-nav__link[aria-current="page"]{color:var(--accent);background:var(--line)}
|
|
7
|
+
.pas-nav__toggle:focus-visible,.pas-nav__link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
|
|
8
|
+
@media (max-width:639px){.pas-nav{flex:0 0 auto;margin:0}.pas-nav__toggle{display:inline-flex}.pas-nav__list{display:none;position:absolute;top:calc(100% + .5rem);left:0;z-index:60;flex-direction:column;align-items:stretch;min-width:12rem;padding:.5rem;overflow:visible;background:var(--paper);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.12)}.pas-nav[data-open="true"] .pas-nav__list{display:flex}}
|
package/dist/shell.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import { type ReactNode } from 'react';
|
|
|
2
2
|
import type { ProAppStore } from './index.js';
|
|
3
3
|
import type { User } from './base-types.js';
|
|
4
4
|
import type { Subscription } from './types.js';
|
|
5
|
+
import { type NavItem } from './navbar.js';
|
|
6
|
+
export type { NavItem } from './navbar.js';
|
|
5
7
|
export interface MenuItem {
|
|
6
8
|
label: string;
|
|
7
9
|
onClick: () => void;
|
|
@@ -21,6 +23,16 @@ export interface ProShellRenderContext {
|
|
|
21
23
|
profileMenu: ReactNode;
|
|
22
24
|
/** PRO badge when the current subscription is active; otherwise null. */
|
|
23
25
|
proBadge: ReactNode;
|
|
26
|
+
/** The app's main navigation (`nav` / `renderNav`), or null when none is declared.
|
|
27
|
+
* A custom `renderTopbar` should place it. */
|
|
28
|
+
nav: ReactNode;
|
|
29
|
+
}
|
|
30
|
+
export interface ProShellNavContext {
|
|
31
|
+
items: NavItem[];
|
|
32
|
+
/** The path the shell considers current (`location.pathname`, following back/forward). */
|
|
33
|
+
currentPath: string;
|
|
34
|
+
/** Navigate to `href`: the shell's `onNavigate`, else a full page load. */
|
|
35
|
+
onNavigate: (href: string) => void;
|
|
24
36
|
}
|
|
25
37
|
export interface ProShellProps {
|
|
26
38
|
/** The ProAppStore SDK instance from initPro(). */
|
|
@@ -29,6 +41,23 @@ export interface ProShellProps {
|
|
|
29
41
|
children: ReactNode;
|
|
30
42
|
/** App name shown in the topbar. */
|
|
31
43
|
appName?: string;
|
|
44
|
+
/**
|
|
45
|
+
* The app's screens — the standard way to give an app navigation (#235).
|
|
46
|
+
* ProShell renders them as a `<nav aria-label="Main">` in its topbar, marks
|
|
47
|
+
* the current route, and collapses to a menu button on small screens.
|
|
48
|
+
*
|
|
49
|
+
* ```tsx
|
|
50
|
+
* <ProShell app={app} appName="Cases" nav={[{ label: 'Home', href: '/' }, { label: 'Cases', href: '/cases' }]}>
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
nav?: NavItem[];
|
|
54
|
+
/** Replace the built-in NavBar (still placed in the topbar) with your own. */
|
|
55
|
+
renderNav?: (ctx: ProShellNavContext) => ReactNode;
|
|
56
|
+
/**
|
|
57
|
+
* Client-side navigation for nav clicks (e.g. your router's `navigate`).
|
|
58
|
+
* Without it, nav items are ordinary links (full page load).
|
|
59
|
+
*/
|
|
60
|
+
onNavigate?: (href: string) => void;
|
|
32
61
|
/**
|
|
33
62
|
* If true, allow free users to see the app (no subscription gate).
|
|
34
63
|
*
|
|
@@ -40,7 +69,7 @@ export interface ProShellProps {
|
|
|
40
69
|
showThemeToggle?: boolean;
|
|
41
70
|
/** Custom items added to the profile dropdown (above sign-out). */
|
|
42
71
|
menuItems?: MenuItem[];
|
|
43
|
-
/** Hide the default ProShell topbar.
|
|
72
|
+
/** Hide the default ProShell topbar. Prefer `nav`; this also hides the navigation. */
|
|
44
73
|
hideTopbar?: boolean;
|
|
45
74
|
/** Hide the default ProShell footer. */
|
|
46
75
|
hideFooter?: boolean;
|
|
@@ -61,6 +90,7 @@ export interface ProShellProps {
|
|
|
61
90
|
* - Auth initialization + sign-in gate
|
|
62
91
|
* - Subscription check + upgrade wall (unless allowFree=true)
|
|
63
92
|
* - Topbar with avatar, app name, menu (sign out, delete account, manage billing)
|
|
93
|
+
* - Main navigation from the `nav` prop (<nav aria-label="Main">, current route, mobile menu)
|
|
64
94
|
* - Theme support via CSS custom properties
|
|
65
95
|
* - Only renders children when all gates pass
|
|
66
96
|
*
|
|
@@ -73,12 +103,12 @@ export interface ProShellProps {
|
|
|
73
103
|
*
|
|
74
104
|
* export default function App() {
|
|
75
105
|
* return (
|
|
76
|
-
* <ProShell app={app} appName="Meetup">
|
|
106
|
+
* <ProShell app={app} appName="Meetup" nav={[{ label: 'Events', href: '/' }, { label: 'Groups', href: '/groups' }]}>
|
|
77
107
|
* <MeetupApp />
|
|
78
108
|
* </ProShell>
|
|
79
109
|
* )
|
|
80
110
|
* }
|
|
81
111
|
* ```
|
|
82
112
|
*/
|
|
83
|
-
export declare function ProShell({ app, children, appName, allowFree, showThemeToggle, menuItems, hideTopbar, hideFooter, renderTopbar, renderFooter, }: ProShellProps): import("react/jsx-runtime").JSX.Element;
|
|
113
|
+
export declare function ProShell({ app, children, appName, nav, renderNav, onNavigate, allowFree, showThemeToggle, menuItems, hideTopbar, hideFooter, renderTopbar, renderFooter, }: ProShellProps): import("react/jsx-runtime").JSX.Element;
|
|
84
114
|
//# 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;AAC9C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,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;AAG/C,OAAO,EAA0B,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEnE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,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;IACpB;mDAC+C;IAC/C,GAAG,EAAE,SAAS,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,0FAA0F;IAC1F,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;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;;;;;;;;OAQG;IACH,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;IAChB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,SAAS,CAAC;IACnD;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;;;;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,sFAAsF;IACtF,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;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,QAAQ,CAAC,EACvB,GAAG,EACH,QAAQ,EACR,OAAO,EACP,GAAG,EACH,SAAS,EACT,UAAU,EACV,SAAgB,EAChB,eAAsB,EACtB,SAAS,EACT,UAAkB,EAClB,UAAkB,EAClB,YAAY,EACZ,YAAY,GACb,EAAE,aAAa,2CA6Gf"}
|
package/dist/shell.js
CHANGED
|
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useState, useEffect } from 'react';
|
|
3
3
|
import { ProfileMenu, ProBadge, GateScreen, TextSizeToggle } from './ui.js';
|
|
4
4
|
import { ProProvider } from './provider.js';
|
|
5
|
+
import { NavBar, useCurrentPath } from './navbar.js';
|
|
5
6
|
/**
|
|
6
7
|
* ProShell — platform-level Shell for all ProAppStore apps.
|
|
7
8
|
*
|
|
@@ -9,6 +10,7 @@ import { ProProvider } from './provider.js';
|
|
|
9
10
|
* - Auth initialization + sign-in gate
|
|
10
11
|
* - Subscription check + upgrade wall (unless allowFree=true)
|
|
11
12
|
* - Topbar with avatar, app name, menu (sign out, delete account, manage billing)
|
|
13
|
+
* - Main navigation from the `nav` prop (<nav aria-label="Main">, current route, mobile menu)
|
|
12
14
|
* - Theme support via CSS custom properties
|
|
13
15
|
* - Only renders children when all gates pass
|
|
14
16
|
*
|
|
@@ -21,17 +23,18 @@ import { ProProvider } from './provider.js';
|
|
|
21
23
|
*
|
|
22
24
|
* export default function App() {
|
|
23
25
|
* return (
|
|
24
|
-
* <ProShell app={app} appName="Meetup">
|
|
26
|
+
* <ProShell app={app} appName="Meetup" nav={[{ label: 'Events', href: '/' }, { label: 'Groups', href: '/groups' }]}>
|
|
25
27
|
* <MeetupApp />
|
|
26
28
|
* </ProShell>
|
|
27
29
|
* )
|
|
28
30
|
* }
|
|
29
31
|
* ```
|
|
30
32
|
*/
|
|
31
|
-
export function ProShell({ app, children, appName, allowFree = true, showThemeToggle = true, menuItems, hideTopbar = false, hideFooter = false, renderTopbar, renderFooter, }) {
|
|
33
|
+
export function ProShell({ app, children, appName, nav, renderNav, onNavigate, allowFree = true, showThemeToggle = true, menuItems, hideTopbar = false, hideFooter = false, renderTopbar, renderFooter, }) {
|
|
32
34
|
const [user, setUser] = useState(app.auth.user);
|
|
33
35
|
const [subscription, setSubscription] = useState(null);
|
|
34
36
|
const [gate, setGate] = useState('loading');
|
|
37
|
+
const [currentPath, setCurrentPath] = useCurrentPath();
|
|
35
38
|
useEffect(() => {
|
|
36
39
|
app.auth.init();
|
|
37
40
|
return app.auth.onChange((u) => {
|
|
@@ -65,6 +68,21 @@ export function ProShell({ app, children, appName, allowFree = true, showThemeTo
|
|
|
65
68
|
return _jsx(GateScreen, { gate: "signed-out", app: app, appName: appName });
|
|
66
69
|
}
|
|
67
70
|
const profileMenu = (_jsx(ProfileMenu, { app: app, showThemeToggle: showThemeToggle, children: menuItems?.map((item, i) => (_jsx("button", { onClick: item.onClick, style: menuItemStyle, children: item.label }, i))) }));
|
|
71
|
+
const navItems = nav ?? [];
|
|
72
|
+
const navNode = navItems.length === 0 ? null : renderNav
|
|
73
|
+
? renderNav({
|
|
74
|
+
items: navItems,
|
|
75
|
+
currentPath,
|
|
76
|
+
onNavigate: (href) => {
|
|
77
|
+
if (!onNavigate) {
|
|
78
|
+
window.location.assign(href);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
onNavigate(href);
|
|
82
|
+
setCurrentPath(href);
|
|
83
|
+
},
|
|
84
|
+
})
|
|
85
|
+
: _jsx(NavBar, { items: navItems, ...(onNavigate ? { onNavigate } : {}) });
|
|
68
86
|
const shellContext = {
|
|
69
87
|
app,
|
|
70
88
|
appName,
|
|
@@ -73,8 +91,9 @@ export function ProShell({ app, children, appName, allowFree = true, showThemeTo
|
|
|
73
91
|
textSizeToggle: _jsx(TextSizeToggle, {}),
|
|
74
92
|
profileMenu,
|
|
75
93
|
proBadge: subscription?.status === 'active' ? _jsx(ProBadge, {}) : null,
|
|
94
|
+
nav: navNode,
|
|
76
95
|
};
|
|
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] })] }));
|
|
96
|
+
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] }), shellContext.nav, _jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: '0.5rem' }, children: [shellContext.textSizeToggle, shellContext.profileMenu] })] }));
|
|
78
97
|
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)', fontWeight: 600, textDecoration: 'none' }, children: "ProAppStore" })] }));
|
|
79
98
|
// --- Ready: render app with topbar ---
|
|
80
99
|
return (_jsx(ProProvider, { app: app, children: _jsxs("div", { style: styles.shell, children: [topbar, _jsx("main", { style: styles.main, children: children }), footer] }) }));
|
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;AAI5D,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../src/shell.tsx"],"names":[],"mappings":"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"}
|
package/dist/ui.d.ts
CHANGED
|
@@ -17,4 +17,6 @@ export { GateScreen } from './ui-gate.js';
|
|
|
17
17
|
export type { GateScreenProps } from './ui-gate.js';
|
|
18
18
|
export { Button, Card, Input, Spinner, Modal, EmptyState, Tabs, Toast } from './ui-base.js';
|
|
19
19
|
export type { ButtonProps, ButtonVariant, CardProps, InputProps, SpinnerProps, ModalProps, EmptyStateProps, TabItem, TabsProps, ToastProps, ToastVariant, } from './ui-base.js';
|
|
20
|
+
export { NavBar } from './navbar.js';
|
|
21
|
+
export type { NavBarProps, NavItem } from './navbar.js';
|
|
20
22
|
//# 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;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;AAGpD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC5F,YAAY,EACV,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAC3E,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,GAC9D,MAAM,cAAc,CAAC"}
|
|
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;AAGpD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC5F,YAAY,EACV,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAC3E,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,GAC9D,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/ui.js
CHANGED
|
@@ -17,4 +17,6 @@ export { ProProfilePage } from './ui-profile-page.js';
|
|
|
17
17
|
export { GateScreen } from './ui-gate.js';
|
|
18
18
|
// General-purpose primitives (Button, Card, Input, Modal, Spinner, Tabs, Toast, EmptyState)
|
|
19
19
|
export { Button, Card, Input, Spinner, Modal, EmptyState, Tabs, Toast } from './ui-base.js';
|
|
20
|
+
// NavBar (#235) — the app's main navigation; ProShell renders it from its `nav` prop
|
|
21
|
+
export { NavBar } from './navbar.js';
|
|
20
22
|
//# 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":"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;AAG1C,4FAA4F;AAC5F,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC"}
|
|
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;AAG1C,4FAA4F;AAC5F,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAM5F,qFAAqF;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@proappstore/sdk",
|
|
3
|
-
"version": "1.16.
|
|
3
|
+
"version": "1.16.57",
|
|
4
4
|
"description": "Browser SDK for paid apps on proappstore.online — subscriptions, license keys, premium modules.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -22,7 +22,8 @@
|
|
|
22
22
|
"./ui": {
|
|
23
23
|
"types": "./dist/ui.d.ts",
|
|
24
24
|
"import": "./dist/ui.js"
|
|
25
|
-
}
|
|
25
|
+
},
|
|
26
|
+
"./shell.css": "./dist/shell.css"
|
|
26
27
|
},
|
|
27
28
|
"repository": {
|
|
28
29
|
"type": "git",
|
|
@@ -43,12 +44,14 @@
|
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"@types/react": "^19.0.0",
|
|
47
|
+
"@types/react-dom": "^19.3.0",
|
|
46
48
|
"react": "^19.0.0",
|
|
49
|
+
"react-dom": "19.2.6",
|
|
47
50
|
"typescript": "^5.7.0"
|
|
48
51
|
},
|
|
49
52
|
"sideEffects": false,
|
|
50
53
|
"scripts": {
|
|
51
|
-
"build": "tsc",
|
|
54
|
+
"build": "tsc && node scripts/emit-shell-css.mjs",
|
|
52
55
|
"typecheck": "tsc --noEmit"
|
|
53
56
|
}
|
|
54
57
|
}
|