Skip to content

Icon

Mọi app Tasco dùng một bộ icon: Tabler Icons qua package @tabler/icons-vue. Nét mảnh đều (stroke 2px), góc bo nhẹ, hợp với font Quicksand. @tasco/ui dùng bộ này cho toolbar của bảng và các drawer, app tạo từ CLI đã cài sẵn.

Dùng trong code

vue
<script setup lang="ts">
import { IconPlus } from '@tabler/icons-vue'
</script>

<template>
  <CButton variant="primary">
    <template #icon>
      <IconPlus :size="16" />
    </template>
    Thêm mới
  </CButton>
</template>
  • Import theo tên (IconPlus, IconTrash…) — bundler chỉ giữ icon thật sự dùng.
  • Tên icon tra ở tabler.io/icons, đổi sang PascalCase và thêm tiền tố Icon: trashIconTrash, arrow-upIconArrowUp.
  • Icon trong menu là render function: icon: () => h(IconHome, { size: 18 }) — xem app.config › tasco.

Cỡ

CỡDùng cho
12pxNút nhỏ bên trong nhãn (✕ của CTag)
16pxIcon đi kèm chữ: trong nút, trong ô nhập, trong danh sách
18pxNút chỉ có icon trên toolbar; icon menu sidebar
20pxNút chỉ có icon trên header của khung app
24px trở lênMinh hoạ trạng thái (rỗng, lỗi)

Giữ stroke mặc định 2px. Không phóng to icon để làm điểm nhấn — dùng màu hoặc vị trí.

Màu

Icon lấy màu chữ của phần tử cha (currentColor), nên tự đổi theo chế độ tối và theo trạng thái hover, disabled của nút. Muốn đổi màu thì đặt color bằng token cho phần tử cha — không truyền mã màu vào prop color của icon.

vue
<span style="color: var(--tasco-color-success-text)">
  <IconCircleCheck :size="16" /> Đã duyệt
</span>

Icon theo hành động

Cùng hành động thì cùng icon trong mọi app. Nhóm đang dùng là icon component của core đã dùng — giữ nguyên khi làm màn hình mới. Nhóm khuyến nghị chưa có trong component nhưng nên dùng thống nhất.

Hành độngIconNhóm
Thêm mớiIconPlusĐang dùng (CTable)
Tìm kiếmIconSearchĐang dùng
LọcIconFilterĐang dùng
Xuất dữ liệuIconDownloadĐang dùng
Tải lạiIconReloadĐang dùng
Thiết lậpIconSettingsĐang dùng
Kéo để sắp xếpIconGripVerticalĐang dùng
Chuyển lên / xuốngIconArrowUp / IconArrowDownĐang dùng
Đóng, bỏIconXĐang dùng (CTag)
Trang chủIconHomeĐang dùng (template CLI)
SửaIconPencilKhuyến nghị
XoáIconTrashKhuyến nghị
Xem chi tiếtIconEyeKhuyến nghị
Nhập từ fileIconUploadKhuyến nghị
InIconPrinterKhuyến nghị
Sao chépIconCopyKhuyến nghị
Thêm thao tácIconDotsKhuyến nghị
Quay lạiIconArrowLeftKhuyến nghị

Icon có cần chữ đi kèm không

  • Có chữ là mặc định. Người dùng mới hiểu ngay, trình đọc màn hình đọc được nhãn.
  • Chỉ icon khi hành động quen thuộc, lặp lại nhiều, chỗ hẹp — toolbar bảng, cột thao tác. Khi đó bắt buộc có aria-label và tooltip cùng nội dung.
  • Không dùng icon cho hành động phá huỷ mà không có chữ, trừ trong cột thao tác đã có hộp thoại xác nhận.

Không nên

  • Thêm bộ icon thứ hai (Font Awesome, Material, @ant-design/icons-vue) — hai phong cách nét vẽ trên cùng màn hình.
  • Dùng emoji thay icon.
  • Tự vẽ SVG cho thứ đã có trong Tabler. SVG riêng chỉ cho logo và hình minh hoạ.
  • Dùng một icon cho hai hành động khác nhau, hoặc hai icon cho cùng một hành động.

Liên quan