29 hand-coded CSS checkboxes and toggle switches for SaaS dashboards, e-commerce facet filters, subscription pricing tiers, GDPR cookie consent, HIPAA patient intake, and todo lists — Stripe/Vercel/Linear settings-panel toggle, Airbnb/Zillow filter-tag pill, Stripe Billing pricing-plan card, checkbox-hack accordion grid, indeterminate (Gmail/Notion select-all), WCAG 2.2 focus-ring reference (6 new demos), plus iOS toggle, dark-mode sun/moon, neon glow, brutalist offset, glassmorphism, neumorphic, liquid fill, gooey blob, 3D flip, draw-stroke checkmark, gradient sweep, todo-list strikethrough, magnetic cursor pull, and confetti burst on complete. Real <input type="checkbox"> preserved throughout for keyboard, screen-reader, and password-manager compatibility. Scoped under .cb-NN for no-collision pasting, prefers-reduced-motion guarded, framework-agnostic.

26 pure CSS3 light JSPublished 6 new designs · Updated on

Related47 CSS Toggles & Switches24 CSS Radio Buttons28 CSS Input Fields

SaaS Dashboard Toggle Switch — preview
01 / 29Pure CSSNEW

SaaS Dashboard Toggle Switch

The enterprise settings-page classic: a clean pill track with a thumb that glides horizontally on check. Reads instantly as on/off, sits at home on any dashboard row, and ships with a sharp keyboard focus ring.

Published

Filter Tag Pill Checkbox — preview
02 / 29Pure CSSNEW

Filter Tag Pill Checkbox

A multi-select filter chip cloud — the pattern behind every e-commerce facet bar and job-board filter. The raw checkbox is safely hidden while the label becomes a clickable pill that flips its accent and reveals a check on selection.

Published

Pricing Plan Card Select — preview
03 / 29Pure CSSNEW

Pricing Plan Card Select

A full pricing block that becomes the control: on selection the whole card gains an accent border, a corner check badge and a slight lift. The conversion-focused pattern for onboarding, plan pickers and add-on grids.

Published

CSS Accordion Grid Reveal — preview
04 / 29Pure CSSNEW

CSS Accordion Grid Reveal

A pure-CSS FAQ / disclosure list where each checkbox expands its panel with a genuinely smooth height transition — no max-height guesswork, no JavaScript. Built on the modern grid-rows 0fr→1fr technique.

Published

Indeterminate Dash Checkbox — preview
05 / 29CSS + JSNEW

Indeterminate Dash Checkbox

The parent/child select-all pattern from every data table and file tree: the master box shows a dash when only some children are ticked, a check when all are, and empties when none are. The dash state can only be set via the DOM property — the one place a checkbox genuinely needs a line of JS.

Published

Accessible Focus-Ring Checkbox — preview
06 / 29Pure CSSNEW

Accessible Focus-Ring Checkbox

The production-safe baseline every design system needs: a minimalist square with a subtle check, but with obsessive attention to keyboard focus. This is the demo Tier-1 devs audit first — the :focus-visible ring is the whole point.

Published

Smooth Slide Toggle — preview
07 / 29Pure CSS

Smooth Slide Toggle

A toggle whose indicator glides continuously across the track on a single compositor-only property. Purpose-built for buttery 60fps motion — the thumb rides entirely on the GPU via translate3d, with inline ON/OFF copy for extra clarity.

PublishedUpdated

Neon Glow Checkbox — preview
08 / 29Pure CSS

Neon Glow Checkbox

A dark-mode favourite: on check the box lights up like a neon tube, blooming layered box-shadows in an electric cyan. Clean opacity handling keeps the glow smooth, never pixelated — perfect for gaming UIs, crypto dashboards and dark control panels.

PublishedUpdated

Draw Stroke Checkmark — preview
09 / 29Pure CSS

Draw Stroke Checkmark

A premium, hand-drawn feel: an inline SVG checkmark that draws itself in on check using the classic stroke-dasharray / stroke-dashoffset line technique. Crisp at any size, no raster assets, and the animation is pure CSS.

PublishedUpdated

Bouncy Pop Checkbox — preview
10 / 29Pure CSS

Bouncy Pop Checkbox

A satisfying, tactile toggle: on check the mark overshoots its size with a spring cubic-bezier before settling, and the box gives a tiny squash. That physical bounce is what makes a checkbox feel alive — done entirely with transform.

