跳至主內容
Mimosa

Design system · v16 Psychedelic

用 Design Tokens 與元件規範,建立一致的 UI 系統。

本站展示 Mimosa 的色彩、字體、版面與元件樣式,並提供對應的 Design System 文件與使用範例。

整體文件設計參考一些當代前端 UI 設計系統,並在其上添加 Mimosa 的 Psychedelic 視覺設計語彙。

Quick start 快速開始 npm
npm install mimosa-design-system tailwindcss

import "mimosa-design-system/tailwind.css";

Design Tokens 總覽

元件樣式、風格展示與使用規範,可透過側邊目錄快速切換各區塊內容。

安裝與使用

Mimosa 可直接透過 npm 安裝,並於 Tailwind v4 專案中載入使用。

npm install mimosa-design-system tailwindcss

建議使用方式

import "mimosa-design-system/tailwind.css";

包含:

  • Design Tokens
  • Tailwind layer
  • Mimosa 元件樣式

其他載入方式

// 僅載入 Design Tokens
import "mimosa-design-system/tokens.css";

<!-- GitHub Pages / 靜態網站 -->
<link rel="stylesheet" href="./dist/mimosa.css" />

色彩 · Color tokens

Mimosa 的 Color Tokens 依照介面用途分類,包含 Primary、Background、Secondary 與 State Colors。
色彩系統以 Semantic Tokens 為主,避免在元件中直接使用 Primitive Colors。

Primary Colors

Primary Colors 用於品牌主色、深色背景與主要介面元素。

元件樣式會優先使用 Semantic Tokens,以維持整體色彩一致性。

base --psy-color-base
white --psy-color-white
primary-darkest --psy-color-primary-darkest
primary-darker --psy-color-primary-darker
primary --psy-color-primary
primary-light --psy-color-primary-light
on-dark --psy-color-primary-on-dark
on-dark-muted --psy-color-primary-on-dark-muted

Secondary colors

對應 NASA「輔助/強調色」:用於按鈕、導覽漸層、標籤等;應節制使用,避免同一視野多個同等強度焦點。

amber --psy-color-secondary-amber
lime --psy-color-secondary-lime
magenta --psy-color-secondary-magenta
orange --psy-color-secondary-orange

Background colors

大面積區塊與半透明洗色;相鄰區塊須維持可辨的對比(參考 NASA background 段落)。

page top --psy-color-bg-page-top
page bottom --psy-color-bg-page-bottom
panel --psy-color-bg-panel
panel muted --psy-color-bg-panel-muted
wash neutral --psy-color-bg-wash-neutral
wash orange --psy-color-bg-wash-orange
wash lime --psy-color-bg-wash-lime
wash magenta --psy-color-bg-wash-magenta

Tertiary colors

對應 NASA tertiary:列表列、次要資訊區,不應壓過 Primary/Secondary 層級。

city row --psy-color-tertiary-row-city
feed 1 --psy-color-tertiary-row-feed-1
feed 2 --psy-color-tertiary-row-feed-2
feed 3 --psy-color-tertiary-row-feed-3

Special state colors

對應 NASA Special state colors:焦點環、造訪過連結、互動遮罩。

focus --psy-color-focus
visited --psy-color-visited
hover overlay --psy-color-hover-overlay
active overlay --psy-color-active-overlay

Semantic Tokens(介面語意)

Mimosa 在 Color Tokens 之上,額外建立一層 Semantic Tokens。

例如:

--psy-color-secondary-lime

代表品牌識別的色彩定義;而:

--psy-action-primary-bg

代表元件的介面語意。

這樣未來調整品牌色彩時,只需要修改 Color Tokens,既有元件的介面語意仍可維持一致。

以下為常用對照:

