logo
CtrlK
ComponentsTemplates

Components

Accordion
Alert
Avatar
Badge
Banner
Bottom Navigation
Breadcrumb
Button
Call to Action
Card
Date Picker
Divider
Dropdown
Featues
File Upload
Footer
Header
Hero
Loader
Pagination
Popover
Sidebar
Skeleton
Social Share
Tabs
Testimonial
Tooltip

Pages

Error Pages
Blog List
  1. Docs
  2. Components
  3. Card

Card

Cards are surfaces that display content and actions on a single topic.

Job Card

import React from "react";
import { Building2, Clock, DollarSign, MapPin } from "lucide-react";

const Card = () => {
  return (
    <div className="h-screen flex justify-center items-center bg-gradient-to-br from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800">
      <div className="w-full max-w-md mx-auto bg-white/70 dark:bg-gray-800/70 rounded-2xl shadow-lg overflow-hidden border border-gray-200/50 dark:border-gray-700/50">
        <div className="p-8">
          <div className="flex justify-between items-start mb-6">
            <div>
              <h2 className="text-2xl font-semibold mb-2 dark:text-white">
                Software Engineer
              </h2>
              <p className="text-sm text-gray-600 dark:text-gray-300 flex items-center">
                <Building2 className="w-4 h-4 mr-2" />
                TechCorp Inc.
              </p>
            </div>
            <span className="bg-blue-100/80 text-blue-800 dark:bg-blue-900/80 dark:text-blue-200 text-xs font-medium px-3 py-1.5 rounded-full">
              Full-time
            </span>
          </div>
          <div className="space-y-3 mb-6">
            <div className="flex items-center text-sm text-gray-600 dark:text-gray-300">
              <MapPin className="w-4 h-4 mr-2" />
              <span>San Francisco, CA (On-site)</span>
            </div>
            <div className="flex items-center text-sm text-gray-600 dark:text-gray-300">
              <DollarSign className="w-4 h-4 mr-2" />
              <span>$120,000 - $160,000 per year</span>
            </div>
            <div className="flex items-center text-sm text-gray-600 dark:text-gray-300">
              <Clock className="w-4 h-4 mr-2" />
              <span>Posted 2 days ago</span>
            </div>
          </div>
          <p className="mb-8 text-sm leading-relaxed text-gray-600 dark:text-gray-400">
            We're seeking a talented Software Engineer to join our dynamic team.
            You'll work on cutting-edge projects, collaborate with
            cross-functional teams, and have the opportunity to make a
            significant impact on our products.
          </p>
          <div className="flex space-x-4">
            <button className="w-1/2 rounded-full bg-blue-600/90 px-6 py-3 text-sm font-medium text-white hover:bg-blue-700 transition-colors duration-200 dark:bg-blue-500 dark:hover:bg-blue-600">
              Apply Now
            </button>
            <button className="w-1/2 rounded-full border border-gray-300/50 dark:border-gray-600/50 bg-white/50 dark:bg-gray-700/50 px-6 py-3 text-sm font-medium text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-600/80 transition-colors duration-200">
              View Details
            </button>
          </div>
        </div>
      </div>
    </div>
  );
};

export default Card;

Product Card

import React from "react";
import { ShoppingCart, Star } from "lucide-react";

const Card = () => {
  return (
    <div className="h-screen flex justify-center items-center bg-gradient-to-br from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800">
      <div className="w-full max-w-sm mx-auto bg-white/70 dark:bg-gray-800/70 rounded-2xl shadow-lg overflow-hidden border border-gray-200/50 dark:border-gray-700/50">
        <div className="relative">
          <img
            src="/headphone.jpg"
            alt="Wireless Headphones"
            className="w-full h-56 object-cover"
          />
          <span className="absolute top-4 right-4 bg-red-500/90 text-white text-xs font-medium px-3 py-1.5 rounded-full">
            Sale
          </span>
        </div>
        <div className="p-6">
          <h2 className="text-xl font-semibold mb-3 dark:text-white">
            Wireless Noise-Cancelling Headphones
          </h2>
          <div className="flex items-center mb-3">
            {[...Array(4)].map((_, i) => (
              <Star
                key={i}
                className="w-5 h-5 fill-yellow-400 text-yellow-400"
              />
            ))}
            <Star className="w-5 h-5 text-yellow-400" />
            <span className="ml-2 text-sm text-gray-600 dark:text-gray-300">
              (4.0)
            </span>
          </div>
          <p className="text-gray-600 dark:text-gray-300 text-sm mb-6">
            Experience crystal-clear audio with our premium noise-cancelling
            headphones. Perfect for music lovers and frequent travelers.
          </p>
          <div className="flex justify-between items-center mb-6">
            <div>
              <span className="text-2xl font-semibold dark:text-white">
                $249.99
              </span>
              <span className="text-sm text-gray-500 dark:text-gray-400 line-through ml-2">
                $299.99
              </span>
            </div>
            <span className="bg-green-100/80 text-green-800 dark:bg-green-900/80 dark:text-green-200 text-xs font-medium px-3 py-1.5 rounded-full">
              Save $50
            </span>
          </div>
          <button className="flex items-center justify-center w-full rounded-full bg-blue-600/90 px-6 py-3 text-sm font-medium text-white hover:bg-blue-700 transition-all duration-200 dark:bg-blue-500 dark:hover:bg-blue-600">
            <ShoppingCart className="mr-2 h-5 w-5" /> Add to Cart
          </button>
        </div>
      </div>
    </div>
  );
};