PublishedUpdated

Glassmorphism Checkbox — preview
11 / 29Pure CSS

Glassmorphism Checkbox

Frosted-glass controls that float over vibrant, colourful backgrounds: translucent fills, thin white borders and a real backdrop blur. The look every modern lock-screen, music player and premium settings sheet reaches for.

PublishedUpdated

Neumorphic Checkbox — preview
12 / 29Pure CSS

Neumorphic Checkbox

Soft-UI 'clay' controls: the box appears extruded from the surface, then presses inward when checked — created entirely with paired light and dark shadows on a single tonal background. The signature look of calm, monochrome dashboards.

PublishedUpdated

Liquid Fill Checkbox — preview
13 / 29Pure CSS

Liquid Fill Checkbox

A playful control where colour rises from the bottom like water filling a glass, complete with a subtle wave crest. Great for gamified onboarding, habit trackers and progress-y task lists — pure CSS, no canvas.

PublishedUpdated

Rotating Ring Checkbox — preview
14 / 29Pure CSS

Rotating Ring Checkbox

A crisp mechanical feel: on check a circular ring spins a rapid turn and snaps shut around the box as the check appears. Reads like a lock engaging — ideal for security toggles and confirm steps.

PublishedUpdated

Brutalist Checkbox — preview
15 / 29Pure CSS

Brutalist Checkbox

Raw, loud and unapologetic: thick black borders, zero radius, stark high-voltage colour, and a hard offset shadow that snaps down-and-right on click. The look driving the neo-brutalist portfolio and indie-SaaS wave.

PublishedUpdated

Gradient Sweep Checkbox — preview
16 / 29Pure CSS

Gradient Sweep Checkbox

A high-end agency / web3 treatment: on check the box fills with a multi-stop gradient that sweeps continuously via an animated background-position. Rich, colourful and alive without a single image.

PublishedUpdated

3D Flip Checkbox — preview
17 / 29Pure CSS

3D Flip Checkbox

A tactile coin-flip: on check the box rotates in 3D to reveal a different face bearing the checkmark. Built with perspective and preserve-3d — a memorable micro-interaction for confirmations and 'done' states.

PublishedUpdated

Ripple Wave Checkbox — preview
18 / 29Pure CSS

Ripple Wave Checkbox

Material Design mechanics: clicking sends a translucent circular ripple expanding from the box, neatly contained within its bounds, as the check settles. Familiar, satisfying, and achievable with pure CSS.

PublishedUpdated

Retro Pixel Checkbox — preview
19 / 29Pure CSS

Retro Pixel Checkbox

8-bit nostalgia: a jagged, aliased checkmark built entirely from stacked box-shadow 'pixels' — no image files, no SVG. Snaps in blocky and hard-edged, perfect for game UIs, dev tools with personality and retro landing pages.

PublishedUpdated

Strikethrough Checkbox — preview
20 / 29Pure CSS

Strikethrough Checkbox

The definitive to-do interaction: checking an item strikes a line cleanly across its label from left to right and dims the text — the universal 'done' gesture. Built with a scaleX pseudo-element, not a jumpy text-decoration.

PublishedUpdated

Gooey Blob Checkbox — preview
21 / 29Pure CSS

Gooey Blob Checkbox

A liquid-mercury effect: separate blobs stretch, detach and fuse back together like a single gooey mass as the box fills. Achieved with the classic blur + contrast filter trick — no SVG filters, no JS.

PublishedUpdated

Dark Mode Toggle — preview
22 / 29Pure CSS

Dark Mode Toggle

The instantly-recognisable theme switch: a sun that glides across and morphs into a crescent moon as the sky shifts from day-blue to starry night. A global-layout staple that must feel smooth and read at a glance.

PublishedUpdated

Pulse Ring Checkbox — preview
23 / 29Pure CSS

Pulse Ring Checkbox

An attention-grabbing 'live' state: once checked, the box radiates soft, fading concentric rings outward, like a sonar ping. Ideal for onboarding cues, active-task indicators and 'you're all set' confirmations.

PublishedUpdated

Dash to Check — preview
24 / 29Pure CSS

Dash to Check

A refined state change: the box starts showing a flat dash (a neutral / partial marker) that appears to transform into a checkmark on selection. Two SVG strokes — one retracts as the other draws — read as a single morphing line.

