1# Routine Tracker
2
3This is a little React component to make our 7yo's after school routine self-serve so she can be a bit more independent after school.
4
5To change the items in the list, modify the `routineTasks` array of objects:
1/** @jsxImportSource https://esm.sh/react */
2import React, { useEffect, useState } from "https://esm.sh/react";
3import { createRoot } from "https://esm.sh/react-dom/client";
4
5function App() {
10 useEffect(() => {
11 // Load the Spline component dynamically
12 import("https://esm.sh/@splinetool/react-spline@2.2.6")
13 .then((module) => {
14 setSplineComponent(() => module.default);
1/** @jsxImportSource https://esm.sh/react */
2import { renderToString } from "npm:react-dom/server";
3
4export default async function(req: Request) {
1/** @jsxImportSource https://esm.sh/react */
2import React, { useEffect, useRef, useState } from "https://esm.sh/react"
3import { createRoot } from "https://esm.sh/react-dom/client"
4
5// Game board size
45 }
46
47 const handleTouchMove = (e: React.TouchEvent) => {
48 if (!isDragging || !boardRef.current) return
49
1/** @jsxImportSource https://esm.sh/react */
2import React, { useState } from "https://esm.sh/react";
3import { createRoot } from "https://esm.sh/react-dom/client";
4
5function App() {
1/** @jsxImportSource https://esm.sh/react */
2import React, { useEffect, useState } from "https://esm.sh/react";
3import { createRoot } from "https://esm.sh/react-dom/client";
4
5function App() {
1/** @jsxImportSource https://esm.sh/preact */
2import { reactResponse } from "https://esm.town/v/moe/responses"
3
4export default (req: Request) => {
6 const calendarUrl = url.searchParams.get("url")
7
8 return reactResponse(
9 <html>
10 <head>
1/** @jsxImportSource https://esm.sh/preact */
2import { reactResponse } from "https://esm.town/v/moe/responses"
3
4export default (req: Request) => {
7 // console.log(qp)
8
9 return reactResponse(
10 <html>
11 <head>
1/** @jsxImportSource https://esm.sh/react */
2import React, { useState, useEffect } from "https://esm.sh/react";
3import { createRoot } from "https://esm.sh/react-dom/client";
4
5import sha256 from 'https://esm.sh/crypto-js/sha256';
18}
19
20async function reaction(channel: string, timestamp: string, name: string = "thumbsup") {
21 return await fetchJSON(
22 "https://slack.com/api/reactions.add",
23 {
24 headers: { "Authorization": `Bearer ${SLACK_BOT_TOKEN}` },
70 if (event.type === "message" && event.text.includes("what's up?")) {
71 await message(channel, "<@" + event.user + ">: all good!");
72 console.log("reaction", await reaction(channel, event.ts));
73 }
74 return Response.json({ ok: true });