@getrheo/rheo-skill 2.1.0 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4196,9 +4196,13 @@ var ThemedColorModesSchema = external_exports.object({
4196
4196
  message: "at least one of light or dark is required"
4197
4197
  });
4198
4198
  var ThemedColorSchema = external_exports.union([external_exports.string().min(1), ThemedColorModesSchema]);
4199
- var WIDTH_PRESETS = ["auto", "full", "1/2", "1/3", "2/3", "1/4", "3/4"];
4200
- var WidthValueSchema = external_exports.union([external_exports.enum(WIDTH_PRESETS), external_exports.number().int().min(0).max(2e3)]);
4201
- var HEIGHT_PRESETS = ["auto", "full", "fill"];
4199
+ var LAYOUT_FRACTION_PRESETS = ["1/2", "1/3", "2/3", "1/4", "3/4"];
4200
+ var WIDTH_PRESETS = ["auto", "full", ...LAYOUT_FRACTION_PRESETS];
4201
+ var WidthValueSchema = external_exports.preprocess(
4202
+ (value) => value === "fill" ? "full" : value,
4203
+ external_exports.union([external_exports.enum(WIDTH_PRESETS), external_exports.number().int().min(0).max(2e3)])
4204
+ );
4205
+ var HEIGHT_PRESETS = ["auto", "full", "fill", ...LAYOUT_FRACTION_PRESETS];
4202
4206
  var CommonLayoutHeightSchema = external_exports.union([
4203
4207
  external_exports.enum(HEIGHT_PRESETS),
4204
4208
  external_exports.number().int().min(0).max(2e3)
@@ -4230,6 +4234,8 @@ var CommonStyleSchema = external_exports.object({
4230
4234
  border: BorderSchema.optional(),
4231
4235
  shadow: DropShadowSchema.optional(),
4232
4236
  opacity: external_exports.number().min(0).max(1).optional(),
4237
+ /** Multiplier (0–1) applied to the resolved background color alpha only; children stay fully opaque unless `opacity` is set. */
4238
+ backgroundOpacity: external_exports.number().min(0).max(1).optional(),
4233
4239
  width: WidthValueSchema.optional(),
4234
4240
  /** Omit for normal flow; `'absolute'` removes the layer from flex flow (non-root only). */
4235
4241
  position: external_exports.literal("absolute").optional(),
@@ -4238,8 +4244,13 @@ var CommonStyleSchema = external_exports.object({
4238
4244
  zIndex: external_exports.number().int().min(-999).max(999).optional(),
4239
4245
  /** Static rotation in degrees (CSS `rotate`); not timeline animation. */
4240
4246
  rotate: external_exports.number().min(-360).max(360).optional(),
4241
- /** Cross-axis size: `auto` (hug), `full`/`fill` (parent height), or fixed px. No fractions. */
4247
+ /** Cross-axis size: `auto` (hug), `full`/`fill` (parent height), fractions, or fixed px. */
4242
4248
  height: CommonLayoutHeightSchema.optional(),
4249
+ /** Optional size clamps (px); applied on the flex shell / wrapper like width/height. */
4250
+ minWidth: NonNegativePxSchema.max(2e3).optional(),
4251
+ maxWidth: NonNegativePxSchema.max(2e3).optional(),
4252
+ minHeight: NonNegativePxSchema.max(2e3).optional(),
4253
+ maxHeight: NonNegativePxSchema.max(2e3).optional(),
4243
4254
  /** Stroke thickness in px for layers that render a stroke primitive (e.g. loader ring). */
4244
4255
  strokeWidth: external_exports.number().int().min(0).max(64).optional()
4245
4256
  }).partial();
@@ -4253,9 +4264,10 @@ var TextStyleSchema = CommonStyleSchema.extend({
4253
4264
  fontWeight: external_exports.number().int().min(100).max(900).optional(),
4254
4265
  color: ThemedColorSchema.optional(),
4255
4266
  align: external_exports.enum(["left", "center", "right"]).optional(),
4267
+ /** Unitless line-height multiplier (CSS `line-height` without units). */
4256
4268
  lineHeight: external_exports.number().min(0.8).max(3).optional(),
4257
- /** Multiplier (0–1) applied to the resolved background color alpha only; text stays fully opaque unless `opacity` is set. */
4258
- backgroundOpacity: external_exports.number().min(0).max(1).optional()
4269
+ /** Extra spacing between characters as a multiple of `fontSize` (CSS `em`; negative values tighten). */
4270
+ letterSpacing: external_exports.number().min(-0.5).max(1).optional()
4259
4271
  });
4260
4272
  var ImageStyleSchema = CommonStyleSchema.extend({
4261
4273
  fit: external_exports.enum(["cover", "contain", "fill"]).optional(),
@@ -4330,6 +4342,46 @@ var ButtonLayoutBreakpointsSchema = external_exports.object({
4330
4342
  xl: ButtonLayoutBreakpointPatchSchema.optional(),
4331
4343
  "2xl": ButtonLayoutBreakpointPatchSchema.optional()
4332
4344
  }).partial().optional();
4345
+ var AuthLayoutBreakpointPatchSchema = external_exports.object({
4346
+ gap: NonNegativePxSchema.optional(),
4347
+ align: external_exports.enum(["start", "center", "end", "stretch"]).optional()
4348
+ }).partial();
4349
+ var AuthLayoutBreakpointsSchema = external_exports.object({
4350
+ sm: AuthLayoutBreakpointPatchSchema.optional(),
4351
+ md: AuthLayoutBreakpointPatchSchema.optional(),
4352
+ lg: AuthLayoutBreakpointPatchSchema.optional(),
4353
+ xl: AuthLayoutBreakpointPatchSchema.optional(),
4354
+ "2xl": AuthLayoutBreakpointPatchSchema.optional()
4355
+ }).partial().optional();
4356
+ var ChoiceLayoutBreakpointPatchSchema = external_exports.object({
4357
+ direction: external_exports.enum(["vertical", "horizontal"]).optional(),
4358
+ gap: NonNegativePxSchema.optional(),
4359
+ columns: external_exports.number().int().min(1).max(6).optional()
4360
+ }).partial();
4361
+ var ChoiceLayoutBreakpointsSchema = external_exports.object({
4362
+ sm: ChoiceLayoutBreakpointPatchSchema.optional(),
4363
+ md: ChoiceLayoutBreakpointPatchSchema.optional(),
4364
+ lg: ChoiceLayoutBreakpointPatchSchema.optional(),
4365
+ xl: ChoiceLayoutBreakpointPatchSchema.optional(),
4366
+ "2xl": ChoiceLayoutBreakpointPatchSchema.optional()
4367
+ }).partial().optional();
4368
+ var CarouselLayoutBreakpointPatchSchema = external_exports.object({
4369
+ pageAlignment: external_exports.enum(["top", "center", "bottom"]).optional(),
4370
+ pageSpacing: NonNegativePxSchema.optional(),
4371
+ pagePeek: NonNegativePxSchema.optional()
4372
+ }).partial();
4373
+ var CarouselLayoutBreakpointsSchema = external_exports.object({
4374
+ sm: CarouselLayoutBreakpointPatchSchema.optional(),
4375
+ md: CarouselLayoutBreakpointPatchSchema.optional(),
4376
+ lg: CarouselLayoutBreakpointPatchSchema.optional(),
4377
+ xl: CarouselLayoutBreakpointPatchSchema.optional(),
4378
+ "2xl": CarouselLayoutBreakpointPatchSchema.optional()
4379
+ }).partial().optional();
4380
+ var DecisionNodeJumpIdSchema = external_exports.string().min(1).max(64).regex(/^dec_[a-z0-9_]+$/i);
4381
+ var ExternalSurfaceJumpIdSchema = external_exports.string().min(1).max(64).regex(/^surf_[a-z0-9_]+$/i);
4382
+ var FlowGraphNodeJumpTargetSchema = ScreenIdSchema.or(DecisionNodeJumpIdSchema).or(
4383
+ ExternalSurfaceJumpIdSchema
4384
+ );
4333
4385
  var OS_PERMISSION_KEYS = [
4334
4386
  "notifications",
4335
4387
  "camera",
@@ -4359,11 +4411,9 @@ var PERMISSION_OUTCOME_VALUES = ["granted", "denied", "blocked"];
4359
4411
  var PermissionOutcomeSchema = external_exports.enum(PERMISSION_OUTCOME_VALUES);
4360
4412
  var OS_PERMISSION_OUTCOME_CONTINUE = "continue";
4361
4413
  var OS_PERMISSION_OUTCOME_END = "end";
4362
- var OsPermissionOutcomeBranchTargetSchema = external_exports.union([
4363
- ScreenIdSchema,
4364
- external_exports.literal(OS_PERMISSION_OUTCOME_CONTINUE),
4365
- external_exports.literal(OS_PERMISSION_OUTCOME_END)
4366
- ]);
4414
+ var OsPermissionOutcomeBranchTargetSchema = FlowGraphNodeJumpTargetSchema.or(
4415
+ external_exports.literal(OS_PERMISSION_OUTCOME_CONTINUE)
4416
+ ).or(external_exports.literal(OS_PERMISSION_OUTCOME_END));
4367
4417
  var OsPermissionOutcomesSchema = external_exports.object({
4368
4418
  granted: OsPermissionOutcomeBranchTargetSchema,
4369
4419
  denied: OsPermissionOutcomeBranchTargetSchema,
@@ -4380,7 +4430,7 @@ var ButtonActionSchema = external_exports.discriminatedUnion("kind", [
4380
4430
  kind: external_exports.literal("go_back_one_screen"),
4381
4431
  fallbackScreenId: ScreenIdSchema.optional()
4382
4432
  }),
4383
- external_exports.object({ kind: external_exports.literal("go_to_step"), screenId: ScreenIdSchema }),
4433
+ external_exports.object({ kind: external_exports.literal("go_to_step"), screenId: FlowGraphNodeJumpTargetSchema }),
4384
4434
  external_exports.object({
4385
4435
  kind: external_exports.literal("request_os_permission"),
4386
4436
  permissionKey: OsPermissionKeySchema,
@@ -4392,7 +4442,7 @@ var ButtonActionSchema = external_exports.discriminatedUnion("kind", [
4392
4442
  }),
4393
4443
  external_exports.object({ kind: external_exports.literal("request_app_review") })
4394
4444
  ]);
4395
- var TEXT_INPUT_TYPES = ["plain", "email", "phone", "url", "multiline"];
4445
+ var TEXT_INPUT_TYPES = ["plain", "email", "phone", "url", "number", "multiline"];
4396
4446
  var TextInputTypeSchema = external_exports.enum(TEXT_INPUT_TYPES);
4397
4447
  var COUNTER_DISPLAY_KINDS = ["number", "time"];
4398
4448
  var COUNTER_TIME_FORMATS = ["mm_ss", "hh_mm_ss", "dd_hh_mm_ss"];
@@ -4457,12 +4507,13 @@ var ProgressLayerSchema = external_exports.object({
4457
4507
  kind: external_exports.literal("progress"),
4458
4508
  trackColor: ThemedColorSchema.optional(),
4459
4509
  fillColor: ThemedColorSchema.optional(),
4460
- style: CommonStyleSchema.optional()
4510
+ style: CommonStyleSchema.optional(),
4511
+ styleBreakpoints: CommonStyleBreakpointsSchema
4461
4512
  });
4462
4513
  var LoaderOnCompleteSchema = external_exports.discriminatedUnion("mode", [
4463
4514
  external_exports.object({ mode: external_exports.literal("none") }),
4464
4515
  external_exports.object({ mode: external_exports.literal("next") }),
4465
- external_exports.object({ mode: external_exports.literal("screen"), screenId: ScreenIdSchema })
4516
+ external_exports.object({ mode: external_exports.literal("screen"), screenId: FlowGraphNodeJumpTargetSchema })
4466
4517
  ]);
4467
4518
  var LoaderLayerSchema = external_exports.object({
4468
4519
  ...baseLayerShape,
@@ -4477,7 +4528,8 @@ var LoaderLayerSchema = external_exports.object({
4477
4528
  fillColor: ThemedColorSchema.optional(),
4478
4529
  /** Horizontal alignment of the bar or ring within the layer box (default start). */
4479
4530
  align: external_exports.enum(["start", "center", "end"]).optional(),
4480
- style: CommonStyleSchema.optional()
4531
+ style: CommonStyleSchema.optional(),
4532
+ styleBreakpoints: CommonStyleBreakpointsSchema
4481
4533
  }).superRefine((data, ctx) => {
4482
4534
  if (data.variant !== "circular") return;
4483
4535
  const w = data.style?.width;
@@ -4514,27 +4566,39 @@ var CheckboxLayerSchema = external_exports.object({
4514
4566
  styleBreakpoints: CommonStyleBreakpointsSchema
4515
4567
  });
4516
4568
  var lazyLayer2 = () => layerSchemaStore.schema;
4517
- var StackLayerSchema = external_exports.object({
4518
- ...baseLayerShape,
4519
- kind: external_exports.literal("stack"),
4520
- style: CommonStyleSchema.optional(),
4521
- styleBreakpoints: CommonStyleBreakpointsSchema,
4522
- stackLayoutBreakpoints: StackLayoutBreakpointsSchema,
4523
- selectedStyle: CommonStyleSchema.optional(),
4524
- direction: external_exports.enum(["vertical", "horizontal"]),
4525
- gap: external_exports.number().int().min(0).optional(),
4526
- align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
4527
- justify: external_exports.enum(["start", "center", "end"]).optional(),
4528
- distribution: external_exports.enum(["start", "center", "end", "between", "around"]).optional(),
4529
- wrap: external_exports.boolean().optional(),
4530
- children: external_exports.lazy(() => external_exports.array(lazyLayer2()))
4531
- });
4569
+ var migrateStackJustifyForParse = (raw) => {
4570
+ if (!raw || typeof raw !== "object") return raw;
4571
+ const o = { ...raw };
4572
+ if (o.justify != null && o.distribution == null) o.distribution = o.justify;
4573
+ delete o.justify;
4574
+ return o;
4575
+ };
4576
+ var StackLayerSchema = external_exports.preprocess(
4577
+ migrateStackJustifyForParse,
4578
+ external_exports.object({
4579
+ ...baseLayerShape,
4580
+ kind: external_exports.literal("stack"),
4581
+ style: CommonStyleSchema.optional(),
4582
+ styleBreakpoints: CommonStyleBreakpointsSchema,
4583
+ stackLayoutBreakpoints: StackLayoutBreakpointsSchema,
4584
+ selectedStyle: CommonStyleSchema.optional(),
4585
+ selectedStyleBreakpoints: CommonStyleBreakpointsSchema,
4586
+ direction: external_exports.enum(["vertical", "horizontal"]),
4587
+ gap: external_exports.number().int().min(0).optional(),
4588
+ align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
4589
+ distribution: external_exports.enum(["start", "center", "end", "between", "around"]).optional(),
4590
+ wrap: external_exports.boolean().optional(),
4591
+ children: external_exports.lazy(() => external_exports.array(lazyLayer2()))
4592
+ })
4593
+ );
4532
4594
  var TextLayerSchema = external_exports.object({
4533
4595
  ...baseLayerShape,
4534
4596
  kind: external_exports.literal("text"),
4535
4597
  text: LocalizedTextSchema,
4536
4598
  style: TextStyleSchema.optional(),
4537
- styleBreakpoints: TextStyleBreakpointsSchema
4599
+ styleBreakpoints: TextStyleBreakpointsSchema,
4600
+ /** Merged on top of resolved `style` when this layer is inside a selected choice option. */
4601
+ selectedStyle: TextStyleSchema.optional()
4538
4602
  });
4539
4603
  var migrateLegacyHyperlinkForParse = (raw) => {
4540
4604
  if (!raw || typeof raw !== "object") return raw;
@@ -4573,7 +4637,8 @@ var HyperlinkLayerSchemaInner = external_exports.object({
4573
4637
  distribution: external_exports.enum(["start", "center", "end", "between", "around"]).optional(),
4574
4638
  wrap: external_exports.boolean().optional(),
4575
4639
  style: CommonStyleSchema.optional(),
4576
- styleBreakpoints: CommonStyleBreakpointsSchema
4640
+ styleBreakpoints: CommonStyleBreakpointsSchema,
4641
+ hyperlinkLayoutBreakpoints: StackLayoutBreakpointsSchema
4577
4642
  }).superRefine((data, ctx) => {
4578
4643
  const p = parseHyperlinkHref(data.href.trim());
4579
4644
  if (!p.ok) {
@@ -4594,7 +4659,8 @@ var ImageLayerSchema = external_exports.object({
4594
4659
  media: MediaReferenceSchema.optional(),
4595
4660
  alt: external_exports.string().max(280).optional(),
4596
4661
  style: ImageStyleSchema.optional(),
4597
- styleBreakpoints: ImageStyleBreakpointsSchema
4662
+ styleBreakpoints: ImageStyleBreakpointsSchema,
4663
+ selectedStyle: ImageStyleSchema.optional()
4598
4664
  });
4599
4665
  var LottieLayerSchema = external_exports.object({
4600
4666
  ...baseLayerShape,
@@ -4605,7 +4671,8 @@ var LottieLayerSchema = external_exports.object({
4605
4671
  triggerLayerId: external_exports.string().min(1).optional(),
4606
4672
  onComplete: LoaderOnCompleteSchema.optional(),
4607
4673
  style: ImageStyleSchema.optional(),
4608
- styleBreakpoints: ImageStyleBreakpointsSchema
4674
+ styleBreakpoints: ImageStyleBreakpointsSchema,
4675
+ selectedStyle: ImageStyleSchema.optional()
4609
4676
  });
4610
4677
  var VideoLayerSchema = external_exports.object({
4611
4678
  ...baseLayerShape,
@@ -4617,7 +4684,8 @@ var VideoLayerSchema = external_exports.object({
4617
4684
  onComplete: LoaderOnCompleteSchema.optional(),
4618
4685
  audioEnabled: external_exports.boolean().optional(),
4619
4686
  style: ImageStyleSchema.optional(),
4620
- styleBreakpoints: ImageStyleBreakpointsSchema
4687
+ styleBreakpoints: ImageStyleBreakpointsSchema,
4688
+ selectedStyle: ImageStyleSchema.optional()
4621
4689
  });
4622
4690
  var IconLayerSchema = external_exports.object({
4623
4691
  ...baseLayerShape,
@@ -4625,7 +4693,8 @@ var IconLayerSchema = external_exports.object({
4625
4693
  family: external_exports.enum(ICON_FAMILIES),
4626
4694
  iconName: external_exports.string().min(1).max(128),
4627
4695
  style: IconStyleSchema.optional(),
4628
- styleBreakpoints: IconStyleBreakpointsSchema
4696
+ styleBreakpoints: IconStyleBreakpointsSchema,
4697
+ selectedStyle: IconStyleSchema.optional()
4629
4698
  });
4630
4699
  var lazyLayer3 = () => layerSchemaStore.schema;
4631
4700
  var OAuthProviderPresetLayerSchema = external_exports.object({
@@ -4779,6 +4848,7 @@ var OAuthLoginLayerSchemaValidated = external_exports.object({
4779
4848
  ),
4780
4849
  gap: external_exports.number().int().min(0).optional(),
4781
4850
  align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
4851
+ authLayoutBreakpoints: AuthLayoutBreakpointsSchema,
4782
4852
  style: CommonStyleSchema.optional(),
4783
4853
  styleBreakpoints: CommonStyleBreakpointsSchema
4784
4854
  });
@@ -4930,6 +5000,7 @@ var EmailPasswordAuthLayerSchemaValidated = external_exports.object({
4930
5000
  ),
4931
5001
  gap: external_exports.number().int().min(0).optional(),
4932
5002
  align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
5003
+ authLayoutBreakpoints: AuthLayoutBreakpointsSchema,
4933
5004
  style: CommonStyleSchema.optional(),
4934
5005
  styleBreakpoints: CommonStyleBreakpointsSchema
4935
5006
  }).superRefine(refineEmailPasswordAuthChildren);
@@ -4943,7 +5014,7 @@ var ChoiceOptionBindingSchema = external_exports.object({
4943
5014
  });
4944
5015
  var BranchConditionSchema = external_exports.object({
4945
5016
  choiceId: external_exports.string().min(1),
4946
- goTo: ScreenIdSchema
5017
+ goTo: FlowGraphNodeJumpTargetSchema
4947
5018
  });
4948
5019
  var ChoiceBranchingSchema = external_exports.object({
4949
5020
  enabled: external_exports.boolean(),
@@ -4963,7 +5034,8 @@ var SingleChoiceLayerSchema = external_exports.object({
4963
5034
  gap: external_exports.number().int().min(0).optional(),
4964
5035
  columns: external_exports.number().int().min(1).max(12).optional(),
4965
5036
  style: CommonStyleSchema.optional(),
4966
- styleBreakpoints: CommonStyleBreakpointsSchema
5037
+ styleBreakpoints: CommonStyleBreakpointsSchema,
5038
+ choiceLayoutBreakpoints: ChoiceLayoutBreakpointsSchema
4967
5039
  });
4968
5040
  var MultipleChoiceLayerSchema = external_exports.object({
4969
5041
  ...baseLayerShape,
@@ -4980,8 +5052,19 @@ var MultipleChoiceLayerSchema = external_exports.object({
4980
5052
  gap: external_exports.number().int().min(0).optional(),
4981
5053
  columns: external_exports.number().int().min(1).max(12).optional(),
4982
5054
  style: CommonStyleSchema.optional(),
4983
- styleBreakpoints: CommonStyleBreakpointsSchema
5055
+ styleBreakpoints: CommonStyleBreakpointsSchema,
5056
+ choiceLayoutBreakpoints: ChoiceLayoutBreakpointsSchema
4984
5057
  });
5058
+ var TextInputFieldStyleSchema = external_exports.object({
5059
+ fontFamily: external_exports.string().min(1).max(128).optional(),
5060
+ fontSize: external_exports.number().int().min(8).max(96).optional(),
5061
+ fontWeight: external_exports.number().int().min(100).max(900).optional(),
5062
+ color: ThemedColorSchema.optional(),
5063
+ align: external_exports.enum(["left", "center", "right"]).optional(),
5064
+ lineHeight: external_exports.number().min(0.8).max(3).optional(),
5065
+ letterSpacing: external_exports.number().min(-0.5).max(1).optional(),
5066
+ opacity: external_exports.number().min(0).max(1).optional()
5067
+ }).partial();
4985
5068
  var TextInputLayerSchema = external_exports.object({
4986
5069
  ...baseLayerShape,
4987
5070
  kind: external_exports.literal("text_input"),
@@ -4993,7 +5076,10 @@ var TextInputLayerSchema = external_exports.object({
4993
5076
  maxLength: external_exports.number().int().positive().max(2e3).optional(),
4994
5077
  classification: FieldClassificationSchema,
4995
5078
  children: external_exports.lazy(() => external_exports.array(lazyLayer5())).optional(),
4996
- style: CommonStyleSchema.optional()
5079
+ /** Typography for the native input's typed text. */
5080
+ fieldStyle: TextInputFieldStyleSchema.optional(),
5081
+ style: CommonStyleSchema.optional(),
5082
+ styleBreakpoints: CommonStyleBreakpointsSchema
4997
5083
  });
4998
5084
  var ScaleInputLabelStyleSchema = external_exports.object({
4999
5085
  fontFamily: external_exports.string().min(1).max(128).optional(),
@@ -5002,6 +5088,7 @@ var ScaleInputLabelStyleSchema = external_exports.object({
5002
5088
  color: ThemedColorSchema.optional(),
5003
5089
  align: external_exports.enum(["left", "center", "right"]).optional(),
5004
5090
  lineHeight: external_exports.number().min(0.8).max(3).optional(),
5091
+ letterSpacing: external_exports.number().min(-0.5).max(1).optional(),
5005
5092
  opacity: external_exports.number().min(0).max(1).optional()
5006
5093
  }).partial();
5007
5094
  var ScaleInputLayerSchema = external_exports.object({
@@ -5024,7 +5111,40 @@ var ScaleInputLayerSchema = external_exports.object({
5024
5111
  thumbSize: external_exports.number().int().min(8).max(48).optional(),
5025
5112
  thumbColor: ThemedColorSchema.optional(),
5026
5113
  children: external_exports.lazy(() => external_exports.array(lazyLayer5())).optional(),
5027
- style: CommonStyleSchema.optional()
5114
+ style: CommonStyleSchema.optional(),
5115
+ styleBreakpoints: CommonStyleBreakpointsSchema
5116
+ });
5117
+ var WheelPickerOptionSchema = external_exports.object({
5118
+ optionId: external_exports.string().min(1).max(64),
5119
+ label: LocalizedTextSchema
5120
+ });
5121
+ var WheelPickerItemStyleSchema = external_exports.object({
5122
+ fontFamily: external_exports.string().min(1).max(128).optional(),
5123
+ fontSize: external_exports.number().int().min(8).max(96).optional(),
5124
+ fontWeight: external_exports.number().int().min(100).max(900).optional(),
5125
+ color: ThemedColorSchema.optional(),
5126
+ opacity: external_exports.number().min(0).max(1).optional()
5127
+ }).partial();
5128
+ var WheelPickerLayerSchema = external_exports.object({
5129
+ ...baseLayerShape,
5130
+ kind: external_exports.literal("wheel_picker"),
5131
+ fieldKey: FieldKeySchema,
5132
+ mode: external_exports.enum(["options", "date"]).optional(),
5133
+ options: external_exports.array(WheelPickerOptionSchema).min(2).optional(),
5134
+ defaultOptionId: external_exports.string().optional(),
5135
+ datePart: external_exports.enum(["year", "month", "day"]).optional(),
5136
+ minYear: external_exports.number().int().min(1e3).max(9999).optional(),
5137
+ maxYear: external_exports.number().int().min(1e3).max(9999).optional(),
5138
+ defaultValue: external_exports.string().optional(),
5139
+ placeholder: LocalizedTextSchema.optional(),
5140
+ itemHeight: external_exports.number().int().min(28).max(72).optional(),
5141
+ visibleItemCount: external_exports.number().int().min(3).max(9).optional(),
5142
+ selectionBackgroundColor: ThemedColorSchema.optional(),
5143
+ itemStyle: WheelPickerItemStyleSchema.optional(),
5144
+ selectedItemStyle: WheelPickerItemStyleSchema.optional(),
5145
+ children: external_exports.lazy(() => external_exports.array(lazyLayer5())).optional(),
5146
+ style: CommonStyleSchema.optional(),
5147
+ styleBreakpoints: CommonStyleBreakpointsSchema
5028
5148
  });
5029
5149
  var CarouselIndicatorsStyleSchema = external_exports.object({
5030
5150
  width: external_exports.number().int().min(1).max(64).optional(),
@@ -5060,7 +5180,8 @@ var CarouselLayerSchema = external_exports.object({
5060
5180
  autoAdvanceMs: external_exports.number().int().min(500).max(6e4).optional(),
5061
5181
  pageControl: CarouselPageControlSchema.optional(),
5062
5182
  style: CommonStyleSchema.optional(),
5063
- styleBreakpoints: CommonStyleBreakpointsSchema
5183
+ styleBreakpoints: CommonStyleBreakpointsSchema,
5184
+ carouselLayoutBreakpoints: CarouselLayoutBreakpointsSchema
5064
5185
  });
5065
5186
  layerSchemaStore.schema = external_exports.lazy(
5066
5187
  () => external_exports.union([
@@ -5081,6 +5202,7 @@ layerSchemaStore.schema = external_exports.lazy(
5081
5202
  MultipleChoiceLayerSchema,
5082
5203
  TextInputLayerSchema,
5083
5204
  ScaleInputLayerSchema,
5205
+ WheelPickerLayerSchema,
5084
5206
  OAuthLoginLayerSchema,
5085
5207
  OAuthProviderPresetLayerSchema,
5086
5208
  OAuthProviderCustomLayerSchema,
@@ -5091,7 +5213,7 @@ layerSchemaStore.schema = external_exports.lazy(
5091
5213
  ])
5092
5214
  );
5093
5215
  var LayerSchema = layerSchemaStore.schema;
5094
- var isInputLayer = (l) => l.kind === "single_choice" || l.kind === "multiple_choice" || l.kind === "text_input" || l.kind === "scale_input";
5216
+ var isInputLayer = (l) => l.kind === "single_choice" || l.kind === "multiple_choice" || l.kind === "text_input" || l.kind === "scale_input" || l.kind === "wheel_picker";
5095
5217
 
5096
5218
  // ../../node_modules/@getrheo/contracts/dist/localized.js
5097
5219
  var LocaleCode2 = external_exports.string().regex(/^[a-z]{2}(-[A-Z]{2})?$/, 'locale must be like "en" or "en-US"');
@@ -5242,9 +5364,13 @@ var ThemedColorModesSchema2 = external_exports.object({
5242
5364
  message: "at least one of light or dark is required"
5243
5365
  });
5244
5366
  var ThemedColorSchema2 = external_exports.union([external_exports.string().min(1), ThemedColorModesSchema2]);
5245
- var WIDTH_PRESETS2 = ["auto", "full", "1/2", "1/3", "2/3", "1/4", "3/4"];
5246
- var WidthValueSchema2 = external_exports.union([external_exports.enum(WIDTH_PRESETS2), external_exports.number().int().min(0).max(2e3)]);
5247
- var HEIGHT_PRESETS2 = ["auto", "full", "fill"];
5367
+ var LAYOUT_FRACTION_PRESETS2 = ["1/2", "1/3", "2/3", "1/4", "3/4"];
5368
+ var WIDTH_PRESETS2 = ["auto", "full", ...LAYOUT_FRACTION_PRESETS2];
5369
+ var WidthValueSchema2 = external_exports.preprocess(
5370
+ (value) => value === "fill" ? "full" : value,
5371
+ external_exports.union([external_exports.enum(WIDTH_PRESETS2), external_exports.number().int().min(0).max(2e3)])
5372
+ );
5373
+ var HEIGHT_PRESETS2 = ["auto", "full", "fill", ...LAYOUT_FRACTION_PRESETS2];
5248
5374
  var CommonLayoutHeightSchema2 = external_exports.union([
5249
5375
  external_exports.enum(HEIGHT_PRESETS2),
5250
5376
  external_exports.number().int().min(0).max(2e3)
@@ -5276,6 +5402,8 @@ var CommonStyleSchema2 = external_exports.object({
5276
5402
  border: BorderSchema2.optional(),
5277
5403
  shadow: DropShadowSchema2.optional(),
5278
5404
  opacity: external_exports.number().min(0).max(1).optional(),
5405
+ /** Multiplier (0–1) applied to the resolved background color alpha only; children stay fully opaque unless `opacity` is set. */
5406
+ backgroundOpacity: external_exports.number().min(0).max(1).optional(),
5279
5407
  width: WidthValueSchema2.optional(),
5280
5408
  /** Omit for normal flow; `'absolute'` removes the layer from flex flow (non-root only). */
5281
5409
  position: external_exports.literal("absolute").optional(),
@@ -5284,8 +5412,13 @@ var CommonStyleSchema2 = external_exports.object({
5284
5412
  zIndex: external_exports.number().int().min(-999).max(999).optional(),
5285
5413
  /** Static rotation in degrees (CSS `rotate`); not timeline animation. */
5286
5414
  rotate: external_exports.number().min(-360).max(360).optional(),
5287
- /** Cross-axis size: `auto` (hug), `full`/`fill` (parent height), or fixed px. No fractions. */
5415
+ /** Cross-axis size: `auto` (hug), `full`/`fill` (parent height), fractions, or fixed px. */
5288
5416
  height: CommonLayoutHeightSchema2.optional(),
5417
+ /** Optional size clamps (px); applied on the flex shell / wrapper like width/height. */
5418
+ minWidth: NonNegativePxSchema2.max(2e3).optional(),
5419
+ maxWidth: NonNegativePxSchema2.max(2e3).optional(),
5420
+ minHeight: NonNegativePxSchema2.max(2e3).optional(),
5421
+ maxHeight: NonNegativePxSchema2.max(2e3).optional(),
5289
5422
  /** Stroke thickness in px for layers that render a stroke primitive (e.g. loader ring). */
5290
5423
  strokeWidth: external_exports.number().int().min(0).max(64).optional()
5291
5424
  }).partial();
@@ -5299,9 +5432,10 @@ var TextStyleSchema2 = CommonStyleSchema2.extend({
5299
5432
  fontWeight: external_exports.number().int().min(100).max(900).optional(),
5300
5433
  color: ThemedColorSchema2.optional(),
5301
5434
  align: external_exports.enum(["left", "center", "right"]).optional(),
5435
+ /** Unitless line-height multiplier (CSS `line-height` without units). */
5302
5436
  lineHeight: external_exports.number().min(0.8).max(3).optional(),
5303
- /** Multiplier (0–1) applied to the resolved background color alpha only; text stays fully opaque unless `opacity` is set. */
5304
- backgroundOpacity: external_exports.number().min(0).max(1).optional()
5437
+ /** Extra spacing between characters as a multiple of `fontSize` (CSS `em`; negative values tighten). */
5438
+ letterSpacing: external_exports.number().min(-0.5).max(1).optional()
5305
5439
  });
5306
5440
  var ImageStyleSchema2 = CommonStyleSchema2.extend({
5307
5441
  fit: external_exports.enum(["cover", "contain", "fill"]).optional(),
@@ -5376,6 +5510,46 @@ var ButtonLayoutBreakpointsSchema2 = external_exports.object({
5376
5510
  xl: ButtonLayoutBreakpointPatchSchema2.optional(),
5377
5511
  "2xl": ButtonLayoutBreakpointPatchSchema2.optional()
5378
5512
  }).partial().optional();
5513
+ var AuthLayoutBreakpointPatchSchema2 = external_exports.object({
5514
+ gap: NonNegativePxSchema2.optional(),
5515
+ align: external_exports.enum(["start", "center", "end", "stretch"]).optional()
5516
+ }).partial();
5517
+ var AuthLayoutBreakpointsSchema2 = external_exports.object({
5518
+ sm: AuthLayoutBreakpointPatchSchema2.optional(),
5519
+ md: AuthLayoutBreakpointPatchSchema2.optional(),
5520
+ lg: AuthLayoutBreakpointPatchSchema2.optional(),
5521
+ xl: AuthLayoutBreakpointPatchSchema2.optional(),
5522
+ "2xl": AuthLayoutBreakpointPatchSchema2.optional()
5523
+ }).partial().optional();
5524
+ var ChoiceLayoutBreakpointPatchSchema2 = external_exports.object({
5525
+ direction: external_exports.enum(["vertical", "horizontal"]).optional(),
5526
+ gap: NonNegativePxSchema2.optional(),
5527
+ columns: external_exports.number().int().min(1).max(6).optional()
5528
+ }).partial();
5529
+ var ChoiceLayoutBreakpointsSchema2 = external_exports.object({
5530
+ sm: ChoiceLayoutBreakpointPatchSchema2.optional(),
5531
+ md: ChoiceLayoutBreakpointPatchSchema2.optional(),
5532
+ lg: ChoiceLayoutBreakpointPatchSchema2.optional(),
5533
+ xl: ChoiceLayoutBreakpointPatchSchema2.optional(),
5534
+ "2xl": ChoiceLayoutBreakpointPatchSchema2.optional()
5535
+ }).partial().optional();
5536
+ var CarouselLayoutBreakpointPatchSchema2 = external_exports.object({
5537
+ pageAlignment: external_exports.enum(["top", "center", "bottom"]).optional(),
5538
+ pageSpacing: NonNegativePxSchema2.optional(),
5539
+ pagePeek: NonNegativePxSchema2.optional()
5540
+ }).partial();
5541
+ var CarouselLayoutBreakpointsSchema2 = external_exports.object({
5542
+ sm: CarouselLayoutBreakpointPatchSchema2.optional(),
5543
+ md: CarouselLayoutBreakpointPatchSchema2.optional(),
5544
+ lg: CarouselLayoutBreakpointPatchSchema2.optional(),
5545
+ xl: CarouselLayoutBreakpointPatchSchema2.optional(),
5546
+ "2xl": CarouselLayoutBreakpointPatchSchema2.optional()
5547
+ }).partial().optional();
5548
+ var DecisionNodeJumpIdSchema2 = external_exports.string().min(1).max(64).regex(/^dec_[a-z0-9_]+$/i);
5549
+ var ExternalSurfaceJumpIdSchema2 = external_exports.string().min(1).max(64).regex(/^surf_[a-z0-9_]+$/i);
5550
+ var FlowGraphNodeJumpTargetSchema2 = ScreenIdSchema2.or(DecisionNodeJumpIdSchema2).or(
5551
+ ExternalSurfaceJumpIdSchema2
5552
+ );
5379
5553
  var OS_PERMISSION_KEYS2 = [
5380
5554
  "notifications",
5381
5555
  "camera",
@@ -5405,11 +5579,9 @@ var PERMISSION_OUTCOME_VALUES2 = ["granted", "denied", "blocked"];
5405
5579
  external_exports.enum(PERMISSION_OUTCOME_VALUES2);
5406
5580
  var OS_PERMISSION_OUTCOME_CONTINUE2 = "continue";
5407
5581
  var OS_PERMISSION_OUTCOME_END2 = "end";
5408
- var OsPermissionOutcomeBranchTargetSchema2 = external_exports.union([
5409
- ScreenIdSchema2,
5410
- external_exports.literal(OS_PERMISSION_OUTCOME_CONTINUE2),
5411
- external_exports.literal(OS_PERMISSION_OUTCOME_END2)
5412
- ]);
5582
+ var OsPermissionOutcomeBranchTargetSchema2 = FlowGraphNodeJumpTargetSchema2.or(
5583
+ external_exports.literal(OS_PERMISSION_OUTCOME_CONTINUE2)
5584
+ ).or(external_exports.literal(OS_PERMISSION_OUTCOME_END2));
5413
5585
  var OsPermissionOutcomesSchema2 = external_exports.object({
5414
5586
  granted: OsPermissionOutcomeBranchTargetSchema2,
5415
5587
  denied: OsPermissionOutcomeBranchTargetSchema2,
@@ -5426,7 +5598,7 @@ var ButtonActionSchema2 = external_exports.discriminatedUnion("kind", [
5426
5598
  kind: external_exports.literal("go_back_one_screen"),
5427
5599
  fallbackScreenId: ScreenIdSchema2.optional()
5428
5600
  }),
5429
- external_exports.object({ kind: external_exports.literal("go_to_step"), screenId: ScreenIdSchema2 }),
5601
+ external_exports.object({ kind: external_exports.literal("go_to_step"), screenId: FlowGraphNodeJumpTargetSchema2 }),
5430
5602
  external_exports.object({
5431
5603
  kind: external_exports.literal("request_os_permission"),
5432
5604
  permissionKey: OsPermissionKeySchema2,
@@ -5438,7 +5610,7 @@ var ButtonActionSchema2 = external_exports.discriminatedUnion("kind", [
5438
5610
  }),
5439
5611
  external_exports.object({ kind: external_exports.literal("request_app_review") })
5440
5612
  ]);
5441
- var TEXT_INPUT_TYPES2 = ["plain", "email", "phone", "url", "multiline"];
5613
+ var TEXT_INPUT_TYPES2 = ["plain", "email", "phone", "url", "number", "multiline"];
5442
5614
  var TextInputTypeSchema2 = external_exports.enum(TEXT_INPUT_TYPES2);
5443
5615
  var COUNTER_DISPLAY_KINDS2 = ["number", "time"];
5444
5616
  var COUNTER_TIME_FORMATS2 = ["mm_ss", "hh_mm_ss", "dd_hh_mm_ss"];
@@ -5503,12 +5675,13 @@ var ProgressLayerSchema2 = external_exports.object({
5503
5675
  kind: external_exports.literal("progress"),
5504
5676
  trackColor: ThemedColorSchema2.optional(),
5505
5677
  fillColor: ThemedColorSchema2.optional(),
5506
- style: CommonStyleSchema2.optional()
5678
+ style: CommonStyleSchema2.optional(),
5679
+ styleBreakpoints: CommonStyleBreakpointsSchema2
5507
5680
  });
5508
5681
  var LoaderOnCompleteSchema2 = external_exports.discriminatedUnion("mode", [
5509
5682
  external_exports.object({ mode: external_exports.literal("none") }),
5510
5683
  external_exports.object({ mode: external_exports.literal("next") }),
5511
- external_exports.object({ mode: external_exports.literal("screen"), screenId: ScreenIdSchema2 })
5684
+ external_exports.object({ mode: external_exports.literal("screen"), screenId: FlowGraphNodeJumpTargetSchema2 })
5512
5685
  ]);
5513
5686
  var LoaderLayerSchema2 = external_exports.object({
5514
5687
  ...baseLayerShape2,
@@ -5523,7 +5696,8 @@ var LoaderLayerSchema2 = external_exports.object({
5523
5696
  fillColor: ThemedColorSchema2.optional(),
5524
5697
  /** Horizontal alignment of the bar or ring within the layer box (default start). */
5525
5698
  align: external_exports.enum(["start", "center", "end"]).optional(),
5526
- style: CommonStyleSchema2.optional()
5699
+ style: CommonStyleSchema2.optional(),
5700
+ styleBreakpoints: CommonStyleBreakpointsSchema2
5527
5701
  }).superRefine((data, ctx) => {
5528
5702
  if (data.variant !== "circular") return;
5529
5703
  const w = data.style?.width;
@@ -5560,27 +5734,39 @@ var CheckboxLayerSchema2 = external_exports.object({
5560
5734
  styleBreakpoints: CommonStyleBreakpointsSchema2
5561
5735
  });
5562
5736
  var lazyLayer22 = () => layerSchemaStore2.schema;
5563
- var StackLayerSchema2 = external_exports.object({
5564
- ...baseLayerShape2,
5565
- kind: external_exports.literal("stack"),
5566
- style: CommonStyleSchema2.optional(),
5567
- styleBreakpoints: CommonStyleBreakpointsSchema2,
5568
- stackLayoutBreakpoints: StackLayoutBreakpointsSchema2,
5569
- selectedStyle: CommonStyleSchema2.optional(),
5570
- direction: external_exports.enum(["vertical", "horizontal"]),
5571
- gap: external_exports.number().int().min(0).optional(),
5572
- align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
5573
- justify: external_exports.enum(["start", "center", "end"]).optional(),
5574
- distribution: external_exports.enum(["start", "center", "end", "between", "around"]).optional(),
5575
- wrap: external_exports.boolean().optional(),
5576
- children: external_exports.lazy(() => external_exports.array(lazyLayer22()))
5577
- });
5737
+ var migrateStackJustifyForParse2 = (raw) => {
5738
+ if (!raw || typeof raw !== "object") return raw;
5739
+ const o = { ...raw };
5740
+ if (o.justify != null && o.distribution == null) o.distribution = o.justify;
5741
+ delete o.justify;
5742
+ return o;
5743
+ };
5744
+ var StackLayerSchema2 = external_exports.preprocess(
5745
+ migrateStackJustifyForParse2,
5746
+ external_exports.object({
5747
+ ...baseLayerShape2,
5748
+ kind: external_exports.literal("stack"),
5749
+ style: CommonStyleSchema2.optional(),
5750
+ styleBreakpoints: CommonStyleBreakpointsSchema2,
5751
+ stackLayoutBreakpoints: StackLayoutBreakpointsSchema2,
5752
+ selectedStyle: CommonStyleSchema2.optional(),
5753
+ selectedStyleBreakpoints: CommonStyleBreakpointsSchema2,
5754
+ direction: external_exports.enum(["vertical", "horizontal"]),
5755
+ gap: external_exports.number().int().min(0).optional(),
5756
+ align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
5757
+ distribution: external_exports.enum(["start", "center", "end", "between", "around"]).optional(),
5758
+ wrap: external_exports.boolean().optional(),
5759
+ children: external_exports.lazy(() => external_exports.array(lazyLayer22()))
5760
+ })
5761
+ );
5578
5762
  var TextLayerSchema2 = external_exports.object({
5579
5763
  ...baseLayerShape2,
5580
5764
  kind: external_exports.literal("text"),
5581
5765
  text: LocalizedTextSchema3,
5582
5766
  style: TextStyleSchema2.optional(),
5583
- styleBreakpoints: TextStyleBreakpointsSchema2
5767
+ styleBreakpoints: TextStyleBreakpointsSchema2,
5768
+ /** Merged on top of resolved `style` when this layer is inside a selected choice option. */
5769
+ selectedStyle: TextStyleSchema2.optional()
5584
5770
  });
5585
5771
  var migrateLegacyHyperlinkForParse2 = (raw) => {
5586
5772
  if (!raw || typeof raw !== "object") return raw;
@@ -5619,7 +5805,8 @@ var HyperlinkLayerSchemaInner2 = external_exports.object({
5619
5805
  distribution: external_exports.enum(["start", "center", "end", "between", "around"]).optional(),
5620
5806
  wrap: external_exports.boolean().optional(),
5621
5807
  style: CommonStyleSchema2.optional(),
5622
- styleBreakpoints: CommonStyleBreakpointsSchema2
5808
+ styleBreakpoints: CommonStyleBreakpointsSchema2,
5809
+ hyperlinkLayoutBreakpoints: StackLayoutBreakpointsSchema2
5623
5810
  }).superRefine((data, ctx) => {
5624
5811
  const p = parseHyperlinkHref2(data.href.trim());
5625
5812
  if (!p.ok) {
@@ -5640,7 +5827,8 @@ var ImageLayerSchema2 = external_exports.object({
5640
5827
  media: MediaReferenceSchema2.optional(),
5641
5828
  alt: external_exports.string().max(280).optional(),
5642
5829
  style: ImageStyleSchema2.optional(),
5643
- styleBreakpoints: ImageStyleBreakpointsSchema2
5830
+ styleBreakpoints: ImageStyleBreakpointsSchema2,
5831
+ selectedStyle: ImageStyleSchema2.optional()
5644
5832
  });
5645
5833
  var LottieLayerSchema2 = external_exports.object({
5646
5834
  ...baseLayerShape2,
@@ -5651,7 +5839,8 @@ var LottieLayerSchema2 = external_exports.object({
5651
5839
  triggerLayerId: external_exports.string().min(1).optional(),
5652
5840
  onComplete: LoaderOnCompleteSchema2.optional(),
5653
5841
  style: ImageStyleSchema2.optional(),
5654
- styleBreakpoints: ImageStyleBreakpointsSchema2
5842
+ styleBreakpoints: ImageStyleBreakpointsSchema2,
5843
+ selectedStyle: ImageStyleSchema2.optional()
5655
5844
  });
5656
5845
  var VideoLayerSchema2 = external_exports.object({
5657
5846
  ...baseLayerShape2,
@@ -5663,7 +5852,8 @@ var VideoLayerSchema2 = external_exports.object({
5663
5852
  onComplete: LoaderOnCompleteSchema2.optional(),
5664
5853
  audioEnabled: external_exports.boolean().optional(),
5665
5854
  style: ImageStyleSchema2.optional(),
5666
- styleBreakpoints: ImageStyleBreakpointsSchema2
5855
+ styleBreakpoints: ImageStyleBreakpointsSchema2,
5856
+ selectedStyle: ImageStyleSchema2.optional()
5667
5857
  });
5668
5858
  var IconLayerSchema2 = external_exports.object({
5669
5859
  ...baseLayerShape2,
@@ -5671,7 +5861,8 @@ var IconLayerSchema2 = external_exports.object({
5671
5861
  family: external_exports.enum(ICON_FAMILIES2),
5672
5862
  iconName: external_exports.string().min(1).max(128),
5673
5863
  style: IconStyleSchema2.optional(),
5674
- styleBreakpoints: IconStyleBreakpointsSchema2
5864
+ styleBreakpoints: IconStyleBreakpointsSchema2,
5865
+ selectedStyle: IconStyleSchema2.optional()
5675
5866
  });
5676
5867
  var lazyLayer32 = () => layerSchemaStore2.schema;
5677
5868
  var OAuthProviderPresetLayerSchema2 = external_exports.object({
@@ -5825,6 +6016,7 @@ var OAuthLoginLayerSchemaValidated2 = external_exports.object({
5825
6016
  ),
5826
6017
  gap: external_exports.number().int().min(0).optional(),
5827
6018
  align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
6019
+ authLayoutBreakpoints: AuthLayoutBreakpointsSchema2,
5828
6020
  style: CommonStyleSchema2.optional(),
5829
6021
  styleBreakpoints: CommonStyleBreakpointsSchema2
5830
6022
  });
@@ -5976,6 +6168,7 @@ var EmailPasswordAuthLayerSchemaValidated2 = external_exports.object({
5976
6168
  ),
5977
6169
  gap: external_exports.number().int().min(0).optional(),
5978
6170
  align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
6171
+ authLayoutBreakpoints: AuthLayoutBreakpointsSchema2,
5979
6172
  style: CommonStyleSchema2.optional(),
5980
6173
  styleBreakpoints: CommonStyleBreakpointsSchema2
5981
6174
  }).superRefine(refineEmailPasswordAuthChildren2);
@@ -5989,7 +6182,7 @@ var ChoiceOptionBindingSchema2 = external_exports.object({
5989
6182
  });
5990
6183
  var BranchConditionSchema2 = external_exports.object({
5991
6184
  choiceId: external_exports.string().min(1),
5992
- goTo: ScreenIdSchema2
6185
+ goTo: FlowGraphNodeJumpTargetSchema2
5993
6186
  });
5994
6187
  var ChoiceBranchingSchema2 = external_exports.object({
5995
6188
  enabled: external_exports.boolean(),
@@ -6009,7 +6202,8 @@ var SingleChoiceLayerSchema2 = external_exports.object({
6009
6202
  gap: external_exports.number().int().min(0).optional(),
6010
6203
  columns: external_exports.number().int().min(1).max(12).optional(),
6011
6204
  style: CommonStyleSchema2.optional(),
6012
- styleBreakpoints: CommonStyleBreakpointsSchema2
6205
+ styleBreakpoints: CommonStyleBreakpointsSchema2,
6206
+ choiceLayoutBreakpoints: ChoiceLayoutBreakpointsSchema2
6013
6207
  });
6014
6208
  var MultipleChoiceLayerSchema2 = external_exports.object({
6015
6209
  ...baseLayerShape2,
@@ -6026,8 +6220,19 @@ var MultipleChoiceLayerSchema2 = external_exports.object({
6026
6220
  gap: external_exports.number().int().min(0).optional(),
6027
6221
  columns: external_exports.number().int().min(1).max(12).optional(),
6028
6222
  style: CommonStyleSchema2.optional(),
6029
- styleBreakpoints: CommonStyleBreakpointsSchema2
6223
+ styleBreakpoints: CommonStyleBreakpointsSchema2,
6224
+ choiceLayoutBreakpoints: ChoiceLayoutBreakpointsSchema2
6030
6225
  });
6226
+ var TextInputFieldStyleSchema2 = external_exports.object({
6227
+ fontFamily: external_exports.string().min(1).max(128).optional(),
6228
+ fontSize: external_exports.number().int().min(8).max(96).optional(),
6229
+ fontWeight: external_exports.number().int().min(100).max(900).optional(),
6230
+ color: ThemedColorSchema2.optional(),
6231
+ align: external_exports.enum(["left", "center", "right"]).optional(),
6232
+ lineHeight: external_exports.number().min(0.8).max(3).optional(),
6233
+ letterSpacing: external_exports.number().min(-0.5).max(1).optional(),
6234
+ opacity: external_exports.number().min(0).max(1).optional()
6235
+ }).partial();
6031
6236
  var TextInputLayerSchema2 = external_exports.object({
6032
6237
  ...baseLayerShape2,
6033
6238
  kind: external_exports.literal("text_input"),
@@ -6039,7 +6244,10 @@ var TextInputLayerSchema2 = external_exports.object({
6039
6244
  maxLength: external_exports.number().int().positive().max(2e3).optional(),
6040
6245
  classification: FieldClassificationSchema2,
6041
6246
  children: external_exports.lazy(() => external_exports.array(lazyLayer52())).optional(),
6042
- style: CommonStyleSchema2.optional()
6247
+ /** Typography for the native input's typed text. */
6248
+ fieldStyle: TextInputFieldStyleSchema2.optional(),
6249
+ style: CommonStyleSchema2.optional(),
6250
+ styleBreakpoints: CommonStyleBreakpointsSchema2
6043
6251
  });
6044
6252
  var ScaleInputLabelStyleSchema2 = external_exports.object({
6045
6253
  fontFamily: external_exports.string().min(1).max(128).optional(),
@@ -6048,6 +6256,7 @@ var ScaleInputLabelStyleSchema2 = external_exports.object({
6048
6256
  color: ThemedColorSchema2.optional(),
6049
6257
  align: external_exports.enum(["left", "center", "right"]).optional(),
6050
6258
  lineHeight: external_exports.number().min(0.8).max(3).optional(),
6259
+ letterSpacing: external_exports.number().min(-0.5).max(1).optional(),
6051
6260
  opacity: external_exports.number().min(0).max(1).optional()
6052
6261
  }).partial();
6053
6262
  var ScaleInputLayerSchema2 = external_exports.object({
@@ -6070,7 +6279,40 @@ var ScaleInputLayerSchema2 = external_exports.object({
6070
6279
  thumbSize: external_exports.number().int().min(8).max(48).optional(),
6071
6280
  thumbColor: ThemedColorSchema2.optional(),
6072
6281
  children: external_exports.lazy(() => external_exports.array(lazyLayer52())).optional(),
6073
- style: CommonStyleSchema2.optional()
6282
+ style: CommonStyleSchema2.optional(),
6283
+ styleBreakpoints: CommonStyleBreakpointsSchema2
6284
+ });
6285
+ var WheelPickerOptionSchema2 = external_exports.object({
6286
+ optionId: external_exports.string().min(1).max(64),
6287
+ label: LocalizedTextSchema3
6288
+ });
6289
+ var WheelPickerItemStyleSchema2 = external_exports.object({
6290
+ fontFamily: external_exports.string().min(1).max(128).optional(),
6291
+ fontSize: external_exports.number().int().min(8).max(96).optional(),
6292
+ fontWeight: external_exports.number().int().min(100).max(900).optional(),
6293
+ color: ThemedColorSchema2.optional(),
6294
+ opacity: external_exports.number().min(0).max(1).optional()
6295
+ }).partial();
6296
+ var WheelPickerLayerSchema2 = external_exports.object({
6297
+ ...baseLayerShape2,
6298
+ kind: external_exports.literal("wheel_picker"),
6299
+ fieldKey: FieldKeySchema2,
6300
+ mode: external_exports.enum(["options", "date"]).optional(),
6301
+ options: external_exports.array(WheelPickerOptionSchema2).min(2).optional(),
6302
+ defaultOptionId: external_exports.string().optional(),
6303
+ datePart: external_exports.enum(["year", "month", "day"]).optional(),
6304
+ minYear: external_exports.number().int().min(1e3).max(9999).optional(),
6305
+ maxYear: external_exports.number().int().min(1e3).max(9999).optional(),
6306
+ defaultValue: external_exports.string().optional(),
6307
+ placeholder: LocalizedTextSchema3.optional(),
6308
+ itemHeight: external_exports.number().int().min(28).max(72).optional(),
6309
+ visibleItemCount: external_exports.number().int().min(3).max(9).optional(),
6310
+ selectionBackgroundColor: ThemedColorSchema2.optional(),
6311
+ itemStyle: WheelPickerItemStyleSchema2.optional(),
6312
+ selectedItemStyle: WheelPickerItemStyleSchema2.optional(),
6313
+ children: external_exports.lazy(() => external_exports.array(lazyLayer52())).optional(),
6314
+ style: CommonStyleSchema2.optional(),
6315
+ styleBreakpoints: CommonStyleBreakpointsSchema2
6074
6316
  });
6075
6317
  var CarouselIndicatorsStyleSchema2 = external_exports.object({
6076
6318
  width: external_exports.number().int().min(1).max(64).optional(),
@@ -6106,7 +6348,8 @@ var CarouselLayerSchema2 = external_exports.object({
6106
6348
  autoAdvanceMs: external_exports.number().int().min(500).max(6e4).optional(),
6107
6349
  pageControl: CarouselPageControlSchema2.optional(),
6108
6350
  style: CommonStyleSchema2.optional(),
6109
- styleBreakpoints: CommonStyleBreakpointsSchema2
6351
+ styleBreakpoints: CommonStyleBreakpointsSchema2,
6352
+ carouselLayoutBreakpoints: CarouselLayoutBreakpointsSchema2
6110
6353
  });
6111
6354
  layerSchemaStore2.schema = external_exports.lazy(
6112
6355
  () => external_exports.union([
@@ -6127,6 +6370,7 @@ layerSchemaStore2.schema = external_exports.lazy(
6127
6370
  MultipleChoiceLayerSchema2,
6128
6371
  TextInputLayerSchema2,
6129
6372
  ScaleInputLayerSchema2,
6373
+ WheelPickerLayerSchema2,
6130
6374
  OAuthLoginLayerSchema2,
6131
6375
  OAuthProviderPresetLayerSchema2,
6132
6376
  OAuthProviderCustomLayerSchema2,
@@ -6137,10 +6381,10 @@ layerSchemaStore2.schema = external_exports.lazy(
6137
6381
  ])
6138
6382
  );
6139
6383
  var DecisionNodeIdSchema = external_exports.string().min(1).max(64).regex(/^dec_[a-z0-9_]+$/i, "decision node id must look like dec_<id>");
6140
- var ExternalSurfaceJumpIdSchema = external_exports.string().min(1).max(64).regex(/^surf_[a-z0-9_]+$/i, "external surface node id must look like surf_<id>");
6384
+ var ExternalSurfaceJumpIdSchema22 = external_exports.string().min(1).max(64).regex(/^surf_[a-z0-9_]+$/i, "external surface node id must look like surf_<id>");
6141
6385
  var EXTERNAL_SURFACE_NO_NEXT = "__onb_surface_no_next__";
6142
6386
  var ExternalSurfaceTerminalTargetSchema = external_exports.literal(EXTERNAL_SURFACE_NO_NEXT);
6143
- var FlowJumpTargetSchema = ScreenIdSchema2.or(DecisionNodeIdSchema).or(ExternalSurfaceJumpIdSchema).or(ExternalSurfaceTerminalTargetSchema).nullable();
6387
+ var FlowJumpTargetSchema = ScreenIdSchema2.or(DecisionNodeIdSchema).or(ExternalSurfaceJumpIdSchema22).or(ExternalSurfaceTerminalTargetSchema).nullable();
6144
6388
  var DecisionBuiltinNameSchema = external_exports.enum(["locale", "platform"]);
6145
6389
  var DecisionVariableRefSchema = external_exports.discriminatedUnion("kind", [
6146
6390
  external_exports.object({ kind: external_exports.literal("builtin"), name: DecisionBuiltinNameSchema }),
@@ -6407,9 +6651,13 @@ var ThemedColorModesSchema3 = external_exports.object({
6407
6651
  message: "at least one of light or dark is required"
6408
6652
  });
6409
6653
  var ThemedColorSchema3 = external_exports.union([external_exports.string().min(1), ThemedColorModesSchema3]);
6410
- var WIDTH_PRESETS3 = ["auto", "full", "1/2", "1/3", "2/3", "1/4", "3/4"];
6411
- var WidthValueSchema3 = external_exports.union([external_exports.enum(WIDTH_PRESETS3), external_exports.number().int().min(0).max(2e3)]);
6412
- var HEIGHT_PRESETS3 = ["auto", "full", "fill"];
6654
+ var LAYOUT_FRACTION_PRESETS3 = ["1/2", "1/3", "2/3", "1/4", "3/4"];
6655
+ var WIDTH_PRESETS3 = ["auto", "full", ...LAYOUT_FRACTION_PRESETS3];
6656
+ var WidthValueSchema3 = external_exports.preprocess(
6657
+ (value) => value === "fill" ? "full" : value,
6658
+ external_exports.union([external_exports.enum(WIDTH_PRESETS3), external_exports.number().int().min(0).max(2e3)])
6659
+ );
6660
+ var HEIGHT_PRESETS3 = ["auto", "full", "fill", ...LAYOUT_FRACTION_PRESETS3];
6413
6661
  var CommonLayoutHeightSchema3 = external_exports.union([
6414
6662
  external_exports.enum(HEIGHT_PRESETS3),
6415
6663
  external_exports.number().int().min(0).max(2e3)
@@ -6441,6 +6689,8 @@ var CommonStyleSchema3 = external_exports.object({
6441
6689
  border: BorderSchema3.optional(),
6442
6690
  shadow: DropShadowSchema3.optional(),
6443
6691
  opacity: external_exports.number().min(0).max(1).optional(),
6692
+ /** Multiplier (0–1) applied to the resolved background color alpha only; children stay fully opaque unless `opacity` is set. */
6693
+ backgroundOpacity: external_exports.number().min(0).max(1).optional(),
6444
6694
  width: WidthValueSchema3.optional(),
6445
6695
  /** Omit for normal flow; `'absolute'` removes the layer from flex flow (non-root only). */
6446
6696
  position: external_exports.literal("absolute").optional(),
@@ -6449,8 +6699,13 @@ var CommonStyleSchema3 = external_exports.object({
6449
6699
  zIndex: external_exports.number().int().min(-999).max(999).optional(),
6450
6700
  /** Static rotation in degrees (CSS `rotate`); not timeline animation. */
6451
6701
  rotate: external_exports.number().min(-360).max(360).optional(),
6452
- /** Cross-axis size: `auto` (hug), `full`/`fill` (parent height), or fixed px. No fractions. */
6702
+ /** Cross-axis size: `auto` (hug), `full`/`fill` (parent height), fractions, or fixed px. */
6453
6703
  height: CommonLayoutHeightSchema3.optional(),
6704
+ /** Optional size clamps (px); applied on the flex shell / wrapper like width/height. */
6705
+ minWidth: NonNegativePxSchema3.max(2e3).optional(),
6706
+ maxWidth: NonNegativePxSchema3.max(2e3).optional(),
6707
+ minHeight: NonNegativePxSchema3.max(2e3).optional(),
6708
+ maxHeight: NonNegativePxSchema3.max(2e3).optional(),
6454
6709
  /** Stroke thickness in px for layers that render a stroke primitive (e.g. loader ring). */
6455
6710
  strokeWidth: external_exports.number().int().min(0).max(64).optional()
6456
6711
  }).partial();
@@ -6464,9 +6719,10 @@ var TextStyleSchema3 = CommonStyleSchema3.extend({
6464
6719
  fontWeight: external_exports.number().int().min(100).max(900).optional(),
6465
6720
  color: ThemedColorSchema3.optional(),
6466
6721
  align: external_exports.enum(["left", "center", "right"]).optional(),
6722
+ /** Unitless line-height multiplier (CSS `line-height` without units). */
6467
6723
  lineHeight: external_exports.number().min(0.8).max(3).optional(),
6468
- /** Multiplier (0–1) applied to the resolved background color alpha only; text stays fully opaque unless `opacity` is set. */
6469
- backgroundOpacity: external_exports.number().min(0).max(1).optional()
6724
+ /** Extra spacing between characters as a multiple of `fontSize` (CSS `em`; negative values tighten). */
6725
+ letterSpacing: external_exports.number().min(-0.5).max(1).optional()
6470
6726
  });
6471
6727
  var ImageStyleSchema3 = CommonStyleSchema3.extend({
6472
6728
  fit: external_exports.enum(["cover", "contain", "fill"]).optional(),
@@ -6541,6 +6797,46 @@ var ButtonLayoutBreakpointsSchema3 = external_exports.object({
6541
6797
  xl: ButtonLayoutBreakpointPatchSchema3.optional(),
6542
6798
  "2xl": ButtonLayoutBreakpointPatchSchema3.optional()
6543
6799
  }).partial().optional();
6800
+ var AuthLayoutBreakpointPatchSchema3 = external_exports.object({
6801
+ gap: NonNegativePxSchema3.optional(),
6802
+ align: external_exports.enum(["start", "center", "end", "stretch"]).optional()
6803
+ }).partial();
6804
+ var AuthLayoutBreakpointsSchema3 = external_exports.object({
6805
+ sm: AuthLayoutBreakpointPatchSchema3.optional(),
6806
+ md: AuthLayoutBreakpointPatchSchema3.optional(),
6807
+ lg: AuthLayoutBreakpointPatchSchema3.optional(),
6808
+ xl: AuthLayoutBreakpointPatchSchema3.optional(),
6809
+ "2xl": AuthLayoutBreakpointPatchSchema3.optional()
6810
+ }).partial().optional();
6811
+ var ChoiceLayoutBreakpointPatchSchema3 = external_exports.object({
6812
+ direction: external_exports.enum(["vertical", "horizontal"]).optional(),
6813
+ gap: NonNegativePxSchema3.optional(),
6814
+ columns: external_exports.number().int().min(1).max(6).optional()
6815
+ }).partial();
6816
+ var ChoiceLayoutBreakpointsSchema3 = external_exports.object({
6817
+ sm: ChoiceLayoutBreakpointPatchSchema3.optional(),
6818
+ md: ChoiceLayoutBreakpointPatchSchema3.optional(),
6819
+ lg: ChoiceLayoutBreakpointPatchSchema3.optional(),
6820
+ xl: ChoiceLayoutBreakpointPatchSchema3.optional(),
6821
+ "2xl": ChoiceLayoutBreakpointPatchSchema3.optional()
6822
+ }).partial().optional();
6823
+ var CarouselLayoutBreakpointPatchSchema3 = external_exports.object({
6824
+ pageAlignment: external_exports.enum(["top", "center", "bottom"]).optional(),
6825
+ pageSpacing: NonNegativePxSchema3.optional(),
6826
+ pagePeek: NonNegativePxSchema3.optional()
6827
+ }).partial();
6828
+ var CarouselLayoutBreakpointsSchema3 = external_exports.object({
6829
+ sm: CarouselLayoutBreakpointPatchSchema3.optional(),
6830
+ md: CarouselLayoutBreakpointPatchSchema3.optional(),
6831
+ lg: CarouselLayoutBreakpointPatchSchema3.optional(),
6832
+ xl: CarouselLayoutBreakpointPatchSchema3.optional(),
6833
+ "2xl": CarouselLayoutBreakpointPatchSchema3.optional()
6834
+ }).partial().optional();
6835
+ var DecisionNodeJumpIdSchema3 = external_exports.string().min(1).max(64).regex(/^dec_[a-z0-9_]+$/i);
6836
+ var ExternalSurfaceJumpIdSchema3 = external_exports.string().min(1).max(64).regex(/^surf_[a-z0-9_]+$/i);
6837
+ var FlowGraphNodeJumpTargetSchema3 = ScreenIdSchema3.or(DecisionNodeJumpIdSchema3).or(
6838
+ ExternalSurfaceJumpIdSchema3
6839
+ );
6544
6840
  var OS_PERMISSION_KEYS3 = [
6545
6841
  "notifications",
6546
6842
  "camera",
@@ -6572,11 +6868,9 @@ var PERMISSION_OUTCOME_VALUES3 = ["granted", "denied", "blocked"];
6572
6868
  var PermissionOutcomeSchema2 = external_exports.enum(PERMISSION_OUTCOME_VALUES3);
6573
6869
  var OS_PERMISSION_OUTCOME_CONTINUE3 = "continue";
6574
6870
  var OS_PERMISSION_OUTCOME_END3 = "end";
6575
- var OsPermissionOutcomeBranchTargetSchema3 = external_exports.union([
6576
- ScreenIdSchema3,
6577
- external_exports.literal(OS_PERMISSION_OUTCOME_CONTINUE3),
6578
- external_exports.literal(OS_PERMISSION_OUTCOME_END3)
6579
- ]);
6871
+ var OsPermissionOutcomeBranchTargetSchema3 = FlowGraphNodeJumpTargetSchema3.or(
6872
+ external_exports.literal(OS_PERMISSION_OUTCOME_CONTINUE3)
6873
+ ).or(external_exports.literal(OS_PERMISSION_OUTCOME_END3));
6580
6874
  var OsPermissionOutcomesSchema3 = external_exports.object({
6581
6875
  granted: OsPermissionOutcomeBranchTargetSchema3,
6582
6876
  denied: OsPermissionOutcomeBranchTargetSchema3,
@@ -6593,7 +6887,7 @@ var ButtonActionSchema3 = external_exports.discriminatedUnion("kind", [
6593
6887
  kind: external_exports.literal("go_back_one_screen"),
6594
6888
  fallbackScreenId: ScreenIdSchema3.optional()
6595
6889
  }),
6596
- external_exports.object({ kind: external_exports.literal("go_to_step"), screenId: ScreenIdSchema3 }),
6890
+ external_exports.object({ kind: external_exports.literal("go_to_step"), screenId: FlowGraphNodeJumpTargetSchema3 }),
6597
6891
  external_exports.object({
6598
6892
  kind: external_exports.literal("request_os_permission"),
6599
6893
  permissionKey: OsPermissionKeySchema3,
@@ -6605,7 +6899,7 @@ var ButtonActionSchema3 = external_exports.discriminatedUnion("kind", [
6605
6899
  }),
6606
6900
  external_exports.object({ kind: external_exports.literal("request_app_review") })
6607
6901
  ]);
6608
- var TEXT_INPUT_TYPES3 = ["plain", "email", "phone", "url", "multiline"];
6902
+ var TEXT_INPUT_TYPES3 = ["plain", "email", "phone", "url", "number", "multiline"];
6609
6903
  var TextInputTypeSchema3 = external_exports.enum(TEXT_INPUT_TYPES3);
6610
6904
  var COUNTER_DISPLAY_KINDS3 = ["number", "time"];
6611
6905
  var COUNTER_TIME_FORMATS3 = ["mm_ss", "hh_mm_ss", "dd_hh_mm_ss"];
@@ -6670,12 +6964,13 @@ var ProgressLayerSchema3 = external_exports.object({
6670
6964
  kind: external_exports.literal("progress"),
6671
6965
  trackColor: ThemedColorSchema3.optional(),
6672
6966
  fillColor: ThemedColorSchema3.optional(),
6673
- style: CommonStyleSchema3.optional()
6967
+ style: CommonStyleSchema3.optional(),
6968
+ styleBreakpoints: CommonStyleBreakpointsSchema3
6674
6969
  });
6675
6970
  var LoaderOnCompleteSchema3 = external_exports.discriminatedUnion("mode", [
6676
6971
  external_exports.object({ mode: external_exports.literal("none") }),
6677
6972
  external_exports.object({ mode: external_exports.literal("next") }),
6678
- external_exports.object({ mode: external_exports.literal("screen"), screenId: ScreenIdSchema3 })
6973
+ external_exports.object({ mode: external_exports.literal("screen"), screenId: FlowGraphNodeJumpTargetSchema3 })
6679
6974
  ]);
6680
6975
  var LoaderLayerSchema3 = external_exports.object({
6681
6976
  ...baseLayerShape3,
@@ -6690,7 +6985,8 @@ var LoaderLayerSchema3 = external_exports.object({
6690
6985
  fillColor: ThemedColorSchema3.optional(),
6691
6986
  /** Horizontal alignment of the bar or ring within the layer box (default start). */
6692
6987
  align: external_exports.enum(["start", "center", "end"]).optional(),
6693
- style: CommonStyleSchema3.optional()
6988
+ style: CommonStyleSchema3.optional(),
6989
+ styleBreakpoints: CommonStyleBreakpointsSchema3
6694
6990
  }).superRefine((data, ctx) => {
6695
6991
  if (data.variant !== "circular") return;
6696
6992
  const w = data.style?.width;
@@ -6727,27 +7023,39 @@ var CheckboxLayerSchema3 = external_exports.object({
6727
7023
  styleBreakpoints: CommonStyleBreakpointsSchema3
6728
7024
  });
6729
7025
  var lazyLayer23 = () => layerSchemaStore3.schema;
6730
- var StackLayerSchema3 = external_exports.object({
6731
- ...baseLayerShape3,
6732
- kind: external_exports.literal("stack"),
6733
- style: CommonStyleSchema3.optional(),
6734
- styleBreakpoints: CommonStyleBreakpointsSchema3,
6735
- stackLayoutBreakpoints: StackLayoutBreakpointsSchema3,
6736
- selectedStyle: CommonStyleSchema3.optional(),
6737
- direction: external_exports.enum(["vertical", "horizontal"]),
6738
- gap: external_exports.number().int().min(0).optional(),
6739
- align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
6740
- justify: external_exports.enum(["start", "center", "end"]).optional(),
6741
- distribution: external_exports.enum(["start", "center", "end", "between", "around"]).optional(),
6742
- wrap: external_exports.boolean().optional(),
6743
- children: external_exports.lazy(() => external_exports.array(lazyLayer23()))
6744
- });
7026
+ var migrateStackJustifyForParse3 = (raw) => {
7027
+ if (!raw || typeof raw !== "object") return raw;
7028
+ const o = { ...raw };
7029
+ if (o.justify != null && o.distribution == null) o.distribution = o.justify;
7030
+ delete o.justify;
7031
+ return o;
7032
+ };
7033
+ var StackLayerSchema3 = external_exports.preprocess(
7034
+ migrateStackJustifyForParse3,
7035
+ external_exports.object({
7036
+ ...baseLayerShape3,
7037
+ kind: external_exports.literal("stack"),
7038
+ style: CommonStyleSchema3.optional(),
7039
+ styleBreakpoints: CommonStyleBreakpointsSchema3,
7040
+ stackLayoutBreakpoints: StackLayoutBreakpointsSchema3,
7041
+ selectedStyle: CommonStyleSchema3.optional(),
7042
+ selectedStyleBreakpoints: CommonStyleBreakpointsSchema3,
7043
+ direction: external_exports.enum(["vertical", "horizontal"]),
7044
+ gap: external_exports.number().int().min(0).optional(),
7045
+ align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
7046
+ distribution: external_exports.enum(["start", "center", "end", "between", "around"]).optional(),
7047
+ wrap: external_exports.boolean().optional(),
7048
+ children: external_exports.lazy(() => external_exports.array(lazyLayer23()))
7049
+ })
7050
+ );
6745
7051
  var TextLayerSchema3 = external_exports.object({
6746
7052
  ...baseLayerShape3,
6747
7053
  kind: external_exports.literal("text"),
6748
7054
  text: LocalizedTextSchema4,
6749
7055
  style: TextStyleSchema3.optional(),
6750
- styleBreakpoints: TextStyleBreakpointsSchema3
7056
+ styleBreakpoints: TextStyleBreakpointsSchema3,
7057
+ /** Merged on top of resolved `style` when this layer is inside a selected choice option. */
7058
+ selectedStyle: TextStyleSchema3.optional()
6751
7059
  });
6752
7060
  var migrateLegacyHyperlinkForParse3 = (raw) => {
6753
7061
  if (!raw || typeof raw !== "object") return raw;
@@ -6786,7 +7094,8 @@ var HyperlinkLayerSchemaInner3 = external_exports.object({
6786
7094
  distribution: external_exports.enum(["start", "center", "end", "between", "around"]).optional(),
6787
7095
  wrap: external_exports.boolean().optional(),
6788
7096
  style: CommonStyleSchema3.optional(),
6789
- styleBreakpoints: CommonStyleBreakpointsSchema3
7097
+ styleBreakpoints: CommonStyleBreakpointsSchema3,
7098
+ hyperlinkLayoutBreakpoints: StackLayoutBreakpointsSchema3
6790
7099
  }).superRefine((data, ctx) => {
6791
7100
  const p = parseHyperlinkHref3(data.href.trim());
6792
7101
  if (!p.ok) {
@@ -6807,7 +7116,8 @@ var ImageLayerSchema3 = external_exports.object({
6807
7116
  media: MediaReferenceSchema3.optional(),
6808
7117
  alt: external_exports.string().max(280).optional(),
6809
7118
  style: ImageStyleSchema3.optional(),
6810
- styleBreakpoints: ImageStyleBreakpointsSchema3
7119
+ styleBreakpoints: ImageStyleBreakpointsSchema3,
7120
+ selectedStyle: ImageStyleSchema3.optional()
6811
7121
  });
6812
7122
  var LottieLayerSchema3 = external_exports.object({
6813
7123
  ...baseLayerShape3,
@@ -6818,7 +7128,8 @@ var LottieLayerSchema3 = external_exports.object({
6818
7128
  triggerLayerId: external_exports.string().min(1).optional(),
6819
7129
  onComplete: LoaderOnCompleteSchema3.optional(),
6820
7130
  style: ImageStyleSchema3.optional(),
6821
- styleBreakpoints: ImageStyleBreakpointsSchema3
7131
+ styleBreakpoints: ImageStyleBreakpointsSchema3,
7132
+ selectedStyle: ImageStyleSchema3.optional()
6822
7133
  });
6823
7134
  var VideoLayerSchema3 = external_exports.object({
6824
7135
  ...baseLayerShape3,
@@ -6830,7 +7141,8 @@ var VideoLayerSchema3 = external_exports.object({
6830
7141
  onComplete: LoaderOnCompleteSchema3.optional(),
6831
7142
  audioEnabled: external_exports.boolean().optional(),
6832
7143
  style: ImageStyleSchema3.optional(),
6833
- styleBreakpoints: ImageStyleBreakpointsSchema3
7144
+ styleBreakpoints: ImageStyleBreakpointsSchema3,
7145
+ selectedStyle: ImageStyleSchema3.optional()
6834
7146
  });
6835
7147
  var IconLayerSchema3 = external_exports.object({
6836
7148
  ...baseLayerShape3,
@@ -6838,7 +7150,8 @@ var IconLayerSchema3 = external_exports.object({
6838
7150
  family: external_exports.enum(ICON_FAMILIES3),
6839
7151
  iconName: external_exports.string().min(1).max(128),
6840
7152
  style: IconStyleSchema3.optional(),
6841
- styleBreakpoints: IconStyleBreakpointsSchema3
7153
+ styleBreakpoints: IconStyleBreakpointsSchema3,
7154
+ selectedStyle: IconStyleSchema3.optional()
6842
7155
  });
6843
7156
  var lazyLayer33 = () => layerSchemaStore3.schema;
6844
7157
  var OAuthProviderPresetLayerSchema3 = external_exports.object({
@@ -6992,6 +7305,7 @@ var OAuthLoginLayerSchemaValidated3 = external_exports.object({
6992
7305
  ),
6993
7306
  gap: external_exports.number().int().min(0).optional(),
6994
7307
  align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
7308
+ authLayoutBreakpoints: AuthLayoutBreakpointsSchema3,
6995
7309
  style: CommonStyleSchema3.optional(),
6996
7310
  styleBreakpoints: CommonStyleBreakpointsSchema3
6997
7311
  });
@@ -7140,6 +7454,7 @@ var EmailPasswordAuthLayerSchemaValidated3 = external_exports.object({
7140
7454
  ),
7141
7455
  gap: external_exports.number().int().min(0).optional(),
7142
7456
  align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
7457
+ authLayoutBreakpoints: AuthLayoutBreakpointsSchema3,
7143
7458
  style: CommonStyleSchema3.optional(),
7144
7459
  styleBreakpoints: CommonStyleBreakpointsSchema3
7145
7460
  }).superRefine(refineEmailPasswordAuthChildren3);
@@ -7153,7 +7468,7 @@ var ChoiceOptionBindingSchema3 = external_exports.object({
7153
7468
  });
7154
7469
  var BranchConditionSchema3 = external_exports.object({
7155
7470
  choiceId: external_exports.string().min(1),
7156
- goTo: ScreenIdSchema3
7471
+ goTo: FlowGraphNodeJumpTargetSchema3
7157
7472
  });
7158
7473
  var ChoiceBranchingSchema3 = external_exports.object({
7159
7474
  enabled: external_exports.boolean(),
@@ -7220,7 +7535,8 @@ var SingleChoiceLayerSchema3 = external_exports.object({
7220
7535
  gap: external_exports.number().int().min(0).optional(),
7221
7536
  columns: external_exports.number().int().min(1).max(12).optional(),
7222
7537
  style: CommonStyleSchema3.optional(),
7223
- styleBreakpoints: CommonStyleBreakpointsSchema3
7538
+ styleBreakpoints: CommonStyleBreakpointsSchema3,
7539
+ choiceLayoutBreakpoints: ChoiceLayoutBreakpointsSchema3
7224
7540
  });
7225
7541
  var MultipleChoiceLayerSchema3 = external_exports.object({
7226
7542
  ...baseLayerShape3,
@@ -7237,9 +7553,20 @@ var MultipleChoiceLayerSchema3 = external_exports.object({
7237
7553
  gap: external_exports.number().int().min(0).optional(),
7238
7554
  columns: external_exports.number().int().min(1).max(12).optional(),
7239
7555
  style: CommonStyleSchema3.optional(),
7240
- styleBreakpoints: CommonStyleBreakpointsSchema3
7556
+ styleBreakpoints: CommonStyleBreakpointsSchema3,
7557
+ choiceLayoutBreakpoints: ChoiceLayoutBreakpointsSchema3
7241
7558
  });
7242
7559
  var validateChoiceChildrenAndBindings = ChoiceChildrenAndBindingsRefinement;
7560
+ var TextInputFieldStyleSchema3 = external_exports.object({
7561
+ fontFamily: external_exports.string().min(1).max(128).optional(),
7562
+ fontSize: external_exports.number().int().min(8).max(96).optional(),
7563
+ fontWeight: external_exports.number().int().min(100).max(900).optional(),
7564
+ color: ThemedColorSchema3.optional(),
7565
+ align: external_exports.enum(["left", "center", "right"]).optional(),
7566
+ lineHeight: external_exports.number().min(0.8).max(3).optional(),
7567
+ letterSpacing: external_exports.number().min(-0.5).max(1).optional(),
7568
+ opacity: external_exports.number().min(0).max(1).optional()
7569
+ }).partial();
7243
7570
  var TextInputLayerSchema3 = external_exports.object({
7244
7571
  ...baseLayerShape3,
7245
7572
  kind: external_exports.literal("text_input"),
@@ -7251,7 +7578,10 @@ var TextInputLayerSchema3 = external_exports.object({
7251
7578
  maxLength: external_exports.number().int().positive().max(2e3).optional(),
7252
7579
  classification: FieldClassificationSchema3,
7253
7580
  children: external_exports.lazy(() => external_exports.array(lazyLayer53())).optional(),
7254
- style: CommonStyleSchema3.optional()
7581
+ /** Typography for the native input's typed text. */
7582
+ fieldStyle: TextInputFieldStyleSchema3.optional(),
7583
+ style: CommonStyleSchema3.optional(),
7584
+ styleBreakpoints: CommonStyleBreakpointsSchema3
7255
7585
  });
7256
7586
  var ScaleInputLabelStyleSchema3 = external_exports.object({
7257
7587
  fontFamily: external_exports.string().min(1).max(128).optional(),
@@ -7260,6 +7590,7 @@ var ScaleInputLabelStyleSchema3 = external_exports.object({
7260
7590
  color: ThemedColorSchema3.optional(),
7261
7591
  align: external_exports.enum(["left", "center", "right"]).optional(),
7262
7592
  lineHeight: external_exports.number().min(0.8).max(3).optional(),
7593
+ letterSpacing: external_exports.number().min(-0.5).max(1).optional(),
7263
7594
  opacity: external_exports.number().min(0).max(1).optional()
7264
7595
  }).partial();
7265
7596
  var ScaleInputLayerSchema3 = external_exports.object({
@@ -7282,7 +7613,40 @@ var ScaleInputLayerSchema3 = external_exports.object({
7282
7613
  thumbSize: external_exports.number().int().min(8).max(48).optional(),
7283
7614
  thumbColor: ThemedColorSchema3.optional(),
7284
7615
  children: external_exports.lazy(() => external_exports.array(lazyLayer53())).optional(),
7285
- style: CommonStyleSchema3.optional()
7616
+ style: CommonStyleSchema3.optional(),
7617
+ styleBreakpoints: CommonStyleBreakpointsSchema3
7618
+ });
7619
+ var WheelPickerOptionSchema3 = external_exports.object({
7620
+ optionId: external_exports.string().min(1).max(64),
7621
+ label: LocalizedTextSchema4
7622
+ });
7623
+ var WheelPickerItemStyleSchema3 = external_exports.object({
7624
+ fontFamily: external_exports.string().min(1).max(128).optional(),
7625
+ fontSize: external_exports.number().int().min(8).max(96).optional(),
7626
+ fontWeight: external_exports.number().int().min(100).max(900).optional(),
7627
+ color: ThemedColorSchema3.optional(),
7628
+ opacity: external_exports.number().min(0).max(1).optional()
7629
+ }).partial();
7630
+ var WheelPickerLayerSchema3 = external_exports.object({
7631
+ ...baseLayerShape3,
7632
+ kind: external_exports.literal("wheel_picker"),
7633
+ fieldKey: FieldKeySchema3,
7634
+ mode: external_exports.enum(["options", "date"]).optional(),
7635
+ options: external_exports.array(WheelPickerOptionSchema3).min(2).optional(),
7636
+ defaultOptionId: external_exports.string().optional(),
7637
+ datePart: external_exports.enum(["year", "month", "day"]).optional(),
7638
+ minYear: external_exports.number().int().min(1e3).max(9999).optional(),
7639
+ maxYear: external_exports.number().int().min(1e3).max(9999).optional(),
7640
+ defaultValue: external_exports.string().optional(),
7641
+ placeholder: LocalizedTextSchema4.optional(),
7642
+ itemHeight: external_exports.number().int().min(28).max(72).optional(),
7643
+ visibleItemCount: external_exports.number().int().min(3).max(9).optional(),
7644
+ selectionBackgroundColor: ThemedColorSchema3.optional(),
7645
+ itemStyle: WheelPickerItemStyleSchema3.optional(),
7646
+ selectedItemStyle: WheelPickerItemStyleSchema3.optional(),
7647
+ children: external_exports.lazy(() => external_exports.array(lazyLayer53())).optional(),
7648
+ style: CommonStyleSchema3.optional(),
7649
+ styleBreakpoints: CommonStyleBreakpointsSchema3
7286
7650
  });
7287
7651
  var CarouselIndicatorsStyleSchema3 = external_exports.object({
7288
7652
  width: external_exports.number().int().min(1).max(64).optional(),
@@ -7318,7 +7682,8 @@ var CarouselLayerSchema3 = external_exports.object({
7318
7682
  autoAdvanceMs: external_exports.number().int().min(500).max(6e4).optional(),
7319
7683
  pageControl: CarouselPageControlSchema3.optional(),
7320
7684
  style: CommonStyleSchema3.optional(),
7321
- styleBreakpoints: CommonStyleBreakpointsSchema3
7685
+ styleBreakpoints: CommonStyleBreakpointsSchema3,
7686
+ carouselLayoutBreakpoints: CarouselLayoutBreakpointsSchema3
7322
7687
  });
7323
7688
  layerSchemaStore3.schema = external_exports.lazy(
7324
7689
  () => external_exports.union([
@@ -7339,6 +7704,7 @@ layerSchemaStore3.schema = external_exports.lazy(
7339
7704
  MultipleChoiceLayerSchema3,
7340
7705
  TextInputLayerSchema3,
7341
7706
  ScaleInputLayerSchema3,
7707
+ WheelPickerLayerSchema3,
7342
7708
  OAuthLoginLayerSchema3,
7343
7709
  OAuthProviderPresetLayerSchema3,
7344
7710
  OAuthProviderCustomLayerSchema3,
@@ -7380,6 +7746,7 @@ var layerHasAbsolutePositionAuthored = (layer) => {
7380
7746
  return commonStyleHasAbsolutePosition(layer.style, void 0);
7381
7747
  case "text_input":
7382
7748
  case "scale_input":
7749
+ case "wheel_picker":
7383
7750
  return commonStyleHasAbsolutePosition(layer.style, void 0);
7384
7751
  case "oauth_provider":
7385
7752
  if (layer.variant === "preset") {
@@ -7404,7 +7771,7 @@ var layerHasAbsolutePositionAuthored = (layer) => {
7404
7771
  return false;
7405
7772
  }
7406
7773
  };
7407
- var isInputLayer2 = (l) => l.kind === "single_choice" || l.kind === "multiple_choice" || l.kind === "text_input" || l.kind === "scale_input";
7774
+ var isInputLayer2 = (l) => l.kind === "single_choice" || l.kind === "multiple_choice" || l.kind === "text_input" || l.kind === "scale_input" || l.kind === "wheel_picker";
7408
7775
  var ANIMATABLE_PROPERTIES = [
7409
7776
  "opacity",
7410
7777
  "translateX",
@@ -7560,10 +7927,10 @@ var ScreenContainerStyleBreakpointsSchema = external_exports.object({
7560
7927
  "2xl": ScreenContainerBreakpointPatchSchema.optional()
7561
7928
  }).partial().optional();
7562
7929
  var DecisionNodeIdSchema2 = external_exports.string().min(1).max(64).regex(/^dec_[a-z0-9_]+$/i, "decision node id must look like dec_<id>");
7563
- var ExternalSurfaceJumpIdSchema2 = external_exports.string().min(1).max(64).regex(/^surf_[a-z0-9_]+$/i, "external surface node id must look like surf_<id>");
7930
+ var ExternalSurfaceJumpIdSchema23 = external_exports.string().min(1).max(64).regex(/^surf_[a-z0-9_]+$/i, "external surface node id must look like surf_<id>");
7564
7931
  var EXTERNAL_SURFACE_NO_NEXT2 = "__onb_surface_no_next__";
7565
7932
  var ExternalSurfaceTerminalTargetSchema2 = external_exports.literal(EXTERNAL_SURFACE_NO_NEXT2);
7566
- var FlowJumpTargetSchema2 = ScreenIdSchema3.or(DecisionNodeIdSchema2).or(ExternalSurfaceJumpIdSchema2).or(ExternalSurfaceTerminalTargetSchema2).nullable();
7933
+ var FlowJumpTargetSchema2 = ScreenIdSchema3.or(DecisionNodeIdSchema2).or(ExternalSurfaceJumpIdSchema23).or(ExternalSurfaceTerminalTargetSchema2).nullable();
7567
7934
  var DecisionBuiltinNameSchema2 = external_exports.enum(["locale", "platform"]);
7568
7935
  var DecisionVariableRefSchema2 = external_exports.discriminatedUnion("kind", [
7569
7936
  external_exports.object({ kind: external_exports.literal("builtin"), name: DecisionBuiltinNameSchema2 }),
@@ -8223,7 +8590,7 @@ var refineManifestScreens = (manifest, ctx, jumpTargets, screenIds, allFieldKeys
8223
8590
  );
8224
8591
  const knownOptionIds = new Set(l.optionBindings.map((b) => b.optionId));
8225
8592
  for (const cond of l.branching.conditions) {
8226
- if (!screenIds.has(cond.goTo)) {
8593
+ if (!jumpTargets.has(cond.goTo)) {
8227
8594
  ctx.addIssue({
8228
8595
  code: external_exports.ZodIssueCode.custom,
8229
8596
  message: `screen "${screen.id}" branch condition "${cond.choiceId}" -> "${cond.goTo}" not found`,
@@ -8240,7 +8607,7 @@ var refineManifestScreens = (manifest, ctx, jumpTargets, screenIds, allFieldKeys
8240
8607
  }
8241
8608
  }
8242
8609
  if (l.kind === "button" && l.action.kind === "go_to_step") {
8243
- if (!screenIds.has(l.action.screenId)) {
8610
+ if (!jumpTargets.has(l.action.screenId)) {
8244
8611
  ctx.addIssue({
8245
8612
  code: external_exports.ZodIssueCode.custom,
8246
8613
  message: `screen "${screen.id}" button action go_to_step "${l.action.screenId}" not found`,
@@ -8280,6 +8647,24 @@ var refineManifestScreens = (manifest, ctx, jumpTargets, screenIds, allFieldKeys
8280
8647
  }
8281
8648
  }
8282
8649
  }
8650
+ if (l.kind === "loader" && l.onComplete?.mode === "screen") {
8651
+ if (!jumpTargets.has(l.onComplete.screenId)) {
8652
+ ctx.addIssue({
8653
+ code: external_exports.ZodIssueCode.custom,
8654
+ message: `screen "${screen.id}" loader "${l.id}" onComplete targets missing destination "${l.onComplete.screenId}"`,
8655
+ path: ["screens", screenIdx]
8656
+ });
8657
+ }
8658
+ }
8659
+ if ((l.kind === "lottie" || l.kind === "video") && l.onComplete?.mode === "screen") {
8660
+ if (!jumpTargets.has(l.onComplete.screenId)) {
8661
+ ctx.addIssue({
8662
+ code: external_exports.ZodIssueCode.custom,
8663
+ message: `screen "${screen.id}" ${l.kind} "${l.id}" onComplete targets missing destination "${l.onComplete.screenId}"`,
8664
+ path: ["screens", screenIdx]
8665
+ });
8666
+ }
8667
+ }
8283
8668
  if (l.kind === "back_button" && l.fallbackScreenId && !screenIds.has(l.fallbackScreenId)) {
8284
8669
  ctx.addIssue({
8285
8670
  code: external_exports.ZodIssueCode.custom,
@@ -8506,9 +8891,20 @@ var SdkResolveResponseSchema = external_exports.object({
8506
8891
  var SdkResolveAllResponseSchema = external_exports.object({
8507
8892
  channels: external_exports.array(SdkResolveResponseSchema)
8508
8893
  });
8509
- var SdkResolveAssignmentSchema = SdkResolveResponseSchema.omit({
8510
- manifest: true,
8511
- mediaMap: true
8894
+ var SdkResolveAssignmentSchema = external_exports.object({
8895
+ flowId: external_exports.string().uuid(),
8896
+ versionId: external_exports.string().uuid(),
8897
+ versionNumber: external_exports.number().int().positive(),
8898
+ assignmentVersion: external_exports.number().int().nonnegative(),
8899
+ environment: external_exports.enum(["test", "live"]),
8900
+ channelId: external_exports.string(),
8901
+ experimentId: external_exports.string().uuid().nullable(),
8902
+ variantId: external_exports.string().nullable(),
8903
+ branding: BrandingSchema.optional(),
8904
+ features: external_exports.object({
8905
+ attribution: external_exports.boolean()
8906
+ }).optional(),
8907
+ integrations: ResolvedAppIntegrationsSchema
8512
8908
  });
8513
8909
  var FlowTerminalCorrelationSchema = external_exports.object({
8514
8910
  channelId: external_exports.string(),
@@ -8829,9 +9225,13 @@ var ThemedColorModesSchema4 = external_exports.object({
8829
9225
  message: "at least one of light or dark is required"
8830
9226
  });
8831
9227
  var ThemedColorSchema4 = external_exports.union([external_exports.string().min(1), ThemedColorModesSchema4]);
8832
- var WIDTH_PRESETS4 = ["auto", "full", "1/2", "1/3", "2/3", "1/4", "3/4"];
8833
- var WidthValueSchema4 = external_exports.union([external_exports.enum(WIDTH_PRESETS4), external_exports.number().int().min(0).max(2e3)]);
8834
- var HEIGHT_PRESETS4 = ["auto", "full", "fill"];
9228
+ var LAYOUT_FRACTION_PRESETS4 = ["1/2", "1/3", "2/3", "1/4", "3/4"];
9229
+ var WIDTH_PRESETS4 = ["auto", "full", ...LAYOUT_FRACTION_PRESETS4];
9230
+ var WidthValueSchema4 = external_exports.preprocess(
9231
+ (value) => value === "fill" ? "full" : value,
9232
+ external_exports.union([external_exports.enum(WIDTH_PRESETS4), external_exports.number().int().min(0).max(2e3)])
9233
+ );
9234
+ var HEIGHT_PRESETS4 = ["auto", "full", "fill", ...LAYOUT_FRACTION_PRESETS4];
8835
9235
  var CommonLayoutHeightSchema4 = external_exports.union([
8836
9236
  external_exports.enum(HEIGHT_PRESETS4),
8837
9237
  external_exports.number().int().min(0).max(2e3)
@@ -8863,6 +9263,8 @@ var CommonStyleSchema4 = external_exports.object({
8863
9263
  border: BorderSchema4.optional(),
8864
9264
  shadow: DropShadowSchema4.optional(),
8865
9265
  opacity: external_exports.number().min(0).max(1).optional(),
9266
+ /** Multiplier (0–1) applied to the resolved background color alpha only; children stay fully opaque unless `opacity` is set. */
9267
+ backgroundOpacity: external_exports.number().min(0).max(1).optional(),
8866
9268
  width: WidthValueSchema4.optional(),
8867
9269
  /** Omit for normal flow; `'absolute'` removes the layer from flex flow (non-root only). */
8868
9270
  position: external_exports.literal("absolute").optional(),
@@ -8871,8 +9273,13 @@ var CommonStyleSchema4 = external_exports.object({
8871
9273
  zIndex: external_exports.number().int().min(-999).max(999).optional(),
8872
9274
  /** Static rotation in degrees (CSS `rotate`); not timeline animation. */
8873
9275
  rotate: external_exports.number().min(-360).max(360).optional(),
8874
- /** Cross-axis size: `auto` (hug), `full`/`fill` (parent height), or fixed px. No fractions. */
9276
+ /** Cross-axis size: `auto` (hug), `full`/`fill` (parent height), fractions, or fixed px. */
8875
9277
  height: CommonLayoutHeightSchema4.optional(),
9278
+ /** Optional size clamps (px); applied on the flex shell / wrapper like width/height. */
9279
+ minWidth: NonNegativePxSchema4.max(2e3).optional(),
9280
+ maxWidth: NonNegativePxSchema4.max(2e3).optional(),
9281
+ minHeight: NonNegativePxSchema4.max(2e3).optional(),
9282
+ maxHeight: NonNegativePxSchema4.max(2e3).optional(),
8876
9283
  /** Stroke thickness in px for layers that render a stroke primitive (e.g. loader ring). */
8877
9284
  strokeWidth: external_exports.number().int().min(0).max(64).optional()
8878
9285
  }).partial();
@@ -8886,9 +9293,10 @@ var TextStyleSchema4 = CommonStyleSchema4.extend({
8886
9293
  fontWeight: external_exports.number().int().min(100).max(900).optional(),
8887
9294
  color: ThemedColorSchema4.optional(),
8888
9295
  align: external_exports.enum(["left", "center", "right"]).optional(),
9296
+ /** Unitless line-height multiplier (CSS `line-height` without units). */
8889
9297
  lineHeight: external_exports.number().min(0.8).max(3).optional(),
8890
- /** Multiplier (0–1) applied to the resolved background color alpha only; text stays fully opaque unless `opacity` is set. */
8891
- backgroundOpacity: external_exports.number().min(0).max(1).optional()
9298
+ /** Extra spacing between characters as a multiple of `fontSize` (CSS `em`; negative values tighten). */
9299
+ letterSpacing: external_exports.number().min(-0.5).max(1).optional()
8892
9300
  });
8893
9301
  var ImageStyleSchema4 = CommonStyleSchema4.extend({
8894
9302
  fit: external_exports.enum(["cover", "contain", "fill"]).optional(),
@@ -8963,6 +9371,46 @@ var ButtonLayoutBreakpointsSchema4 = external_exports.object({
8963
9371
  xl: ButtonLayoutBreakpointPatchSchema4.optional(),
8964
9372
  "2xl": ButtonLayoutBreakpointPatchSchema4.optional()
8965
9373
  }).partial().optional();
9374
+ var AuthLayoutBreakpointPatchSchema4 = external_exports.object({
9375
+ gap: NonNegativePxSchema4.optional(),
9376
+ align: external_exports.enum(["start", "center", "end", "stretch"]).optional()
9377
+ }).partial();
9378
+ var AuthLayoutBreakpointsSchema4 = external_exports.object({
9379
+ sm: AuthLayoutBreakpointPatchSchema4.optional(),
9380
+ md: AuthLayoutBreakpointPatchSchema4.optional(),
9381
+ lg: AuthLayoutBreakpointPatchSchema4.optional(),
9382
+ xl: AuthLayoutBreakpointPatchSchema4.optional(),
9383
+ "2xl": AuthLayoutBreakpointPatchSchema4.optional()
9384
+ }).partial().optional();
9385
+ var ChoiceLayoutBreakpointPatchSchema4 = external_exports.object({
9386
+ direction: external_exports.enum(["vertical", "horizontal"]).optional(),
9387
+ gap: NonNegativePxSchema4.optional(),
9388
+ columns: external_exports.number().int().min(1).max(6).optional()
9389
+ }).partial();
9390
+ var ChoiceLayoutBreakpointsSchema4 = external_exports.object({
9391
+ sm: ChoiceLayoutBreakpointPatchSchema4.optional(),
9392
+ md: ChoiceLayoutBreakpointPatchSchema4.optional(),
9393
+ lg: ChoiceLayoutBreakpointPatchSchema4.optional(),
9394
+ xl: ChoiceLayoutBreakpointPatchSchema4.optional(),
9395
+ "2xl": ChoiceLayoutBreakpointPatchSchema4.optional()
9396
+ }).partial().optional();
9397
+ var CarouselLayoutBreakpointPatchSchema4 = external_exports.object({
9398
+ pageAlignment: external_exports.enum(["top", "center", "bottom"]).optional(),
9399
+ pageSpacing: NonNegativePxSchema4.optional(),
9400
+ pagePeek: NonNegativePxSchema4.optional()
9401
+ }).partial();
9402
+ var CarouselLayoutBreakpointsSchema4 = external_exports.object({
9403
+ sm: CarouselLayoutBreakpointPatchSchema4.optional(),
9404
+ md: CarouselLayoutBreakpointPatchSchema4.optional(),
9405
+ lg: CarouselLayoutBreakpointPatchSchema4.optional(),
9406
+ xl: CarouselLayoutBreakpointPatchSchema4.optional(),
9407
+ "2xl": CarouselLayoutBreakpointPatchSchema4.optional()
9408
+ }).partial().optional();
9409
+ var DecisionNodeJumpIdSchema4 = external_exports.string().min(1).max(64).regex(/^dec_[a-z0-9_]+$/i);
9410
+ var ExternalSurfaceJumpIdSchema4 = external_exports.string().min(1).max(64).regex(/^surf_[a-z0-9_]+$/i);
9411
+ var FlowGraphNodeJumpTargetSchema4 = ScreenIdSchema4.or(DecisionNodeJumpIdSchema4).or(
9412
+ ExternalSurfaceJumpIdSchema4
9413
+ );
8966
9414
  var OS_PERMISSION_KEYS4 = [
8967
9415
  "notifications",
8968
9416
  "camera",
@@ -8992,11 +9440,9 @@ var PERMISSION_OUTCOME_VALUES4 = ["granted", "denied", "blocked"];
8992
9440
  external_exports.enum(PERMISSION_OUTCOME_VALUES4);
8993
9441
  var OS_PERMISSION_OUTCOME_CONTINUE4 = "continue";
8994
9442
  var OS_PERMISSION_OUTCOME_END4 = "end";
8995
- var OsPermissionOutcomeBranchTargetSchema4 = external_exports.union([
8996
- ScreenIdSchema4,
8997
- external_exports.literal(OS_PERMISSION_OUTCOME_CONTINUE4),
8998
- external_exports.literal(OS_PERMISSION_OUTCOME_END4)
8999
- ]);
9443
+ var OsPermissionOutcomeBranchTargetSchema4 = FlowGraphNodeJumpTargetSchema4.or(
9444
+ external_exports.literal(OS_PERMISSION_OUTCOME_CONTINUE4)
9445
+ ).or(external_exports.literal(OS_PERMISSION_OUTCOME_END4));
9000
9446
  var OsPermissionOutcomesSchema4 = external_exports.object({
9001
9447
  granted: OsPermissionOutcomeBranchTargetSchema4,
9002
9448
  denied: OsPermissionOutcomeBranchTargetSchema4,
@@ -9013,7 +9459,7 @@ var ButtonActionSchema4 = external_exports.discriminatedUnion("kind", [
9013
9459
  kind: external_exports.literal("go_back_one_screen"),
9014
9460
  fallbackScreenId: ScreenIdSchema4.optional()
9015
9461
  }),
9016
- external_exports.object({ kind: external_exports.literal("go_to_step"), screenId: ScreenIdSchema4 }),
9462
+ external_exports.object({ kind: external_exports.literal("go_to_step"), screenId: FlowGraphNodeJumpTargetSchema4 }),
9017
9463
  external_exports.object({
9018
9464
  kind: external_exports.literal("request_os_permission"),
9019
9465
  permissionKey: OsPermissionKeySchema4,
@@ -9025,7 +9471,7 @@ var ButtonActionSchema4 = external_exports.discriminatedUnion("kind", [
9025
9471
  }),
9026
9472
  external_exports.object({ kind: external_exports.literal("request_app_review") })
9027
9473
  ]);
9028
- var TEXT_INPUT_TYPES4 = ["plain", "email", "phone", "url", "multiline"];
9474
+ var TEXT_INPUT_TYPES4 = ["plain", "email", "phone", "url", "number", "multiline"];
9029
9475
  var TextInputTypeSchema4 = external_exports.enum(TEXT_INPUT_TYPES4);
9030
9476
  var COUNTER_DISPLAY_KINDS4 = ["number", "time"];
9031
9477
  var COUNTER_TIME_FORMATS4 = ["mm_ss", "hh_mm_ss", "dd_hh_mm_ss"];
@@ -9090,12 +9536,13 @@ var ProgressLayerSchema4 = external_exports.object({
9090
9536
  kind: external_exports.literal("progress"),
9091
9537
  trackColor: ThemedColorSchema4.optional(),
9092
9538
  fillColor: ThemedColorSchema4.optional(),
9093
- style: CommonStyleSchema4.optional()
9539
+ style: CommonStyleSchema4.optional(),
9540
+ styleBreakpoints: CommonStyleBreakpointsSchema4
9094
9541
  });
9095
9542
  var LoaderOnCompleteSchema4 = external_exports.discriminatedUnion("mode", [
9096
9543
  external_exports.object({ mode: external_exports.literal("none") }),
9097
9544
  external_exports.object({ mode: external_exports.literal("next") }),
9098
- external_exports.object({ mode: external_exports.literal("screen"), screenId: ScreenIdSchema4 })
9545
+ external_exports.object({ mode: external_exports.literal("screen"), screenId: FlowGraphNodeJumpTargetSchema4 })
9099
9546
  ]);
9100
9547
  var LoaderLayerSchema4 = external_exports.object({
9101
9548
  ...baseLayerShape4,
@@ -9110,7 +9557,8 @@ var LoaderLayerSchema4 = external_exports.object({
9110
9557
  fillColor: ThemedColorSchema4.optional(),
9111
9558
  /** Horizontal alignment of the bar or ring within the layer box (default start). */
9112
9559
  align: external_exports.enum(["start", "center", "end"]).optional(),
9113
- style: CommonStyleSchema4.optional()
9560
+ style: CommonStyleSchema4.optional(),
9561
+ styleBreakpoints: CommonStyleBreakpointsSchema4
9114
9562
  }).superRefine((data, ctx) => {
9115
9563
  if (data.variant !== "circular") return;
9116
9564
  const w = data.style?.width;
@@ -9147,27 +9595,39 @@ var CheckboxLayerSchema4 = external_exports.object({
9147
9595
  styleBreakpoints: CommonStyleBreakpointsSchema4
9148
9596
  });
9149
9597
  var lazyLayer24 = () => layerSchemaStore4.schema;
9150
- var StackLayerSchema4 = external_exports.object({
9151
- ...baseLayerShape4,
9152
- kind: external_exports.literal("stack"),
9153
- style: CommonStyleSchema4.optional(),
9154
- styleBreakpoints: CommonStyleBreakpointsSchema4,
9155
- stackLayoutBreakpoints: StackLayoutBreakpointsSchema4,
9156
- selectedStyle: CommonStyleSchema4.optional(),
9157
- direction: external_exports.enum(["vertical", "horizontal"]),
9158
- gap: external_exports.number().int().min(0).optional(),
9159
- align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
9160
- justify: external_exports.enum(["start", "center", "end"]).optional(),
9161
- distribution: external_exports.enum(["start", "center", "end", "between", "around"]).optional(),
9162
- wrap: external_exports.boolean().optional(),
9163
- children: external_exports.lazy(() => external_exports.array(lazyLayer24()))
9164
- });
9598
+ var migrateStackJustifyForParse4 = (raw) => {
9599
+ if (!raw || typeof raw !== "object") return raw;
9600
+ const o = { ...raw };
9601
+ if (o.justify != null && o.distribution == null) o.distribution = o.justify;
9602
+ delete o.justify;
9603
+ return o;
9604
+ };
9605
+ var StackLayerSchema4 = external_exports.preprocess(
9606
+ migrateStackJustifyForParse4,
9607
+ external_exports.object({
9608
+ ...baseLayerShape4,
9609
+ kind: external_exports.literal("stack"),
9610
+ style: CommonStyleSchema4.optional(),
9611
+ styleBreakpoints: CommonStyleBreakpointsSchema4,
9612
+ stackLayoutBreakpoints: StackLayoutBreakpointsSchema4,
9613
+ selectedStyle: CommonStyleSchema4.optional(),
9614
+ selectedStyleBreakpoints: CommonStyleBreakpointsSchema4,
9615
+ direction: external_exports.enum(["vertical", "horizontal"]),
9616
+ gap: external_exports.number().int().min(0).optional(),
9617
+ align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
9618
+ distribution: external_exports.enum(["start", "center", "end", "between", "around"]).optional(),
9619
+ wrap: external_exports.boolean().optional(),
9620
+ children: external_exports.lazy(() => external_exports.array(lazyLayer24()))
9621
+ })
9622
+ );
9165
9623
  var TextLayerSchema4 = external_exports.object({
9166
9624
  ...baseLayerShape4,
9167
9625
  kind: external_exports.literal("text"),
9168
9626
  text: LocalizedTextSchema5,
9169
9627
  style: TextStyleSchema4.optional(),
9170
- styleBreakpoints: TextStyleBreakpointsSchema4
9628
+ styleBreakpoints: TextStyleBreakpointsSchema4,
9629
+ /** Merged on top of resolved `style` when this layer is inside a selected choice option. */
9630
+ selectedStyle: TextStyleSchema4.optional()
9171
9631
  });
9172
9632
  var migrateLegacyHyperlinkForParse4 = (raw) => {
9173
9633
  if (!raw || typeof raw !== "object") return raw;
@@ -9206,7 +9666,8 @@ var HyperlinkLayerSchemaInner4 = external_exports.object({
9206
9666
  distribution: external_exports.enum(["start", "center", "end", "between", "around"]).optional(),
9207
9667
  wrap: external_exports.boolean().optional(),
9208
9668
  style: CommonStyleSchema4.optional(),
9209
- styleBreakpoints: CommonStyleBreakpointsSchema4
9669
+ styleBreakpoints: CommonStyleBreakpointsSchema4,
9670
+ hyperlinkLayoutBreakpoints: StackLayoutBreakpointsSchema4
9210
9671
  }).superRefine((data, ctx) => {
9211
9672
  const p = parseHyperlinkHref4(data.href.trim());
9212
9673
  if (!p.ok) {
@@ -9227,7 +9688,8 @@ var ImageLayerSchema4 = external_exports.object({
9227
9688
  media: MediaReferenceSchema4.optional(),
9228
9689
  alt: external_exports.string().max(280).optional(),
9229
9690
  style: ImageStyleSchema4.optional(),
9230
- styleBreakpoints: ImageStyleBreakpointsSchema4
9691
+ styleBreakpoints: ImageStyleBreakpointsSchema4,
9692
+ selectedStyle: ImageStyleSchema4.optional()
9231
9693
  });
9232
9694
  var LottieLayerSchema4 = external_exports.object({
9233
9695
  ...baseLayerShape4,
@@ -9238,7 +9700,8 @@ var LottieLayerSchema4 = external_exports.object({
9238
9700
  triggerLayerId: external_exports.string().min(1).optional(),
9239
9701
  onComplete: LoaderOnCompleteSchema4.optional(),
9240
9702
  style: ImageStyleSchema4.optional(),
9241
- styleBreakpoints: ImageStyleBreakpointsSchema4
9703
+ styleBreakpoints: ImageStyleBreakpointsSchema4,
9704
+ selectedStyle: ImageStyleSchema4.optional()
9242
9705
  });
9243
9706
  var VideoLayerSchema4 = external_exports.object({
9244
9707
  ...baseLayerShape4,
@@ -9250,7 +9713,8 @@ var VideoLayerSchema4 = external_exports.object({
9250
9713
  onComplete: LoaderOnCompleteSchema4.optional(),
9251
9714
  audioEnabled: external_exports.boolean().optional(),
9252
9715
  style: ImageStyleSchema4.optional(),
9253
- styleBreakpoints: ImageStyleBreakpointsSchema4
9716
+ styleBreakpoints: ImageStyleBreakpointsSchema4,
9717
+ selectedStyle: ImageStyleSchema4.optional()
9254
9718
  });
9255
9719
  var IconLayerSchema4 = external_exports.object({
9256
9720
  ...baseLayerShape4,
@@ -9258,7 +9722,8 @@ var IconLayerSchema4 = external_exports.object({
9258
9722
  family: external_exports.enum(ICON_FAMILIES4),
9259
9723
  iconName: external_exports.string().min(1).max(128),
9260
9724
  style: IconStyleSchema4.optional(),
9261
- styleBreakpoints: IconStyleBreakpointsSchema4
9725
+ styleBreakpoints: IconStyleBreakpointsSchema4,
9726
+ selectedStyle: IconStyleSchema4.optional()
9262
9727
  });
9263
9728
  var lazyLayer34 = () => layerSchemaStore4.schema;
9264
9729
  var OAuthProviderPresetLayerSchema4 = external_exports.object({
@@ -9412,6 +9877,7 @@ var OAuthLoginLayerSchemaValidated4 = external_exports.object({
9412
9877
  ),
9413
9878
  gap: external_exports.number().int().min(0).optional(),
9414
9879
  align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
9880
+ authLayoutBreakpoints: AuthLayoutBreakpointsSchema4,
9415
9881
  style: CommonStyleSchema4.optional(),
9416
9882
  styleBreakpoints: CommonStyleBreakpointsSchema4
9417
9883
  });
@@ -9563,6 +10029,7 @@ var EmailPasswordAuthLayerSchemaValidated4 = external_exports.object({
9563
10029
  ),
9564
10030
  gap: external_exports.number().int().min(0).optional(),
9565
10031
  align: external_exports.enum(["start", "center", "end", "stretch"]).optional(),
10032
+ authLayoutBreakpoints: AuthLayoutBreakpointsSchema4,
9566
10033
  style: CommonStyleSchema4.optional(),
9567
10034
  styleBreakpoints: CommonStyleBreakpointsSchema4
9568
10035
  }).superRefine(refineEmailPasswordAuthChildren4);
@@ -9576,7 +10043,7 @@ var ChoiceOptionBindingSchema4 = external_exports.object({
9576
10043
  });
9577
10044
  var BranchConditionSchema4 = external_exports.object({
9578
10045
  choiceId: external_exports.string().min(1),
9579
- goTo: ScreenIdSchema4
10046
+ goTo: FlowGraphNodeJumpTargetSchema4
9580
10047
  });
9581
10048
  var ChoiceBranchingSchema4 = external_exports.object({
9582
10049
  enabled: external_exports.boolean(),
@@ -9596,7 +10063,8 @@ var SingleChoiceLayerSchema4 = external_exports.object({
9596
10063
  gap: external_exports.number().int().min(0).optional(),
9597
10064
  columns: external_exports.number().int().min(1).max(12).optional(),
9598
10065
  style: CommonStyleSchema4.optional(),
9599
- styleBreakpoints: CommonStyleBreakpointsSchema4
10066
+ styleBreakpoints: CommonStyleBreakpointsSchema4,
10067
+ choiceLayoutBreakpoints: ChoiceLayoutBreakpointsSchema4
9600
10068
  });
9601
10069
  var MultipleChoiceLayerSchema4 = external_exports.object({
9602
10070
  ...baseLayerShape4,
@@ -9613,8 +10081,19 @@ var MultipleChoiceLayerSchema4 = external_exports.object({
9613
10081
  gap: external_exports.number().int().min(0).optional(),
9614
10082
  columns: external_exports.number().int().min(1).max(12).optional(),
9615
10083
  style: CommonStyleSchema4.optional(),
9616
- styleBreakpoints: CommonStyleBreakpointsSchema4
10084
+ styleBreakpoints: CommonStyleBreakpointsSchema4,
10085
+ choiceLayoutBreakpoints: ChoiceLayoutBreakpointsSchema4
9617
10086
  });
10087
+ var TextInputFieldStyleSchema4 = external_exports.object({
10088
+ fontFamily: external_exports.string().min(1).max(128).optional(),
10089
+ fontSize: external_exports.number().int().min(8).max(96).optional(),
10090
+ fontWeight: external_exports.number().int().min(100).max(900).optional(),
10091
+ color: ThemedColorSchema4.optional(),
10092
+ align: external_exports.enum(["left", "center", "right"]).optional(),
10093
+ lineHeight: external_exports.number().min(0.8).max(3).optional(),
10094
+ letterSpacing: external_exports.number().min(-0.5).max(1).optional(),
10095
+ opacity: external_exports.number().min(0).max(1).optional()
10096
+ }).partial();
9618
10097
  var TextInputLayerSchema4 = external_exports.object({
9619
10098
  ...baseLayerShape4,
9620
10099
  kind: external_exports.literal("text_input"),
@@ -9626,7 +10105,10 @@ var TextInputLayerSchema4 = external_exports.object({
9626
10105
  maxLength: external_exports.number().int().positive().max(2e3).optional(),
9627
10106
  classification: FieldClassificationSchema5,
9628
10107
  children: external_exports.lazy(() => external_exports.array(lazyLayer54())).optional(),
9629
- style: CommonStyleSchema4.optional()
10108
+ /** Typography for the native input's typed text. */
10109
+ fieldStyle: TextInputFieldStyleSchema4.optional(),
10110
+ style: CommonStyleSchema4.optional(),
10111
+ styleBreakpoints: CommonStyleBreakpointsSchema4
9630
10112
  });
9631
10113
  var ScaleInputLabelStyleSchema4 = external_exports.object({
9632
10114
  fontFamily: external_exports.string().min(1).max(128).optional(),
@@ -9635,6 +10117,7 @@ var ScaleInputLabelStyleSchema4 = external_exports.object({
9635
10117
  color: ThemedColorSchema4.optional(),
9636
10118
  align: external_exports.enum(["left", "center", "right"]).optional(),
9637
10119
  lineHeight: external_exports.number().min(0.8).max(3).optional(),
10120
+ letterSpacing: external_exports.number().min(-0.5).max(1).optional(),
9638
10121
  opacity: external_exports.number().min(0).max(1).optional()
9639
10122
  }).partial();
9640
10123
  var ScaleInputLayerSchema4 = external_exports.object({
@@ -9657,7 +10140,40 @@ var ScaleInputLayerSchema4 = external_exports.object({
9657
10140
  thumbSize: external_exports.number().int().min(8).max(48).optional(),
9658
10141
  thumbColor: ThemedColorSchema4.optional(),
9659
10142
  children: external_exports.lazy(() => external_exports.array(lazyLayer54())).optional(),
9660
- style: CommonStyleSchema4.optional()
10143
+ style: CommonStyleSchema4.optional(),
10144
+ styleBreakpoints: CommonStyleBreakpointsSchema4
10145
+ });
10146
+ var WheelPickerOptionSchema4 = external_exports.object({
10147
+ optionId: external_exports.string().min(1).max(64),
10148
+ label: LocalizedTextSchema5
10149
+ });
10150
+ var WheelPickerItemStyleSchema4 = external_exports.object({
10151
+ fontFamily: external_exports.string().min(1).max(128).optional(),
10152
+ fontSize: external_exports.number().int().min(8).max(96).optional(),
10153
+ fontWeight: external_exports.number().int().min(100).max(900).optional(),
10154
+ color: ThemedColorSchema4.optional(),
10155
+ opacity: external_exports.number().min(0).max(1).optional()
10156
+ }).partial();
10157
+ var WheelPickerLayerSchema4 = external_exports.object({
10158
+ ...baseLayerShape4,
10159
+ kind: external_exports.literal("wheel_picker"),
10160
+ fieldKey: FieldKeySchema5,
10161
+ mode: external_exports.enum(["options", "date"]).optional(),
10162
+ options: external_exports.array(WheelPickerOptionSchema4).min(2).optional(),
10163
+ defaultOptionId: external_exports.string().optional(),
10164
+ datePart: external_exports.enum(["year", "month", "day"]).optional(),
10165
+ minYear: external_exports.number().int().min(1e3).max(9999).optional(),
10166
+ maxYear: external_exports.number().int().min(1e3).max(9999).optional(),
10167
+ defaultValue: external_exports.string().optional(),
10168
+ placeholder: LocalizedTextSchema5.optional(),
10169
+ itemHeight: external_exports.number().int().min(28).max(72).optional(),
10170
+ visibleItemCount: external_exports.number().int().min(3).max(9).optional(),
10171
+ selectionBackgroundColor: ThemedColorSchema4.optional(),
10172
+ itemStyle: WheelPickerItemStyleSchema4.optional(),
10173
+ selectedItemStyle: WheelPickerItemStyleSchema4.optional(),
10174
+ children: external_exports.lazy(() => external_exports.array(lazyLayer54())).optional(),
10175
+ style: CommonStyleSchema4.optional(),
10176
+ styleBreakpoints: CommonStyleBreakpointsSchema4
9661
10177
  });
9662
10178
  var CarouselIndicatorsStyleSchema4 = external_exports.object({
9663
10179
  width: external_exports.number().int().min(1).max(64).optional(),
@@ -9693,7 +10209,8 @@ var CarouselLayerSchema4 = external_exports.object({
9693
10209
  autoAdvanceMs: external_exports.number().int().min(500).max(6e4).optional(),
9694
10210
  pageControl: CarouselPageControlSchema4.optional(),
9695
10211
  style: CommonStyleSchema4.optional(),
9696
- styleBreakpoints: CommonStyleBreakpointsSchema4
10212
+ styleBreakpoints: CommonStyleBreakpointsSchema4,
10213
+ carouselLayoutBreakpoints: CarouselLayoutBreakpointsSchema4
9697
10214
  });
9698
10215
  layerSchemaStore4.schema = external_exports.lazy(
9699
10216
  () => external_exports.union([
@@ -9714,6 +10231,7 @@ layerSchemaStore4.schema = external_exports.lazy(
9714
10231
  MultipleChoiceLayerSchema4,
9715
10232
  TextInputLayerSchema4,
9716
10233
  ScaleInputLayerSchema4,
10234
+ WheelPickerLayerSchema4,
9717
10235
  OAuthLoginLayerSchema4,
9718
10236
  OAuthProviderPresetLayerSchema4,
9719
10237
  OAuthProviderCustomLayerSchema4,
@@ -9782,10 +10300,10 @@ var ScreenContainerStyleBreakpointsSchema2 = external_exports.object({
9782
10300
  "2xl": ScreenContainerBreakpointPatchSchema2.optional()
9783
10301
  }).partial().optional();
9784
10302
  var DecisionNodeIdSchema3 = external_exports.string().min(1).max(64).regex(/^dec_[a-z0-9_]+$/i, "decision node id must look like dec_<id>");
9785
- var ExternalSurfaceJumpIdSchema3 = external_exports.string().min(1).max(64).regex(/^surf_[a-z0-9_]+$/i, "external surface node id must look like surf_<id>");
10303
+ var ExternalSurfaceJumpIdSchema24 = external_exports.string().min(1).max(64).regex(/^surf_[a-z0-9_]+$/i, "external surface node id must look like surf_<id>");
9786
10304
  var EXTERNAL_SURFACE_NO_NEXT3 = "__onb_surface_no_next__";
9787
10305
  var ExternalSurfaceTerminalTargetSchema3 = external_exports.literal(EXTERNAL_SURFACE_NO_NEXT3);
9788
- var FlowJumpTargetSchema3 = ScreenIdSchema4.or(DecisionNodeIdSchema3).or(ExternalSurfaceJumpIdSchema3).or(ExternalSurfaceTerminalTargetSchema3).nullable();
10306
+ var FlowJumpTargetSchema3 = ScreenIdSchema4.or(DecisionNodeIdSchema3).or(ExternalSurfaceJumpIdSchema24).or(ExternalSurfaceTerminalTargetSchema3).nullable();
9789
10307
  var DecisionBuiltinNameSchema3 = external_exports.enum(["locale", "platform"]);
9790
10308
  var DecisionVariableRefSchema3 = external_exports.discriminatedUnion("kind", [
9791
10309
  external_exports.object({ kind: external_exports.literal("builtin"), name: DecisionBuiltinNameSchema3 }),
@@ -10013,7 +10531,7 @@ var walkLayers = (root, fn) => {
10013
10531
  else if (l.kind === "hyperlink") l.children.forEach((c) => visit(c, depth + 1));
10014
10532
  else if (l.kind === "single_choice" || l.kind === "multiple_choice") {
10015
10533
  l.children.forEach((c) => visit(c, depth + 1));
10016
- } else if (l.kind === "text_input" || l.kind === "scale_input") {
10534
+ } else if (l.kind === "text_input" || l.kind === "scale_input" || l.kind === "wheel_picker") {
10017
10535
  l.children?.forEach((c) => visit(c, depth + 1));
10018
10536
  } else if (l.kind === "oauth_login") {
10019
10537
  l.children.forEach((c) => visit(c, depth + 1));
@@ -10347,7 +10865,7 @@ var collectFlowBuilderIssues = (manifest) => {
10347
10865
  }
10348
10866
  if (isInputLayer(l)) {
10349
10867
  inputCount += 1;
10350
- if (l.kind === "multiple_choice" || l.kind === "text_input" || l.kind === "scale_input") {
10868
+ if (l.kind === "multiple_choice" || l.kind === "text_input" || l.kind === "scale_input" || l.kind === "wheel_picker") {
10351
10869
  needsManualSubmit = true;
10352
10870
  }
10353
10871
  const key = l.fieldKey;
@@ -10365,18 +10883,32 @@ var collectFlowBuilderIssues = (manifest) => {
10365
10883
  }
10366
10884
  if (l.kind === "single_choice" || l.kind === "multiple_choice") {
10367
10885
  for (const cond of l.branching.conditions) {
10368
- if (!screenIds.has(cond.goTo)) {
10886
+ if (!jumpTargetIds.has(cond.goTo)) {
10369
10887
  issues.push(
10370
- `Screen "${label}" branches choice "${cond.choiceId}" to a missing screen "${cond.goTo}".`
10888
+ `Screen "${label}" branches choice "${cond.choiceId}" to a missing destination "${cond.goTo}".`
10371
10889
  );
10372
10890
  }
10373
10891
  }
10374
10892
  }
10375
10893
  }
10376
10894
  if (l.kind === "button" && l.action.kind === "go_to_step") {
10377
- if (!screenIds.has(l.action.screenId)) {
10895
+ if (!jumpTargetIds.has(l.action.screenId)) {
10896
+ issues.push(
10897
+ `Button "${l.name || l.id}" on screen "${screen.name || screen.id}" targets a missing destination "${l.action.screenId}".`
10898
+ );
10899
+ }
10900
+ }
10901
+ if (l.kind === "loader" && l.onComplete?.mode === "screen") {
10902
+ if (!jumpTargetIds.has(l.onComplete.screenId)) {
10378
10903
  issues.push(
10379
- `Button "${l.name || l.id}" on screen "${screen.name || screen.id}" targets a missing screen "${l.action.screenId}".`
10904
+ `Loader "${l.name || l.id}" on screen "${screen.name || screen.id}" onComplete targets a missing destination "${l.onComplete.screenId}".`
10905
+ );
10906
+ }
10907
+ }
10908
+ if ((l.kind === "lottie" || l.kind === "video") && l.onComplete?.mode === "screen") {
10909
+ if (!jumpTargetIds.has(l.onComplete.screenId)) {
10910
+ issues.push(
10911
+ `${l.kind === "video" ? "Video" : "Lottie"} "${l.name || l.id}" on screen "${screen.name || screen.id}" onComplete targets a missing destination "${l.onComplete.screenId}".`
10380
10912
  );
10381
10913
  }
10382
10914
  }
@@ -10404,16 +10936,16 @@ var collectFlowBuilderIssues = (manifest) => {
10404
10936
  if (def == null) {
10405
10937
  continue;
10406
10938
  }
10407
- if (!screenIds.has(def) && !manifest.decisionNodes?.some((d) => d.id === def)) {
10939
+ if (!jumpTargetIds.has(def)) {
10408
10940
  issues.push(
10409
10941
  `Button "${l.name || l.id}" on screen "${screen.name || screen.id}" (${slot}) continues to missing target "${def}".`
10410
10942
  );
10411
10943
  }
10412
10944
  continue;
10413
10945
  }
10414
- if (!screenIds.has(sid)) {
10946
+ if (!jumpTargetIds.has(sid)) {
10415
10947
  issues.push(
10416
- `Button "${l.name || l.id}" on screen "${screen.name || screen.id}" (${slot}) targets a missing screen "${sid}".`
10948
+ `Button "${l.name || l.id}" on screen "${screen.name || screen.id}" (${slot}) targets a missing destination "${sid}".`
10417
10949
  );
10418
10950
  }
10419
10951
  }
@@ -10523,7 +11055,7 @@ var collectFlowBuilderIssues = (manifest) => {
10523
11055
  }
10524
11056
  if (needsManualSubmit && !hasContinueButton) {
10525
11057
  issues.push(
10526
- `Screen "${screen.name || screen.id}" has a multiple_choice, text_input, or scale_input but no Button with action "continue". Add a Continue button so users can submit.`
11058
+ `Screen "${screen.name || screen.id}" has a multiple_choice, text_input, scale_input, or wheel_picker but no Button with action "continue". Add a Continue button so users can submit.`
10527
11059
  );
10528
11060
  }
10529
11061
  }
@@ -10746,6 +11278,28 @@ var scanLayer = (issues, screen, layer, branding) => {
10746
11278
  checkThemed(issues, stepId, id, "fillColor", layer.fillColor, false, branding);
10747
11279
  checkThemed(issues, stepId, id, "thumbColor", layer.thumbColor, false, branding);
10748
11280
  return;
11281
+ case "wheel_picker":
11282
+ walkCommonBreakpoints(issues, stepId, id, layer.style, void 0, branding);
11283
+ checkThemed(
11284
+ issues,
11285
+ stepId,
11286
+ id,
11287
+ "selectionBackgroundColor",
11288
+ layer.selectionBackgroundColor,
11289
+ false,
11290
+ branding
11291
+ );
11292
+ checkThemed(issues, stepId, id, "itemStyle.color", layer.itemStyle?.color, false, branding);
11293
+ checkThemed(
11294
+ issues,
11295
+ stepId,
11296
+ id,
11297
+ "selectedItemStyle.color",
11298
+ layer.selectedItemStyle?.color,
11299
+ false,
11300
+ branding
11301
+ );
11302
+ return;
10749
11303
  case "oauth_login":
10750
11304
  walkCommonBreakpoints(issues, stepId, id, layer.style, layer.styleBreakpoints, branding);
10751
11305
  return;
@@ -11154,7 +11708,7 @@ var defaultLayoutStyleForKind = (kind) => {
11154
11708
  case "video":
11155
11709
  return LAYOUT_FULL_FIXED_H160;
11156
11710
  case "icon":
11157
- return LAYOUT_HUG_HUG;
11711
+ return { width: 24, height: 24 };
11158
11712
  case "button":
11159
11713
  case "back_button":
11160
11714
  case "oauth_provider":
@@ -11162,6 +11716,7 @@ var defaultLayoutStyleForKind = (kind) => {
11162
11716
  return LAYOUT_FULL_HUG;
11163
11717
  case "text_input":
11164
11718
  case "scale_input":
11719
+ case "wheel_picker":
11165
11720
  case "email_password_auth":
11166
11721
  case "email_password_field":
11167
11722
  case "oauth_login":
@@ -11376,7 +11931,7 @@ var walkLayers2 = (root, fn) => {
11376
11931
  else if (l.kind === "hyperlink") l.children.forEach((c) => visit(c, depth + 1));
11377
11932
  else if (l.kind === "single_choice" || l.kind === "multiple_choice") {
11378
11933
  l.children.forEach((c) => visit(c, depth + 1));
11379
- } else if (l.kind === "text_input" || l.kind === "scale_input") {
11934
+ } else if (l.kind === "text_input" || l.kind === "scale_input" || l.kind === "wheel_picker") {
11380
11935
  l.children?.forEach((c) => visit(c, depth + 1));
11381
11936
  } else if (l.kind === "oauth_login") {
11382
11937
  l.children.forEach((c) => visit(c, depth + 1));
@@ -13327,7 +13882,7 @@ var analyzeLayout = (files) => {
13327
13882
  confidence: "high",
13328
13883
  file: file.path,
13329
13884
  evidence: aligns.join("; "),
13330
- recommendation: 'Map RN/Tailwind centering to parent `stack.align: "center"` and `stack.justify: "center"`. Center hero images inside vertical body stacks. Use `style.align: "center"` on text layers.'
13885
+ recommendation: 'Map RN/Tailwind centering to parent `stack.align: "center"` and `stack.distribution: "center"`. Center hero images inside vertical body stacks. Use `style.align: "center"` on text layers.'
13331
13886
  });
13332
13887
  }
13333
13888
  if (CENTER_CLASS_RE.test(file.content) && /kind:\s*['"]image['"]|Image\b/.test(file.content)) {
@@ -13984,7 +14539,7 @@ var LayerIntentSchema = external_exports.lazy(
13984
14539
  kind: external_exports.literal("text_input"),
13985
14540
  fieldKey: external_exports.string().min(1),
13986
14541
  placeholder: LocalizedOrStringSchema.optional(),
13987
- inputType: external_exports.enum(["plain", "email", "phone", "url", "multiline"]).optional(),
14542
+ inputType: external_exports.enum(["plain", "email", "phone", "url", "number", "multiline"]).optional(),
13988
14543
  required: external_exports.boolean().optional(),
13989
14544
  minLength: external_exports.number().int().min(0).max(2e3).optional(),
13990
14545
  maxLength: external_exports.number().int().positive().max(2e3).optional(),
@@ -14396,8 +14951,8 @@ var buildStack = (intent, ctx) => {
14396
14951
  };
14397
14952
  if (intent.gap !== void 0) out.gap = intent.gap;
14398
14953
  if (intent.align) out.align = intent.align;
14399
- if (intent.justify) out.justify = intent.justify;
14400
- if (intent.distribution) out.distribution = intent.distribution;
14954
+ const distribution = intent.distribution ?? intent.justify;
14955
+ if (distribution) out.distribution = distribution;
14401
14956
  if (intent.wrap !== void 0) out.wrap = intent.wrap;
14402
14957
  if (intent.selectedStyle && Object.keys(intent.selectedStyle).length > 0) {
14403
14958
  out.selectedStyle = intent.selectedStyle;
@@ -14468,7 +15023,8 @@ var buildCarousel = (intent, ctx) => {
14468
15023
  };
14469
15024
  if (slide.gap !== void 0) out2.gap = slide.gap;
14470
15025
  if (slide.align) out2.align = slide.align;
14471
- if (slide.justify) out2.justify = slide.justify;
15026
+ const distribution = slide.distribution ?? slide.justify;
15027
+ if (distribution) out2.distribution = distribution;
14472
15028
  return withStyle(out2, slide.style);
14473
15029
  });
14474
15030
  const out = { id, kind: "carousel", slides };