介面語意 Token 主要引用
頁面上/下背景 --psy-surface-page-basedeep --psy-color-bg-page-topbottom(漸層最底偏黑,小元件勿單用 deep)
深底區塊(kicker/hero) --psy-surface-on-darkelevated primary-darkerprimary 約 26%;配 .psy-kicker-on-dark
卡片/列表列底 --psy-surface-container-lowestlowcontainerhighhighest 同頁面用「低/中/高」分層;其中 low 使用 color-mix(in srgb, #676278 88%, var(--psy-color-bg-panel-muted)) 作為過渡層
流程型內容卡片 --psy-surface-container(預設) 同一流程步驟(如 01~04)維持同層;僅警示/危險區塊(如刪除)使用語意強化底色
Epic 主標題區(Hero) --psy-surface-hero-epic 所有 Epic 分頁(account/event/pair/chat/security/admin/game/coin)主標題區統一使用此底色,避免跨頁語意不一致
活動列表列底色(Event list item) --psy-surface-event-list-item 活動系統頁的列表列使用固定底色 #f6b07f,確保事件資訊列與一般卡片底有明顯區隔
活動狀態標記(US-009) --psy-status-going-*--psy-status-interested-*--psy-status-clear-* Going / Interested / 取消標記需使用獨立語意色,不可共用單一預設 chip 樣式
聊天列表列(display vs controls) --psy-surface-chat-room-item--psy-surface-chat-push-item 聊天室列表屬 display/notice;推播通知屬可設定 controls,需使用不同底色與可操作元素(如 pill/switch)區分語意
聊天訊息氣泡(Outgoing) --psy-surface-chat-bubble-outgoing 發送方訊息氣泡使用固定底色 #f39f9f,需與 incoming 氣泡有清楚區隔
代幣商店一般清單列底色 --psy-surface-coin-list-item 代幣商店的說明/流程清單列使用固定底色 #fdfdfd,與可購買方案列做視覺區分
管理處置按鈕語意 --psy-action-warning-*--psy-action-restrict-*--psy-action-success-*--psy-action-info-*--psy-action-neutral-* 管理後台需按風險層級分色:danger=不可逆處置、warning=警示、restrict=暫時禁聊(#ae3d3d)、success=恢復、info=標記狀態(#e7de5f)、neutral=解除限制
內文 --psy-text-primary --psy-color-primary-on-dark
邊框/硬陰影 --psy-border-strong --psy-color-base
主要/次要行為底色 --psy-action-primary-bg 主要:--psy-color-secondary-lime;次要:--psy-color-secondary-amber
造訪過連結 --psy-text-link-visited --psy-color-visited
提示區塊(Alerts) --psy-alert-success-bg 萊姆/琥珀/洋紅/橘 + panel 混色
表單欄位(Form controls) --psy-form-input-bg--psy-form-input-border 深底欄位底與字色;錯誤/成功外框沿用 --psy-alert-error-accentsuccess

Primitive 原料(底層 hex)

僅在此層維護色值;調色時改 primitive,上層 --psy-color-* 與語意 token 會一併連動。

#16001e --psy-primitive-void
#18002d --psy-primitive-deep-base
#2a0146 --psy-primitive-deep-purple
#5c1578 --psy-primitive-panel
#772589 --psy-primitive-panel-soft
#fff6ff --psy-primitive-text
#fff2f9 --psy-primitive-text-muted
#ffcc00 --psy-primitive-amber
#ccff00 --psy-primitive-lime
#ff3399 --psy-primitive-magenta
#ff6600 --psy-primitive-orange
#f5faf0 --psy-primitive-surface-soft-mint
--psy-primitive-notification-unread-bg · 淺綠
--psy-primitive-notification-older-bg · 淺橘
#ffffff --psy-primitive-white

語意漸層(Semantic gradients)

導覽、hero、面板洗色、日期塊與頭像等區塊用;數值定義於 tokens.css基本卡片.card)用 --psy-gradient-card-surface + 淡紫 --psy-surface-card--psy-gradient-card-wash(洋紅/橘色)僅供 mega menu、上傳區等裝飾。 Carousel 投影片請用 --psy-carousel-slide-bg#f5faf0),勿疊 card-wash。 通知面板列底色用 --psy-notification-*(淺綠/中性/淺橘),勿用 card-wash 或 cyan/洋紅底。

--psy-gradient-nav
--psy-gradient-hero-panel
--psy-gradient-panel-wash + panel
--psy-gradient-date-block
--psy-gradient-avatar

Text accessibility

對齊 NASA 文件 Text accessibility 段落:內文與可點擊元件應維持足夠對比;下列為本主題預設的「前景/背景」組合 token,自訂時請以對比工具複驗。

用途 Token
深紫底上的主內文 --psy-a11y-fg-default-on-page
深紫底上的次要內文 --psy-a11y-fg-muted-on-page
淺色卡片/表格/手風琴上的主內文 --psy-a11y-fg-default-on-card(同 --psy-text-on-light
淺色卡片上的次要內文 --psy-a11y-fg-muted-on-card(同 --psy-text-muted-on-light
提示列(Alert)主/次內文 --psy-a11y-fg-on-alert--psy-a11y-fg-muted-on-alert
提示列圖示(依 success/warning 等) --psy-alert-*-icon-bg + --psy-alert-*-icon-fg
淺底 kicker/eyebrow --psy-a11y-fg-kicker-on-light
深紫底 kicker --psy-a11y-fg-kicker-on-dark(螢光萊姆,僅深底)
螢光/淺飽和底上的字 --psy-a11y-fg-on-accent(同 --psy-text-on-dark
實作備註

WCAG 建議一般內文對比至少約 4.5:1。鍵盤焦點請使用 :focus-visible--psy-color-focus--psy-focus-ring-*。造訪過連結使用 --psy-text-link-visited。設計系統文件頁使用中性 --ds-doc-*,與產品 token 分離。

字體與字階 · Typography

目標是建立「可讀、可掃描、可維護」的排版系統。字族沿用現有 Psychedelic 主題(Display:Baloo 2;Body/UI:Noto Sans TC), 並吸收 NASA Typography 的類型分工、line length 與 vertical rhythm 概念。

字體家族 · Typefaces

Baloo 2

用於 display / heading / CTA,傳達節奏感與記憶點。

Aa 123

Noto Sans TC

用於段落、導航、表單與說明,優先可讀性與多語穩定性。

Aa 123 這是一段介面內文示例。

字階層級 · Hierarchy

Kicker 在淺底請用 .psy-kicker;深紫區塊用 .psy-kicker-on-dark + 底 --psy-surface-on-dark(標準深紫,勿用 page-deep 近黑紫)。勿在淺底卡片上直接用 --psy-kicker-text

Display · --psy-font-size-display
Events, taste, discovery.
H2 · --psy-font-size-h2
Featured events
H3 · --psy-font-size-h3
Warehouse Resonance
Subtitle · --psy-font-size-subtitle

延續硬派卡片分區,螢光色塊拼貼與深紫層次並存。

Body · --psy-font-size-body

內文段落:活動地點、簡短描述、列表次要資訊。

Kicker · --psy-font-size-small + letter-spacing

PSYCHEDELIC PALETTE / NEO-BRUTALISM BLOCKS

Caption · --psy-font-size-caption

MAY · 11px 範例

Button 字級 / Brand
Browse events BassLink

排版節奏 · Typesetting & Vertical rhythm

內文容器建議控制在 66ch(NASA 建議 50–75 字元)。標題/段落採固定節奏間距,減少頁面密度跳動。

段落對齊:預設左對齊

可讀性優先。長文請維持一致起點,讓眼睛能快速回到下一行。若是說明型內容,避免過窄欄寬造成換行噪音,也避免過寬欄造成視線迷航。

行長建議:50–75 字元(理想約 66)

這段文字示範 `max-width: 66ch` 的閱讀節奏。當內容較長時,行長與行高會直接影響理解效率;適當白空間可降低閱讀疲勞。

建議:長文段落以 `line-height` 1.6–1.8,短訊息可略緊。

Vertical rhythm 準則(設計語言)

參考近期排版實務:網站不必硬套 baseline grid;優先使用可重複的 spacing scale,並依內容型態使用不同節奏。

  • 原則 1:以間距尺度為主,不迷信 baseline。 baseline grid 能幫助對齊,但不會自動帶來和諧;真正的節奏來自對比、層級與重複距離。
  • 原則 2:雙尺度策略。 本專案使用同一 token 系統下的雙節奏:內容閱讀節奏(長文區塊,偏寬鬆)與 介面模組節奏(卡片/表單,偏緊湊)。
  • 原則 3:長文以行高倍數建立 rhythm。 內文行高為 1.5 時,段落與小節間距優先採 1x / 1.5x / 2x line-height 對應值,避免任意像素。
  • 原則 4:UI 元件採 8pt/4pt 軟格線。 模組高度與內距優先落在 4/8/12/16/24/32 類型級距;允許例外,但需能對應既有 token。
  • 原則 5:跨平台容忍測量差異。 Web 以 line-height 為自然度量;若與原生 baseline 略有誤差,以可維護一致性優先,不做脆弱微調。

建議檢核:同層級區塊是否使用同一組垂直間距?長文段落是否維持 66ch 與穩定行高?文字是否能放大至 200% 仍保持節奏?

實作 · Product classes

產品頁可使用 prose-content(66ch 內容寬度)與 rhythm-stack(垂直節奏容器)。清單請用 ul.psy-list(萊姆方塊 ::before)/ol.psy-list--ordered(琥珀編號徽章);每列 li 請包 <span class="psy-list__text">,以 grid 分欄(::before 第 1 欄、內文第 2 欄);欄間距為 --psy-list-*-marker-gap + --psy-list-marker-trail(陰影/粗框外溢)。勿用 absolute 壓字。勿裸用 ulol。連結狀態沿用 --psy-text-link-*;深底內容區可搭配 link-on-dark。長文區優先採閱讀節奏(line-height 倍數); 卡片/表單區優先採 token 尺度(4/8pt 家族)。

按鈕 · Buttons

用按鈕標示可執行的動作。版面與狀態矩陣對齊 NASA Web Design System — Buttons;樣式使用本主題 token(--psy-button-*--psy-focus-ring-*)。**主要行為色為萊姆綠**(綠燈/確認、good to go),**次要為琥珀黃**。下方 ds-btn--demo-* 僅供文件靜態預覽,實際互動仍以 :hover:active:focus-visible 為準。

主要按鈕 · Primary(萊姆綠)

預設、懸停、按下、焦點、停用。焦點列為示意 class,實際請以鍵盤聚焦真實按鈕驗證。

Default

Hover

Active

Focus

Disabled

次要按鈕 · Secondary(琥珀黃)

同一頁面上的次要行為(對齊 NASA:primary 帶往下一步、secondary 留在當前脈絡)。

Default

Hover

Active

Focus

Disabled

深底上的按鈕 · On dark

對齊 NASA「Buttons on a dark background」:在產品紫底上使用線框反色變體(.ds-btn--inverse),避免與螢光填色按鈕搶眼。 實作時亦可沿用填色 primary/secondary,須注意對比。

Default

Hover

Active

Focus

Disabled

大尺寸按鈕 · Big

對齊 NASA big button:全頁唯一或最優先行為時可加 .ds-btn--lg.psy-btn--lg

實作說明 · Implementation

範例以 <button> 為主;若為連結套用按鈕外觀,可加上與按鈕相同的 class(對齊 NASA:在 <a> 上使用相同 class)。請載入 tailwind.css,元件使用 .psy-btn.psy-brutal.psy-btn--primary;文件示例另加 ds-btnds-btn--demo-* 補足靜態狀態展示。

<button type="button" class="psy-brutal psy-btn psy-btn--primary">送出/確認</button>
<button type="button" class="psy-brutal psy-btn psy-btn--danger">刪除</button>
<button type="button" class="psy-brutal psy-btn">取消</button>
<a href="/path" class="psy-brutal psy-btn psy-btn--primary">連結長得像按鈕</a>

可訪問性 · Accessibility

節錄並中譯 NASA Buttons 文件要點。

  • 使用者以 Tab 聚焦時,按鈕須有可見的焦點狀態(本主題::focus-visible + lime ring)。
  • 勿用 <div> 或純圖片冒充按鈕;螢幕閱讀器未必能辨識為可操作控制項。
  • 連結做成按鈕外觀時,記住:空白鍵觸發按鈕、Enter 觸發連結,行為與公告應一致。
  • 按鈕群組需補償硬陰影高度(8px)設定垂直間距,避免多排按鈕或上下群組互相遮擋。
  • 按鈕群組若後接一般文字或清單(如狀態紀錄),需額外保留 base spacing + 8px 的底部間距,避免陰影壓到下一段內容。

可用性 · Usability

節錄 NASA「When to use / When to consider something else」。

適合使用按鈕

  • 全頁或區塊內最重要的動作(下載、註冊、送出等)。
  • 主要行為與次要行為並列時,以樣式區分(primary / secondary / inverse)。
  • 狀態切換型操作(如 Going / Interested / 取消標記)需用語意化 status chips,並明確區分 selected / default。
  • 管理後台同列處置按鈕不得僅有單一 danger;需依風險等級採用 warning/restrict/success/info/neutral/danger 分層,且警示與暫時禁聊不可同色。

可改用連結

  • 主要目的是帶使用者到另一頁、而非提交或觸發同一頁行為時。
  • 次要、低優先動作可做成文字連結,避免滿版按鈕。

用字

  • 標籤盡量短,採句首大寫或句子大小寫一致慣例;以動詞開頭(例如「瀏覽活動」而非冗長名詞片語)。
  • 同一視野避免過多顆按鈕,以免層級不清。

卡片 · Cards

將儀表板、設定頁或表單拆成較小的內容區塊。結構對齊 Tailwind UI — Cards: 外層 .card 負責 flex 欄式版面與 overflow;底色為淡紫 elevated surface( --psy-gradient-card-surface + --psy-surface-card),內文請用 --psy-text-on-light--psy-text-muted-on-light,勿與深紫頁面的 --psy-text-primary 混用。粗框/硬陰影見 tailwind/cards.css。版面間距、響應式欄位請用 Tailwind utility(如 grid gap-psy-6max-w-psy-prose)。

基本卡片 · Basic card

單一 .card__body;適合圖表、表格或短表單容器。預設底為 Mimosa 淡紫( --psy-surface-card),勿疊洋紅/橘色 --psy-gradient-card-wash

活動報名趨勢

過去 7 日 · 台北場次

內容區可放圖表、表格或表單。外層用 utility 控制寬度與外距,例如 class="card max-w-lg w-full"

淡紫次區塊 · Muted body / footer

修飾 class card--body-mutedcard--footer-muted 對應 Tailwind UI 的 gray body/gray footer 概念,但 Mimosa 以淡紫階區分(--psy-surface-card-header 略深、 --psy-surface-card-muted 更淺),勿混 cyan/amber 等螢光 secondary 當底。

Muted body

頁首 --psy-surface-card-header(略深淡紫);內文 --psy-surface-card-muted(更淺淡紫),與外層 --psy-surface-card 對比。

Well · 內凹區塊

.well 用於卡片內的子區塊或灰底頁面上的次要容器;無硬陰影,邊框較細。可加 well--on-muted 放在灰底舞台。

Well on gray — 適合篩選列、輔助說明或次要表單群組。

卡片內的 Well

巢狀 well:比外層卡片更輕,不搶主視覺。

實作 · Implementation

載入 tailwind.css(已含 cards.css)。與 .psy-panel 不同:card 提供 header/body/footer 結構;單純色塊面板仍可用 .psy-brutal-block.psy-panel

<!-- Tailwind 管版面;card 管結構與 Mimosa 皮膚 -->
<div class="grid gap-psy-6 lg:grid-cols-2">
  <article class="card w-full">
    <header class="card__header">
      <h3 class="card__title">標題</h3>
    </header>
    <div class="card__body">…</div>
    <footer class="card__footer flex gap-psy-4">
      <button type="button" class="psy-brutal psy-btn psy-btn--primary">確定</button>
    </footer>
  </article>
</div>

<div class="well max-w-psy-prose">次要區塊</div>

覆疊層 · Modal & Drawer

結構由 overlays.css 提供;版面(置中、flex、gap)請用 Tailwind utility。面板使用 --psy-overlay-surface 淺底 + --psy-overlay-fg 內文。開關由 host 以 hidden 或 JS 控制。

對話框 · Modal

破壞性確認(刪除等)的主動作請用 psy-btn--danger(洋紅/粉紅語意,對齊 --psy-alert-error-accent);psy-btn--primary(萊姆綠=送出/通過)。 取消維持預設 psy-btn(琥珀次要)即可。

抽屜 · Drawer

Popover

定位資訊泡泡(非選單清單);與 Dropdown 不同。修飾類 popover--bottompopover--startpopover--end。開關由 host JS(hiddenaria-expanded);關閉建議支援 Esc 與點擊外部。 靜態展示同 Tooltip,使用 .ds-anchor-grid--popoverdocs.css)flex 置中觸發元素。

上方 · 預設

下方 · popover--bottom

左側 · popover--start

右側 · popover--end

  • 簡短說明用 role="dialog" + aria-labelledby;勿把唯一資訊只放在 popover 內。
  • 觸發按鈕綁定 aria-expandedaria-controls;關閉時還原焦點至觸發元素。
  • 支援 Esc 與點擊外部關閉(host JS);與 Dropdown 選單語意勿混用。

通知面板 · Notification center

持久型通知列表(非 Toast)。建議放在 drawer--right 內;class 見 navigation-ui.css.notification-list。底色依已讀與時間分三層( --psy-notification-*):最新未讀=淺綠、當日已讀=中性 card、昨日以前=淺橘。勿用 cyan/洋紅/粉紫 wash(易像 info 或錯誤)。

--psy-notification-unread-bg · 淺綠
--psy-notification-read-bg · 當日已讀
--psy-notification-older-bg · 淺橘
  • 建議放在 drawer--right;列表用 .notification-list
  • 語意修飾類--psy-notification-* token): notification-list__item--unread 最新未讀 → 淺綠; 當日已讀 → 預設中性 card; notification-list__item--older 昨日以前 → 淺橘。勿用洋紅/粉紫底(易聯想錯誤)。
  • 未讀指示點 .notification-list__dot 為萊姆綠;已讀/較舊項目隱藏圓點。
  • 每則標題用 <p> 或連結;時間用 <time datetime>
  • 即時彈出仍用 Toast;此為持久型通知中心。

回饋 · Toast / Loading

與 Alert 不同:Toast 為短暫、非阻塞回饋;Spinner/Progress/Skeleton 用於載入與進度。見 feedback.css

Toast

已儲存

變更已同步。

Spinner

Progress

Skeleton

Empty state

清單空態、搜尋無結果、權限不足等;見 feedback.css.empty-state。 說明原因並提供行動出口(按鈕或連結)。

尚無活動

建立第一場活動,開始邀請參與者。

找不到結果

試試其他關鍵字或清除篩選條件。

無法存取

請向管理員申請權限後再試。

  • 版面用 Tailwind(gridgap-psy-*);皮膚在 .empty-statefeedback.css)。
  • 表格內簡短空態可用 .data-table__emptytables.css);完整空態區塊用本元件。
  • 標題說明「為何是空的」;至少一個明確 CTA(主按鈕或次要連結)。

