8-bit Navigation Menu
8bitcn/navigation-menuFreeComponent
A simple 8-bit navigation menu component
Install it
npx shadcn@latest add https://www.8bitcn.com/r/navigation-menu.jsonSource
1import type * as React from "react";23import { Indicator, Root, Viewport } from "@radix-ui/react-navigation-menu";4import { type VariantProps, cva } from "class-variance-authority";56import { cn } from "@/lib/utils";78import {9 NavigationMenuContent as ShadcnNavigationMenuContent,10 type NavigationMenuIndicator as ShadcnNavigationMenuIndicator,11 NavigationMenuItem as ShadcnNavigationMenuItem,12 NavigationMenuLink as ShadcnNavigationMenuLink,13 NavigationMenuList as ShadcnNavigationMenuList,14 NavigationMenuTrigger as ShadcnNavigationMenuTrigger,15} from "@/components/ui/navigation-menu";1617import "@/components/ui/8bit/styles/retro.css";1819export { navigationMenuTriggerStyle } from "@/components/ui/navigation-menu";2021export const navigationMenuVariants = cva("", {22 variants: {23 font: {24 normal: "",25 retro: "retro",26 },27 },28 defaultVariants: {29 font: "retro",30 },31});3233type FontVariantProps = VariantProps<typeof navigationMenuVariants>;3435const getFontClassName = (font: FontVariantProps["font"]) =>36 navigationMenuVariants({ font });3738function NavigationMenu({39 className,40 font,41 children,42 viewport = true,43 ...props44}: React.ComponentProps<typeof Root> & {45 viewport?: boolean;46} & FontVariantProps) {47 return (48 <Root49 data-slot="navigation-menu"50 data-viewport={viewport}51 className={cn(52 "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",53 getFontClassName(font),54 className55 )}56 {...props}57 >58 {children}59 {viewport && <NavigationMenuViewport />}60 </Root>61 );62}6364function NavigationMenuList({65 className,66 font,67 ...props68}: React.ComponentProps<typeof ShadcnNavigationMenuList> &69 VariantProps<typeof navigationMenuVariants>) {70 return (71 <ShadcnNavigationMenuList72 className={cn(getFontClassName(font), className)}73 {...props}74 />75 );76}7778function NavigationMenuItem({79 className,80 font,81 ...props82}: React.ComponentProps<typeof ShadcnNavigationMenuItem> & FontVariantProps) {83 return (84 <ShadcnNavigationMenuItem85 className={cn("static", getFontClassName(font), className)}86 {...props}87 />88 );89}9091function NavigationMenuTrigger({92 className,93 font,94 ...props95}: React.ComponentProps<typeof ShadcnNavigationMenuTrigger> &96 FontVariantProps) {97 return (98 <ShadcnNavigationMenuTrigger99 className={cn(getFontClassName(font), className)}100 {...props}101 />102 );103}104105// … 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 Button Groupbutton-group | 8bitcn | Components | Free | no deps · 4 files |
