WebberUI

繁簡切換

繁體/簡體切換開關,內文逐字交叉淡變轉換。

繁體與簡體中文的切換開關:切換鈕上的「簡/简」字樣會跟著變體一起轉換,內文中會變化的字則逐字 stagger 交叉淡變——舊字向上飄出、新字自下方浮入。內建 76 組常用單字對照供示範,可用 table 擴充;生產環境建議串接 opencc-js 等完整轉換庫。

載入預覽⋯

Playground

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

0.02
0.4
<TraditionalSimplifiedToggle />

安裝

npx shadcn@latest add https://webberui.com/r/traditional-simplified-toggle.json

或在 components.json 設定 registries 後,改用 @webberui/traditional-simplified-toggle 安裝。

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

npm install motion clsx tailwind-merge

使用

import { TraditionalSimplifiedToggle } from "@/components/ui/traditional-simplified-toggle";

<TraditionalSimplifiedToggle
  text="我們熱愛繁體中文的美,也理解簡體中文的便利。"
  defaultVariant="traditional"
  onVariantChange={(variant) => console.log(variant)}
  table={{ "鳳": "凤" }}
/>

Props

Prop型別預設值說明
textstring要顯示與轉換的文字,繁體或簡體輸入皆可(內部先正規化為繁體),支援 \n 換行
variantScriptVariant受控模式的當前變體:"traditional""simplified"
defaultVariantScriptVariant"traditional"非受控模式的初始變體
onVariantChange(variant: ScriptVariant) => void變體切換時回呼
tableRecord<string, string>內建 76 組額外的繁→簡對照,與內建表合併(同鍵覆蓋內建)
staggernumber0.02變化字逐字交叉淡變的間隔(秒)
durationnumber0.4單一字交叉淡變的時長(秒)
classNamestring透傳到最外層容器
textClassNamestring透傳到內文段落

可及性

  • 切換鈕為真實 button,以 aria-pressed 標示當前變體,並附 aria-label 說明,可用鍵盤 Tab/Enter 操作
  • 轉換後的完整文字以 sr-only 提供給螢幕閱讀器,逐字動畫的字素對輔助科技隱藏(aria-hidden
  • 使用者系統開啟「減少動態效果」時,切換為即時靜態替換,不播放逐字動畫與膠囊彈跳

On this page