PublishedUpdated

Multi-State Checkbox — preview
25 / 29CSS + JS

Multi-State Checkbox

One control that cycles through three discrete states on each activation — unset → yes → not-applicable — the pattern for review checklists, moderation queues and audit forms where a plain on/off isn't enough. Uses the accessible tri-state button role, not a fragile hack.

PublishedUpdated

Magnetic Checkbox — preview
26 / 29CSS + JS

Magnetic Checkbox

A physical, attractive feel: as the cursor approaches, the box leans toward it like a magnet, then snaps back when the pointer leaves. A tiny bit of pointer math drives a purely transform-based lean — smooth, GPU-friendly and fully optional.

PublishedUpdated

Confetti Burst Checkbox — preview
27 / 29Pure CSS

Confetti Burst Checkbox

A moment of celebration: checking the box fires a short burst of tiny coloured squares outward from its edges. The reward interaction for finishing onboarding, completing a goal or hitting 'I'm done' — pure CSS, no confetti library.

PublishedUpdated

Slide-In Label — preview
28 / 29Pure CSS

Slide-In Label

Spatial hierarchy on check: the label shifts aside and a confirmation tag glides in from the left, adding an elegant extra layer of feedback without a single reflow. Great for save states, applied filters and 'added to X' confirmations.

PublishedUpdated

Aurora Toggle — preview
29 / 29Pure CSS

Aurora Toggle

A premium switch that, when flipped on, fills its track with a slow, shifting northern-lights gradient mesh. The kind of detail that makes a SaaS settings page or landing hero feel expensive — and it's entirely CSS.

PublishedUpdated

FAQ

Frequently asked questions

