Constants (@vppos/core/constants)
import { STORAGE_KEYS, MODULE_KEYS, ROLES } from "@vppos/core/constants";
STORAGE_KEYS
Keys cho localStorage/sessionStorage. Luôn dùng constant này — không hard-code string.
// ✅ Đúng
localStorage.getItem(STORAGE_KEYS.token);
// ❌ Sai
localStorage.getItem("access_token");
MODULE_KEYS
Keys cho module permission (match với backend). Cấu trúc nested — IDE tự gợi ý:
// Nested — IDE auto-complete từng cấp
MODULE_KEYS.DASHBOARD.ROOT; // "dashboard"
MODULE_KEYS.DASHBOARD.OVERVIEW; // "dashboard.overview"
MODULE_KEYS.INVENTORY.ROOT; // "inventory"
MODULE_KEYS.INVENTORY.PRODUCTS.ROOT; // "inventory.products"
MODULE_KEYS.INVENTORY.PRODUCTS.CATEGORY; // "inventory.products.category"
MODULE_KEYS.INVENTORY.WAREHOUSE.ROOT; // "inventory.warehouse"
MODULE_KEYS.INVENTORY.WAREHOUSE.STOCK; // "inventory.warehouse.stock"
MODULE_KEYS.ANALYTICS.SALES.ROOT; // "analytics.sales"
MODULE_KEYS.ANALYTICS.SALES.REVENUE; // "analytics.sales.revenue"
MODULE_KEYS.ROLE_PERMISSION.MANAGEMENT; // "role_permission.management"
MODULE_KEYS.ROLE_PERMISSION.BRANCH_STORE; // "role_permission.branch_store"
MODULE_KEYS.PARTNER.ROOT; // "partner"
MODULE_KEYS.ACCOUNTING.TAX_DECLARATION.ROOT; // "accounting.tax_declaration"
MODULE_KEYS.E_SIGNATURE.DOCUMENTS; // "e_signature.documents"
Type-safe
ModuleKey union type tự sinh từ MODULE_KEYS — khi thêm key mới, type tự cập nhật. Không cần maintain type riêng.
ROLES
User roles:
ROLES.SUPER_ADMIN; // "superadmin"
ROLES.ADMIN; // "admin"
ROLES.USER; // "user"
IMAGES
Hằng số quản lý toàn bộ assets (ảnh, icon) của hệ thống. Không sử dụng URL từ xa (https://...) cho các ảnh hệ thống.
import { IMAGES } from "@vppos/core/constants";
// ✅ Ảnh dùng chung từ Core
<img src={IMAGES.SYSTEM.UNDER_DEVELOPMENT} />
<img src={IMAGES.SYSTEM.ERROR_404} />
// ✅ Ảnh fallback mặc định khi data API bị thiếu
<Avatar src={user.avatar || IMAGES.DEFAULT.AVATAR} />
<Avatar src={company.logo || IMAGES.DEFAULT.COMPANY} />
Các phân cấp chính:
DEFAULT: Các ảnh fallback/placeholder (Avatar, Company, General Fallback).BRAND: Core identity (Logo các ngân hàng, Favicon...).SYSTEM: UI assets dùng chung (OTP, 404, Zalo, Flags...).
thông tin
Nếu là ảnh riêng của một module cụ thể (ví dụ: ảnh minh họa tính năng), hãy đặt tại apps/<module>/src/assets và import tĩnh vào component.
Quy tắc
cảnh báo
Nếu cần thêm constant mới dùng chung → thêm vào @vppos/core/constants, không tự tạo trong app.