diff --git a/frontend/src/components/tasks/TaskLinkPill.tsx b/frontend/src/components/tasks/TaskLinkPill.tsx index 49b988a3..60752708 100644 --- a/frontend/src/components/tasks/TaskLinkPill.tsx +++ b/frontend/src/components/tasks/TaskLinkPill.tsx @@ -41,6 +41,13 @@ const priorityLabels: Record = { critical: "Критический", }; +const priorityTitleShiftClasses: Record = { + low: "group-hover/task-pill:translate-x-10 group-focus-visible/task-pill:translate-x-10", + medium: "group-hover/task-pill:translate-x-12 group-focus-visible/task-pill:translate-x-12", + high: "group-hover/task-pill:translate-x-12 group-focus-visible/task-pill:translate-x-12", + critical: "group-hover/task-pill:translate-x-16 group-focus-visible/task-pill:translate-x-16", +}; + function normalizeHexColor(value?: string | null): string { const color = String(value || "").trim(); if (/^#[0-9a-f]{6}$/i.test(color)) return color; @@ -77,11 +84,10 @@ export default function TaskLinkPill({ const priority = task.priority || "medium"; const priorityColor = priorityColors[priority]; const priorityLabel = task.priority_display || priorityLabels[priority]; + const priorityTitleShiftClass = priorityTitleShiftClasses[priority]; const textColor = getReadableTextColor(columnColor); const isOnAccent = tone === "onAccent"; - const title = `${task.board_name ? `${task.board_name}: ` : ""}${task.title}${ - task.priority_display ? `, ${task.priority_display}` : "" - }`; + const title = `${task.board_name ? `${task.board_name}: ` : ""}${task.title}, ${priorityLabel}`; const style: CSSProperties = { backgroundColor: columnColor, boxShadow: isOnAccent ? "inset 0 1px 0 rgba(255, 255, 255, 0.18)" : undefined, @@ -89,26 +95,29 @@ export default function TaskLinkPill({ }; const href = `/tasks?board=${task.board_id}&task=${task.id}`; const canOpen = task.can_open !== false; - const pillClassName = `group/task-pill inline-flex max-w-full items-center gap-1.5 rounded-full px-2 py-1 text-[11px] font-medium shadow-sm transition ${ + const pillClassName = `group/task-pill inline-flex min-w-0 max-w-full items-center gap-1.5 overflow-hidden rounded-full px-2 py-1 text-[11px] font-medium shadow-sm transition ${ canOpen ? "hover:brightness-110 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/45" : "cursor-pointer hover:brightness-105 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/45" } ${className}`; const content = ( <> -