Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 5x 13x 13x 1365x 4771x 1703x 3068x 13x 14404x 13x 13x 260x | import React from "react";
import { Link, withPrefix } from "gatsby";
import Tag from "@/components/Tag";
import { AllPost } from "../entity";
const TagCloud = ({ allPosts }: { allPosts: AllPost[] }) => {
const mapping: { [key: string]: number } = {};
allPosts.forEach(({ node }) => {
node.frontmatter.tags.forEach((name) => {
if (mapping[name]) {
mapping[name] += 1;
} else {
mapping[name] = 1;
}
});
});
const tags = Array.from(Object.keys(mapping)).sort(
(b, a) => mapping[a] - mapping[b],
);
const limitTags = tags.slice(0, 20);
return (
<div className="d-none d-lg-block information my-2">
<Link to={withPrefix("tags")} title="Tags">
<p>
<span className="icon-tags" />
{limitTags.length} / {tags.length} Tags
</p>
</Link>
{limitTags.map((item) => (
<Tag name={item} key={item} count={mapping[item]} />
))}
</div>
);
};
export default TagCloud;
|