gradio
1<script lang="ts">
2import { Like } from "@gradio/icons";
3import { Dislike } from "@gradio/icons";
4
5export let handle_action: (selected: string | null) => void;
6
7let selected: "like" | "dislike" | null = null;
8</script>
9
10<button
11on:click={() => {
12selected = "like";
13handle_action(selected);
14}}
15aria-label={selected === "like" ? "clicked like" : "like"}
16>
17<Like selected={selected === "like"} />
18</button>
19
20<button
21on:click={() => {
22selected = "dislike";
23handle_action(selected);
24}}
25aria-label={selected === "dislike" ? "clicked dislike" : "dislike"}
26>
27<Dislike selected={selected === "dislike"} />
28</button>
29
30<style>
31button {
32position: relative;
33top: 0;
34right: 0;
35cursor: pointer;
36color: var(--body-text-color-subdued);
37width: 17px;
38height: 17px;
39margin-right: 5px;
40}
41
42button:hover,
43button:focus {
44color: var(--body-text-color);
45}
46</style>
47