@multiplatform.one/forms 7.6.3 → 7.7.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 (845) 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.cjs +8 -2
  4. package/dist/cjs/Button/index.native.js +14 -3
  5. package/dist/cjs/Button/index.native.js.map +1 -1
  6. package/dist/cjs/Chip/index.cjs +1 -3
  7. package/dist/cjs/Chip/index.native.js +5 -3
  8. package/dist/cjs/Chip/index.native.js.map +1 -1
  9. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js +1 -1
  10. package/dist/cjs/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  11. package/dist/cjs/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  12. package/dist/cjs/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  13. package/dist/cjs/ContextualSaveBar/index.cjs +19 -3
  14. package/dist/cjs/ContextualSaveBar/index.native.js +22 -6
  15. package/dist/cjs/ContextualSaveBar/index.native.js.map +1 -1
  16. package/dist/cjs/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  17. package/dist/cjs/ControlGroup/index.native.js +1 -1
  18. package/dist/cjs/ControlGroup/index.native.js.map +1 -1
  19. package/dist/cjs/DescriptionList/index.cjs +41 -13
  20. package/dist/cjs/DescriptionList/index.native.js +45 -15
  21. package/dist/cjs/DescriptionList/index.native.js.map +1 -1
  22. package/dist/cjs/ErrorSummary.cjs +4 -1
  23. package/dist/cjs/ErrorSummary.native.js +4 -1
  24. package/dist/cjs/ErrorSummary.native.js.map +1 -1
  25. package/dist/cjs/FieldDisplay/editMode.native.js.map +1 -1
  26. package/dist/cjs/FieldDisplay/formatters.native.js.map +1 -1
  27. package/dist/cjs/FieldDisplay/index.native.js +1 -1
  28. package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
  29. package/dist/cjs/FieldGroup.native.js.map +1 -1
  30. package/dist/cjs/FloatingPanel/useFloatingPanel.cjs +24 -2
  31. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js +43 -2
  32. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  33. package/dist/cjs/Form/index.native.js +1 -1
  34. package/dist/cjs/Form/index.native.js.map +1 -1
  35. package/dist/cjs/Form/validateOn.native.js.map +1 -1
  36. package/dist/cjs/FormGrid.native.js.map +1 -1
  37. package/dist/cjs/FormSection.native.js.map +1 -1
  38. package/dist/cjs/InputParts/index.cjs +42 -2
  39. package/dist/cjs/InputParts/index.native.js +42 -2
  40. package/dist/cjs/InputParts/index.native.js.map +1 -1
  41. package/dist/cjs/Label/index.native.js.map +1 -1
  42. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  43. package/dist/cjs/Spinner/SpinnerGlyph.native.js.map +1 -1
  44. package/dist/cjs/Spinner/spinnerSize.native.js.map +1 -1
  45. package/dist/cjs/Table/index.native.js.map +1 -1
  46. package/dist/cjs/Wheel/haptic.native.js.map +1 -1
  47. package/dist/cjs/Wheel/index.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.cjs +5 -2
  60. package/dist/cjs/fields/Checkbox/Checkbox.native.js +7 -4
  61. package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
  62. package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  63. package/dist/cjs/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  64. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  65. package/dist/cjs/fields/Checkbox/CheckboxGroup.cjs +69 -59
  66. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +76 -66
  67. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  68. package/dist/cjs/fields/Checkbox/checkboxGroupContext.cjs +33 -0
  69. package/dist/cjs/fields/Checkbox/checkboxGroupContext.native.js +36 -0
  70. package/dist/cjs/fields/Checkbox/checkboxGroupContext.native.js.map +1 -0
  71. package/dist/cjs/fields/Checkbox/index.native.js.map +1 -1
  72. package/dist/cjs/fields/ColorPicker/index.native.js +3 -3
  73. package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
  74. package/dist/cjs/fields/ColorPicker/parts.native.js +2 -2
  75. package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
  76. package/dist/cjs/fields/Combobox/authorOptions.native.js.map +1 -1
  77. package/dist/cjs/fields/Combobox/index.native.js +5 -5
  78. package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
  79. package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
  80. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +2 -2
  81. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  82. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.cjs +402 -0
  83. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js +441 -0
  84. package/dist/cjs/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -0
  85. package/dist/cjs/fields/DatePicker/DatetimePicker.cjs +2 -376
  86. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +70 -298
  87. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js.map +1 -1
  88. package/dist/cjs/fields/DatePicker/MonthPicker.native.js +2 -2
  89. package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
  90. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +2 -2
  91. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  92. package/dist/cjs/fields/DatePicker/catalog.cjs +306 -0
  93. package/dist/cjs/fields/DatePicker/catalog.native.js +350 -0
  94. package/dist/cjs/fields/DatePicker/catalog.native.js.map +1 -0
  95. package/dist/cjs/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  96. package/dist/cjs/fields/DatePicker/index.cjs +7 -280
  97. package/dist/cjs/fields/DatePicker/index.native.js +67 -186
  98. package/dist/cjs/fields/DatePicker/index.native.js.map +1 -1
  99. package/dist/cjs/fields/DatePicker/parts.cjs +12 -9
  100. package/dist/cjs/fields/DatePicker/parts.native.js +14 -11
  101. package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
  102. package/dist/cjs/fields/DatePicker/utils.native.js.map +1 -1
  103. package/dist/cjs/fields/Duration/durationMath.native.js.map +1 -1
  104. package/dist/cjs/fields/Duration/index.cjs +29 -3
  105. package/dist/cjs/fields/Duration/index.native.js +32 -6
  106. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  107. package/dist/cjs/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  108. package/dist/cjs/fields/FileUpload/index.cjs +0 -1
  109. package/dist/cjs/fields/FileUpload/index.native.js +7 -3
  110. package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
  111. package/dist/cjs/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  112. package/dist/cjs/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  113. package/dist/cjs/fields/Geolocation/geoValue.native.js.map +1 -1
  114. package/dist/cjs/fields/Geolocation/index.native.js +5 -5
  115. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
  116. package/dist/cjs/fields/Geolocation/mapMath.native.js.map +1 -1
  117. package/dist/cjs/fields/Geolocation/mapTypes.native.js.map +1 -1
  118. package/dist/cjs/fields/Icon/drawnSet.native.js.map +1 -1
  119. package/dist/cjs/fields/Icon/index.native.js +3 -3
  120. package/dist/cjs/fields/Icon/index.native.js.map +1 -1
  121. package/dist/cjs/fields/ImageField/index.native.js +2 -2
  122. package/dist/cjs/fields/ImageField/index.native.js.map +1 -1
  123. package/dist/cjs/fields/Input/index.native.js +2 -2
  124. package/dist/cjs/fields/Input/index.native.js.map +1 -1
  125. package/dist/cjs/fields/MentionInput/index.native.js +3 -3
  126. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  127. package/dist/cjs/fields/OTPInput/index.native.js +3 -3
  128. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  129. package/dist/cjs/fields/OTPInput/otpCellCss.native.js.map +1 -1
  130. package/dist/cjs/fields/PhoneInput/dialCodes.native.js.map +1 -1
  131. package/dist/cjs/fields/PhoneInput/index.cjs +9 -4
  132. package/dist/cjs/fields/PhoneInput/index.native.js +16 -9
  133. package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
  134. package/dist/cjs/fields/PhoneInput/phone.native.js.map +1 -1
  135. package/dist/cjs/fields/Progress/index.native.js +1 -1
  136. package/dist/cjs/fields/Progress/index.native.js.map +1 -1
  137. package/dist/cjs/fields/RadioGroup/index.native.js +1 -1
  138. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  139. package/dist/cjs/fields/Rating/index.cjs +1 -1
  140. package/dist/cjs/fields/Rating/index.native.js +5 -2
  141. package/dist/cjs/fields/Rating/index.native.js.map +1 -1
  142. package/dist/cjs/fields/Rating/ratingMath.native.js.map +1 -1
  143. package/dist/cjs/fields/Rating/types.native.js.map +1 -1
  144. package/dist/cjs/fields/SearchInput/index.cjs +6 -0
  145. package/dist/cjs/fields/SearchInput/index.native.js +8 -2
  146. package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
  147. package/dist/cjs/fields/Select/index.cjs +88 -2
  148. package/dist/cjs/fields/Select/index.native.js +94 -6
  149. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  150. package/dist/cjs/fields/Signature/index.cjs +9 -5
  151. package/dist/cjs/fields/Signature/index.native.js +11 -7
  152. package/dist/cjs/fields/Signature/index.native.js.map +1 -1
  153. package/dist/cjs/fields/Slider/index.cjs +3 -1
  154. package/dist/cjs/fields/Slider/index.native.js +4 -2
  155. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  156. package/dist/cjs/fields/Slider/jumpMotion.native.js.map +1 -1
  157. package/dist/cjs/fields/Stepper/index.native.js +2 -2
  158. package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
  159. package/dist/cjs/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  160. package/dist/cjs/fields/Switch/index.cjs +5 -18
  161. package/dist/cjs/fields/Switch/index.native.js +7 -20
  162. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  163. package/dist/cjs/fields/TextArea/index.cjs +19 -5
  164. package/dist/cjs/fields/TextArea/index.native.js +25 -7
  165. package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
  166. package/dist/cjs/fields/TimePicker/catalog.cjs +203 -0
  167. package/dist/cjs/fields/TimePicker/catalog.native.js +227 -0
  168. package/dist/cjs/fields/TimePicker/catalog.native.js.map +1 -0
  169. package/dist/cjs/fields/TimePicker/index.cjs +6 -177
  170. package/dist/cjs/fields/TimePicker/index.native.js +75 -86
  171. package/dist/cjs/fields/TimePicker/index.native.js.map +1 -1
  172. package/dist/cjs/fields/TimePicker/parts.native.js +1 -1
  173. package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -1
  174. package/dist/cjs/fields/TimeRangeScrubber/geometry.cjs +6 -0
  175. package/dist/cjs/fields/TimeRangeScrubber/geometry.native.js +6 -0
  176. package/dist/cjs/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  177. package/dist/cjs/fields/TimeRangeScrubber/index.cjs +34 -14
  178. package/dist/cjs/fields/TimeRangeScrubber/index.native.js +40 -16
  179. package/dist/cjs/fields/TimeRangeScrubber/index.native.js.map +1 -1
  180. package/dist/cjs/fields/ToggleGroup/index.native.js +1 -1
  181. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  182. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.cjs +202 -0
  183. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js +211 -0
  184. package/dist/cjs/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -0
  185. package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.cjs +30 -0
  186. package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.native.js +33 -0
  187. package/dist/cjs/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -0
  188. package/dist/cjs/fields/nativeSelect.cjs +30 -0
  189. package/dist/cjs/fields/nativeSelect.native.js +33 -0
  190. package/dist/cjs/fields/nativeSelect.native.js.map +1 -0
  191. package/dist/cjs/fields/selectedOrder.native.js.map +1 -1
  192. package/dist/cjs/formSpacing.native.js.map +1 -1
  193. package/dist/cjs/hooks/useFocusManagement.native.js.map +1 -1
  194. package/dist/cjs/index.cjs +1 -0
  195. package/dist/cjs/index.native.js +44 -43
  196. package/dist/cjs/index.native.js.map +1 -1
  197. package/dist/cjs/requiredMarking.native.js.map +1 -1
  198. package/dist/cjs/shared/TimeColumn.native.js +1 -1
  199. package/dist/cjs/shared/TimeColumn.native.js.map +1 -1
  200. package/dist/cjs/shared/capabilityPreflight.native.js.map +1 -1
  201. package/dist/cjs/shared/colorRamps.native.js.map +1 -1
  202. package/dist/cjs/shared/devWarn.native.js.map +1 -1
  203. package/dist/cjs/shared/floatingList.native.js +1 -1
  204. package/dist/cjs/shared/floatingList.native.js.map +1 -1
  205. package/dist/cjs/shared/focusManagement.native.js.map +1 -1
  206. package/dist/cjs/shared/groupContext.native.js.map +1 -1
  207. package/dist/cjs/shared/i18n.native.js.map +1 -1
  208. package/dist/cjs/shared/t.native.js.map +1 -1
  209. package/dist/cjs/shared/tableCellContext.native.js.map +1 -1
  210. package/dist/cjs/shared/useDragScroll.native.js.map +1 -1
  211. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
  212. package/dist/cjs/shared/useSheetEscapeDismiss.native.js.map +1 -1
  213. package/dist/cjs/shared/useWheelIncrement.native.js.map +1 -1
  214. package/dist/cjs/shared/utils.native.js +1 -1
  215. package/dist/cjs/shared/utils.native.js.map +1 -1
  216. package/dist/cjs/shared/zIndex.native.js.map +1 -1
  217. package/dist/cjs/themedPrimitives.cjs +5 -0
  218. package/dist/cjs/themedPrimitives.native.js +5 -0
  219. package/dist/cjs/themedPrimitives.native.js.map +1 -1
  220. package/dist/cjs/types.native.js.map +1 -1
  221. package/dist/cjs/utils/LinkCell.native.js.map +1 -1
  222. package/dist/esm/AdaptivePopup/index.native.js.map +1 -1
  223. package/dist/esm/Button/index.mjs +9 -3
  224. package/dist/esm/Button/index.mjs.map +1 -1
  225. package/dist/esm/Button/index.native.js +14 -3
  226. package/dist/esm/Button/index.native.js.map +1 -1
  227. package/dist/esm/Chip/index.mjs +1 -3
  228. package/dist/esm/Chip/index.mjs.map +1 -1
  229. package/dist/esm/Chip/index.native.js +5 -3
  230. package/dist/esm/Chip/index.native.js.map +1 -1
  231. package/dist/esm/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  232. package/dist/esm/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  233. package/dist/esm/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  234. package/dist/esm/ContextualSaveBar/index.mjs +19 -3
  235. package/dist/esm/ContextualSaveBar/index.mjs.map +1 -1
  236. package/dist/esm/ContextualSaveBar/index.native.js +19 -3
  237. package/dist/esm/ContextualSaveBar/index.native.js.map +1 -1
  238. package/dist/esm/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  239. package/dist/esm/ControlGroup/index.native.js.map +1 -1
  240. package/dist/esm/DescriptionList/index.mjs +41 -13
  241. package/dist/esm/DescriptionList/index.mjs.map +1 -1
  242. package/dist/esm/DescriptionList/index.native.js +43 -13
  243. package/dist/esm/DescriptionList/index.native.js.map +1 -1
  244. package/dist/esm/ErrorSummary.mjs +5 -2
  245. package/dist/esm/ErrorSummary.mjs.map +1 -1
  246. package/dist/esm/ErrorSummary.native.js +5 -2
  247. package/dist/esm/ErrorSummary.native.js.map +1 -1
  248. package/dist/esm/FieldDisplay/editMode.native.js.map +1 -1
  249. package/dist/esm/FieldDisplay/formatters.native.js.map +1 -1
  250. package/dist/esm/FieldDisplay/index.native.js.map +1 -1
  251. package/dist/esm/FieldGroup.native.js.map +1 -1
  252. package/dist/esm/FloatingPanel/useFloatingPanel.mjs +24 -3
  253. package/dist/esm/FloatingPanel/useFloatingPanel.mjs.map +1 -1
  254. package/dist/esm/FloatingPanel/useFloatingPanel.native.js +43 -3
  255. package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  256. package/dist/esm/Form/index.native.js.map +1 -1
  257. package/dist/esm/Form/validateOn.native.js.map +1 -1
  258. package/dist/esm/FormGrid.native.js.map +1 -1
  259. package/dist/esm/FormSection.native.js.map +1 -1
  260. package/dist/esm/InputParts/index.mjs +43 -3
  261. package/dist/esm/InputParts/index.mjs.map +1 -1
  262. package/dist/esm/InputParts/index.native.js +43 -3
  263. package/dist/esm/InputParts/index.native.js.map +1 -1
  264. package/dist/esm/Label/index.native.js.map +1 -1
  265. package/dist/esm/Skeleton/index.native.js.map +1 -1
  266. package/dist/esm/Spinner/SpinnerGlyph.native.js.map +1 -1
  267. package/dist/esm/Spinner/spinnerSize.native.js.map +1 -1
  268. package/dist/esm/Table/index.native.js.map +1 -1
  269. package/dist/esm/Wheel/haptic.native.js.map +1 -1
  270. package/dist/esm/Wheel/index.native.js.map +1 -1
  271. package/dist/esm/actionLabel.native.js.map +1 -1
  272. package/dist/esm/fieldDefaults.native.js.map +1 -1
  273. package/dist/esm/fieldLayout.native.js.map +1 -1
  274. package/dist/esm/fields/Barcode/BarcodePreview.native.js.map +1 -1
  275. package/dist/esm/fields/Barcode/code128.native.js.map +1 -1
  276. package/dist/esm/fields/Barcode/index.native.js.map +1 -1
  277. package/dist/esm/fields/Barcode/qr.native.js.map +1 -1
  278. package/dist/esm/fields/Barcode/scannerTypes.native.js.map +1 -1
  279. package/dist/esm/fields/Checkbox/Checkbox.mjs +5 -2
  280. package/dist/esm/fields/Checkbox/Checkbox.mjs.map +1 -1
  281. package/dist/esm/fields/Checkbox/Checkbox.native.js +6 -3
  282. package/dist/esm/fields/Checkbox/Checkbox.native.js.map +1 -1
  283. package/dist/esm/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  284. package/dist/esm/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  285. package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  286. package/dist/esm/fields/Checkbox/CheckboxGroup.mjs +69 -59
  287. package/dist/esm/fields/Checkbox/CheckboxGroup.mjs.map +1 -1
  288. package/dist/esm/fields/Checkbox/CheckboxGroup.native.js +75 -65
  289. package/dist/esm/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  290. package/dist/esm/fields/Checkbox/checkboxGroupContext.mjs +7 -0
  291. package/dist/esm/fields/Checkbox/checkboxGroupContext.mjs.map +1 -0
  292. package/dist/esm/fields/Checkbox/checkboxGroupContext.native.js +7 -0
  293. package/dist/esm/fields/Checkbox/checkboxGroupContext.native.js.map +1 -0
  294. package/dist/esm/fields/Checkbox/index.native.js.map +1 -1
  295. package/dist/esm/fields/ColorPicker/index.native.js.map +1 -1
  296. package/dist/esm/fields/ColorPicker/parts.native.js.map +1 -1
  297. package/dist/esm/fields/Combobox/authorOptions.native.js.map +1 -1
  298. package/dist/esm/fields/Combobox/index.native.js.map +1 -1
  299. package/dist/esm/fields/DatePicker/Calendar.native.js.map +1 -1
  300. package/dist/esm/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  301. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs +377 -0
  302. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -0
  303. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js +413 -0
  304. package/dist/esm/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -0
  305. package/dist/esm/fields/DatePicker/DatetimePicker.mjs +1 -375
  306. package/dist/esm/fields/DatePicker/DatetimePicker.mjs.map +1 -1
  307. package/dist/esm/fields/DatePicker/DatetimePicker.native.js +65 -293
  308. package/dist/esm/fields/DatePicker/DatetimePicker.native.js.map +1 -1
  309. package/dist/esm/fields/DatePicker/MonthPicker.native.js.map +1 -1
  310. package/dist/esm/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  311. package/dist/esm/fields/DatePicker/catalog.mjs +276 -0
  312. package/dist/esm/fields/DatePicker/catalog.mjs.map +1 -0
  313. package/dist/esm/fields/DatePicker/catalog.native.js +317 -0
  314. package/dist/esm/fields/DatePicker/catalog.native.js.map +1 -0
  315. package/dist/esm/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  316. package/dist/esm/fields/DatePicker/index.mjs +1 -274
  317. package/dist/esm/fields/DatePicker/index.mjs.map +1 -1
  318. package/dist/esm/fields/DatePicker/index.native.js +60 -179
  319. package/dist/esm/fields/DatePicker/index.native.js.map +1 -1
  320. package/dist/esm/fields/DatePicker/parts.mjs +13 -10
  321. package/dist/esm/fields/DatePicker/parts.mjs.map +1 -1
  322. package/dist/esm/fields/DatePicker/parts.native.js +13 -10
  323. package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
  324. package/dist/esm/fields/DatePicker/utils.native.js.map +1 -1
  325. package/dist/esm/fields/Duration/durationMath.native.js.map +1 -1
  326. package/dist/esm/fields/Duration/index.mjs +29 -4
  327. package/dist/esm/fields/Duration/index.mjs.map +1 -1
  328. package/dist/esm/fields/Duration/index.native.js +29 -4
  329. package/dist/esm/fields/Duration/index.native.js.map +1 -1
  330. package/dist/esm/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  331. package/dist/esm/fields/FileUpload/index.mjs +0 -1
  332. package/dist/esm/fields/FileUpload/index.mjs.map +1 -1
  333. package/dist/esm/fields/FileUpload/index.native.js +5 -1
  334. package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
  335. package/dist/esm/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  336. package/dist/esm/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  337. package/dist/esm/fields/Geolocation/geoValue.native.js.map +1 -1
  338. package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
  339. package/dist/esm/fields/Geolocation/mapMath.native.js.map +1 -1
  340. package/dist/esm/fields/Geolocation/mapTypes.native.js.map +1 -1
  341. package/dist/esm/fields/Icon/drawnSet.native.js.map +1 -1
  342. package/dist/esm/fields/Icon/index.native.js.map +1 -1
  343. package/dist/esm/fields/ImageField/index.native.js.map +1 -1
  344. package/dist/esm/fields/Input/index.native.js.map +1 -1
  345. package/dist/esm/fields/MentionInput/index.native.js.map +1 -1
  346. package/dist/esm/fields/OTPInput/index.native.js.map +1 -1
  347. package/dist/esm/fields/OTPInput/otpCellCss.native.js.map +1 -1
  348. package/dist/esm/fields/PhoneInput/dialCodes.native.js.map +1 -1
  349. package/dist/esm/fields/PhoneInput/index.mjs +9 -4
  350. package/dist/esm/fields/PhoneInput/index.mjs.map +1 -1
  351. package/dist/esm/fields/PhoneInput/index.native.js +13 -6
  352. package/dist/esm/fields/PhoneInput/index.native.js.map +1 -1
  353. package/dist/esm/fields/PhoneInput/phone.native.js.map +1 -1
  354. package/dist/esm/fields/Progress/index.native.js.map +1 -1
  355. package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
  356. package/dist/esm/fields/Rating/index.mjs +2 -2
  357. package/dist/esm/fields/Rating/index.mjs.map +1 -1
  358. package/dist/esm/fields/Rating/index.native.js +5 -2
  359. package/dist/esm/fields/Rating/index.native.js.map +1 -1
  360. package/dist/esm/fields/Rating/ratingMath.native.js.map +1 -1
  361. package/dist/esm/fields/Rating/types.native.js.map +1 -1
  362. package/dist/esm/fields/SearchInput/index.mjs +6 -0
  363. package/dist/esm/fields/SearchInput/index.mjs.map +1 -1
  364. package/dist/esm/fields/SearchInput/index.native.js +6 -0
  365. package/dist/esm/fields/SearchInput/index.native.js.map +1 -1
  366. package/dist/esm/fields/Select/index.mjs +78 -3
  367. package/dist/esm/fields/Select/index.mjs.map +1 -1
  368. package/dist/esm/fields/Select/index.native.js +80 -3
  369. package/dist/esm/fields/Select/index.native.js.map +1 -1
  370. package/dist/esm/fields/Signature/index.mjs +10 -6
  371. package/dist/esm/fields/Signature/index.mjs.map +1 -1
  372. package/dist/esm/fields/Signature/index.native.js +10 -6
  373. package/dist/esm/fields/Signature/index.native.js.map +1 -1
  374. package/dist/esm/fields/Slider/index.mjs +4 -2
  375. package/dist/esm/fields/Slider/index.mjs.map +1 -1
  376. package/dist/esm/fields/Slider/index.native.js +4 -2
  377. package/dist/esm/fields/Slider/index.native.js.map +1 -1
  378. package/dist/esm/fields/Slider/jumpMotion.native.js.map +1 -1
  379. package/dist/esm/fields/Stepper/index.native.js.map +1 -1
  380. package/dist/esm/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  381. package/dist/esm/fields/Switch/index.mjs +6 -19
  382. package/dist/esm/fields/Switch/index.mjs.map +1 -1
  383. package/dist/esm/fields/Switch/index.native.js +6 -19
  384. package/dist/esm/fields/Switch/index.native.js.map +1 -1
  385. package/dist/esm/fields/TextArea/index.mjs +19 -5
  386. package/dist/esm/fields/TextArea/index.mjs.map +1 -1
  387. package/dist/esm/fields/TextArea/index.native.js +23 -5
  388. package/dist/esm/fields/TextArea/index.native.js.map +1 -1
  389. package/dist/esm/fields/TimePicker/catalog.mjs +174 -0
  390. package/dist/esm/fields/TimePicker/catalog.mjs.map +1 -0
  391. package/dist/esm/fields/TimePicker/catalog.native.js +195 -0
  392. package/dist/esm/fields/TimePicker/catalog.native.js.map +1 -0
  393. package/dist/esm/fields/TimePicker/index.mjs +2 -173
  394. package/dist/esm/fields/TimePicker/index.mjs.map +1 -1
  395. package/dist/esm/fields/TimePicker/index.native.js +76 -87
  396. package/dist/esm/fields/TimePicker/index.native.js.map +1 -1
  397. package/dist/esm/fields/TimePicker/parts.native.js.map +1 -1
  398. package/dist/esm/fields/TimeRangeScrubber/geometry.mjs +6 -1
  399. package/dist/esm/fields/TimeRangeScrubber/geometry.mjs.map +1 -1
  400. package/dist/esm/fields/TimeRangeScrubber/geometry.native.js +6 -1
  401. package/dist/esm/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  402. package/dist/esm/fields/TimeRangeScrubber/index.mjs +37 -18
  403. package/dist/esm/fields/TimeRangeScrubber/index.mjs.map +1 -1
  404. package/dist/esm/fields/TimeRangeScrubber/index.native.js +41 -18
  405. package/dist/esm/fields/TimeRangeScrubber/index.native.js.map +1 -1
  406. package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
  407. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs +166 -0
  408. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -0
  409. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js +172 -0
  410. package/dist/esm/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -0
  411. package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.mjs +5 -0
  412. package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.mjs.map +1 -0
  413. package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.native.js +5 -0
  414. package/dist/esm/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -0
  415. package/dist/esm/fields/nativeSelect.mjs +5 -0
  416. package/dist/esm/fields/nativeSelect.mjs.map +1 -0
  417. package/dist/esm/fields/nativeSelect.native.js +5 -0
  418. package/dist/esm/fields/nativeSelect.native.js.map +1 -0
  419. package/dist/esm/fields/selectedOrder.native.js.map +1 -1
  420. package/dist/esm/formSpacing.native.js.map +1 -1
  421. package/dist/esm/hooks/useFocusManagement.native.js.map +1 -1
  422. package/dist/esm/index.mjs +2 -2
  423. package/dist/esm/index.mjs.map +1 -1
  424. package/dist/esm/index.native.js +2 -2
  425. package/dist/esm/index.native.js.map +1 -1
  426. package/dist/esm/requiredMarking.native.js.map +1 -1
  427. package/dist/esm/shared/TimeColumn.native.js.map +1 -1
  428. package/dist/esm/shared/capabilityPreflight.native.js.map +1 -1
  429. package/dist/esm/shared/colorRamps.native.js.map +1 -1
  430. package/dist/esm/shared/devWarn.native.js.map +1 -1
  431. package/dist/esm/shared/floatingList.native.js.map +1 -1
  432. package/dist/esm/shared/focusManagement.native.js.map +1 -1
  433. package/dist/esm/shared/groupContext.native.js.map +1 -1
  434. package/dist/esm/shared/i18n.native.js.map +1 -1
  435. package/dist/esm/shared/t.native.js.map +1 -1
  436. package/dist/esm/shared/tableCellContext.native.js.map +1 -1
  437. package/dist/esm/shared/useDragScroll.native.js.map +1 -1
  438. package/dist/esm/shared/useKeyboardInset.native.js.map +1 -1
  439. package/dist/esm/shared/useSheetEscapeDismiss.native.js.map +1 -1
  440. package/dist/esm/shared/useWheelIncrement.native.js.map +1 -1
  441. package/dist/esm/shared/utils.native.js.map +1 -1
  442. package/dist/esm/shared/zIndex.native.js.map +1 -1
  443. package/dist/esm/themedPrimitives.mjs +5 -0
  444. package/dist/esm/themedPrimitives.mjs.map +1 -1
  445. package/dist/esm/themedPrimitives.native.js +5 -0
  446. package/dist/esm/themedPrimitives.native.js.map +1 -1
  447. package/dist/esm/types.native.js.map +1 -1
  448. package/dist/esm/utils/LinkCell.native.js.map +1 -1
  449. package/dist/jsx/AdaptivePopup/index.native.js +1 -1
  450. package/dist/jsx/AdaptivePopup/index.native.js.map +1 -1
  451. package/dist/jsx/Button/index.mjs +9 -3
  452. package/dist/jsx/Button/index.mjs.map +1 -1
  453. package/dist/jsx/Button/index.native.js +14 -3
  454. package/dist/jsx/Button/index.native.js.map +1 -1
  455. package/dist/jsx/Chip/index.mjs +1 -3
  456. package/dist/jsx/Chip/index.mjs.map +1 -1
  457. package/dist/jsx/Chip/index.native.js +5 -3
  458. package/dist/jsx/Chip/index.native.js.map +1 -1
  459. package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js +1 -1
  460. package/dist/jsx/ContextualSaveBar/UnsavedChangesDialog.native.js.map +1 -1
  461. package/dist/jsx/ContextualSaveBar/clientKnownIdentity.native.js.map +1 -1
  462. package/dist/jsx/ContextualSaveBar/commitImmediateField.native.js.map +1 -1
  463. package/dist/jsx/ContextualSaveBar/index.mjs +19 -3
  464. package/dist/jsx/ContextualSaveBar/index.mjs.map +1 -1
  465. package/dist/jsx/ContextualSaveBar/index.native.js +22 -6
  466. package/dist/jsx/ContextualSaveBar/index.native.js.map +1 -1
  467. package/dist/jsx/ContextualSaveBar/useUnsavedChangesGuard.native.js.map +1 -1
  468. package/dist/jsx/ControlGroup/index.native.js +1 -1
  469. package/dist/jsx/ControlGroup/index.native.js.map +1 -1
  470. package/dist/jsx/DescriptionList/index.mjs +41 -13
  471. package/dist/jsx/DescriptionList/index.mjs.map +1 -1
  472. package/dist/jsx/DescriptionList/index.native.js +45 -15
  473. package/dist/jsx/DescriptionList/index.native.js.map +1 -1
  474. package/dist/jsx/ErrorSummary.mjs +5 -2
  475. package/dist/jsx/ErrorSummary.mjs.map +1 -1
  476. package/dist/jsx/ErrorSummary.native.js +4 -1
  477. package/dist/jsx/ErrorSummary.native.js.map +1 -1
  478. package/dist/jsx/FieldDisplay/editMode.native.js.map +1 -1
  479. package/dist/jsx/FieldDisplay/formatters.native.js.map +1 -1
  480. package/dist/jsx/FieldDisplay/index.native.js +1 -1
  481. package/dist/jsx/FieldDisplay/index.native.js.map +1 -1
  482. package/dist/jsx/FieldGroup.native.js.map +1 -1
  483. package/dist/jsx/FloatingPanel/useFloatingPanel.mjs +24 -3
  484. package/dist/jsx/FloatingPanel/useFloatingPanel.mjs.map +1 -1
  485. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js +43 -2
  486. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  487. package/dist/jsx/Form/index.native.js +1 -1
  488. package/dist/jsx/Form/index.native.js.map +1 -1
  489. package/dist/jsx/Form/validateOn.native.js.map +1 -1
  490. package/dist/jsx/FormGrid.native.js.map +1 -1
  491. package/dist/jsx/FormSection.native.js.map +1 -1
  492. package/dist/jsx/InputParts/index.mjs +43 -3
  493. package/dist/jsx/InputParts/index.mjs.map +1 -1
  494. package/dist/jsx/InputParts/index.native.js +42 -2
  495. package/dist/jsx/InputParts/index.native.js.map +1 -1
  496. package/dist/jsx/Label/index.native.js.map +1 -1
  497. package/dist/jsx/Skeleton/index.native.js.map +1 -1
  498. package/dist/jsx/Spinner/SpinnerGlyph.native.js.map +1 -1
  499. package/dist/jsx/Spinner/spinnerSize.native.js.map +1 -1
  500. package/dist/jsx/Table/index.native.js.map +1 -1
  501. package/dist/jsx/Wheel/haptic.native.js.map +1 -1
  502. package/dist/jsx/Wheel/index.native.js.map +1 -1
  503. package/dist/jsx/actionLabel.native.js.map +1 -1
  504. package/dist/jsx/fieldDefaults.native.js.map +1 -1
  505. package/dist/jsx/fieldLayout.native.js +1 -1
  506. package/dist/jsx/fieldLayout.native.js.map +1 -1
  507. package/dist/jsx/fields/Barcode/BarcodePreview.native.js.map +1 -1
  508. package/dist/jsx/fields/Barcode/BarcodeScanner.native.js +1 -1
  509. package/dist/jsx/fields/Barcode/code128.native.js.map +1 -1
  510. package/dist/jsx/fields/Barcode/index.native.js +2 -2
  511. package/dist/jsx/fields/Barcode/index.native.js.map +1 -1
  512. package/dist/jsx/fields/Barcode/qr.native.js.map +1 -1
  513. package/dist/jsx/fields/Barcode/scannerTypes.native.js.map +1 -1
  514. package/dist/jsx/fields/Checkbox/Checkbox.mjs +5 -2
  515. package/dist/jsx/fields/Checkbox/Checkbox.mjs.map +1 -1
  516. package/dist/jsx/fields/Checkbox/Checkbox.native.js +7 -4
  517. package/dist/jsx/fields/Checkbox/Checkbox.native.js.map +1 -1
  518. package/dist/jsx/fields/Checkbox/CheckboxBox.native.js.map +1 -1
  519. package/dist/jsx/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  520. package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  521. package/dist/jsx/fields/Checkbox/CheckboxGroup.mjs +69 -59
  522. package/dist/jsx/fields/Checkbox/CheckboxGroup.mjs.map +1 -1
  523. package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js +76 -66
  524. package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  525. package/dist/jsx/fields/Checkbox/checkboxGroupContext.mjs +7 -0
  526. package/dist/jsx/fields/Checkbox/checkboxGroupContext.mjs.map +1 -0
  527. package/dist/jsx/fields/Checkbox/checkboxGroupContext.native.js +36 -0
  528. package/dist/jsx/fields/Checkbox/checkboxGroupContext.native.js.map +1 -0
  529. package/dist/jsx/fields/Checkbox/index.native.js.map +1 -1
  530. package/dist/jsx/fields/ColorPicker/index.native.js +3 -3
  531. package/dist/jsx/fields/ColorPicker/index.native.js.map +1 -1
  532. package/dist/jsx/fields/ColorPicker/parts.native.js +2 -2
  533. package/dist/jsx/fields/ColorPicker/parts.native.js.map +1 -1
  534. package/dist/jsx/fields/Combobox/authorOptions.native.js.map +1 -1
  535. package/dist/jsx/fields/Combobox/index.native.js +5 -5
  536. package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
  537. package/dist/jsx/fields/DatePicker/Calendar.native.js.map +1 -1
  538. package/dist/jsx/fields/DatePicker/DateRangePicker.native.js +2 -2
  539. package/dist/jsx/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  540. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs +377 -0
  541. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.mjs.map +1 -0
  542. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js +441 -0
  543. package/dist/jsx/fields/DatePicker/DatetimePicker.catalog.native.js.map +1 -0
  544. package/dist/jsx/fields/DatePicker/DatetimePicker.mjs +1 -375
  545. package/dist/jsx/fields/DatePicker/DatetimePicker.mjs.map +1 -1
  546. package/dist/jsx/fields/DatePicker/DatetimePicker.native.js +70 -298
  547. package/dist/jsx/fields/DatePicker/DatetimePicker.native.js.map +1 -1
  548. package/dist/jsx/fields/DatePicker/MonthPicker.native.js +2 -2
  549. package/dist/jsx/fields/DatePicker/MonthPicker.native.js.map +1 -1
  550. package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js +2 -2
  551. package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  552. package/dist/jsx/fields/DatePicker/catalog.mjs +276 -0
  553. package/dist/jsx/fields/DatePicker/catalog.mjs.map +1 -0
  554. package/dist/jsx/fields/DatePicker/catalog.native.js +350 -0
  555. package/dist/jsx/fields/DatePicker/catalog.native.js.map +1 -0
  556. package/dist/jsx/fields/DatePicker/fieldValueSync.native.js.map +1 -1
  557. package/dist/jsx/fields/DatePicker/index.mjs +1 -274
  558. package/dist/jsx/fields/DatePicker/index.mjs.map +1 -1
  559. package/dist/jsx/fields/DatePicker/index.native.js +67 -186
  560. package/dist/jsx/fields/DatePicker/index.native.js.map +1 -1
  561. package/dist/jsx/fields/DatePicker/parts.mjs +13 -10
  562. package/dist/jsx/fields/DatePicker/parts.mjs.map +1 -1
  563. package/dist/jsx/fields/DatePicker/parts.native.js +14 -11
  564. package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -1
  565. package/dist/jsx/fields/DatePicker/utils.native.js.map +1 -1
  566. package/dist/jsx/fields/Duration/durationMath.native.js.map +1 -1
  567. package/dist/jsx/fields/Duration/index.mjs +29 -4
  568. package/dist/jsx/fields/Duration/index.mjs.map +1 -1
  569. package/dist/jsx/fields/Duration/index.native.js +32 -6
  570. package/dist/jsx/fields/Duration/index.native.js.map +1 -1
  571. package/dist/jsx/fields/FileUpload/filePickerTypes.native.js.map +1 -1
  572. package/dist/jsx/fields/FileUpload/index.mjs +0 -1
  573. package/dist/jsx/fields/FileUpload/index.mjs.map +1 -1
  574. package/dist/jsx/fields/FileUpload/index.native.js +7 -3
  575. package/dist/jsx/fields/FileUpload/index.native.js.map +1 -1
  576. package/dist/jsx/fields/FileUpload/nativePickerLoader.native.js.map +1 -1
  577. package/dist/jsx/fields/Geolocation/expoMapsLoader.native.js.map +1 -1
  578. package/dist/jsx/fields/Geolocation/geoValue.native.js.map +1 -1
  579. package/dist/jsx/fields/Geolocation/index.native.js +5 -5
  580. package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
  581. package/dist/jsx/fields/Geolocation/mapMath.native.js.map +1 -1
  582. package/dist/jsx/fields/Geolocation/mapTypes.native.js.map +1 -1
  583. package/dist/jsx/fields/Icon/drawnSet.native.js.map +1 -1
  584. package/dist/jsx/fields/Icon/index.native.js +3 -3
  585. package/dist/jsx/fields/Icon/index.native.js.map +1 -1
  586. package/dist/jsx/fields/ImageField/index.native.js +2 -2
  587. package/dist/jsx/fields/ImageField/index.native.js.map +1 -1
  588. package/dist/jsx/fields/Input/index.native.js +2 -2
  589. package/dist/jsx/fields/Input/index.native.js.map +1 -1
  590. package/dist/jsx/fields/MentionInput/index.native.js +3 -3
  591. package/dist/jsx/fields/MentionInput/index.native.js.map +1 -1
  592. package/dist/jsx/fields/OTPInput/index.native.js +3 -3
  593. package/dist/jsx/fields/OTPInput/index.native.js.map +1 -1
  594. package/dist/jsx/fields/OTPInput/otpCellCss.native.js.map +1 -1
  595. package/dist/jsx/fields/PhoneInput/dialCodes.native.js.map +1 -1
  596. package/dist/jsx/fields/PhoneInput/index.mjs +9 -4
  597. package/dist/jsx/fields/PhoneInput/index.mjs.map +1 -1
  598. package/dist/jsx/fields/PhoneInput/index.native.js +16 -9
  599. package/dist/jsx/fields/PhoneInput/index.native.js.map +1 -1
  600. package/dist/jsx/fields/PhoneInput/phone.native.js.map +1 -1
  601. package/dist/jsx/fields/Progress/index.native.js +1 -1
  602. package/dist/jsx/fields/Progress/index.native.js.map +1 -1
  603. package/dist/jsx/fields/RadioGroup/index.native.js +1 -1
  604. package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -1
  605. package/dist/jsx/fields/Rating/index.mjs +2 -2
  606. package/dist/jsx/fields/Rating/index.mjs.map +1 -1
  607. package/dist/jsx/fields/Rating/index.native.js +5 -2
  608. package/dist/jsx/fields/Rating/index.native.js.map +1 -1
  609. package/dist/jsx/fields/Rating/ratingMath.native.js.map +1 -1
  610. package/dist/jsx/fields/Rating/types.native.js.map +1 -1
  611. package/dist/jsx/fields/SearchInput/index.mjs +6 -0
  612. package/dist/jsx/fields/SearchInput/index.mjs.map +1 -1
  613. package/dist/jsx/fields/SearchInput/index.native.js +8 -2
  614. package/dist/jsx/fields/SearchInput/index.native.js.map +1 -1
  615. package/dist/jsx/fields/Select/index.mjs +78 -3
  616. package/dist/jsx/fields/Select/index.mjs.map +1 -1
  617. package/dist/jsx/fields/Select/index.native.js +94 -6
  618. package/dist/jsx/fields/Select/index.native.js.map +1 -1
  619. package/dist/jsx/fields/Signature/index.mjs +10 -6
  620. package/dist/jsx/fields/Signature/index.mjs.map +1 -1
  621. package/dist/jsx/fields/Signature/index.native.js +11 -7
  622. package/dist/jsx/fields/Signature/index.native.js.map +1 -1
  623. package/dist/jsx/fields/Slider/index.mjs +4 -2
  624. package/dist/jsx/fields/Slider/index.mjs.map +1 -1
  625. package/dist/jsx/fields/Slider/index.native.js +4 -2
  626. package/dist/jsx/fields/Slider/index.native.js.map +1 -1
  627. package/dist/jsx/fields/Slider/jumpMotion.native.js.map +1 -1
  628. package/dist/jsx/fields/Stepper/index.native.js +2 -2
  629. package/dist/jsx/fields/Stepper/index.native.js.map +1 -1
  630. package/dist/jsx/fields/Stepper/resolveStepperPlacement.native.js.map +1 -1
  631. package/dist/jsx/fields/Switch/index.mjs +6 -19
  632. package/dist/jsx/fields/Switch/index.mjs.map +1 -1
  633. package/dist/jsx/fields/Switch/index.native.js +7 -20
  634. package/dist/jsx/fields/Switch/index.native.js.map +1 -1
  635. package/dist/jsx/fields/TextArea/index.mjs +19 -5
  636. package/dist/jsx/fields/TextArea/index.mjs.map +1 -1
  637. package/dist/jsx/fields/TextArea/index.native.js +25 -7
  638. package/dist/jsx/fields/TextArea/index.native.js.map +1 -1
  639. package/dist/jsx/fields/TimePicker/catalog.mjs +174 -0
  640. package/dist/jsx/fields/TimePicker/catalog.mjs.map +1 -0
  641. package/dist/jsx/fields/TimePicker/catalog.native.js +227 -0
  642. package/dist/jsx/fields/TimePicker/catalog.native.js.map +1 -0
  643. package/dist/jsx/fields/TimePicker/index.mjs +2 -173
  644. package/dist/jsx/fields/TimePicker/index.mjs.map +1 -1
  645. package/dist/jsx/fields/TimePicker/index.native.js +75 -86
  646. package/dist/jsx/fields/TimePicker/index.native.js.map +1 -1
  647. package/dist/jsx/fields/TimePicker/parts.native.js +1 -1
  648. package/dist/jsx/fields/TimePicker/parts.native.js.map +1 -1
  649. package/dist/jsx/fields/TimeRangeScrubber/geometry.mjs +6 -1
  650. package/dist/jsx/fields/TimeRangeScrubber/geometry.mjs.map +1 -1
  651. package/dist/jsx/fields/TimeRangeScrubber/geometry.native.js +6 -0
  652. package/dist/jsx/fields/TimeRangeScrubber/geometry.native.js.map +1 -1
  653. package/dist/jsx/fields/TimeRangeScrubber/index.mjs +37 -18
  654. package/dist/jsx/fields/TimeRangeScrubber/index.mjs.map +1 -1
  655. package/dist/jsx/fields/TimeRangeScrubber/index.native.js +40 -16
  656. package/dist/jsx/fields/TimeRangeScrubber/index.native.js.map +1 -1
  657. package/dist/jsx/fields/ToggleGroup/index.native.js +1 -1
  658. package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -1
  659. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs +166 -0
  660. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.mjs.map +1 -0
  661. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js +211 -0
  662. package/dist/jsx/fields/nativeDateTime/OsDateTimeSheet.native.js.map +1 -0
  663. package/dist/jsx/fields/nativeDateTime/osDateTimeIosDisplay.mjs +5 -0
  664. package/dist/jsx/fields/nativeDateTime/osDateTimeIosDisplay.mjs.map +1 -0
  665. package/dist/jsx/fields/nativeDateTime/osDateTimeIosDisplay.native.js +33 -0
  666. package/dist/jsx/fields/nativeDateTime/osDateTimeIosDisplay.native.js.map +1 -0
  667. package/dist/jsx/fields/nativeSelect.mjs +5 -0
  668. package/dist/jsx/fields/nativeSelect.mjs.map +1 -0
  669. package/dist/jsx/fields/nativeSelect.native.js +33 -0
  670. package/dist/jsx/fields/nativeSelect.native.js.map +1 -0
  671. package/dist/jsx/fields/selectedOrder.native.js.map +1 -1
  672. package/dist/jsx/formSpacing.native.js.map +1 -1
  673. package/dist/jsx/hooks/useFocusManagement.native.js.map +1 -1
  674. package/dist/jsx/index.js +2 -2
  675. package/dist/jsx/index.js.map +1 -1
  676. package/dist/jsx/index.mjs +2 -2
  677. package/dist/jsx/index.mjs.map +1 -1
  678. package/dist/jsx/index.native.js +44 -43
  679. package/dist/jsx/index.native.js.map +1 -1
  680. package/dist/jsx/requiredMarking.native.js.map +1 -1
  681. package/dist/jsx/shared/TimeColumn.native.js +1 -1
  682. package/dist/jsx/shared/TimeColumn.native.js.map +1 -1
  683. package/dist/jsx/shared/capabilityPreflight.native.js.map +1 -1
  684. package/dist/jsx/shared/colorRamps.native.js.map +1 -1
  685. package/dist/jsx/shared/devWarn.native.js.map +1 -1
  686. package/dist/jsx/shared/floatingList.native.js +1 -1
  687. package/dist/jsx/shared/floatingList.native.js.map +1 -1
  688. package/dist/jsx/shared/focusManagement.native.js.map +1 -1
  689. package/dist/jsx/shared/groupContext.native.js.map +1 -1
  690. package/dist/jsx/shared/i18n.native.js.map +1 -1
  691. package/dist/jsx/shared/t.native.js.map +1 -1
  692. package/dist/jsx/shared/tableCellContext.native.js.map +1 -1
  693. package/dist/jsx/shared/useDragScroll.native.js.map +1 -1
  694. package/dist/jsx/shared/useKeyboardInset.native.js.map +1 -1
  695. package/dist/jsx/shared/useSheetEscapeDismiss.native.js.map +1 -1
  696. package/dist/jsx/shared/useWheelIncrement.native.js.map +1 -1
  697. package/dist/jsx/shared/utils.native.js +1 -1
  698. package/dist/jsx/shared/utils.native.js.map +1 -1
  699. package/dist/jsx/shared/zIndex.native.js.map +1 -1
  700. package/dist/jsx/themedPrimitives.mjs +5 -0
  701. package/dist/jsx/themedPrimitives.mjs.map +1 -1
  702. package/dist/jsx/themedPrimitives.native.js +5 -0
  703. package/dist/jsx/themedPrimitives.native.js.map +1 -1
  704. package/dist/jsx/types.native.js.map +1 -1
  705. package/dist/jsx/utils/LinkCell.native.js.map +1 -1
  706. package/package.json +12 -9
  707. package/src/Button/Button.labelInk.spec.tsx +1 -1
  708. package/src/Button/Button.sizeLadder.spec.tsx +124 -0
  709. package/src/Button/Button.spec.tsx +7 -17
  710. package/src/Button/Button.stories.tsx +14 -0
  711. package/src/Button/index.tsx +24 -4
  712. package/src/Chip/Chip.spec.tsx +15 -0
  713. package/src/Chip/Chip.stories.tsx +251 -0
  714. package/src/Chip/index.tsx +5 -1
  715. package/src/ContextualSaveBar/ContextualSaveBar.spec.tsx +51 -0
  716. package/src/ContextualSaveBar/ContextualSaveBar.stories.tsx +42 -23
  717. package/src/ContextualSaveBar/UnsavedChangesDialog.spec.tsx +167 -0
  718. package/src/ContextualSaveBar/UnsavedChangesDialog.stories.tsx +118 -0
  719. package/src/ContextualSaveBar/index.tsx +14 -5
  720. package/src/ContextualSaveBar/unsavedChangesDialogStories.spec.tsx +79 -0
  721. package/src/DescriptionList/DescriptionList.spec.tsx +19 -1
  722. package/src/DescriptionList/DescriptionList.stories.tsx +5 -1
  723. package/src/DescriptionList/index.tsx +60 -20
  724. package/src/ErrorSummary.stories.tsx +197 -0
  725. package/src/ErrorSummary.tsx +5 -2
  726. package/src/FloatingPanel/panelWidthContract.spec.ts +2 -2
  727. package/src/FloatingPanel/useFloatingPanel.spec.tsx +199 -1
  728. package/src/FloatingPanel/useFloatingPanel.ts +45 -3
  729. package/src/InputParts/InputParts.stories.tsx +230 -0
  730. package/src/InputParts/index.tsx +56 -2
  731. package/src/InputParts/inputPartsStories.spec.tsx +122 -0
  732. package/src/Skeleton/Skeleton.stories.tsx +148 -0
  733. package/src/Skeleton/skeletonStories.spec.tsx +107 -0
  734. package/src/Spinner/SpinnerGlyph.spec.tsx +132 -0
  735. package/src/Wheel/Wheel.stories.tsx +232 -0
  736. package/src/Wheel/WheelEdgeFade.spec.tsx +141 -0
  737. package/src/Wheel/wheelStories.spec.tsx +143 -0
  738. package/src/errorSummaryStories.spec.tsx +114 -0
  739. package/src/fields/Checkbox/Checkbox.spec.tsx +24 -0
  740. package/src/fields/Checkbox/Checkbox.tsx +8 -3
  741. package/src/fields/Checkbox/CheckboxBox.spec.tsx +395 -0
  742. package/src/fields/Checkbox/CheckboxCard.spec.tsx +197 -0
  743. package/src/fields/Checkbox/CheckboxFieldFrame.spec.tsx +116 -0
  744. package/src/fields/Checkbox/CheckboxGroup.stories.tsx +15 -0
  745. package/src/fields/Checkbox/CheckboxGroup.tsx +77 -70
  746. package/src/fields/Checkbox/checkboxGroupContext.ts +12 -0
  747. package/src/fields/DatePicker/Calendar.spec.tsx +6 -5
  748. package/src/fields/DatePicker/DatePicker.stories.tsx +13 -0
  749. package/src/fields/DatePicker/DatetimePicker.catalog.tsx +586 -0
  750. package/src/fields/DatePicker/DatetimePicker.native.tsx +243 -0
  751. package/src/fields/DatePicker/DatetimePicker.tsx +2 -584
  752. package/src/fields/DatePicker/catalog.tsx +450 -0
  753. package/src/fields/DatePicker/index.native.tsx +261 -0
  754. package/src/fields/DatePicker/index.tsx +20 -448
  755. package/src/fields/DatePicker/parts.tsx +11 -6
  756. package/src/fields/Duration/Duration.spec.tsx +50 -0
  757. package/src/fields/Duration/Duration.stories.tsx +21 -0
  758. package/src/fields/Duration/index.tsx +43 -5
  759. package/src/fields/FileUpload/index.tsx +5 -1
  760. package/src/fields/Input/Input.spec.tsx +3 -1
  761. package/src/fields/PhoneInput/PhoneInput.spec.tsx +16 -63
  762. package/src/fields/PhoneInput/PhoneInput.tvalue-source.spec.ts +23 -0
  763. package/src/fields/PhoneInput/index.tsx +10 -3
  764. package/src/fields/Rating/index.tsx +9 -1
  765. package/src/fields/SearchInput/SearchInput.spec.tsx +20 -0
  766. package/src/fields/SearchInput/index.tsx +6 -0
  767. package/src/fields/Select/Select.stories.tsx +23 -1
  768. package/src/fields/Select/index.tsx +87 -1
  769. package/src/fields/Signature/Signature.spec.tsx +22 -3
  770. package/src/fields/Signature/index.tsx +16 -7
  771. package/src/fields/Slider/index.tsx +4 -1
  772. package/src/fields/Switch/index.tsx +14 -12
  773. package/src/fields/TextArea/TextArea.spec.tsx +68 -0
  774. package/src/fields/TextArea/index.tsx +23 -5
  775. package/src/fields/TimePicker/TimePicker.stories.tsx +13 -0
  776. package/src/fields/TimePicker/catalog.tsx +265 -0
  777. package/src/fields/TimePicker/index.native.tsx +229 -0
  778. package/src/fields/TimePicker/index.tsx +6 -261
  779. package/src/fields/TimeRangeScrubber/TimeRangeScrubber.spec.tsx +36 -0
  780. package/src/fields/TimeRangeScrubber/geometry.ts +13 -0
  781. package/src/fields/TimeRangeScrubber/index.tsx +49 -8
  782. package/src/fields/nativeDateTime/OsDateTimeSheet.spec.ts +12 -0
  783. package/src/fields/nativeDateTime/OsDateTimeSheet.tsx +197 -0
  784. package/src/fields/nativeDateTime/osDateTimeIosDisplay.ts +4 -0
  785. package/src/fields/nativeSelect.spec.ts +28 -0
  786. package/src/fields/nativeSelect.ts +13 -0
  787. package/src/index.ts +2 -2
  788. package/src/themedPrimitives.tsx +10 -6
  789. package/types/Button/index.d.ts +3 -2
  790. package/types/Button/index.d.ts.map +1 -1
  791. package/types/Chip/index.d.ts.map +1 -1
  792. package/types/ContextualSaveBar/index.d.ts.map +1 -1
  793. package/types/DescriptionList/index.d.ts.map +1 -1
  794. package/types/ErrorSummary.d.ts.map +1 -1
  795. package/types/FloatingPanel/useFloatingPanel.d.ts +13 -0
  796. package/types/FloatingPanel/useFloatingPanel.d.ts.map +1 -1
  797. package/types/InputParts/index.d.ts.map +1 -1
  798. package/types/fields/Checkbox/Checkbox.d.ts.map +1 -1
  799. package/types/fields/Checkbox/CheckboxGroup.d.ts.map +1 -1
  800. package/types/fields/Checkbox/checkboxGroupContext.d.ts +8 -0
  801. package/types/fields/Checkbox/checkboxGroupContext.d.ts.map +1 -0
  802. package/types/fields/DatePicker/DatetimePicker.catalog.d.ts +35 -0
  803. package/types/fields/DatePicker/DatetimePicker.catalog.d.ts.map +1 -0
  804. package/types/fields/DatePicker/DatetimePicker.d.ts +2 -32
  805. package/types/fields/DatePicker/DatetimePicker.d.ts.map +1 -1
  806. package/types/fields/DatePicker/DatetimePicker.native.d.ts +26 -0
  807. package/types/fields/DatePicker/DatetimePicker.native.d.ts.map +1 -0
  808. package/types/fields/DatePicker/catalog.d.ts +42 -0
  809. package/types/fields/DatePicker/catalog.d.ts.map +1 -0
  810. package/types/fields/DatePicker/index.d.ts +2 -39
  811. package/types/fields/DatePicker/index.d.ts.map +1 -1
  812. package/types/fields/DatePicker/index.native.d.ts +40 -0
  813. package/types/fields/DatePicker/index.native.d.ts.map +1 -0
  814. package/types/fields/DatePicker/parts.d.ts.map +1 -1
  815. package/types/fields/Duration/index.d.ts +2 -0
  816. package/types/fields/Duration/index.d.ts.map +1 -1
  817. package/types/fields/FileUpload/index.d.ts.map +1 -1
  818. package/types/fields/PhoneInput/index.d.ts.map +1 -1
  819. package/types/fields/Rating/index.d.ts.map +1 -1
  820. package/types/fields/SearchInput/index.d.ts.map +1 -1
  821. package/types/fields/Select/index.d.ts +6 -1
  822. package/types/fields/Select/index.d.ts.map +1 -1
  823. package/types/fields/Signature/index.d.ts.map +1 -1
  824. package/types/fields/Slider/index.d.ts.map +1 -1
  825. package/types/fields/Switch/index.d.ts.map +1 -1
  826. package/types/fields/TextArea/index.d.ts.map +1 -1
  827. package/types/fields/TimePicker/catalog.d.ts +41 -0
  828. package/types/fields/TimePicker/catalog.d.ts.map +1 -0
  829. package/types/fields/TimePicker/index.d.ts +2 -38
  830. package/types/fields/TimePicker/index.d.ts.map +1 -1
  831. package/types/fields/TimePicker/index.native.d.ts +31 -0
  832. package/types/fields/TimePicker/index.native.d.ts.map +1 -0
  833. package/types/fields/TimeRangeScrubber/geometry.d.ts +8 -0
  834. package/types/fields/TimeRangeScrubber/geometry.d.ts.map +1 -1
  835. package/types/fields/TimeRangeScrubber/index.d.ts +1 -1
  836. package/types/fields/TimeRangeScrubber/index.d.ts.map +1 -1
  837. package/types/fields/nativeDateTime/OsDateTimeSheet.d.ts +12 -0
  838. package/types/fields/nativeDateTime/OsDateTimeSheet.d.ts.map +1 -0
  839. package/types/fields/nativeDateTime/osDateTimeIosDisplay.d.ts +3 -0
  840. package/types/fields/nativeDateTime/osDateTimeIosDisplay.d.ts.map +1 -0
  841. package/types/fields/nativeSelect.d.ts +12 -0
  842. package/types/fields/nativeSelect.d.ts.map +1 -0
  843. package/types/index.d.ts +2 -2
  844. package/types/index.d.ts.map +1 -1
  845. package/types/themedPrimitives.d.ts.map +1 -1
