Skip to content

Commit b3869fd

Browse files
committed
feat(sample): make example cards transparent with configurable background
Add LocalExampleCardBackgroundColor CompositionLocal to ExampleCard so the sample app can provide transparent backgrounds at the root level. When transparent, border is also hidden.
1 parent 5a3e685 commit b3869fd

2 files changed

Lines changed: 22 additions & 6 deletions

File tree

  • sample/src/commonMain/kotlin/io/github/kdroidfilter/nucleus/ui/apple/macos/sample

sample/src/commonMain/kotlin/io/github/kdroidfilter/nucleus/ui/apple/macos/sample/App.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@ import com.composables.icons.lucide.TextAlignStart
7979
import com.composables.icons.lucide.TextCursorInput
8080
import com.composables.icons.lucide.ToggleLeft
8181
import com.composables.icons.lucide.TriangleAlert
82+
import androidx.compose.runtime.CompositionLocalProvider
83+
import androidx.compose.ui.graphics.Color
8284
import io.github.kdroidfilter.nucleus.ui.apple.macos.components.ColumnVisibility
85+
import io.github.kdroidfilter.nucleus.ui.apple.macos.sample.gallery.LocalExampleCardBackgroundColor
8386
import io.github.kdroidfilter.nucleus.ui.apple.macos.components.ColumnWidth
8487
import io.github.kdroidfilter.nucleus.ui.apple.macos.components.NavigationButtons
8588
import io.github.kdroidfilter.nucleus.ui.apple.macos.components.Popover
@@ -329,6 +332,7 @@ fun App() {
329332
}
330333

331334
MacosTheme(darkTheme = isDark, accentColor = accentColor, colorScheme = colorScheme, glassType = glassType) {
335+
CompositionLocalProvider(LocalExampleCardBackgroundColor provides Color.Transparent) {
332336
val toastState = rememberToastState()
333337

334338
// Navigation state — back stack + forward stack for browser-like history
@@ -583,7 +587,7 @@ fun App() {
583587
ToastHost(state = toastState)
584588
}
585589
}
586-
}
590+
}}
587591
}
588592

589593
@Composable

sample/src/commonMain/kotlin/io/github/kdroidfilter/nucleus/ui/apple/macos/sample/gallery/ExampleCard.kt

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,22 @@ import androidx.compose.foundation.layout.defaultMinSize
1515
import androidx.compose.foundation.layout.fillMaxWidth
1616
import androidx.compose.foundation.layout.padding
1717
import androidx.compose.runtime.Composable
18+
import androidx.compose.runtime.compositionLocalOf
1819
import androidx.compose.runtime.getValue
1920
import androidx.compose.runtime.mutableStateOf
2021
import androidx.compose.runtime.remember
2122
import androidx.compose.runtime.setValue
2223
import androidx.compose.ui.Alignment
2324
import androidx.compose.ui.Modifier
2425
import androidx.compose.ui.draw.clip
26+
import androidx.compose.ui.graphics.Color
2527
import androidx.compose.ui.text.font.FontWeight
2628
import androidx.compose.ui.unit.dp
2729
import io.github.kdroidfilter.nucleus.ui.apple.macos.components.Text
2830
import io.github.kdroidfilter.nucleus.ui.apple.macos.theme.MacosTheme
2931

32+
val LocalExampleCardBackgroundColor = compositionLocalOf<Color?> { null }
33+
3034
private enum class ExampleTab { Preview, Code }
3135

3236
@Composable
@@ -43,11 +47,19 @@ fun ExampleCard(
4347
Modifier
4448
.fillMaxWidth()
4549
.clip(MacosTheme.shapes.large)
46-
.border(
47-
width = 1.dp,
48-
color = MacosTheme.colorScheme.border,
49-
shape = MacosTheme.shapes.large,
50-
).background(MacosTheme.colorScheme.card),
50+
.then(
51+
if (LocalExampleCardBackgroundColor.current != null) {
52+
Modifier.background(LocalExampleCardBackgroundColor.current!!)
53+
} else {
54+
Modifier
55+
.border(
56+
width = 1.dp,
57+
color = MacosTheme.colorScheme.border,
58+
shape = MacosTheme.shapes.large,
59+
)
60+
.background(MacosTheme.colorScheme.card)
61+
}
62+
),
5163
) {
5264
// Header: title + description + tabs
5365
Column(

0 commit comments

Comments
 (0)