From fd86dc15734f3b7126d88f0130897c597100e30a Mon Sep 17 00:00:00 2001 From: polwex Date: Thu, 15 May 2025 20:32:25 +0700 Subject: m --- src/pages/test/index.tsx | 21 +- src/pages/test/product-details-server.tsx | 340 ------------------------------ 2 files changed, 4 insertions(+), 357 deletions(-) delete mode 100644 src/pages/test/product-details-server.tsx (limited to 'src/pages/test') diff --git a/src/pages/test/index.tsx b/src/pages/test/index.tsx index 35ce5db..4c9325c 100644 --- a/src/pages/test/index.tsx +++ b/src/pages/test/index.tsx @@ -1,21 +1,12 @@ // This is a Server Component by default -import ProductDetailsServer from "./product-details-server"; +import ServerWord from "@/zoom/ServerWord"; import TriggerModalButton from "./trigger-modal-button"; // We'll make this a client component to manage state export default function SomePage() { const productIdForModal = "123"; // Or get this dynamically return ( -
-

- Modal with Server Component Content -

-

- This page demonstrates opening a modal whose content is rendered by a - Server Component. The modal shell (open/close logic) is a Client - Component. -

- +
{/* The TriggerModalButton will manage the modal's open/close state. It will receive the Server Component as a child to pass to ClientModal. @@ -23,12 +14,8 @@ export default function SomePage() { - + - -
-

Other content on the page...

-
-
+ ); } diff --git a/src/pages/test/product-details-server.tsx b/src/pages/test/product-details-server.tsx deleted file mode 100644 index 552ff21..0000000 --- a/src/pages/test/product-details-server.tsx +++ /dev/null @@ -1,340 +0,0 @@ -// This is a Server Component -import React from "react"; -import db from "@/lib/db"; -import { - Card, - CardHeader, - CardDescription, - CardContent, - CardFooter, - CardTitle, -} from "@/components/ui/card"; -import { NLP } from "sortug-ai"; -import { - BookOpen, - Volume2, - Link as LinkIcon, - ChevronDown, - ChevronUp, - Search, - Info, - MessageSquareQuote, - Tags, - ListTree, - Lightbulb, -} from "lucide-react"; -import { - Example, - SubSense, - RelatedEntry, - Sense, - WordData, -} from "@/zoom/logic/types"; - -export default async function Wordd({ - word, - lang, -}: { - word: string; - lang: string; -}) { - const data = db.fetchWordBySpelling(word, "en"); - console.log({ data }); - - if (!data) return

oh...

; - return ( - - - -

{word}

-
- - - -
- - {/* Senses */} -

- Meanings & Definitions -

- {data.senses.map((sense, index) => ( - - ))} -
- -
- ); - // return ( - //
- //

{word}

- //

${word.}

- //

{word}

- //

- // Content rendered on the server at: {new Date().toLocaleTimeString()} - //

- //
- // ); -} - -// Helper component for IPA display -const IpaDisplay = ({ - ipaEntries, -}: { - ipaEntries: Array<{ ipa: string; tags?: string[] }>; -}) => { - if (!ipaEntries || ipaEntries.length === 0) return null; - return ( -
- {ipaEntries.map((entry, index) => { - const tags = entry.tags ? entry.tags : []; - return ( - - {entry.ipa}{" "} - {tags.length > 0 && ( - ({tags.join(", ")}) - )} - - ); - })} - -
- ); -}; - -// Component for displaying examples -const ExampleDisplay = ({ examples }: { examples: Example[] }) => { - if (!examples || examples.length === 0) return null; - return ( -
-
- - Examples: -
- -
- ); -}; - -// Component for displaying related terms (synonyms, antonyms, etc.) -const RelatedTermsDisplay = ({ - terms, - type, -}: { - terms: RelatedEntry[] | undefined; - type: string; -}) => { - if (!terms || terms.length === 0) return null; - return ( -
- - {type}:{" "} - - {terms.map((term, idx) => ( - - - {term.word} - - {term.source && ( - ({term.source}) - )} - {idx < terms.length - 1 && ", "} - - ))} -
- ); -}; - -// Component for displaying a SubSense -const SubSenseDisplay = ({ - subSense, - subSenseNumber, -}: { - subSense: SubSense; - subSenseNumber: number; -}) => { - return ( -
- {subSense.glosses.map((gloss, glossIdx) => ( -

- - {subSenseNumber}.{glossIdx + 1} - {" "} - {gloss} -

- ))} - {subSense.raw_glosses && - subSense.raw_glosses.length > 0 && - subSense.raw_glosses.join("") !== subSense.glosses.join("") && ( -

- (Raw: {subSense.raw_glosses.join("; ")}) -

- )} - - {subSense.categories && subSense.categories.length > 0 && ( -
-
- - Categories: -
-
- {subSense.categories.map((cat, idx) => ( - - {cat} - - ))} -
-
- )} - - - - - {subSense.tags && subSense.tags.length > 0 && ( -
-
- - Tags: -
-
- {subSense.tags.map((tag, idx) => ( - - {tag} - - ))} -
-
- )} - - {subSense.links && subSense.links.length > 0 && ( -
- {subSense.links.map(([type, target], linkIdx) => ( - - {type} - - ))} -
- )} -
- ); -}; - -// Component for individual sense -const SenseCard = ({ - senseData, - senseNumber, -}: { - senseData: Sense; - senseNumber: number; -}) => { - return ( -
-
-

- {senseNumber}. {senseData.pos} -

-
- - {senseData.etymology && ( -
- - Etymology - - - -

- {senseData.etymology} -

-
- )} - - {senseData.forms && senseData.forms.length > 0 && ( -
-

Forms:

-
- {senseData.forms.map((form, idx) => ( - - {form.form}{" "} - {form.tags.length > 0 && `(${form.tags.join(", ")})`} - - ))} -
-
- )} - - {senseData.senses.map((subSense, idx) => ( - - ))} - - {senseData.related && ( -
-

- - Related Terms: -

- - - - -
- )} -
- ); -}; -- cgit v1.2.3