@multiplatform.one/forms 7.54.0 → 7.54.1

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.
Files changed (217) hide show
  1. package/dist/cjs/AdaptivePopup/index.native.js +1 -1
  2. package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
  3. package/dist/cjs/Button/index.native.js +2 -2
  4. package/dist/cjs/Button/index.native.js.map +1 -1
  5. package/dist/cjs/Chip/index.native.js.map +1 -1
  6. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js +1 -1
  7. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  8. package/dist/cjs/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  9. package/dist/cjs/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  10. package/dist/cjs/ContextualSaveBar/index.native.js +3 -3
  11. package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
  12. package/dist/cjs/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  13. package/dist/cjs/ControlGroup/index.native.js +1 -1
  14. package/dist/cjs/ControlGroup/index.native.js.map +1 -1
  15. package/dist/cjs/DescriptionList/index.native.js +2 -2
  16. package/dist/cjs/DescriptionList/index.native.js.map +1 -1
  17. package/dist/cjs/ErrorSummary.native.js.map +1 -1
  18. package/dist/cjs/FieldDisplay/editMode.native.js.map +1 -1
  19. package/dist/cjs/FieldDisplay/formatters.native.js.map +1 -1
  20. package/dist/cjs/FieldDisplay/index.native.js +1 -1
  21. package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
  22. package/dist/cjs/FieldGroup.native.js.map +1 -1
  23. package/dist/cjs/FloatingPanel/nestedAction.native.js.map +1 -1
  24. package/dist/cjs/FloatingPanel/pointAnchor.native.js.map +1 -1
  25. package/dist/cjs/FloatingPanel/trailingAction.native.js +1 -1
  26. package/dist/cjs/FloatingPanel/trailingAction.native.js.map +1 -1
  27. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  28. package/dist/cjs/Form/index.native.js +1 -1
  29. package/dist/cjs/Form/index.native.js.map +1 -1
  30. package/dist/cjs/Form/submissionController.native.js.map +1 -1
  31. package/dist/cjs/Form/validateOn.native.js.map +1 -1
  32. package/dist/cjs/FormGrid.native.js.map +1 -1
  33. package/dist/cjs/FormSection.native.js.map +1 -1
  34. package/dist/cjs/InputParts/PasswordReveal.native.js.map +1 -1
  35. package/dist/cjs/InputParts/index.native.js.map +1 -1
  36. package/dist/cjs/Label/index.native.js.map +1 -1
  37. package/dist/cjs/MediaPicker/base64.native.js.map +1 -1
  38. package/dist/cjs/MediaPicker/payload.native.js.map +1 -1
  39. package/dist/cjs/MediaPicker/types.native.js.map +1 -1
  40. package/dist/cjs/MediaPicker/useMediaPicker.native.js.map +1 -1
  41. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  42. package/dist/cjs/Spinner/SpinnerGlyph.native.js.map +1 -1
  43. package/dist/cjs/Spinner/spinnerSize.native.js.map +1 -1
  44. package/dist/cjs/Table/index.native.js.map +1 -1
  45. package/dist/cjs/Wheel/haptic.native.js.map +1 -1
  46. package/dist/cjs/Wheel/index.native.js.map +1 -1
  47. package/dist/cjs/Wheel/wheelShared.native.js.map +1 -1
  48. package/dist/cjs/actionLabel.native.js.map +1 -1
  49. package/dist/cjs/fieldDefaults.native.js.map +1 -1
  50. package/dist/cjs/fieldLayout.native.js +1 -1
  51. package/dist/cjs/fieldLayout.native.js.map +1 -1
  52. package/dist/cjs/fields/Barcode/BarcodePreview.native.js.map +1 -1
  53. package/dist/cjs/fields/Barcode/BarcodeScanner.native.js +1 -1
  54. package/dist/cjs/fields/Barcode/code128.native.js.map +1 -1
  55. package/dist/cjs/fields/Barcode/index.native.js +2 -2
  56. package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
  57. package/dist/cjs/fields/Barcode/qr.native.js.map +1 -1
  58. package/dist/cjs/fields/Barcode/scannerTypes.native.js.map +1 -1
  59. package/dist/cjs/fields/Checkbox/Checkbox.native.js +1 -1
  60. package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
  61. package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  62. package/dist/cjs/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  63. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  64. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +1 -1
  65. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  66. package/dist/cjs/fields/Checkbox/checkboxGroupContext.native.js.map +1 -1
  67. package/dist/cjs/fields/Checkbox/index.native.js.map +1 -1
  68. package/dist/cjs/fields/ColorPicker/index.native.js +2 -2
  69. package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
  70. package/dist/cjs/fields/ColorPicker/parts.native.js +2 -2
  71. package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
  72. package/dist/cjs/fields/Combobox/authorOptions.native.js.map +1 -1
  73. package/dist/cjs/fields/Combobox/index.native.js +5 -5
  74. package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
  75. package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
  76. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +2 -2
  77. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  78. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +3 -3
  79. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -1
  80. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +2 -2
  81. package/dist/cjs/fields/DatePicker/MonthPicker.native.js +2 -2
  82. package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
  83. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +2 -2
  84. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  85. package/dist/cjs/fields/DatePicker/catalog.native.js +2 -2
  86. package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -1
  87. package/dist/cjs/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  88. package/dist/cjs/fields/DatePicker/index.native.js +2 -2
  89. package/dist/cjs/fields/DatePicker/parts.native.js +2 -2
  90. package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
  91. package/dist/cjs/fields/DatePicker/utils.native.js.map +1 -1
  92. package/dist/cjs/fields/Duration/durationMath.native.js.map +1 -1
  93. package/dist/cjs/fields/Duration/index.native.js +3 -3
  94. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  95. package/dist/cjs/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  96. package/dist/cjs/fields/FileUpload/index.native.js +2 -2
  97. package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
  98. package/dist/cjs/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  99. package/dist/cjs/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  100. package/dist/cjs/fields/Geolocation/geoValue.native.js.map +1 -1
  101. package/dist/cjs/fields/Geolocation/geocoder.native.js.map +1 -1
  102. package/dist/cjs/fields/Geolocation/geocoderContext.native.js.map +1 -1
  103. package/dist/cjs/fields/Geolocation/index.native.js +5 -5
  104. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
  105. package/dist/cjs/fields/Geolocation/mapMath.native.js.map +1 -1
  106. package/dist/cjs/fields/Geolocation/mapTypes.native.js.map +1 -1
  107. package/dist/cjs/fields/Geolocation/nativeSearchFocus.native.js.map +1 -1
  108. package/dist/cjs/fields/Geolocation/photonGeocoder.native.js.map +1 -1
  109. package/dist/cjs/fields/Icon/drawnSet.native.js.map +1 -1
  110. package/dist/cjs/fields/Icon/index.native.js +3 -3
  111. package/dist/cjs/fields/Icon/index.native.js.map +1 -1
  112. package/dist/cjs/fields/ImageField/index.native.js +2 -2
  113. package/dist/cjs/fields/ImageField/index.native.js.map +1 -1
  114. package/dist/cjs/fields/Input/index.native.js +3 -3
  115. package/dist/cjs/fields/Input/index.native.js.map +1 -1
  116. package/dist/cjs/fields/MentionInput/index.native.js +3 -3
  117. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  118. package/dist/cjs/fields/OTPInput/index.native.js +3 -3
  119. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  120. package/dist/cjs/fields/OTPInput/otpCellCss.native.js.map +1 -1
  121. package/dist/cjs/fields/PhoneInput/dialCodes.native.js.map +1 -1
  122. package/dist/cjs/fields/PhoneInput/index.native.js +3 -3
  123. package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
  124. package/dist/cjs/fields/PhoneInput/phone.native.js.map +1 -1
  125. package/dist/cjs/fields/PhoneInput/regionNames.native.js.map +1 -1
  126. package/dist/cjs/fields/Progress/index.native.js +1 -1
  127. package/dist/cjs/fields/Progress/index.native.js.map +1 -1
  128. package/dist/cjs/fields/RadioGroup/index.native.js +1 -1
  129. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  130. package/dist/cjs/fields/Rating/index.native.js +1 -1
  131. package/dist/cjs/fields/Rating/index.native.js.map +1 -1
  132. package/dist/cjs/fields/Rating/ratingMath.native.js.map +1 -1
  133. package/dist/cjs/fields/Rating/types.native.js.map +1 -1
  134. package/dist/cjs/fields/SearchInput/index.native.js +2 -2
  135. package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
  136. package/dist/cjs/fields/Select/index.native.js +4 -4
  137. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  138. package/dist/cjs/fields/Signature/index.native.js +2 -2
  139. package/dist/cjs/fields/Signature/index.native.js.map +1 -1
  140. package/dist/cjs/fields/Slider/index.native.js +1 -1
  141. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  142. package/dist/cjs/fields/Slider/jumpMotion.native.js.map +1 -1
  143. package/dist/cjs/fields/Stepper/index.native.js +2 -2
  144. package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
  145. package/dist/cjs/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  146. package/dist/cjs/fields/Switch/footprint.native.js.map +1 -1
  147. package/dist/cjs/fields/Switch/index.native.js +2 -2
  148. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  149. package/dist/cjs/fields/TextArea/index.native.js +2 -2
  150. package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
  151. package/dist/cjs/fields/TimePicker/catalog.native.js +3 -3
  152. package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -1
  153. package/dist/cjs/fields/TimePicker/index.native.js +2 -2
  154. package/dist/cjs/fields/TimePicker/parts.native.js +1 -1
  155. package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
  156. package/dist/cjs/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  157. package/dist/cjs/fields/TimeRangeScrubber/index.native.js +2 -2
  158. package/dist/cjs/fields/TimeRangeScrubber/index.native.js.map +1 -1
  159. package/dist/cjs/fields/ToggleGroup/index.native.js +1 -1
  160. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  161. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -1
  162. package/dist/cjs/fields/nativeDateTime/dateTimePickerLoader.native.js.map +1 -1
  163. package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -1
  164. package/dist/cjs/fields/nativeSelect.native.js.map +1 -1
  165. package/dist/cjs/fields/selectedOrder.native.js.map +1 -1
  166. package/dist/cjs/formSpacing.cjs +1 -1
  167. package/dist/cjs/formSpacing.native.js +1 -1
  168. package/dist/cjs/formSpacing.native.js.map +1 -1
  169. package/dist/cjs/hooks/useFocusManagement.native.js.map +1 -1
  170. package/dist/cjs/index.native.js +45 -45
  171. package/dist/cjs/index.native.js.map +1 -1
  172. package/dist/cjs/keyboard/KeyboardDoneBar.native.js +1 -1
  173. package/dist/cjs/keyboard/chain.native.js.map +1 -1
  174. package/dist/cjs/keyboard/index.native.js.map +1 -1
  175. package/dist/cjs/keyboard/types.native.js.map +1 -1
  176. package/dist/cjs/requiredMarking.native.js.map +1 -1
  177. package/dist/cjs/shared/TimeColumn.native.js +1 -1
  178. package/dist/cjs/shared/TimeColumn.native.js.map +1 -1
  179. package/dist/cjs/shared/capabilityPreflight.native.js.map +1 -1
  180. package/dist/cjs/shared/colorRamps.native.js.map +1 -1
  181. package/dist/cjs/shared/devWarn.native.js.map +1 -1
  182. package/dist/cjs/shared/floatingList.native.js +1 -1
  183. package/dist/cjs/shared/floatingList.native.js.map +1 -1
  184. package/dist/cjs/shared/focusManagement.native.js.map +1 -1
  185. package/dist/cjs/shared/groupContext.native.js.map +1 -1
  186. package/dist/cjs/shared/i18n.native.js.map +1 -1
  187. package/dist/cjs/shared/instantMotion.native.js.map +1 -1
  188. package/dist/cjs/shared/nativeA11y.native.js.map +1 -1
  189. package/dist/cjs/shared/nativeAutoFocus.native.js.map +1 -1
  190. package/dist/cjs/shared/overlayStack.native.js.map +1 -1
  191. package/dist/cjs/shared/panelPortal.native.js.map +1 -1
  192. package/dist/cjs/shared/pickerTriggerContract.native.js.map +1 -1
  193. package/dist/cjs/shared/pressSlopProps.native.js.map +1 -1
  194. package/dist/cjs/shared/restoreRetries.native.js.map +1 -1
  195. package/dist/cjs/shared/t.native.js.map +1 -1
  196. package/dist/cjs/shared/tableCellContext.native.js.map +1 -1
  197. package/dist/cjs/shared/useDragScroll.native.js.map +1 -1
  198. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
  199. package/dist/cjs/shared/useSheetEscapeDismiss.native.js.map +1 -1
  200. package/dist/cjs/shared/useWheelIncrement.native.js.map +1 -1
  201. package/dist/cjs/shared/utils.native.js +1 -1
  202. package/dist/cjs/shared/utils.native.js.map +1 -1
  203. package/dist/cjs/shared/zIndex.native.js.map +1 -1
  204. package/dist/cjs/themedPrimitives.native.js.map +1 -1
  205. package/dist/cjs/types.native.js.map +1 -1
  206. package/dist/cjs/utils/LinkCell.native.js.map +1 -1
  207. package/dist/esm/formSpacing.mjs +1 -1
  208. package/dist/esm/formSpacing.native.js +1 -1
  209. package/dist/jsx/formSpacing.mjs +1 -1
  210. package/dist/jsx/formSpacing.native.js +1 -1
  211. package/package.json +8 -8
  212. package/src/FieldGroup.spec.tsx +4 -4
  213. package/src/Form/form.spec.tsx +4 -4
  214. package/src/FormGrid.spec.tsx +15 -14
  215. package/src/fieldLayout.spec.tsx +7 -7
  216. package/src/formSpacing.ts +3 -3
  217. package/types/formSpacing.d.ts +3 -3
