Kanso UI LogoKanso UI
Components/glow card
cards

Glow Card

A premium, modern card container with a highly-fidelity bottom-up radial gradient glow, corner crop marks, and smooth hover state transitions.

cardglowgradientminimalhovercrop-marks

Preview

Real time location tracking

Advanced tracking system,
instantly locate all your assets.

Payments

Track your transactions

TransactionCustom
Status
Date
Amount
Success
May 15
$2,450.00
Failed
May 14
$950.00
Processing
orders@acme.com
$3,250.00

🖲Usage

example-usage.tsx
import { GlowCard } from "@/components/kanso/glow-card"

export default function GlowCardDemo() {
  return (
    <GlowCard className="max-w-md">
      <div className="flex flex-col gap-2">
        <span className="text-zinc-400 text-xs uppercase tracking-wider font-semibold">Real time location tracking</span>
        <h3 className="text-xl font-bold text-white leading-tight">Advanced tracking system, locate all assets instantly.</h3>
      </div>
    </GlowCard>
  )
}

Installation

1

Create folder & copy source

Create a folder named kanso inside your project's components directory (i.e. components/kanso/). Copy the source code shown in the next section, and paste it into a file named glow-card.tsx inside it.

2

Required helper files

Ensure your project has the following helper files configured:

  • lib/utils

<>Source Code

glow-card.tsx
import * as React from 'react';
import { cn } from '@/lib/utils';

interface GlowCardProps extends React.HTMLAttributes<HTMLDivElement> {
  /** Optional override to change card container class names */
  className?: string;
  /** Inner content of the card */
  children?: React.ReactNode;
  /** Whether to show the blueprint-style corner crop marks */
  showCropMarks?: boolean;
}

const GlowCard = React.forwardRef<HTMLDivElement, GlowCardProps>(
  ({ className, children, showCropMarks = true, ...props }, ref) => {
    return (
      <div ref={ref} className="relative w-full">
        {/* 
          Outward Base Glow — soft, dispersed blue light spilling outward behind the bottom edges.
          Matches the reference image volumetric aura.
        */}
        <div className="pointer-events-none absolute -bottom-16 left-1/2 -translate-x-1/2 w-[90%] h-32 bg-blue-600/20 blur-[60px] rounded-full z-0" />

        {/* Main Card Container */}
        <div
          className={cn(
            'relative z-10 rounded-[32px] bg-[#05070b] text-zinc-50 shadow-[0_8px_32px_rgba(0,0,0,0.5)] overflow-hidden',
            className
          )}
          {...props}
        >
          {/* 
            Layer 1: Blue Glow Gradient (similar to the hero section gradient)
          */}
          <div
            className="pointer-events-none absolute inset-x-0 bottom-0 h-full w-full z-0"
            style={{
              background:
                'radial-gradient(ellipse 70% 60% at 50% 100%, rgba(37, 99, 235, 0.7) 0%, rgba(29, 78, 216, 0.35) 45%, rgba(30, 58, 138, 0.1) 70%, transparent 100%)',
            }}
          />

          {/* 
            Layer 2: Dark masking circle sitting on top of the gradient to create the eclipse/crescent glow effect
          */}
          <div className="pointer-events-none absolute left-1/2 top-[-25%] -translate-x-1/2 w-[130%] h-[95%] bg-[#05070b] blur-[30px] rounded-full z-0" />

          {/* 
            Layer 3: Premium Gradient Border Overlay
          */}
          <div
            className="pointer-events-none absolute inset-0 z-10 rounded-[32px] border border-transparent"
            style={{
              backgroundImage:
                'linear-gradient(to bottom, rgba(255,255,255,0.08), rgba(37,99,235,0.45))',
              mask: 'linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0)',
              WebkitMask:
                'linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0)',
              maskComposite: 'exclude',
              WebkitMaskComposite: 'destination-out',
            }}
          />

          {/* Inner Content Area */}
          <div className="relative z-10 p-8">{children}</div>
        </div>
      </div>
    );
  }
);

GlowCard.displayName = 'GlowCard';

export { GlowCard };
export type { GlowCardProps };

Props

Command Palette

Search for a command to run...