File size: 1,444 Bytes
bc139ec
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
'use client'

import React, { useState, useEffect } from 'react'

interface DynamicCalendarIconProps {
    size?: number | string
    className?: string
}

export function DynamicCalendarIcon({ size = '100%', className = '' }: DynamicCalendarIconProps) {
    const [date, setDate] = useState<Date | null>(null)

    useEffect(() => {
        setDate(new Date())
        // Update date every minute to ensure it changes at midnight
        const timer = setInterval(() => {
            setDate(new Date())
        }, 60000)
        return () => clearInterval(timer)
    }, [])

    if (!date) return null

    const dayName = date.toLocaleDateString('en-US', { weekday: 'short' }).toUpperCase()
    const dayNumber = date.getDate()

    return (
        <div
            className={`flex flex-col items-center justify-center bg-white rounded-xl overflow-hidden shadow-lg border border-gray-200 ${className}`}
            style={{ width: size, height: size }}
        >
            {/* Red Header */}
            <div className="w-full bg-red-500 text-white font-bold flex items-center justify-center h-[30%] text-[0.6em] tracking-wide">
                {dayName}
            </div>
            {/* Date Body */}
            <div className="flex-1 flex items-center justify-center bg-white w-full pb-1">
                <span className="text-black font-bold text-[1.4em] leading-none">{dayNumber}</span>
            </div>
        </div>
    )
}