extended version
This commit is contained in:
46
src/components/WordDensity.tsx
Normal file
46
src/components/WordDensity.tsx
Normal file
@@ -0,0 +1,46 @@
|
||||
"use client";
|
||||
import { Progress } from "@/components/ui/progress";
|
||||
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion";
|
||||
|
||||
type WordDensityProps = {
|
||||
density: Record<string, number>;
|
||||
};
|
||||
|
||||
export default function WordDensity({ density }: WordDensityProps) {
|
||||
const sorted = Object.entries(density).sort((a, b) => b[1] - a[1]);
|
||||
const firstFive = sorted.slice(0, 5);
|
||||
const rest = sorted.slice(5);
|
||||
|
||||
return (
|
||||
<div className="h-auto w-full pt-8">
|
||||
<h2 className="text-2xl">Word Density</h2>
|
||||
<div className="flex flex-col py-4 gap-2">
|
||||
{firstFive.map(([word, value]) => (
|
||||
<div className="flex flex-row items-center" key={word}>
|
||||
<p className="pr-4 text-lg uppercase">{word}</p>
|
||||
<Progress className="h-4 flex-1" value={value * 100} />
|
||||
<p className="pl-4">{(value * 100).toFixed(2)}%</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
{rest.length > 0 && (
|
||||
<Accordion type="single" collapsible>
|
||||
<AccordionItem value="item-1">
|
||||
<AccordionTrigger className="text-xl">See more</AccordionTrigger>
|
||||
<AccordionContent>
|
||||
<div className="flex flex-col py-4 gap-2">
|
||||
{rest.map(([word, value]) => (
|
||||
<div className="flex flex-row items-center" key={word}>
|
||||
<p className="pr-4 text-lg uppercase">{word}</p>
|
||||
<Progress className="h-4 flex-1" value={value * 100} />
|
||||
<p className="pl-4">{(value * 100).toFixed(2)}%</p>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
</AccordionContent>
|
||||
</AccordionItem>
|
||||
</Accordion>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user