Val Town Code SearchReturn to Val Town

API Access

You can access search results via JSON API by adding format=json to your query:

https://codesearch.val.run/$%7Burl%7D?q=react&page=67&format=json

For typeahead suggestions, use the /typeahead endpoint:

https://codesearch.val.run/typeahead?q=react

Returns an array of strings in format "username" or "username/projectName"

Found 9985 results for "react"(1223ms)

TownieDebugStyles.tsx2 matches

@pomdtr•Updated 6 days ago
1/** @jsxImportSource https://esm.sh/react@18.2.0?dev */
2import { useRef, useEffect, useState } from "https://esm.sh/react@18.2.0?dev";
3import { TownieIcon } from "./icons.tsx";
4import { Messages } from "./Messages.tsx";

TownieChatRoute.tsx3 matches

@pomdtr•Updated 6 days ago
1/** @jsxImportSource https://esm.sh/react@18.2.0?dev */
2import { useState, useEffect, useContext } from "https://esm.sh/react@18.2.0?dev";
3import { useParams } from "https://esm.sh/react-router@7?dev&deps=react@18.2.0&react-dom@18.2.0";
4
5import { AppContext } from "./App.tsx";

TownieBranchSelect.tsx3 matches

@pomdtr•Updated 6 days ago
1/** @jsxImportSource https://esm.sh/react@18.2.0?dev */
2import { useMemo } from "https://esm.sh/react@18.2.0?dev";
3import { useNavigate, useParams } from "https://esm.sh/react-router@7?dev&deps=react@18.2.0&react-dom@18.2.0";
4import { useBranches } from "../hooks/useBranches.tsx";
5import { useCreateBranch } from "../hooks/useCreateBranch.tsx";

TownieApp.tsx4 matches

@pomdtr•Updated 6 days ago
1/** @jsxImportSource https://esm.sh/react@18.2.0?dev */
2import React, { useState, createContext } from "https://esm.sh/react@18.2.0?dev";
3import {
4 BrowserRouter,
9 Navigate,
10 useLocation,
11} from "https://esm.sh/react-router@7?dev&deps=react@18.2.0&react-dom@18.2.0";
12import { useLocalStorage } from "https://esm.sh/react-use?dev&deps=react@18.2.0&react-dom@18.2.0";
13import { LayoutRoute } from "./LayoutRoute.tsx";
14import { Home } from "./Home.tsx";

EEPMOnitoringlogin.tsx2 matches

