Slug / tier / group / category: page-lock · advanced · features · Commerce One-liner: Lock an external page or drop (e.g. a Shopify collection) behind portal access. Closest references: TicketingModule (media + meta + CTA), FileDownloadModule (locked state).
| prop | type | sample value |
|---|---|---|
| pageTitle | string | "Summer '26 — early access" |
| destination | string | shop.departmnt.xyz |
| gate | string | "Tour '26 claimers" |
| locked | boolean | true |
| url | string | https://… (used when unlocked) |
| imageUrl | string? | cover |
| aspectRatio | '16:9' | '1:1' | 16:9 |
| onUnlock / onOpen | () => void | host-driven |
| key | label | type (options) |
|---|---|---|
| title | Module title | text |
| pageTitle | Page title | text |
| destination | Destination | text |
| locked | Locked | toggle |
| aspectRatio | Aspect ratio | aspect-ratio (16:9, 1:1) |
| header | Show header | toggle |
Locked ↔ unlocked swaps badge, meta, and CTA. Access mechanics are a backend contract — redirect/token per NEXT-PHASE §4; the module renders state and fires callbacks only.
Token/redirect implementation, countdowns, per-user entitlements.