Community画像github.com

Pixel HUD UI

Pixel HUD UI は、レトロなフライトコンピュータ/ゲームHUDスタイル(ピクセルCJKフォント、1px罫線パネル、CRTスキャンライン、意図に応じた色分けキー、ランプスイッチ、セグメントゲージ)を備えた完全なUIフレームワークで、すべてのコントロールに設計仕様(サイズ、状態、使い方、アクセシビリティ)とドロップインCSSキットが含まれています。

Pixel HUD UI とは?

Pixel HUD UI は、単なるカラーテーマではなく、レトロゲーム機やフライトコンピュータを彷彿とさせるピクセルアートスタイルのUIを構築するための包括的なフレームワークです。4pxグリッド、12pxピクセルフォント、1px罫線、段階的モーションという基本原則に基づき、パネル、ボタン、タブ、フォーム、ゲージ、ランプなど多彩なコントロールを提供します。各コントロールは固定サイズを持ち、ホバー、プレス、フォーカス、選択、無効、ローディング、エラーといった統一された状態モデルを共有します。カスタムCSSプロパティ `--hud-*` により任意のカラーパレットに対応でき、既存のアプリ(React、Next.js、Vue、Svelte、Tailwind、shadcn/ui)にスタイルを適用したり、新しいUIを設計したりする際に、デザインシステム仕様書とともに活用します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/dodio12138/pixel-hud-ui/tree/HEAD

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Pixel HUD UI は何をしますか?

単なるカラーテーマではなく、UIフレームワークです。3つのレイヤーがあり、良い結果を得るにはすべてを使用します:

  1. 基礎:4pxグリッド、12pxピクセルフェースに調整されたタイプスケール、カラーの役割(各色は1つの意味を持つ)、影の代わりとなる1pxルール、段階的モーション。
  2. コントロール:パネルとタイトルバー、インテントを持つキー(ボタン)、アイコンキー、タブ、セグメントコントロール、リスト行、フォームフィールド、入力、セレクト、正方形チェックボックスとラジオボタン、ランプスイッチ、ゲージスライダー、プログレスゲージ、ランプ、タグ、バッジ、キーキャップ、メニュー、ツールチップ、ダイアログ、トースト、テーブル、コードブロック、散文、ローダー、空の状態。各コントロールは固定サイズと1つの共有状態モデル(ホバー、プレス、フォーカス、選択、無効、ローディング、エラー)を持ちます。
  3. パレット:--hud-* トークンにより、フレームワークは任意の色(アプリ独自のブランドカラーを含む)の上に配置できます。

ファイル

ファイル説明
references/design-system.md仕様書。 原則、基礎、およびすべてのコントロールの構造、サイズ、状態、使用すべきタイミング、アクセシビリティ。設計前に読んでください。
assets/pixel-hud.css実装:トークン、[data-skin="pixel"] 下のライトグローバル、および hud-* コントロールクラス
assets/palettes.cssstarward(深宇宙、ダーク)、terminal(グレーグリーン、ダーク)、paper(暖かい砂色、ライト)
assets/fonts.cssFusion Pixel 12px(OFL)、jsDelivrに固定。または @fontsource 経由でセルフホスト
assets/pixel-caret.jsテキストフィールド用のオプションの3pxブロックキャレット(data-pixel-caret)
assets/demo.htmlすべての状態の全コントロールとパレットスイッチャー:視覚的リファレンス
references/integration.mdスタックごとのレシピ:アプリの色のマッピング、Tailwind、shadcn/ui、React/Next、Vue、スコーピング、フラッシュ防止トグル、セルフホストフォント
scripts/check-contrast.mjs任意のパレットのWCAGチェック:node scripts/check-contrast.mjs my.css

ワークフロー

1. 仕様書とデモを読む

references/design-system.md(少なくとも原則、基礎、およびタスクに必要なコントロール)を読み、assets/demo.html を見てください。仕様書には各コントロールがなぜそのような見た目になっているかの理由が書かれています。それに従うことが、画面を「ピクセルフォントのダークテーマ」ではなく、このフレームワークとして認識させるために重要です。

2. プロジェクトを確認する

何かをコピーする前に、以下を確認してください:

  • スタックとグローバルCSSの読み込み場所(レイアウトファイル、main.ts、index.html、Tailwindエントリ)
  • 現在の色の定義方法(CSSカスタムプロパティ、Tailwindテーマ、shadcnのHSL変数、コンポーネント内の16進数)
  • 新しいUIかリスタイルか、アプリの唯一の見た目か切替可能なテーマか、ページ全体か一部か

これらがカラーマッピング(ステップ4)を決定し、アプリのスタイルとの競合を防ぎます。

3. キットを追加する

pixel-hud.css、fonts.css、palettes.css(バンドルされたパレットを使用する場合)、および pixel-caret.js(アプリにテキスト入力がある場合)をプロジェクトにコピーします。読み込み順序:fonts → palettes → pixel-hud.css、アプリの基本スタイルの後に配置します。

4. 色を選ぶ

  • バンドルパレット:data-hud-palette="starward" | "terminal" | "paper"
  • アプリ独自の色:1つのブロックで変数を --hud-* にマッピング(references/integration.md › アプリの色のマッピング)。ブランドは維持し、フレームワークを追加します。
  • 新しいパレット:仕様書の「新建一套配色」に従います。

