From 18279f732eef0f4f148f27138308a50991e70b96 Mon Sep 17 00:00:00 2001
From: "renovate-mike[bot]"
<274037420+renovate-mike[bot]@users.noreply.github.com>
Date: Thu, 20 Aug 2026 08:19:17 +0000
Subject: [PATCH 1/2] chore(deps): update mikepenz/action-gh-release digest to
7a1a2d9 (#1449)
Co-authored-by: renovate-mike[bot] <274037420+renovate-mike[bot]@users.noreply.github.com>
---
.github/workflows/ci.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 77f2a709d..a5a1c42b3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -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') }}
From 2836d810a68fe57818b5dbf64e48def606a489d6 Mon Sep 17 00:00:00 2001
From: Mike Penz
Date: Thu, 20 Aug 2026 14:58:57 +0200
Subject: [PATCH 2/2] feat(compose): add `licenseBadgeContainer` /
`licenseBadgeContent` variant colors
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Since v15 the license chips in the Traditional row are colored per license via
the `LicenseHueResolver` — a tinted background with a matching label. There was
no way to opt out into a single fixed color pair: `LicenseHueResolver.None` fell
back to `actionFilledContainer` at the badge alpha while the label used
`actionFilledContent` (e.g. `onPrimary`), which is unreadable on the tint.
Adds two opt-in tokens to `VariantColors`, both defaulting to
`Color.Unspecified` so the dynamic behavior is unchanged. Setting them together
with `LicenseHueResolver.None` restores the v14 look (solid `primary` chip with
`onPrimary` label):
variantColors = LibraryDefaults.m3VariantColors(
licenseHueResolver = LicenseHueResolver.None,
licenseBadgeContainer = MaterialTheme.colorScheme.primary,
licenseBadgeContent = MaterialTheme.colorScheme.onPrimary,
)
- threaded through `defaultVariantColors`, `m2VariantColors`, `m3VariantColors`
- `PreviewLibrariesStaticLicenseChips` screenshot tests for M2 and M3
- README: "Static license chip colors" section
- MIGRATION.md: `colors: LibraryColors` only styles the license dialog in v15 —
it no longer feeds the list rows, which is what the previous wording implied
Note: the mangled names of the `*VariantColors` factories change, so this is
binary-breaking for those functions (source-compatible).
Relates to #1434
---
MIGRATION.md | 15 +++++++--
README.md | 29 ++++++++++++++++++
.../api/aboutlibraries-compose-m2.klib.api | 2 +-
.../api/jvm/aboutlibraries-compose-m2.api | 2 +-
.../ui/compose/style/M2VariantTokens.kt | 5 +++
.../api/aboutlibraries-compose-m3.klib.api | 2 +-
.../api/jvm/aboutlibraries-compose-m3.api | 2 +-
.../ui/compose/m3/style/M3VariantTokens.kt | 5 +++
.../api/aboutlibraries-compose.klib.api | 12 ++++++--
.../api/jvm/aboutlibraries-compose.api | 15 +++++++--
.../ui/compose/style/VariantTokens.kt | 20 +++++++++++-
.../variant/traditional/TraditionalRow.kt | 5 +--
.../screenshot/m2/M2SnapshotTests.kt | 22 +++++++++++++
.../screenshot/m3/M3SnapshotTests.kt | 22 +++++++++++++
...librariesstaticlicensechips.dark_night.png | Bin 0 -> 56119 bytes
...eviewlibrariesstaticlicensechips.light.png | Bin 0 -> 55233 bytes
...librariesstaticlicensechips.dark_night.png | Bin 0 -> 60971 bytes
...eviewlibrariesstaticlicensechips.light.png | Bin 0 -> 60204 bytes
...p_\302\267_mobile_\302\267_dark_night.png" | Bin 71361 -> 71629 bytes
...le_app_\302\267_mobile_\302\267_light.png" | Bin 72084 -> 72352 bytes
20 files changed, 144 insertions(+), 14 deletions(-)
create mode 100644 sample/android/src/test/snapshots/images/Paparazzi_Preview_Test_com.mikepenz.aboutlibraries.screenshot.m2.m2snapshottestskt.previewlibrariesstaticlicensechips.dark_night.png
create mode 100644 sample/android/src/test/snapshots/images/Paparazzi_Preview_Test_com.mikepenz.aboutlibraries.screenshot.m2.m2snapshottestskt.previewlibrariesstaticlicensechips.light.png
create mode 100644 sample/android/src/test/snapshots/images/Paparazzi_Preview_Test_com.mikepenz.aboutlibraries.screenshot.m3.m3snapshottestskt.previewlibrariesstaticlicensechips.dark_night.png
create mode 100644 sample/android/src/test/snapshots/images/Paparazzi_Preview_Test_com.mikepenz.aboutlibraries.screenshot.m3.m3snapshottestskt.previewlibrariesstaticlicensechips.light.png
diff --git a/MIGRATION.md b/MIGRATION.md
index 2631bebc6..577fb00cc 100644
--- a/MIGRATION.md
+++ b/MIGRATION.md
@@ -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
@@ -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
@@ -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`:
diff --git a/README.md b/README.md
index 4adce84fe..fc2a9ba54 100644
--- a/README.md
+++ b/README.md
@@ -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`.
+
diff --git a/aboutlibraries-compose-m2/api/aboutlibraries-compose-m2.klib.api b/aboutlibraries-compose-m2/api/aboutlibraries-compose-m2.klib.api
index 47653decd..feecbf2d7 100644
--- a/aboutlibraries-compose-m2/api/aboutlibraries-compose-m2.klib.api
+++ b/aboutlibraries-compose-m2/api/aboutlibraries-compose-m2.klib.api
@@ -10,7 +10,7 @@ final val com.mikepenz.aboutlibraries.ui.compose.style/DefaultM2LicenseHueResolv
final fun (): com.mikepenz.aboutlibraries.ui.compose.style/LicenseHueResolver // com.mikepenz.aboutlibraries.ui.compose.style/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]
diff --git a/aboutlibraries-compose-m2/api/jvm/aboutlibraries-compose-m2.api b/aboutlibraries-compose-m2/api/jvm/aboutlibraries-compose-m2.api
index 1f32da476..7510db930 100644
--- a/aboutlibraries-compose-m2/api/jvm/aboutlibraries-compose-m2.api
+++ b/aboutlibraries-compose-m2/api/jvm/aboutlibraries-compose-m2.api
@@ -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;
}
diff --git a/aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/style/M2VariantTokens.kt b/aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/style/M2VariantTokens.kt
index 9e55ae9d1..aaa5268d3 100644
--- a/aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/style/M2VariantTokens.kt
+++ b/aboutlibraries-compose-m2/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/style/M2VariantTokens.kt
@@ -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,
@@ -58,6 +61,8 @@ fun LibraryDefaults.m2VariantColors(
tabIdleBackground, tabIdleContent, tabActiveBackground, tabActiveBorder, tabActiveContent,
sheetScrim, sheetSurface, sheetSurfaceVariant, sheetDragHandle, licenseHueResolver,
contrastLevel = contrastLevel,
+ licenseBadgeContainer = licenseBadgeContainer,
+ licenseBadgeContent = licenseBadgeContent,
)
}
diff --git a/aboutlibraries-compose-m3/api/aboutlibraries-compose-m3.klib.api b/aboutlibraries-compose-m3/api/aboutlibraries-compose-m3.klib.api
index b8f335516..6a01027ed 100644
--- a/aboutlibraries-compose-m3/api/aboutlibraries-compose-m3.klib.api
+++ b/aboutlibraries-compose-m3/api/aboutlibraries-compose-m3.klib.api
@@ -16,7 +16,7 @@ final val com.mikepenz.aboutlibraries.ui.compose.m3.style/LightM3LicensePalette
final fun (): kotlin.collections/Map // com.mikepenz.aboutlibraries.ui.compose.m3.style/LightM3LicensePalette.|(){}[0]
final fun (com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults).com.mikepenz.aboutlibraries.ui.compose.m3.style/m3LibrariesStyle(kotlin/Boolean, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int): com.mikepenz.aboutlibraries.ui.compose.style/LibrariesStyle // com.mikepenz.aboutlibraries.ui.compose.m3.style/m3LibrariesStyle|m3LibrariesStyle@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.m3.style/m3VariantColors(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.m3.style/m3VariantColors|m3VariantColors@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.m3.style/m3VariantColors(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.m3.style/m3VariantColors|m3VariantColors@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.m3.style/m3VariantTextStyles(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.m3.style/m3VariantTextStyles|m3VariantTextStyles@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.m3/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.m3/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.m3/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.m3/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]
diff --git a/aboutlibraries-compose-m3/api/jvm/aboutlibraries-compose-m3.api b/aboutlibraries-compose-m3/api/jvm/aboutlibraries-compose-m3.api
index 02e787c9d..1c75bf84e 100644
--- a/aboutlibraries-compose-m3/api/jvm/aboutlibraries-compose-m3.api
+++ b/aboutlibraries-compose-m3/api/jvm/aboutlibraries-compose-m3.api
@@ -41,7 +41,7 @@ public final class com/mikepenz/aboutlibraries/ui/compose/m3/style/M3VariantToke
public static final fun getLightM3LicensePalette ()Ljava/util/Map;
public static final fun m3LicenseHueResolver (Ljava/util/Map;)Lcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;
public static synthetic fun m3LicenseHueResolver$default (Ljava/util/Map;ILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;
- public static final fun m3VariantColors-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 m3VariantColors-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 m3VariantTextStyles (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;
}
diff --git a/aboutlibraries-compose-m3/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/style/M3VariantTokens.kt b/aboutlibraries-compose-m3/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/style/M3VariantTokens.kt
index f3526e400..48fe606c4 100644
--- a/aboutlibraries-compose-m3/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/style/M3VariantTokens.kt
+++ b/aboutlibraries-compose-m3/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/m3/style/M3VariantTokens.kt
@@ -204,12 +204,15 @@ fun LibraryDefaults.m3VariantColors(
sheetSurfaceVariant: Color = MaterialTheme.colorScheme.surfaceContainerHighest,
sheetDragHandle: Color = MaterialTheme.colorScheme.outline.copy(alpha = 0.5f),
licenseHueResolver: LicenseHueResolver = accentDerivedLicenseHueResolver(contrastLevel = 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,
@@ -218,6 +221,8 @@ fun LibraryDefaults.m3VariantColors(
tabIdleBackground, tabIdleContent, tabActiveBackground, tabActiveBorder, tabActiveContent,
sheetScrim, sheetSurface, sheetSurfaceVariant, sheetDragHandle, licenseHueResolver,
contrastLevel = contrastLevel,
+ licenseBadgeContainer = licenseBadgeContainer,
+ licenseBadgeContent = licenseBadgeContent,
)
}
diff --git a/aboutlibraries-compose/api/aboutlibraries-compose.klib.api b/aboutlibraries-compose/api/aboutlibraries-compose.klib.api
index 06129f0fa..39e04f738 100644
--- a/aboutlibraries-compose/api/aboutlibraries-compose.klib.api
+++ b/aboutlibraries-compose/api/aboutlibraries-compose.klib.api
@@ -137,6 +137,10 @@ abstract interface com.mikepenz.aboutlibraries.ui.compose.style/VariantColors {
abstract fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.style/VariantColors.tabIdleBackground.|(){}[0]
abstract val tabIdleContent // com.mikepenz.aboutlibraries.ui.compose.style/VariantColors.tabIdleContent|{}tabIdleContent[0]
abstract fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.style/VariantColors.tabIdleContent.|(){}[0]
+ open val licenseBadgeContainer // com.mikepenz.aboutlibraries.ui.compose.style/VariantColors.licenseBadgeContainer|{}licenseBadgeContainer[0]
+ open fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.style/VariantColors.licenseBadgeContainer.|(){}[0]
+ open val licenseBadgeContent // com.mikepenz.aboutlibraries.ui.compose.style/VariantColors.licenseBadgeContent|{}licenseBadgeContent[0]
+ open fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.style/VariantColors.licenseBadgeContent.|(){}[0]
}
abstract interface com.mikepenz.aboutlibraries.ui.compose.style/VariantDimensions { // com.mikepenz.aboutlibraries.ui.compose.style/VariantDimensions|null[0]
@@ -337,7 +341,7 @@ abstract interface com.mikepenz.aboutlibraries.ui.compose/LibraryTextStyles { //
}
final class com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors : com.mikepenz.aboutlibraries.ui.compose.style/VariantColors { // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors|null[0]
- constructor (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, com.mikepenz.aboutlibraries.ui.compose.style/ContrastLevel = ...) // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.|(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;com.mikepenz.aboutlibraries.ui.compose.style.ContrastLevel){}[0]
+ constructor (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, com.mikepenz.aboutlibraries.ui.compose.style/ContrastLevel = ..., androidx.compose.ui.graphics/Color = ..., androidx.compose.ui.graphics/Color = ...) // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.|(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;com.mikepenz.aboutlibraries.ui.compose.style.ContrastLevel;androidx.compose.ui.graphics.Color;androidx.compose.ui.graphics.Color){}[0]
final val actionFilledContainer // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.actionFilledContainer|{}actionFilledContainer[0]
final fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.actionFilledContainer.|(){}[0]
@@ -359,6 +363,10 @@ final class com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors :
final fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.headerOnBackground.|(){}[0]
final val headerSubtleContent // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.headerSubtleContent|{}headerSubtleContent[0]
final fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.headerSubtleContent.|(){}[0]
+ final val licenseBadgeContainer // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.licenseBadgeContainer|{}licenseBadgeContainer[0]
+ final fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.licenseBadgeContainer.|(){}[0]
+ final val licenseBadgeContent // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.licenseBadgeContent|{}licenseBadgeContent[0]
+ final fun (): androidx.compose.ui.graphics/Color // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.licenseBadgeContent.|(){}[0]
final val licenseHueResolver // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.licenseHueResolver|{}licenseHueResolver[0]
final fun (): com.mikepenz.aboutlibraries.ui.compose.style/LicenseHueResolver // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.licenseHueResolver.|(){}[0]
final val rowBackground // com.mikepenz.aboutlibraries.ui.compose.style/DefaultVariantColors.rowBackground|{}rowBackground[0]
@@ -704,7 +712,7 @@ final val com.mikepenz.aboutlibraries.ui.compose/com_mikepenz_aboutlibraries_ui_
final fun (androidx.compose.foundation.lazy/LazyItemScope).com.mikepenz.aboutlibraries.ui.compose.variant/LibraryRow(com.mikepenz.aboutlibraries.entity/Library, kotlin/Boolean, kotlin/Function0, com.mikepenz.aboutlibraries.ui.compose.style/LibrariesStyle, androidx.compose.ui/Modifier?, com.mikepenz.aboutlibraries.ui.compose.variant/LibrariesVariant?, com.mikepenz.aboutlibraries.ui.compose.variant/LibrariesDensity?, com.mikepenz.aboutlibraries.ui.compose.variant/LibraryBadges?, androidx.compose.ui.graphics/Color, kotlin/Function3?, androidx.compose.runtime/Composer?, kotlin/Int, kotlin/Int, kotlin/Int) // com.mikepenz.aboutlibraries.ui.compose.variant/LibraryRow|LibraryRow@androidx.compose.foundation.lazy.LazyItemScope(com.mikepenz.aboutlibraries.entity.Library;kotlin.Boolean;kotlin.Function0;com.mikepenz.aboutlibraries.ui.compose.style.LibrariesStyle;androidx.compose.ui.Modifier?;com.mikepenz.aboutlibraries.ui.compose.variant.LibrariesVariant?;com.mikepenz.aboutlibraries.ui.compose.variant.LibrariesDensity?;com.mikepenz.aboutlibraries.ui.compose.variant.LibraryBadges?;androidx.compose.ui.graphics.Color;kotlin.Function3?;androidx.compose.runtime.Composer?;kotlin.Int;kotlin.Int;kotlin.Int){}[0]
final fun (com.mikepenz.aboutlibraries.ui.compose.style/LicenseHueResolver).com.mikepenz.aboutlibraries.ui.compose.style/withPaletteFallback(kotlin.collections/List): com.mikepenz.aboutlibraries.ui.compose.style/LicenseHueResolver // com.mikepenz.aboutlibraries.ui.compose.style/withPaletteFallback|withPaletteFallback@com.mikepenz.aboutlibraries.ui.compose.style.LicenseHueResolver(kotlin.collections.List){}[0]
-final fun (com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults).com.mikepenz.aboutlibraries.ui.compose.style/defaultVariantColors(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/defaultVariantColors|defaultVariantColors@com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults(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/defaultVariantColors(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/defaultVariantColors|defaultVariantColors@com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults(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/defaultVariantDimensions(androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ..., kotlin/Float = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.ui.unit/Dp = ...): com.mikepenz.aboutlibraries.ui.compose.style/VariantDimensions // com.mikepenz.aboutlibraries.ui.compose.style/defaultVariantDimensions|defaultVariantDimensions@com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults(androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;kotlin.Float;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp;androidx.compose.ui.unit.Dp){}[0]
final fun (com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults).com.mikepenz.aboutlibraries.ui.compose.style/defaultVariantPadding(androidx.compose.foundation.layout/PaddingValues = ..., androidx.compose.foundation.layout/PaddingValues = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.foundation.layout/PaddingValues = ..., androidx.compose.foundation.layout/PaddingValues = ..., androidx.compose.foundation.layout/PaddingValues = ..., androidx.compose.foundation.layout/PaddingValues = ..., androidx.compose.ui.unit/Dp = ..., androidx.compose.foundation.layout/PaddingValues = ..., androidx.compose.foundation.layout/PaddingValues = ..., androidx.compose.foundation.layout/PaddingValues = ...): com.mikepenz.aboutlibraries.ui.compose.style/VariantPadding // com.mikepenz.aboutlibraries.ui.compose.style/defaultVariantPadding|defaultVariantPadding@com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults(androidx.compose.foundation.layout.PaddingValues;androidx.compose.foundation.layout.PaddingValues;androidx.compose.ui.unit.Dp;androidx.compose.foundation.layout.PaddingValues;androidx.compose.foundation.layout.PaddingValues;androidx.compose.foundation.layout.PaddingValues;androidx.compose.foundation.layout.PaddingValues;androidx.compose.ui.unit.Dp;androidx.compose.foundation.layout.PaddingValues;androidx.compose.foundation.layout.PaddingValues;androidx.compose.foundation.layout.PaddingValues){}[0]
final fun (com.mikepenz.aboutlibraries.ui.compose/LibraryDefaults).com.mikepenz.aboutlibraries.ui.compose.style/defaultVariantShapes(androidx.compose.ui.graphics/Shape = ..., androidx.compose.ui.graphics/Shape = ..., androidx.compose.ui.graphics/Shape = ..., androidx.compose.ui.graphics/Shape = ..., androidx.compose.ui.graphics/Shape = ..., androidx.compose.ui.graphics/Shape = ..., androidx.compose.ui.graphics/Shape = ..., androidx.compose.ui.graphics/Shape = ...): com.mikepenz.aboutlibraries.ui.compose.style/VariantShapes // com.mikepenz.aboutlibraries.ui.compose.style/defaultVariantShapes|defaultVariantShapes@com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults(androidx.compose.ui.graphics.Shape;androidx.compose.ui.graphics.Shape;androidx.compose.ui.graphics.Shape;androidx.compose.ui.graphics.Shape;androidx.compose.ui.graphics.Shape;androidx.compose.ui.graphics.Shape;androidx.compose.ui.graphics.Shape;androidx.compose.ui.graphics.Shape){}[0]
diff --git a/aboutlibraries-compose/api/jvm/aboutlibraries-compose.api b/aboutlibraries-compose/api/jvm/aboutlibraries-compose.api
index 054fb7ef0..eac4cfbac 100644
--- a/aboutlibraries-compose/api/jvm/aboutlibraries-compose.api
+++ b/aboutlibraries-compose/api/jvm/aboutlibraries-compose.api
@@ -115,8 +115,8 @@ public final class com/mikepenz/aboutlibraries/ui/compose/style/ContrastLevel :
public final class com/mikepenz/aboutlibraries/ui/compose/style/DefaultVariantColors : com/mikepenz/aboutlibraries/ui/compose/style/VariantColors {
public static final field $stable I
- public synthetic fun (JJJJJJJJJJJJJJJJJJJJJJJLcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;Lcom/mikepenz/aboutlibraries/ui/compose/style/ContrastLevel;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
- public synthetic fun (JJJJJJJJJJJJJJJJJJJJJJJLcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;Lcom/mikepenz/aboutlibraries/ui/compose/style/ContrastLevel;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
+ public synthetic fun (JJJJJJJJJJJJJJJJJJJJJJJLcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;Lcom/mikepenz/aboutlibraries/ui/compose/style/ContrastLevel;JJILkotlin/jvm/internal/DefaultConstructorMarker;)V
+ public synthetic fun (JJJJJJJJJJJJJJJJJJJJJJJLcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;Lcom/mikepenz/aboutlibraries/ui/compose/style/ContrastLevel;JJLkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun getActionFilledContainer-0d7_KjU ()J
public fun getActionFilledContent-0d7_KjU ()J
public fun getActionLinkColor-0d7_KjU ()J
@@ -127,6 +127,8 @@ public final class com/mikepenz/aboutlibraries/ui/compose/style/DefaultVariantCo
public fun getHeaderDivider-0d7_KjU ()J
public fun getHeaderOnBackground-0d7_KjU ()J
public fun getHeaderSubtleContent-0d7_KjU ()J
+ public fun getLicenseBadgeContainer-0d7_KjU ()J
+ public fun getLicenseBadgeContent-0d7_KjU ()J
public fun getLicenseHueResolver ()Lcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;
public fun getRowBackground-0d7_KjU ()J
public fun getRowDivider-0d7_KjU ()J
@@ -300,6 +302,8 @@ public abstract interface class com/mikepenz/aboutlibraries/ui/compose/style/Var
public abstract fun getHeaderDivider-0d7_KjU ()J
public abstract fun getHeaderOnBackground-0d7_KjU ()J
public abstract fun getHeaderSubtleContent-0d7_KjU ()J
+ public fun getLicenseBadgeContainer-0d7_KjU ()J
+ public fun getLicenseBadgeContent-0d7_KjU ()J
public abstract fun getLicenseHueResolver ()Lcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;
public abstract fun getRowBackground-0d7_KjU ()J
public abstract fun getRowDivider-0d7_KjU ()J
@@ -317,6 +321,11 @@ public abstract interface class com/mikepenz/aboutlibraries/ui/compose/style/Var
public abstract fun getTabIdleContent-0d7_KjU ()J
}
+public final class com/mikepenz/aboutlibraries/ui/compose/style/VariantColors$DefaultImpls {
+ public static fun getLicenseBadgeContainer-0d7_KjU (Lcom/mikepenz/aboutlibraries/ui/compose/style/VariantColors;)J
+ public static fun getLicenseBadgeContent-0d7_KjU (Lcom/mikepenz/aboutlibraries/ui/compose/style/VariantColors;)J
+}
+
public abstract interface class com/mikepenz/aboutlibraries/ui/compose/style/VariantDimensions {
public abstract fun getActionIconInnerSize-D9Ej5fM ()F
public abstract fun getActionIconSize-D9Ej5fM ()F
@@ -382,7 +391,7 @@ public abstract interface class com/mikepenz/aboutlibraries/ui/compose/style/Var
}
public final class com/mikepenz/aboutlibraries/ui/compose/style/VariantTokensKt {
- public static final fun defaultVariantColors-qJfrjvo (Lcom/mikepenz/aboutlibraries/ui/compose/LibraryDefaults;JJJJJJJJJJJJJJJJJJJJJJJLcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;Landroidx/compose/runtime/Composer;IIII)Lcom/mikepenz/aboutlibraries/ui/compose/style/VariantColors;
+ public static final fun defaultVariantColors-VYEDziw (Lcom/mikepenz/aboutlibraries/ui/compose/LibraryDefaults;JJJJJJJJJJJJJJJJJJJJJJJLcom/mikepenz/aboutlibraries/ui/compose/style/LicenseHueResolver;JJLandroidx/compose/runtime/Composer;IIII)Lcom/mikepenz/aboutlibraries/ui/compose/style/VariantColors;
public static final fun defaultVariantDimensions-BbNTOh4 (Lcom/mikepenz/aboutlibraries/ui/compose/LibraryDefaults;FFFFFFFFFFFFFF)Lcom/mikepenz/aboutlibraries/ui/compose/style/VariantDimensions;
public static synthetic fun defaultVariantDimensions-BbNTOh4$default (Lcom/mikepenz/aboutlibraries/ui/compose/LibraryDefaults;FFFFFFFFFFFFFFILjava/lang/Object;)Lcom/mikepenz/aboutlibraries/ui/compose/style/VariantDimensions;
public static final fun defaultVariantPadding-jR4esIQ (Lcom/mikepenz/aboutlibraries/ui/compose/LibraryDefaults;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;FLandroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;FLandroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;Landroidx/compose/foundation/layout/PaddingValues;)Lcom/mikepenz/aboutlibraries/ui/compose/style/VariantPadding;
diff --git a/aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/style/VariantTokens.kt b/aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/style/VariantTokens.kt
index bbb54013c..5b4d64f99 100644
--- a/aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/style/VariantTokens.kt
+++ b/aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/style/VariantTokens.kt
@@ -61,6 +61,18 @@ interface VariantColors {
val licenseHueResolver: LicenseHueResolver
val contrastLevel: ContrastLevel
+
+ /**
+ * Overrides the license badge background. Unspecified keeps the default behaviour: the
+ * license hue (or [actionFilledContainer]) at a low alpha tint.
+ */
+ val licenseBadgeContainer: Color get() = Color.Unspecified
+
+ /**
+ * Overrides the license badge label color. Unspecified keeps the default behaviour: the
+ * license hue (or [actionFilledContent]).
+ */
+ val licenseBadgeContent: Color get() = Color.Unspecified
}
@Immutable
@@ -90,6 +102,8 @@ class DefaultVariantColors(
override val sheetDragHandle: Color,
override val licenseHueResolver: LicenseHueResolver,
override val contrastLevel: ContrastLevel = ContrastLevel.Normal,
+ override val licenseBadgeContainer: Color = Color.Unspecified,
+ override val licenseBadgeContent: Color = Color.Unspecified,
) : VariantColors
/**
@@ -307,13 +321,15 @@ fun LibraryDefaults.defaultVariantColors(
sheetSurfaceVariant: Color = Color.Unspecified,
sheetDragHandle: Color = Color.Unspecified,
licenseHueResolver: LicenseHueResolver = LicenseHueResolver.None,
+ 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,
+ licenseHueResolver, licenseBadgeContainer, licenseBadgeContent,
) {
DefaultVariantColors(
headerBackground, headerOnBackground, headerSubtleContent, headerDivider,
@@ -322,6 +338,8 @@ fun LibraryDefaults.defaultVariantColors(
tabIdleBackground, tabIdleContent, tabActiveBackground, tabActiveBorder, tabActiveContent,
sheetScrim, sheetSurface, sheetSurfaceVariant, sheetDragHandle,
licenseHueResolver,
+ licenseBadgeContainer = licenseBadgeContainer,
+ licenseBadgeContent = licenseBadgeContent,
)
}
diff --git a/aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/variant/traditional/TraditionalRow.kt b/aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/variant/traditional/TraditionalRow.kt
index 87938a6bd..dc425abb9 100644
--- a/aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/variant/traditional/TraditionalRow.kt
+++ b/aboutlibraries-compose/src/commonMain/kotlin/com/mikepenz/aboutlibraries/ui/compose/variant/traditional/TraditionalRow.kt
@@ -156,8 +156,9 @@ private fun LicenseBadge(
) {
val onBg = colors.rowOnBackground.orFallback(Color.Black)
val badgeAlpha = if (colors.contrastLevel == ContrastLevel.High) 0.22f else 0.15f
- val container = (hue ?: colors.actionFilledContainer.orFallback(onBg)).copy(alpha = badgeAlpha)
- val content = hue ?: colors.actionFilledContent.orFallback(onBg)
+ val container = colors.licenseBadgeContainer
+ .orFallback((hue ?: colors.actionFilledContainer.orFallback(onBg)).copy(alpha = badgeAlpha))
+ val content = colors.licenseBadgeContent.orFallback(hue ?: colors.actionFilledContent.orFallback(onBg))
val borderMod = if (colors.contrastLevel == ContrastLevel.High)
Modifier.border(1.dp, content.copy(alpha = 0.5f), shapes.licenseTokenShape)
else Modifier
diff --git a/sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/m2/M2SnapshotTests.kt b/sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/m2/M2SnapshotTests.kt
index 49bcda9ce..c050973ff 100644
--- a/sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/m2/M2SnapshotTests.kt
+++ b/sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/m2/M2SnapshotTests.kt
@@ -18,6 +18,8 @@ import androidx.compose.ui.text.font.FontWeight
import com.mikepenz.aboutlibraries.screenshot.fakeLibraries
import com.mikepenz.aboutlibraries.ui.compose.LibrariesContainer
import com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults
+import com.mikepenz.aboutlibraries.ui.compose.style.LicenseHueResolver
+import com.mikepenz.aboutlibraries.ui.compose.style.m2VariantColors
import com.mikepenz.aboutlibraries.ui.compose.style.m2VariantTextStyles
import com.mikepenz.aboutlibraries.ui.compose.variant.LibraryBadges
@@ -55,6 +57,26 @@ fun PreviewLibrariesCustomTextStyles() = Theme {
}
}
+/**
+ * The v14 look: static, solid `primary` license chips instead of the v15 accent-derived tint.
+ * Documented in the README under "Static license chip colors".
+ */
+@PreviewLightDark
+@Composable
+fun PreviewLibrariesStaticLicenseChips() = Theme {
+ Surface {
+ LibrariesContainer(
+ libraries = fakeLibraries,
+ modifier = Modifier.width(360.dp),
+ variantColors = LibraryDefaults.m2VariantColors(
+ licenseHueResolver = LicenseHueResolver.None,
+ licenseBadgeContainer = MaterialTheme.colors.primary,
+ licenseBadgeContent = MaterialTheme.colors.onPrimary,
+ ),
+ )
+ }
+}
+
@PreviewLightDark
@Composable
fun PreviewLibraryRTL() = Theme {
diff --git a/sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/m3/M3SnapshotTests.kt b/sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/m3/M3SnapshotTests.kt
index 95dd66a7e..c663428b6 100644
--- a/sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/m3/M3SnapshotTests.kt
+++ b/sample/android/src/debug/kotlin/com/mikepenz/aboutlibraries/screenshot/m3/M3SnapshotTests.kt
@@ -22,7 +22,9 @@ import androidx.compose.ui.text.font.FontWeight
import com.mikepenz.aboutlibraries.screenshot.fakeLibraries
import com.mikepenz.aboutlibraries.ui.compose.LibraryDefaults
import com.mikepenz.aboutlibraries.ui.compose.m3.LibrariesContainer
+import com.mikepenz.aboutlibraries.ui.compose.m3.style.m3VariantColors
import com.mikepenz.aboutlibraries.ui.compose.m3.style.m3VariantTextStyles
+import com.mikepenz.aboutlibraries.ui.compose.style.LicenseHueResolver
import com.mikepenz.aboutlibraries.ui.compose.variant.LibraryBadges
@Composable
@@ -85,6 +87,26 @@ fun PreviewLibraryDetailSheet() = Theme {
}
}
+/**
+ * The v14 look: static, solid `primary` license chips instead of the v15 accent-derived tint.
+ * Documented in the README under "Static license chip colors".
+ */
+@PreviewLightDark
+@Composable
+fun PreviewLibrariesStaticLicenseChips() = Theme {
+ Surface {
+ LibrariesContainer(
+ libraries = fakeLibraries,
+ modifier = Modifier.width(360.dp),
+ variantColors = LibraryDefaults.m3VariantColors(
+ licenseHueResolver = LicenseHueResolver.None,
+ licenseBadgeContainer = MaterialTheme.colorScheme.primary,
+ licenseBadgeContent = MaterialTheme.colorScheme.onPrimary,
+ ),
+ )
+ }
+}
+
@PreviewLightDark
@Composable
fun PreviewLibraryRTL() = Theme {
diff --git a/sample/android/src/test/snapshots/images/Paparazzi_Preview_Test_com.mikepenz.aboutlibraries.screenshot.m2.m2snapshottestskt.previewlibrariesstaticlicensechips.dark_night.png b/sample/android/src/test/snapshots/images/Paparazzi_Preview_Test_com.mikepenz.aboutlibraries.screenshot.m2.m2snapshottestskt.previewlibrariesstaticlicensechips.dark_night.png
new file mode 100644
index 0000000000000000000000000000000000000000..f02e74910c30dc63829791b02c72273fa81101e0
GIT binary patch
literal 56119
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