@undp/design-system-react
Version:
React based design system for UNDP
1 lines • 5.05 kB
Source Map (JSON)
{"version":3,"file":"ResourceCard.cjs","names":[],"sources":["../src/components/ui/resource-card.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nconst ResourceCard = React.forwardRef<\n HTMLAnchorElement,\n React.AnchorHTMLAttributes<HTMLAnchorElement>\n>(({ className, ...props }, ref) => (\n <a\n ref={ref}\n className={cn(\n 'group box-border flex w-full flex-col items-stretch gap-0 bg-surface transition-all duration-400',\n className,\n )}\n {...props}\n />\n));\nResourceCard.displayName = 'ResourceCard';\n\ninterface ResourceCardImageProps extends React.HTMLAttributes<HTMLDivElement> {\n imageSrc: string;\n hoverColor?: boolean;\n aspectRatio?: 'landscape' | 'portrait' | 'square';\n imageClassNames?: string;\n}\nconst imgVariants = cva('relative w-full object-cover object-center opacity-100', {\n variants: {\n aspectRatio: {\n landscape: 'aspect-video',\n portrait: 'aspect-[3/4]',\n square: 'aspect-square',\n },\n },\n defaultVariants: {\n aspectRatio: 'portrait',\n },\n});\n\nconst ResourceCardImage = React.forwardRef<HTMLDivElement, ResourceCardImageProps>(\n (\n { className, imageSrc, aspectRatio = 'portrait', hoverColor = true, imageClassNames, ...props },\n ref,\n ) => (\n <div\n ref={ref}\n className={cn(\n `relative box-border w-full bg-[linear-gradient(180deg,_#c9d0d6_70%,_#c9d0d6_0,_#414648_70.5%,_#9ea5ac_0,_#9ea5ac)] px-12 py-9 before:pointer-events-none before:absolute before:bottom-[37px] before:left-8 before:h-[27px] before:w-[calc(100%-100px)] before:rounded-[21%] before:bg-surface-xl before:blur-[4px] before:content-[''] before:[transform:skewX(64deg)]`,\n className,\n )}\n {...props}\n >\n <img\n src={imageSrc}\n alt='resource cover'\n className={cn(imgVariants({ aspectRatio }), imageClassNames)}\n />\n {hoverColor ? (\n <div className='absolute top-0 left-0 z-[1] h-full w-full bg-[linear-gradient(27.66deg,var(--card-hover-color),transparent_70.49%)] opacity-0 group-hover:opacity-75' />\n ) : null}\n </div>\n ),\n);\nResourceCardImage.displayName = 'ResourceCardImage';\n\nconst ResourceCardContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex grow flex-col p-6', className)} {...props} />\n ),\n);\nResourceCardContent.displayName = 'ResourceCardContent';\n\nconst ResourceCardTitle = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'mb-1 flex gap-2 font-body font-normal text-p-xs md:text-p-sm lg:text-p',\n className,\n )}\n {...props}\n />\n ),\n);\nResourceCardTitle.displayName = 'ResourceCardTitle';\n\nconst ResourceCardDescription = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('mb-4 font-body font-normal text-sm md:text-base lg:text-base', className)}\n {...props}\n />\n));\nResourceCardDescription.displayName = 'ResourceCardDescription';\n\nconst ResourceCardFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('font-body', className)} {...props} />\n ),\n);\nResourceCardFooter.displayName = 'ResourceCardFooter';\n\nexport {\n ResourceCard,\n ResourceCardContent,\n ResourceCardDescription,\n ResourceCardFooter,\n ResourceCardImage,\n ResourceCardTitle,\n};\n"],"mappings":"8PAIA,IAAM,EAAe,EAAM,YAGxB,CAAE,YAAW,GAAG,GAAS,KAC1B,EAAA,EAAA,IAAA,CAAC,IAAD,CACO,MACL,UAAW,EAAA,EACT,mGACA,CACF,EACA,GAAI,CACL,CAAA,CACF,EACD,EAAa,YAAc,eAQ3B,IAAM,EAAc,EAAA,EAAI,yDAA0D,CAChF,SAAU,CACR,YAAa,CACX,UAAW,eACX,SAAU,eACV,OAAQ,eACV,CACF,EACA,gBAAiB,CACf,YAAa,UACf,CACF,CAAC,EAEK,EAAoB,EAAM,YAE5B,CAAE,YAAW,WAAU,cAAc,WAAY,aAAa,GAAM,kBAAiB,GAAG,GACxF,KAEA,EAAA,EAAA,KAAA,CAAC,MAAD,CACO,MACL,UAAW,EAAA,EACT,0WACA,CACF,EACA,GAAI,WANN,EAQE,EAAA,EAAA,IAAA,CAAC,MAAD,CACE,IAAK,EACL,IAAI,iBACJ,UAAW,EAAA,EAAG,EAAY,CAAE,aAAY,CAAC,EAAG,CAAe,CAC5D,CAAA,EACA,GACC,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,sJAAwJ,CAAA,EACrK,IACD,GAET,EACA,EAAkB,YAAc,oBAEhC,IAAM,EAAsB,EAAM,YAC/B,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,UAAW,EAAA,EAAG,yBAA0B,CAAS,EAAG,GAAI,CAAQ,CAAA,CAEnF,EACA,EAAoB,YAAc,sBAElC,IAAM,EAAoB,EAAM,YAC7B,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,MAAD,CACO,MACL,UAAW,EAAA,EACT,yEACA,CACF,EACA,GAAI,CACL,CAAA,CAEL,EACA,EAAkB,YAAc,oBAEhC,IAAM,EAA0B,EAAM,YAGnC,CAAE,YAAW,GAAG,GAAS,KAC1B,EAAA,EAAA,IAAA,CAAC,MAAD,CACO,MACL,UAAW,EAAA,EAAG,+DAAgE,CAAS,EACvF,GAAI,CACL,CAAA,CACF,EACD,EAAwB,YAAc,0BAEtC,IAAM,EAAqB,EAAM,YAC9B,CAAE,YAAW,GAAG,GAAS,KACxB,EAAA,EAAA,IAAA,CAAC,MAAD,CAAU,MAAK,UAAW,EAAA,EAAG,YAAa,CAAS,EAAG,GAAI,CAAQ,CAAA,CAEtE,EACA,EAAmB,YAAc"}