Skip to content
Open
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
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package org.jetbrains.jewel.bridge.theme

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.shape.CornerSize
import androidx.compose.ui.unit.dp
import com.intellij.util.ui.JBUI
import org.jetbrains.jewel.bridge.toComposeColor
import org.jetbrains.jewel.ui.component.styling.BannerColors
Expand All @@ -18,7 +21,7 @@ internal fun readDefaultBannerStyle(): DefaultBannerStyles =
background = JBUI.CurrentTheme.Banner.INFO_BACKGROUND.toComposeColor(),
border = JBUI.CurrentTheme.Banner.INFO_BORDER_COLOR.toComposeColor(),
),
metrics = BannerMetrics(borderWidth = borderWidth),
metrics = BannerMetrics.defaultBannerMetrics(),
),
success =
DefaultBannerStyle(
Expand All @@ -27,7 +30,7 @@ internal fun readDefaultBannerStyle(): DefaultBannerStyles =
background = JBUI.CurrentTheme.Banner.SUCCESS_BACKGROUND.toComposeColor(),
border = JBUI.CurrentTheme.Banner.SUCCESS_BORDER_COLOR.toComposeColor(),
),
metrics = BannerMetrics(borderWidth = borderWidth),
metrics = BannerMetrics.defaultBannerMetrics(),
),
warning =
DefaultBannerStyle(
Expand All @@ -36,7 +39,7 @@ internal fun readDefaultBannerStyle(): DefaultBannerStyles =
background = JBUI.CurrentTheme.Banner.WARNING_BACKGROUND.toComposeColor(),
border = JBUI.CurrentTheme.Banner.WARNING_BORDER_COLOR.toComposeColor(),
),
metrics = BannerMetrics(borderWidth = borderWidth),
metrics = BannerMetrics.defaultBannerMetrics(),
),
error =
DefaultBannerStyle(
Expand All @@ -45,7 +48,7 @@ internal fun readDefaultBannerStyle(): DefaultBannerStyles =
background = JBUI.CurrentTheme.Banner.ERROR_BACKGROUND.toComposeColor(),
border = JBUI.CurrentTheme.Banner.ERROR_BORDER_COLOR.toComposeColor(),
),
metrics = BannerMetrics(borderWidth = borderWidth),
metrics = BannerMetrics.defaultBannerMetrics(),
),
)

Expand All @@ -58,7 +61,7 @@ internal fun readInlineBannerStyle(): InlineBannerStyles =
background = JBUI.CurrentTheme.Banner.INFO_BACKGROUND.toComposeColor(),
border = JBUI.CurrentTheme.Banner.INFO_BORDER_COLOR.toComposeColor(),
),
metrics = BannerMetrics(borderWidth = borderWidth),
metrics = BannerMetrics.defaultBannerMetrics(),
),
success =
InlineBannerStyle(
Expand All @@ -67,7 +70,7 @@ internal fun readInlineBannerStyle(): InlineBannerStyles =
background = JBUI.CurrentTheme.Banner.SUCCESS_BACKGROUND.toComposeColor(),
border = JBUI.CurrentTheme.Banner.SUCCESS_BORDER_COLOR.toComposeColor(),
),
metrics = BannerMetrics(borderWidth = borderWidth),
metrics = BannerMetrics.defaultBannerMetrics(),
),
warning =
InlineBannerStyle(
Expand All @@ -76,7 +79,7 @@ internal fun readInlineBannerStyle(): InlineBannerStyles =
background = JBUI.CurrentTheme.Banner.WARNING_BACKGROUND.toComposeColor(),
border = JBUI.CurrentTheme.Banner.WARNING_BORDER_COLOR.toComposeColor(),
),
metrics = BannerMetrics(borderWidth = borderWidth),
metrics = BannerMetrics.defaultBannerMetrics(),
),
error =
InlineBannerStyle(
Expand All @@ -85,6 +88,13 @@ internal fun readInlineBannerStyle(): InlineBannerStyles =
background = JBUI.CurrentTheme.Banner.ERROR_BACKGROUND.toComposeColor(),
border = JBUI.CurrentTheme.Banner.ERROR_BORDER_COLOR.toComposeColor(),
),
metrics = BannerMetrics(borderWidth = borderWidth),
metrics = BannerMetrics.defaultBannerMetrics(),
),
)

private fun BannerMetrics.Companion.defaultBannerMetrics() =
BannerMetrics(
borderWidth,
CornerSize(8.dp), // Swing uses arc diameter of 16, which is radius of 8
PaddingValues(vertical = 12.dp, horizontal = 12.dp), // Swing uses JBUI.Borders.empty(12)
)
4 changes: 3 additions & 1 deletion platform/jewel/int-ui/int-ui-standalone/api-dump.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,10 @@
- hints(java.lang.String,androidx.compose.runtime.Composer,I):java.util.List
f:org.jetbrains.jewel.intui.standalone.StandalonePainterHintsProvider$Companion
f:org.jetbrains.jewel.intui.standalone.styling.IntUIBannerStylingKt
- sf:default-3ABfNKs(org.jetbrains.jewel.ui.component.styling.BannerMetrics$Companion,F):org.jetbrains.jewel.ui.component.styling.BannerMetrics
- bsf:default-3ABfNKs(org.jetbrains.jewel.ui.component.styling.BannerMetrics$Companion,F):org.jetbrains.jewel.ui.component.styling.BannerMetrics