頁內導覽與列表控制;見 navigation-ui.css。表單用 select 仍見 Form controls。

Chip / Tag

可點擊或群組的標籤/篩選 pill;版面用 Tailwind(flexgap-psy-*),皮膚在 components.css.psy-chip)與 flow-page.css.psy-flow-chip)。 與狀態標籤 .label 不同:label 為非互動狀態徽章,chip 用於導覽或篩選。

可選取 · Flow chip

多選篩選使用 .psy-flow-chip;選取態加 .psy-flow-chip--selected。裝飾標籤(非互動)可用 .psy-flow-tag

NEW

可訪問性 · Accessibility

  • 可選取 chip 請用 button + aria-pressed(或 role="checkbox" + aria-checked)。
  • 導覽用途用 a 並提供明確連結目標;勿把 .label 當成可點擊 chip。
  • 群組加 role="group"aria-label 描述篩選語意。

可用性 · Usability

三種變體的使用時機

  • .psy-chipcomponents.css)— 靜態標籤或導覽連結;配合 psy-brutal 加邊框陰影。
  • .psy-flow-chipflow-page.css)— 多選篩選;選取態加 .psy-flow-chip--selected,須搭配 aria-pressed
  • .psy-flow-tagflow-page.css)— 純裝飾標籤(NEW、HOT 等),非互動,勿加點擊事件。