export default Card;

Profile Card

import React from "react";
import { Briefcase, LinkIcon, MapPin } from "lucide-react";

const Card = () => {
  return (
    <div className="h-screen flex justify-center items-center bg-gradient-to-b from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800">
      <div className="w-full max-w-sm mx-4 bg-white/80 dark:bg-gray-800/80 rounded-2xl shadow-lg overflow-hidden border border-gray-200 dark:border-gray-700">
        <div className="p-6 text-center">
          <div className="relative w-28 h-28 rounded-full overflow-hidden mx-auto mb-6 ring-4 ring-white dark:ring-gray-700 shadow-lg">
            <img
              src="/pfp.jpg"
              alt="Jane Doe"
              className="w-full h-full object-cover"
            />
          </div>

          <h2 className="text-2xl font-semibold mb-1 dark:text-white tracking-tight">
            Jane Doe
          </h2>
          <p className="text-gray-600 dark:text-gray-300 mb-4 text-sm font-medium">
            Senior UX Designer
          </p>

          <div className="flex flex-wrap justify-center gap-2 mb-6">
            {["UI/UX", "Product Design", "Prototyping"].map((skill) => (
              <span
                key={skill}
                className="bg-gray-100 dark:bg-gray-700 text-gray-800 dark:text-gray-200 text-xs font-medium px-3 py-1.5 rounded-full"
              >
                {skill}
              </span>
            ))}
          </div>

          <div className="space-y-3 mb-6">
            <div className="flex items-center justify-center text-sm text-gray-600 dark:text-gray-300">
              <MapPin className="w-4 h-4 mr-2 stroke-2" />
              San Francisco, CA
            </div>
            <div className="flex items-center justify-center text-sm text-gray-600 dark:text-gray-300">
              <Briefcase className="w-4 h-4 mr-2 stroke-2" />
              TechCorp Inc.
            </div>
            <div className="flex items-center justify-center text-sm">
              <LinkIcon className="w-4 h-4 mr-2 text-gray-600 dark:text-gray-300 stroke-2" />
              <a
                href="#"
                className="text-blue-500 dark:text-blue-400 hover:text-blue-600 dark:hover:text-blue-300 font-medium"
              >
                portfolio.com/janedoe
              </a>
            </div>
          </div>

          <p className="text-sm text-gray-600 dark:text-gray-300 mb-6 leading-relaxed">
            Passionate UX designer with 5+ years of experience creating
            intuitive and engaging digital experiences for global brands.
          </p>
        </div>

        <div className="px-6 pb-6 flex gap-3">
          <button className="flex-1 rounded-xl border border-gray-200 dark:border-gray-600 bg-gray-50 dark:bg-gray-700/50 px-4 py-2.5 text-sm font-medium text-gray-700 dark:text-gray-200 hover:bg-gray-100 dark:hover:bg-gray-600/50 transition-colors">
            Message
          </button>
          <button className="flex-1 rounded-xl bg-blue-500 px-4 py-2.5 text-sm font-medium text-white hover:bg-blue-600 dark:bg-blue-500 dark:hover:bg-blue-600 transition-colors">
            Connect
          </button>
        </div>
      </div>
    </div>
  );
};

export default Card;

Property Card

import React from "react";
import { Bath, Bed, CarFront, Expand, Heart } from "lucide-react";