How do I style a checkbox with CSS?
The native checkbox is hard to restyle directly, so the standard technique is: keep the real input type=checkbox for accessibility but visually hide it (position: absolute; opacity: 0 — never display: none because that removes it from the tab order), then style a sibling element (a label or a span) as the visible box. Use the :checked pseudo-class to change that custom box when the input is ticked. Every checkbox in this gallery uses this pattern, so the control stays keyboard- and screen-reader-accessible while looking completely custom. Every demo scopes under .cb-NN (numeric per-demo prefix matching the css-tooltips / css-input-fields tighter standard) so multiple checkbox styles coexist on one page without style bleed. For newer browsers, :has() lets you write parent-level rules like .form:has(.cb-01 input:checked) so the surrounding container reacts to the check state.
Can you make a custom CSS checkbox without JavaScript?
Yes — the majority of the 29 demos are pure CSS. The :checked pseudo-class on the hidden input drives the whole visual change: the checkmark draw, glow, fill, bounce or flip all run from input:checked ~ .box rules using the adjacent-sibling combinator (+) or general-sibling combinator (~). JavaScript is only used in a handful of demos that require state or interaction CSS cannot produce alone: the Multi-State Checkbox (tri-state cycle unchecked → partial → checked, the Gmail/Notion select-all pattern), the Indeterminate Dash Checkbox (native input.indeterminate property + :indeterminate pseudo-class — needs JS to set the third state), the Magnetic Checkbox (mousemove-driven transform: translate for cursor pull), and the Confetti Burst (change-event spawns particle spans with CSS-property randomised trajectories). Everything else is checkbox-hack driven and runs with zero JavaScript.
How do I animate the checkmark when a checkbox is ticked?
Three approaches ship in this gallery. First, SVG stroke animation: the Draw Stroke Checkmark demo uses an SVG polyline with stroke-dasharray and stroke-dashoffset both set to the path length, then transitions stroke-dashoffset to 0 on :checked so the tick appears to draw itself over 350ms. Second, CSS-only pseudo-element ticks: the Dash to Check demo morphs a horizontal dash into a checkmark by animating width, height, border-right, border-bottom, border-radius, and a rotate(45deg) transform together over 350ms — no SVG required. Third, spring-bounce reveals: the Bouncy Pop demo scales the inner dot from 0 to 1 with cubic-bezier(.34,1.56,.64,1) so it overshoots past 1 before settling — the classic elastic feel used across Superhuman, Linear, and Notion. All three approaches honour prefers-reduced-motion by dropping to instant show/hide.
Are these CSS checkboxes accessible?
Yes — every demo satisfies WCAG 2.1 SC 4.1.2 (Name, Role, Value) by construction. The real input type=checkbox stays in the DOM (visually hidden via position: absolute + opacity: 0, never display: none which strips focus), tied to a label element so clicking the label toggles the input natively — that's what preserves keyboard access, screen-reader announcement of "checkbox, checked/unchecked", and password-manager autofill. Every demo carries a visible :focus-visible ring (not :focus, which fires on mouse click too) that keyboard users see as they Tab through the form. Every animated demo (Draw Stroke, Bouncy Pop, Ripple Wave, Pulse Ring, Gradient Sweep, Aurora Toggle, Confetti Burst) carries a prefers-reduced-motion: reduce block that either disables the animation or falls back to an instant show — WCAG 2.3.3 (Animation from Interactions) is non-negotiable for continuous motion. the Multi-State Checkbox demo uses a button element with data-state, so for full screen-reader parity it needs role="checkbox" plus aria-checked="mixed" on the partial state; native inputs with .indeterminate = true announce as "mixed" or "partially checked" automatically. the Magnetic Checkbox demo additionally satisfies SC 2.5.7 (Dragging) by keeping click-to-toggle intact even when the magnetic pull is disabled.
Can I use these checkboxes in React or other frameworks?
Yes. Each demo is plain HTML and CSS — no dependencies, no build step. Drop the markup into React (use className and htmlFor), Vue, Svelte, Astro, SolidJS, or static HTML and it works unchanged. All 29 designs are MIT licensed and free for personal and commercial use, including client projects, SaaS products, design systems, and open-source libraries. For React specifically, the checkbox input needs to be a controlled component (value={state}, onChange={setState}) or fully uncontrolled — never mix. For the Multi-State Checkbox, the button-based tri-state pattern maps cleanly to useState<'unchecked' | 'partial' | 'checked'>. For the Magnetic and Confetti Burst demos, wire the mousemove and change handlers via useEffect + refs. Comparison with shadcn/ui Checkbox (Radix UI primitive, 8KB, React-only): shadcn ships accessibility (focus ring, aria-checked, keyboard) via Radix; our CSS gives you the same accessibility contract in vanilla + adds 28 additional visual variants shadcn does not ship. Ant Design Checkbox is 32KB and locked to React. MUI Checkbox is 28KB. Chakra Checkbox is 22KB. All React-only. This collection ships zero framework dependency and drops into any stack.
Which CSS checkbox pattern fits a SaaS dashboard settings toggle (Stripe / Vercel / Linear / Notion / Superhuman)?
SaaS dashboard settings panels have converged on a small vocabulary of toggle patterns. Demo 01 SaaS Dashboard Toggle Switch ships the canonical anatomy: an iOS-style pill toggle (44x24 track, 20x20 thumb sliding 20px on a cubic-bezier(.34,1.56,.64,1) spring) with a title, a one-line description below, and a keyboard-shortcut hint on the right (kbd chip showing the toggle's Cmd+K palette shortcut — the Notion / Linear / Superhuman power-user convention). The whole row is a real label element wrapping the input, so click-anywhere-to-toggle works natively. Screen readers announce the state change via aria-live=polite region — critical for settings where the toggle changes app behavior (Send desktop notifications, Auto-save drafts, Two-factor authentication). Design tokens follow the Stripe Dashboard / Vercel Dashboard / Linear Sync / Notion Settings convention: gray-500 rest track, brand-primary checked track, white thumb, .3s spring transition. For the row layout, use a 3-column grid (flex-1 title/desc, auto kbd chip, 44px toggle) so long descriptions truncate cleanly with text-overflow: ellipsis on narrow columns. Fintech-adjacent SaaS pricing pages (Stripe Atlas, Ramp, Brex, Mercury, Deel, Rippling, Gusto) carry $25-45 CPM in tier-1 US/UK/CA/AU/NZ markets — SaaS dashboards in general carry $8-15 CPM standalone but drive $15-25 CPM once a user lands on a plan/upgrade page. Compliance callouts: (1) if the toggle enables notifications, GDPR Article 6(1)(a) requires opt-in consent stored server-side with timestamp + IP for audit trail. (2) if it enables data sharing (analytics telemetry, third-party integrations), CCPA §1798.135 requires Do Not Sell or Share My Personal Info verbatim labeling — swap the toggle title accordingly for California traffic (geolocate via IP + navigator.globalPrivacyControl). (3) FTC 16 CFR § 425 Negative Option Rule applies if the toggle activates a paid feature (auto-renewal disclosure required in the description text, not buried in TOS). Amazon Prime paid $25M FTC settlement (2023), Vonage $100M (2022), Adobe $40M (2024) for negative-option violations. (4) For 2FA toggles specifically, WCAG 2.2 SC 3.3.7 (Redundant Entry) requires the toggle to not silently disable 2FA — always confirm via a second dialog or email confirmation before the toggle actually flips. Every settings panel needs at minimum: aria-describedby pointing to the description text so screen readers announce both title and description together (WCAG 2.1 SC 1.3.1), :focus-visible ring on the label (SC 2.4.7), and prefers-reduced-motion guard on the spring animation (SC 2.3.3). The Demo 01 pattern satisfies all four.
Which CSS checkbox pattern fits an e-commerce facet filter (Airbnb / Zillow / Amazon / eBay / Booking.com)?
E-commerce facet filters (also called "refinement filters") are the highest-conversion surface after the product page itself — Baymard research shows a well-designed facet-filter panel lifts add-to-cart rate 15-25% on Amazon, eBay, Etsy, and Shopify Plus stores. Demo 02 Filter Tag Pill Checkbox ships the canonical anatomy: a pill-shaped label element (border-radius: 999px, padding 6px 14px, background gray-100 rest / brand-primary checked, border 1px transparent rest / brand-primary checked) with a count badge on the right (e.g. "Studio (24)", "1 bedroom (156)", "Pool (89)"). Clicking the pill toggles selection; the count updates via JS (fetch call to search API, debounced 250ms). Multi-select is default — visitors combine facets to narrow results. The pattern is used across Airbnb (Amenities, Room type, Price range), Zillow (Beds, Baths, Home type, Days on Zillow), Amazon (Brand, Prime Eligible, Customer Rating, Price), eBay (Buying Format, Condition, Location), Booking.com (Star rating, Meals, Popular filters), Kayak (Airlines, Stops, Cabin class), Redfin (Home type, More filters), Etsy (Category, Item format, Ships to), and Yelp (Cuisine, Price, Distance). Design conventions: (1) grouped by facet category in an accordion or fixed sidebar on desktop, bottom sheet on mobile. (2) sticky Apply button at the bottom on mobile — never auto-apply on toggle mobile because the visitor is mid-selection. (3) "Clear all" affordance at the top of the panel to reset all facets in one click. (4) count badges CRITICAL — visitors need to know how many results a facet returns before committing to the click (avoid the "zero-results dead-end" that tanks conversion). Facet filters carry $3-7 CPM baseline in tier-1 US/UK/CA/AU/NZ markets but drive $15-25 CPM once combined with add-to-cart intent, and $25-45 CPM for high-value verticals (real-estate Zillow/Redfin metro listings, financial-services fintech, travel Kayak/Expedia). Compliance callouts: (1) Fair Housing Act 42 U.S.C. § 3604 for real-estate facet filters — never allow filtering that indicates preference for protected classes (no "No Children" facet, no "Adults Only" facet outside legitimate 55+ housing exemptions). Zillow, Redfin, Realtor.com, and Trulia all pulled these facets after 2019 HUD investigations. (2) EU DSA (Digital Services Act, enforced 2024) requires marketplaces (Amazon EU, eBay EU, Etsy EU) to expose facet-filter algorithms as "terms of service" — the checkbox states themselves are user data governed by GDPR Article 6(1)(b). (3) CCPA §1798.135 requires "Do Not Sell or Share My Personal Info" opt-out visible on any facet filter that personalizes results based on visitor profile. Every facet filter needs: real input type=checkbox with visible label (WCAG 2.1 SC 1.3.1), :focus-visible ring on the pill (SC 2.4.7), aria-checked reflected on the pill state, and an aria-live=polite region announcing count updates ("156 results, 89 with pool selected, 42 with pool and studio selected") for screen-reader users. The Demo 02 pattern satisfies all four.
How do I build a GDPR-compliant cookie consent checkbox or CCPA preferences panel?
GDPR Article 7 requires explicit, informed, freely-given consent for non-essential cookies. The 2024+ CNIL France and Italian Garante enforcement trend requires Accept All and Reject All buttons to have equal visual weight — dark patterns favouring accept are being fined. Every cookie preferences panel needs at minimum four checkbox categories: (1) Necessary/Strictly Necessary — always ON, disabled with a tooltip explaining these cannot be turned off per Article 4. Use the Neumorphic Checkbox demo (soft-UI, feels immutable) or the Brutalist Checkbox demo (hard black border with a lock glyph) as the disabled-state visual. (2) Analytics/Statistics — Google Analytics, Plausible, PostHog, Fathom. Use the Smooth Slide Toggle demo (iOS-style, feels neutral). (3) Marketing/Advertising — Facebook Pixel, Google Ads retargeting. Same iOS toggle. (4) Personalisation — recommendation engines, saved preferences. Each category needs a plain-English description of what cookies it sets and how long they persist. FTC 16 CFR § 425 (Negative Option Rule) means pre-checked non-essential boxes are non-compliant — every non-necessary toggle must default to OFF. The checkbox states themselves must be logged server-side with timestamp + IP for audit trail; GDPR requires the ability to prove consent was given for each category separately. California CCPA replaces "Reject all" with "Do Not Sell or Share My Personal Info" verbatim per §1798.135 — IP-geolocation the visitor to switch the label. Global Privacy Control (GPC): browser signal via navigator.globalPrivacyControl that pre-declines marketing/analytics — respect it. California requires it as of July 2023, Colorado since July 2024. FTC recent enforcement examples: Amazon $25M for Prime cancellation obscurity (2023), Vonage $100M (2022), Adobe $40M for Creative Cloud auto-renewal (2024) — non-compliance costs are real. Cookie consent checkboxes carry $8-15 CPM in tier-1 EU markets ($15-25 when the consent surface is on a fintech, healthcare, or legal-services page). Consult your Data Protection Officer or GDPR counsel before production deployment.
Which checkbox pattern fits a HIPAA-compliant patient intake form or healthcare portal signup?
Healthcare intake forms have compliance overhead most consumer forms don't. HIPAA 45 CFR § 164.508(c)(1)(vi) requires explicit opt-in consent — pre-checked boxes are NOT valid HIPAA authorization. Every consent checkbox on a patient-facing surface (Epic MyChart, Zocdoc, One Medical, Teladoc, Ro, Hims/Hers, Amwell, MDLive) needs: (1) Clear statement of WHAT PHI is being collected, WHY, WHO it's shared with, and the patient's HIPAA rights (right to access, right to amend, right to accounting of disclosures per 45 CFR § 164.524). (2) Explicit opt-in with a real checkbox that DEFAULTS TO UNCHECKED. Use the Glassmorphism Checkbox demo (medical blue + mint palette, non-alarming) or the Slide-In Label demo (confirms selection with an accessible "Consent recorded" reveal). (3) Ability to withdraw consent at any time — link to /manage-consent from every form. (4) Timestamp + patient ID + version of the consent form logged server-side ("v2.3, last updated 2026-06-15") — critical for audit trail. (5) Bundling multiple consents into one checkbox (e.g. "I agree to sharing PHI AND to receive marketing emails") violates HIPAA — separate checkboxes for separate disclosures, always. Never use the Confetti Burst demo for consent — celebratory animation on a medical consent is inappropriate. For provider-facing forms (clinician documentation, e-prescribing consent), the Neumorphic Checkbox demo reads as trustworthy and clinical. 21st Century Cures Act information-blocking rules (fully enforced October 2022) additionally require patient portals to not obstruct patient access to their own records — never gate PHI behind marketing consent. ADA Title III accessibility applies to healthcare portals — every checkbox needs WCAG 2.1 SC 2.5.5 (Target Size) 44x44px touch targets, SC 2.1.1 (Keyboard) focus-visible rings, SC 4.1.2 (Name/Role/Value) with the label semantically tied to the input. State laws add layers: California CMIA (Confidentiality of Medical Information Act), Texas HB 300, New York Article 45 — all impose additional consent-record requirements. Healthcare intake pages carry $30-50 CPM in tier-1 markets ($40-80 for insurance-adjacent, Medicare Advantage, telehealth for specialty conditions). Consult your Privacy Officer or HIPAA counsel before production deployment.
Which checkbox pattern fits a SaaS terms-of-service gate, subscription paywall consent, or onboarding wizard?
SaaS signup flows have converged on a small vocabulary of checkbox patterns from this collection. The Terms-of-Service + Privacy Policy checkbox at the bottom of the signup form is required by ABA Model Rule 7.1 (for legal-services SaaS), FTC 16 CFR § 255 (for anything showing testimonials), and state consumer protection statutes (California AG, New York AG, Texas AG all investigate deceptive TOS acceptance flows). Use the Draw Stroke Checkmark demo — the tick that draws itself confirms the user actively read and agreed. Never pre-check the TOS box (California AB 390, NY GBL § 526-b make this a non-starter). For the marketing-consent checkbox ("Send me product updates and promotions") the CAN-SPAM Act + GDPR + CCPA + Canada CASL all require explicit opt-in — the Smooth Slide Toggle demo reads as neutral without pushing users to opt in. For the multi-step onboarding wizard where users select preferences (industry, team size, use case), the Multi-State Checkbox demo is the pattern Notion / Linear / Superhuman / Vercel use for their /welcome route — a single "Select all" tri-state above a group of child checkboxes lets users bulk-toggle preferences with one click. For subscription paywall consent ("Auto-renew at $29/month, cancel anytime") required by FTC 16 CFR § 425 Negative Option Rule, use the Slide-In Label demo — the reveal-on-check pattern surfaces the auto-renewal disclosure at exactly the moment the user commits. For newsletter opt-ins on the paywall page, the Confetti Burst demo adds celebratory feedback matching Slack reaction / GitHub Actions success aesthetic. SaaS signup checkboxes carry $8-15 CPM in tier-1 markets, higher for fintech-adjacent SaaS (Ramp $25-45, Brex $25-45, Stripe Atlas $30-50, Mercury $25-40). For the Amazon/Vonage/Adobe FTC settlement precedents ($25M/$100M/$40M), one-click cancellation matching the subscribe flow's simplicity is required by California AB 390 (2018) and NY GBL § 526-b — link to /cancel from the same form.

Related collections

15 CSS 3D Tilt Hover Cards preview

15 CSS 3D Tilt Hover Cards

15 mouse-aware 3D tilt hover cards — e-commerce product spotlight, glassmorphism parallax team card, interactive pricing tier, holographic NFT collectible, pop-out mascot, dark tech grid with border glow, media player album art, blog article preview, cyberpunk neon glow, dashboard KPI widget, minimalist real estate, flip-to-back tilt, mobile app showcase, course learning card, and a Pure CSS touch-friendly tilt. Vanilla JS writes --rx/--ry/--mx/--my; all rendering stays in CSS on the GPU.

24 CSS Animated Cards preview

24 CSS Animated Cards

24 hand-coded CSS animated card patterns organised by what triggers the motion, not by card style. Scroll and entrance triggers: staggered grid reveals, @starting-style mount-in, scroll-driven scale and fade on animation-timeline: view(), View Transitions API card-to-detail morphs, blur-to-sharp lazy image loading, and FLIP re-layout when a filter changes. State-change triggers: add-to-cart success morph, like and save particle burst, expand and collapse to intrinsic height with calc-size(), swipe-to-dismiss on Pointer Events, and skeleton-to-loaded crossfade. Data-driven triggers: count-up KPI metrics, SVG sparkline draw-on-enter, and progress ring fill on load. Ambient idle loops: breathing glow, floating drift, animated gradient mesh backgrounds, conic rotating borders, auto-cycling testimonial decks, and live status pulses. Plus four hover patterns where the effect is the topic itself: cursor spotlight, holographic foil glare, corner ribbon slide, and horizontal accordion expand. Every card is scoped under a .ac-NN prefix for no-collision pasting, guards prefers-reduced-motion, animates compositor-only properties, and ports unchanged to React, Vue, Svelte, Astro, Next.js and Tailwind.

22 CSS Avatars preview

22 CSS Avatars

22 hand-coded CSS avatars for chat apps, team dashboards, comment threads, account menus, and social profiles. Covers circular and squircle shapes, gradient and conic story rings, hexagon clip-path crops, online status dots, notification count badges, verified checkmarks, stacked facepiles with plus-N overflow, initials fallbacks for users without photos, broken-image recovery, avatar pickers, and a size scale system where the ring, badge, and status dot all scale from a single custom property.

Search CodeFronts

Loading…