メインコンテンツへスキップ
menumenu tanreiexpand_morecontrasttranslate
tanreiexpand_more
はじめにWebReactSwiftUIJetpack ComposeFlutterReact Nativeプリセット自分のデザインシステムを作るAI エージェントと Tanrei を使うブランドデザイントークンデザインシステムとカスタマイズTheme Studioカラータイポグラフィアイコン形状エレベーションモーションインタラクション状態振る舞いレイアウトアクセシビリティ言葉カラートークンタイプスケールトークン形状トークンエレベーショントークンモーショントークン状態トークンスペースと寸法のトークンコンポーネントボタンメインアクションボタンセグメントボタンボタングループメニュー付きボタンツールバーコピーボタンチェックボックスラジオボタンスイッチチップメニュースライダースライダーフィールドカレンダーDateTimePickerフィールドグループラジオグループチェックボックスグループセレクトセレクトフィールドメニューバーファイルアップロードファイルピッカー 上級者向けドロップゾーンテキスト入力欄 上級者向けテキストフィールドチップフィールドフィールドコンボボックス 上級者向けコンボボックスフィールド数値入力欄 上級者向け数値フィールドカラー入力欄 上級者向けカラーフィールドワンタイムコード入力欄 上級者向けワンタイムコードフィールド埋め込みテキスト入力欄 上級者向けチャットコンポーザーカード区切り線モーダルレイヤー 上級者向けダイアログリストリスト行ボトムシートサイドシートカルーセルコードブロックテーブルポップオーバーステップアコーディオン説明リスト図アプリシェルページヘッダーツリービュータイムライン画像プレビューハンドルサイズ変更できる枠スクロールエリアバッジプログレスインジケーターメーターナンバーティッカーローディングインジケータースナックバーツールチップキーボードショートカットタグインラインコードコールアウトアバター空の状態タググループスケルトンファイル項目色見本マーキーテキストタブタブビューアプリバーナビゲーションバーナビゲーションドロワー検索リンクページネーション前後のリンクステッパーパンくずリスト目次リンクカードFAB メニューステータスTanrei の作り方コントリビューションライセンスと帰属
ホームはじめにSwiftUI

SwiftUI

Swift Package Manager で、iOS または macOS のアプリに Tanrei を追加します。

content_copyMarkdown で表示

Swift パッケージ Tanrei は、SwiftUI のビュー、テーマの環境、生成されたトークンの定数を提供します。iOS 17 以降と macOS 14 以降に対応し、Swift 6 言語モード向けに書かれています。

まだ公開していません

Tanrei はまだ Swift Package Manager にありません。プラットフォームは現在の仕様に追従してから公開し、それまで SwiftUI の CI は止めてあります。下の「ソースから」は chnotchy/tanrei からパッケージを加える方法、「公開後」は公開されてからの導入方法です。

インストール

ソースから

現在はビルドできません

SwiftUI のパッケージは、現在の仕様とトークンに追従していません。ソースは以前の版の生成されたトークンコードに合わせて書かれていて、現在のコードではコンパイルできません。追従するまで CI は止めてあり、ステータスページではそのコンポーネントを追従待ちとしています。以下はアプリに追加する手順で、パッケージが追従すれば動きます。

リポジトリをアプリの隣にクローンし、クローンをローカルパッケージとして追加します。Xcode で File → Add Package Dependencies… → Add Local… を選んで Package.swift のあるフォルダーを指定するか、自分の Package.swift に書きます。

dependencies: [
  .package(path: "../tanrei")
],
targets: [
  .target(name: "App", dependencies: [.product(name: "Tanrei", package: "tanrei")])
]

ローカルのクローンではなくリポジトリを追うには、.package(url: "https://github.com/chnotchy/tanrei", branch: "main") を使います。

公開後

Xcode で File → Add Package Dependencies… を選び、リポジトリの URL を入力します。または Package.swift に追加します。

dependencies: [
  .package(url: "https://github.com/chnotchy/tanrei", from: "<version>")
],
targets: [
  .target(name: "App", dependencies: [.product(name: "Tanrei", package: "tanrei")])
]

パッケージマニフェストはリポジトリのルートにあります。Swift Package Manager が、Git の依存関係をルートから解決するためです。Swift のリリースには、素のセマンティックバージョンのタグを付ける予定です。

使い方

import SwiftUI
import Tanrei

struct DeployView: View {
  @State private var isDeploying = false

  var body: some View {
    TanreiButton("デプロイ", variant: .filled, action: { isDeploying = true })
      .disabled(isDeploying)
  }
}

action: は仕様の click です。末尾のクロージャは icon: スロットです(TanreiButton("デプロイ", action: deploy) { Image(systemName: "arrow.up") })。disabled という引数はありません。Tanrei は SwiftUI 自身の .disabled(_:) の環境に従うので、コンテナを無効にすると、システムのコントロールと同じように、その中のボタンも無効になります。

テーマとコントラスト

既定では、Tanrei はシステムのカラースキームと、アクセシビリティ設定の「コントラストを上げる」に従います。どちらも、テーマのモディファイアーで上書きできます。

ContentView()
  .tanreiTheme(TanreiTheme(appearance: .dark, contrast: .high))

フォント

タイプスケールは、フォントがアプリに登録されていれば Inter(日本語には Noto Sans JP、コードには Roboto Mono)を使い、登録されていなければシステムフォントにフォールバックします。テキストスタイルは階層で名付けられ、環境の中のシステムにあります(@Environment(\.tanreiSystem) private var system)。セクションのタイトルには .tanreiTextStyle(system.typescale.heading2)、本文には system.typescale.body、コントロールには system.typescale.label を使います。これらは Dynamic Type に合わせて拡大縮小します。.tanreiTextStyle(system.typescale.heading1, emphasized: true) は、見出しのファミリーの強調のステップを太さに加えます。角は system.shape.cornerSmoothing に従います。0 では .circular、0 より大きければ、値にかかわらず OS の .continuous の角です。