Special Offer
Special Offer is a React and Tailwind CSS component from UI Layouts, licensed MIT. Copy it and paste it into your project.
UI Layouts
MIT
other
What it is
Special Offer is a React and Tailwind CSS component from UI Layouts, licensed MIT. Copy it and paste it into your project.
How to use it
Open it in the catalogue, press copy, and paste it into your project. The prompt you copy carries the code and the rules that tell your agent to reproduce it without changing anything.
Five free copies a month. No card.
No packages beyond the project baseline
Licence
This component comes from UI Layouts and is redistributed under the MIT licence, which permits commercial use. The copyright notice travels with the code.
Special Offer
'use client';
import { useEffect, useState } from 'react';
// Target Date: December 31, 2026
const targetDate = new Date('2026-12-31T23:59:59').getTime();
const SpecialOffer = () => {
const [timeRemaining, setTimeRemaining] = useState(targetDate - new Date().getTime());
// useEffect for the time interval
useEffect(() => {
const intervalId = setInterval(() => {
const difference = targetDate - new Date().getTime();
setTimeRemaining(difference);
if (difference < 1000) clearInterval(intervalId);
}, 1000);
return () => clearInterval(intervalId);
}, []);
// Helper function to format the time
const formatTime = (ms: number) => {
const absMs = Math.abs(ms);
const isNegative = ms < 0;
if (absMs < 0) return { days: 0, hours: 0, minutes: 0, seconds: 0 };
const totalSeconds = Math.floor(absMs / 1000);
const days = Math.floor(totalSeconds / (3600 * 24));
const hours = Math.floor((totalSeconds % (3600 * 24)) / 3600);
const minutes = Math.floor((totalSeconds % 3600) / 60);
const seconds = Math.floor(totalSeconds % 60);
return { days, hours, minutes, seconds, isNegative };
};
const time = formatTime(timeRemaining);
// Stop if complete
if (timeRemaining <= 0) {
return (
<div className='w-full bg-linear-to-r from-gray-900 to-black p-8 text-center'>
<h1 className='text-4xl font-extrabold text-pink-500'>🥳 Sale Ended!</h1>
</div>
);
}
return (
<div className='w-full relative bg-linear-to-r from-slate-950 via-orange-950 to-slate-950 border-t border-b border-blue-500/40 shadow-2xl shadow-blue-500/20'>
<div className='max-w-7xl mx-auto px-4 py-8 md:py-12'>
<div className='flex flex-col md:flex-row items-center justify-between gap-8'>
{/* Left Content Section */}
<div className='flex-1 text-center md:text-left'>
<p className='text-blue-400 text-sm font-semibold tracking-widest uppercase mb-3 drop-shadow-[0_0_8px_rgba(34, 99, 238, 0.5)]'>
Limited Time Offer
</p>
<h2 className='text-white text-3xl md:text-4xl font-bold mb-4 leading-tight drop-shadow-[0_0_10px_rgba(236,72,153,0.3)]'>
Cyber Sale Offer
</h2>
<p className='text-gray-300 text-lg mb-6'>
Get{' '}
<span className='text-orange-400 font-bold drop-shadow-[0_0_8px_rgba(236,72,153,0.5)]'>
30% OFF
</span>{' '}
when you use promo code{' '}
<span className='text-blue-300 font-mono font-semibold drop-shadow-[0_0_8px_rgba(34, 116, 238, 0.5)]'>
CBRLAYOUT
</span>{' '}
- limited time only!
</p>
</div>
{/* Countdown Timer Section */}
<div className='flex justify-center items-center gap-2 md:gap-4'>
<TimeSegment value={time.days} label='Days' isHighlighted={true} isFlipping={true} />
<Separator />
<TimeSegment value={time.hours} label='Hrs' isFlipping={true} />
<Separator />
<TimeSegment value={time.minutes} label='Mins' isFlipping={true} />
<Separator />
<TimeSegment value={time.seconds} label='Secs' isFlipping={true} />
</div>
{/* Promo Code Box */}
<div className='flex flex-col items-center gap-3 bg-black/70 border-2 border-blue-500/60 rounded-lg p-6 backdrop-blur-xs shadow-lg shadow-blue-500/30'>
<p className='text-blue-400 text-xs font-semibold tracking-widest uppercase drop-shadow-[0_0_6px_rgba(31, 121, 255, 0.4)]'>
Promo Code
</p>
<p className='text-orange-400 font-mono text-2xl md:text-3xl font-extrabold tracking-wider drop-shadow-[0_0_8px_rgba(255,113,31,0.5)]'>
CBRLAYOUT
</p>
</div>
</div>
</div>
{/* <div className="absolute h-80 w-full overflow-hidden mask-[radial-gradient(50%_50%,white,transparent)] ">
<div className="absolute bottom-0 left-0 right-0 top-0 bg-[linear-gradient(to_right,#ffffff2c_1px,transparent_1px),linear-gradient(to_bottom,#3a3a3a01_1px,transparent_1px)] bg-size-[70px_80px] "></div>
<Sparkles
density={400}
color="fd660e"
size={1.4}
direction="top"
className="absolute inset-x-0 top-0 h-full w-full mask-[radial-gradient(50%_50%,white,transparent_85%)]"
/>
</div> */}
</div>
);
};
// Time Segment Component
const TimeSegment = ({
value,
label,
isHighlighted = false,
isFlipping = false,
}: {
value: number;
label: string;
isHighlighted?: boolean;
isFlipping?: boolean;
}) => {
const displayValue = value.toString().padStart(2, '0');
const boxClasses = `
w-16 h-16 2xl:w-24 2xl:h-24 xl:w-20 sm:h-20 h-16 rounded-md flex justify-center items-center relative
shadow-lg transition-all duration-300 font-mono
${isFlipping ? 'flip-animate' : ''}
${
isHighlighted
? 'bg-linear-to-b from-orange-600 to-orange-700 border-2 border-orange-400/70 shadow-[0_0_15px_rgba(255, 113, 31, 0.6)]'
: 'bg-linear-to-b from-slate-800 to-slate-900 border-2 border-blue-500/50 shadow-[0_0_15px_rgba(25, 105, 255, 0.3)]'
}
`;
const digitClasses = `
text-3xl 2xl:text-5xl xl:text-3xl font-bold leading-none font-mono
${
isHighlighted
? 'text-white drop-shadow-[0_0_10px_rgba(255,113,31,0.8)]'
: 'text-blue-200 drop-shadow-[0_0_10px_rgba(25,105,255,0.6)]'
}
`;
return (
<div className='flex flex-col items-center'>
<div className={boxClasses}>
<span className={digitClasses}>{displayValue}</span>
<div
className={`absolute top-1/2 left-0 right-0 h-[2px] transform -translate-y-1/2 ${isHighlighted ? 'bg-orange-400/50' : 'bg-blue-400/30'}`}
></div>
</div>
<div className='mt-2 text-xs md:text-sm font-semibold text-blue-400/80 tracking-widest uppercase drop-shadow-[0_0_4px_rgba(22, 131, 255, 0.4)]'>
{label}
</div>
</div>
);
};
// Separator Component (the colons)
const Separator = () => (
<div className='text-3xl md:text-5xl font-extrabold text-blue-500/60 leading-none mx-1 md:mx-2 drop-shadow-[0_0_8px_rgba(25,105,255,0.4)] animate-pulse'>
:
</div>
);
export default SpecialOffer;