.label 的區別

  • .label狀態徽章(進行中、已結束),非互動。
  • Chip 用於篩選或導覽,label 用於狀態顯示;兩者語意不同,不可互換。

實作說明 · Implementation

載入 components.cssflow-page.css(均含於 tailwind.css)。 版面(間距、換行)使用 Tailwind utility(flex flex-wrap gap-psy-3)。

<!-- 靜態 / 導覽 chip -->
<a class="psy-brutal psy-chip psy-focus-ring" href="/all">全部</a>
<span class="psy-brutal psy-chip">唯讀標籤</span>

<!-- 多選篩選(flow chip) -->
<div class="flex flex-wrap gap-psy-3" role="group" aria-label="風格篩選">
  <button type="button"
          class="psy-brutal psy-flow-chip psy-flow-chip--selected"
          aria-pressed="true">電子</button>
  <button type="button"
          class="psy-brutal psy-flow-chip"
          aria-pressed="false">嘻哈</button>
</div>

<!-- 裝飾標籤(非互動) -->
<span class="psy-flow-tag">NEW</span>

進階元件 · Extended

低頻但常見的資料與表單延伸;版面用 Tailwind utility,皮膚在 avatar.cssforms-extended.cssdata-display.css。淺色 elevated 區塊請用 --psy-text-on-light--psy-text-muted-on-light,勿混用頁面級 --psy-text-primary

Range · Slider

原生 input[type="range"] + .range;track/thumb 由 --psy-range-* token 控制。單軸可 oninput 更新 .range-field__value雙端區間需 host JS 同步兩支 input(下限不可大於上限)並寫入顯示區,見下方 data-range-dual 範例。

60

雙端區間(兩支 .range)+ 刻度 .range-ticks

預算區間 $20 – $80

File upload

