8-bit Button Group
8bitcn/button-groupFreeComponent
Groups multiple 8-bit buttons together inside a shared retro pixelated border.
Install it
npx shadcn@latest add https://www.8bitcn.com/r/button-group.jsonSource
1import type * as React from "react";23import { cn } from "@/lib/utils";45import {6 ButtonGroup as ShadcnButtonGroup,7 ButtonGroupText as ShadcnButtonGroupText,8 buttonGroupVariants,9} from "@/components/ui/button-group";1011import "@/components/ui/8bit/styles/retro.css";1213export { buttonGroupVariants };1415// ─── ButtonGroup ──────────────────────────────────────────────────────────────1617export type BitButtonGroupProps = React.ComponentProps<18 typeof ShadcnButtonGroup19>;2021/**22 * 8-bit ButtonGroup wraps the shadcn ButtonGroup and adds a shared retro23 * pixelated border around the whole group.24 *25 * API matches shadcn: `orientation`, `data-slot="button-group"`.26 * No React context — child button sizing and layout is handled via CSS27 * child selectors in `buttonGroupVariants`, identical to shadcn.28 */29function ButtonGroup({30 className,31 orientation = "horizontal",32 children,33 ...props34}: BitButtonGroupProps) {35 return (36 <div37 className={cn(38 "relative inline-flex",39 orientation === "vertical" ? "flex-col" : "flex-row"40 )}41 >42 {/* Shared outer pixelated border */}43 {/* Top */}44 <div className="absolute -top-1.5 left-1.5 right-1.5 h-1.5 bg-foreground dark:bg-ring pointer-events-none z-10" />45 {/* Bottom */}46 <div className="absolute -bottom-1.5 left-1.5 right-1.5 h-1.5 bg-foreground dark:bg-ring pointer-events-none z-10" />47 {/* Left */}48 <div className="absolute -left-1.5 top-1.5 bottom-1.5 w-1.5 bg-foreground dark:bg-ring pointer-events-none z-10" />49 {/* Right */}50 <div className="absolute -right-1.5 top-1.5 bottom-1.5 w-1.5 bg-foreground dark:bg-ring pointer-events-none z-10" />51 {/* Corners */}52 <div className="absolute top-0 left-0 size-1.5 bg-foreground dark:bg-ring pointer-events-none z-10" />53 <div className="absolute top-0 right-0 size-1.5 bg-foreground dark:bg-ring pointer-events-none z-10" />54 <div className="absolute bottom-0 left-0 size-1.5 bg-foreground dark:bg-ring pointer-events-none z-10" />55 <div className="absolute bottom-0 right-0 size-1.5 bg-foreground dark:bg-ring pointer-events-none z-10" />5657 <ShadcnButtonGroup58 className={cn(59 // The group draws one shared border, so the per-button pixel borders60 // would double it up on the outer edges and paint across every61// … truncated
What it pulls in
Other registry items
Files it writes
More from 8bitcn
All 121 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| 8-bit Accordionaccordion | 8bitcn | Components | Free | no deps · 2 files | |
| 8-bit Alertalert | 8bitcn | Components | Free | no deps · 2 files | |
| 8-bit Alert Dialogalert-dialog | 8bitcn | Components | Free | no deps · 2 files | |
| 8-bit Avataravatar | 8bitcn | Components | Free | no deps · 2 files | |
| 8-bit Badgebadge | 8bitcn | Components | Free | no deps · 2 files | |
| 8-bit Breadcrumbbreadcrumb | 8bitcn | Components | Free | no deps · 2 files | |
| 8-bit Buttonbutton | 8bitcn | Components | Free | no deps · 2 files | |
| 8-bit Calendarcalendar | 8bitcn | Components | Free | no deps · 2 files |
