1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
3import React, { useState } from "https://esm.sh/react@18.2.0";
4
5const LOGO_URL = "https://maxm-imggenurl.web.val.run/elegant-restaurant-logo-for-Heaven-Delights-with-food-elements";
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React from "https://esm.sh/react@18.2.0";
3import { BlogPost as BlogPostType } from "../utils/types.ts";
4import { Layout } from "./Layout.tsx";
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import JSZip from "https://esm.sh/jszip@3.10.0";
3import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
4import React, { useEffect, useRef, useState } from "https://esm.sh/react@18.2.0";
5
6// Fetch products from blob storage
20
21- **`/index.tsx`**: Main entry point that handles routing and proxying
22- **`/components/`**: React components for rendering the blog
23 - **`Layout.tsx`**: Shared layout component with header and Tailwind setup
24 - **`HomePage.tsx`**: Renders the blog homepage with the list of posts
29### Technical Stack
30
31- **React**: For rendering components
32- **Tailwind CSS**: For styling (via CDN)
33- **Unified/Remark/Rehype**: For markdown processing with GitHub Flavored Markdown support
69When modifying the blog system:
70
711. Update the React components in the `/components` directory
722. Modify the blog post utilities in `/utils/blogPosts.ts`
733. Test changes by visiting the homepage and individual blog posts
1/** @jsxImportSource https://esm.sh/react@19 */
2import { ArrowLeft, Share } from "https://esm.sh/lucide-react";
3import { useEffect, useState } from "https://esm.sh/react@19";
4
5export function Section({ children }: any) {
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState, useEffect, useRef } from "https://esm.sh/react@18.2.0";
3import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
4
5const VOICES = [
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState, useEffect, useRef } from "https://esm.sh/react@18.2.0";
3import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
4
5const VOICES = [
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import { createRoot } from "https://esm.sh/react-dom@18.2.0/client?deps=react@18.2.0";
3import { Prism as SyntaxHighlighter } from "https://esm.sh/react-syntax-highlighter?deps=react@18.2.0,react-dom@18.2.0";
4import React, { useEffect, useState } from "https://esm.sh/react@18.2.0";
5import STARTER_PROMPTS from "./starter-prompts.js";
6
30}: {
31 prompt: string;
32 setPrompt: React.Dispatch<React.SetStateAction<string>>;
33 handleSubmit: (e: React.FormEvent) => void;
34 handleStarterPromptClick: (promptItem: PromptItem) => void;
35}) {
116
117function App() {
118 const previewRef = React.useRef<HTMLDivElement>(null);
119 const [prompt, setPrompt] = useState("");
120 const [projectId, setProjectId] = useState<number | null>(null);
174 }
175
176 async function handleSubmit(e: React.FormEvent | string) {
177 if (typeof e !== "string") {
178 e.preventDefault();
673 </div>
674 <div className="bg-white w-full h-full flex flex-col grow rounded-xl border-2 border-white overflow-hidden">
675 <React.Fragment key={iframeKey}>
676 <iframe
677 srcDoc={code}
679 className="w-full grow"
680 />
681 </React.Fragment>
682 </div>
683 </div>
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
3import React, { useState } from "https://esm.sh/react@18.2.0";
4
5const NO_PHRASES = [
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
3import React, { useCallback, useEffect, useRef, useState } from "https://esm.sh/react@18.2.0";
4
5// --- Constants ---
674 createRoot(rootElement).render(<AircraftMaintenanceApp />);
675 } else {
676 console.error("Root element not found for React app");
677 }
678}
734 }
735
736 // --- Serve HTML for GET requests (loads the React app) ---
737 if (request.method === "GET" && new URL(request.url).pathname === "/") {
738 const finalHtmlContent = htmlContent.replace(