Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ jobs:
run: cp "$BUNDLE_PATH" "artifacts/AboutLibraries-${GITHUB_REF_NAME}.intoto.jsonl"

- name: Release
uses: mikepenz/action-gh-release@2a00e201320fb618d8e705a736286b2e31aa48e2 # v3
uses: mikepenz/action-gh-release@7a1a2d94070db8d22681770f42cdb85a9c38d6ac # v3
with:
body: ${{steps.github_release.outputs.changelog}}
prerelease: ${{ contains(github.ref, '-rc') || contains(github.ref, '-b') || contains(github.ref, '-a') }}
Expand Down
15 changes: 13 additions & 2 deletions MIGRATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ The styling knobs that used to be individual `LibrariesContainer` parameters are
| `dimensions: LibraryDimensions` | `LibrariesStyle.dimensions` (`VariantDimensions`) via `LibraryDefaults.defaultVariantDimensions(...)` |
| `textStyles: LibraryTextStyles` | `LibrariesStyle.textStyles` (`VariantTextStyles`) via `LibraryDefaults.m3VariantTextStyles(...)` / `defaultVariantTextStyles(...)` |
| `shapes: LibraryShapes` | `LibrariesStyle.shapes` (`VariantShapes`) via `LibraryDefaults.defaultVariantShapes(...)` |
| `colors: LibraryColors` | Kept (chips + license dialog). Header / row / action chrome colors moved to `variantColors: VariantColors` via `LibraryDefaults.m3VariantColors(...)` / `m2VariantColors(...)` |
| `colors: LibraryColors` | Kept, but now only styles the **license dialog**. All list row colors — including the license chips — moved to `variantColors: VariantColors` via `LibraryDefaults.m3VariantColors(...)` / `m2VariantColors(...)` |
| `libraryModifier`, `onFundingClick`, per-slot lambdas (`name`/`version`/`author`/…) | Replaced by `variant` / `actionMode` / `detailMode` enums and the `libraryRow` slot |

