This commit adds a complete style system alongside the existing theme system, allowing users to switch between different UI styles while maintaining theme color variations. **Core Features:** - Style enum (Default, Google Calendar) separate from Theme enum - Hot-swappable stylesheets with dynamic loading - Style preference persistence (localStorage + database) - Style picker UI in sidebar below theme picker **Frontend Implementation:** - Add Style enum to sidebar.rs with value/display methods - Implement dynamic stylesheet loading in app.rs - Add style picker dropdown with proper styling - Handle style state management and persistence - Add web-sys features for HtmlLinkElement support **Backend Integration:** - Add calendar_style column to user_preferences table - Update all database operations (insert/update/select) - Extend API models for style preference - Add migration for existing users **Google Calendar Style:** - Clean Material Design-inspired interface - White sidebar with proper contrast - Enhanced calendar grid with subtle shadows - Improved event styling with hover effects - Google Sans typography throughout - Professional color scheme and spacing **Technical Details:** - Trunk asset management for stylesheet copying - High CSS specificity to override theme styles - Modular CSS architecture for easy extensibility - Comprehensive text contrast fixes - Enhanced calendar cells and navigation Users can now choose between the original gradient design (Default) and a clean Google Calendar-inspired interface (Google Calendar), with full preference persistence across sessions. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
70 lines
1.4 KiB
TOML
70 lines
1.4 KiB
TOML
[package]
|
|
name = "calendar-app"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
|
|
# Frontend binary only
|
|
|
|
[dependencies]
|
|
calendar-models = { workspace = true, features = ["wasm"] }
|
|
yew = { version = "0.21", features = ["csr"] }
|
|
web-sys = { version = "0.3", features = [
|
|
"console",
|
|
"HtmlSelectElement",
|
|
"HtmlInputElement",
|
|
"HtmlTextAreaElement",
|
|
"HtmlLinkElement",
|
|
"HtmlHeadElement",
|
|
"Event",
|
|
"MouseEvent",
|
|
"InputEvent",
|
|
"Element",
|
|
"Document",
|
|
"Window",
|
|
"Location",
|
|
"Headers",
|
|
"Request",
|
|
"RequestInit",
|
|
"RequestMode",
|
|
"Response",
|
|
"CssStyleDeclaration",
|
|
] }
|
|
wasm-bindgen = "0.2"
|
|
|
|
# HTTP client for CalDAV requests
|
|
reqwest = { version = "0.11", features = ["json"] }
|
|
# Calendar and iCal parsing
|
|
ical = "0.7"
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
|
|
# Date and time handling
|
|
chrono = { version = "0.4", features = ["serde", "wasm-bindgen"] }
|
|
chrono-tz = "0.8"
|
|
|
|
# Error handling
|
|
anyhow = "1.0"
|
|
thiserror = "1.0"
|
|
|
|
# Logging
|
|
log = "0.4"
|
|
console_log = "1.0"
|
|
|
|
# UUID generation for calendar events
|
|
uuid = { version = "1.0", features = ["v4", "wasm-bindgen", "serde"] }
|
|
getrandom = { version = "0.2", features = ["js"] }
|
|
|
|
# Environment variable handling
|
|
dotenvy = "0.15"
|
|
base64 = "0.21"
|
|
|
|
# XML/Regex parsing
|
|
regex = "1.0"
|
|
|
|
# Yew routing and local storage (WASM only)
|
|
yew-router = "0.18"
|
|
gloo-storage = "0.3"
|
|
gloo-timers = "0.3"
|
|
wasm-bindgen-futures = "0.4"
|
|
|