diff --git a/index.html b/index.html index 4fdf8c6..7e2ed74 100644 --- a/index.html +++ b/index.html @@ -183,58 +183,197 @@ /* Calendar View */ .calendar-view { + height: calc(100vh - 140px); /* Full height minus header and padding */ + display: flex; + flex-direction: column; + } + + /* Calendar Component */ + .calendar { background: white; - padding: 2rem; - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0,0,0,0.1); + border-radius: 12px; + box-shadow: 0 4px 16px rgba(0,0,0,0.1); + overflow: hidden; + flex: 1; + display: flex; + flex-direction: column; } - .calendar-view h2 { - color: #333; - margin-bottom: 1rem; - } - - .demo-section { - margin: 2rem 0; - padding: 1rem; - background: #f8f9fa; - border-radius: 4px; - border-left: 4px solid #667eea; - } - - .demo-section h3 { - margin-bottom: 1rem; - color: #333; - } - - .demo-section button { - background-color: #007bff; + .calendar-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 1.5rem 2rem; + background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; + } + + .month-year { + font-size: 1.8rem; + font-weight: 600; + margin: 0; + } + + .nav-button { + background: rgba(255,255,255,0.2); border: none; - padding: 0.5rem 1rem; - border-radius: 4px; + color: white; + font-size: 1.5rem; + font-weight: bold; + width: 40px; + height: 40px; + border-radius: 50%; cursor: pointer; - margin-right: 1rem; + display: flex; + align-items: center; + justify-content: center; + transition: background-color 0.2s; } - .demo-section button:hover { - background-color: #0056b3; + .nav-button:hover { + background: rgba(255,255,255,0.3); } - .calendar-placeholder { - margin-top: 2rem; + .calendar-grid { + display: grid; + grid-template-columns: repeat(7, 1fr); + flex: 1; + background: white; + } + + .weekday-header { + background: #f8f9fa; padding: 1rem; - background: #e9ecef; - border-radius: 4px; + text-align: center; + font-weight: 600; + color: #666; + border-bottom: 1px solid #e9ecef; + font-size: 0.9rem; + text-transform: uppercase; + letter-spacing: 0.5px; } - .calendar-placeholder ul { - margin: 1rem 0; - padding-left: 2rem; + .calendar-day { + border: 1px solid #f0f0f0; + padding: 0.75rem; + min-height: 100px; + display: flex; + flex-direction: column; + cursor: pointer; + transition: background-color 0.2s; + position: relative; } - .calendar-placeholder li { - margin: 0.5rem 0; + .calendar-day:hover { + background-color: #f8f9ff; + } + + .calendar-day.current-month { + background: white; + } + + .calendar-day.prev-month, + .calendar-day.next-month { + background: #fafafa; + color: #ccc; + } + + .calendar-day.today { + background: #e3f2fd; + border: 2px solid #2196f3; + } + + .calendar-day.has-events { + background: #fff3e0; + } + + .calendar-day.today.has-events { + background: #e1f5fe; + } + + .day-number { + font-weight: 600; + font-size: 1.1rem; + margin-bottom: 0.5rem; + } + + .calendar-day.today .day-number { + color: #1976d2; + } + + .event-indicators { + flex: 1; + display: flex; + flex-direction: column; + gap: 2px; + } + + .event-dot { + background: #ff9800; + height: 6px; + border-radius: 3px; + margin-bottom: 1px; + } + + .more-events { + font-size: 0.7rem; + color: #666; + margin-top: 2px; + font-weight: 500; + } + + /* Responsive Design */ + @media (max-width: 768px) { + .calendar-header { + padding: 1rem; + } + + .month-year { + font-size: 1.4rem; + } + + .nav-button { + width: 35px; + height: 35px; + font-size: 1.2rem; + } + + .weekday-header { + padding: 0.5rem; + font-size: 0.8rem; + } + + .calendar-day { + min-height: 70px; + padding: 0.5rem; + } + + .day-number { + font-size: 1rem; + } + + .app-main { + padding: 1rem; + } + + .calendar-view { + height: calc(100vh - 120px); + } + } + + @media (max-width: 480px) { + .calendar-day { + min-height: 60px; + padding: 0.25rem; + } + + .weekday-header { + padding: 0.5rem 0.25rem; + } + + .day-number { + font-size: 0.9rem; + } } @media (max-width: 768px) { diff --git a/src/app.rs b/src/app.rs index 694d188..76457cb 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1,7 +1,8 @@ use yew::prelude::*; use yew_router::prelude::*; use gloo_storage::{LocalStorage, Storage}; -use crate::components::{Login, Register}; +use crate::components::{Login, Register, Calendar}; +use std::collections::HashMap; #[derive(Clone, Routable, PartialEq)] enum Route { @@ -104,37 +105,12 @@ pub fn App() -> Html { #[function_component] fn CalendarView() -> Html { - let counter = use_state(|| 0); - let onclick = { - let counter = counter.clone(); - move |_| { - let value = *counter + 1; - counter.set(value); - } - }; - + // Sample events for demonstration + let events = HashMap::new(); + html! {
{"You are now authenticated and can access your calendar."}
- - // Temporary counter demo - will be replaced with calendar functionality -{ format!("Counter: {}", *counter) }
-{"Calendar functionality will be implemented here."}
-{"This will include:"}
-