Tinyrack

Window Frame

任意のコンテンツを macOS またはブラウザーのウィンドウ枠で包み、信号機ボタンと任意のタイトルまたはアドレスバーを表示します。

主なプロパティ

プロパティ値既定値
variantmacos, browsermacos
padding (Body)none, sm, md, lgmd
partsRoot, TitleBar, Controls, Control, Title, AddressBar, Bodycompound API

インストール

pnpm add @tinyrack/ui

長い行はコード領域を横にスクロールして確認できます。

スタイル

@import '@tinyrack/ui/components/window-frame.css';

長い行はコード領域を横にスクロールして確認できます。

インポート

import { TRWindowFrame } from '@tinyrack/ui/components/window-frame';

長い行はコード領域を横にスクロールして確認できます。

プレイグラウンド

使用方法

ターミナルウィンドウ パーマリンク

シグネチャーの見た目。macOS のクロームでダークなターミナルを包みます。Controls は 3 つの信号機ボタンを自動表示し、本文は --tr-window-frame-body-* カスタムプロパティでダークになるので、枠と中身のトーンが揃います。

例

macOS とブラウザーのクローム パーマリンク

タイトル付きのアプリウィンドウには variant macos を、タイトルバーを埋めるアドレスバー付きの Web モックアップには browser を使います。どちらもターミナルに限らず実際の UI を包めます。

カスタムテーマ パーマリンク

すべてカスタムプロパティでテーマ化できます。--tr-window-frame-control-* で信号機ボタンを、--tr-window-frame-body-* で任意のパレットを塗れます。追加の variant は不要です。

API

パート基本要素主要 prop
TRWindowFrame.Rootdivvariant, render
TRWindowFrame.TitleBardivネイティブ div prop
TRWindowFrame.Controlsdiv3 つのドットを自動表示し、既定で aria-hidden
TRWindowFrame.Controldivtone(close, minimize, maximize)
TRWindowFrame.Titlespanheading にするための render
TRWindowFrame.AddressBardivネイティブ div prop
TRWindowFrame.Bodydivpadding(none, sm, md, lg)

TRWindowFrame.Root と TRWindowFrame.Title は Base UI の追加的な render 契約に対応し、 枠を <article> や <figure> に、タイトルを heading に変えられます。信号機ボタンは装飾用で、 Controls は aria-hidden を設定し操作不可の要素を描画します。本文はテーマを継承するので、 --tr-window-frame-body-background、--tr-window-frame-body-color、 --tr-window-frame-body-font でダークなターミナルに、 --tr-window-frame-control-close、--tr-window-frame-control-minimize、 --tr-window-frame-control-maximize でドットの色を変えられます。