@solomonferede•Updated 6 days ago
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useEffect, useState } from "https://esm.sh/react@18.2.0";
3
4const BRAND_COLORS = {

social_data_api_projectx_posts_search.tsx94 matches

@tsuchi_ya•Updated 6 days ago
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import { createRoot } from "https://esm.sh/react-dom@18.2.0/client";
3import React from "https://esm.sh/react@18.2.0";
4
5/**
8function App() {
9 // --- State declarations ---
10 const [query, setQuery] = React.useState("");
11 const [targetAccount, setTargetAccount] = React.useState("");
12 const [apiKey, setApiKey] = React.useState("");
13 const [searchType, setSearchType] = React.useState("Latest");
14 const [sinceDate, setSinceDate] = React.useState("");
15 const [untilDate, setUntilDate] = React.useState("");
16 const [desiredCount, setDesiredCount] = React.useState(40);
17 const [tweets, setTweets] = React.useState([]);
18 const [loading, setLoading] = React.useState(false);
19 const [loadingMessage, setLoadingMessage] = React.useState("");
20 const [error, setError] = React.useState(null);
21 const [currentSearchQuery, setCurrentSearchQuery] = React.useState("");
22 const [showAdvanced, setShowAdvanced] = React.useState(false);
23
24 const isFetchingRef = React.useRef(false);
25 const sourceUrl = import.meta.url.replace("esm.town", "val.town");
26
27 // --- Helper Functions ---
28 const buildQuery = React.useCallback((keywords, account, since, until) => {
29 let finalQuery = keywords.trim();
30 if (account.trim()) {
48
49 // --- Tweet Fetching Logic ---
50 const fetchAllTweets = React.useCallback(
51 async (fullQuery, type, targetCount) => {
52 if (!apiKey.trim()) {
171 };
172
173 // --- Render Main Application UI with React.createElement ---
174 return React.createElement(
175 "div",
176 { className: "app" },
177 React.createElement("h1", { className: "title" }, "X Search"),
178 // API Key Input
179 React.createElement(
180 "div",
181 { className: "card" },
182 React.createElement(
183 "div",
184 { className: "field" },
185 React.createElement(
186 "label",
187 { htmlFor: "apiKey", className: "label" },
188 "API Key",
189 ),
190 React.createElement("input", {
191 type: "password",
192 id: "apiKey",
199 ),
200 // Search Form
201 React.createElement(
202 "form",
203 { onSubmit: handleSubmit, className: "card" },
204 // Basic search fields
205 React.createElement(
206 "div",
207 { className: "search-row" },
208 React.createElement(
209 "div",
210 { className: "field account-field" },
211 React.createElement(
212 "label",
213 { htmlFor: "targetAccount", className: "label" },
214 "Account",
215 ),
216 React.createElement(
217 "div",
218 { className: "input-wrapper" },
219 React.createElement("span", { className: "input-prefix" }, "@"),
220 React.createElement("input", {
221 type: "text",
222 id: "targetAccount",
229 ),
230 ),
231 React.createElement(
232 "div",
233 { className: "field query-field" },
234 React.createElement(
235 "label",
236 { htmlFor: "queryKeywords", className: "label" },
237 "Keywords",
238 ),
239 React.createElement("input", {
240 type: "text",
241 id: "queryKeywords",
249 ),
250 // Advanced options toggle
251 React.createElement(
252 "button",
253 {
260 // Advanced options
261 showAdvanced
262 && React.createElement(
263 "div",
264 { className: "advanced-options" },
265 React.createElement(
266 "div",
267 { className: "field-row" },
268 React.createElement(
269 "div",
270 { className: "field" },
271 React.createElement(
272 "label",
273 { htmlFor: "searchType", className: "label" },
274 "Type",
275 ),
276 React.createElement(
277 "select",
278 {
283 className: "select",
284 },
285 React.createElement("option", { value: "Latest" }, "Latest"),
286 React.createElement("option", { value: "Top" }, "Top"),
287 ),
288 ),
289 React.createElement(
290 "div",
291 { className: "field" },
292 React.createElement(
293 "label",
294 { htmlFor: "desiredCount", className: "label" },
295 "Count",
296 ),
297 React.createElement("input", {
298 type: "number",
299 id: "desiredCount",
306 ),
307 ),
308 React.createElement(
309 "div",
310 { className: "field-row" },
311 React.createElement(
312 "div",
313 { className: "field" },
314 React.createElement(
315 "label",
316 { htmlFor: "sinceDate", className: "label" },
317 "Since",
318 ),
319 React.createElement("input", {
320 type: "date",
321 id: "sinceDate",
326 }),
327 ),
328 React.createElement(
329 "div",
330 { className: "field" },
331 React.createElement(
332 "label",
333 { htmlFor: "untilDate", className: "label" },
334 "Until",
335 ),
336 React.createElement("input", {
337 type: "date",
338 id: "untilDate",
346 ),
347 // Search/Stop Button
348 React.createElement(
349 "div",
350 { className: "button-row" },
351 !loading
352 ? React.createElement(
353 "button",
354 { type: "submit", className: "button" },
355 "Search",
356 )
357 : React.createElement(
358 "button",
359 {
368 // Status Messages
369 (loading || error)
370 && React.createElement(
371 "div",
372 { className: "card status-card" },
373 loading && React.createElement("p", { className: "status" }, loadingMessage),
374 error && React.createElement("p", { className: "error" }, error),
375 ),
376 // Results
377 tweets.length > 0
378 && React.createElement(
379 "div",
380 { className: "card results-card" },
381 React.createElement(
382 "div",
383 { className: "results-header" },
384 React.createElement(
385 "div",
386 { className: "results-summary" },
387 React.createElement(
388 "span",
389 { className: "results-count" },
390 tweets.length,
391 ),
392 React.createElement(
393 "span",
394 { className: "results-label" },
397 ),
398 currentSearchQuery
399 && React.createElement(
400 "div",
401 { className: "query-display" },
403 ),
404 ),
405 React.createElement(
406 "div",
407 { className: "tweet-list" },
408 tweets.map((tweet) =>
409 React.createElement(
410 "div",
411 { key: tweet.id_str, className: "tweet" },
412 // Tweet Header
413 React.createElement(
414 "div",
415 { className: "tweet-header" },
416 React.createElement("img", {
417 src: tweet.user.profile_image_url_https,
418 alt: `${tweet.user.name}'s profile`,
419 className: "avatar",
420 }),
421 React.createElement(
422 "div",
423 { className: "user-info" },
424 React.createElement(
425 "div",
426 { className: "name-row" },
427 React.createElement(
428 "span",
429 { className: "name" },
430 tweet.user.name,
431 ),
432 React.createElement(
433 "span",
434 { className: "username" },
436 ),
437 ),
438 React.createElement(
439 "div",
440 { className: "date" },
447 ),
448 // Tweet Content
449 React.createElement(
450 "p",
451 { className: "tweet-text" },
454 // Media
455 tweet.entities?.media?.length > 0
456 && React.createElement(
457 "div",
458 { className: "media-container" },
459 tweet.entities.media.map((mediaItem) =>
460 React.createElement(
461 "div",
462 { key: mediaItem.id_str, className: "media-item" },
463 mediaItem.type === "photo"
464 || mediaItem.type === "animated_gif"
465 ? React.createElement(
466 "a",
467 {
470 rel: "noopener noreferrer",
471 },
472 React.createElement("img", {
473 src: mediaItem.media_url_https,
474 alt: `Media`,
478 )
479 : mediaItem.type === "video"
480 ? React.createElement(
481 "a",
482 {
486 className: "video-link",
487 },
488 React.createElement("img", {
489 src: mediaItem.media_url_https,
490 alt: `Video preview`,
492 className: "media",
493 }),
494 React.createElement(
495 "div",
496 { className: "play-icon" },
503 ),
504 // Tweet Footer
505 React.createElement(
506 "div",
507 { className: "tweet-footer" },
508 React.createElement(
509 "div",
510 { className: "metrics" },
511 React.createElement(
512 "span",
513 { className: "metric" },
515 tweet.favorite_count ?? 0,
516 ),
517 React.createElement(
518 "span",
519 { className: "metric" },
521 tweet.retweet_count ?? 0,
522 ),
523 React.createElement(
524 "span",
525 { className: "metric" },
528 ),
529 ),
530 React.createElement(
531 "a",
532 {
548 && currentSearchQuery
549 && !error
550 && React.createElement(
551 "div",
552 { className: "card empty-card" },
554 ),
555 // Footer
556 React.createElement(
557 "footer",
558 null,
559 "Powered by ",
560 React.createElement(
561 "a",
562 {
568 ),
569 " | ",
570 React.createElement(
571 "a",
572 { href: sourceUrl, target: "_top" },
583 const root = document.getElementById("root");
584 if (root) {
585 createRoot(root).render(React.createElement(App));
586 } else {
587 console.error("Root element not found");

remixreact.tsx0 matches

@rayyan•Updated 1 week ago
1export default async function (req: Request): Promise<Response> {
2 return Response.json({ ok: true })
3}

TownieREADME.md2 matches

@valdottown•Updated 1 week ago
47
48OpenTownie is built with:
49- React frontend with TypeScript
50- React Router
51- Hono API server backend
52- Web Audio API for sound notifications

subdomainsreact.tsx0 matches

@rayyan•Updated 1 week ago
1export default async function (req: Request): Promise<Response> {
2 return Response.json({ ok: true })
3}
GitHub-Release-Notes

GitHub-Release-Notesindex.tsx2 matches

@charmaine•Updated 1 week ago
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState, useEffect } from "https://esm.sh/react@18.2.0";
3import { CommitWithPR, ReleaseNote, ShareableContent } from "../shared/types.ts";
4

reactHonoStarter10 file matches

@Arthur88•Updated 1 hour ago
react-router-hono-starter

react-router-hono-starter4 file matches

@jxnblk•Updated 8 hours ago
Minimal React Router + Hono starter example
effector
Write business logic with ease Meet the new standard for modern TypeScript development. Type-safe, reactive, framework-agnostic library to manage your business logic.
officialrajdeepsingh
Follow me if you learn more about JavaScript | TypeScript | React.js | Next.js | Linux | NixOS | Frontend Developer | https://linktr.ee/officialrajdeepsingh