1/** @jsxImportSource https://esm.sh/react@18.2.0?dev */
2import React from "https://esm.sh/react@18.2.0?dev";
3import { MessagePart } from "./MessagePart.tsx";
4import { MessageTimer } from "./MessageTimer.tsx";
1/** @jsxImportSource https://esm.sh/react@18.2.0?dev */
2import React from "https://esm.sh/react@18.2.0?dev";
3
4export const LoadingSpinner = () => (
1/** @jsxImportSource https://esm.sh/react@18.2.0?dev */
2import React from "https://esm.sh/react@18.2.0?dev";
3
4interface ErrorDisplayProps {
1/** @jsxImportSource https://esm.sh/react@18.2.0?dev */
2import React from "https://esm.sh/react@18.2.0?dev";
3import { MessageItem } from "./MessageItem.tsx";
4import { ErrorDisplay } from "./ErrorDisplay.tsx";
1/** @jsxImportSource https://esm.sh/react@18.2.0?dev */
2import React from "https://esm.sh/react@18.2.0?dev";
3import { BranchControl } from "./BranchControl.tsx";
4
1/** @jsxImportSource https://esm.sh/react@18.2.0?dev */
2import React from "https://esm.sh/react@18.2.0?dev";
3
4interface ApiKeyWarningProps {
1/** @jsxImportSource https://esm.sh/react@18.2.0?dev */
2import { useEffect, useState } from "https://esm.sh/react@18.2.0?dev";
3
4// Utility to format milliseconds into a readable time string
1// static / vanilla js version of jxnblkio
2/** @jsxImportSource https://esm.sh/react@18.3.1 */
3import { match } from "https://esm.sh/path-to-regexp@8.2.0";
4import React from "https://esm.sh/react@18.3.1";
5import { useMemo, useState } from "https://esm.sh/react@18.3.1";
6import { analytics } from "https://esm.town/v/jxnblk/analytics";
7import { Avatar } from "https://esm.town/v/jxnblk/avatar";
8import { App, Route } from "https://esm.town/v/jxnblk/JxnblkApp";
9import { DataRequest, render, robots } from "./ReactStream";
10import redirects from "./redirects";
11import { rss } from "./rss";
2
3// import data from "https://blog.jxnblk.com/api/all.json" with { type: "json" };
4import type { Middleware } from "https://esm.town/v/jxnblk/ReactStream";
5
6function generateRSSFeed(posts) {
1import { match, parse, pathToRegexp } from "https://esm.sh/path-to-regexp@7.2.0";
2import { DataRequest } from "./ReactStream";
3
4const redirects = new Map();
5redirects.set("/hello-color", "https://jxnblk.io/hello-color");
6redirects.set("/react-icons", "https://jxnblk.io/react-icons/");
7
8redirects.set("/colorable", "https://colorable.jxnblk.com");