Check failure on line 47 in platform/jewel/int-ui/int-ui-standalone/api-dump.txt

View workflow job for this annotation

GitHub Actions / Annotate breaking API changes with IJP dumps

Breaking API change

This looks like a breaking API change, make sure it's intended.
- bs:default-3ABfNKs$default(org.jetbrains.jewel.ui.component.styling.BannerMetrics$Companion,F,I,java.lang.Object):org.jetbrains.jewel.ui.component.styling.BannerMetrics
- sf:default-ziNgDLE(org.jetbrains.jewel.ui.component.styling.BannerMetrics$Companion,F,androidx.compose.foundation.shape.CornerSize,androidx.compose.foundation.layout.PaddingValues):org.jetbrains.jewel.ui.component.styling.BannerMetrics
- bs:default-ziNgDLE$default(org.jetbrains.jewel.ui.component.styling.BannerMetrics$Companion,F,androidx.compose.foundation.shape.CornerSize,androidx.compose.foundation.layout.PaddingValues,I,java.lang.Object):org.jetbrains.jewel.ui.component.styling.BannerMetrics
- sf:getDefault(org.jetbrains.jewel.ui.component.styling.DefaultBannerStyles$Companion):org.jetbrains.jewel.intui.standalone.styling.IntUiDefaultBannerStylesFactory
- sf:getDefault(org.jetbrains.jewel.ui.component.styling.InlineBannerStyles$Companion):org.jetbrains.jewel.intui.standalone.styling.IntUiInlineBannerStylesFactory
- sf:getError(org.jetbrains.jewel.ui.component.styling.BannerColors$Companion):org.jetbrains.jewel.intui.standalone.styling.IntUiErrorBannerColorFactory
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.jetbrains.jewel.intui.standalone.styling

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.shape.CornerSize
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
Expand Down Expand Up @@ -183,7 +185,15 @@ public object IntUiInlineBannerStylesFactory {
InlineBannerStyles(information = information, success = success, warning = warning, error = error)
}

public fun BannerMetrics.Companion.default(borderWidth: Dp = 1.dp): BannerMetrics = BannerMetrics(borderWidth)
@Deprecated("Use the `default()` function with `cornerSize` and `paddingValues`", level = DeprecationLevel.HIDDEN)
public fun BannerMetrics.Companion.default(borderWidth: Dp = 1.dp): BannerMetrics =
BannerMetrics(borderWidth, CornerSize(8.dp), PaddingValues(12.dp))

public fun BannerMetrics.Companion.default(
borderWidth: Dp = 1.dp,
cornerSize: CornerSize = CornerSize(8.dp),
paddingValues: PaddingValues = PaddingValues(12.dp),
): BannerMetrics = BannerMetrics(borderWidth, cornerSize, paddingValues)

