プログラミング
Show HN: Base-GPUI - Base UIのヘッドレスコンポーネントをGPUIに移植
Show HN: Base-GPUI: A GPUI port of Base UI headless components (github.com)
要約
Base GPUIは、Base UIの豊富なヘッドレスコンポーネントAPIをGPUIネイティブに移植したライブラリです。コンポーネントはスタイリングされておらず、アプリケーション側で完全なデザインコントロールを維持できます。GPUIの即時モードレンダリングモデルに合わせて実装されており、現在も活発に開発が進められています。
全文翻訳
Base GPUI GPUIネイティブなBase UIの豊富なヘッドレスコンポーネントAPIのポートです。
Base GPUIは、Base UIの豊富なコンポーネントAPIサーフェスをGPUIに移植します。コンパウンドパーツ、制御済みおよび未制御の状態、キーボード操作、状態に応じたスタイリング、アクセシビリティセマンティクスが含まれます。
コンポーネントはスタイリングされていないため、アプリケーションはビジュアルデザインを完全に制御できます。
公開APIは、その概念がネイティブアプリケーションにきれいにマッピングされる場合はBase UIに従いますが、実装はGPUIの即時モードレンダリングモデル専用に設計されています。
重要Base GPUIは活発な開発中です。APIはバージョン1.0の前に変更される可能性があります。GPUIの活発に開発されているGitリビジョンを使用するプロジェクトで一般的なように、GitHubからインストールしてください。
インストール
[dependencies]
base-gpui = { git = "https://github.com/LukeTandjung/base-gpui" }
gpui = { git = "https://github.com/zed-industries/zed", rev = "1d029c5ff5654fb1b1e8caf4462993c8ee13a133" }
使用法
アプリケーションの起動時にBase GPUIを初期化します。
use gpui::{App, Application};
fn main() {
Application::new().run(|cx: &mut App| {
base_gpui::init(cx);
// アプリケーションウィンドウを開きます。
});
}
コンポーネントはコンパウンドパーツと状態に応じたスタイリングを公開します。
例えば、タブは単一の事前スタイリングされたウィジェットではなく、TabsRoot、TabsList、TabsTab、TabsIndicator、TabsPanelから構成されます。
コンポーネント
Base GPUIは現在、アコーディオン、ダイアログ、ボタン、チェックボックス、コンボボックス、メニュー、ポップオーバー、セレクト、スライダー、タブ、トースト、ツールチップ、その他の一般的なインターフェイスパターンのAPIを含んでいます。
各コンポーネントのコンパウンドパーツ、ビヘイビアビルダー、サポートタイプ、スタイル状態、アクセシビリティモデルについては、コンポーネントガイドを参照してください。
デザイン
Base GPUIは、Base UIの公開コンポーネントコンセプトの意図的なGPUIポートであり、Base UIのReact内部のRust翻訳ではありません。
表現力豊かなヘッドレスAPIを維持しつつ、GPUIネイティブのメカニズムを通じてビヘイビア、状態、レンダリング、アクセシビリティを実装しています。
GPUIが必要なプリミティブを公開する場所に、アクセシビリティセマンティクスとキーボードビヘイビアがコンポーネントに組み込まれています。
アップストリームのGPUIアクセシビリティAPIの欠如によって引き起こされる既知のギャップは、サイレントに近似されるのではなく、文書化されています。詳細はコンポーネントアーキテクチャを参照してください。
プロジェクト関係
Base GPUIは独立したコミュニティプロジェクトです。
Base UIまたはZedチームとは提携しておらず、承認も維持もされていません。
Base UIはコンポーネントAPIデザインにインスピレーションを与えました。
GPUIは基盤となるアプリケーションフレームワークです。
Base UIおよびGPUIの名前とロゴは、それぞれの所有者に帰属します。
ライセンスMIT