const Card = () => {
  return (
    <div className="h-screen flex justify-center items-center bg-gradient-to-br from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800">
      <div className="w-full max-w-sm overflow-hidden rounded-2xl bg-white/70 dark:bg-gray-800/70 shadow-lg border border-gray-200/50 dark:border-gray-700/50">
        <div className="relative">
          <img
            src="/property.jpg"
            alt="Modern house exterior"
            className="h-56 w-full object-cover"
          />
          <span className="absolute left-4 top-4 rounded-full bg-green-500/90 px-3 py-1.5 text-xs font-medium text-white">
            For Sale
          </span>
          <button className="absolute right-4 top-4 rounded-full bg-white/80 dark:bg-black/50 p-2 text-rose-500 hover:bg-white/90 dark:hover:bg-black/60 hover:text-rose-600 transition-colors duration-200">
            <Heart className="h-5 w-5" />
            <span className="sr-only">Add to favorites</span>
          </button>
        </div>
        <div className="p-6">
          <h2 className="mb-3 text-2xl font-semibold text-gray-800 dark:text-white">
            $450,000
          </h2>
          <p className="mb-6 text-sm text-gray-600 dark:text-gray-300">
            123 Modern Lane, Cityville, State 12345
          </p>
          <div className="grid grid-cols-2 gap-4 text-sm text-gray-500 dark:text-gray-400">
            <div className="flex items-center">
              <Bed className="mr-2 h-4 w-4" />
              <span>3 Beds</span>
            </div>
            <div className="flex items-center">
              <Bath className="mr-2 h-4 w-4" />
              <span>2 Baths</span>
            </div>
            <div className="flex items-center">
              <CarFront className="mr-2 h-4 w-4" />
              <span>2 Garage</span>
            </div>
            <div className="flex items-center">
              <Expand className="mr-2 h-4 w-4" />
              <span>1,800 sqft</span>
            </div>
          </div>
        </div>
        <div className="bg-gray-50/80 dark:bg-gray-700/80 p-6">
          <button className="w-full rounded-full bg-blue-600/90 py-3 text-sm font-medium text-white hover:bg-blue-700 transition-all duration-200 dark:bg-blue-500 dark:hover:bg-blue-600">
            View Property
          </button>
        </div>
      </div>
    </div>
  );
};

export default Card;

Article Card

import React from "react";
import { Clock, MessageCircle } from "lucide-react";

const Card = () => {
  return (
    <div className="h-screen flex justify-center items-center bg-gradient-to-br from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800">
      <div className="w-full max-w-md overflow-hidden rounded-2xl bg-white/70 dark:bg-gray-800/70 shadow-lg border border-gray-200/50 dark:border-gray-700/50">
        <img
          src="/thumbnail.jpg"
          alt="Article thumbnail"
          className="h-56 w-full object-cover"
        />
        <div className="p-6">
          <span className="mb-3 inline-block rounded-full bg-blue-100/80 px-3 py-1.5 text-xs font-medium text-blue-600 dark:bg-blue-900/80 dark:text-blue-200">
            Technology
          </span>
          <h2 className="mb-3 text-xl font-semibold text-gray-800 dark:text-white">
            The Future of AI in Web Development
          </h2>
          <p className="mb-6 text-sm text-gray-600 dark:text-gray-300 line-clamp-2">
            Explore how artificial intelligence is revolutionizing the way we
            build and interact with websites...
          </p>
          <div className="flex items-center justify-between">
            <div className="flex items-center space-x-3">
              <img
                src="/placeholder.svg?height=32&width=32"
                alt="Author"
                className="h-8 w-8 rounded-full ring-2 ring-white dark:ring-gray-700"
              />
              <span className="text-sm font-medium text-gray-700 dark:text-gray-200">
                John Doe
              </span>
            </div>
            <div className="flex items-center space-x-2 text-sm text-gray-500 dark:text-gray-400">
              <Clock className="h-4 w-4" />
              <span>5 min read</span>
            </div>
          </div>
        </div>
        <div className="flex items-center justify-between bg-gray-50/80 dark:bg-gray-700/80 p-6">
          <div className="flex items-center space-x-2 text-sm text-gray-500 dark:text-gray-400">
            <MessageCircle className="h-4 w-4" />
            <span>24 comments</span>
          </div>
          <button className="rounded-full border border-gray-300/50 dark:border-gray-600/50 bg-white/50 dark:bg-gray-600/50 px-6 py-2 text-sm font-medium text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-500/80 transition-all duration-200">
            Read More
          </button>
        </div>
      </div>
    </div>
  );
};

export default Card;

Forum Card

import React from "react";
import { Eye, MessageCircle, ThumbsUp } from "lucide-react";

