WebberUI

FAQ 手風琴區塊

含即時搜尋過濾與分類籤的常見問題手風琴區塊。

完整的常見問題區塊:頂部搜尋框即時過濾並高亮命中關鍵字,分類籤的選中底塊以 spring 流動切換,問題以高度動畫展開收合、箭頭同步旋轉,搜尋無結果時顯示空狀態,適合直接放進行銷頁或說明中心。

載入預覽⋯

Playground

即時調整 props、程式碼片段同步更新——直接試出你要的樣子再複製。

0
<FaqAccordionSection />

安裝

npx shadcn@latest add https://webberui.com/r/faq-accordion-section.json

或在 components.json 設定 registries 後,改用 @webberui/faq-accordion-section 安裝。

安裝依賴後,從 registry JSON(/r/faq-accordion-section.jsonfiles[0].content)複製 faq-accordion-section.tsx 原始碼到你的 components/ui/ 目錄:

npm install motion lucide-react clsx tailwind-merge

使用

import { FaqAccordionSection } from "@/components/ui/faq-accordion-section";

<FaqAccordionSection
  title="常見問題"
  subtitle="找不到答案?歡迎聯絡客服"
  items={[
    {
      category: "方案與計費",
      question: "可以隨時取消訂閱嗎?",
      answer: "可以,取消後仍可使用至當期結束。",
    },
    {
      category: "帳戶",
      question: "忘記密碼該怎麼辦?",
      answer: "在登入頁點選「忘記密碼」,重設連結會寄到你的信箱。",
    },
  ]}
/>

Props

Prop型別預設值說明
itemsFaqItem[]FAQ 項目資料,每項含 questionanswer 與選填 category
titlestring"常見問題"區塊主標題
subtitlestring主標題下方的副標說明文字
searchPlaceholderstring"搜尋問題關鍵字…"搜尋框的提示文字
showCategoriesbooleantrue是否顯示分類籤列(分類自 items 自動收集)
allLabelstring"全部"「全部」分類籤的顯示文字
emptyTextstring"找不到符合的問題,換個關鍵字試試"搜尋無結果時的空狀態文字
defaultOpenIndexnumber0預設展開的項目索引(對應 items 原始順序),-1 表示全部收合
classNamestring透傳到最外層 <section> 容器

可及性

  • 每個問題按鈕帶 aria-expandedaria-controls,答案面板以 role="region"aria-labelledby 關聯,輔助科技可正確朗讀展開狀態
  • 分類籤為原生 <button> 並以 aria-pressed 標示選中狀態,可完整鍵盤操作
  • 搜尋結果數量透過 aria-live="polite" 區域即時播報,無結果時播報空狀態文字
  • 使用者系統開啟「減少動態效果」時,展開收合、分類底塊與列表進出場動畫全部改為直接切換

On this page