Skip to content

Logout Button

A copy-paste React logout control for Knock Codes access screens — clears the shared session on click. Zero dependencies.

SessionCore Blocksessionaction

Best used for Any screen sharing a Session Provider session that needs a manual way to lock again.

Requires a <KnockCodesProvider> ancestor — a logout action only makes sense where a session is already being shared with something else that reads it.

// Usage

Minimal setup

<KnockCodesProvider expectedHash={hash}>
  <KnockCodes>
    <Dashboard />
    <LogoutButton />
  </KnockCodes>
</KnockCodesProvider>
FIG.01Demo code: 4242
Installation

Add this block to your project

Recommended

npx shadcn@latest add @knock-codes/logout-button

Also installs

  • Knock Codes Core
  • Knock Codes Types
  • useKnockCodes
  • Session Provider
  • cx (classname helper)

These install together as one atomic unit — even a presentational or read-only piece needs the full verification stack (hook, types, core) behind it to actually run.

Files created (10)

  • 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/KnockCodesContext.tsx
  • components/knock-codes/react/KnockCodesProvider.tsx
  • components/knock-codes/react/cx.ts
  • components/knock-codes/react/LogoutButton.tsx
Other ways

GitHub shorthand

npx shadcn@latest add trivedi-vatsal/knock-codes/logout-button

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
childrenReactNode"Log out"Button label.
classNamestringExtra classes on the button.
onLoggedOut() => voidCalled after the shared session is cleared.
Notes

Accessibility

A real <button>, not a link or div — full keyboard operability and screen-reader semantics for free.

Customization

Pass children to change the label, or `onLoggedOut` to run something after the session clears (redirect, analytics, whatever your app needs).

Security & Verification

Need a hash? Use the hash generator on Getting Started — computed locally, never sent anywhere.

The honest version

Knock Codes stops casual visitors, search engines, and forwarded links. Local mode does not stop anyone who opens DevTools — the hash ships in your client bundle by design. Server mode (swap one prop) hides the hash from the client; children you already bundled are still in the JavaScript, and a forged session works unless you wire validateSession. A velvet rope, with an optional real lock. Never marketed as more than that.

// 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.