
Delivering clear, simple, modern UI components with headless structure, connected component patterns, customizable theme/tokens, built‑in charts, page patterns, and pixel‑perfect golden visual tests.
Clear, Simple, Modern.
Stylish UI は、この3つを体現した Compose Multiplatform デザインシステムです。
Android・JVM Desktop・Web(Wasm)をサポートしており、iOS(iosArm64 /
iosSimulatorArm64)は開発中です。
| 原則 | 意味 |
|---|---|
| Clear | 情報が明確であること。階層・状態・操作可否が見た目で伝わる |
| Simple | 要素が少なく、シンプルであること。装飾ではなく構造で魅せる |
| Modern | 最新のトレンドに合った、おしゃれなUIであること |
詳細は DESIGN.md のデザインチェックリストを参照してください。
dependencies {
implementation("io.github.segnities007:stylish-ui:<version>")
}StylishTheme(darkTheme = isSystemInDarkTheme()) {
// コンポーネントを使う
StylishConnectedCardGrid(
items = listOf(
StylishConnectedCardItem("操作可能", onClick = { }),
StylishConnectedCardItem("表示専用"),
),
columns = 2,
)
}デフォルトパラメータで Stylish UI の標準ルックが適用されます。 独自の UI を実現したい場合は、テーマまたはコンポーネントパラメータで上書きできます。
// グローバル上書き
StylishTheme(
darkTheme = false,
dimensions = StylishDimensions(
connectedCornerRadius = 20.dp,
connectedSpacing = 6.dp,
outlineWidth = 1.dp,
),
) { ... }
// 個別上書き
StylishConnectedButtonRow(items = items, spacing = 8.dp)コンポーネントは Atomic Design に従い、依存は一方向です。
patterns → organisms → molecules → atoms → foundation / theme / tokens
| 層 | パッケージ | 定義 |
|---|---|---|
| atoms | components.atoms |
単一のUI要素。Stylish コンポーネントを合成しない |
| molecules | components.molecules |
atoms + M3 プリミティブの合成 |
| organisms | components.organisms |
複数の molecules の合成 |
| patterns | components.patterns |
ページレベルのレイアウト |
Atomic Design(合成の複雑さ)とは独立に、すべてのコードは「見た目がどれだけ決まっているか」という第2の軸に乗ります。依存は一方向(Finish → Structure → Foundation)です。
Finish → Structure → Foundation
(仕上げ) (骨格) (素材)
| 層 | パッケージ | 定義 |
|---|---|---|
| Foundation(基礎) |
foundation/, tokens/, theme/
|
素材と規則。ジオメトリ計算・トークン・色/書体・判定ロジック。UIを描画しない |
| Structure(構造) | structure/ |
headlessコンポーネント。レイアウト・スロット・セマンティクスを持つが、視覚スタイル(色/elevation/角丸/アニメーション)を持たない。ジオメトリを計算し、描画をスロットに委譲 |
| Finish(仕上げ) | components/ |
Stylishの見た目をまとった完成品。Structure(またはatomsはFoundation直接)を消費 |
Stylish 接頭辞はスタイル済みFinish(StylishConnectedCardRow)、裸名はheadless Structure(ConnectedCardRow)を示します。Structureに自前のレンダラーを渡せば、同じ連結ジオメトリで独自スキンを組めます。
StylishButton(Filled/Tonal/Outlined/Text/Elevated の variant・ローディング対応), StylishIconButton, StylishRoundedIconButton, StylishFab(Regular/Small/Large), StylishChip(Assist/Filter/Input/Suggestion), StylishCard(Filled/Elevated/Outlined), StylishConnectedCard, StylishSwitch, StylishCheckbox, StylishTriStateCheckbox, StylishRadioButton, StylishSlider, StylishRangeSlider, StylishAvatar, StylishBadge, StylishBadgedBox, StylishRating, StylishNumberInput, StylishPinInput, StylishKbd, StylishSpeedDial, StylishSectionTitle, StylishHorizontalDivider, StylishVerticalDivider, StylishCircularProgressIndicator, StylishLinearProgressIndicator, StylishSpacer, StylishDialogSurface, StylishFormTextField, StylishFilledTextField, StylishSecureTextField, StylishDropdownMenu / StylishDropdownMenuItem, StylishExposedDropdownMenu, StylishDragHandle, IconButton variants(Filled/FilledTonal/Outlined + Toggle)StylishListItem, StylishSection, StylishAccordion, StylishStepper, StylishBreadcrumb, StylishPagination, StylishEditable, StylishStatistic, StylishTimeline, StylishTable, StylishDatePickerField, StylishTimePicker, StylishDateRangePicker, StylishEmptyState, StylishSnackbar, StylishSnackbarHost, StylishSwipeToDismissBox, StylishPullToRefresh, StylishCarousel, StylishSkeletonLine, StylishSkeletonAvatar, StylishSkeletonCard
StylishConnectedSegmentedControl, StylishSegmentedButton 系列, StylishDialogActions, StylishDeleteConfirmDialog, StylishAlertDialog, StylishPopover, StylishNavigationBar, StylishNavigationRail, StylishShortNavigationBar, StylishNavigationDrawer(Modal/Dismissible/Permanent), StylishTabBar, StylishSearchBar, StylishBottomSheet
StylishTopAppBar(+ CenterAligned/Large/Medium), StylishBottomAppBar, StylishBottomSheetScaffold, StylishHeader, StylishScaffold, StylishPageContent, StylishFooter
ConnectedCard / ConnectedButton / ConnectedChip / ConnectedListItem の Row/Column/Grid + LazyColumn/LazyGrid + 各 Connected*ItemContent スロット契約SimplePieChart, SimpleBarChart, SimpleLineChart(すべて common で全プラットフォーム対応)StylishTheme(dynamicColor / seedColor / shapes 対応), StylishLightColorScheme, StylishDarkColorScheme, StylishTypography, StylishColorUtils
StylishDimensions(Connectedジオメトリ + Rhythm間隔スケール + コンポーネントサイズ + elevation ラダー。テーマ経由でカスタマイズ可能), StylishAnimationTokens(モーション), StylishShapes
./gradlew jvmTest # テスト
./gradlew assemble # ビルド
./gradlew apiCheck # ABI 互換性チェック
./gradlew apiDump # ABI ダンプ更新(意図的な API 変更時)Stylish UI の品質管理に関するドキュメントです。
| ドキュメント | 内容 |
|---|---|
| DESIGN.md | デザインチェックリスト(Clear / Simple / Modern) |
| docs/design-spec.md | デザイン仕様書 |
| docs/quality-audit.md | 品質監査(欠点の列挙と進捗管理の作業ファイル) |
| ROADMAP.md | 公開ロードマップ(0.8.0 / 0.9.0 / 1.0.0) |
ゴールデンテスト(src/jvmTest/.../visual/)は、明暗テーマの描画を
ピクセル単位で検証します。初回実行でベースライン画像を記録し、以降は
比較して描画の回帰を検知します。ベースラインを更新するには対象の PNG を
削除して再実行してください。
main ブランチへの push で GitHub Pages に自動デプロイされます。
| URL | 内容 |
|---|---|
/ |
コンポーネントギャラリー(Compose Wasm) |
/api/ |
API リファレンス(Dokka) |
ローカルでの確認:
./gradlew :website-wasm:wasmJsBrowserRun # ギャラリー
./gradlew dokkaGeneratePublicationHtml # API ドキュメントRelease Please で自動化されています。 詳細は CONTRIBUTING.md を参照してください。
Clear, Simple, Modern.
Stylish UI は、この3つを体現した Compose Multiplatform デザインシステムです。
Android・JVM Desktop・Web(Wasm)をサポートしており、iOS(iosArm64 /
iosSimulatorArm64)は開発中です。
| 原則 | 意味 |
|---|---|
| Clear | 情報が明確であること。階層・状態・操作可否が見た目で伝わる |
| Simple | 要素が少なく、シンプルであること。装飾ではなく構造で魅せる |
| Modern | 最新のトレンドに合った、おしゃれなUIであること |
詳細は DESIGN.md のデザインチェックリストを参照してください。
dependencies {
implementation("io.github.segnities007:stylish-ui:<version>")
}StylishTheme(darkTheme = isSystemInDarkTheme()) {
// コンポーネントを使う
StylishConnectedCardGrid(
items = listOf(
StylishConnectedCardItem("操作可能", onClick = { }),
StylishConnectedCardItem("表示専用"),
),
columns = 2,
)
}デフォルトパラメータで Stylish UI の標準ルックが適用されます。 独自の UI を実現したい場合は、テーマまたはコンポーネントパラメータで上書きできます。
// グローバル上書き
StylishTheme(
darkTheme = false,
dimensions = StylishDimensions(
connectedCornerRadius = 20.dp,
connectedSpacing = 6.dp,
outlineWidth = 1.dp,
),
) { ... }
// 個別上書き
StylishConnectedButtonRow(items = items, spacing = 8.dp)コンポーネントは Atomic Design に従い、依存は一方向です。
patterns → organisms → molecules → atoms → foundation / theme / tokens
| 層 | パッケージ | 定義 |
|---|---|---|
| atoms | components.atoms |
単一のUI要素。Stylish コンポーネントを合成しない |
| molecules | components.molecules |
atoms + M3 プリミティブの合成 |
| organisms | components.organisms |
複数の molecules の合成 |
| patterns | components.patterns |
ページレベルのレイアウト |
Atomic Design(合成の複雑さ)とは独立に、すべてのコードは「見た目がどれだけ決まっているか」という第2の軸に乗ります。依存は一方向(Finish → Structure → Foundation)です。
Finish → Structure → Foundation
(仕上げ) (骨格) (素材)
| 層 | パッケージ | 定義 |
|---|---|---|
| Foundation(基礎) |
foundation/, tokens/, theme/
|
素材と規則。ジオメトリ計算・トークン・色/書体・判定ロジック。UIを描画しない |
| Structure(構造) | structure/ |
headlessコンポーネント。レイアウト・スロット・セマンティクスを持つが、視覚スタイル(色/elevation/角丸/アニメーション)を持たない。ジオメトリを計算し、描画をスロットに委譲 |
| Finish(仕上げ) | components/ |
Stylishの見た目をまとった完成品。Structure(またはatomsはFoundation直接)を消費 |
Stylish 接頭辞はスタイル済みFinish(StylishConnectedCardRow)、裸名はheadless Structure(ConnectedCardRow)を示します。Structureに自前のレンダラーを渡せば、同じ連結ジオメトリで独自スキンを組めます。
StylishButton(Filled/Tonal/Outlined/Text/Elevated の variant・ローディング対応), StylishIconButton, StylishRoundedIconButton, StylishFab(Regular/Small/Large), StylishChip(Assist/Filter/Input/Suggestion), StylishCard(Filled/Elevated/Outlined), StylishConnectedCard, StylishSwitch, StylishCheckbox, StylishTriStateCheckbox, StylishRadioButton, StylishSlider, StylishRangeSlider, StylishAvatar, StylishBadge, StylishBadgedBox, StylishRating, StylishNumberInput, StylishPinInput, StylishKbd, StylishSpeedDial, StylishSectionTitle, StylishHorizontalDivider, StylishVerticalDivider, StylishCircularProgressIndicator, StylishLinearProgressIndicator, StylishSpacer, StylishDialogSurface, StylishFormTextField, StylishFilledTextField, StylishSecureTextField, StylishDropdownMenu / StylishDropdownMenuItem, StylishExposedDropdownMenu, StylishDragHandle, IconButton variants(Filled/FilledTonal/Outlined + Toggle)StylishListItem, StylishSection, StylishAccordion, StylishStepper, StylishBreadcrumb, StylishPagination, StylishEditable, StylishStatistic, StylishTimeline, StylishTable, StylishDatePickerField, StylishTimePicker, StylishDateRangePicker, StylishEmptyState, StylishSnackbar, StylishSnackbarHost, StylishSwipeToDismissBox, StylishPullToRefresh, StylishCarousel, StylishSkeletonLine, StylishSkeletonAvatar, StylishSkeletonCard
StylishConnectedSegmentedControl, StylishSegmentedButton 系列, StylishDialogActions, StylishDeleteConfirmDialog, StylishAlertDialog, StylishPopover, StylishNavigationBar, StylishNavigationRail, StylishShortNavigationBar, StylishNavigationDrawer(Modal/Dismissible/Permanent), StylishTabBar, StylishSearchBar, StylishBottomSheet
StylishTopAppBar(+ CenterAligned/Large/Medium), StylishBottomAppBar, StylishBottomSheetScaffold, StylishHeader, StylishScaffold, StylishPageContent, StylishFooter
ConnectedCard / ConnectedButton / ConnectedChip / ConnectedListItem の Row/Column/Grid + LazyColumn/LazyGrid + 各 Connected*ItemContent スロット契約SimplePieChart, SimpleBarChart, SimpleLineChart(すべて common で全プラットフォーム対応)StylishTheme(dynamicColor / seedColor / shapes 対応), StylishLightColorScheme, StylishDarkColorScheme, StylishTypography, StylishColorUtils
StylishDimensions(Connectedジオメトリ + Rhythm間隔スケール + コンポーネントサイズ + elevation ラダー。テーマ経由でカスタマイズ可能), StylishAnimationTokens(モーション), StylishShapes
./gradlew jvmTest # テスト
./gradlew assemble # ビルド
./gradlew apiCheck # ABI 互換性チェック
./gradlew apiDump # ABI ダンプ更新(意図的な API 変更時)Stylish UI の品質管理に関するドキュメントです。
| ドキュメント | 内容 |
|---|---|
| DESIGN.md | デザインチェックリスト(Clear / Simple / Modern) |
| docs/design-spec.md | デザイン仕様書 |
| docs/quality-audit.md | 品質監査(欠点の列挙と進捗管理の作業ファイル) |
| ROADMAP.md | 公開ロードマップ(0.8.0 / 0.9.0 / 1.0.0) |
ゴールデンテスト(src/jvmTest/.../visual/)は、明暗テーマの描画を
ピクセル単位で検証します。初回実行でベースライン画像を記録し、以降は
比較して描画の回帰を検知します。ベースラインを更新するには対象の PNG を
削除して再実行してください。
main ブランチへの push で GitHub Pages に自動デプロイされます。
| URL | 内容 |
|---|---|
/ |
コンポーネントギャラリー(Compose Wasm) |
/api/ |
API リファレンス(Dokka) |
ローカルでの確認:
./gradlew :website-wasm:wasmJsBrowserRun # ギャラリー
./gradlew dokkaGeneratePublicationHtml # API ドキュメントRelease Please で自動化されています。 詳細は CONTRIBUTING.md を参照してください。