From aa8854adcb9449d2a961c5e4314a223f6e7bcc04 Mon Sep 17 00:00:00 2001 From: Michael Hunteman Date: Tue, 13 Feb 2024 20:38:17 -0600 Subject: Initial commit --- src/App.tsx | 36 +++++++++++++++ src/components/Bar.tsx | 39 ++++++++++++++++ src/components/Registry.tsx | 14 ++++++ src/components/Rsvp.tsx | 106 ++++++++++++++++++++++++++++++++++++++++++++ src/components/Schedule.tsx | 38 ++++++++++++++++ src/main.tsx | 37 ++++++++++++++++ src/vite-env.d.ts | 1 + 7 files changed, 271 insertions(+) create mode 100644 src/App.tsx create mode 100644 src/components/Bar.tsx create mode 100644 src/components/Registry.tsx create mode 100644 src/components/Rsvp.tsx create mode 100644 src/components/Schedule.tsx create mode 100644 src/main.tsx create mode 100644 src/vite-env.d.ts (limited to 'src') diff --git a/src/App.tsx b/src/App.tsx new file mode 100644 index 0000000..156719f --- /dev/null +++ b/src/App.tsx @@ -0,0 +1,36 @@ +import React from 'react'; +import { Outlet, Route, Routes } from 'react-router-dom'; +import useMediaQuery from '@mui/material/useMediaQuery'; +import { createTheme, ThemeProvider } from '@mui/material/styles'; +import CssBaseline from '@mui/material/CssBaseline'; + +import Bar from './components/Bar'; +import Home from './components/Home'; +import Schedule from './components/Schedule'; +import Registry from './components/Registry'; +import Rsvp from './components/Rsvp'; + + +function App() { + const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); + + const theme = React.useMemo( + () => + createTheme({ + palette: { + mode: prefersDarkMode ? 'dark' : 'light' + } + }), + [prefersDarkMode] + ); + + return ( + + + + + + ); +} + +export default App; diff --git a/src/components/Bar.tsx b/src/components/Bar.tsx new file mode 100644 index 0000000..ce3db43 --- /dev/null +++ b/src/components/Bar.tsx @@ -0,0 +1,39 @@ +import { Link } from 'react-router-dom'; +import AppBar from '@mui/material/AppBar'; +import Box from '@mui/material/Box'; +import Button from '@mui/material/Button'; +import Toolbar from '@mui/material/Toolbar'; +import Typography from '@mui/material/Typography'; + +function Bar() { + const pages = [ + { name: 'Schedule', to: '/schedule'}, + { name: 'RSVP', to: '/rsvp' }, + { name: 'Registry', to: '/registry' } + ]; + + return ( + + + + Wedding + + + {pages.map((page) => ( + + ))} + + + + ); +} + +export default Bar; diff --git a/src/components/Registry.tsx b/src/components/Registry.tsx new file mode 100644 index 0000000..b07d680 --- /dev/null +++ b/src/components/Registry.tsx @@ -0,0 +1,14 @@ +import Paper from '@mui/material/Paper'; +import Typography from '@mui/material/Typography'; + +function Registry() { + return ( + + + Registry + + + ); +} + +export default Registry; diff --git a/src/components/Rsvp.tsx b/src/components/Rsvp.tsx new file mode 100644 index 0000000..881bf09 --- /dev/null +++ b/src/components/Rsvp.tsx @@ -0,0 +1,106 @@ +import { useState } from 'react'; +import Button from '@mui/material/Button'; +import Paper from '@mui/material/Paper'; +import Grid from '@mui/material/Grid'; +import TextField from '@mui/material/TextField'; +import Typography from '@mui/material/Typography'; +import Radio from '@mui/material/Radio'; +import RadioGroup from '@mui/material/RadioGroup'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import FormControl from '@mui/material/FormControl'; +import FormLabel from '@mui/material/FormLabel'; + +function Rsvp() { + const [guestList, setGuestList] = useState([]); + + const onAddBtnClick = event => { + setGuestList(guestList.concat( + + + + + + + Meal Preference + + } + label="Beef" + /> + } + label="Chicken" + /> + } + label="Fish" + /> + } + label="Vegetarian" + /> + + + + + )); + } + + return ( + + + + Date: April 14, 2025 + + + Location: + + + RSVP Deadline: + + + + + + + Are you attending? + + } label="Yes" /> + } label="No" /> + + + + + + + {guestList} + + + + + + + + + + + + ); +} + +export default Rsvp; diff --git a/src/components/Schedule.tsx b/src/components/Schedule.tsx new file mode 100644 index 0000000..2fd0ab0 --- /dev/null +++ b/src/components/Schedule.tsx @@ -0,0 +1,38 @@ +import Typography from '@mui/material/Typography'; +import Timeline from '@mui/lab/Timeline'; +import TimelineItem from '@mui/lab/TimelineItem'; +import TimelineSeparator from '@mui/lab/TimelineSeparator'; +import TimelineConnector from '@mui/lab/TimelineConnector'; +import TimelineContent from '@mui/lab/TimelineContent'; +import TimelineDot from '@mui/lab/TimelineDot'; +import TimelineOppositeContent, { + timelineOppositeContentClasses, +} from '@mui/lab/TimelineOppositeContent'; + +function Schedule() { + return ( + + + + 4:00 pm + + + + + + Ceremony + + + + 5:00 pm + + + + + Reception + + + ); +} + +export default Schedule; diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..5364a01 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,37 @@ +import React from 'react'; +import ReactDOM from 'react-dom/client'; +import { createBrowserRouter, RouterProvider } from 'react-router-dom'; + +import App from './App'; +import Bar from './components/Bar'; +import Home from './components/Home'; +import Schedule from './components/Schedule'; +import Registry from './components/Registry'; +import Rsvp from './components/Rsvp'; + +const router = createBrowserRouter([ + { + path: "/", + element: , + children: [ + { + path: "schedule", + element: + }, + { + path: "registry", + element: + }, + { + path: "rsvp", + element: + } + ] + } +]); + +ReactDOM.createRoot(document.getElementById('root')).render( + + + +); diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// -- cgit v1.2.3