Component

Bordered Accordion

Enterprise accordion with distinct bordered cards, leading status icons, status chips, and metadata grids. Each section is self-contained for compliance and admin panels.

  • Component
  • Tailwind
  • HTML
  • MIT

What it does

Capabilities

  • Bordered cards
  • Status chips
  • Metadata grid
  • Icon accents
  • Open-state ring

Preview

Live component

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

Install

Add to your project

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

Source

Implementation

code.html
<!--
Snippet Name: Bordered Accordion
Description: Enterprise accordion with distinct bordered cards, status chips, and refined hover/focus states.
Author: DevSnips Contributors
Usage Example: Use inside enterprise admin panels or compliance docs where each section needs clear containment.
-->
<div class="space-y-3" data-accordion="bordered">
  <div class="rounded-xl border border-gray-200 bg-white transition-colors hover:border-gray-300 data-[open=true]:border-blue-200 data-[open=true]:ring-1 data-[open=true]:ring-blue-100" data-accordion-item data-open="false">
    <h3>
      <button type="button" id="bordered-trigger-1" aria-controls="bordered-panel-1" aria-expanded="false" class="accordion-trigger flex w-full items-center gap-4 px-4 py-4 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-inset rounded-xl">
        <span class="flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-blue-50 text-blue-600">
          <svg class="h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg>
        </span>
        <span class="min-w-0 flex-1">
          <span class="flex items-center gap-2">
            <span class="text-sm font-semibold text-gray-900">Identity & access management</span>
            <span class="rounded-full bg-green-50 px-2 py-0.5 text-[11px] font-medium text-green-700">Enforced</span>
          </span>
          <span class="mt-0.5 block text-xs text-gray-500">SAML SSO, MFA, and session policies</span>
        </span>
        <svg class="accordion-chevron h-5 w-5 shrink-0 text-gray-400 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="bordered-panel-1" role="region" aria-labelledby="bordered-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-1 gap-px overflow-hidden border-t border-gray-100 bg-gray-100 sm:grid-cols-3">
          <div class="bg-white px-4 py-3"><dt class="text-xs text-gray-500">SSO provider</dt><dd class="mt-0.5 text-sm font-medium text-gray-900">Okta</dd></div>
          <div class="bg-white px-4 py-3"><dt class="text-xs text-gray-500">MFA enrollment</dt><dd class="mt-0.5 text-sm font-medium text-gray-900">98%</dd></div>
          <div class="bg-white px-4 py-3"><dt class="text-xs text-gray-500">Session length</dt><dd class="mt-0.5 text-sm font-medium text-gray-900">8 hours</dd></div>
          <div class="bg-white px-4 py-4 sm:col-span-3"><p class="text-sm leading-relaxed text-gray-600">All members authenticate through your identity provider. Password login is disabled and mandatory MFA is enforced for every account, including service users with elevated scopes.</p></div>
        </dl>
      </div>
    </div>
  </div>

  <div class="rounded-xl border border-gray-200 bg-white transition-colors hover:border-gray-300 data-[open=true]:border-blue-200 data-[open=true]:ring-1 data-[open=true]:ring-blue-100" data-accordion-item data-open="false">
    <h3>
      <button type="button" id="bordered-trigger-2" aria-controls="bordered-panel-2" aria-expanded="false" class="accordion-trigger flex w-full items-center gap-4 px-4 py-4 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-inset rounded-xl">
        <span class="flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-amber-50 text-amber-600">
          <svg class="h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"/></svg>
        </span>
        <span class="min-w-0 flex-1">
          <span class="flex items-center gap-2">
            <span class="text-sm font-semibold text-gray-900">Data encryption & key rotation</span>
            <span class="rounded-full bg-amber-50 px-2 py-0.5 text-[11px] font-medium text-amber-700">Review</span>
          </span>
          <span class="mt-0.5 block text-xs text-gray-500">At-rest, in-transit, and KMS policies</span>
        </span>
        <svg class="accordion-chevron h-5 w-5 shrink-0 text-gray-400 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="bordered-panel-2" role="region" aria-labelledby="bordered-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-gray-100 px-4 py-4 text-sm leading-relaxed text-gray-600">Customer data is encrypted at rest with AES-256 and in transit via TLS 1.3. Customer-managed keys rotate every 90 days; the next rotation is scheduled automatically and surfaces an alert if a policy drifts out of compliance.</div>
      </div>
    </div>
  </div>

  <div class="rounded-xl border border-gray-200 bg-white transition-colors hover:border-gray-300 data-[open=true]:border-blue-200 data-[open=true]:ring-1 data-[open=true]:ring-blue-100" data-accordion-item data-open="false">
    <h3>
      <button type="button" id="bordered-trigger-3" aria-controls="bordered-panel-3" aria-expanded="false" class="accordion-trigger flex w-full items-center gap-4 px-4 py-4 text-left focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-inset rounded-xl">
        <span class="flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-gray-100 text-gray-600">
          <svg class="h-5 w-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 17v-2m3 2v-4m3 4v-6m2 10H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/></svg>
        </span>
        <span class="min-w-0 flex-1">
          <span class="flex items-center gap-2">
            <span class="text-sm font-semibold text-gray-900">Audit logging</span>
            <span class="rounded-full bg-gray-100 px-2 py-0.5 text-[11px] font-medium text-gray-600">Optional</span>
          </span>
          <span class="mt-0.5 block text-xs text-gray-500">Immutable event trail and exports</span>
        </span>
        <svg class="accordion-chevron h-5 w-5 shrink-0 text-gray-400 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="bordered-panel-3" role="region" aria-labelledby="bordered-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-gray-100 px-4 py-4 text-sm leading-relaxed text-gray-600">Every privileged action is written to an append-only log. Exports stream to your SIEM over HTTPS and include actor, target, IP, and full request context for forensic review.</div>
      </div>
    </div>
  </div>

  <script>
    (function () {
      const root = document.currentScript.closest('[data-accordion]');
      if (!root) return;
      root.querySelectorAll('[data-accordion-item]').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 toggle = () => {
          const open = trigger.getAttribute('aria-expanded') === 'true';
          trigger.setAttribute('aria-expanded', String(!open));
          panel.classList.toggle('grid-rows-[1fr]', !open);
          panel.classList.toggle('grid-rows-[0fr]', open);
          item.setAttribute('data-open', String(!open));
          if (chevron) chevron.style.transform = open ? '' : 'rotate(180deg)';
        };
        trigger.addEventListener('click', toggle);
      });
    })();
  </script>
</div>
103 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/bordered-accordion
Prompt instruction
I want to use this DevSnips resource in production:

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

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

This is the Bordered Accordion — Enterprise accordion with distinct bordered cards, leading status icons, status chips, and metadata grids. Each section is self-contained for compliance 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/bordered-accordion