1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React from "https://esm.sh/react@18.2.0";
3import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
4import App from "./components/App.tsx";
5
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState, useEffect, useRef } from "https://esm.sh/react@18.2.0?deps=react@18.2.0";
3import type { ChatMessage, ApiResponse } from "../../shared/types.ts";
4
35 };
36
37 const sendMessage = async (e: React.FormEvent) => {
38 e.preventDefault();
39
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState } from "https://esm.sh/react@18.2.0?deps=react@18.2.0";
3import type { Job, ApiResponse } from "../../shared/types.ts";
4
19 const [error, setError] = useState<string | null>(null);
20
21 const handleSubmit = async (e: React.FormEvent) => {
22 e.preventDefault();
23 setLoading(true);
55 };
56
57 const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {
58 const { name, value } = e.target;
59 setFormData(prev => ({
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState, useEffect } from "https://esm.sh/react@18.2.0?deps=react@18.2.0";
3import type { Job, ApiResponse } from "../../shared/types.ts";
4import JobForm from "./JobForm.tsx";
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState } from "https://esm.sh/react@18.2.0?deps=react@18.2.0";
3import JobBoard from "./JobBoard.tsx";
4import ChatRoom from "./ChatRoom.tsx";
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React from "https://esm.sh/react@18.2.0?deps=react@18.2.0";
3import { createRoot } from "https://esm.sh/react-dom@18.2.0/client?deps=react@18.2.0,react-dom@18.2.0";
4import App from "./components/App.tsx";
5
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState, useMemo } from 'https://esm.sh/react@18.2.0';
3import type { Order } from '../../shared/types.ts';
4
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState, useEffect } from 'https://esm.sh/react@18.2.0';
3import { auth } from '../../shared/auth.ts';
4import OrderForm from './OrderForm.tsx';
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState } from 'https://esm.sh/react@18.2.0';
3import { auth } from '../../shared/auth.ts';
4
12 const [isLoading, setIsLoading] = useState(false);
13
14 const handleSubmit = async (e: React.FormEvent) => {
15 e.preventDefault();
16 setIsLoading(true);
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState, useEffect } from 'https://esm.sh/react@18.2.0';
3import type { CreateOrderRequest, ApiResponse, Order, Product } from '../../shared/types.ts';
4
80 };
81
82 const handleInputChange = (e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>) => {
83 const { name, value } = e.target;
84 setFormData(prev => ({
90 };
91
92 const handleSubmit = async (e: React.FormEvent) => {
93 e.preventDefault();
94 setIsSubmitting(true);