// region Inline Information Banner
public val InlineBannerStyle.Companion.Information: IntUiInlineInformationBannerStyleFactory
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ public fun Banners(modifier: Modifier = Modifier) {
GroupHeader("Default banner (aka editor banners)")

DefaultInformationBanner(
modifier = Modifier.fillMaxWidth(),
style = JewelTheme.defaultBannerStyle.information,
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
linkActions = {
Expand All @@ -73,6 +74,7 @@ public fun Banners(modifier: Modifier = Modifier) {
)

DefaultInformationBanner(
modifier = Modifier.fillMaxWidth(),
style = JewelTheme.defaultBannerStyle.information,
iconActions = {
iconAction(
Expand All @@ -90,6 +92,7 @@ public fun Banners(modifier: Modifier = Modifier) {
)

DefaultInformationBanner(
modifier = Modifier.fillMaxWidth(),
style = JewelTheme.defaultBannerStyle.information,
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
icon = null,
Expand All @@ -99,32 +102,40 @@ public fun Banners(modifier: Modifier = Modifier) {
},
)

DefaultInformationBanner(style = JewelTheme.defaultBannerStyle.information, text = LONG_IPSUM)
DefaultInformationBanner(
modifier = Modifier.fillMaxWidth(),
style = JewelTheme.defaultBannerStyle.information,
text = LONG_IPSUM,
)

DefaultInformationBanner(
modifier = Modifier.fillMaxWidth(),
style = JewelTheme.defaultBannerStyle.information,
text = LONG_IPSUM,
icon = null,
)

DefaultInformationBanner(
modifier = Modifier.fillMaxWidth(),
style = JewelTheme.defaultBannerStyle.information,
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
)

DefaultSuccessBanner(
modifier = Modifier.fillMaxWidth(),
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
style = JewelTheme.defaultBannerStyle.success,
)

DefaultWarningBanner(
modifier = Modifier.fillMaxWidth(),
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
style = JewelTheme.defaultBannerStyle.warning,
)

DefaultErrorBanner(
modifier = Modifier.fillMaxWidth(),
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
modifier = Modifier,
icon = { Icon(AllIconsKeys.General.BalloonError, null) },
linkActions = {
action("Action A", onClick = { clickLabel = "Error default Action A clicked" })
Expand Down Expand Up @@ -166,13 +177,15 @@ public fun Banners(modifier: Modifier = Modifier) {
}

InlineInformationBanner(
modifier = Modifier.fillMaxWidth(),
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
title = optionalTitle,
icon = null,
style = JewelTheme.inlineBannerStyle.information,
)

InlineInformationBanner(
modifier = Modifier.fillMaxWidth(),
title = optionalTitle,
icon = null,
iconActions = {
Expand Down Expand Up @@ -202,6 +215,7 @@ public fun Banners(modifier: Modifier = Modifier) {
}

InlineInformationBanner(
modifier = Modifier.fillMaxWidth(),
title = optionalTitle,
icon = null,
iconActions = { iconAction(AllIconsKeys.General.Refresh, "Restart", onClick = { restart += 1 }) },
Expand All @@ -210,6 +224,7 @@ public fun Banners(modifier: Modifier = Modifier) {
)

InlineInformationBanner(
modifier = Modifier.fillMaxWidth(),
icon = null,
style = JewelTheme.inlineBannerStyle.information,
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
Expand All @@ -236,6 +251,7 @@ public fun Banners(modifier: Modifier = Modifier) {
)

InlineInformationBanner(
modifier = Modifier.fillMaxWidth(),
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
title = optionalTitle,
icon = null,
Expand All @@ -254,12 +270,14 @@ public fun Banners(modifier: Modifier = Modifier) {
)

InlineInformationBanner(
modifier = Modifier.fillMaxWidth(),
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
title = optionalTitle,
linkActions = null,
style = JewelTheme.inlineBannerStyle.information,
)
InlineErrorBanner(
modifier = Modifier.fillMaxWidth(),
style = JewelTheme.inlineBannerStyle.error,
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
title = optionalTitle,
Expand All @@ -272,6 +290,7 @@ public fun Banners(modifier: Modifier = Modifier) {
},
)
InlineInformationBanner(
modifier = Modifier.fillMaxWidth(),
style = JewelTheme.inlineBannerStyle.information,
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
title = optionalTitle,
Expand All @@ -281,6 +300,7 @@ public fun Banners(modifier: Modifier = Modifier) {
},
)
InlineSuccessBanner(
modifier = Modifier.fillMaxWidth(),
style = JewelTheme.inlineBannerStyle.success,
text = LONG_IPSUM,
title = optionalTitle,
Expand Down Expand Up @@ -312,6 +332,7 @@ public fun Banners(modifier: Modifier = Modifier) {
},
)
InlineWarningBanner(
modifier = Modifier.fillMaxWidth(),
style = JewelTheme.inlineBannerStyle.warning,
text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt",
title = optionalTitle,
Expand Down
2 changes: 2 additions & 0 deletions platform/jewel/ui/api-dump.txt
Original file line number Diff line number Diff line change
Expand Up @@ -988,6 +988,8 @@ f:org.jetbrains.jewel.ui.component.styling.BannerMetrics
- sf:Companion:org.jetbrains.jewel.ui.component.styling.BannerMetrics$Companion
- equals(java.lang.Object):Z
- f:getBorderWidth-D9Ej5fM():F
- f:getCornerSize():androidx.compose.foundation.shape.CornerSize
- f:getPadding():androidx.compose.foundation.layout.PaddingValues
- hashCode():I
f:org.jetbrains.jewel.ui.component.styling.BannerMetrics$Companion
f:org.jetbrains.jewel.ui.component.styling.BannerStylingKt
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.Spacer
Expand Down Expand Up @@ -850,10 +851,10 @@ private fun DefaultBannerImpl(
modifier: Modifier = Modifier,
content: @Composable (() -> Unit),
) {
Column(modifier = modifier) {
Column(modifier = modifier.width(IntrinsicSize.Max)) {
Divider(orientation = Orientation.Horizontal, color = style.colors.border, modifier = Modifier.fillMaxWidth())
Row(
modifier = Modifier.background(style.colors.background).padding(10.dp),
modifier = Modifier.background(style.colors.background).padding(style.metrics.padding),
verticalAlignment = Alignment.CenterVertically,
) {
if (icon != null) {
Expand Down
Loading
Loading