import { useDroppable } from "@dnd-kit/core"; import { horizontalListSortingStrategy, SortableContext, } from "@dnd-kit/sortable"; import clsx from "clsx"; import { ChevronDown, ChevronUp, Trash } from "lucide-react"; import { useLayoutEffect, useRef } from "react"; import { Button } from "react-aria-components"; import { useTranslation } from "react-i18next"; import { SendouButton } from "~/components/elements/Button"; import { SendouPopover } from "~/components/elements/Popover"; import { useTierListState } from "../contexts/TierListContext"; import { PRESET_COLORS, TIER_NAME_FONT_SIZE_BREAKPOINTS, TIER_NAME_FONT_SIZE_MIN, TIER_NAME_MAX_LENGTH, } from "../tier-list-maker-constants"; import type { TierListMakerTier } from "../tier-list-maker-schemas"; import { tierListItemId } from "../tier-list-maker-utils"; import { DraggableItem } from "./DraggableItem"; import styles from "./TierRow.module.css"; interface TierRowProps { tier: TierListMakerTier; } export function TierRow({ tier }: TierRowProps) { const { state, activeItem, getItemsInTier, handleRemoveTier, handleRenameTier, handleChangeTierColor, handleMoveTierUp, handleMoveTierDown, showTierHeaders, screenshotMode, } = useTierListState(); const items = getItemsInTier(tier.id); const { t } = useTranslation(["tier-list-maker", "common"]); const { setNodeRef, isOver } = useDroppable({ id: tier.id, }); const combinedRef = useLockedHeightWhileDragging({ setNodeRef, isDragging: activeItem !== null, }); const tierIndex = state.tiers.findIndex((t) => t.id === tier.id); const isFirstTier = tierIndex === 0; const isLastTier = tierIndex === state.tiers.length - 1; return (