Openstatus www.openstatus.dev
at 4c0f4c00a38753a5d0dfd7e7b7b7706dec6f1503 60 lines 1.4 kB view raw
1import { Button } from "@/components/ui/button"; 2import { cn } from "@/lib/utils"; 3import { type VariantProps, cva } from "class-variance-authority"; 4 5const noteVariants = cva( 6 "flex items-center gap-2 rounded-xl border px-3 py-2 [&>svg]:size-4 [&>svg]:text-current [&>svg]:shrink-0", 7 { 8 variants: { 9 variant: { 10 default: "border-border", 11 ghost: "border-none bg-transparent", 12 }, 13 color: { 14 default: "text-foreground bg-sidebar", 15 warning: "text-warning border-warning/50 bg-warning/5", 16 error: "text-destructive border-destructive/50 bg-destructive/5", 17 success: "text-success border-success/50 bg-success/5", 18 info: "text-info border-info/50 bg-info/5", 19 }, 20 }, 21 defaultVariants: { 22 variant: "default", 23 color: "default", 24 }, 25 }, 26); 27 28export function Note({ 29 children, 30 className, 31 variant = "default", 32 color = "default", 33 ...props 34}: React.ComponentProps<"div"> & VariantProps<typeof noteVariants>) { 35 return ( 36 <div 37 data-variant={variant} 38 className={cn(noteVariants({ variant, color, className }))} 39 {...props} 40 > 41 {children} 42 </div> 43 ); 44} 45 46export function NoteButton({ 47 children, 48 className, 49 ...props 50}: React.ComponentProps<typeof Button>) { 51 return ( 52 <Button 53 size="sm" 54 className={cn("-mr-1 ml-auto shrink-0", className)} 55 {...props} 56 > 57 {children} 58 </Button> 59 ); 60}