Skies.ui
元件 (Components)

Modal 對話框

Skies.ui Modal:原生 dialog/showModal、backdrop、標題與 aria、底部操作;模態視窗範例。

Modal 對話框

Modal 以原生 <dialog>showModal() 實作(非 Radix):ModalTrigger 開啟,ModalContent 內須含 ModalTitle(無障礙 aria-labelledby)、可選 ModalDescriptionaria-describedby),以及 ModalHeader / ModalFooter 版面輔助。關閉可用 ModalClose(可 asChildButton)、點 backdrop、或 Esc

預設用法

確認操作

這則說明會帶入 aria-describedby,螢幕閱讀器可讀取。

import {
  Button,
  Modal,
  ModalClose,
  ModalContent,
  ModalDescription,
  ModalFooter,
  ModalHeader,
  ModalTitle,
  ModalTrigger,
} from "@skies-ui/ui";

export function Example() {
  return (
    <Modal>
      <ModalTrigger asChild>
        <Button variant="outline">開啟</Button>
      </ModalTrigger>
      <ModalContent>
        <ModalHeader>
          <ModalTitle>標題</ModalTitle>
          <ModalDescription>說明文字</ModalDescription>
        </ModalHeader>
        <ModalFooter>
          <ModalClose asChild>
            <Button type="button" variant="outline">
              取消
            </Button>
          </ModalClose>
          <ModalClose asChild>
            <Button type="button">確認</Button>
          </ModalClose>
        </ModalFooter>
      </ModalContent>
    </Modal>
  );
}

受控開關

使用 openonOpenChange 由外部狀態控制(例如 URL 或 store)。

與表單

可在 ModalContent 內放 Input / Textarea 等;送出後呼叫 onOpenChange(false) 或包在 ModalClose 的按鈕上關閉。

API 摘要

元件說明
Modal根;open / defaultOpen / onOpenChange
ModalTrigger開啟;常用 asChildButton
ModalContent原生 <dialog>;樣式含 [&::backdrop]:…
ModalTitle必填,且須放在 ModalContent 內以綁定 id
ModalDescription選用;同樣須在 ModalContent
ModalHeader / ModalFooter純版面 div
ModalClose關閉;可 asChild

全組為 Client Component("use client")。若需與 Radix Dialog 完全相同的行為細節,可日後改為 Radix 實作。

On this page