| 'use client' |
| import { TitleBar } from "@/components/title-bar/TitleBar"; |
| import { useTextStore } from "./TextStore"; |
| import { SentimentList } from "./SentimentList"; |
| import { Fallback } from "@/components/fallback/Fallback"; |
| import Link from "next/link"; |
| import { classify } from "@/util/classify"; |
| import { useQuery } from "@tanstack/react-query"; |
|
|
| export function SentimentWidget() { |
| const { text } = useTextStore(); |
|
|
| const { isPending, data: out } = useQuery({ |
| queryKey: ['text', text], |
| queryFn: () => |
| classify(text), |
| }) |
|
|
|
|
| return ( |
| <section className="w-full max-w-2xl h-full flex flex-col"> |
| <TitleBar label="Sentiment"> |
| <Link |
| href="https://github.com/samyosm/analyzo#how" |
| className="border-dotted hover:underline" |
| title="This widget uses an AI" |
| > |
| How? |
| </Link> |
| </TitleBar> |
| {isPending ? <Fallback /> : <SentimentList out={out} />} |
| |
| </section> |
|
|
| ) |
| } |
|
|