Routing & Layout

Embedded Gate

Knock Codes fixed to the inline shell — sits naturally inside an existing layout.

layout

Best used for Gating one section of a longer page — a sidebar widget or a mid-page panel.

The section-level counterpart to Standalone Gate's whole-app usage — same component, contained footprint.

Loading preview…
Installation

Add this block to your project

CLI

npx shadcn@latest add http://localhost:3000/r/react/embedded-gate.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/EmbeddedGate.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.
storage"localStorage" | "sessionStorage" | "memory""localStorage"Where the unlocked session persists.
timeoutnumber1800000Session lifetime in milliseconds.
children *ReactNodeRendered once unlocked.
labelsKnockCodesLabelsOverrides for every user-facing string.
Notes

Accessibility

Identical to Knock Codes — only the outer positioning changes, not the semantics or keyboard flow.

Customization

Same full prop surface as Knock Codes, minus `variant` (fixed to "inline"). Use it for a sidebar widget or a gated section partway down a longer page, where a full-viewport takeover would be wrong.

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.