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 { Product, CartItem, User } from "../../shared/types.ts";
4import Header from "./Header.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, useEffect } from "https://esm.sh/react@18.2.0?deps=react@18.2.0";
3import StudentList from "./StudentList.tsx";
4import AttendanceForm from "./AttendanceForm.tsx";
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState, useEffect, useRef } from 'https://esm.sh/react@18.2.0';
3import type { Chat, User, Message } from '../../shared/types.ts';
4
69 };
70
71 const sendMessage = async (e: React.FormEvent) => {
72 e.preventDefault();
73
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
6// Initialize the React app
7const root = createRoot(document.getElementById("root")!);
8root.render(<App />);
52 </div>
53
54 <!-- React and app scripts -->
55 <script type="module" src="/frontend/index.tsx"></script>
56</body>
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState, useEffect, useRef } from 'https://esm.sh/react@18.2.0';
3import type { Chat, User, Message } from '../../shared/types.ts';
4
50 };
51
52 const sendMessage = async (e: React.FormEvent) => {
53 e.preventDefault();
54
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, CreateMessageRequest } from "../../shared/types.ts";
4
78 }, []);
79
80 const handleSendMessage = async (e: React.FormEvent) => {
81 e.preventDefault();
82
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React from 'https://esm.sh/react@18.2.0';
3import type { Chat, Contact } from '../../shared/types.ts';
4
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 { CreateJobRequest } from "../../shared/types.ts";
4
21 const [error, setError] = useState<string | null>(null);
22
23 const handleSubmit = async (e: React.FormEvent) => {
24 e.preventDefault();
25 setLoading(true);
64 };
65
66 const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) => {
67 const { name, value, type } = e.target;
68 setFormData(prev => ({