1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import Markdown from "https://esm.sh/react-markdown@9?deps=react@18.2.0";
3import { listFiles, readFile } from "https://esm.town/v/std/utils@85-main/index.ts";
4import { renderToString } from "npm:react-dom@18.2.0/server";
5import { Layout } from "./Layout.tsx";
6
44}
45
46function html(children: React.ReactNode) {
47 return new Response(
48 renderToString(
1/** @jsxImportSource https://esm.sh/react */
2import { renderToString } from "npm:react-dom/server";
3
4export default async function(req: Request) {
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import { useState } from "https://esm.sh/react@18.2.0";
3
4export function FormContent({ data, content }) {
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2
3export function IframeContent({ data, content }) {
22โ โโโ index.html # Main application interface
23โ โโโ components/
24โ โ โโโ App.tsx # Main React component
25โ โ โโโ AnalysisTable.tsx # Results display
26โ โโโ style.css # Application styles
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2
3export type ToastTypes =
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import type { TimerState } from "../../shared/types.ts";
3import { Button } from "./Button.tsx";
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState } from "https://esm.sh/react@18.2.0";
3
4interface ContactProps {
6}
7
8const Contact: React.FC<ContactProps> = ({ onNavigate }) => {
9 const [formData, setFormData] = useState({
10 name: '',
16 const [submitMessage, setSubmitMessage] = useState('');
17
18 const handleInputChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) => {
19 const { name, value } = e.target;
20 setFormData(prev => ({
24 };
25
26 const handleSubmit = async (e: React.FormEvent) => {
27 e.preventDefault();
28 setIsSubmitting(true);
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState } from "https://esm.sh/react@18.2.0";
3import type { ContactForm } from "../../../shared/types.ts";
4
7}
8
9const GetInvolved: React.FC<GetInvolvedProps> = ({ onNavigate }) => {
10 const [formData, setFormData] = useState<ContactForm>({
11 name: '',
18 const [submitMessage, setSubmitMessage] = useState('');
19
20 const handleInputChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) => {
21 const { name, value } = e.target;
22 setFormData(prev => ({
26 };
27
28 const handleSubmit = async (e: React.FormEvent) => {
29 e.preventDefault();
30 setIsSubmitting(true);
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React from "https://esm.sh/react@18.2.0";
3import type { Event } from "../../../shared/types.ts";
4
7}
8
9const Events: React.FC<EventsProps> = ({ onNavigate }) => {
10 const upcomingEvents: Event[] = [
11 {