Thành phần (components)

Tất cả nằm trong components/components.css, tiền tố .ds-. Kích thước tự đổi theo data-platform.

Nguồn: chuyển từ design/docs/03-thanh-phan.md ngày 2026-11-11.

Danh mục

ComponentClassDùng khiLưu ý
Nút chính.ds-btn--primaryCTA chính: Chơi ngay, Nhận quà1 nút/màn. Gradient cam
Nút bit.ds-btn--primary.ds-btn--bitCTA nổi bật nhất của game (Quay!, Bắt đầu)Nghiêng 13°, bọc chữ trong <span>
Nút phụ.ds-btn--secondaryHành động phụ quan trọng (Xem quà)Xanh #0047BB
Nút viền.ds-btn--outlineThể lệ, Chơi lại
Nút chữ.ds-btn--ghostBỏ qua, Huỷ
Nút trên nền cam.ds-btn--inverseCTA đặt trên hero/ảnh camNền trắng chữ cam đậm
Cỡ nút--sm --lg --block --icon
Section tag.ds-tag > __num + __labelTiêu đề bước: [01] Đăng kýMotif tiêu đề của brand book
Badge.ds-badge (+ --blue --lime --pink --soft --dark)MỚI, HOT, x2Nghiêng 13°, chữ hoa
Chip.ds-chipLọc, chọn đáp ánaria-pressed="true" khi chọn
Card.ds-card (+ --brand --subtle --interactive)Danh sách game, quàThêm .ds-corner để có corner shape
Input.ds-field > .ds-inputForm thu leadChữ ≥ 16px để iOS không zoom
OTP.ds-otpXác thực SĐT6 ô
Checkbox.ds-checkĐồng ý điều khoảnKhông tick sẵn
HUD.ds-hud > .ds-statThanh điểm/giờ/mạng trên màn chơi.ds-stat--warn khi < 5 giây
Điểm.ds-scoreĐiểm lớn ở màn kết quảSố tabular
Đồng hồ vòng.ds-timer style --p:0–100Đếm ngược
Tiến độ.ds-progress (--v) / .ds-bitsTiến độ màn, câu hỏi.ds-bits là chuỗi bit nghiêng
Lượt chơi.ds-turns"Còn 3 lượt"
Voucher.ds-voucherThẻ quà, mã giảm giáCó lỗ khuyết 2 cạnh
Kết quả.ds-result--win / --loseMàn trúng / chưa trúngCụm bit xoay nền
Modal.ds-overlay > .ds-modalXác nhận, kết quảKiosk tự to 880px
Bottom sheet.ds-sheetThể lệ, chọn quà (mobile)Tự cộng safe area
Toast.ds-toast (+ --success --error)Thông báo ngắnTự ẩn 3 giây
Bảng xếp hạng.ds-rank > .ds-rank__row (--1 --2 --3 --me)LeaderboardTop 1 cam, 2 xanh, 3 lime
App bar.ds-appbarHeader webTự ẩn ở app, zalo
Loader.ds-loader (9 <i>)Đang tảiHình chữ X bit-dot nhấp nháy
Layout.ds-screen .ds-container .ds-stack .ds-row .ds-safe-bottom-barKhung màn hình
Nền.ds-bg-brand .ds-bg-patternNền gradient / pattern bit mờ

Mẫu HTML

CTA nút bit

<button class="ds-btn ds-btn--primary ds-btn--bit ds-btn--lg"><span>Quay ngay</span></button>

Form thu lead

<form class="ds-stack">
  <div class="ds-field">
    <label class="ds-field__label" for="phone">Số điện thoại</label>
    <input class="ds-input" id="phone" type="tel" inputmode="numeric" autocomplete="tel" placeholder="09xx xxx xxx">
    <span class="ds-field__hint">Dùng để nhận mã quà qua SMS</span>
  </div>
  <label class="ds-check"><input type="checkbox" required>
    <span>Tôi đồng ý để FPT Telecom xử lý dữ liệu theo <a class="ds-link" href="#">Chính sách</a></span></label>
  <button class="ds-btn ds-btn--primary ds-btn--block">Nhận lượt chơi</button>
</form>

HUD

<div class="ds-hud">
  <span class="ds-stat"><span class="ds-stat__icon">★</span>1.250</span>
  <div class="ds-timer" style="--p:62"><span>18</span></div>
  <div class="ds-bits"><i class="on"></i><i class="on"></i><i></i></div>
</div>

Voucher

<div class="ds-voucher">
  <div class="ds-voucher__value">-50%</div>
  <div class="ds-voucher__body">
    <strong>Giảm 50% tháng đầu</strong>
    <span class="ds-caption">Internet FPT · HSD 31/12/2026</span>
    <span class="ds-voucher__code">FPT50XMAS</span>
  </div>
</div>

Trạng thái bắt buộc mỗi component tương tác

Trạng tháiCách thể hiện
Mặc địnhNhư trên
Nhấnscale(.96) 120ms
Focus bàn phímViền xanh #3755DF 3px
DisabledNền xám #E3E3E3, chữ #8A8A8A, không bóng
Đang tảiThay nội dung nút bằng .ds-loader, giữ nguyên kích thước
LỗiViền + chữ đỏ #D92D20, mô tả cách sửa

Lịch sử thay đổi

BảnNgàyNgười sửaNội dung
1.02026-11-11DesignerChuyển từ Markdown sang HTML