@@ -53,8 +53,8 @@ function stubContainerWidth(width: number) {
53
53
  }
54
54
 
55
55
  describe("formSpacing tokens", () => {
56
- it("encodes section gap larger than field gap (DG-FORM-06)", () => {
57
- expect(formFieldGap).toBe("$3");
56
+ it("encodes section gap larger than field gap (DG-FORM-06; field rhythm $4, LC-154)", () => {
57
+ expect(formFieldGap).toBe("$4");
58
58
  expect(formSectionGap).toBe("$8");
59
59
  expect(Number(formSectionGap.slice(1))).toBeGreaterThan(Number(formFieldGap.slice(1)));
60
60
  });
@@ -78,7 +78,8 @@ describe("FormGrid", () => {
78
78
  expect(grid?.getAttribute("data-columns")).toBe("1");
79
79
  expect(grid?.getAttribute("data-requested-columns")).toBe("1");
80
80
  expect(grid?.getAttribute("data-max-columns")).toBe("2");
81
- expect(grid?.getAttribute("data-gap")).toBe("$3");
81
+ // LC-154: fields stack at the fieldGap role.
82
+ expect(grid?.getAttribute("data-gap")).toBe("$4");
82
83
  expect(grid?.getAttribute("data-size-token")).toBe("$true");
83
84
  });
84
85
 
@@ -129,7 +130,7 @@ describe("FormGrid", () => {
129
130
  expect(grid.style.gridTemplateColumns).toBe("repeat(1, minmax(0, 1fr))");
130
131
  });
131
132
 
132
- it("gap is the within-group role at any size token, never sizeToken", () => {
133
+ it("gap is the field rhythm role (fieldGap $4, LC-154) at any size token, never sizeToken", () => {
133
134
  const result = renderWithProviders(
134
135
  <Surface size="$5">
135
136
  <FormGrid>
@@ -138,7 +139,7 @@ describe("FormGrid", () => {
138
139
  </Surface>,
139
140
  );
140
141
  const grid = result.container.querySelector("[data-mpo-form-grid]");
141
- expect(grid?.getAttribute("data-gap")).toBe("$3");
142
+ expect(grid?.getAttribute("data-gap")).toBe("$4");
142
143
  expect(grid?.getAttribute("data-size-token")).toBe("$5");
143
144
  });
144
145
 
@@ -153,10 +154,10 @@ describe("FormGrid", () => {
153
154
  const grid = result.container.querySelector("[data-mpo-form-grid]");
154
155
  expect(grid?.hasAttribute("data-density")).toBe(false);
155
156
  expect(grid?.getAttribute("data-size-token")).toBe("$3");
156
- expect(grid?.getAttribute("data-gap")).toBe("$3");
157
+ expect(grid?.getAttribute("data-gap")).toBe("$4");
157
158
  });
158
159
 
159
- it("spreads the role gap fragment (not a raw 16)", () => {
160
+ it("spreads the fieldGap role fragment (not a raw 16, LC-154)", () => {
160
161
  const result = renderWithProviders(
161
162
  <Preset>
162
163
  <FormGrid>
@@ -165,7 +166,7 @@ describe("FormGrid", () => {
165
166
  </Preset>,
166
167
  );
167
168
  const grid = result.container.querySelector("[data-mpo-form-grid]");
168
- expect(grid?.getAttribute("data-gap")).toBe("$3");
169
+ expect(grid?.getAttribute("data-gap")).toBe("$4");
169
170
  });
170
171
  });
171
172
 
@@ -195,7 +196,7 @@ describe("FieldGroup", () => {
195
196
  ).toBe("2");
196
197
  });
197
198
 
198
- it("field gap is the within-group role, not the size token", () => {
199
+ it("field gap is the field rhythm role (fieldGap $4, LC-154), not the size token", () => {
199
200
  const result = renderWithProviders(
200
201
  <Surface size="$5">
201
202
  <FieldGroup legend="Billing">
@@ -204,7 +205,7 @@ describe("FieldGroup", () => {
204
205
  </Surface>,
205
206
  );
206
207
  const group = result.container.querySelector("[data-mpo-field-group]");
207
- expect(group?.getAttribute("data-field-gap")).toBe("$3");
208
+ expect(group?.getAttribute("data-field-gap")).toBe("$4");
208
209
  expect(group?.getAttribute("data-size-token")).toBe("$5");
209
210
  });
210
211
  });
@@ -257,7 +258,7 @@ describe("FormSection", () => {
257
258
  });
258
259
 
259
260
  describe("FormSection semantic gaps (DG-FORM-06)", () => {
260
- it("defaults field gap to knobProps.gap and section gap to knobProps.gapLg", () => {
261
+ it("defaults field gap to knobProps.fieldGap (LC-154) and section gap to knobProps.gapLg", () => {
261
262
  const result = renderWithProviders(
262
263
  <FormSectionStack>
263
264
  <FormSection label="A">
@@ -267,8 +268,8 @@ describe("FormSection semantic gaps (DG-FORM-06)", () => {
267
268
  );
268
269
  const section = result.container.querySelector("[data-mpo-form-section]");
269
270
  const stack = result.container.querySelector("[data-mpo-form-section-stack]");
270
- // knob defaults: gap $4 (within-group), gapLg $5 (between-groups)
271
- expect(section?.getAttribute("data-field-gap")).toBe("$3");
271
+ // knob defaults: fieldGap $4 (field to field, LC-154), gapLg $5 (between groups)
272
+ expect(section?.getAttribute("data-field-gap")).toBe("$4");
272
273
  expect(stack?.getAttribute("data-section-gap")).toBe("$5");
273
274
  const fieldStep = Number(section?.getAttribute("data-field-gap")?.slice(1));
274
275
  const sectionStep = Number(stack?.getAttribute("data-section-gap")?.slice(1));
@@ -287,7 +288,7 @@ describe("FormSection semantic gaps (DG-FORM-06)", () => {
287
288
  );
288
289
  const section = result.container.querySelector("[data-mpo-form-section]");
289
290
  const stack = result.container.querySelector("[data-mpo-form-section-stack]");
290
- expect(section?.getAttribute("data-field-gap")).toBe("$3");
291
+ expect(section?.getAttribute("data-field-gap")).toBe("$4");
291
292
  expect(stack?.getAttribute("data-section-gap")).toBe("$5");
292
293
  });
293
294
 
@@ -266,7 +266,7 @@ describe("FieldLayout banned-error-word DEV warn", () => {
266
266
  });
267
267
 
268
268
  describe("FieldLayout design-law (MPO-60)", () => {
269
- it("paints the label at weight 400 (R7 / §6.1)", () => {
269
+ it("paints the label role at weight 500 (LC-152)", () => {
270
270
  const { container } = renderWithProviders(
271
271
  <FieldLayout id="w" label="Name">
272
272
  <TamaguiInput id="w" />
@@ -275,7 +275,7 @@ describe("FieldLayout design-law (MPO-60)", () => {
275
275
  const label = container.querySelector("label") as HTMLElement;
276
276
  expect(label).toBeTruthy();
277
277
  const weight = label.style.fontWeight || getComputedStyle(label).fontWeight;
278
- expect(["400", "normal"]).toContain(String(weight));
278
+ expect(String(weight)).toBe("500");
279
279
  });
280
280
 
281
281
  it("does not pass a control-height sizeToken to the label (LC-73)", () => {
@@ -323,12 +323,12 @@ describe("FieldLayout design-law (MPO-60)", () => {
323
323
  });
324
324
  });
325
325
 
326
- describe("label body stop and weight knob", () => {
326
+ describe("label role stop and weight knob (LC-152)", () => {
327
327
  for (const [fontWeight, expected] of [
328
- ["regular", "400"],
328
+ ["regular", "500"],
329
329
  ["bold", "700"],
330
330
  ] as const) {
331
- it(`uses body $true and ${fontWeight} weight`, () => {
331
+ it(`uses the label role $2 (13px) and ${fontWeight} weight`, () => {
332
332
  const { container } = renderWithProviders(
333
333
  <TamaguiProvider config={bodyConfig} defaultTheme="light">
334
334
  <Preset overrides={{ fontWeight }}>
@@ -340,8 +340,8 @@ describe("label body stop and weight knob", () => {
340
340
  { tamagui: false },
341
341
  );
342
342
  const label = container.querySelector("label")!;
343
- expect(label.className).toContain("_fos-f-size-true");
344
- expect(getComputedStyle(label).fontSize).toBe("15px");
343
+ expect(label.className).toContain("_fos-f-size-2");
344
+ expect(getComputedStyle(label).fontSize).toBe("13px");
345
345
  expect(getComputedStyle(label).fontWeight).toBe(expected);
346
346
  });
347
347
  }
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Fallback form rhythm tokens (DG-FORM-06). Prefer `knobProps.gap` /
2
+ * Fallback form rhythm tokens (DG-FORM-06). Prefer `knobProps.fieldGap` /
3
3
  * `knobProps.gapLg` (the spacing roles) at the layout primitives. These are
4
- * the roles' `$space` keys, not a size mapping.
4
+ * the roles' `$space` keys, not a size mapping; the field step is LC-154's.
5
5
  */
6
- export const formFieldGap = "$3" as const;
6
+ export const formFieldGap = "$4" as const;
7
7
  export const formSectionGap = "$8" as const;
8
8
 
9
9
  /** Default readable form width (DG-FORM-08 ~480–600px). */
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Fallback form rhythm tokens (DG-FORM-06). Prefer `knobProps.gap` /
2
+ * Fallback form rhythm tokens (DG-FORM-06). Prefer `knobProps.fieldGap` /
3
3
  * `knobProps.gapLg` (the spacing roles) at the layout primitives. These are
4
- * the roles' `$space` keys, not a size mapping.
4
+ * the roles' `$space` keys, not a size mapping; the field step is LC-154's.
5
5
  */
6
- export declare const formFieldGap: "$3";
6
+ export declare const formFieldGap: "$4";
7
7
  export declare const formSectionGap: "$8";
8
8
  /** Default readable form width (DG-FORM-08 ~480–600px). */
9
9
  export declare const formReadableMaxWidth = 560;