8bitcn UI
componentaccordionsource: ok · hit
8-bit Accordion
A simple 8-bit accordion component
npx shadcn add "https://www.8bitcn.com/r/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 · lightRegistry dependencies
accordion
Files2 · source cached 10/9/2026, 9:30:33 PM
components/ui/8bit/accordion.tsx
"use client";
import type * as React from "react";
import * as AccordionPrimitive from "@radix-ui/react-accordion";
import { cn } from "@/lib/utils";
import {
Accordion as ShadcnAccordion,
AccordionContent as ShadcnAccordionContent,
AccordionItem as ShadcnAccordionItem,
AccordionTrigger as ShadcnAccordionTrigger,
} from "@/components/ui/accordion";
import "@/components/ui/8bit/styles/retro.css";
export interface BitAccordionItemProps
extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> {
asChild?: boolean;
}
function AccordionItem({
className,
children,
...props
}: BitAccordionItemProps) {
return (
<ShadcnAccordionItem
className={cn(
"border-dashed border-b-4 border-foreground dark:border-ring relative",
className
)}
{...props}
>
{children}
</ShadcnAccordionItem>
);
}
export interface BitAccordionTriggerProps
extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> {
font?: "normal" | "retro";
}
function AccordionTrigger({
className,
children,
font,
...props
}: BitAccordionTriggerProps) {
return (
<ShadcnAccordionTrigger
className={cn(font !== "normal" && "retro", className)}
{...props}
>
{children}
</ShadcnAccordionTrigger>
);
}
export interface BitAccordionContentProps
extends React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> {
font?: "normal" | "retro";
}
function AccordionContent({
className,
children,
font,
...props
}: BitAccordionContentProps) {
return (
<div className="relative">
<ShadcnAccordionContent
className={cn(
"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
font !== "normal" && "retro",
className
)}
{...props}
>
<div className="pb-4 pt-0 relative z-10 p-1">{children}</div>
</ShadcnAccordionContent>
<AccordionPrimitive.Content asChild forceMount />
</div>
);
}
const Accordion = ShadcnAccordion;
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
components/ui/8bit/styles/retro.css
@import url("https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap");
.retro {
font-family:
"Press Start 2P",
system-ui,
-apple-system,
sans-serif;
line-height: 1.5;
letter-spacing: 0.5px;
}
.pixelated {
image-rendering: pixelated;
image-rendering: crisp-edges;
}