- Kotlin 100%
| gradle | ||
| src/main | ||
| .gitignore | ||
| build.gradle.kts | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle.kts | ||
yui-design
Shared Jetpack Compose design library for the Yui apps (Kitchen, YuiNote, ...): one palette, one set of buttons and fields, one look. Change the palette or a button here once, and every app gets it.
- Package:
xyz.whiledo.yui.design, Gradle artifactxyz.whiledo.yui:yui-design - Android library, minSdk 34, Material 3 + Compose (BOM 2026.09.00)
What is inside
| Area | Contents |
|---|---|
theme/ |
YuiTheme, ThemeMode, YuiShapes, light/dark colour schemes (Raspberry / Blush palette), YuiExtraColors (extra), YuiTypography |
fonts (res/font) |
Rubik (headings), Nunito (body), Lobster (logo only), all with Cyrillic |
components/Buttons.kt |
PrimaryButton, SecondaryButton, CompactButton, morphing pill shape |
components/TextFields.kt |
YuiTextField, numberKeyboard |
components/Chips.kt |
YuiFilterChip |
components/EmptyState.kt |
EmptyState |
components/ExpressiveShapes.kt, WavyProgress.kt |
CookieShape, BloomShape, WavyProgressBar |
components/Modifiers.kt |
pressScale, pressClickable, enterAnimation, shimmer, sharedPhoto, dimmed |
Anything that knows about an app's own data (recipes, notes, photos) stays in that app.
Using it in an app
Add the library as a git submodule and include it as a composite build:
git submodule add https://git.whiledo.xyz/whileAI/yui-design.git yui-design
settings.gradle.kts:
includeBuild("yui-design")
app/build.gradle.kts:
dependencies {
implementation("xyz.whiledo.yui:yui-design")
}
Then wrap the UI in YuiTheme(mode) { ... }. Fonts are in the library's own resources, so from app code they are
xyz.whiledo.yui.design.R.font.* (the app's own R does not contain them).
After cloning an app: git clone --recurse-submodules ... (or git submodule update --init).
Updating
Change the code here, commit and push this repo, then in each app bump the submodule pointer
(git add yui-design && git commit). An app only gets the new look when it commits that pointer.
Building on its own
$env:JAVA_HOME = 'C:\Program Files\Android\Android Studio\jbr'
.\gradlew.bat assembleDebug
local.properties (with sdk.dir) is not committed.