> Note: `LibraryColors` and the legacy `LibraryDefaults.libraryColors()` / `libraryPadding()` / `libraryDimensions()` / `libraryTextStyles()` / `libraryShapes()` factories still
Expand Down Expand Up @@ -83,7 +83,7 @@ LibrariesContainer(
funding = false,
description = false,
),
colors = LibraryDefaults.libraryColors(), // chips + license dialog (unchanged)
colors = LibraryDefaults.libraryColors(), // license dialog only
variantColors = LibraryDefaults.m3VariantColors(), // header / row / action chrome
variant = LibrariesVariant.Traditional, // or .Refined
actionMode = LibraryActionMode.Chips, // or .Icons / .Links
Expand All @@ -93,6 +93,17 @@ LibrariesContainer(
)
```

**Keeping the v14 license chip colors:** v15 colors each license chip from its SPDX id via a `LicenseHueResolver` (tinted background + matching label). To restore the v14 look — one solid
color pair for every chip — disable the resolver and set the two license badge colors:

```kotlin
variantColors = LibraryDefaults.m3VariantColors(
licenseHueResolver = LicenseHueResolver.None,
licenseBadgeContainer = MaterialTheme.colorScheme.primary, // v14 `licenseChipColors.containerColor`
licenseBadgeContent = MaterialTheme.colorScheme.onPrimary, // v14 `licenseChipColors.contentColor`
)
```

**Customizing padding / dimensions / text styles / shapes:** the M2/M3 `LibrariesContainer` builds its `LibrariesStyle` internally and only exposes `variantColors`. For full
control over the remaining tokens, use the Material-agnostic `Libraries` composable from `aboutlibraries-compose` and pass a `LibrariesStyle`:

Expand Down
29 changes: 29 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -523,6 +523,35 @@ invoked from within the list item — which the `libraryRow` slot already provid
full item visual: item animation, expanded background, the variant row, and the inline-detail
expansion.

#### Static license chip colors

Since v15 the license chips are colored *per license*: a `LicenseHueResolver` maps the SPDX id
(`Apache-2.0`, `MIT`, ...) to an accent-derived hue, drawn as a tinted background with matching
label. To turn that off and paint every license chip with one fixed color pair — the v14 look —
set `LicenseHueResolver.None` together with the two license badge colors:

```kotlin
LibrariesContainer(
libraries = libraries,
modifier = Modifier.fillMaxSize(),
variantColors = LibraryDefaults.m3VariantColors(
// no per-license hue: also removes the colored dot / license tab tint in the Refined variant
licenseHueResolver = LicenseHueResolver.None,
// v14 default: solid `primary` chip with `onPrimary` label
licenseBadgeContainer = MaterialTheme.colorScheme.primary,
licenseBadgeContent = MaterialTheme.colorScheme.onPrimary,
),
)
```

Both badge colors default to `Color.Unspecified`, which keeps the dynamic behavior. Set only
`licenseHueResolver = LicenseHueResolver.None` and the chip falls back to `actionFilledContainer`
at the same low-alpha tint — a neutral, still-tinted chip.

> [!NOTE]
> `colors: LibraryColors` (`licenseChipColors`, ...) no longer feeds the list rows in v15 — it
> only styles the license dialog. Row chrome lives in `variantColors: VariantColors`.

</p>
</details>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ final val com.mikepenz.aboutlibraries.ui.compose.style/DefaultM2LicenseHueResolv
final fun <get-DefaultM2LicenseHueResolver>(): com.mikepenz.aboutlibraries.ui.compose.style/LicenseHueResolver // com.mikepenz.aboutlibraries.ui.compose.style/DefaultM2LicenseHueResolver.<get-DefaultM2LicenseHueResolver>|<get-DefaultM2LicenseHueResolver>(){}[0]

final fun (com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults).com.mikepenz.aboutlibraries.ui.compose.style/m2LibrariesStyle(kotlin/Boolean, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): com.mikepenz.aboutlibraries.ui.compose.style/LibrariesStyle // com.mikepenz.aboutlibraries.ui.compose.style/m2LibrariesStyle|m2LibrariesStyle@com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults(kotlin.Boolean;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun (com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults).com.mikepenz.aboutlibraries.ui.compose.style/m2VariantColors(com.mikepenz.aboutlibraries.ui.compose.style/ContrastLevel?, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, com.mikepenz.aboutlibraries.ui.compose.style/LicenseHueResolver?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int, kotlin/Int, kotlin/Int): com.mikepenz.aboutlibraries.ui.compose.style/VariantColors // com.mikepenz.aboutlibraries.ui.compose.style/m2VariantColors|m2VariantColors@com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults(com.mikepenz.aboutlibraries.ui.compose.style.ContrastLevel?;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;com.mikepenz.aboutlibraries.ui.compose.style.LicenseHueResolver?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int){}[0]
final fun (com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults).com.mikepenz.aboutlibraries.ui.compose.style/m2VariantColors(com.mikepenz.aboutlibraries.ui.compose.style/ContrastLevel?, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, com.mikepenz.aboutlibraries.ui.compose.style/LicenseHueResolver?, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int, kotlin/Int, kotlin/Int): com.mikepenz.aboutlibraries.ui.compose.style/VariantColors // com.mikepenz.aboutlibraries.ui.compose.style/m2VariantColors|m2VariantColors@com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults(com.mikepenz.aboutlibraries.ui.compose.style.ContrastLevel?;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;com.mikepenz.aboutlibraries.ui.compose.style.LicenseHueResolver?;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int){}[0]
final fun (com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults).com.mikepenz.aboutlibraries.ui.compose.style/m2VariantTextStyles(androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.ui.text/TextStyle?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int, kotlin/Int): com.mikepenz.aboutlibraries.ui.compose.style/VariantTextStyles // com.mikepenz.aboutlibraries.ui.compose.style/m2VariantTextStyles|m2VariantTextStyles@com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults(androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.ui.text.TextStyle?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int;kotlin.Int){}[0]
final fun (com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults).com.mikepenz.aboutlibraries.ui.compose/chipColors(androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): com.mikepenz.aboutlibraries.ui.compose/ChipColors // com.mikepenz.aboutlibraries.ui.compose/chipColors|chipColors@com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults(androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
final fun (com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults).com.mikepenz.aboutlibraries.ui.compose/libraryColors(androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, com.mikepenz.aboutlibraries.ui.compose/ChipColors?, com.mikepenz.aboutlibraries.ui.compose/ChipColors?, com.mikepenz.aboutlibraries.ui.compose/ChipColors?, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.ui.graphics/Color, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): com.mikepenz.aboutlibraries.ui.compose/LibraryColors // com.mikepenz.aboutlibraries.ui.compose/libraryColors|libraryColors@com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults(androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;com.mikepenz.aboutlibraries.ui.compose.ChipColors?;com.mikepenz.aboutlibraries.ui.compose.ChipColors?;com.mikepenz.aboutlibraries.ui.compose.ChipColors?;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int){}[0]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public final class com/mikepenz/aboutlibraries/ui/compose/style/M2LibrariesStyle

public final class com/mikepenz/aboutlibraries/ui/compose/style/M2VariantTokensKt {
public static final fun getDefaultM2LicenseHueResolver ()Lcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;
public static final fun m2VariantColors-qFui-Go (Lcom/mikepenz/aboutlibraries/ui/compose/LibraryDefaults;Lcom/mikepenz/aboutlibraries/ui/compose/style/ContrastLevel;JJJJJJJJJJJJJJJJJJJJJJJLcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;Landroidx/compose/runtime/Composer;IIII)Lcom/mikepenz/aboutlibraries/ui/compose/style/VariantColors;
public static final fun m2VariantColors-EQ6T93Q (Lcom/mikepenz/aboutlibraries/ui/compose/LibraryDefaults;Lcom/mikepenz/aboutlibraries/ui/compose/style/ContrastLevel;JJJJJJJJJJJJJJJJJJJJJJJLcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;JJLandroidx/compose/runtime/Composer;IIII)Lcom/mikepenz/aboutlibraries/ui/compose/style/VariantColors;
public static final fun m2VariantTextStyles (Lcom/mikepenz/aboutlibraries/ui/compose/LibraryDefaults;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/ui/text/TextStyle;Landroidx/compose/runtime/Composer;III)Lcom/mikepenz/aboutlibraries/ui/compose/style/VariantTextStyles;
}

Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,15 @@ fun LibraryDefaults.m2VariantColors(
sheetSurfaceVariant: Color = MaterialTheme.colors.surface,
sheetDragHandle: Color = MaterialTheme.colors.onSurface.copy(alpha = 0.24f),
licenseHueResolver: LicenseHueResolver = DefaultM2LicenseHueResolver.withPaletteFallback(defaultLicensePalette(isSystemInDarkTheme(), contrastLevel)),
licenseBadgeContainer: Color = Color.Unspecified,
licenseBadgeContent: Color = Color.Unspecified,
): VariantColors = remember(
headerBackground, headerOnBackground, headerSubtleContent, headerDivider,
rowBackground, rowExpandedBackground, rowOnBackground, rowSubtleContent, rowDivider,
actionFilledContainer, actionFilledContent, actionOutlineBorder, actionOutlineContent, actionLinkColor,
tabIdleBackground, tabIdleContent, tabActiveBackground, tabActiveBorder, tabActiveContent,
sheetScrim, sheetSurface, sheetSurfaceVariant, sheetDragHandle, licenseHueResolver, contrastLevel,
licenseBadgeContainer, licenseBadgeContent,
) {
DefaultVariantColors(
headerBackground, headerOnBackground, headerSubtleContent, headerDivider,
Expand All @@ -58,6 +61,8 @@ fun LibraryDefaults.m2VariantColors(
tabIdleBackground, tabIdleContent, tabActiveBackground, tabActiveBorder, tabActiveContent,
sheetScrim, sheetSurface, sheetSurfaceVariant, sheetDragHandle, licenseHueResolver,
contrastLevel = contrastLevel,
licenseBadgeContainer = licenseBadgeContainer,
licenseBadgeContent = licenseBadgeContent,
)
}

Expand Down
Loading
Loading