Chuyển tới nội dung chính

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.