@@ -240,11 +240,15 @@ const BookingCalendar = (props) => {
240240 </ div >
241241 < div className = "flex flex-row gap-4" >
242242 < div className = "min-[820px]:flex hidden flex-row gap-2" >
243- < span className = "text-[#004E84] ml-1" > •</ span >
243+ < div className = "bg-[#8fd144] border border-1 border-gray-600 self-center w-[15px] h-[15px]" > </ div >
244+ < p > Available</ p >
245+ </ div >
246+ < div className = "min-[820px]:flex hidden flex-row gap-2" >
247+ < div className = "bg-[#FFF3CD] border border-1 border-gray-600 self-center w-[15px] h-[15px]" > </ div >
244248 < p > Partially Reserved</ p >
245249 </ div >
246250 < div className = "min-[820px]:flex hidden flex-row gap-2" >
247- < div className = "bg-[#004E84 ] border border-1 border-gray-600 self-center w-[15px] h-[15px]" > </ div >
251+ < div className = "bg-[#006edc ] border border-1 border-gray-600 self-center w-[15px] h-[15px]" > </ div >
248252 < p > Selected Day</ p >
249253 </ div >
250254 < div className = "min-[820px]:flex hidden flex-row gap-2" >
@@ -260,19 +264,33 @@ const BookingCalendar = (props) => {
260264 </ div >
261265 </ div >
262266 < div className = "flex flex-col md:flex-row gap-6" >
263- { /* Calendar */ }
264267 < Calendar
265268 className = "min-[820px]:block hidden border p-4 shadow bg-white w-[40%] max-w-[400px]"
266269 value = { selectedDate }
267270 onClickDay = { ( value ) => setSelectedDate ( value ) }
268- tileContent = { ( { date } ) =>
269- bookingsByDate [ format ( date , "yyyy-MM-dd" ) ] ? (
270- < span className = "text-[#004E84] ml-1" > •</ span >
271- ) : null
272- }
271+ tileClassName = { ( { date } ) => {
272+ const dateKey = format ( date , "yyyy-MM-dd" ) ;
273+ const todayKey = format ( new Date ( ) , "yyyy-MM-dd" ) ;
274+ const selectedKey = format ( selectedDate , "yyyy-MM-dd" ) ;
275+ const today = new Date ( ) ;
276+ today . setHours ( 0 , 0 , 0 , 0 ) ;
277+ const d = new Date ( date ) ;
278+ d . setHours ( 0 , 0 , 0 , 0 ) ;
279+ if ( d . getTime ( ) === today . getTime ( ) ) return 'today' ;
280+ if ( dateKey === todayKey || dateKey === selectedKey ) return null ;
281+ return bookingsByDate [ dateKey ] ? 'partially-reserved' : d > today ? 'available' : null ;
282+ } }
283+ tileDisabled = { ( { date, view } ) => {
284+ if ( view === "month" ) {
285+ const today = new Date ( ) ;
286+ today . setHours ( 0 , 0 , 0 , 0 ) ;
287+ const d = new Date ( date ) ;
288+ d . setHours ( 0 , 0 , 0 , 0 ) ;
289+ return d < today ;
290+ }
291+ return false ;
292+ } }
273293 />
274-
275- { /* Daily booking list or grid */ }
276294 { selectedDate && (
277295 < div className = "p-2 border flex-grow sm:p-4 min-[820px]:max-h-[314px] max-h-fit overflow-auto shadow bg-white" >
278296 < h3 className = "text-on-white mb-2 font-bold" >
0 commit comments