その後、作成またはマッピングしたパレットに対して node scripts/check-contrast.mjs <file> を実行し、すべてのFAILを修正します。コントロールは、バー、テキスト、および緑色がすべてのサーフェスで読みやすいことに依存しています。

5. 有効にする

<html data-skin="pixel" data-hud-palette="starward">

切替可能なテーマの場合は、最初の描画前にこれらを設定します(references/integration.md › フラッシュ防止トグル)。1つのエリアのみにスタイルを適用するには、両方の属性をそのコンテナに設定します。

6. コントロールで構築する

グローバル設定はすでに、タイポグラフィ、正方形の角、ネイティブ入力、セレクト、レンジスライダー、チェックボックス、スクロールバー、フォーカスリング、選択、スキャンラインを処理します。各要素にクラスで役割を与え、サイズと状態の仕様に従います:

必要なものコントロール(クラス)
関連情報のグループ化.hud-panel + .hud-titlebar(+ .hud-titlebar__actions)、本文 .hud-panel__body、セクション .hud-subhead
メインアクション.hud-btn.is-solid(インテント:accent、go、warn、info、danger)
セカンダリアクション.hud-btn
アイコンのみのアクション.hud-icon-btn + aria-label
ビューの切り替え.hud-tabs > .hud-tab[aria-selected]
2~5個の値から1つを選択.hud-segmented > button[aria-pressed]
ナビゲーション可能なリスト.hud-row[aria-current]
ラベル付き入力.hud-field > .hud-label + input/select + .hud-help / .hud-error
ドロップダウン.hud-select > select
はい/いいえ、複数から1つ.hud-check、.hud-radio(正方形のマーク)
即時オン/オフbutton.hud-switch[role=switch][aria-checked] > .hud-switch__knob
レベル / 進捗.hud-gauge + --value(data-state warn/alert)
ステータス.hud-lamp[data-state]
値、ID、パラメータ.hud-tag;カウント .hud-badge;キー kbd
メニュー、ヒント、モーダル、フィードバック.hud-menu、.hud-tooltip、.hud-backdrop > .hud-dialog、.hud-toasts > .hud-toast
データ、コード、記事table.hud-table、.hud-code、.hud-prose
コマンド / チャット入力.hud-input + data-pixel-caret
待機中、表示するものなし.hud-loader、キーの aria-busy、.hud-empty

クラスはコンポーネントソース(JSX、テンプレート)に配置し、コンポーネントライブラリの className/class プロップを介して渡します。フレームワーク内部に対するセレクタを記述するのではありません。リファクタリングに耐え、明確に読み取れます。

既存のアプリをリスタイルする場合は、まず既存の各コンポーネントを上記のテーブルにマッピングし(返信に短いリストを含めるとユーザーが追跡しやすくなります)、その後適用します。

7. 結果を確認する

  • ページのスクリーンショットを撮る(または開く)か、assets/demo.html と比較します。
  • ピクセルフォントが読み込まれたことを確認します(document.fonts、Networkタブ)。CSPがjsDelivrをブロックしている場合はセルフホストします。
  • Tabキーで移動:すべてのコントロールにフォーカスが当たり、1pxの緑色のフォーカスリングが表示されることを確認します。
  • 主要なコントロールで状態モデルを確認:ホバー、プレス、無効、ローディング、エラー。
  • 使用中のパレットでコントラストスクリプトが合格すること。

最も重要なルール

仕様書に完全な理由が記載されています。これらは最も頻繁に破られるルールです:

  • 正方形でフラット。 半径なし、ぼかし影なし、スキャンライン以外のグラデーションなし。オーバーレイのみがハードオフセットシャドウを持つ。
  • 色はそれぞれの役割を守る。 バー=構造と選択;緑=オン、強調、フォーカス;黄色=値;オレンジ=注意と警告;赤=危険。緑を装飾に使うと「オン」の意味が失われる。
  • 選択=反転。 バーの塗りつぶしに暗いテキスト;行には3pxの緑のエッジを追加。バー色の背景では、ホバーは逆方向に反転する。
  • 1つのエリアに1つのソリッドメインアクション;横に並んだアクションはそれぞれ独自のインテント色を持ち、無効時もその色を維持する(フェードアウト、アウトライン化しない)。
  • タイトルバーはパネルだけ。 テーブルとコードのヘッダーはソフトな色合い --hud-bar-soft を使用する。
  • サイズはスケールから来る:コントロールは24/28/32px、間隔は4pxグリッド、テキストは12/14/16/24/36px。

落とし穴

  • フレームワークはスコープ内で border-radius: 0 !important を強制します。丸いものを維持する(アバターなど)には、スキンをその要素を除外するコンテナにスコープします。
  • color-mix() はChrome/Edge 111、Safari 16.2、Firefox 113が必要です。古いブラウザでは --hud-bar-soft / --hud-bar-line をプレーンな色に設定します。
  • display を設定するクラスは hidden 要素を表示します。フレームワークはスコープ内で [hidden] を再び非表示にするため、トグルには hidden 属性を優先的に使用します。
  • コードからフィールドの値を設定するフレームワークは input イベントを発火しません。そのような変更後、キャレットをすぐに移動する必要がある場合は field.__pixelCaret.update() を呼び出します。
  • スキャンラインは非常に高いz-indexにあり、pointer-events: none です。邪魔になる場所(スクリーンショット、キャンバスアプリ)では data-hud-scanlines="off" でオフにします。

関連スキル