<template>
    <MkSpacer :content-max="800">
        <MkPagination v-slot="{ items }" ref="list" :pagination="pagination">
            <div
                v-for="item in items"
                :key="item.id"
                :to="`/clips/${item.id}`"
                class="item _panel _gap afdcfbfb"
            >
                <div class="header">
                    <MagAvatar class="avatar" :user="user" />
                    <MkReactionIcon
                        class="reaction"
                        :reaction="item.type"
                        :custom-emojis="item.note.emojis"
                        :no-style="true"
                    />
                    <MkTime :time="item.createdAt" class="createdAt" />
                </div>
                <XNoteResolvingProxy :key="item.id" :note="item.note.id" />
            </div>
        </MkPagination>
    </MkSpacer>
</template>

<script lang="ts" setup>
import { computed } from "vue";
import MkPagination from "@/components/MkPagination.vue";
import XNoteResolvingProxy from "@/components/MagNoteResolvingProxy.vue";
import MkReactionIcon from "@/components/MkReactionIcon.vue";
import { packed } from "magnetar-common";

const props = defineProps<{
    user: packed.PackUserBase;
}>();

const pagination = {
    endpoint: "users/reactions" as const,
    limit: 20,
    params: computed(() => ({
        userId: props.user.id,
    })),
};
</script>

<style lang="scss" scoped>
.afdcfbfb {
    > .header {
        display: flex;
        align-items: center;
        padding: 8px 16px;
        margin-bottom: 8px;
        border-bottom: solid 2px var(--divider);

        > .avatar {
            width: 24px;
            height: 24px;
            margin-right: 8px;
        }

        > .reaction {
            width: 32px;
            height: 32px;
        }

        > .createdAt {
            margin-left: auto;
        }
    }
}
</style>
