Skip to content

Danger Zone

A copy-paste settings & preferences component in pure HTML & CSS. Zero dependencies, framework-agnostic, MIT-licensed.

Settings & PreferencesHTMLCSSany framework

Danger Zone

These actions are permanent and cannot be undone.

Transfer ownershipMove this workspace to another account.
Delete accountPermanently remove your account and data.

Copy into your project

HTML
<section class="nuda-danger">
  <header class="nuda-danger__head">
    <h3>Danger Zone</h3>
    <p>These actions are permanent and cannot be undone.</p>
  </header>
  <div class="nuda-danger__row">
    <div class="nuda-danger__text">
      <span class="nuda-danger__name">Transfer ownership</span>
      <span class="nuda-danger__desc">Move this workspace to another account.</span>
    </div>
    <button type="button" class="nuda-danger__btn nuda-danger__btn--ghost">Transfer</button>
  </div>
  <div class="nuda-danger__row">
    <div class="nuda-danger__text">
      <span class="nuda-danger__name">Delete account</span>
      <span class="nuda-danger__desc">Permanently remove your account and data.</span>
    </div>
    <button type="button" class="nuda-danger__btn">Delete</button>
  </div>
</section>
CSS
/* Danger Zone
   A red-tinted section for destructive account actions.
   Customize: --danger, --danger-border */

.nuda-danger {
  --danger: #ef4444;
  --danger-border: rgba(239, 68, 68, 0.35);
  background: #0c0c10;
  border: 1px solid var(--danger-border);
  border-radius: 14px;
  overflow: hidden;
  width: 100%;
  max-width: 480px;
}

.nuda-danger__head {
  padding: 1.25rem 1.5rem;
  border-bottom: 1px solid rgba(239, 68, 68, 0.18);
  background: rgba(239, 68, 68, 0.04);
}

.nuda-danger__head h3 {
  margin: 0 0 0.25rem;
  color: #fca5a5;
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: -0.01em;
}

.nuda-danger__head p {
  margin: 0;
  color: #a0a0a8;
  font-size: 0.8125rem;
  line-height: 1.4;
}

.nuda-danger__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.5rem;
}

.nuda-danger__row + .nuda-danger__row {
  border-top: 1px solid rgba(255, 255, 255, 0.04);
}

.nuda-danger__text {
  display: flex;
  flex-direction: column;
  gap: 0.125rem;
  min-width: 0;
}

.nuda-danger__name {
  color: #fafafa;
  font-size: 0.875rem;
  font-weight: 500;
}

.nuda-danger__desc {
  color: #a0a0a8;
  font-size: 0.75rem;
  line-height: 1.4;
}

.nuda-danger__btn {
  background: var(--danger);
  color: #fafafa;
  border: 1px solid var(--danger);
  font-size: 0.8125rem;
  font-weight: 500;
  padding: 0.5rem 0.875rem;
  border-radius: 8px;
  cursor: pointer;
  flex-shrink: 0;
  transition: background 0.2s ease, border-color 0.2s ease;
}

.nuda-danger__btn:hover {
  background: #dc2626;
  border-color: #dc2626;
}

.nuda-danger__btn--ghost {
  background: transparent;
  color: #fca5a5;
  border-color: rgba(239, 68, 68, 0.4);
}

.nuda-danger__btn--ghost:hover {
  background: rgba(239, 68, 68, 0.08);
  border-color: rgba(239, 68, 68, 0.6);
}

.nuda-danger__btn:focus-visible {
  outline: 2px solid var(--danger);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  .nuda-danger__btn {
    transition: none;
  }
}

How to use Danger Zone

Paste the HTML where you need it and the CSS into a global stylesheet (or a <style> tag). Every class is prefixed nuda- so it never collides with Tailwind or your own styles. Tweak the CSS custom properties to match your design system.

Works in React, Vue, Svelte, Astro, Next.js, Nuxt, Laravel Blade, Django, Rails — or a single .html file. No npm install, no build step.

More settings & preferences components

← Browse all NudaUI components