UNPKG

leumas-private-shared

Version:

Private React JSX Package For Leumas Shared Components, Headers, Footers, Asides, Login Pages, API Key Manager and much more. Styles and everything reusable to avoid DRY code across all of our subdomains

81 lines (74 loc) 2.98 kB
// src/components/ScheduleBook.jsx import React, { useState } from 'react'; import { LocalizationProvider, StaticDatePicker } from '@mui/lab'; import { TextField } from '@mui/material'; import AdapterDateFns from '@mui/lab/AdapterDateFns'; import 'tailwindcss/tailwind.css'; import useGoogleCalendar from './useBooking'; const ScheduleBook = ({ type }) => { const [selectedDate, setSelectedDate] = useState(new Date()); const [eventDetails, setEventDetails] = useState({ summary: '', description: '', start: '', end: '' }); const { login, createEvent } = useGoogleCalendar(); const handleDateChange = (date) => { setSelectedDate(date); const start = new Date(date).toISOString(); const end = new Date(date.getTime() + 60 * 60 * 1000).toISOString(); // 1-hour meeting setEventDetails({ ...eventDetails, start, end }); }; const handleCreateEvent = async () => { const event = { summary: eventDetails.summary, description: eventDetails.description, start: { dateTime: eventDetails.start, timeZone: 'America/Los_Angeles' }, end: { dateTime: eventDetails.end, timeZone: 'America/Los_Angeles' }, attendees: [{ email: 'user@example.com' }], conferenceData: { createRequest: { requestId: '7qxalsvy0e', conferenceSolutionKey: { type: 'hangoutsMeet' }, }, }, }; const createdEvent = await createEvent(event); console.log('Created Event:', createdEvent); }; return ( <div className="p-4 bg-white shadow-lg rounded-lg"> <LocalizationProvider dateAdapter={AdapterDateFns}> <StaticDatePicker displayStaticWrapperAs="desktop" openTo="day" value={selectedDate} onChange={handleDateChange} renderInput={(params) => <TextField {...params} />} /> </LocalizationProvider> <div className="mt-4"> <input type="text" placeholder="Event Summary" className="w-full p-2 mb-2 border border-gray-300 rounded" onChange={(e) => setEventDetails({ ...eventDetails, summary: e.target.value })} /> <textarea placeholder="Event Description" className="w-full p-2 mb-2 border border-gray-300 rounded" onChange={(e) => setEventDetails({ ...eventDetails, description: e.target.value })} /> <button onClick={login} className="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600" > {type === 'book' ? 'Login to Google' : 'Login to Google'} </button> <button onClick={handleCreateEvent} className="px-4 py-2 bg-green-500 text-white rounded hover:bg-green-600 mt-2" > {type === 'book' ? 'Book Appointment' : 'Add to My Calendar'} </button> </div> </div> ); }; export default ScheduleBook;