@undp/design-system-react
Version:
React based design system for UNDP
1 lines • 6.13 kB
Source Map (JSON)
{"version":3,"file":"Button.cjs","names":[],"sources":["../src/components/ui/button.tsx"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot } from 'radix-ui';\nimport type * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst buttonVariants = cva(\n 'cursor-pointer m-0! tracking-[0.48px] inline-flex items-center justify-center gap-2 uppercase whitespace-nowrap rounded font-bold transition-colors focus-visible:outline-hidden focus-visible:ring-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n primary: 'bg-primary text-content-reverse hover:bg-primary-hover',\n secondary: 'bg-secondary text-content-reverse hover:bg-secondary-hover',\n tertiary: 'bg-tertiary text-content-primary hover:bg-tertiary-hover',\n quaternary: 'bg-quaternary text-content-primary hover:bg-quaternary-hover',\n link: 'text-content-primary hover:text-content-secondary',\n outline:\n 'bg-transparent text-content-primary border-2 border-foreground hover:bg-surface-xs',\n icon: 'bg-transparent text-content-primary hover:text-content-secondary',\n success: 'bg-success text-content-reverse hover:bg-success-hover',\n warning: 'bg-warning text-content-primary hover:bg-warning-hover',\n info: 'bg-info text-content-reverse hover:bg-info-hover',\n error: 'bg-error text-content-reverse hover:bg-error-hover',\n surface: 'bg-surface text-content-primary hover:bg-surface-hover',\n 'surface-hard': 'bg-surface-hard text-content-primary hover:bg-surface-hard-hover',\n background: 'bg-background text-content-primary hover:bg-background-soft',\n 'background-soft': 'bg-background-soft text-content-primary hover:bg-background',\n foreground: 'bg-foreground text-content-reverse hover:bg-foreground-soft',\n 'foreground-soft': 'bg-foreground-soft text-content-reverse hover:bg-foreground',\n },\n arrow: {\n true: `\n after:content-['']\n after:inline-block\n after:h-[20px]\n after:w-[13px]\n after:ml-3\n rtl:after:ml-0\n rtl:after:mr-3\n rtl:after:scale-x-[-1]\n after:bg-no-repeat\n after:bg-left\n after:transition-transform\n after:duration-200\n after:ease-in-out\n hover:after:translate-x-[70%]\n rtl:hover:after:-translate-x-[70%]\n disabled:hover:after:translate-x-0\n rtl:disabled:hover:after:translate-x-0\n group-hover:after:translate-x-[70%]\n rtl:group-hover:after:-translate-x-[70%]\n disabled:group-hover:after:translate-x-0\n rtl:disabled:group-hover:after:translate-x-0\n `,\n },\n size: {\n base: 'text-base leading-xs',\n xs: 'text-xs leading-xs',\n sm: 'text-sm leading-xs',\n xl: 'text-xl leading-xs',\n },\n rounded: {\n base: 'rounded-base',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n xl: 'rounded-xl',\n '2xl': 'rounded-2xl',\n full: 'rounded-full',\n },\n padding: {\n base: 'py-4 px-6',\n sm: 'px-4 py-2',\n none: 'py-0 px-0',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'base',\n padding: 'base',\n rounded: 'base',\n arrow: true,\n },\n },\n);\nfunction Button({\n className,\n variant = 'primary',\n size,\n arrow = true,\n rounded,\n padding,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n }) {\n const Comp = asChild ? Slot.Root : 'button';\n\n return (\n <Comp\n data-slot='button'\n data-variant={variant}\n data-size={size}\n className={cn(\n buttonVariants({\n variant,\n size,\n rounded,\n padding,\n arrow: variant === 'icon' ? false : arrow,\n }),\n arrow\n ? variant === 'primary'\n ? 'foreground-arrow'\n : variant === 'secondary' ||\n variant === 'foreground' ||\n variant === 'foreground-soft' ||\n variant === 'success' ||\n variant === 'error' ||\n variant === 'info'\n ? 'background-arrow'\n : variant === 'link' ||\n variant === 'tertiary' ||\n variant === 'quaternary' ||\n variant === 'surface' ||\n variant === 'surface-hard' ||\n variant === 'outline' ||\n variant === 'background' ||\n variant === 'background-soft'\n ? 'primary-arrow'\n : ''\n : '',\n className,\n )}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n"],"mappings":"gNAMA,IAAM,EAAiB,EAAA,EACrB,qTACA,CACE,SAAU,CACR,QAAS,CACP,QAAS,yDACT,UAAW,6DACX,SAAU,2DACV,WAAY,+DACZ,KAAM,oDACN,QACE,qFACF,KAAM,mEACN,QAAS,yDACT,QAAS,yDACT,KAAM,mDACN,MAAO,qDACP,QAAS,yDACT,eAAgB,mEAChB,WAAY,8DACZ,kBAAmB,8DACnB,WAAY,8DACZ,kBAAmB,6DACrB,EACA,MAAO,CACL,KAAM;;;;;;;;;;;;;;;;;;;;;;SAuBR,EACA,KAAM,CACJ,KAAM,uBACN,GAAI,qBACJ,GAAI,qBACJ,GAAI,oBACN,EACA,QAAS,CACP,KAAM,eACN,GAAI,aACJ,GAAI,aACJ,GAAI,aACJ,GAAI,aACJ,MAAO,cACP,KAAM,cACR,EACA,QAAS,CACP,KAAM,YACN,GAAI,YACJ,KAAM,WACR,CACF,EACA,gBAAiB,CACf,QAAS,UACT,KAAM,OACN,QAAS,OACT,QAAS,OACT,MAAO,EACT,CACF,CACF,EACA,SAAS,EAAO,CACd,YACA,UAAU,UACV,OACA,QAAQ,GACR,UACA,UACA,UAAU,GACV,GAAG,GAIA,CAGH,OACE,EAAA,EAAA,IAAA,CAHW,EAAA,EAAA,EAAsB,SAGjC,CACE,YAAU,SACV,eAAc,EACd,YAAW,EACX,UAAW,EAAA,EACT,EAAe,CACb,UACA,OACA,UACA,UACA,MAAO,IAAY,QAAiB,CACtC,CAAC,EACD,EACI,IAAY,UACV,mBACA,IAAY,aACV,IAAY,cACZ,IAAY,mBACZ,IAAY,WACZ,IAAY,SACZ,IAAY,OACZ,mBACA,IAAY,QACV,IAAY,YACZ,IAAY,cACZ,IAAY,WACZ,IAAY,gBACZ,IAAY,WACZ,IAAY,cACZ,IAAY,kBACZ,gBACA,GACN,GACJ,CACF,EACA,GAAI,CACL,CAAA,CAEL"}