card.tsx 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import * as React from 'react'
  2. // @ts-ignore
  3. import { cn } from '@/lib/utils'
  4. const Card = React.forwardRef<
  5. HTMLDivElement,
  6. React.HTMLAttributes<HTMLDivElement>
  7. >(({ className, ...props }, ref) => (
  8. <div
  9. ref={ref}
  10. className={cn(
  11. 'ui__card',
  12. 'rounded-lg border bg-card text-card-foreground shadow-sm',
  13. className
  14. )}
  15. {...props}
  16. />
  17. ))
  18. Card.displayName = 'Card'
  19. const CardHeader = React.forwardRef<
  20. HTMLDivElement,
  21. React.HTMLAttributes<HTMLDivElement>
  22. >(({ className, ...props }, ref) => (
  23. <div
  24. ref={ref}
  25. className={cn('ui__card-header flex flex-col space-y-1.5 p-6', className)}
  26. {...props}
  27. />
  28. ))
  29. CardHeader.displayName = 'CardHeader'
  30. const CardTitle = React.forwardRef<
  31. HTMLParagraphElement,
  32. React.HTMLAttributes<HTMLHeadingElement>
  33. >(({ className, ...props }, ref) => (
  34. <h3
  35. ref={ref}
  36. className={cn(
  37. 'ui__card-title',
  38. 'text-2xl font-semibold leading-none tracking-tight',
  39. className
  40. )}
  41. {...props}
  42. />
  43. ))
  44. CardTitle.displayName = 'CardTitle'
  45. const CardDescription = React.forwardRef<
  46. HTMLParagraphElement,
  47. React.HTMLAttributes<HTMLParagraphElement>
  48. >(({ className, ...props }, ref) => (
  49. <p
  50. ref={ref}
  51. className={cn('ui__card-description text-sm text-muted-foreground', className)}
  52. {...props}
  53. />
  54. ))
  55. CardDescription.displayName = 'CardDescription'
  56. const CardContent = React.forwardRef<
  57. HTMLDivElement,
  58. React.HTMLAttributes<HTMLDivElement>
  59. >(({ className, ...props }, ref) => (
  60. <div ref={ref} className={cn('ui__card-content p-6 pt-0', className)} {...props} />
  61. ))
  62. CardContent.displayName = 'CardContent'
  63. const CardFooter = React.forwardRef<
  64. HTMLDivElement,
  65. React.HTMLAttributes<HTMLDivElement>
  66. >(({ className, ...props }, ref) => (
  67. <div
  68. ref={ref}
  69. className={cn('ui__card-footer flex items-center p-6 pt-0', className)}
  70. {...props}
  71. />
  72. ))
  73. CardFooter.displayName = 'CardFooter'
  74. export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }