1/** @jsxImportSource https://esm.sh/react@18.2.0 **/
2import { renderToString } from "https://esm.sh/react-dom@18.2.0/server";
3
4export default (req: Request) => {
1/** @jsxImportSource https://esm.sh/react */
2import { micromark } from "https://esm.sh/micromark@3";
3import { email } from "https://esm.town/v/std/email?v=11";
4import { discordWebhook } from "https://esm.town/v/stevekrouse/discordWebhook";
5import { html } from "https://esm.town/v/stevekrouse/html";
6import { renderToString } from "npm:react-dom/server";
7import Stripe from "npm:stripe";
8
1/** @jsxImportSource https://esm.sh/react */
2import { micromark } from "https://esm.sh/micromark@3";
3import { email } from "https://esm.town/v/std/email?v=11";
4import { discordWebhook } from "https://esm.town/v/stevekrouse/discordWebhook";
5import { html } from "https://esm.town/v/stevekrouse/html";
6import { renderToString } from "npm:react-dom/server";
7import Stripe from "npm:stripe";
8
1/** @jsxImportSource https://esm.sh/react */
2import { micromark } from "https://esm.sh/micromark@3";
3import { email } from "https://esm.town/v/std/email?v=11";
4import { discordWebhook } from "https://esm.town/v/stevekrouse/discordWebhook";
5import { html } from "https://esm.town/v/stevekrouse/html";
6import { renderToString } from "npm:react-dom/server";
7import Stripe from "npm:stripe";
8
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
3import React, { useEffect, useRef, useState } from "https://esm.sh/react@18.2.0";
4
5function LoginScreen({ onLogin }) {
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
3import React, { useEffect, useRef, useState } from "https://esm.sh/react@18.2.0";
4
5function LoginScreen({ onLogin }) {
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
3import React, { useEffect, useRef, useState } from "https://esm.sh/react@18.2.0";
4
5function LoginScreen({ onLogin }) {
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
3import React, { useEffect, useRef, useState } from "https://esm.sh/react@18.2.0";
4
5function LoginScreen({ onLogin }) {
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import {
3 DragDropContext,
4 Draggable,
5 Droppable,
6} from "https://esm.sh/react-beautiful-dnd@13.1.1?deps=react@18.2.0,react-dom@18.2.0";
7import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
8import React, { useEffect, useState } from "https://esm.sh/react@18.2.0";
9
10function TaskBoard() {
20Here's an example app I made with townie: https://www.val.town/v/maxm/emojiTodoListApp
21
22You can see that the `"https://esm.sh/react"` import imports the version directly without any redirects. Saving on network hops and also ensuring version stability!
23
24<p><img width=400 src="https://imagedelivery.net/iHX6Ovru0O7AjmyT5yZRoA/38d61d0a-0dee-42de-dd44-b4ce9bd57000/public" /></p>