diff --git a/src/App.css b/src/App.css index bd72fcd..57d64b9 100644 --- a/src/App.css +++ b/src/App.css @@ -8,4 +8,3 @@ flex: 1; padding-bottom: 56px; /* Space for the bottom navigation */ } - diff --git a/src/App.tsx b/src/App.tsx index 0ffdfda..7fb9c24 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,6 +1,6 @@ import '@/App.css'; -import { ThemeProvider } from '@mui/material'; +import { Box, ThemeProvider } from '@mui/material'; import { BrowserRouter as Router } from 'react-router-dom'; import { Toaster } from 'sonner'; @@ -13,7 +13,7 @@ import { theme } from '@/utils/theme'; const App = () => { return ( -
+ { />
-
+ {/* Main content area where pages will render */} -
+ {/* Bottom Navigation with React Router links */}
+ ); }; diff --git a/src/components/Schedule/index.tsx b/src/components/Schedule/index.tsx index 7760fe9..f5bf301 100644 --- a/src/components/Schedule/index.tsx +++ b/src/components/Schedule/index.tsx @@ -9,7 +9,7 @@ import { Button, IconButton, } from '@mui/material'; -import EventIcon from '@mui/icons-material/Event'; +import CalendarMonthIcon from '@mui/icons-material/CalendarMonth'; import type { Dayjs } from 'dayjs'; import dayjs from 'dayjs'; @@ -75,9 +75,9 @@ const ScheduleBase = ({ events, title, description }: ScheduleBaseProps) => { Events for {selectedDate?.format('MMMM D, YYYY')}: {eventsForSelectedDate.length > 0 ? ( - eventsForSelectedDate.map((event) => ( + eventsForSelectedDate.map((event_) => ( { p: 2, mb: 2, cursor: 'pointer', + display: 'flex', + justifyContent: 'space-between', + alignItems: 'center', }} - onClick={() => handleEventClick(event)} + onClick={() => handleEventClick(event_)} > - - {event.title} - - {event.description} - - {dayjs(event.date).format('MMMM D, YYYY, h:mm A')} - + + + {event_.title} + + {event_.description} + + {dayjs(event_.date).format('MMMM D, YYYY, h:mm A')} + + + {event_.supplies.map((supply, index) => ( + + {supply.quantityProvided} provided + + ))} + + - - {event.supplies.map((supply, index) => ( - - {supply.quantityProvided} provided - - ))} - + generateICSFile(event_)} + sx={{ fontSize: 12, display: 'flex', flexDirection: 'column' }} + > + + Add to Calendar + )) ) : ( @@ -171,14 +184,6 @@ const ScheduleBase = ({ events, title, description }: ScheduleBaseProps) => { {supply.itemName} - {supply.quantityProvided} provided ))} - generateICSFile(selectedEvent)} - sx={{ mt: 2 }} - > - - Export to Calendar - )} diff --git a/src/components/common/Header.tsx b/src/components/common/Header.tsx index 0d591be..94627ba 100644 --- a/src/components/common/Header.tsx +++ b/src/components/common/Header.tsx @@ -31,7 +31,11 @@ const Header = () => { return ( {/* Back Button */} diff --git a/src/index.css b/src/index.css index ec2585e..4109e9b 100644 --- a/src/index.css +++ b/src/index.css @@ -1,8 +1,5 @@ body { margin: 0; - font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', - 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', - sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } diff --git a/src/utils/theme.ts b/src/utils/theme.ts index 3c5713e..f936e00 100644 --- a/src/utils/theme.ts +++ b/src/utils/theme.ts @@ -1,18 +1,162 @@ import { createTheme } from '@mui/material/styles'; -export const theme = createTheme({ - palette: { - primary: { - light: '#E4E0EE', - main: '#4E2A84', - dark: '#361d5c', - contrastText: '#fff', - }, - secondary: { - main: '#f44336', - }, +const palette = { + primary: { + light: '#E4E0EE', + main: '#4E2A84', + dark: '#361d5c', + contrastText: '#ffffff', + }, + secondary: { + light: '#ff7961', + main: '#f44336', + dark: '#ba000d', + contrastText: '#ffffff', + }, + background: { + default: '#ffffff', + paper: '#fefefe', + }, + text: { + primary: '#2d2d2d', + secondary: '#4f4f4f', }, +}; + +const theme = createTheme({ typography: { - fontFamily: 'Roboto, sans-serif', + fontFamily: '"Roboto", "Arial", sans-serif', + }, + palette: palette, + components: { + MuiTypography: { + styleOverrides: { + root: ({ theme }) => ({ + color: theme.palette.text.primary, + }), + }, + }, + MuiButton: { + styleOverrides: { + root: { + borderRadius: '20px', + padding: '8px 16px', + textTransform: 'none', + fontWeight: 500, + }, + contained: { + boxShadow: 'none', + '&:hover': { + boxShadow: '0px 4px 10px rgba(0, 0, 0, 0.2)', + }, + }, + outlined: { + borderWidth: '2px', + '&:hover': { + backgroundColor: 'rgba(0,0,0,0.04)', + }, + }, + text: { + '&:hover': { + backgroundColor: 'rgba(0,0,0,0.04)', + }, + }, + }, + }, + MuiPaper: { + styleOverrides: { + root: { + borderRadius: '16px', + boxShadow: '0px 2px 8px rgba(0, 0, 0, 0.1)', + }, + }, + }, + MuiTextField: { + styleOverrides: { + root: ({ theme }) => ({ + '& .MuiInputBase-root': { + borderRadius: '8px', + backgroundColor: theme.palette.background.paper, + }, + '& .MuiInputBase-input': { + padding: '12px', + }, + '& .MuiOutlinedInput-notchedOutline': { + borderColor: theme.palette.divider, + }, + '&:hover .MuiOutlinedInput-notchedOutline': { + borderColor: theme.palette.primary.main, + }, + '&.Mui-focused .MuiOutlinedInput-notchedOutline': { + borderColor: theme.palette.primary.main, + }, + }), + }, + }, + MuiLink: { + styleOverrides: { + root: ({ theme }) => ({ + color: theme.palette.primary.main, + textDecoration: 'none', + '&:hover': { + textDecoration: 'underline', + }, + '&:active': { + color: theme.palette.primary.dark, + }, + }), + }, + }, + MuiCard: { + styleOverrides: { + root: { + borderRadius: '16px', + boxShadow: '0px 4px 16px rgba(0, 0, 0, 0.1)', + }, + }, + }, + MuiCardContent: { + styleOverrides: { + root: { + padding: '16px', + '&:last-child': { + paddingBottom: '16px', + }, + }, + }, + }, + MuiDivider: { + styleOverrides: { + root: { + backgroundColor: 'rgba(0, 0, 0, 0.08)', + }, + }, + }, + MuiMenu: { + styleOverrides: { + paper: { + borderRadius: '8px', + boxShadow: '0px 4px 16px rgba(0, 0, 0, 0.1)', + }, + list: { + padding: 0, + }, + }, + }, + MuiMenuItem: { + styleOverrides: { + root: { + borderRadius: '8px', + margin: '4px 8px', + padding: '8px 16px', + transition: 'background-color 0.2s ease', + '&:hover': { + backgroundColor: 'rgba(0, 0, 0, 0.08)', + }, + }, + }, + }, }, }); + +export { theme };