整區可點擊;隱藏 input[type="file"] 覆蓋於 .file-upload。hover/focus-within 走 --psy-elevated-hover-*

Combobox · Autocomplete

帶建議下拉的輸入;見 forms-extended.css。控制列底色用 --psy-input-group-bg(淺底 elevated,與 input group 相同),勿用深頁用的 --psy-form-input-bg。與 Search bar 不同:combobox 需 role="combobox"aria-expandedaria-controls 綁定 listbox。 鍵盤導覽與 aria-activedescendant 由 host JS 實作。

多選 tag 模式(已選項目 + 輸入框):

標籤
  • 音樂
  • 戶外
  • 輸入使用 role="combobox"aria-autocompletearia-expandedaria-controls
  • 建議清單用 role="listbox" + role="option";鍵盤高亮用 aria-activedescendant(host JS)。
  • 多選 tag 的移除鈕需具體 aria-label(例如「移除標籤 音樂」)。

Avatar · Stack

尺寸 --sm|lg|xl;圖片用 .avatar__img;疊加列用 .avatar-stack

S MJ LG
  • AN
  • BO
  • CY
  • +4

線上狀態 .avatar__status--online、可點擊 .avatar-wrap--link

ON LK

Timeline

垂直時間軸;節點 .timeline__marker,連線 --psy-timeline-line

  1. 報名開放

    參與者可提交表單並上傳證明文件。

  2. 審核完成

    主辦方已核准 128 筆申請。

  3. 活動開始

    現場簽到與即時通知將同步啟用。

Stat / metric card

獨立 .stat-card(亦可與 .card 組合)。卡片底為淡橘 --psy-stat-surface*(中性數據;非 warning 黃、非 info 色條橙);漲跌 pill 用 --psy-semantic-trend-*-fg*-bg,期間用 .stat-card__delta-context(muted)。

活躍使用者

12,480

+8.2% 較上週

轉換率

3.4%

−0.3% 較上月

平均停留

4m 12s

+12s

Stepper · 步驟指示

多步驟流程進度;見 data-display.css。狀態 token:--psy-step-*。目前步驟用 aria-current="step";已完成用 data-step-state="completed"。進度變更建議搭配 aria-live="polite" 區域公告。

垂直佈局 stepper--vertical

  • 使用 <nav> + <ol>;目前步驟 aria-current="step",已完成 data-step-state="completed"
  • 步驟變更時以 aria-live="polite" 區域公告進度(host JS)。
  • 版面用 Tailwind(max-w-*);連線與指示器樣式在 .stepperdata-display.css)。

元件變體 · Variants

補齊常用變體;版面用 Tailwind(flexgap-psy-*),皮膚在 component-variants.cssnavigation-mobile.css 等。Modal 焦點陷阱、Toast 自動關閉與佇列需 host JS(class 如 modal--animatedtoast.is-leaving)。淺底表單請配對 .form-label--on-light;舊 #variants-forms 已拆為 input-groupOTP

Button · Ghost / Icon / Group / Split

Input group · 前後綴

單一 .input-group 外框(--psy-input-group-*)。金額/票價加 .input-group--amount--psy-input-group-amount-*):僅幣別前綴 + 右對齊短欄,勿 max-w-md 三欄拉寬。淺底標籤用 .form-label--on-light

NT$

小數位由驗證或格式化處理;勿再拆獨立 .00 後綴欄。

OTP / PIN · 六位驗證碼

六格為同一 .otp-input(一個外框 + 內部分隔線),不是六個帶獨立硬陰影的 .form-input。標籤同樣用 .form-label--on-light

Table · TableCard / Divider / Striped

節奏參考 Untitled UI Tables.table-card 標題區 + Divider line--uniform-rows、列線、hover)或 Alternating fills--striped)。表頭小字 muted + 灰底帶;排序僅圖示色。一表一狀態。

Divider line · 排序 + 列選取

活動列表

2 筆 · 可排序與多選

名稱 狀態 更新
活動 A 進行中 今天
活動 B 草稿 昨天

