29 | Promotional Offer! 30 |
31 | {sale.percentage > 0 && ( 32 |33 | {sale.percentage}% off until October 31st, 2022. 34 |
35 | )} 36 | {sale.flatAmount > 0 && ( 37 | 38 | ${sale.flatAmount} off until October 31st, 2022. 39 | 40 | )} 41 |You are already signed in.
25 | 26 |
6 |
{message}
18 | 19 |{message}
; 8 | }; 9 | -------------------------------------------------------------------------------- /web/components/error/NotFoundPage.tsx: -------------------------------------------------------------------------------- 1 | import Head from 'next/head'; 2 | import Link from 'next/link'; 3 | import React from 'react'; 4 | 5 | import Column from '../layout/Column'; 6 | import { Footer } from '../layout/Footer'; 7 | import PageWrapper from '../layout/PageWrapper'; 8 | import { Navigation } from '../navigation'; 9 | import { Heading } from '../primitives/Heading'; 10 | import { LinkButton } from '../primitives/LinkButton'; 11 | import { NotFound } from './NotFound'; 12 | 13 | export const NotFoundPage: React.FC<{ message?: string; renderLink?: boolean }> = (props) => { 14 | const { message = 'Not found.', renderLink = true } = props; 15 | 16 | return ( 17 |
13 | If you are still in need help, reach out to us at{' '}
14 |
{children}
; 17 | }; 18 | -------------------------------------------------------------------------------- /web/components/primitives/Slider.tsx: -------------------------------------------------------------------------------- 1 | import * as SliderPrimitive from '@radix-ui/react-slider'; 2 | import cx from 'classnames'; 3 | import React from 'react'; 4 | 5 | interface Props { 6 | defaultValue?: number; 7 | max?: number; 8 | min?: number; 9 | step?: number; 10 | onChange?: (value: number) => void; 11 | value?: number; 12 | } 13 | 14 | const Slider = (props: Props) => { 15 | const { defaultValue = 50, max = 100, min = 0, step = 1, value, onChange } = props; 16 | 17 | return ( 18 |22 | {dayjs(date).format('dddd')},{' '} 23 | {dayjs(date).format('MMMM D')} 24 |
25 | {Object.entries(sessionsByHour).map(([hour, sessions]) => { 26 | return ( 27 |${key}: ${value}
` : null)) 16 | .join('\n')}`; 17 | 18 | const params: SESV2.SendEmailRequest = { 19 | Content: { 20 | Simple: { 21 | Body: { 22 | Html: { 23 | Data: body, 24 | Charset: 'UTF-8' 25 | }, 26 | Text: { 27 | Data: body, 28 | Charset: 'UTF-8' 29 | } 30 | }, 31 | Subject: { 32 | Data: `(${args.payload.name}) Support Ticket`, 33 | Charset: 'UTF-8' 34 | } 35 | } 36 | }, 37 | Destination: { 38 | ToAddresses: [args.sendToAddress] 39 | }, 40 | ReplyToAddresses: [`${args.payload.name} <${args.payload.email}>`], 41 | FromEmailAddress: '"Evental"${key}: ${value}
` : null)) 16 | .join('\n')}`; 17 | 18 | const params: SESV2.SendEmailRequest = { 19 | Content: { 20 | Simple: { 21 | Body: { 22 | Html: { 23 | Data: body, 24 | Charset: 'UTF-8' 25 | }, 26 | Text: { 27 | Data: body, 28 | Charset: 'UTF-8' 29 | } 30 | }, 31 | Subject: { 32 | Data: `(${args.payload.name}) ${args.payload.attendanceType} ${args.payload.helpType} Support Ticket`, 33 | Charset: 'UTF-8' 34 | } 35 | } 36 | }, 37 | Destination: { 38 | ToAddresses: [args.sendToAddress] 39 | }, 40 | ReplyToAddresses: [`${args.payload.name} <${args.payload.email}>`], 41 | FromEmailAddress: '"Evental"