- Add drag-to-resize sidebar with localStorage persistence - Rewrite issue detail page with Tiptap rich text editor, due date picker, acceptance criteria - Redesign create-issue modal with pill-based property toolbar and expand/collapse - Consolidate @multica/sdk and @multica/types into apps/web/shared/ - Simplify auth: remove verification codes, PATs, email service (dev-only login) - Add 401 unauthorized handler to redirect expired sessions to login - Fix due date format to send full RFC3339 timestamps - Increase description editor debounce to 1500ms - Remove arbitrary Tailwind values in create-issue modal - Renumber migrations (inbox_actor 012→009), remove unused migrations - UI polish across agents, settings, inbox, knowledge-base pages Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import type { IssuePriority } from "@/shared/types";
|
|
import { PRIORITY_CONFIG } from "@/features/issues/config";
|
|
|
|
export function PriorityIcon({
|
|
priority,
|
|
className = "",
|
|
}: {
|
|
priority: IssuePriority;
|
|
className?: string;
|
|
}) {
|
|
const cfg = PRIORITY_CONFIG[priority];
|
|
|
|
// "none" — simple horizontal dashes
|
|
if (cfg.bars === 0) {
|
|
return (
|
|
<svg
|
|
viewBox="0 0 16 16"
|
|
className={`h-3.5 w-3.5 text-muted-foreground shrink-0 ${className}`}
|
|
fill="none"
|
|
stroke="currentColor"
|
|
strokeWidth="1.5"
|
|
strokeLinecap="round"
|
|
>
|
|
<line x1="3" y1="8" x2="13" y2="8" />
|
|
</svg>
|
|
);
|
|
}
|
|
|
|
const isUrgent = priority === "urgent";
|
|
|
|
return (
|
|
<svg
|
|
viewBox="0 0 16 16"
|
|
className={`h-3.5 w-3.5 ${cfg.color} shrink-0 ${className}`}
|
|
fill="currentColor"
|
|
style={isUrgent ? { animation: "priority-pulse 2s ease-in-out infinite" } : undefined}
|
|
>
|
|
{[0, 1, 2, 3].map((i) => (
|
|
<rect
|
|
key={i}
|
|
x={1 + i * 4}
|
|
width="3"
|
|
rx="0.5"
|
|
style={{
|
|
y: 12 - (i + 1) * 3,
|
|
height: (i + 1) * 3,
|
|
opacity: i < cfg.bars ? 1 : 0.2,
|
|
transition: "y 0.2s ease, height 0.2s ease, opacity 0.2s ease",
|
|
}}
|
|
/>
|
|
))}
|
|
{isUrgent && (
|
|
<style>{`@keyframes priority-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}`}</style>
|
|
)}
|
|
</svg>
|
|
);
|
|
}
|