Alternating fills · 斑馬紋(清單列用 td + .data-table__cell--primary,勿 tbody th

客戶

斑馬紋輔助橫向掃描

公司 狀態 更新
Stack3d Lab Churned 昨天
Ephemeral Customer 今天
Warpspeed Customer 3 天前

空態 · 無列(獨立表)

名稱 狀態 更新

尚無資料

建立第一筆紀錄以開始。完整空態見 Empty state

Navigation · Mobile

底部導覽 .bottom-nav:同一時間僅一項具 .is-activearia-current="page"(由 host/router 切換)。文件展示用 data-bottom-nav-demo 腳本交換選取態;在展示用連結使用裸 href="#"(會跳到頁首)。

Modal sizes / Toast 動畫

尺寸:modal__panel--sm|lg|xldrawer__panel--sm|lg。開啟時加 modal--animated;Toast 堆疊加 toast-stack--animated,關閉前加 toast.is-leaving。焦點陷阱請 host 實作(focusin 循環於 panel)。

佇列動畫

進場 class 由 CSS 處理。

提示 · Alerts

用來告知使用者重要或具時效的系統/表單狀態。結構與角色對齊 NASA Web Design System — Alerts;樣式沿用 Neo-Brutalism 粗框與硬陰影;底色為洗白 elevated(--psy-alert-*-bg),內文請用 --psy-alert-fg--psy-alert-fg-muted。圖示為狀態色圓底 + 高對比符號(--psy-alert-*-icon-bgicon-fg),.alert__icon 使用 color: inherit。產品 class 見 tailwind/product.css

狀態列 · Success / Warning / Error / Info

成功(萊姆)、警告(琥珀)、錯誤(洋紅)、資訊(橘)。錯誤且非互動內容時可設 role="alert"(見可訪問性小節)。

Success Status

操作已完成。如需說明可附 連結範例

Warning Status

請留意:此變更可能影響既有設定,建議先備份。

Information Status

系統將於維護時段短暫停用,時程已公告於最新消息。

Information Status — Paragraph width

多行說明:對齊 NASA 的 paragraph width 變體,限制內文欄寬以利長篇可讀性。Neque porro quisquam est qui dolorem ipsum quia dolor sit amet,實務上應改寫為簡短中文,並在必要時提供復原步驟或聯絡方式。

深底上的提示 · On dark

與產品頁相同的紫底;深底版改用「淺底卡 + 左側色條 + 黑底圖示」提高辨識度。

Success

已同步至雲端。

Warning

名額即將額滿。

實作 · Implementation

文件頁使用 ds-alert;產品頁建議使用 alert + 狀態修飾 class,與下列標記對等。

<div class="alert alert-success" role="status">
  <span class="alert__icon" aria-hidden="true">✓</span>
  <div class="alert__body">
    <h4 class="alert__heading">Success</h4>
    <p class="alert__text">…</p>
  </div>
</div>

<div class="alert alert-error" role="alert">…</div>

可訪問性 · Accessibility

節錄並中譯 NASA Alerts 文件。

  • 時效性高、且非互動的重要訊息可使用 ARIA role="alert",讓輔助科技及時朗讀;若為需操作的可互動對話,改用 alertdialog
  • 勿將提示在視覺上完全隱藏後才動態顯示給部分使用者——舊版輔助科技仍可能讀到被隱藏的內容。

可用性 · Usability

節錄 NASA Alerts — When to use / Guidance。

適合使用

  • 通知使用者系統狀態(錯誤、警告、一般更新),不一定需要回應。
  • 表單送出後的驗證摘要,或成功完成的確認訊息。

可改用其他型態

  • 長表單應搭配欄位旁內聯錯誤,勿僅依賴頁頂一則 alert。
  • 破壞性刪除等行為,請用確認對話框等更強介入,而非僅文字提示。

撰寫要點

  • 說明使用者下一步可做什麼,語氣簡潔、避免責備使用者。
  • 通知數量適中;可關閉時提供關閉,避免無關訊息干擾當前任務。

手風琴 · Accordions

手風琴用於在有限空間中分段顯示資訊。結構參照 NASA Web Design System — Accordions, 並延伸 Psychedelic 的粗框與高對比展開狀態。

無框樣式 · Borderless

  • 以音樂品味相似度、地理距離與近期互動權重組合計分,並保留探索新風格的隨機性。

框線樣式 · Bordered

  • 支援封鎖、檢舉與可見度控管;敏感資料採分級存取,並在操作流程中給予提示。

可訪問性 · Accessibility

  • 標題列必須是 <button>,確保鍵盤與輔助科技可操作。
  • 按鈕需使用 aria-expanded 表示展開狀態,並以 aria-controls 對應內容區 id
  • 內容區的可見狀態應與按鈕狀態一致;避免在 JS 失效時直接把內容永久隱藏。

可用性 · Usability

  • 適合使用者只需要少數段落資訊、且版面空間受限時。
  • 若使用者通常要讀完整內容,應改為直接展開的段落排版。
  • 標題列點擊區要夠大,並與內容內可點擊元素保持距離,避免誤收合。

實作 · Product classes

產品頁可使用 accordionaccordion--borderedaccordion__buttonaccordion__content, 並沿用同樣的 aria-expanded / aria-controls 結構。

表單控制元件 · Form controls

讓使用者在頁面上輸入與選取資訊。結構與可訪問性要點對齊 NASA Web Design System — Form controls;外觀沿用 Neo-Brutalism 粗框與硬陰影,錯誤/成功態沿用 --psy-alert-*。本頁示範為 ds-*;產品 class 為 form-*(見 ./dist/mimosa.css;見實作一節)。

可訪問性(總覽)

節錄 NASA Form controls — Accessibility。

  • 表單控制項在 HTML 中的順序須與畫面閱讀順序一致,勿僅以 CSS 重排而讓螢幕報讀順序錯亂。
  • 驗證訊息須與對應欄位在視覺上對齊,方便放大鏡使用者掃讀。
  • 主題相關的控制項請以 <fieldset> 分組,並以單一 <legend> 說明(例如一題搭配多個選項按鈕)。
  • 表單區塊盡量維持垂直排列,對視野受限使用者較友善。
  • 部分螢幕報讀器對 fieldsetlegendaria-describedby 支援不一;必要時可改以 aria-labelledby 串連標籤、說明與提示(詳見原文 Known issues)。

文字欄與多行 · Text input & textarea

單行文字、焦點環示意、錯誤(role="alert" 訊息 + aria-describedbyaria-invalid)、成功外觀、多行文字區。

請輸入有效內容。

撰寫要點(節錄)

  • 避免以 placeholder 取代標籤(對比與認知負擔)。
  • placeholder 文字使用 --psy-form-placeholder-text 並維持較輕字重,需「可讀但低於已填值」的視覺層級。
  • 任何帶硬陰影輸入控制項(input / select / textarea)後若緊接下一個標籤,需加上 base spacing + 4px(陰影高度)補償,避免遮擋下一段標籤文字。
  • 標籤群組(如音樂標籤 chips)作為一段內容時,容器底部需保留至少 --psy-space-4,再進入下一個欄位標題。
  • 摘要型清單(如照片/音樂品味/活動歷史)若後接動作按鈕,清單底部需保留至少 --psy-space-5,避免資訊段落與操作區黏連。
  • 電話、卡號等勿任意拆成多個欄位;必要時仍應有清楚群組與標籤。
  • 僅在使用者互動過該欄後再顯示驗證錯誤樣式或訊息。

下拉選單 · Dropdown

選項約 7~15 個、版面有限時較適合;選項極少可改選項按鈕,極多可改可搜尋輸入。勿在選取後自動送出表單(干擾螢幕報讀)。

核取方塊 · Checkboxes

同一主題的多選以 fieldset 包覆;單一開關可用單一核取方塊。

興趣主題(可複選)

選項按鈕 · Radio

互斥單選;不確定預設值是否合宜時,可維持「未選」為預設。

通知偏好(單選)

日期欄位 · Date(分段輸入)

多數「記得的日期」以月/日/年三欄輸入較直覺。勿用 JS 自動跳欄(鍵盤使用者不易修正)。年份上下限請依表單情境調整。

出生日期 範例:04 28 1986

驗證與規則清單 · Validation

事先列出規則並即時回饋,減少猜測。使用套件 form-checklist-boxform-checklist(破折號/✓ 狀態指示,用空心圓以免像 checkbox)。下列清單會隨輸入更新(僅示意);正式環境須在伺服端重複驗證。

輸入通關碼

通關碼必須:

  • 至少 1 個大寫英文字母
  • 至少 1 個數字

深底表單示例 · On dark

與產品深紫底接近的欄位配色(--psy-form-*)。

實作 · Product classes

Host 專案請載入 tailwind.css(含 tokens.css)。對應關係:ds-labelform-labelds-inputform-inputds-textareaform-textareads-selectform-selectds-hintform-hint、錯誤群組 form-error-groupform-error-msgform-input--errords-fieldsetform-fieldsetds-legendform-legend、選項清單 form-choice-list + form-choice、日期列 form-date-rowform-date-field、規則清單 form-checklist-boxform-checklist 與條目 class is-met

<div class="form-stack">
  <div class="form-error-group">
    <label class="form-label form-label--error" for="email">電子郵件</label>
    <span class="form-error-msg" id="email-err" role="alert">格式不正確。</span>
    <input class="form-input form-input--error" id="email" aria-describedby="email-err" aria-invalid="true" />
  </div>
</div>

表單範本 · Form templates

常見流程表單的組合範本:Name / Address / Sign-in / Password reset。結構參照 NASA Web Design System — Form templates, 視覺則沿用 Psychedelic + Neo-Brutalism(粗框、硬陰影、螢光行為色)。

可訪問性(總覽)

  • 控制項的 HTML 順序要與視覺順序一致,避免僅用 CSS 重排。
  • 相關欄位以 fieldset + 單一 legend 分組,並維持垂直掃讀節奏。
  • 驗證訊息與欄位視覺對齊,必要時補 aria-describedbyaria-labelledby
  • 顯示密碼、忘記帳號/密碼等輔助動作,需保留鍵盤可操作性與明確焦點樣式。

姓名表單 · Name form

當資料庫需要分欄儲存姓名時使用;若不需拆分,可退回單一文字欄位。

姓名

地址表單 · Address form

示範可拆分地址欄位;若不需解析地址,可改單一多行欄位。

郵寄地址

重設密碼 · Password reset form

先揭露密碼規則,再讓使用者輸入與確認,避免「填完才被擋」。

重設密碼

請輸入新的密碼

密碼規則

至少 8 碼,包含 1 個大寫英文字母與 1 個數字。

顯示輸入內容

實作 · Product classes

元件沿用 `form-*`(Form controls 章),範本新增版型輔助:`form-grid`、`form-col-sm`、`form-col-md`、`form-note`,可組 Name / Address / Sign-in / Reset password 四種常見流程。

側邊導覽 · Side navigation

用於呈現 1~3 層導覽階層。結構參照 NASA Web Design System — Side navigation, 視覺沿用 Psychedelic 粗框與螢光 active 指示。

可訪問性 · Accessibility

  • 所有導覽項目需可透過鍵盤 Tab 逐項聚焦與操作。
  • 目前頁面狀態需可辨識(視覺 active + 語意標示)。
  • 避免過深層級造成導覽迷航,必要時改為拆分資訊架構。

可用性 · Usability

  • 導覽文案要短、可掃描,建議為頁名的精簡版。
  • 適合 1~3 層;若層級過深,使用者容易漏看底部項目。
  • 若整站頁面很少(少於 5),通常不需要側邊導覽。

實作 · Product classes

產品頁可使用 side-navside-nav__subis-current;可維持同一 HTML 結構在不同頁面重複使用。

頁首 · Headers

Header 的核心是「品牌識別 + 導覽分層 + 目前位置感」。 結構精神參照 NASA Web Design System — Headers, 風格則轉為 Psychedelic 的高對比漸層、粗邊框與可掃描導覽。預設採單一 header surface(品牌列與導覽列同底),避免同層資訊出現雙底色誤導;品牌名稱與導覽文字統一使用 --psy-header-text(對應首頁深色字),不可在子頁改成另一套文字色。

可訪問性 · Accessibility

  • 提供 Skip link,讓鍵盤與輔助科技可直接略過長導覽。
  • 使用語意化 headernav,並以 list 組織導覽項目。
  • 導覽項目需可 Tab 聚焦,展開子選單時以 click / Enter / Space 觸發,不依賴 hover。
  • 目前所在頁應有可視覺辨識的 current 狀態,而非僅靠顏色差異。

可用性 · Usability

  • 主導覽請依任務優先順序排列:高需求功能靠左(或最前)。
  • 連結文案需用使用者語言,不以內部組織架構命名。
  • 頁首不宜過高,避免擠壓主要內容;資訊量增加時優先使用 extended 版型。
  • 同一頁首層級預設使用單一底色 token(--psy-header-bg);僅在有明確層級差異時才增加次底色。
  • 若需展示主導覽與模組捷徑,應拆成兩層導覽列:第一層主導覽(主要任務),第二層次導覽(模組入口),避免同列競爭注意力。
  • 次導覽 chips 應使用專屬 token(--psy-header-subnav-chip-bg,目前為 #80dcb3),避免與主導覽 chips 混用同色。
  • 大型資訊架構可考慮 mega menu 或側邊導覽,但先驗證是否真的需要。

實作 · Product classes

產品頁可使用 `site-header`、`site-header__brand`、`site-header__logo`、`site-header__tagline`、`site-header__nav`、`site-header__meta`、`site-header__utility`, 並搭配 `site-header--extended` / `site-header--dark` 與 `skipnav` 完成可及導覽。

頁尾 · Footers

Footer 服務的是「滑到頁尾仍未找到答案」的使用者。結構參照 NASA Web Design System — Footers, 風格轉為 Psychedelic 的高對比色塊與明確群組。

可訪問性 · Accessibility

  • 頁尾導覽以 `nav` + list/link 組織,Tab 應可逐項聚焦。
  • 小螢幕若改成可收合群組,需符合 Accordion 的鍵盤與 ARIA 規則。
  • 電話、Email 等聯絡方式建議做成可點擊連結,便於行動裝置使用。

可用性 · Usability

  • Big footer 適合補充導覽 + 訂閱行動;Medium 適合少量常用連結;Slim 適合最小資訊量。
  • Footer 不必完全複製 Header 資訊架構,優先放常被查詢的收尾資訊。
  • 避免「免責聲明膨脹」:保留必要法律連結即可,其餘交給專頁。

實作 · Product classes

產品頁可使用 `site-footer` + `site-footer--big/--medium/--slim`,並搭配 `site-footer__top`、`site-footer__primary`、`site-footer__grid`、 `site-footer__signup`、`site-footer__links`、`site-footer__secondary`、`site-footer__brand`、`site-footer__row`。

標籤 · Labels

本節為狀態標籤.label,類似 shadcn Badge),用來凸顯 New/Warning 等狀態。表單欄位關聯文字請用 .form-label(類似 shadcn Label),勿與 .label 混用 class。視覺參照 NASA Web Design System — Labels

樣式變體 · New / Info / Warning / Hot

預設為非互動元素(`span`),僅用於標示,不作為按鈕。

New Info Warning Hot Unread 12

可訪問性 · Accessibility

  • 若 label 對應的是動態新增內容,請用 ARIA live region 通知螢幕報讀器。
  • 非互動 label 應避免 hover/focus/active 行為,以免誤認為可點擊。
  • 狀態不可只靠顏色區分;可搭配文字(如 New、Warning、Unread 12)。

可用性 · Usability

  • 用於提醒容易被忽略的重要資訊,避免整頁過度標示。
  • 不要混用「可點擊」與「不可點擊」兩種 label 行為,需保持一致。
  • 當內容本身已頻繁更新時,可先用排序與版位處理,不一定要加 label。

實作 · Product classes

產品頁使用 labellabel--info 等;內距由 --psy-label-padding-* 控制。表單請用 form-label。可互動 tag 請用 .psy-chip 另建,勿堆在 .label 上。

<span class="label label--warning">Warning</span>

<label class="form-label" for="email">電子郵件</label>
<input id="email" class="form-input" type="email" />

表格 · Tables

節奏對齊 Untitled UI Tables(TableCard、Divider line、Alternating fills、sm/md); 結構與可及性參照 NASA WDS Tables。外框保留 Mimosa neo-brutal 硬陰影。

框線表格 · Bordered table

活動資料表(框線)
活動名稱 說明 年份
Neon Warehouse 以合成器與工業節奏為主題的夜間派對,提供即時配對卡片。 2026
Cosmic Rooftop 露天場景與 chill 電子樂,適合低壓社交互動。 2026
Indie Social Lab 獨立音樂導向的主題社交場,含偏好標籤篩選。 2027

無框表格 · Borderless table

需要與段落內容融合時,可減少格線干擾。

活動資料表(無框)
活動名稱 說明 年份
Neon Warehouse 以合成器與工業節奏為主題的夜間派對,提供即時配對卡片。 2026
Cosmic Rooftop 露天場景與 chill 電子樂,適合低壓社交互動。 2026
Indie Social Lab 獨立音樂導向的主題社交場,含偏好標籤篩選。 2027

可訪問性 · Accessibility

  • 簡單表格使用 scope="col" / scope="row" 明確標頭關係。
  • 複雜表格(多層標頭)需改用 id + headers 對應。
  • 表格標題放在 <caption>,不要只在外部段落描述。

可用性 · Usability

  • 僅在真正欄列資料使用表格;敘事內容可改清單或段落。
  • 框線表格適合高密度比較;無框表格適合貼近文章內文。
  • 最小必要樣式即可,避免裝飾壓過資料本身。

實作 · Product classes

清單:table-card + data-table data-table--uniform-rows;斑馬紋加 data-table--striped;緊湊列高 data-table--sm。矩陣表(列標在 tbody th)勿加 --uniform-rows。保留 captionscope

版面系統 · Grids

採 12 欄響應式格線,維持內容對齊與掃讀節奏。結構精神參照 NASA Web Design System — Grids, 視覺延伸為 Psychedelic 的粗框卡片分欄。

12 欄比例

1/1
1/2
1/2
1/3
1/3
1/3
1/4
1/4
1/4
1/4

版型示例 · Layout examples

8/12 主要內容
4/12 側欄
6/12 活動卡片 A
6/12 活動卡片 B
4/12 篩選
4/12 推薦
4/12 即時訊息

可訪問性 · Accessibility

  • 放大到 200% 時仍需可讀、不破版;避免固定高度與硬塞內容。
  • 欄位順序要符合語意閱讀順序,不以 CSS 變更語意順序。

可用性 · Usability

  • 全站採單一 12 欄系統,避免混用多種 grid 規則。
  • 文字區塊建議控制在約 75 字元內,提高長文可讀性。
  • 小螢幕預設堆疊成單欄,優先保障掃讀與點擊精準度。

實作 · Product classes

產品頁使用 `grid-12` + `col-12/8/6/4/3` 組版;RWD 會在中小螢幕自動滿欄。若需無左右留白容器可另加 `grid-12--full`。

間距 · 邊框 · 陰影

間距為 --psy-space-*;區塊邊框 --psy-border-width-block;Neo-Brutalism 硬陰影 --psy-shadow-hard

間距尺度表

Token、數值與長條預覽並列,便於掃描與對照實作。

Token 數值 預覽
--psy-space-1 4px
--psy-space-2 8px
--psy-space-3 10px
--psy-space-4 12px
--psy-space-5 14px
--psy-space-6 16px
--psy-space-7 18px
--psy-space-8 22px
--psy-space-9 24px
--psy-space-10 26px
--psy-space-11 28px
--psy-space-12 32px
--psy-space-13 60px

分隔線 · Divider

色票 --psy-divider-color。通用元件 .psy-divider.psy-divider--verticalcomponents.css);語意化區塊間距可用 .dividernavigation-ui.css)。完整範例見 導覽 UI · Divider


