shadimage
sf-fleet-hud
uihud-accordionsource: ok · hit

HUD Accordion

Bordered accordion with rotating caret and hairline dividers.

npx shadcn add "https://sf-fleet-hud.vercel.app/r/hud-accordion.json"
free

Interaction

accordion

Tags auto-generated by rules on 9/24/2026 — empty means no evidence, not lack of support.

Dependencies

Bundle weight · light
ui-primitives@radix-ui/react-accordion

Registry dependencies

utils

Files1 · source cached 10/14/2026, 1:52:36 PM

registry/hud/hud-accordion.tsx
"use client"

import * as React from "react"
import * as AccordionPrimitive from "@radix-ui/react-accordion"
import { cn } from "@/lib/utils"

function HudAccordion({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>) {
  return (
    <AccordionPrimitive.Root
      className={cn("border border-border bg-[#0F1113]", className)}
      {...props}
    />
  )
}

function HudAccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>) {
  return (
    <AccordionPrimitive.Item
      className={cn("border-b border-[#1D2023] last:border-b-0", className)}
      {...props}
    />
  )
}

function HudAccordionTrigger({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {
  return (
    <AccordionPrimitive.Header className="flex">
      <AccordionPrimitive.Trigger
        className={cn(
          "group flex flex-1 cursor-pointer items-center justify-between px-4 py-3 font-sans text-sm font-normal uppercase tracking-[0.12em] text-[#8A9094] transition-colors outline-none",
          "hover:bg-[#121517] focus-visible:ring-1 focus-visible:ring-ring",
          "data-[state=open]:font-medium data-[state=open]:text-foreground data-[state=open]:hover:bg-transparent",
          className
        )}
        {...props}
      >
        {children}
        <span
          aria-hidden
          className="font-mono text-[10px] text-[#5A6065] transition-transform group-data-[state=open]:rotate-90 group-data-[state=open]:text-primary"
        >
          ▸
        </span>
      </AccordionPrimitive.Trigger>
    </AccordionPrimitive.Header>
  )
}

function HudAccordionContent({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Content>) {
  return (
    <AccordionPrimitive.Content
      className="overflow-hidden data-[state=open]:animate-accordion-down data-[state=closed]:animate-accordion-up"
      {...props}
    >
      <div className={cn("flex flex-col gap-2 px-4 pb-3.5", className)}>{children}</div>
    </AccordionPrimitive.Content>
  )
}

export { HudAccordion, HudAccordionItem, HudAccordionTrigger, HudAccordionContent }

More from sf-fleet-hud

Browse all components in this library →