@@ -20,6 +20,9 @@ import com.revenuecat.purchases.paywalls.components.common.LocalizationData
2020import com.revenuecat.purchases.paywalls.components.common.LocalizationKey
2121import com.revenuecat.purchases.paywalls.components.common.PaywallComponentsConfig
2222import com.revenuecat.purchases.paywalls.components.common.PaywallComponentsData
23+ import com.revenuecat.purchases.paywalls.components.common.StateDeclaration
24+ import com.revenuecat.purchases.paywalls.components.common.StateUpdate
25+ import com.revenuecat.purchases.paywalls.components.common.StateUpdateValue
2326import com.revenuecat.purchases.paywalls.components.properties.ColorInfo
2427import com.revenuecat.purchases.paywalls.components.properties.ColorScheme
2528import com.revenuecat.purchases.paywalls.components.properties.CornerRadiuses
@@ -37,6 +40,7 @@ import com.revenuecat.purchases.paywalls.components.properties.SizeConstraint.Fi
3740import com.revenuecat.purchases.paywalls.components.properties.SizeConstraint.Fit
3841import com.revenuecat.purchases.paywalls.components.properties.TwoDimensionalAlignment
3942import com.revenuecat.purchases.paywalls.components.properties.VerticalAlignment
43+ import kotlinx.serialization.json.JsonPrimitive
4044import java.net.URL
4145
4246@Suppress(" LongMethod" )
@@ -72,6 +76,12 @@ internal fun tabsWithButtons(font: FontAlias? = null): SampleData.Components {
7276 id = " sample_tabs_with_buttons_paywall_id" ,
7377 templateName = " template" ,
7478 assetBaseURL = URL (" https://assets.pawwalls.com" ),
79+ stateDeclarations = mapOf (
80+ " selectedTab" to StateDeclaration (
81+ type = StateDeclaration .ValueType .STRING ,
82+ defaultValue = JsonPrimitive (" tab-0" ),
83+ ),
84+ ),
7585 componentsConfig = ComponentsConfig (
7686 base = PaywallComponentsConfig (
7787 stack = StackComponent (
@@ -278,6 +288,12 @@ internal fun tabsWithButtons(font: FontAlias? = null): SampleData.Components {
278288 ),
279289 ),
280290 ),
291+ stateUpdates = listOf (
292+ StateUpdate .Set (
293+ key = " selectedTab" ,
294+ value = StateUpdateValue .PayloadReference ,
295+ ),
296+ ),
281297 size = Size (width = Fill , height = Fill ),
282298 ),
283299
@@ -290,6 +306,20 @@ internal fun tabsWithButtons(font: FontAlias? = null): SampleData.Components {
290306 horizontalAlignment = LEADING ,
291307 size = Size (width = Fill , height = Fit ),
292308 margin = Padding (top = 48.0 , bottom = 8.0 , leading = 0.0 , trailing = 0.0 ),
309+ overrides = listOf (
310+ ComponentOverride (
311+ conditions = listOf (
312+ ComponentOverride .Condition .State (
313+ operator = ComponentOverride .EqualityOperator .EQUALS ,
314+ name = " selectedTab" ,
315+ value = JsonPrimitive (" tab-1" ),
316+ ),
317+ ),
318+ properties = PartialTextComponent (
319+ text = LocalizationKey (" offer-tab-1" ),
320+ ),
321+ ),
322+ ),
293323 ),
294324 StackComponent (
295325 components = listOf (
@@ -347,6 +377,9 @@ internal fun tabsWithButtons(font: FontAlias? = null): SampleData.Components {
347377 LocalizationKey (" offer" ) to LocalizationData .Text (
348378 " Try 7 days free, then $19.98/year. Cancel anytime." ,
349379 ),
380+ LocalizationKey (" offer-tab-1" ) to LocalizationData .Text (
381+ " Tab 2 selected: try annual at $9.99/year." ,
382+ ),
350383 LocalizationKey (" cta" ) to LocalizationData .Text (" Continue" ),
351384 LocalizationKey (" terms" ) to LocalizationData .Text (" Privacy & Terms" ),
352385 ),
0 commit comments