twitterAlertmain.tsx1 match
11const isProd = false;
1213export async function twitterAlert({ lastRunAt }: Interval) {
14// If isProd, search for tweets since that last time this interval ran
15// if not, search for tweets since 48 hours ago for testing
8];
910function App() {
11const [selectedTemplate, setSelectedTemplate] = useState(null);
12const [userInput, setUserInput] = useState("");
58}
5960function client() {
61createRoot(document.getElementById("root")).render(<App />);
62}
66}
6768export default async function server(request: Request): Promise<Response> {
69return new Response(`
70<!DOCTYPE html>
twitterAlertREADME.md2 matches
46- Key: `mentionsDiscord`
47- Value: https://discord.com/api/webhooks/1351457414179717161/wOy0KXv17LoL5mzheggEY2O0T2EZo-x_9CHhBiTB7Cr3d30JdsRSPiC1QR_nRA53nmDr
48Notifications will be sent using this function:
4950```ts
6364- **Proxies via Val Town's [SocialDataProxy](https://www.val.town/v/stevekrouse/socialDataProxy)**: Limited to 10 cents per day for [**Val Town Pro users**](https://www.val.town/pricing). This API is *only* for Pro users.
65- **Need more calls?** Sign up for your own [SocialData API token](https://socialdata.tools) and configure the [`socialDataSearch`](https://www.val.town/v/stevekrouse/socialDataSearch) function.
comicalGreenAnacondamain.tsx3 matches
161};
162163function App() {
164const [player1Time, setPlayer1Time] = useState(14400); // Default 4 hours
165const [player2Time, setPlayer2Time] = useState(14400);
295}
296297function client() {
298createRoot(document.getElementById("root")).render(<App />);
299}
300if (typeof document !== "undefined") { client(); }
301302export default async function server(request: Request): Promise<Response> {
303return new Response(`
304<html>
AirQualityGlobeVisualizermain.tsx9 matches
4import * as THREE from "https://esm.sh/three@0.158.0";
56function AirQualityGlobe() {
7const [airQualityData, setAirQualityData] = useState([]);
8const mountRef = useRef(null);
2930// Fetch air quality data from Open-Meteo
31async function fetchAirQualityData() {
32// Sample locations around the globe
33const locations = [
6667// Create smoke plumes
68function createSmokePlume(lat, lon, aqi) {
69const plumeMaterial = new THREE.MeshBasicMaterial({
70color: getAQIColor(aqi),
8990// AQI to color mapping
91function getAQIColor(aqi) {
92if (aqi <= 50) return 0x00e400; // Green
93if (aqi <= 100) return 0xffff00; // Yellow
99100// Animation loop
101function animate() {
102requestAnimationFrame(animate);
103109110// Responsive handling
111function onWindowResize() {
112camera.aspect = window.innerWidth / window.innerHeight;
113camera.updateProjectionMatrix();
162}
163164function App() {
165return (
166<div>
187}
188189function client() {
190const root = createRoot(document.getElementById("root"));
191root.render(<App />);
194if (typeof document !== "undefined") { client(); }
195196export default async function server(request: Request): Promise<Response> {
197return new Response(
198`
charlieMultiappindex.ts1 match
9697// Questie app handler
98async function questieHandler(c: any, { appPath, query, email }: AppContext) {
99let content;
100
charlieMultiappDetail.ts5 matches
7}
89export async function QuestieDetail({ email, questId }: QuestieDetailProps) {
10// Fetch quest details from the database
11let quest = null;
77}
7879// Helper function to get the appropriate badge class for a status
80function getStatusBadgeClass(status: string): string {
81switch (status.toLowerCase()) {
82case 'completed':
93}
9495// Helper function to format a date string
96function formatDate(dateStr: string): string {
97if (!dateStr) return 'Unknown';
98
charlieMultiappCreate.ts1 match
5}
67export function QuestieCreate({ email }: QuestieCreateProps) {
8return html`
9<div class="questie-container">
charlieMultiappList.ts5 matches
6}
78export async function QuestieList({ email }: QuestieListProps) {
9// Fetch quests from the database
10let quests = [];
57}
5859// Helper function to get the appropriate badge class for a status
60function getStatusBadgeClass(status: string): string {
61switch (status.toLowerCase()) {
62case 'completed':
73}
7475// Helper function to format a date string
76function formatDate(dateStr: string): string {
77if (!dateStr) return 'Unknown';
78
charlieMultiappHome.ts1 match
5}
67export function QuestieHome({ email }: QuestieHomeProps) {
8return html`
9<div class="questie-container">