水平 .psy-divider

陰影範例

產品卡片與主導區塊使用同一硬陰影,並以 container / high / highest 分層(對齊 surface hierarchy)。

--psy-surface-container + --psy-shadow-hard

--psy-surface-container-high + --psy-shadow-hard

--psy-surface-container-highest + --psy-shadow-hard

動效 · Motion

僅以 token 定義時間與曲線,由元件引用。

Token
--psy-motion-duration-fast 120ms
--psy-motion-duration-normal 200ms
--psy-motion-duration-slow 280ms
--psy-motion-easing-standard cubic-bezier(0.2, 0, 0, 1)

可視化範例 · How aliases look

下列示例對應上表 token,方便快速理解「改 token 會影響哪裡」。

HOME EVENTS MATCHES

--psy-nav-text 是給「亮色導覽底」用的前景色,不適用深紫底主內容文字。

--psy-kicker-text-on-light:THIS IS A KICKER SAMPLE

/* token 別名實際使用範例 */
.top-nav a { color: var(--psy-nav-text); }
.hero-kicker { color: var(--psy-kicker-text-on-dark); }
.kicker { color: var(--psy-kicker-text-on-light); }

.psy-btn--primary:hover { background: var(--psy-button-primary-bg-hover); }
.psy-btn--primary:active { background: var(--psy-button-primary-bg-active); }
.psy-btn:hover { background: var(--psy-button-secondary-bg-hover); }
.psy-btn:active { background: var(--psy-button-secondary-bg-active); }

.psy-btn:focus-visible {
  outline: var(--psy-focus-ring-width) solid var(--psy-focus-ring-color);
  outline-offset: var(--psy-focus-ring-offset);
}

元件別名摘錄 · Component aliases

節錄 tokens.css 底部與導航、按鈕、焦點相關之別名。

Token 用途 範例
--psy-nav-text 導覽列前景(螢光漸層上) NAV
--psy-kicker-text-on-light 淺底 kicker/eyebrow KICKER
--psy-kicker-text-on-dark 深紫底 kicker(--psy-surface-on-dark + 萊姆) KICKER
--psy-button-primary-bg-hover / active 主要按鈕狀態
--psy-button-secondary-bg-hover / active 次要按鈕狀態
--psy-focus-ring-* 對焦環(可及性)