Ark UI + Tailwind v4app/components/ui/ark-selectUnified ControlSize Ready

Ark Select Component

Thành phần hộp chọn lựa (Select) thế hệ mới được xây dựng trên nền tảng @ark-ui/react/select Tailwind CSS v4. Được thiết kế theo contract kích thước chuẩn hóa ControlSize (xs, sm, md, lg), đảm bảo chiều cao, padding, typography và baseline đồng bộ 100% khi đặt cạnh InputButton.

4 kích thước chuẩn hóa (28px / 32px / 36px / 44px)
Hỗ trợ Single / Multiple / Grouping
Tích hợp sâu Remix Hook Form (SelectField)

Bảng so khớp kích thước với Input & Button

Đồng bộ kích thước

Kiểm tra pixel-perfect giữa Input, ArkSelect và Button trên cùng một hàng theo 4 kích thước chuẩn

Nguyên lý đồng bộ: Cả ba thành phần đều sử dụng chung token controlSizeClassNames từ app/components/ui/control-size.ts, kiểm soát đồng thời h-(--control-height), px-(--control-padding-x), gap-(--control-gap) [&_svg]:size-(--control-icon-size).

XSExtra Small (XS)(Phù hợp bảng dữ liệu nén, toolbar nhỏ gọn, tags filter)
Chiều cao: 28pxPadding-X: 10pxIcon: 14px
SMSmall (SM)(Phù hợp sidebar, modal filter, form mật độ dày)
Chiều cao: 32pxPadding-X: 12pxIcon: 16px
MDMedium (MD) - Default(Kích thước tiêu chuẩn cho hầu hết form và trang quản trị)
Chiều cao: 36pxPadding-X: 14pxIcon: 18px
LGLarge (LG)(Phù hợp form đăng nhập, checkout, banner tìm kiếm chính)
Chiều cao: 44pxPadding-X: 16pxIcon: 20px

Playground tương tác thời gian thực

Live Demo

Thử nghiệm toàn diện các trạng thái, thuộc tính và cấu hình của ArkSelect

Cấu hình thuộc tính

Kích thước (size)
Kiểu hiển thị (variant)

Chọn công nghệ phù hợp với kiến trúc dự án

Trạng thái giá trị (Selected State):Single
value: ["react"]

Multiple Selection

Chọn nhiều

Chọn nhiều mục với hiển thị số lượng và danh sách tags đã chọn

Có thể nhấp chọn nhiều mục, bấm lại để hủy chọn

Đã chọn (2):React.jsRemix / React Router

Grouped Items

Phân nhóm

Phân nhóm tùy chọn theo danh mục với ItemGroup và ItemGroupLabel

Giá trị đang chọn: postgres

Tùy biến mục danh sách phong phú (Rich Items)

Rich UI

Hiển thị icon, tiêu đề phụ và badge trạng thái bên trong mỗi mục chọn

Mỗi vai trò đi kèm mô tả quyền hạn cụ thể

Compound Component Pattern

Anatomy

Sử dụng trực tiếp các thành phần nguyên tử khi cần cấu trúc giao diện đặc thù

ArkSelect xuất bản đầy đủ các thành phần compound: ArkSelect.Root, ArkSelect.Trigger, ArkSelect.ValueText, ArkSelect.Indicator, ArkSelect.ClearTrigger, ArkSelect.Positioner, ArkSelect.Content, ArkSelect.Item...

<ArkSelect.Root collection={collection} size="md">
  <ArkSelect.Label>Tiêu đề</ArkSelect.Label>
  <ArkSelect.Control>
    <ArkSelect.Trigger clearable>
      <ArkSelect.ValueText placeholder="Chọn..." />
    </ArkSelect.Trigger>
    <div className="pointer-events-none absolute end-(--control-padding-x) top-1/2 z-1 flex -translate-y-1/2 items-center gap-(--control-gap)">
      <ArkSelect.ClearTrigger className="pointer-events-auto [&_svg]:size-(--control-icon-size)" />
      <ArkSelect.Indicator />
    </div>
  </ArkSelect.Control>
  <ArkSelect.Positioner>
    <ArkSelect.Content>
      {collection.items.map((item) => (
        <ArkSelect.Item key={item.value} item={item}>
          <ArkSelect.ItemText>{item.label}</ArkSelect.ItemText>
          <ArkSelect.ItemIndicator />
        </ArkSelect.Item>
      ))}
    </ArkSelect.Content>
  </ArkSelect.Positioner>
  <ArkSelect.HiddenSelect />
</ArkSelect.Root>

Tích hợp Remix Hook Form (SelectField)

Form Integration

Thành phần SelectField kế thừa ArkSelect, tích hợp tự động với react-hook-form, Field.Root, validation và submit

Chọn vị trí đảm nhận trong dự án
Mức độ thành thạo kỹ thuật
Chọn các công nghệ bạn làm việc thường xuyên
© 2026. FlatVn All rights reserved. Version 4.3.40