Security
A React block (a whole screen) in Beamline's Blocks category.
A person's account security on one page: how protected they are at a glance with the next step to take, password change with strength and rules, two-step sign-in set up by scanning a code, confirming one and saving recovery codes, passkeys added from the device and renamed in place, and every signed-in device with sign out one by one or everywhere else at once.
Use it for
- The Security or Sign-in page of any product with accounts: password, two-step sign-in, passkeys and the devices signed in.
- A security checkup that leads the person to the next protection to turn on.
Not for
- Signing in (sign-in) or creating an account (signup-form).
- Workspace-wide security policy for admins (roles-permissions, audit-log).
- Profile fields (settings).
Anatomy
- checkup: how many protections are on (password, two-step sign-in, passkey) as three marks and a meter, and the next one to turn on (the page's primary action)
- password: when it was last changed, Change password
- two-step sign-in: authenticator app on or off, recovery codes left, Regenerate codes, Turn off
- set-up dialog in three steps in one tray: scan the code (or copy the key), enter the six digits, save the recovery codes (Copy all, Download, Done waits for “I've saved them”)
- passkeys: name (rename in place), where it lives, added and last used, Remove (asks in place); Add a passkey waits for the device
- devices: kind, browser and system, place and address, last active, This device, Sign out; Sign out everywhere else (hold to confirm)
States
- loading; load failed (Try again)
- checkup: all on, some off (the next step named)
- password never set (passkey-only accounts): Set a password
- change password: current wrong (the field says so), new too weak, mismatch, saving, saved
- two-step off / setting up (code shown, code checking, wrong code, verified) / on (codes left, few left warned)
- regenerating codes; turning off (confirm)
- no passkeys; adding (waiting for the device), added (grows in), cancelled on the device; renaming; removing
- devices: only this one; signing one out (fades); everywhere else (hold, then the others leave together)
- partial data: an unknown place or address reads Unknown place, never blank
- Cancel and closing the password form clear the current, new and confirmation drafts before it opens again.
Keyboard
- Tab: the checkup's action, then each section's actions in order
- Set-up dialog: focus starts on Copy key, moves to the code boxes on step two (typing the sixth digit checks it), then to Copy all
- Rename a passkey: Enter saves, Esc cancels
- Sign out everywhere else: hold Space or Enter
Motion
The checkup's meter eases and a mark draws its check as a protection turns on. The set-up dialog's tray eases between its three steps. Added passkeys grow into the list; removed ones and signed-out devices fade where they stood while the rest close up. A verified code's boxes turn green one after another. Reduced motion places everything at once.
Props
| Prop | Type | Default | Description |
|---|---|---|---|
password | { lastChanged: number | null } | null | — | null for an account without a password (Set a password). |
onChangePassword | (current: string | null, next: string) => Promise<void> | — | Reject with an Error whose field is "current" for a wrong current password. |
twoFactor | { enabled: boolean; codesLeft?: number } | — | |
onStartTwoFactor | () => Promise<{ uri: string; secret: string }> | — | The otpauth URI for the code and the key to type by hand. |
onVerifyTwoFactor | (code: string) => Promise<string[]> | — | Resolve with the recovery codes; reject for a wrong code. |
onDisableTwoFactor / onRegenerateCodes | () => Promise<void> / () => Promise<string[]> | — | |
passkeys / defaultPasskeys / onPasskeysChange | Passkey[] | — | |
onAddPasskey | () => Promise<Passkey> | — | Run your WebAuthn registration; reject when the person cancels on the device. |
onRenamePasskey / onRemovePasskey | (id, name) => Promise<void> / (id) => Promise<void> | — | |
sessions / defaultSessions / onSessionsChange | AccountSession[] | — | |
onSignOutSession / onSignOutOthers | (id) => Promise<void> / () => Promise<void> | — | |
loading / error / onRetry | boolean / ReactNode / () => void | Promise<unknown> | — | |
level | 1 | 2 | — | |
className / classNames / style / ref | string / AccountSecurityClassNames / CSSProperties / Ref<HTMLDivElement> | — |
Built from
- button
- badge
- dialog
- alert-dialog
- password-field
- qr-code
- otp-input
- copy-button
- inline-edit
- confirm-morph
- hold-to-confirm
- progress
- alert
- checkbox
- toast
- skeleton
- spinner
Dependencies
lucide-react, motion
Import
import { AccountSecurity } from "@/blocks/account-security/account-security";
Get it
Security is part of Beamline: 200+ components and 50+ complete screens for React that your coding agent (Claude Code, Codex, Cursor or any MCP client) installs into your app through Beamline's MCP server, as a ready-built package or as plain React source you can change. $49 launch price, one payment, no subscription, lifetime updates, one licence for your whole team. Get Beamline · Connect your agent
More in Blocks
- Trading terminal: A perpetuals terminal on your feed and your account: ticker tape, market header with funding, candles, book / trades / depth, order ticket, account…
- Market screener: The whole market at a glance and a way to narrow it down: a sector heatmap, today's top movers with the market's breadth, ready-made screens (gainers…
- AI agent workspace: Threads, a conversation with streamed reasoning, cited answers and a plan that waits for approval then runs step by step, and an artifacts panel with…
- Portfolio overview: What an account holds and how it is doing: the total that rolls as prices tick with today's change, value over time against a benchmark, allocation by…
- AI image studio: Write a prompt, pick a shape, a style and how many, and watch the variations generate side by side; each one opens full screen and can be upscaled or…
- Model playground: Try one prompt on up to three models side by side: pick each model with its price and speed in view, set the system prompt, temperature and length once…
- Artifact workbench: Where the things an assistant makes are checked before they leave: every document, piece of code, small app and data result from a conversation, each…
- Analytics dashboard: A SaaS overview in the app shell, fed by your metrics hook: range and segment filters drive KPIs, new and expansion revenue, channels, plan mix, uptime…
- Sales dashboard: A sales leader's week in one screen: closed won against quota and pace, pipeline coverage and win rate, the quarter's run toward target with the forecast…
- Product analytics: How people use the product: a funnel whose steps are the selector, where the people lost at a step went (saved as a cohort in one action), retention by…
- Status dashboard: An operations view of service health: the overall state in one line, every service with its status, uptime, latency now and 90 days of history, latency…
- CRM pipeline: A pipeline screen: KPIs and stage mix derived from a virtualised deals grid with inline edit, bulk moves and delete with undo; a row opens the deal in a…
- Helpdesk inbox: A support team's inbox: views with counts, a virtualised ticket queue with search, priority filters and live SLA clocks, and the open ticket with its…
- Project board: A team's sprint as a board: the sprint's goal, points done and days left, filters by person and label, the work as cards in columns with work-in-progress…
- Team calendar: A team's schedule: the people and shared calendars to show (each its colour), a month to jump by, who is out this week, and the week, day or month of…
- Invoices: Accounts receivable in one screen: what is outstanding, overdue and paid, the invoices by status in a virtualised grid with bulk reminders, and each…
- Orders admin: A shop's order desk: today's orders and revenue, quick filters for what needs doing (to fulfil, unpaid, returns), a virtualised orders grid, and the…
- Contact profile: One customer on one page: who they are and how to reach them (fields edit in place), their lifecycle stage and owner, the deals they are in with what is…
- File manager: Files and folders in one screen: the views (My files, Shared, Recent, Starred, Trash) with storage at the foot, a folder tree beside the files…
- Projects: A team's projects: the portfolio by health (on track, at risk, off track) with progress, lead, team and due date, filtered and searched; a project opens…
- Report builder: Build a chart from your metrics without code: choose metrics, how to group them over time, an optional breakdown, filters, the range and the chart, see…
- Voice agent: A voice agent in three layouts on one session: a support panel that mixes typing and talking, a call screen with the agent's orb and one call button, and…
- Admin users: Your staff's view of every account: headline counts that follow the filters, a virtualised users table with search, status and plan filters and sorting…
- Billing & invoices: The billing page of a subscription: the plan with its seats and renewal, cancel and resume in place, the card on file with a checked update form, metered…
- Onboarding checklist: The first screen after sign-up: a welcome with how far set-up has come, a checklist of the few steps that make the product useful (each with why, how…
- Roles & permissions: What each role may do, as one matrix: permissions grouped by area down the side, roles across the top with their head counts, a check per cell; a group's…
- AI support chat: The customer's side of AI support: an assistant that answers from your help centre with numbered citations, a thumbs up or down on every answer (a down…
- AI support console: The support team's side of AI support: a queue sorted by what is due first (who the assistant is still handling, who asked for a person, who waits), the…
- Conversation history: Past conversations with an assistant, ready to pick up again: the list by day with bookmarks and unsent drafts, a search through every message that…
- Agent runs monitor: Every run of your agents in one place: success rate, run time, tokens and spend; the last runs as a strip of status blocks; a live table where running…
- Social media scheduler: Plan posts across your social accounts: a week calendar where every post sits at its time in its account's colour and moves by drag, a queue of what goes…
- Team chat: A team's messages in one screen: channels and direct messages with unread counts and mentions, who is online, the conversation with reactions, receipts…
- Knowledge base manager: What your assistant knows and whether it is fresh: sources with live sync status (syncing with progress, out of date, failed with the reason and Retry)…
- Meeting and call review: Everything a recorded call left behind on one screen: the recording with its transcript by speaker, an AI summary that streams in, action items with…
- Order history and fills: Every order the account placed and every fill it got, for a period: totals for volume, fees, fill rate and maker share; orders with their status and how…
- Integrations: A directory of the apps a product connects to: search and categories with counts, connected apps first with their state (Connected, Needs attention), a…
- Plan comparison: Plans side by side against every feature: prices that roll between monthly and yearly, the current and recommended plan marked, a header that stays in…
- System pages: The four pages a product shows when the normal one cannot: page not found (search and the likely places), something broke (try again, an error id to…
- API keys & webhooks: The developer page of a SaaS: API keys with environment, scopes, last use and expiry, created through a form whose secret is shown once (copy it before…
- Audit log: Who did what, to what, when and from where, for a whole workspace: newest first and grouped by day, people with avatars and keys or systems with toned…
- Team & members: The people page of a workspace: seats used against the plan, members and pending invitations in one list with search and a role filter, role changes that…
- Notification preferences: What reaches a person and where: events grouped by area down the side, channels (email, push, Slack, in-app) across the top, a switch per pair that saves…
- Workspace switcher: Moving between workspaces and making a new one: a switcher for the top of your sidebar (the current workspace's mark, name and plan; a searchable list…
- Step form: The finished frame for any multi-step form you compose — onboarding, intake brief, questionnaire, booking, application: a wide card with progress, the…
- Changelog feed: An in-app What's new page: release notes grouped by month with tags, versions, pictures and details, a tag filter with counts, entries since your last…
- Page header: The top of a record or project page: breadcrumb, title with status, description and meta, a primary action with secondary actions that fold into a More…
- Empty states: The five empty moments every product has, written and wired: first use with a first step, no results with the filters to clear, an error with retry and a…
- Settings: Profile and workspace settings with one draft and real save handler. Personal mode omits workspace data; optional profile fields share validation…
- Auth page: The whole sign-in / sign-up route: product mark, a quiet dotted field with a light that follows the mouse, an optional notice, the SignIn and SignupForm…
- Sign in: The sign-in card: email and password, a one-time code or a magic link, passkeys and single sign-on, with validation, progress, errors and a signed-in…
- Sign up form: The account creation card: single sign-on, name, work email and a password with strength and Caps Lock hints, terms consent, inline validation, your…