@@ -0,0 +1,395 @@
1
+ /**
2
+ * CheckboxBox — the painted glyph and the geometry rules around it (MPO-143).
3
+ *
4
+ * Checkbox.spec.tsx already covers the two headline radius helpers through the
5
+ * package barrel. What had no coverage at all is everything else this module
6
+ * exports: the WCAG hit-target constant, the three size/border derivations,
7
+ * the LC-71 "the 44px frame paints nothing" prop bag, the keyboard-modality
8
+ * focus handlers, and the glyph box itself. Those are the parts that regress
9
+ * silently — nothing today would notice if the hit target grew a wash or the
10
+ * glyph started stealing the press.
11
+ */
12
+ import { cleanup } from "@testing-library/react";
13
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
14
+ import { afterEach, describe, expect, it, vi } from "vitest";
15
+ import {
16
+ CHECKBOX_GLYPH_MAX_RADIUS_TOKEN,
17
+ CHECKBOX_TARGET_PX,
18
+ CheckboxGlyphBox,
19
+ checkboxKbFocusHandlers,
20
+ checkboxTargetFrameProps,
21
+ clampCheckboxGlyphRadius,
22
+ getCheckboxBoxBorderWidth,
23
+ getCheckboxGlyphSize,
24
+ getCheckboxIconSize,
25
+ isCircularCheckboxRadius,
26
+ } from "./CheckboxBox";
27
+
28
+ afterEach(cleanup);
29
+
30
+ /**
31
+ * Modality is the ONE thing here that has to be stood in for. The real tracker
32
+ * (`@multiplatform.one/theme/keyboardFocusRing`) installs global document
33
+ * listeners lazily and never flips under this test environment - a dispatched
34
+ * keydown, on the document or on a real element, leaves `wasKeyboardFocus()`
35
+ * false - so driving it would assert the environment, not the component.
36
+ * Everything else in the module stays real: only this one function is
37
+ * replaced, over `importActual`.
38
+ */
39
+ let keyboardModality = false;
40
+ vi.mock("@multiplatform.one/theme", async (importOriginal) => {
41
+ const actual = await importOriginal<typeof import("@multiplatform.one/theme")>();
42
+ return { ...actual, wasKeyboardFocus: () => keyboardModality };
43
+ });
44
+
45
+ function pressKey() {
46
+ keyboardModality = true;
47
+ }
48
+ function pressPointer() {
49
+ keyboardModality = false;
50
+ }
51
+
52
+ afterEach(() => {
53
+ keyboardModality = false;
54
+ });
55
+
56
+ function glyph(container: HTMLElement): HTMLElement {
57
+ const node = container.querySelector("[data-checkbox-box='true']");
58
+ if (!node) throw new Error("CheckboxGlyphBox did not render");
59
+ return node as HTMLElement;
60
+ }
61
+
62
+ /** Tamagui paints through atomic classes, so read both channels. */
63
+ function cssOf(node: HTMLElement, prop: string): string {
64
+ const inline = node.style.getPropertyValue(prop);
65
+ if (inline) return inline;
66
+ return getComputedStyle(node).getPropertyValue(prop) || "";
67
+ }
68
+
69
+ function classesOf(node: HTMLElement): string {
70
+ return Array.from(node.classList).join(" ");
71
+ }
72
+
73
+ describe("CheckboxBox — the target is 44px and the glyph is smaller", () => {
74
+ it("pins the WCAG 2.5.5 pressable floor at 44px", () => {
75
+ expect(CHECKBOX_TARGET_PX).toBe(44);
76
+ });
77
+
78
+ it("derives the glyph at 45% of the size token, rounded", () => {
79
+ // $4 resolves to 44 on the house size scale in this config, so the glyph
80
+ // is derived, never hardcoded: whatever the token resolves to, the glyph
81
+ // is round(0.45 x) and strictly smaller than the 44px target.
82
+ for (const token of ["$2", "$3", "$4", "$5"] as const) {
83
+ const size = getCheckboxGlyphSize(token);
84
+ expect(Number.isInteger(size)).toBe(true);
85
+ expect(size).toBeGreaterThan(0);
86
+ expect(size).toBeLessThan(CHECKBOX_TARGET_PX);
87
+ }
88
+ });
89
+
90
+ it("grows the glyph monotonically with the size token", () => {
91
+ const small = getCheckboxGlyphSize("$2");
92
+ const large = getCheckboxGlyphSize("$5");
93
+ expect(large).toBeGreaterThan(small);
94
+ });
95
+ });
96
+
97
+ describe("CheckboxBox — the empty box's edge is the shape (DF-06)", () => {
98
+ it("floors the border at 2px whatever the knob says", () => {
99
+ expect(getCheckboxBoxBorderWidth(1)).toBe(2);
100
+ expect(getCheckboxBoxBorderWidth(0)).toBe(2);
101
+ expect(getCheckboxBoxBorderWidth(undefined)).toBe(2);
102
+ expect(getCheckboxBoxBorderWidth(Number.NaN)).toBe(2);
103
+ });
104
+
105
+ it("honours a thicker knob instead of clamping it down", () => {
106
+ expect(getCheckboxBoxBorderWidth(3)).toBe(3);
107
+ expect(getCheckboxBoxBorderWidth(6)).toBe(6);
108
+ });
109
+
110
+ it("keeps the check mark at 70% of the glyph but never under 10px", () => {
111
+ expect(getCheckboxIconSize(20)).toBe(14);
112
+ expect(getCheckboxIconSize(30)).toBe(21);
113
+ // The floor bites on the small end: 0.7 x 10 = 7 would be unreadable.
114
+ expect(getCheckboxIconSize(10)).toBe(10);
115
+ expect(getCheckboxIconSize(4)).toBe(10);
116
+ });
117
+ });
118
+
119
+ describe("CheckboxBox — the radius law (DG-RAD-05 / R2)", () => {
120
+ it("caps every token stop at $2, which is the documented maximum", () => {
121
+ expect(CHECKBOX_GLYPH_MAX_RADIUS_TOKEN).toBe(2);
122
+ expect(clampCheckboxGlyphRadius("$1")).toBe("$1");
123
+ expect(clampCheckboxGlyphRadius("$2")).toBe("$2");
124
+ for (const token of ["$3", "$4", "$6", "$8", "$10", "$12"]) {
125
+ expect(clampCheckboxGlyphRadius(token), token).toBe("$2");
126
+ }
127
+ });
128
+
129
+ it("goes hard-angled for pointy and for $0, and pointy wins over any stop", () => {
130
+ expect(clampCheckboxGlyphRadius("$0")).toBe(0);
131
+ expect(clampCheckboxGlyphRadius("$12", { pointy: true })).toBe(0);
132
+ expect(clampCheckboxGlyphRadius("$1", { pointy: true })).toBe(0);
133
+ expect(clampCheckboxGlyphRadius(undefined, { pointy: true })).toBe(0);
134
+ // pointy:false is not pointy — it must not swallow the stop.
135
+ expect(clampCheckboxGlyphRadius("$1", { pointy: false })).toBe("$1");
136
+ });
137
+
138
+ it("passes a non-token value through untouched", () => {
139
+ expect(clampCheckboxGlyphRadius("4px")).toBe("4px");
140
+ });
141
+
142
+ it("RULE GAP: an absent token falls back to $4, above the documented $2 cap", () => {
143
+ // This is the module's own shared clamp fallback (clampRadius(..., "$4")),
144
+ // and it contradicts the comment three lines above it in CheckboxBox.tsx:
145
+ // "$4 (9) already paints as a circle on that box". Asserted as OBSERVED
146
+ // behaviour, deliberately not "fixed" here — which of the two is right is
147
+ // Clay's call, and it is recorded on MPO-143 rather than guessed at.
148
+ expect(clampCheckboxGlyphRadius(undefined)).toBe("$4");
149
+ // The live caller always passes a resolved knob token, so the gap is in
150
+ // the exported contract, not in what the Checkbox renders today.
151
+ });
152
+
153
+ it("calls a radius circular exactly at half the side, not before", () => {
154
+ expect(isCircularCheckboxRadius(9, 20)).toBe(false);
155
+ expect(isCircularCheckboxRadius(10, 20)).toBe(true);
156
+ expect(isCircularCheckboxRadius(11, 20)).toBe(true);
157
+ expect(isCircularCheckboxRadius(0, 20)).toBe(false);
158
+ });
159
+
160
+ it("refuses to answer for a zero or negative side", () => {
161
+ expect(isCircularCheckboxRadius(10, 0)).toBe(false);
162
+ expect(isCircularCheckboxRadius(10, -20)).toBe(false);
163
+ });
164
+
165
+ it("keeps the capped stop non-circular on a real glyph, which is the point of the cap", () => {
166
+ // $2 = 5px on the house radius scale, glyph ~20px: 5 < 10, so square.
167
+ expect(isCircularCheckboxRadius(5, 20)).toBe(false);
168
+ // $4 = 9px would not be, which is why the cap exists.
169
+ expect(isCircularCheckboxRadius(9, 18)).toBe(true);
170
+ });
171
+ });
172
+
173
+ describe("CheckboxBox — LC-71: the 44px frame paints nothing", () => {
174
+ it("is a 44px square with no border, no radius and no fill", () => {
175
+ expect(checkboxTargetFrameProps.width).toBe(CHECKBOX_TARGET_PX);
176
+ expect(checkboxTargetFrameProps.height).toBe(CHECKBOX_TARGET_PX);
177
+ expect(checkboxTargetFrameProps.minWidth).toBe(CHECKBOX_TARGET_PX);
178
+ expect(checkboxTargetFrameProps.minHeight).toBe(CHECKBOX_TARGET_PX);
179
+ expect(checkboxTargetFrameProps.borderWidth).toBe(0);
180
+ expect(checkboxTargetFrameProps.borderRadius).toBe(0);
181
+ expect(checkboxTargetFrameProps.padding).toBe(0);
182
+ expect(checkboxTargetFrameProps.backgroundColor).toBe("transparent");
183
+ expect(checkboxTargetFrameProps.outlineWidth).toBe(0);
184
+ });
185
+
186
+ it("keeps every interaction channel transparent, so no wash can wrap the label", () => {
187
+ for (const state of [
188
+ "hoverStyle",
189
+ "pressStyle",
190
+ "focusStyle",
191
+ "focusVisibleStyle",
192
+ "activeStyle",
193
+ ] as const) {
194
+ const bag = checkboxTargetFrameProps[state] as Record<string, unknown>;
195
+ expect(bag.backgroundColor, state).toBe("transparent");
196
+ expect(bag.borderColor, state).toBe("transparent");
197
+ }
198
+ expect(checkboxTargetFrameProps.focusStyle.outlineWidth).toBe(0);
199
+ expect(checkboxTargetFrameProps.focusVisibleStyle.outlineWidth).toBe(0);
200
+ });
201
+ });
202
+
203
+ describe("CheckboxBox — keyboard-modality focus handlers", () => {
204
+ it("raises kbFocus on a focus that followed a key press", () => {
205
+ const setKbFocus = vi.fn();
206
+ const handlers = checkboxKbFocusHandlers(setKbFocus, vi.fn());
207
+ pressKey();
208
+ handlers.onFocus({});
209
+ expect(setKbFocus).toHaveBeenCalledWith(true);
210
+ });
211
+
212
+ it("stays quiet on a focus that followed a pointer press", () => {
213
+ const setKbFocus = vi.fn();
214
+ const handlers = checkboxKbFocusHandlers(setKbFocus, vi.fn());
215
+ pressPointer();
216
+ handlers.onFocus({});
217
+ expect(setKbFocus).not.toHaveBeenCalled();
218
+ });
219
+
220
+ it("always clears kbFocus on blur, whatever the modality was", () => {
221
+ const setKbFocus = vi.fn();
222
+ const handlers = checkboxKbFocusHandlers(setKbFocus, vi.fn());
223
+ pressPointer();
224
+ handlers.onBlur({});
225
+ expect(setKbFocus).toHaveBeenCalledWith(false);
226
+ });
227
+
228
+ it("tracks hover in and out", () => {
229
+ const setHovered = vi.fn();
230
+ const handlers = checkboxKbFocusHandlers(vi.fn(), setHovered);
231
+ handlers.onHoverIn({});
232
+ expect(setHovered).toHaveBeenLastCalledWith(true);
233
+ handlers.onHoverOut({});
234
+ expect(setHovered).toHaveBeenLastCalledWith(false);
235
+ });
236
+
237
+ it("forwards the caller's own handlers instead of swallowing them", () => {
238
+ const rest = {
239
+ onFocus: vi.fn(),
240
+ onBlur: vi.fn(),
241
+ onHoverIn: vi.fn(),
242
+ onHoverOut: vi.fn(),
243
+ };
244
+ const handlers = checkboxKbFocusHandlers(vi.fn(), vi.fn(), rest);
245
+ const event = { id: 1 };
246
+ handlers.onFocus(event);
247
+ handlers.onBlur(event);
248
+ handlers.onHoverIn(event);
249
+ handlers.onHoverOut(event);
250
+ expect(rest.onFocus).toHaveBeenCalledWith(event);
251
+ expect(rest.onBlur).toHaveBeenCalledWith(event);
252
+ expect(rest.onHoverIn).toHaveBeenCalledWith(event);
253
+ expect(rest.onHoverOut).toHaveBeenCalledWith(event);
254
+ });
255
+
256
+ it("survives a caller that passes no handlers at all", () => {
257
+ const handlers = checkboxKbFocusHandlers(vi.fn(), vi.fn());
258
+ expect(() => {
259
+ handlers.onFocus({});
260
+ handlers.onBlur({});
261
+ handlers.onHoverIn({});
262
+ handlers.onHoverOut({});
263
+ }).not.toThrow();
264
+ });
265
+ });
266
+
267
+ describe("CheckboxGlyphBox — the painted box", () => {
268
+ it("marks itself so the boards and the other specs can find it", () => {
269
+ const { container } = renderWithProviders(
270
+ <CheckboxGlyphBox
271
+ glyphSize={20}
272
+ isMarked={false}
273
+ kbFocus={false}
274
+ borderWidth={2}
275
+ borderRadius={5}
276
+ />,
277
+ );
278
+ expect(glyph(container)).toBeTruthy();
279
+ });
280
+
281
+ it("never takes the press, so the 44px frame keeps the responder", () => {
282
+ const { container } = renderWithProviders(
283
+ <CheckboxGlyphBox
284
+ glyphSize={20}
285
+ isMarked={false}
286
+ kbFocus={false}
287
+ borderWidth={2}
288
+ borderRadius={5}
289
+ />,
290
+ );
291
+ expect(cssOf(glyph(container), "pointer-events")).toBe("none");
292
+ });
293
+
294
+ it("publishes the focus-ring flag only while kbFocus is true", () => {
295
+ const off = renderWithProviders(
296
+ <CheckboxGlyphBox
297
+ glyphSize={20}
298
+ isMarked={false}
299
+ kbFocus={false}
300
+ borderWidth={2}
301
+ borderRadius={5}
302
+ />,
303
+ );
304
+ expect(glyph(off.container).getAttribute("data-focus-ring")).toBeNull();
305
+ cleanup();
306
+ const on = renderWithProviders(
307
+ <CheckboxGlyphBox glyphSize={20} isMarked={false} kbFocus borderWidth={2} borderRadius={5} />,
308
+ );
309
+ expect(glyph(on.container).getAttribute("data-focus-ring")).toBe("true");
310
+ });
311
+
312
+ it("is an empty box when idle and drops that transparency when marked", () => {
313
+ const unmarked = renderWithProviders(
314
+ <CheckboxGlyphBox
315
+ glyphSize={20}
316
+ isMarked={false}
317
+ kbFocus={false}
318
+ borderWidth={2}
319
+ borderRadius={5}
320
+ />,
321
+ );
322
+ expect(classesOf(glyph(unmarked.container))).toContain("_bg-transparent");
323
+ cleanup();
324
+ const marked = renderWithProviders(
325
+ <CheckboxGlyphBox glyphSize={20} isMarked kbFocus={false} borderWidth={2} borderRadius={5} />,
326
+ );
327
+ // Checked paints the MARK channel (formSelectedColors.mark), so the
328
+ // transparent fill is gone. The mark token is an accent value the test
329
+ // config does not resolve, which is exactly why this asserts the absence
330
+ // of the idle fill rather than a colour literal.
331
+ expect(classesOf(glyph(marked.container))).not.toContain("_bg-transparent");
332
+ });
333
+
334
+ it("takes the checked border off the boundary ramp entirely, so it is a fill and not a second outline", () => {
335
+ const { container } = renderWithProviders(
336
+ <CheckboxGlyphBox glyphSize={20} isMarked kbFocus={false} borderWidth={2} borderRadius={5} />,
337
+ );
338
+ const painted = classesOf(glyph(container));
339
+ expect(painted).not.toContain("_btc-color10");
340
+ expect(painted).not.toContain("_btc-color11");
341
+ });
342
+
343
+ it("moves the idle border from the boundary tier to the press tier on hover", () => {
344
+ // formControlColors.boundary = $color10 (DF-06: the edge that carries the
345
+ // shape, >=3:1), thumb.press = $color11.
346
+ const idle = renderWithProviders(
347
+ <CheckboxGlyphBox
348
+ glyphSize={20}
349
+ isMarked={false}
350
+ kbFocus={false}
351
+ borderWidth={2}
352
+ borderRadius={5}
353
+ />,
354
+ );
355
+ expect(classesOf(glyph(idle.container))).toContain("_btc-color10");
356
+ cleanup();
357
+ const hovered = renderWithProviders(
358
+ <CheckboxGlyphBox
359
+ glyphSize={20}
360
+ isMarked={false}
361
+ kbFocus={false}
362
+ hovered
363
+ borderWidth={2}
364
+ borderRadius={5}
365
+ />,
366
+ );
367
+ expect(classesOf(glyph(hovered.container))).toContain("_btc-color11");
368
+ });
369
+
370
+ it("takes its geometry from the props rather than a hardcoded box", () => {
371
+ const { container } = renderWithProviders(
372
+ <CheckboxGlyphBox
373
+ glyphSize={26}
374
+ isMarked={false}
375
+ kbFocus={false}
376
+ borderWidth={3}
377
+ borderRadius={7}
378
+ />,
379
+ );
380
+ const node = glyph(container);
381
+ expect(cssOf(node, "width")).toBe("26px");
382
+ expect(cssOf(node, "height")).toBe("26px");
383
+ expect(cssOf(node, "border-top-width")).toBe("3px");
384
+ expect(classesOf(node)).toContain("_btlr-7px");
385
+ });
386
+
387
+ it("renders the check mark it is handed", () => {
388
+ const { container } = renderWithProviders(
389
+ <CheckboxGlyphBox glyphSize={20} isMarked kbFocus={false} borderWidth={2} borderRadius={5}>
390
+ <span data-mark>x</span>
391
+ </CheckboxGlyphBox>,
392
+ );
393
+ expect(container.querySelector("[data-mark]")).toBeTruthy();
394
+ });
395
+ });
@@ -0,0 +1,197 @@
1
+ /**
2
+ * CheckboxCard — the SELECTION-CARD anatomy (LC-22) and its two derivations
3
+ * (MPO-143).
4
+ *
5
+ * These five parts are shared by `Checkboxes.Card`, `CheckboxGroup card` and
6
+ * `RadioGroup card`, so a change here moves three surfaces at once and nothing
7
+ * checked it. The two rules worth pinning are LC-71's "selected = fill, not an
8
+ * extra border" and T-HELPER's "the description is one step under the field
9
+ * size" — both are one-line edits away from silently regressing.
10
+ */
11
+ import { cleanup } from "@testing-library/react";
12
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
13
+ import { afterEach, describe, expect, it } from "vitest";
14
+ import {
15
+ CheckboxCardContent,
16
+ CheckboxCardDescription,
17
+ CheckboxCardFrame,
18
+ CheckboxCardLabel,
19
+ getCardDescriptionSize,
20
+ getCheckboxCardLayout,
21
+ } from "./CheckboxCard";
22
+
23
+ afterEach(cleanup);
24
+
25
+ /**
26
+ * The styled parts paint through Tamagui atomic classes, so the class list is
27
+ * the honest read; `getComputedStyle` only resolves the subset whose CSS this
28
+ * environment injects.
29
+ */
30
+ function classesOf(node: Element | null): string {
31
+ if (!node) throw new Error("expected a rendered node");
32
+ return Array.from(node.classList).join(" ");
33
+ }
34
+
35
+ function painted(container: HTMLElement, marker: string): string {
36
+ return classesOf(container.querySelector(`[class*='${marker}']`));
37
+ }
38
+
39
+ describe("getCardDescriptionSize — T-HELPER is one step under the field", () => {
40
+ it("maps each field size onto its helper tier", () => {
41
+ expect(getCardDescriptionSize("$1")).toBe("$1");
42
+ expect(getCardDescriptionSize("$2")).toBe("$1");
43
+ expect(getCardDescriptionSize("$3")).toBe("$2");
44
+ expect(getCardDescriptionSize("$4")).toBe("$3");
45
+ expect(getCardDescriptionSize("$5")).toBe("$4");
46
+ expect(getCardDescriptionSize("$6")).toBe("$5");
47
+ });
48
+
49
+ it("treats $true as the default field size, not as an unknown", () => {
50
+ expect(getCardDescriptionSize("$true" as never)).toBe("$3");
51
+ expect(getCardDescriptionSize("$true" as never)).toBe(getCardDescriptionSize("$4"));
52
+ });
53
+
54
+ it("falls back to $2 for no size and for a size off the ladder", () => {
55
+ expect(getCardDescriptionSize(undefined)).toBe("$2");
56
+ expect(getCardDescriptionSize("$9" as never)).toBe("$2");
57
+ });
58
+
59
+ it("never returns a helper size at or above its own field size", () => {
60
+ for (const [field, helper] of [
61
+ ["$3", "$2"],
62
+ ["$4", "$3"],
63
+ ["$5", "$4"],
64
+ ["$6", "$5"],
65
+ ] as const) {
66
+ expect(getCardDescriptionSize(field), field).toBe(helper);
67
+ expect(Number(String(helper).slice(1))).toBeLessThan(Number(field.slice(1)));
68
+ }
69
+ });
70
+ });
71
+
72
+ describe("getCheckboxCardLayout — compact metrics off the space knob", () => {
73
+ it("gives each space stop its own padding and gap", () => {
74
+ expect(getCheckboxCardLayout("none")).toEqual({
75
+ paddingVertical: "$2.5",
76
+ paddingHorizontal: "$3",
77
+ gap: "$2.5",
78
+ });
79
+ expect(getCheckboxCardLayout("large")).toEqual({
80
+ paddingVertical: "$3.5",
81
+ paddingHorizontal: "$4",
82
+ gap: "$3.5",
83
+ });
84
+ });
85
+
86
+ it("makes small and medium deliberately identical", () => {
87
+ expect(getCheckboxCardLayout("small")).toEqual(getCheckboxCardLayout("medium"));
88
+ });
89
+
90
+ it("falls back to medium for an unknown stop rather than throwing", () => {
91
+ expect(getCheckboxCardLayout("enormous")).toEqual(getCheckboxCardLayout("medium"));
92
+ expect(getCheckboxCardLayout("")).toEqual(getCheckboxCardLayout("medium"));
93
+ });
94
+
95
+ it("grows monotonically from none to large", () => {
96
+ const stops = ["none", "small", "large"].map((s) => getCheckboxCardLayout(s));
97
+ const num = (token: string) => Number(token.replace("$", ""));
98
+ expect(num(stops[0].paddingVertical)).toBeLessThanOrEqual(num(stops[1].paddingVertical));
99
+ expect(num(stops[1].paddingVertical)).toBeLessThan(num(stops[2].paddingVertical));
100
+ });
101
+ });
102
+
103
+ describe("CheckboxCardFrame — control leading, whole card interactive", () => {
104
+ it("lays the control out in a row, top-aligned with the first label line", () => {
105
+ const { container } = renderWithProviders(<CheckboxCardFrame />);
106
+ const card = painted(container, "_fd-row");
107
+ expect(card).toContain("_fd-row");
108
+ expect(card).toContain("_ai-flex-start");
109
+ });
110
+
111
+ it("reads as pressable across the whole card", () => {
112
+ const { container } = renderWithProviders(<CheckboxCardFrame />);
113
+ expect(painted(container, "_fd-row")).toContain("_cur-pointer");
114
+ });
115
+
116
+ it("carries exactly one border at rest, on the $color6 seam", () => {
117
+ const { container } = renderWithProviders(<CheckboxCardFrame />);
118
+ const card = painted(container, "_fd-row");
119
+ expect(card).toContain("_btw-1px");
120
+ expect(card).toContain("_btc-color6");
121
+ });
122
+
123
+ it("moves the border one step up the ramp on hover, and only on hover", () => {
124
+ const { container } = renderWithProviders(<CheckboxCardFrame />);
125
+ const card = painted(container, "_fd-row");
126
+ expect(card).toContain("_btc-0hover-color7");
127
+ expect(card).toContain("_btc-color6");
128
+ });
129
+
130
+ it("LC-71: active changes the FILL and leaves the border exactly where it was", () => {
131
+ const rest = renderWithProviders(<CheckboxCardFrame />);
132
+ const restCard = painted(rest.container, "_fd-row");
133
+ expect(restCard).toContain("_bg-color2");
134
+ cleanup();
135
+ const active = renderWithProviders(<CheckboxCardFrame active />);
136
+ const activeCard = painted(active.container, "_fd-row");
137
+ expect(activeCard).toContain("_bg-color3");
138
+ expect(activeCard).not.toContain("_bg-color2");
139
+ // the border is untouched: same width, same colour, no second outline
140
+ expect(activeCard).toContain("_btw-1px");
141
+ expect(activeCard).toContain("_btc-color6");
142
+ });
143
+
144
+ it("renders the control and the text column it is given", () => {
145
+ const { container } = renderWithProviders(
146
+ <CheckboxCardFrame>
147
+ <span data-control />
148
+ <CheckboxCardContent>
149
+ <CheckboxCardLabel>Ship it</CheckboxCardLabel>
150
+ <CheckboxCardDescription>Sends the release out</CheckboxCardDescription>
151
+ </CheckboxCardContent>
152
+ </CheckboxCardFrame>,
153
+ );
154
+ expect(container.querySelector("[data-control]")).toBeTruthy();
155
+ expect(container.textContent).toContain("Ship it");
156
+ expect(container.textContent).toContain("Sends the release out");
157
+ });
158
+ });
159
+
160
+ describe("CheckboxCardContent — the text column", () => {
161
+ it("stacks the label over the description and can shrink under a long word", () => {
162
+ const { container } = renderWithProviders(<CheckboxCardContent />);
163
+ const column = painted(container, "_miw-0px");
164
+ expect(column).toContain("_fd-column");
165
+ expect(column).toContain("_miw-0px");
166
+ expect(column).toContain("_fg-1");
167
+ });
168
+ });
169
+
170
+ describe("CheckboxCardLabel and CheckboxCardDescription", () => {
171
+ it("makes the label the bold, full-contrast first line", () => {
172
+ const { container } = renderWithProviders(<CheckboxCardLabel>Label</CheckboxCardLabel>);
173
+ const label = classesOf(container.querySelector("p"));
174
+ expect(label).toContain("_fow-600");
175
+ expect(label).toContain("_lh-20px");
176
+ expect(label).toContain("_col-color12");
177
+ });
178
+
179
+ it("paints the description one ramp step down, in the muted tier", () => {
180
+ const label = renderWithProviders(<CheckboxCardLabel>Label</CheckboxCardLabel>);
181
+ expect(classesOf(label.container.querySelector("p"))).toContain("_col-color12");
182
+ cleanup();
183
+ const description = renderWithProviders(
184
+ <CheckboxCardDescription>Helper</CheckboxCardDescription>,
185
+ );
186
+ const muted = classesOf(description.container.querySelector("p"));
187
+ expect(muted).toContain("_col-color11");
188
+ expect(muted).not.toContain("_col-color12");
189
+ });
190
+
191
+ it("leaves the description at the normal weight, so only the label is bold", () => {
192
+ const { container } = renderWithProviders(
193
+ <CheckboxCardDescription>Helper</CheckboxCardDescription>,
194
+ );
195
+ expect(classesOf(container.querySelector("p"))).not.toContain("_fow-600");
196
+ });
197
+ });