Routing & Layout

Protected Layout

Knock Codes shaped for a full-page shell — header/footer stay visible even while locked.

routinglayout

Best used for A Next.js layout.tsx or app root where the header/footer must survive the locked state.

Built for a Next.js layout.tsx or any app root where the gate should wrap the page content but not the site chrome around it.

Loading preview…
Installation

Add this block to your project

CLI

npx shadcn@latest add http://localhost:3000/r/react/protected-layout.json

Running this site somewhere other than localhost? Set NEXT_PUBLIC_SITE_URL and this command switches to that host automatically.

Also installs

  • Knock Codes Core
  • Knock Codes Types
  • useKnockCodes
  • cx (classname helper)
  • Gate Wrapper
  • PIN Input
  • Knock Codes

Files created (11)

  • components/knock-codes/core/hash.ts
  • components/knock-codes/core/verify.ts
  • components/knock-codes/core/session.ts
  • components/knock-codes/core/storage.ts
  • components/knock-codes/react/types.ts
  • components/knock-codes/react/useKnockCodes.ts
  • components/knock-codes/react/cx.ts
  • components/knock-codes/react/GateWrapper.tsx
  • components/knock-codes/react/PinInput.tsx
  • components/knock-codes/react/KnockCodes.tsx
  • components/knock-codes/react/ProtectedLayout.tsx

No CLI? Copy the files by hand

  1. Open the Code tab in the preview above.
  2. Create each path listed below in your project and paste its contents in.
  3. Do the same for anything listed under “Also installs”, if present.

Props

API reference

PropTypeDefaultDescription
expectedHashstringSHA-256 hex hash to verify against, for local mode.
verifyVerifyFnCustom async verification function, for server mode.
children *ReactNodeRendered once unlocked.
headerReactNodeRendered above the access-code prompt even while locked.
footerReactNodeRendered below the access-code prompt even while locked.
Notes

Accessibility

Header and footer are always in the document, in source order, whether or not the gate is unlocked — so a persistent nav landmark stays reachable by screen reader users at every state, not just once unlocked.

Customization

Pass `header`/`footer` for chrome that should survive the gate — a logo, a footer with legal links. Everything else (labels, storage, timeout) is identical to Knock Codes.

Compose with

Blocks that pair well with this one

These combine naturally with this block, whether as a shared shell, a shared session, or a common fallback.