Menu Bar
weekendsuperhero-io-sistine/menu-barUnverifiedComponent
A menu bar component, with the glass material system.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/Weekendsuperhero-io/sistine/main/menu-bar.jsonSource
1"use client";23import { cva, type VariantProps } from "class-variance-authority";4import * as React from "react";5import { type HoverEffect, hoverEffects } from "@/lib/hover-effects";6import { type MaterialAxisProps, materialSurface, splitAxisProps } from "@/lib/material";7import { cn } from "@/lib/utils";8import { Button } from "./button";910/* Variant classes carry BEHAVIOR only; the surface comes from materialSurface. */11const menuBarVariants = cva("", {12 variants: {13 variant: {14 default: "bg-card text-card-foreground border shadow-sm",15 glass: "text-foreground",16 },17 },18 defaultVariants: {19 variant: "glass",20 },21});2223/* Role: borderless adaptive glass. */24const ROLE = {};2526export interface MenuBarProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof menuBarVariants>, MaterialAxisProps {27 effect?: HoverEffect;28}2930const MenuBar = React.forwardRef<HTMLDivElement, MenuBarProps>(({ className, variant = "glass", effect, children, ...props }, ref) => {31 const [axes, rest] = splitAxisProps(props);32 const m = materialSurface(variant === "default" ? null : ROLE, axes);3334 return (35 <div36 ref={ref}37 role="menubar"38 data-material={m?.["data-material"]}39 className={cn(40 m?.className,41 "inline-flex items-center gap-1 rounded-md p-1",42 menuBarVariants({43 variant,44 }),45 effect &&46 hoverEffects({47 hover: effect,48 }),49 className,50 )}51 {...rest}52 >53 {children}54 </div>55 );56});57MenuBar.displayName = "MenuBar";5859export interface MenuBarItemProps extends React.ComponentProps<typeof Button> {60 active?: boolean;61}6263const MenuBarItem = React.forwardRef<HTMLButtonElement, MenuBarItemProps>(({ className, active, variant = "ghost", ...props }, ref) => {64 return (65 <Button66 ref={ref}67 variant={variant}68 className={cn("h-8 px-3 text-sm", active && "bg-foreground/10 text-accent-foreground", className)}69 {...props}70 />71 );72});73MenuBarItem.displayName = "MenuBarItem";7475export { MenuBar, MenuBarItem };
What it pulls in
npm packages
Other registry items
Files it writes
More from weekendsuperhero-io/sistine
All 71 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | weekendsuperhero-io/sistine | Components | Unverified | 5 deps · 4 files | |
| Alertalert | weekendsuperhero-io/sistine | Components | Unverified | 3 deps · 4 files | |
| Alert Dialogalert-dialog | weekendsuperhero-io/sistine | Components | Unverified | 4 deps · 4 files | |
| Auto Foregroundauto-foreground | weekendsuperhero-io/sistine | Components | Unverified | no deps | |
| Avataravatar | weekendsuperhero-io/sistine | Components | Unverified | 4 deps · 4 files | |
| Badgebadge | weekendsuperhero-io/sistine | Components | Unverified | 4 deps · 4 files | |
| Breadcrumbbreadcrumb | weekendsuperhero-io/sistine | Components | Unverified | 5 deps · 4 files | |
| Buttonbutton | weekendsuperhero-io/sistine | Components | Unverified | 4 deps · 4 files |