const Card = () => {
  return (
    <div className="h-screen flex justify-center items-center bg-gradient-to-br from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800">
      <div className="w-full max-w-md rounded-2xl bg-white/70 dark:bg-gray-800/70 shadow-lg border border-gray-200/50 dark:border-gray-700/50 transition-all duration-300 hover:shadow-xl">
        <div className="p-6">
          <div className="flex items-center justify-between mb-6">
            <span className="rounded-full bg-gray-100/80 px-3 py-1.5 text-xs font-medium text-gray-600 dark:bg-gray-700/80 dark:text-gray-300">
              Discussion
            </span>
            <span className="text-xs text-gray-500 dark:text-gray-400">
              2 hours ago
            </span>
          </div>
          <h2 className="mb-3 text-lg font-semibold text-gray-800 dark:text-white">
            Best practices for React hooks?
          </h2>
          <p className="mb-6 text-sm text-gray-600 dark:text-gray-300 line-clamp-2">
            I'm new to React hooks and I'm wondering what are some best
            practices when using them in larger applications...
          </p>
          <div className="flex items-center space-x-3">
            <img
              src="/pfp.jpg"
              alt="User"
              className="h-8 w-8 rounded-full ring-2 ring-white dark:ring-gray-700"
            />
            <span className="text-sm font-medium text-gray-700 dark:text-gray-200">
              Jane Smith
            </span>
          </div>
        </div>
        <div className="flex items-center justify-between rounded-b-2xl bg-gray-50/80 dark:bg-gray-700/80 p-6">
          <div className="flex space-x-6">
            <div className="flex items-center space-x-2 text-sm text-gray-500 dark:text-gray-400">
              <MessageCircle className="h-4 w-4" />
              <span>15 replies</span>
            </div>
            <div className="flex items-center space-x-2 text-sm text-gray-500 dark:text-gray-400">
              <ThumbsUp className="h-4 w-4" />
              <span>23 likes</span>
            </div>
            <div className="flex items-center space-x-2 text-sm text-gray-500 dark:text-gray-400">
              <Eye className="h-4 w-4" />
              <span>102 views</span>
            </div>
          </div>
        </div>
      </div>
    </div>
  );
};

export default Card;

Podcast Card

import React from "react";
import { Clock, Headphones, Share, Share2 } from "lucide-react";

const Card = () => {
  return (
    <div className="h-screen flex justify-center items-center bg-gradient-to-br from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800">
      <div className="w-full max-w-md rounded-2xl bg-white/70 dark:bg-gray-800/70 shadow-lg border border-gray-200/50 dark:border-gray-700/50">
        <div className="relative">
          <img
            src="/podcast.jpg"
            alt="Podcast cover"
            className="h-56 w-full object-cover rounded-t-2xl"
          />
          <span className="absolute left-4 top-4 rounded-full bg-red-500/90 px-3 py-1.5 text-xs font-medium text-white">
            New Episode
          </span>
        </div>
        <div className="p-6">
          <h2 className="mb-3 text-xl font-semibold text-gray-800 dark:text-white">
            The Web Dev Podcast
          </h2>
          <p className="mb-6 text-sm text-gray-600 dark:text-gray-300 line-clamp-2">
            Episode 42: Mastering CSS Grid - Tips and Tricks from the Experts
          </p>
          <div className="flex items-center justify-between text-sm text-gray-500 dark:text-gray-400 mb-6">
            <div className="flex items-center space-x-2">
              <Clock className="h-4 w-4" />
              <span>45 min</span>
            </div>
            <div className="flex items-center space-x-2">
              <Headphones className="h-4 w-4" />
              <span>10k listens</span>
            </div>
          </div>
          <div className="flex items-center space-x-3">
            <div className="flex -space-x-2">
              <img
                src="/pfp.jpg"
                alt="Host 1"
                className="h-6 w-6 rounded-full ring-2 ring-white dark:ring-gray-700"
              />
              <img
                src="/pfp.jpg"
                alt="Host 2"
                className="h-6 w-6 rounded-full ring-2 ring-white dark:ring-gray-700"
              />
            </div>
            <span className="text-sm font-medium text-gray-700 dark:text-gray-200">
              Sarah & Mike
            </span>
          </div>
        </div>
        <div className="flex items-center justify-between rounded-b-2xl bg-gray-50/80 dark:bg-gray-700/80 p-6">
          <button className="flex items-center justify-center w-1/2 rounded-full bg-blue-600/90 px-6 py-3 text-sm font-medium text-white hover:bg-blue-700 transition-all duration-200 dark:bg-blue-500 dark:hover:bg-blue-600">
            <Headphones className="mr-2 h-4 w-4" />
            Listen Now
          </button>
          <button className="flex items-center justify-center w-1/2 ml-4 rounded-full border border-gray-300/50 dark:border-gray-600/50 bg-white/50 dark:bg-gray-600/50 px-6 py-3 text-sm font-medium text-gray-700 dark:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-500/80 transition-all duration-200">
            <Share2 className="mr-2 h-4 w-4" />
            Share
          </button>
        </div>
      </div>
    </div>
  );
};

export default Card;

Call to Action

Date Picker

On this page

Job CardProduct CardProfile CardProperty CardArticle CardForum CardPodcast Card
logo

Empowering developers with intuitive and efficient UI components.

Created by Abhay Singh Rathore, a passionate Full-Stack Developer & UI/UX designer.

Quick Links

  • Home
  • Components
  • Templates

Connect

© 2025 Business Wish. All rights reserved.