summaryrefslogtreecommitdiffstats
path: root/src/ui/objects/Emoji.tsx
blob: f04f77650c3d474ce55712260d409cb343a79bef (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import site from "@/corvos.config.ts";

export interface Props {
	pack: string;
	emoji: string;
	size?: "125" | "150" | "200";
	class?: string;
}

export const Emoji = site.$.component(
	({ pack, emoji, size, class: cls, ...props }: Props, pages) => {
		const query = site.$.query(pages);
		const sprite = query.type(".svg").match({ emojiPack: pack }).one();

		return (
			<svg class:list={["o-emoji o-emoji--sprite", { [`o-emoji--${size}`]: size }, cls]} {...props}>
				<use href={`${sprite.url}#${emoji}`} />
			</svg>
		);
	},
);