Package Manager Command
sidcn/package-manager-commandFreeComponent
A beautiful package manager command component
Live preview
live · rendered by the registry
Rendered by sidcn on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://ui.siddhesh.cc/r/package-manager-command.jsonSource
1"use client";23import { Tooltip, TooltipTrigger } from "@/components/ui/tooltip";4import { Button } from "./button";5import { CheckIcon, ClipboardIcon, TerminalIcon } from "lucide-react";6import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";7import { useState } from "react";8import { cn } from "@/lib/utils";910export type PackageManager = "npm" | "yarn" | "pnpm" | "bun";1112const PACKAGE_MANAGERS: PackageManager[] = ["npm", "yarn", "pnpm", "bun"];1314function BashCommand({ command }: { command: string }) {15 return (16 <pre>17 <code18 className="relative font-mono text-sm leading-none before:mr-2 before:text-muted-foreground before:content-['$']"19 data-language="bash"20 >21 {command}22 </code>23 </pre>24 );25}2627export function PackageManagerCommand({28 getCommand,29 className,30}: {31 getCommand(packageManager: PackageManager): string;32 className?: string;33}) {34 const [packageManager, setPackageManager] = useState<PackageManager>("npm");35 const [copied, setCopied] = useState(false);36 const command = getCommand(packageManager);3738 const copyCommand = () => {39 navigator.clipboard.writeText(command);40 setCopied(true);41 setTimeout(() => setCopied(false), 2000);42 };4344 return (45 <div className={cn("overflow-x-auto relative w-full border rounded-md", className)}>46 <Tabs47 value={packageManager}48 onValueChange={(val) => setPackageManager(val as PackageManager)}49 className="gap-0"50 >51 <div className="border-border/50 flex items-center gap-2 border-b px-2 py-1">52 <div className="flex size-4 items-center justify-center rounded-[1px] opacity-70">53 <TerminalIcon />54 </div>55 <TabsList className="rounded-none bg-transparent p-0">56 <TabsTrigger57 value="npm"58 className="data-[state=active]:bg-accent data-[state=active]:border-input h-7 border border-transparent pt-0.5 data-[state=active]:shadow-none"59 >60 npm61 </TabsTrigger>62 <TabsTrigger63 value="yarn"64 className="data-[state=active]:bg-accent data-[state=active]:border-input h-7 border border-transparent pt-0.5 data-[state=active]:shadow-none"65 >66 yarn67 </TabsTrigger>68 <TabsTrigger69 value="pnpm"70// … truncated
What it pulls in
Other registry items
Files it writes
More from sidcn
All 14 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Badgebadge | sidcn | Components | Free | 3 deps | |
| Buttonbutton | sidcn | Components | Free | 2 deps | |
| Data Tabledata-table | sidcn | Components | Free | 2 deps | |
| Date Inputdate-input | sidcn | Components | Free | 1 dep | |
| Date Time Inputdate-time-input | sidcn | Components | Free | 2 deps | |
| Iconsicons | sidcn | Components | Free | no deps | |
| Sidebarsidebar | sidcn | Components | Free | 3 deps | |
| Sonnersonner | sidcn | Components | Free | 2 deps |
