From cb1b56f5a0eddbf77446f415f2beda57c8305f85 Mon Sep 17 00:00:00 2001 From: polwex Date: Sun, 23 Nov 2025 01:12:53 +0700 Subject: wut --- packages/tweetdeck/src/APITester.tsx | 39 + packages/tweetdeck/src/App.tsx | 310 ++++++ .../tweetdeck/src/components/AddColumnModal.tsx | 234 ++++ packages/tweetdeck/src/components/ChatCard.tsx | 56 + packages/tweetdeck/src/components/ChatColumn.tsx | 62 ++ packages/tweetdeck/src/components/ColumnBoard.tsx | 93 ++ .../tweetdeck/src/components/FullscreenColumn.tsx | 134 +++ packages/tweetdeck/src/components/Sidebar.tsx | 153 +++ .../tweetdeck/src/components/TimelineColumn.tsx | 500 +++++++++ packages/tweetdeck/src/components/TweetCard.tsx | 337 ++++++ packages/tweetdeck/src/frontend.tsx | 26 + packages/tweetdeck/src/hooks/usePersistentState.ts | 39 + packages/tweetdeck/src/index.html | 16 + packages/tweetdeck/src/index.ts | 242 ++++ packages/tweetdeck/src/lib/client/twitterClient.ts | 75 ++ packages/tweetdeck/src/lib/fetching/python.ts | 52 + packages/tweetdeck/src/lib/fetching/twitter-api.ts | 1178 ++++++++++++++++++++ packages/tweetdeck/src/lib/fetching/types.ts | 596 ++++++++++ packages/tweetdeck/src/lib/utils/id.ts | 4 + packages/tweetdeck/src/lib/utils/time.ts | 18 + packages/tweetdeck/src/logo.svg | 1 + packages/tweetdeck/src/react.svg | 8 + packages/tweetdeck/src/styles/index.css | 835 ++++++++++++++ packages/tweetdeck/src/styles/normalize.css | 379 +++++++ packages/tweetdeck/src/types/app.ts | 92 ++ 25 files changed, 5479 insertions(+) create mode 100644 packages/tweetdeck/src/APITester.tsx create mode 100644 packages/tweetdeck/src/App.tsx create mode 100644 packages/tweetdeck/src/components/AddColumnModal.tsx create mode 100644 packages/tweetdeck/src/components/ChatCard.tsx create mode 100644 packages/tweetdeck/src/components/ChatColumn.tsx create mode 100644 packages/tweetdeck/src/components/ColumnBoard.tsx create mode 100644 packages/tweetdeck/src/components/FullscreenColumn.tsx create mode 100644 packages/tweetdeck/src/components/Sidebar.tsx create mode 100644 packages/tweetdeck/src/components/TimelineColumn.tsx create mode 100644 packages/tweetdeck/src/components/TweetCard.tsx create mode 100644 packages/tweetdeck/src/frontend.tsx create mode 100644 packages/tweetdeck/src/hooks/usePersistentState.ts create mode 100644 packages/tweetdeck/src/index.html create mode 100644 packages/tweetdeck/src/index.ts create mode 100644 packages/tweetdeck/src/lib/client/twitterClient.ts create mode 100644 packages/tweetdeck/src/lib/fetching/python.ts create mode 100644 packages/tweetdeck/src/lib/fetching/twitter-api.ts create mode 100644 packages/tweetdeck/src/lib/fetching/types.ts create mode 100644 packages/tweetdeck/src/lib/utils/id.ts create mode 100644 packages/tweetdeck/src/lib/utils/time.ts create mode 100644 packages/tweetdeck/src/logo.svg create mode 100644 packages/tweetdeck/src/react.svg create mode 100644 packages/tweetdeck/src/styles/index.css create mode 100644 packages/tweetdeck/src/styles/normalize.css create mode 100644 packages/tweetdeck/src/types/app.ts (limited to 'packages/tweetdeck/src') diff --git a/packages/tweetdeck/src/APITester.tsx b/packages/tweetdeck/src/APITester.tsx new file mode 100644 index 0000000..fd2af48 --- /dev/null +++ b/packages/tweetdeck/src/APITester.tsx @@ -0,0 +1,39 @@ +import { useRef, type FormEvent } from "react"; + +export function APITester() { + const responseInputRef = useRef(null); + + const testEndpoint = async (e: FormEvent) => { + e.preventDefault(); + + try { + const form = e.currentTarget; + const formData = new FormData(form); + const endpoint = formData.get("endpoint") as string; + const url = new URL(endpoint, location.href); + const method = formData.get("method") as string; + const res = await fetch(url, { method }); + + const data = await res.json(); + responseInputRef.current!.value = JSON.stringify(data, null, 2); + } catch (error) { + responseInputRef.current!.value = String(error); + } + }; + + return ( +
+
+ + + +
+