Component

Dark Accordion

Modern dark-mode dashboard accordion with single-open behavior, glowing status dots, metric delta badges, and an indigo active accent. Built for analytics and admin panels.

  • Component
  • Tailwind
  • HTML
  • MIT

What it does

Capabilities

  • Glowing status dots
  • Metric deltas
  • Metadata grid
  • Single-open mode
  • Indigo accent

Preview

Live component

Interactive preview
Open preview
9:41 100%
devsnips.site/library/tailwind/components/accordions/dark-accordion/
fluid · no fixed width 100%
No dependencies Production-ready

Install

Add to your project

terminal
npx devsnips add Tailwind/Components/Accordions/dark-accordion
registry path: Tailwind/Components/Accordions/dark-accordion

Source

Implementation

code.html
<!--
Snippet Name: Dark Accordion
Description: Modern dark-mode dashboard accordion with single-open behavior, metric badges, and an indigo active accent.
Author: DevSnips Contributors
Usage Example: Analytics dashboards and admin panels in dark mode.
-->
<div class="space-y-2.5" data-accordion="dark" data-single-open>
  <div class="rounded-xl border border-white/10 bg-white/5 transition-colors hover:bg-white/[0.07]" data-accordion-item>
    <h3>
      <button type="button" id="dark-trigger-1" aria-controls="dark-panel-1" aria-expanded="false" class="accordion-trigger group flex w-full items-center gap-3 px-4 py-3.5 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-400 focus-visible:ring-inset rounded-xl">
        <span class="flex h-2 w-2 shrink-0 rounded-full bg-indigo-400 shadow-[0_0_8px_rgba(129,140,248,0.8)]"></span>
        <span class="min-w-0 flex-1">
          <span class="block text-sm font-medium text-white">Traffic sources</span>
          <span class="block text-xs text-white/40">Where visitors come from</span>
        </span>
        <span class="rounded-md bg-white/5 px-2 py-0.5 text-xs font-medium text-white/60">+12.4%</span>
        <svg class="accordion-chevron h-5 w-5 shrink-0 text-white/40 transition-transform duration-300 ease-out" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/></svg>
      </button>
    </h3>
    <div id="dark-panel-1" role="region" aria-labelledby="dark-trigger-1" class="accordion-panel grid grid-rows-[0fr] transition-[grid-template-rows] duration-300 ease-out">
      <div class="overflow-hidden">
        <dl class="grid grid-cols-3 gap-px overflow-hidden border-t border-white/10 bg-white/5">
          <div class="bg-[#0f1117] px-4 py-3"><dt class="text-xs text-white/40">Organic</dt><dd class="mt-0.5 text-sm font-semibold text-white">48.2%</dd></div>
          <div class="bg-[#0f1117] px-4 py-3"><dt class="text-xs text-white/40">Referral</dt><dd class="mt-0.5 text-sm font-semibold text-white">31.0%</dd></div>
          <div class="bg-[#0f1117] px-4 py-3"><dt class="text-xs text-white/40">Direct</dt><dd class="mt-0.5 text-sm font-semibold text-white">20.8%</dd></div>
          <div class="bg-[#0f1117] px-4 py-4 col-span-3"><p class="text-sm leading-relaxed text-white/60">Organic search grew 12.4% week over week, driven by improved rankings on three high-intent terms. Referral traffic is concentrated in two partner domains.</p></div>
        </dl>
      </div>
    </div>
  </div>

  <div class="rounded-xl border border-white/10 bg-white/5 transition-colors hover:bg-white/[0.07]" data-accordion-item>
    <h3>
      <button type="button" id="dark-trigger-2" aria-controls="dark-panel-2" aria-expanded="false" class="accordion-trigger group flex w-full items-center gap-3 px-4 py-3.5 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-400 focus-visible:ring-inset rounded-xl">
        <span class="flex h-2 w-2 shrink-0 rounded-full bg-emerald-400 shadow-[0_0_8px_rgba(52,211,153,0.8)]"></span>
        <span class="min-w-0 flex-1">
          <span class="block text-sm font-medium text-white">Active users</span>
          <span class="block text-xs text-white/40">Daily and monthly active</span>
        </span>
        <span class="rounded-md bg-emerald-400/10 px-2 py-0.5 text-xs font-medium text-emerald-300">+5.1%</span>
        <svg class="accordion-chevron h-5 w-5 shrink-0 text-white/40 transition-transform duration-300 ease-out" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/></svg>
      </button>
    </h3>
    <div id="dark-panel-2" role="region" aria-labelledby="dark-trigger-2" class="accordion-panel grid grid-rows-[0fr] transition-[grid-template-rows] duration-300 ease-out">
      <div class="overflow-hidden">
        <div class="border-t border-white/10 px-4 py-4 text-sm leading-relaxed text-white/60">DAU climbed to 18,420 with a sticky factor of 0.62. Retention for the cohort that joined two weeks ago is tracking 8% above the prior 90-day baseline.</div>
      </div>
    </div>
  </div>

  <div class="rounded-xl border border-white/10 bg-white/5 transition-colors hover:bg-white/[0.07]" data-accordion-item>
    <h3>
      <button type="button" id="dark-trigger-3" aria-controls="dark-panel-3" aria-expanded="false" class="accordion-trigger group flex w-full items-center gap-3 px-4 py-3.5 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-indigo-400 focus-visible:ring-inset rounded-xl">
        <span class="flex h-2 w-2 shrink-0 rounded-full bg-rose-400 shadow-[0_0_8px_rgba(251,113,133,0.8)]"></span>
        <span class="min-w-0 flex-1">
          <span class="block text-sm font-medium text-white">Churn risk</span>
          <span class="block text-xs text-white/40">Accounts at risk this cycle</span>
        </span>
        <span class="rounded-md bg-rose-400/10 px-2 py-0.5 text-xs font-medium text-rose-300">3 accounts</span>
        <svg class="accordion-chevron h-5 w-5 shrink-0 text-white/40 transition-transform duration-300 ease-out" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/></svg>
      </button>
    </h3>
    <div id="dark-panel-3" role="region" aria-labelledby="dark-trigger-3" class="accordion-panel grid grid-rows-[0fr] transition-[grid-template-rows] duration-300 ease-out">
      <div class="overflow-hidden">
        <div class="border-t border-white/10 px-4 py-4 text-sm leading-relaxed text-white/60">Three accounts show declining usage for two consecutive weeks. A customer success play has been queued for each; expected outreach completes within 48 hours.</div>
      </div>
    </div>
  </div>

  <script>
    (function () {
      const root = document.currentScript.closest('[data-accordion]');
      if (!root) return;
      const singleOpen = root.hasAttribute('data-single-open');
      const items = Array.from(root.querySelectorAll('[data-accordion-item]'));
      items.forEach((item) => {
        const trigger = item.querySelector('.accordion-trigger');
        const panel = item.querySelector('.accordion-panel');
        const chevron = item.querySelector('.accordion-chevron');
        if (!trigger || !panel) return;
        const close = () => { trigger.setAttribute('aria-expanded','false'); panel.classList.remove('grid-rows-[1fr]'); panel.classList.add('grid-rows-[0fr]'); if (chevron) chevron.style.transform=''; };
        const open = () => { trigger.setAttribute('aria-expanded','true'); panel.classList.add('grid-rows-[1fr]'); panel.classList.remove('grid-rows-[0fr]'); if (chevron) chevron.style.transform='rotate(180deg)'; };
        trigger.addEventListener('click', () => {
          const isOpen = trigger.getAttribute('aria-expanded') === 'true';
          if (singleOpen) items.forEach((o) => { if (o !== item) { const t=o.querySelector('.accordion-trigger'); const p=o.querySelector('.accordion-panel'); const c=o.querySelector('.accordion-chevron'); t.setAttribute('aria-expanded','false'); p.classList.remove('grid-rows-[1fr]'); p.classList.add('grid-rows-[0fr]'); if(c) c.style.transform=''; } });
          isOpen ? close() : open();
        });
      });
    })();
  </script>
</div>
91 lines UTF-8 · LF · Spaces: 2
DevSnips AI ready Claude · Cursor · Windsurf

Agent skill & Model Context Protocol

Pass this component straight into your AI workflow. DevSnips exposes each resource as a structured, addressable registry entry, so your agent installs the real files instead of approximating them.

devsnips://components/accordions/dark-accordion
Prompt instruction
I want to use this DevSnips resource in production:

Page:
https://devsnips.site/library/tailwind/components/accordions/dark-accordion/

Install: npx devsnips add
Tailwind/Components/Accordions/dark-accordion

This is the Dark Accordion — Modern dark-mode dashboard accordion with single-open behavior, glowing status dots, metric delta badges, and an indigo active accent. Built for analytics and admin panels.

Use this DevSnips resource as the starting point for my project.
Adapt it to my project's stack and conventions, fix any issues,
and make it production-ready while preserving its intended design
and behavior.

Paste into ChatGPT, Claude or your agent — it already carries the page URL and the exact install path.

Resource URI
devsnips://components/accordions/dark-accordion