Skip to content

Component

Component ui/ viết theo phong cách shadcn: hàm thuần, data-slot, biến thể qua class-variance-authority, primitive lấy từ gói radix-ui.

Đang có trong Compass

ComponentGhi chú
ButtonSao chép nguyên bản từ conan1.com. Biến thể: default, outline, secondary, ghost, destructive, link.
CardCard, CardHeader, CardTitle, CardDescription, CardContent, CardFooter.
BadgeBiến thể default, outline, muted, accent.
Input, Textarea, LabelDùng chung một lớp field.
SelectBọc radix-ui Select.
DialogBọc radix-ui Dialog, có nút đóng và animation vào/ra.
TooltipBọc radix-ui Tooltip; TooltipProvider đặt ở main.tsx.

Component riêng của Compass

ComponentVai trò
ScoreChipMột điểm 1–5, tô màu theo hướng của thang.
RiskChipĐiểm rủi ro, tooltip luôn hiện đủ ba nguyên nhân.
GapChipM2 → M4 +2.
ScopeSelectorChuyển giữa Enterprise và từng Brand.
LangSwitch, ThemeToggleGóc trên bên phải.
CapabilityDialogThêm/sửa năng lực chuẩn (chỉ Enterprise Architect).
AssessmentDialogĐánh giá năng lực của một Brand.
RecordDialogMột form duy nhất cho mọi bản ghi tầng thực thi; nhận danh sách Field thay vì mỗi trang tự viết dialog.
ProcessCardQuy trình kèm hoạt động, dùng ở cả trang Quy trình lẫn chi tiết năng lực.
CapabilityRelationsQuy trình · dữ liệu · ứng dụng · công nghệ · KPI · sáng kiến của một năng lực.

Animation

Dùng motion/react, chỉ ở mức nhẹ:

  • Chuyển trang: opacity + y: 6px, 180ms.
  • Danh sách/thẻ: fade-in so le, độ trễ tối đa 0.24s.
  • Không dùng animation cho nội dung mà người dùng cần đọc ngay.

Dùng enter(index)pageTransition() từ src/lib/motion.ts thay vì viết initial/animate/transition trực tiếp — hai hàm này tự bỏ animation khi tab đang ẩn, tránh việc nội dung kẹt ở opacity: 0.