@multiplatform.one/forms 6.7.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1100) hide show
  1. package/dist/cjs/AdaptivePopup/index.cjs +179 -46
  2. package/dist/cjs/AdaptivePopup/index.native.js +184 -48
  3. package/dist/cjs/AdaptivePopup/index.native.js.map +1 -1
  4. package/dist/cjs/Button/index.cjs +238 -63
  5. package/dist/cjs/Button/index.native.js +291 -83
  6. package/dist/cjs/Button/index.native.js.map +1 -1
  7. package/dist/cjs/Chip/index.cjs +291 -74
  8. package/dist/cjs/Chip/index.native.js +306 -73
  9. package/dist/cjs/Chip/index.native.js.map +1 -1
  10. package/dist/cjs/ControlGroup/index.cjs +144 -67
  11. package/dist/cjs/ControlGroup/index.native.js +141 -60
  12. package/dist/cjs/ControlGroup/index.native.js.map +1 -1
  13. package/dist/cjs/FieldDisplay/index.cjs +437 -91
  14. package/dist/cjs/FieldDisplay/index.native.js +455 -95
  15. package/dist/cjs/FieldDisplay/index.native.js.map +1 -1
  16. package/dist/cjs/FieldGroup.cjs +43 -40
  17. package/dist/cjs/FieldGroup.native.js +43 -40
  18. package/dist/cjs/FieldGroup.native.js.map +1 -1
  19. package/dist/cjs/FloatingPanel/index.cjs +79 -9
  20. package/dist/cjs/FloatingPanel/index.native.js +9 -7
  21. package/dist/cjs/FloatingPanel/index.native.js.map +1 -1
  22. package/dist/cjs/FloatingPanel/useFloatingPanel.cjs +21 -5
  23. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js +21 -5
  24. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  25. package/dist/cjs/Form/index.cjs +49 -8
  26. package/dist/cjs/Form/index.native.js +50 -8
  27. package/dist/cjs/Form/index.native.js.map +1 -1
  28. package/dist/cjs/FormGrid.cjs +35 -6
  29. package/dist/cjs/FormGrid.native.js +35 -6
  30. package/dist/cjs/FormGrid.native.js.map +1 -1
  31. package/dist/cjs/FormSection.cjs +13 -6
  32. package/dist/cjs/FormSection.native.js +13 -6
  33. package/dist/cjs/FormSection.native.js.map +1 -1
  34. package/dist/cjs/InputParts/index.cjs +305 -77
  35. package/dist/cjs/InputParts/index.native.js +332 -84
  36. package/dist/cjs/InputParts/index.native.js.map +1 -1
  37. package/dist/cjs/Label/index.cjs +81 -4
  38. package/dist/cjs/Label/index.native.js +85 -4
  39. package/dist/cjs/Label/index.native.js.map +1 -1
  40. package/dist/cjs/Skeleton/index.cjs +14 -11
  41. package/dist/cjs/Skeleton/index.native.js +15 -12
  42. package/dist/cjs/Skeleton/index.native.js.map +1 -1
  43. package/dist/cjs/Spinner/SpinnerGlyph.cjs +75 -0
  44. package/dist/cjs/Spinner/SpinnerGlyph.native.js +81 -0
  45. package/dist/cjs/Spinner/SpinnerGlyph.native.js.map +1 -0
  46. package/dist/cjs/Spinner/index.cjs +26 -18
  47. package/dist/cjs/Spinner/index.native.js +53 -31
  48. package/dist/cjs/Spinner/index.native.js.map +1 -1
  49. package/dist/cjs/Spinner/spinnerSize.cjs +38 -0
  50. package/dist/cjs/Spinner/spinnerSize.native.js +41 -0
  51. package/dist/cjs/Spinner/spinnerSize.native.js.map +1 -0
  52. package/dist/cjs/fieldLayout.native.js.map +1 -1
  53. package/dist/cjs/fields/Barcode/BarcodeScanner.cjs +26 -8
  54. package/dist/cjs/fields/Barcode/BarcodeScanner.native.js +9 -3
  55. package/dist/cjs/fields/Barcode/BarcodeScanner.native.js.map +1 -1
  56. package/dist/cjs/fields/Barcode/index.cjs +90 -62
  57. package/dist/cjs/fields/Barcode/index.native.js +97 -62
  58. package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
  59. package/dist/cjs/fields/Barcode/scannerTypes.cjs +100 -1
  60. package/dist/cjs/fields/Barcode/scannerTypes.native.js +137 -0
  61. package/dist/cjs/fields/Barcode/scannerTypes.native.js.map +1 -1
  62. package/dist/cjs/fields/Checkbox/Checkbox.cjs +35 -88
  63. package/dist/cjs/fields/Checkbox/Checkbox.native.js +36 -88
  64. package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -1
  65. package/dist/cjs/fields/Checkbox/CheckboxBox.cjs +134 -0
  66. package/dist/cjs/fields/Checkbox/CheckboxBox.native.js +145 -0
  67. package/dist/cjs/fields/Checkbox/CheckboxBox.native.js.map +1 -0
  68. package/dist/cjs/fields/Checkbox/CheckboxCard.cjs +2 -2
  69. package/dist/cjs/fields/Checkbox/CheckboxCard.native.js +2 -2
  70. package/dist/cjs/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  71. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.cjs +16 -36
  72. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js +16 -36
  73. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  74. package/dist/cjs/fields/Checkbox/CheckboxGroup.cjs +3 -2
  75. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +3 -2
  76. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  77. package/dist/cjs/fields/Checkbox/index.cjs +50 -77
  78. package/dist/cjs/fields/Checkbox/index.native.js +52 -77
  79. package/dist/cjs/fields/Checkbox/index.native.js.map +1 -1
  80. package/dist/cjs/fields/ColorPicker/gradients.cjs +9 -4
  81. package/dist/cjs/fields/ColorPicker/gradients.native.js +37 -18
  82. package/dist/cjs/fields/ColorPicker/gradients.native.js.map +1 -1
  83. package/dist/cjs/fields/ColorPicker/index.cjs +77 -50
  84. package/dist/cjs/fields/ColorPicker/index.native.js +104 -55
  85. package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -1
  86. package/dist/cjs/fields/ColorPicker/parts.cjs +425 -234
  87. package/dist/cjs/fields/ColorPicker/parts.native.js +447 -238
  88. package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -1
  89. package/dist/cjs/fields/Combobox/index.cjs +175 -45
  90. package/dist/cjs/fields/Combobox/index.native.js +180 -45
  91. package/dist/cjs/fields/Combobox/index.native.js.map +1 -1
  92. package/dist/cjs/fields/DatePicker/Calendar.cjs +67 -170
  93. package/dist/cjs/fields/DatePicker/Calendar.native.js +71 -194
  94. package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -1
  95. package/dist/cjs/fields/DatePicker/DateRangePicker.cjs +48 -119
  96. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +53 -123
  97. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  98. package/dist/cjs/fields/DatePicker/DatetimePicker.cjs +67 -181
  99. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +73 -195
  100. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js.map +1 -1
  101. package/dist/cjs/fields/DatePicker/MonthPicker.cjs +59 -62
  102. package/dist/cjs/fields/DatePicker/MonthPicker.native.js +66 -64
  103. package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -1
  104. package/dist/cjs/fields/DatePicker/MultiDatePicker.cjs +11 -77
  105. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +20 -83
  106. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  107. package/dist/cjs/fields/DatePicker/index.cjs +11 -79
  108. package/dist/cjs/fields/DatePicker/index.native.js +22 -83
  109. package/dist/cjs/fields/DatePicker/index.native.js.map +1 -1
  110. package/dist/cjs/fields/DatePicker/parts.cjs +547 -181
  111. package/dist/cjs/fields/DatePicker/parts.native.js +575 -178
  112. package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -1
  113. package/dist/cjs/fields/Duration/index.cjs +314 -159
  114. package/dist/cjs/fields/Duration/index.native.js +345 -182
  115. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  116. package/dist/cjs/fields/FileUpload/index.cjs +146 -27
  117. package/dist/cjs/fields/FileUpload/index.native.js +161 -32
  118. package/dist/cjs/fields/FileUpload/index.native.js.map +1 -1
  119. package/dist/cjs/fields/Geolocation/GeolocationMap.cjs +115 -20
  120. package/dist/cjs/fields/Geolocation/GeolocationMap.native.js +11 -11
  121. package/dist/cjs/fields/Geolocation/GeolocationMap.native.js.map +1 -1
  122. package/dist/cjs/fields/Geolocation/index.cjs +125 -76
  123. package/dist/cjs/fields/Geolocation/index.native.js +134 -91
  124. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
  125. package/dist/cjs/fields/Geolocation/mapMath.cjs +105 -0
  126. package/dist/cjs/fields/Geolocation/mapMath.native.js +108 -0
  127. package/dist/cjs/fields/Geolocation/mapMath.native.js.map +1 -0
  128. package/dist/cjs/fields/ImageField/index.cjs +306 -168
  129. package/dist/cjs/fields/ImageField/index.native.js +323 -181
  130. package/dist/cjs/fields/ImageField/index.native.js.map +1 -1
  131. package/dist/cjs/fields/Input/index.cjs +133 -121
  132. package/dist/cjs/fields/Input/index.native.js +133 -121
  133. package/dist/cjs/fields/Input/index.native.js.map +1 -1
  134. package/dist/cjs/fields/MentionInput/index.cjs +142 -27
  135. package/dist/cjs/fields/MentionInput/index.native.js +164 -39
  136. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  137. package/dist/cjs/fields/OTPInput/index.cjs +188 -58
  138. package/dist/cjs/fields/OTPInput/index.native.js +197 -53
  139. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  140. package/dist/cjs/fields/OTPInput/otpCellCss.cjs +84 -0
  141. package/dist/cjs/fields/OTPInput/otpCellCss.native.js +87 -0
  142. package/dist/cjs/fields/OTPInput/otpCellCss.native.js.map +1 -0
  143. package/dist/cjs/fields/PhoneInput/index.cjs +200 -105
  144. package/dist/cjs/fields/PhoneInput/index.native.js +241 -143
  145. package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -1
  146. package/dist/cjs/fields/PhoneInput/phone.cjs +234 -0
  147. package/dist/cjs/fields/PhoneInput/phone.native.js +301 -0
  148. package/dist/cjs/fields/PhoneInput/phone.native.js.map +1 -0
  149. package/dist/cjs/fields/Progress/index.cjs +169 -52
  150. package/dist/cjs/fields/Progress/index.native.js +170 -50
  151. package/dist/cjs/fields/Progress/index.native.js.map +1 -1
  152. package/dist/cjs/fields/RadioGroup/index.cjs +138 -74
  153. package/dist/cjs/fields/RadioGroup/index.native.js +151 -82
  154. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  155. package/dist/cjs/fields/Rating/StarInk.cjs +41 -0
  156. package/dist/cjs/fields/Rating/StarInk.native.js +77 -0
  157. package/dist/cjs/fields/Rating/StarInk.native.js.map +1 -0
  158. package/dist/cjs/fields/Rating/index.cjs +154 -53
  159. package/dist/cjs/fields/Rating/index.native.js +162 -56
  160. package/dist/cjs/fields/Rating/index.native.js.map +1 -1
  161. package/dist/cjs/fields/Rating/types.cjs +18 -0
  162. package/dist/cjs/fields/Rating/types.native.js +21 -0
  163. package/dist/cjs/fields/Rating/types.native.js.map +1 -0
  164. package/dist/cjs/fields/SearchInput/index.cjs +192 -54
  165. package/dist/cjs/fields/SearchInput/index.native.js +195 -54
  166. package/dist/cjs/fields/SearchInput/index.native.js.map +1 -1
  167. package/dist/cjs/fields/Select/index.cjs +152 -24
  168. package/dist/cjs/fields/Select/index.native.js +168 -24
  169. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  170. package/dist/cjs/fields/Signature/index.cjs +143 -49
  171. package/dist/cjs/fields/Signature/index.native.js +152 -53
  172. package/dist/cjs/fields/Signature/index.native.js.map +1 -1
  173. package/dist/cjs/fields/Slider/index.cjs +224 -153
  174. package/dist/cjs/fields/Slider/index.native.js +249 -166
  175. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  176. package/dist/cjs/fields/Slider/jumpMotion.cjs +5 -11
  177. package/dist/cjs/fields/Slider/jumpMotion.native.js +5 -11
  178. package/dist/cjs/fields/Slider/jumpMotion.native.js.map +1 -1
  179. package/dist/cjs/fields/Stepper/index.cjs +272 -122
  180. package/dist/cjs/fields/Stepper/index.native.js +290 -125
  181. package/dist/cjs/fields/Stepper/index.native.js.map +1 -1
  182. package/dist/cjs/fields/Switch/index.cjs +174 -54
  183. package/dist/cjs/fields/Switch/index.native.js +186 -56
  184. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  185. package/dist/cjs/fields/TextArea/index.cjs +67 -21
  186. package/dist/cjs/fields/TextArea/index.native.js +75 -22
  187. package/dist/cjs/fields/TextArea/index.native.js.map +1 -1
  188. package/dist/cjs/fields/TimePicker/index.cjs +57 -248
  189. package/dist/cjs/fields/TimePicker/index.native.js +66 -276
  190. package/dist/cjs/fields/TimePicker/index.native.js.map +1 -1
  191. package/dist/cjs/fields/TimePicker/parts.cjs +648 -0
  192. package/dist/cjs/fields/TimePicker/parts.native.js +685 -0
  193. package/dist/cjs/fields/TimePicker/parts.native.js.map +1 -0
  194. package/dist/cjs/fields/ToggleGroup/index.cjs +115 -106
  195. package/dist/cjs/fields/ToggleGroup/index.native.js +123 -116
  196. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  197. package/dist/cjs/formSpacing.native.js.map +1 -1
  198. package/dist/cjs/index.cjs +1 -0
  199. package/dist/cjs/index.native.js +1 -0
  200. package/dist/cjs/index.native.js.map +1 -1
  201. package/dist/cjs/shared/devWarn.cjs +1 -0
  202. package/dist/cjs/shared/devWarn.native.js +1 -0
  203. package/dist/cjs/shared/devWarn.native.js.map +1 -1
  204. package/dist/cjs/shared/focusManagement.cjs +9 -2
  205. package/dist/cjs/shared/focusManagement.native.js +9 -2
  206. package/dist/cjs/shared/focusManagement.native.js.map +1 -1
  207. package/dist/cjs/shared/i18n.cjs +46 -0
  208. package/dist/cjs/shared/i18n.native.js +52 -0
  209. package/dist/cjs/shared/i18n.native.js.map +1 -0
  210. package/dist/cjs/shared/utils.cjs +3 -2
  211. package/dist/cjs/shared/utils.native.js +3 -2
  212. package/dist/cjs/shared/utils.native.js.map +1 -1
  213. package/dist/cjs/themedPrimitives.cjs +12 -24
  214. package/dist/cjs/themedPrimitives.native.js +12 -24
  215. package/dist/cjs/themedPrimitives.native.js.map +1 -1
  216. package/dist/esm/AdaptivePopup/index.mjs +182 -49
  217. package/dist/esm/AdaptivePopup/index.mjs.map +1 -1
  218. package/dist/esm/AdaptivePopup/index.native.js +187 -51
  219. package/dist/esm/AdaptivePopup/index.native.js.map +1 -1
  220. package/dist/esm/Button/index.mjs +238 -68
  221. package/dist/esm/Button/index.mjs.map +1 -1
  222. package/dist/esm/Button/index.native.js +291 -88
  223. package/dist/esm/Button/index.native.js.map +1 -1
  224. package/dist/esm/Chip/index.mjs +293 -78
  225. package/dist/esm/Chip/index.mjs.map +1 -1
  226. package/dist/esm/Chip/index.native.js +308 -77
  227. package/dist/esm/Chip/index.native.js.map +1 -1
  228. package/dist/esm/ControlGroup/index.mjs +145 -69
  229. package/dist/esm/ControlGroup/index.mjs.map +1 -1
  230. package/dist/esm/ControlGroup/index.native.js +143 -63
  231. package/dist/esm/ControlGroup/index.native.js.map +1 -1
  232. package/dist/esm/FieldDisplay/index.mjs +439 -93
  233. package/dist/esm/FieldDisplay/index.mjs.map +1 -1
  234. package/dist/esm/FieldDisplay/index.native.js +457 -97
  235. package/dist/esm/FieldDisplay/index.native.js.map +1 -1
  236. package/dist/esm/FieldGroup.mjs +43 -40
  237. package/dist/esm/FieldGroup.mjs.map +1 -1
  238. package/dist/esm/FieldGroup.native.js +43 -40
  239. package/dist/esm/FieldGroup.native.js.map +1 -1
  240. package/dist/esm/FloatingPanel/index.mjs +80 -10
  241. package/dist/esm/FloatingPanel/index.mjs.map +1 -1
  242. package/dist/esm/FloatingPanel/index.native.js +10 -8
  243. package/dist/esm/FloatingPanel/index.native.js.map +1 -1
  244. package/dist/esm/FloatingPanel/useFloatingPanel.mjs +22 -7
  245. package/dist/esm/FloatingPanel/useFloatingPanel.mjs.map +1 -1
  246. package/dist/esm/FloatingPanel/useFloatingPanel.native.js +22 -7
  247. package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  248. package/dist/esm/Form/index.mjs +51 -11
  249. package/dist/esm/Form/index.mjs.map +1 -1
  250. package/dist/esm/Form/index.native.js +52 -11
  251. package/dist/esm/Form/index.native.js.map +1 -1
  252. package/dist/esm/FormGrid.mjs +35 -6
  253. package/dist/esm/FormGrid.mjs.map +1 -1
  254. package/dist/esm/FormGrid.native.js +35 -6
  255. package/dist/esm/FormGrid.native.js.map +1 -1
  256. package/dist/esm/FormSection.mjs +13 -6
  257. package/dist/esm/FormSection.mjs.map +1 -1
  258. package/dist/esm/FormSection.native.js +13 -6
  259. package/dist/esm/FormSection.native.js.map +1 -1
  260. package/dist/esm/InputParts/index.mjs +304 -80
  261. package/dist/esm/InputParts/index.mjs.map +1 -1
  262. package/dist/esm/InputParts/index.native.js +331 -87
  263. package/dist/esm/InputParts/index.native.js.map +1 -1
  264. package/dist/esm/Label/index.mjs +83 -6
  265. package/dist/esm/Label/index.mjs.map +1 -1
  266. package/dist/esm/Label/index.native.js +87 -6
  267. package/dist/esm/Label/index.native.js.map +1 -1
  268. package/dist/esm/Skeleton/index.mjs +15 -12
  269. package/dist/esm/Skeleton/index.mjs.map +1 -1
  270. package/dist/esm/Skeleton/index.native.js +16 -13
  271. package/dist/esm/Skeleton/index.native.js.map +1 -1
  272. package/dist/esm/Spinner/SpinnerGlyph.mjs +49 -0
  273. package/dist/esm/Spinner/SpinnerGlyph.mjs.map +1 -0
  274. package/dist/esm/Spinner/SpinnerGlyph.native.js +52 -0
  275. package/dist/esm/Spinner/SpinnerGlyph.native.js.map +1 -0
  276. package/dist/esm/Spinner/index.mjs +26 -18
  277. package/dist/esm/Spinner/index.mjs.map +1 -1
  278. package/dist/esm/Spinner/index.native.js +50 -28
  279. package/dist/esm/Spinner/index.native.js.map +1 -1
  280. package/dist/esm/Spinner/spinnerSize.mjs +12 -0
  281. package/dist/esm/Spinner/spinnerSize.mjs.map +1 -0
  282. package/dist/esm/Spinner/spinnerSize.native.js +12 -0
  283. package/dist/esm/Spinner/spinnerSize.native.js.map +1 -0
  284. package/dist/esm/fieldLayout.mjs.map +1 -1
  285. package/dist/esm/fieldLayout.native.js.map +1 -1
  286. package/dist/esm/fields/Barcode/BarcodeScanner.mjs +27 -9
  287. package/dist/esm/fields/Barcode/BarcodeScanner.mjs.map +1 -1
  288. package/dist/esm/fields/Barcode/BarcodeScanner.native.js +9 -3
  289. package/dist/esm/fields/Barcode/BarcodeScanner.native.js.map +1 -1
  290. package/dist/esm/fields/Barcode/index.mjs +93 -65
  291. package/dist/esm/fields/Barcode/index.mjs.map +1 -1
  292. package/dist/esm/fields/Barcode/index.native.js +100 -65
  293. package/dist/esm/fields/Barcode/index.native.js.map +1 -1
  294. package/dist/esm/fields/Barcode/scannerTypes.mjs +88 -1
  295. package/dist/esm/fields/Barcode/scannerTypes.mjs.map +1 -1
  296. package/dist/esm/fields/Barcode/scannerTypes.native.js +126 -1
  297. package/dist/esm/fields/Barcode/scannerTypes.native.js.map +1 -1
  298. package/dist/esm/fields/Checkbox/Checkbox.mjs +38 -91
  299. package/dist/esm/fields/Checkbox/Checkbox.mjs.map +1 -1
  300. package/dist/esm/fields/Checkbox/Checkbox.native.js +39 -91
  301. package/dist/esm/fields/Checkbox/Checkbox.native.js.map +1 -1
  302. package/dist/esm/fields/Checkbox/CheckboxBox.mjs +103 -0
  303. package/dist/esm/fields/Checkbox/CheckboxBox.mjs.map +1 -0
  304. package/dist/esm/fields/Checkbox/CheckboxBox.native.js +111 -0
  305. package/dist/esm/fields/Checkbox/CheckboxBox.native.js.map +1 -0
  306. package/dist/esm/fields/Checkbox/CheckboxCard.mjs +2 -2
  307. package/dist/esm/fields/Checkbox/CheckboxCard.mjs.map +1 -1
  308. package/dist/esm/fields/Checkbox/CheckboxCard.native.js +2 -2
  309. package/dist/esm/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  310. package/dist/esm/fields/Checkbox/CheckboxFieldFrame.mjs +16 -36
  311. package/dist/esm/fields/Checkbox/CheckboxFieldFrame.mjs.map +1 -1
  312. package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js +16 -36
  313. package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  314. package/dist/esm/fields/Checkbox/CheckboxGroup.mjs +3 -2
  315. package/dist/esm/fields/Checkbox/CheckboxGroup.mjs.map +1 -1
  316. package/dist/esm/fields/Checkbox/CheckboxGroup.native.js +3 -2
  317. package/dist/esm/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  318. package/dist/esm/fields/Checkbox/index.mjs +54 -81
  319. package/dist/esm/fields/Checkbox/index.mjs.map +1 -1
  320. package/dist/esm/fields/Checkbox/index.native.js +56 -81
  321. package/dist/esm/fields/Checkbox/index.native.js.map +1 -1
  322. package/dist/esm/fields/ColorPicker/gradients.mjs +9 -4
  323. package/dist/esm/fields/ColorPicker/gradients.mjs.map +1 -1
  324. package/dist/esm/fields/ColorPicker/gradients.native.js +37 -18
  325. package/dist/esm/fields/ColorPicker/gradients.native.js.map +1 -1
  326. package/dist/esm/fields/ColorPicker/index.mjs +81 -54
  327. package/dist/esm/fields/ColorPicker/index.mjs.map +1 -1
  328. package/dist/esm/fields/ColorPicker/index.native.js +108 -59
  329. package/dist/esm/fields/ColorPicker/index.native.js.map +1 -1
  330. package/dist/esm/fields/ColorPicker/parts.mjs +425 -237
  331. package/dist/esm/fields/ColorPicker/parts.mjs.map +1 -1
  332. package/dist/esm/fields/ColorPicker/parts.native.js +447 -241
  333. package/dist/esm/fields/ColorPicker/parts.native.js.map +1 -1
  334. package/dist/esm/fields/Combobox/index.mjs +172 -42
  335. package/dist/esm/fields/Combobox/index.mjs.map +1 -1
  336. package/dist/esm/fields/Combobox/index.native.js +177 -42
  337. package/dist/esm/fields/Combobox/index.native.js.map +1 -1
  338. package/dist/esm/fields/DatePicker/Calendar.mjs +69 -172
  339. package/dist/esm/fields/DatePicker/Calendar.mjs.map +1 -1
  340. package/dist/esm/fields/DatePicker/Calendar.native.js +73 -196
  341. package/dist/esm/fields/DatePicker/Calendar.native.js.map +1 -1
  342. package/dist/esm/fields/DatePicker/DateRangePicker.mjs +52 -123
  343. package/dist/esm/fields/DatePicker/DateRangePicker.mjs.map +1 -1
  344. package/dist/esm/fields/DatePicker/DateRangePicker.native.js +57 -127
  345. package/dist/esm/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  346. package/dist/esm/fields/DatePicker/DatetimePicker.mjs +71 -185
  347. package/dist/esm/fields/DatePicker/DatetimePicker.mjs.map +1 -1
  348. package/dist/esm/fields/DatePicker/DatetimePicker.native.js +77 -199
  349. package/dist/esm/fields/DatePicker/DatetimePicker.native.js.map +1 -1
  350. package/dist/esm/fields/DatePicker/MonthPicker.mjs +60 -63
  351. package/dist/esm/fields/DatePicker/MonthPicker.mjs.map +1 -1
  352. package/dist/esm/fields/DatePicker/MonthPicker.native.js +67 -65
  353. package/dist/esm/fields/DatePicker/MonthPicker.native.js.map +1 -1
  354. package/dist/esm/fields/DatePicker/MultiDatePicker.mjs +14 -80
  355. package/dist/esm/fields/DatePicker/MultiDatePicker.mjs.map +1 -1
  356. package/dist/esm/fields/DatePicker/MultiDatePicker.native.js +23 -86
  357. package/dist/esm/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  358. package/dist/esm/fields/DatePicker/index.mjs +13 -81
  359. package/dist/esm/fields/DatePicker/index.mjs.map +1 -1
  360. package/dist/esm/fields/DatePicker/index.native.js +24 -85
  361. package/dist/esm/fields/DatePicker/index.native.js.map +1 -1
  362. package/dist/esm/fields/DatePicker/parts.mjs +542 -184
  363. package/dist/esm/fields/DatePicker/parts.mjs.map +1 -1
  364. package/dist/esm/fields/DatePicker/parts.native.js +570 -181
  365. package/dist/esm/fields/DatePicker/parts.native.js.map +1 -1
  366. package/dist/esm/fields/Duration/index.mjs +313 -162
  367. package/dist/esm/fields/Duration/index.mjs.map +1 -1
  368. package/dist/esm/fields/Duration/index.native.js +344 -185
  369. package/dist/esm/fields/Duration/index.native.js.map +1 -1
  370. package/dist/esm/fields/FileUpload/index.mjs +146 -27
  371. package/dist/esm/fields/FileUpload/index.mjs.map +1 -1
  372. package/dist/esm/fields/FileUpload/index.native.js +161 -32
  373. package/dist/esm/fields/FileUpload/index.native.js.map +1 -1
  374. package/dist/esm/fields/Geolocation/GeolocationMap.mjs +116 -21
  375. package/dist/esm/fields/Geolocation/GeolocationMap.mjs.map +1 -1
  376. package/dist/esm/fields/Geolocation/GeolocationMap.native.js +10 -10
  377. package/dist/esm/fields/Geolocation/GeolocationMap.native.js.map +1 -1
  378. package/dist/esm/fields/Geolocation/index.mjs +127 -78
  379. package/dist/esm/fields/Geolocation/index.mjs.map +1 -1
  380. package/dist/esm/fields/Geolocation/index.native.js +136 -93
  381. package/dist/esm/fields/Geolocation/index.native.js.map +1 -1
  382. package/dist/esm/fields/Geolocation/mapMath.mjs +72 -0
  383. package/dist/esm/fields/Geolocation/mapMath.mjs.map +1 -0
  384. package/dist/esm/fields/Geolocation/mapMath.native.js +72 -0
  385. package/dist/esm/fields/Geolocation/mapMath.native.js.map +1 -0
  386. package/dist/esm/fields/ImageField/index.mjs +311 -173
  387. package/dist/esm/fields/ImageField/index.mjs.map +1 -1
  388. package/dist/esm/fields/ImageField/index.native.js +328 -186
  389. package/dist/esm/fields/ImageField/index.native.js.map +1 -1
  390. package/dist/esm/fields/Input/index.mjs +136 -124
  391. package/dist/esm/fields/Input/index.mjs.map +1 -1
  392. package/dist/esm/fields/Input/index.native.js +136 -124
  393. package/dist/esm/fields/Input/index.native.js.map +1 -1
  394. package/dist/esm/fields/MentionInput/index.mjs +143 -28
  395. package/dist/esm/fields/MentionInput/index.mjs.map +1 -1
  396. package/dist/esm/fields/MentionInput/index.native.js +165 -40
  397. package/dist/esm/fields/MentionInput/index.native.js.map +1 -1
  398. package/dist/esm/fields/OTPInput/index.mjs +187 -58
  399. package/dist/esm/fields/OTPInput/index.mjs.map +1 -1
  400. package/dist/esm/fields/OTPInput/index.native.js +196 -53
  401. package/dist/esm/fields/OTPInput/index.native.js.map +1 -1
  402. package/dist/esm/fields/OTPInput/otpCellCss.mjs +59 -0
  403. package/dist/esm/fields/OTPInput/otpCellCss.mjs.map +1 -0
  404. package/dist/esm/fields/OTPInput/otpCellCss.native.js +59 -0
  405. package/dist/esm/fields/OTPInput/otpCellCss.native.js.map +1 -0
  406. package/dist/esm/fields/PhoneInput/index.mjs +208 -113
  407. package/dist/esm/fields/PhoneInput/index.mjs.map +1 -1
  408. package/dist/esm/fields/PhoneInput/index.native.js +249 -151
  409. package/dist/esm/fields/PhoneInput/index.native.js.map +1 -1
  410. package/dist/esm/fields/PhoneInput/phone.mjs +196 -0
  411. package/dist/esm/fields/PhoneInput/phone.mjs.map +1 -0
  412. package/dist/esm/fields/PhoneInput/phone.native.js +260 -0
  413. package/dist/esm/fields/PhoneInput/phone.native.js.map +1 -0
  414. package/dist/esm/fields/Progress/index.mjs +173 -56
  415. package/dist/esm/fields/Progress/index.mjs.map +1 -1
  416. package/dist/esm/fields/Progress/index.native.js +174 -54
  417. package/dist/esm/fields/Progress/index.native.js.map +1 -1
  418. package/dist/esm/fields/RadioGroup/index.mjs +138 -74
  419. package/dist/esm/fields/RadioGroup/index.mjs.map +1 -1
  420. package/dist/esm/fields/RadioGroup/index.native.js +151 -82
  421. package/dist/esm/fields/RadioGroup/index.native.js.map +1 -1
  422. package/dist/esm/fields/Rating/StarInk.mjs +16 -0
  423. package/dist/esm/fields/Rating/StarInk.mjs.map +1 -0
  424. package/dist/esm/fields/Rating/StarInk.native.js +48 -0
  425. package/dist/esm/fields/Rating/StarInk.native.js.map +1 -0
  426. package/dist/esm/fields/Rating/index.mjs +157 -45
  427. package/dist/esm/fields/Rating/index.mjs.map +1 -1
  428. package/dist/esm/fields/Rating/index.native.js +165 -48
  429. package/dist/esm/fields/Rating/index.native.js.map +1 -1
  430. package/dist/esm/fields/Rating/types.mjs +2 -0
  431. package/dist/esm/fields/Rating/types.mjs.map +1 -0
  432. package/dist/esm/fields/Rating/types.native.js +2 -0
  433. package/dist/esm/fields/Rating/types.native.js.map +1 -0
  434. package/dist/esm/fields/SearchInput/index.mjs +195 -57
  435. package/dist/esm/fields/SearchInput/index.mjs.map +1 -1
  436. package/dist/esm/fields/SearchInput/index.native.js +198 -57
  437. package/dist/esm/fields/SearchInput/index.native.js.map +1 -1
  438. package/dist/esm/fields/Select/index.mjs +155 -27
  439. package/dist/esm/fields/Select/index.mjs.map +1 -1
  440. package/dist/esm/fields/Select/index.native.js +171 -27
  441. package/dist/esm/fields/Select/index.native.js.map +1 -1
  442. package/dist/esm/fields/Signature/index.mjs +145 -40
  443. package/dist/esm/fields/Signature/index.mjs.map +1 -1
  444. package/dist/esm/fields/Signature/index.native.js +154 -44
  445. package/dist/esm/fields/Signature/index.native.js.map +1 -1
  446. package/dist/esm/fields/Slider/index.mjs +227 -156
  447. package/dist/esm/fields/Slider/index.mjs.map +1 -1
  448. package/dist/esm/fields/Slider/index.native.js +252 -169
  449. package/dist/esm/fields/Slider/index.native.js.map +1 -1
  450. package/dist/esm/fields/Slider/jumpMotion.mjs +5 -11
  451. package/dist/esm/fields/Slider/jumpMotion.mjs.map +1 -1
  452. package/dist/esm/fields/Slider/jumpMotion.native.js +5 -11
  453. package/dist/esm/fields/Slider/jumpMotion.native.js.map +1 -1
  454. package/dist/esm/fields/Stepper/index.mjs +252 -102
  455. package/dist/esm/fields/Stepper/index.mjs.map +1 -1
  456. package/dist/esm/fields/Stepper/index.native.js +268 -103
  457. package/dist/esm/fields/Stepper/index.native.js.map +1 -1
  458. package/dist/esm/fields/Switch/index.mjs +176 -56
  459. package/dist/esm/fields/Switch/index.mjs.map +1 -1
  460. package/dist/esm/fields/Switch/index.native.js +188 -58
  461. package/dist/esm/fields/Switch/index.native.js.map +1 -1
  462. package/dist/esm/fields/TextArea/index.mjs +67 -21
  463. package/dist/esm/fields/TextArea/index.mjs.map +1 -1
  464. package/dist/esm/fields/TextArea/index.native.js +75 -22
  465. package/dist/esm/fields/TextArea/index.native.js.map +1 -1
  466. package/dist/esm/fields/TimePicker/index.mjs +51 -246
  467. package/dist/esm/fields/TimePicker/index.mjs.map +1 -1
  468. package/dist/esm/fields/TimePicker/index.native.js +60 -274
  469. package/dist/esm/fields/TimePicker/index.native.js.map +1 -1
  470. package/dist/esm/fields/TimePicker/parts.mjs +615 -0
  471. package/dist/esm/fields/TimePicker/parts.mjs.map +1 -0
  472. package/dist/esm/fields/TimePicker/parts.native.js +649 -0
  473. package/dist/esm/fields/TimePicker/parts.native.js.map +1 -0
  474. package/dist/esm/fields/ToggleGroup/index.mjs +119 -110
  475. package/dist/esm/fields/ToggleGroup/index.mjs.map +1 -1
  476. package/dist/esm/fields/ToggleGroup/index.native.js +127 -120
  477. package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -1
  478. package/dist/esm/formSpacing.mjs.map +1 -1
  479. package/dist/esm/formSpacing.native.js.map +1 -1
  480. package/dist/esm/index.mjs +2 -2
  481. package/dist/esm/index.mjs.map +1 -1
  482. package/dist/esm/index.native.js +2 -2
  483. package/dist/esm/index.native.js.map +1 -1
  484. package/dist/esm/shared/devWarn.mjs +2 -2
  485. package/dist/esm/shared/devWarn.mjs.map +1 -1
  486. package/dist/esm/shared/devWarn.native.js +2 -2
  487. package/dist/esm/shared/devWarn.native.js.map +1 -1
  488. package/dist/esm/shared/focusManagement.mjs +9 -2
  489. package/dist/esm/shared/focusManagement.mjs.map +1 -1
  490. package/dist/esm/shared/focusManagement.native.js +9 -2
  491. package/dist/esm/shared/focusManagement.native.js.map +1 -1
  492. package/dist/esm/shared/i18n.mjs +10 -0
  493. package/dist/esm/shared/i18n.mjs.map +1 -0
  494. package/dist/esm/shared/i18n.native.js +13 -0
  495. package/dist/esm/shared/i18n.native.js.map +1 -0
  496. package/dist/esm/shared/utils.mjs +5 -4
  497. package/dist/esm/shared/utils.mjs.map +1 -1
  498. package/dist/esm/shared/utils.native.js +5 -4
  499. package/dist/esm/shared/utils.native.js.map +1 -1
  500. package/dist/esm/themedPrimitives.mjs +13 -25
  501. package/dist/esm/themedPrimitives.mjs.map +1 -1
  502. package/dist/esm/themedPrimitives.native.js +13 -25
  503. package/dist/esm/themedPrimitives.native.js.map +1 -1
  504. package/dist/jsx/AdaptivePopup/index.mjs +182 -49
  505. package/dist/jsx/AdaptivePopup/index.mjs.map +1 -1
  506. package/dist/jsx/AdaptivePopup/index.native.js +184 -48
  507. package/dist/jsx/AdaptivePopup/index.native.js.map +1 -1
  508. package/dist/jsx/Button/index.mjs +238 -68
  509. package/dist/jsx/Button/index.mjs.map +1 -1
  510. package/dist/jsx/Button/index.native.js +291 -83
  511. package/dist/jsx/Button/index.native.js.map +1 -1
  512. package/dist/jsx/Chip/index.mjs +293 -78
  513. package/dist/jsx/Chip/index.mjs.map +1 -1
  514. package/dist/jsx/Chip/index.native.js +306 -73
  515. package/dist/jsx/Chip/index.native.js.map +1 -1
  516. package/dist/jsx/ControlGroup/index.mjs +145 -69
  517. package/dist/jsx/ControlGroup/index.mjs.map +1 -1
  518. package/dist/jsx/ControlGroup/index.native.js +141 -60
  519. package/dist/jsx/ControlGroup/index.native.js.map +1 -1
  520. package/dist/jsx/FieldDisplay/index.mjs +439 -93
  521. package/dist/jsx/FieldDisplay/index.mjs.map +1 -1
  522. package/dist/jsx/FieldDisplay/index.native.js +455 -95
  523. package/dist/jsx/FieldDisplay/index.native.js.map +1 -1
  524. package/dist/jsx/FieldGroup.mjs +43 -40
  525. package/dist/jsx/FieldGroup.mjs.map +1 -1
  526. package/dist/jsx/FieldGroup.native.js +43 -40
  527. package/dist/jsx/FieldGroup.native.js.map +1 -1
  528. package/dist/jsx/FloatingPanel/index.mjs +80 -10
  529. package/dist/jsx/FloatingPanel/index.mjs.map +1 -1
  530. package/dist/jsx/FloatingPanel/index.native.js +9 -7
  531. package/dist/jsx/FloatingPanel/index.native.js.map +1 -1
  532. package/dist/jsx/FloatingPanel/useFloatingPanel.mjs +22 -7
  533. package/dist/jsx/FloatingPanel/useFloatingPanel.mjs.map +1 -1
  534. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js +21 -5
  535. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js.map +1 -1
  536. package/dist/jsx/Form/index.mjs +51 -11
  537. package/dist/jsx/Form/index.mjs.map +1 -1
  538. package/dist/jsx/Form/index.native.js +50 -8
  539. package/dist/jsx/Form/index.native.js.map +1 -1
  540. package/dist/jsx/FormGrid.mjs +35 -6
  541. package/dist/jsx/FormGrid.mjs.map +1 -1
  542. package/dist/jsx/FormGrid.native.js +35 -6
  543. package/dist/jsx/FormGrid.native.js.map +1 -1
  544. package/dist/jsx/FormSection.mjs +13 -6
  545. package/dist/jsx/FormSection.mjs.map +1 -1
  546. package/dist/jsx/FormSection.native.js +13 -6
  547. package/dist/jsx/FormSection.native.js.map +1 -1
  548. package/dist/jsx/InputParts/index.mjs +304 -80
  549. package/dist/jsx/InputParts/index.mjs.map +1 -1
  550. package/dist/jsx/InputParts/index.native.js +332 -84
  551. package/dist/jsx/InputParts/index.native.js.map +1 -1
  552. package/dist/jsx/Label/index.mjs +83 -6
  553. package/dist/jsx/Label/index.mjs.map +1 -1
  554. package/dist/jsx/Label/index.native.js +85 -4
  555. package/dist/jsx/Label/index.native.js.map +1 -1
  556. package/dist/jsx/Skeleton/index.mjs +15 -12
  557. package/dist/jsx/Skeleton/index.mjs.map +1 -1
  558. package/dist/jsx/Skeleton/index.native.js +15 -12
  559. package/dist/jsx/Skeleton/index.native.js.map +1 -1
  560. package/dist/jsx/Spinner/SpinnerGlyph.mjs +49 -0
  561. package/dist/jsx/Spinner/SpinnerGlyph.mjs.map +1 -0
  562. package/dist/jsx/Spinner/SpinnerGlyph.native.js +81 -0
  563. package/dist/jsx/Spinner/SpinnerGlyph.native.js.map +1 -0
  564. package/dist/jsx/Spinner/index.mjs +26 -18
  565. package/dist/jsx/Spinner/index.mjs.map +1 -1
  566. package/dist/jsx/Spinner/index.native.js +53 -31
  567. package/dist/jsx/Spinner/index.native.js.map +1 -1
  568. package/dist/jsx/Spinner/spinnerSize.mjs +12 -0
  569. package/dist/jsx/Spinner/spinnerSize.mjs.map +1 -0
  570. package/dist/jsx/Spinner/spinnerSize.native.js +41 -0
  571. package/dist/jsx/Spinner/spinnerSize.native.js.map +1 -0
  572. package/dist/jsx/fieldLayout.mjs.map +1 -1
  573. package/dist/jsx/fieldLayout.native.js.map +1 -1
  574. package/dist/jsx/fields/Barcode/BarcodeScanner.mjs +27 -9
  575. package/dist/jsx/fields/Barcode/BarcodeScanner.mjs.map +1 -1
  576. package/dist/jsx/fields/Barcode/BarcodeScanner.native.js +9 -3
  577. package/dist/jsx/fields/Barcode/BarcodeScanner.native.js.map +1 -1
  578. package/dist/jsx/fields/Barcode/index.mjs +93 -65
  579. package/dist/jsx/fields/Barcode/index.mjs.map +1 -1
  580. package/dist/jsx/fields/Barcode/index.native.js +97 -62
  581. package/dist/jsx/fields/Barcode/index.native.js.map +1 -1
  582. package/dist/jsx/fields/Barcode/scannerTypes.mjs +88 -1
  583. package/dist/jsx/fields/Barcode/scannerTypes.mjs.map +1 -1
  584. package/dist/jsx/fields/Barcode/scannerTypes.native.js +137 -0
  585. package/dist/jsx/fields/Barcode/scannerTypes.native.js.map +1 -1
  586. package/dist/jsx/fields/Checkbox/Checkbox.mjs +38 -91
  587. package/dist/jsx/fields/Checkbox/Checkbox.mjs.map +1 -1
  588. package/dist/jsx/fields/Checkbox/Checkbox.native.js +36 -88
  589. package/dist/jsx/fields/Checkbox/Checkbox.native.js.map +1 -1
  590. package/dist/jsx/fields/Checkbox/CheckboxBox.mjs +103 -0
  591. package/dist/jsx/fields/Checkbox/CheckboxBox.mjs.map +1 -0
  592. package/dist/jsx/fields/Checkbox/CheckboxBox.native.js +145 -0
  593. package/dist/jsx/fields/Checkbox/CheckboxBox.native.js.map +1 -0
  594. package/dist/jsx/fields/Checkbox/CheckboxCard.mjs +2 -2
  595. package/dist/jsx/fields/Checkbox/CheckboxCard.mjs.map +1 -1
  596. package/dist/jsx/fields/Checkbox/CheckboxCard.native.js +2 -2
  597. package/dist/jsx/fields/Checkbox/CheckboxCard.native.js.map +1 -1
  598. package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.mjs +16 -36
  599. package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.mjs.map +1 -1
  600. package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.native.js +16 -36
  601. package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -1
  602. package/dist/jsx/fields/Checkbox/CheckboxGroup.mjs +3 -2
  603. package/dist/jsx/fields/Checkbox/CheckboxGroup.mjs.map +1 -1
  604. package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js +3 -2
  605. package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js.map +1 -1
  606. package/dist/jsx/fields/Checkbox/index.mjs +54 -81
  607. package/dist/jsx/fields/Checkbox/index.mjs.map +1 -1
  608. package/dist/jsx/fields/Checkbox/index.native.js +52 -77
  609. package/dist/jsx/fields/Checkbox/index.native.js.map +1 -1
  610. package/dist/jsx/fields/ColorPicker/gradients.mjs +9 -4
  611. package/dist/jsx/fields/ColorPicker/gradients.mjs.map +1 -1
  612. package/dist/jsx/fields/ColorPicker/gradients.native.js +37 -18
  613. package/dist/jsx/fields/ColorPicker/gradients.native.js.map +1 -1
  614. package/dist/jsx/fields/ColorPicker/index.mjs +81 -54
  615. package/dist/jsx/fields/ColorPicker/index.mjs.map +1 -1
  616. package/dist/jsx/fields/ColorPicker/index.native.js +104 -55
  617. package/dist/jsx/fields/ColorPicker/index.native.js.map +1 -1
  618. package/dist/jsx/fields/ColorPicker/parts.mjs +425 -237
  619. package/dist/jsx/fields/ColorPicker/parts.mjs.map +1 -1
  620. package/dist/jsx/fields/ColorPicker/parts.native.js +447 -238
  621. package/dist/jsx/fields/ColorPicker/parts.native.js.map +1 -1
  622. package/dist/jsx/fields/Combobox/index.mjs +172 -42
  623. package/dist/jsx/fields/Combobox/index.mjs.map +1 -1
  624. package/dist/jsx/fields/Combobox/index.native.js +180 -45
  625. package/dist/jsx/fields/Combobox/index.native.js.map +1 -1
  626. package/dist/jsx/fields/DatePicker/Calendar.mjs +69 -172
  627. package/dist/jsx/fields/DatePicker/Calendar.mjs.map +1 -1
  628. package/dist/jsx/fields/DatePicker/Calendar.native.js +71 -194
  629. package/dist/jsx/fields/DatePicker/Calendar.native.js.map +1 -1
  630. package/dist/jsx/fields/DatePicker/DateRangePicker.mjs +52 -123
  631. package/dist/jsx/fields/DatePicker/DateRangePicker.mjs.map +1 -1
  632. package/dist/jsx/fields/DatePicker/DateRangePicker.native.js +53 -123
  633. package/dist/jsx/fields/DatePicker/DateRangePicker.native.js.map +1 -1
  634. package/dist/jsx/fields/DatePicker/DatetimePicker.mjs +71 -185
  635. package/dist/jsx/fields/DatePicker/DatetimePicker.mjs.map +1 -1
  636. package/dist/jsx/fields/DatePicker/DatetimePicker.native.js +73 -195
  637. package/dist/jsx/fields/DatePicker/DatetimePicker.native.js.map +1 -1
  638. package/dist/jsx/fields/DatePicker/MonthPicker.mjs +60 -63
  639. package/dist/jsx/fields/DatePicker/MonthPicker.mjs.map +1 -1
  640. package/dist/jsx/fields/DatePicker/MonthPicker.native.js +66 -64
  641. package/dist/jsx/fields/DatePicker/MonthPicker.native.js.map +1 -1
  642. package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs +14 -80
  643. package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs.map +1 -1
  644. package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js +20 -83
  645. package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js.map +1 -1
  646. package/dist/jsx/fields/DatePicker/index.mjs +13 -81
  647. package/dist/jsx/fields/DatePicker/index.mjs.map +1 -1
  648. package/dist/jsx/fields/DatePicker/index.native.js +22 -83
  649. package/dist/jsx/fields/DatePicker/index.native.js.map +1 -1
  650. package/dist/jsx/fields/DatePicker/parts.mjs +542 -184
  651. package/dist/jsx/fields/DatePicker/parts.mjs.map +1 -1
  652. package/dist/jsx/fields/DatePicker/parts.native.js +575 -178
  653. package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -1
  654. package/dist/jsx/fields/Duration/index.mjs +313 -162
  655. package/dist/jsx/fields/Duration/index.mjs.map +1 -1
  656. package/dist/jsx/fields/Duration/index.native.js +345 -182
  657. package/dist/jsx/fields/Duration/index.native.js.map +1 -1
  658. package/dist/jsx/fields/FileUpload/index.mjs +146 -27
  659. package/dist/jsx/fields/FileUpload/index.mjs.map +1 -1
  660. package/dist/jsx/fields/FileUpload/index.native.js +161 -32
  661. package/dist/jsx/fields/FileUpload/index.native.js.map +1 -1
  662. package/dist/jsx/fields/Geolocation/GeolocationMap.mjs +116 -21
  663. package/dist/jsx/fields/Geolocation/GeolocationMap.mjs.map +1 -1
  664. package/dist/jsx/fields/Geolocation/GeolocationMap.native.js +11 -11
  665. package/dist/jsx/fields/Geolocation/GeolocationMap.native.js.map +1 -1
  666. package/dist/jsx/fields/Geolocation/index.mjs +127 -78
  667. package/dist/jsx/fields/Geolocation/index.mjs.map +1 -1
  668. package/dist/jsx/fields/Geolocation/index.native.js +134 -91
  669. package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
  670. package/dist/jsx/fields/Geolocation/mapMath.mjs +72 -0
  671. package/dist/jsx/fields/Geolocation/mapMath.mjs.map +1 -0
  672. package/dist/jsx/fields/Geolocation/mapMath.native.js +108 -0
  673. package/dist/jsx/fields/Geolocation/mapMath.native.js.map +1 -0
  674. package/dist/jsx/fields/ImageField/index.mjs +311 -173
  675. package/dist/jsx/fields/ImageField/index.mjs.map +1 -1
  676. package/dist/jsx/fields/ImageField/index.native.js +323 -181
  677. package/dist/jsx/fields/ImageField/index.native.js.map +1 -1
  678. package/dist/jsx/fields/Input/index.mjs +136 -124
  679. package/dist/jsx/fields/Input/index.mjs.map +1 -1
  680. package/dist/jsx/fields/Input/index.native.js +133 -121
  681. package/dist/jsx/fields/Input/index.native.js.map +1 -1
  682. package/dist/jsx/fields/MentionInput/index.mjs +143 -28
  683. package/dist/jsx/fields/MentionInput/index.mjs.map +1 -1
  684. package/dist/jsx/fields/MentionInput/index.native.js +164 -39
  685. package/dist/jsx/fields/MentionInput/index.native.js.map +1 -1
  686. package/dist/jsx/fields/OTPInput/index.mjs +187 -58
  687. package/dist/jsx/fields/OTPInput/index.mjs.map +1 -1
  688. package/dist/jsx/fields/OTPInput/index.native.js +197 -53
  689. package/dist/jsx/fields/OTPInput/index.native.js.map +1 -1
  690. package/dist/jsx/fields/OTPInput/otpCellCss.mjs +59 -0
  691. package/dist/jsx/fields/OTPInput/otpCellCss.mjs.map +1 -0
  692. package/dist/jsx/fields/OTPInput/otpCellCss.native.js +87 -0
  693. package/dist/jsx/fields/OTPInput/otpCellCss.native.js.map +1 -0
  694. package/dist/jsx/fields/PhoneInput/index.mjs +208 -113
  695. package/dist/jsx/fields/PhoneInput/index.mjs.map +1 -1
  696. package/dist/jsx/fields/PhoneInput/index.native.js +241 -143
  697. package/dist/jsx/fields/PhoneInput/index.native.js.map +1 -1
  698. package/dist/jsx/fields/PhoneInput/phone.mjs +196 -0
  699. package/dist/jsx/fields/PhoneInput/phone.mjs.map +1 -0
  700. package/dist/jsx/fields/PhoneInput/phone.native.js +301 -0
  701. package/dist/jsx/fields/PhoneInput/phone.native.js.map +1 -0
  702. package/dist/jsx/fields/Progress/index.mjs +173 -56
  703. package/dist/jsx/fields/Progress/index.mjs.map +1 -1
  704. package/dist/jsx/fields/Progress/index.native.js +170 -50
  705. package/dist/jsx/fields/Progress/index.native.js.map +1 -1
  706. package/dist/jsx/fields/RadioGroup/index.mjs +138 -74
  707. package/dist/jsx/fields/RadioGroup/index.mjs.map +1 -1
  708. package/dist/jsx/fields/RadioGroup/index.native.js +151 -82
  709. package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -1
  710. package/dist/jsx/fields/Rating/StarInk.mjs +16 -0
  711. package/dist/jsx/fields/Rating/StarInk.mjs.map +1 -0
  712. package/dist/jsx/fields/Rating/StarInk.native.js +77 -0
  713. package/dist/jsx/fields/Rating/StarInk.native.js.map +1 -0
  714. package/dist/jsx/fields/Rating/index.mjs +157 -45
  715. package/dist/jsx/fields/Rating/index.mjs.map +1 -1
  716. package/dist/jsx/fields/Rating/index.native.js +162 -56
  717. package/dist/jsx/fields/Rating/index.native.js.map +1 -1
  718. package/dist/jsx/fields/Rating/types.mjs +2 -0
  719. package/dist/jsx/fields/Rating/types.mjs.map +1 -0
  720. package/dist/jsx/fields/Rating/types.native.js +21 -0
  721. package/dist/jsx/fields/Rating/types.native.js.map +1 -0
  722. package/dist/jsx/fields/SearchInput/index.mjs +195 -57
  723. package/dist/jsx/fields/SearchInput/index.mjs.map +1 -1
  724. package/dist/jsx/fields/SearchInput/index.native.js +195 -54
  725. package/dist/jsx/fields/SearchInput/index.native.js.map +1 -1
  726. package/dist/jsx/fields/Select/index.mjs +155 -27
  727. package/dist/jsx/fields/Select/index.mjs.map +1 -1
  728. package/dist/jsx/fields/Select/index.native.js +168 -24
  729. package/dist/jsx/fields/Select/index.native.js.map +1 -1
  730. package/dist/jsx/fields/Signature/index.mjs +145 -40
  731. package/dist/jsx/fields/Signature/index.mjs.map +1 -1
  732. package/dist/jsx/fields/Signature/index.native.js +152 -53
  733. package/dist/jsx/fields/Signature/index.native.js.map +1 -1
  734. package/dist/jsx/fields/Slider/index.mjs +227 -156
  735. package/dist/jsx/fields/Slider/index.mjs.map +1 -1
  736. package/dist/jsx/fields/Slider/index.native.js +249 -166
  737. package/dist/jsx/fields/Slider/index.native.js.map +1 -1
  738. package/dist/jsx/fields/Slider/jumpMotion.mjs +5 -11
  739. package/dist/jsx/fields/Slider/jumpMotion.mjs.map +1 -1
  740. package/dist/jsx/fields/Slider/jumpMotion.native.js +5 -11
  741. package/dist/jsx/fields/Slider/jumpMotion.native.js.map +1 -1
  742. package/dist/jsx/fields/Stepper/index.mjs +252 -102
  743. package/dist/jsx/fields/Stepper/index.mjs.map +1 -1
  744. package/dist/jsx/fields/Stepper/index.native.js +290 -125
  745. package/dist/jsx/fields/Stepper/index.native.js.map +1 -1
  746. package/dist/jsx/fields/Switch/index.mjs +176 -56
  747. package/dist/jsx/fields/Switch/index.mjs.map +1 -1
  748. package/dist/jsx/fields/Switch/index.native.js +186 -56
  749. package/dist/jsx/fields/Switch/index.native.js.map +1 -1
  750. package/dist/jsx/fields/TextArea/index.mjs +67 -21
  751. package/dist/jsx/fields/TextArea/index.mjs.map +1 -1
  752. package/dist/jsx/fields/TextArea/index.native.js +75 -22
  753. package/dist/jsx/fields/TextArea/index.native.js.map +1 -1
  754. package/dist/jsx/fields/TimePicker/index.mjs +51 -246
  755. package/dist/jsx/fields/TimePicker/index.mjs.map +1 -1
  756. package/dist/jsx/fields/TimePicker/index.native.js +66 -276
  757. package/dist/jsx/fields/TimePicker/index.native.js.map +1 -1
  758. package/dist/jsx/fields/TimePicker/parts.mjs +615 -0
  759. package/dist/jsx/fields/TimePicker/parts.mjs.map +1 -0
  760. package/dist/jsx/fields/TimePicker/parts.native.js +685 -0
  761. package/dist/jsx/fields/TimePicker/parts.native.js.map +1 -0
  762. package/dist/jsx/fields/ToggleGroup/index.mjs +119 -110
  763. package/dist/jsx/fields/ToggleGroup/index.mjs.map +1 -1
  764. package/dist/jsx/fields/ToggleGroup/index.native.js +123 -116
  765. package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -1
  766. package/dist/jsx/formSpacing.mjs.map +1 -1
  767. package/dist/jsx/formSpacing.native.js.map +1 -1
  768. package/dist/jsx/index.js +2 -2
  769. package/dist/jsx/index.js.map +1 -1
  770. package/dist/jsx/index.mjs +2 -2
  771. package/dist/jsx/index.mjs.map +1 -1
  772. package/dist/jsx/index.native.js +1 -0
  773. package/dist/jsx/index.native.js.map +1 -1
  774. package/dist/jsx/shared/devWarn.mjs +2 -2
  775. package/dist/jsx/shared/devWarn.mjs.map +1 -1
  776. package/dist/jsx/shared/devWarn.native.js +1 -0
  777. package/dist/jsx/shared/devWarn.native.js.map +1 -1
  778. package/dist/jsx/shared/focusManagement.mjs +9 -2
  779. package/dist/jsx/shared/focusManagement.mjs.map +1 -1
  780. package/dist/jsx/shared/focusManagement.native.js +9 -2
  781. package/dist/jsx/shared/focusManagement.native.js.map +1 -1
  782. package/dist/jsx/shared/i18n.mjs +10 -0
  783. package/dist/jsx/shared/i18n.mjs.map +1 -0
  784. package/dist/jsx/shared/i18n.native.js +52 -0
  785. package/dist/jsx/shared/i18n.native.js.map +1 -0
  786. package/dist/jsx/shared/utils.mjs +5 -4
  787. package/dist/jsx/shared/utils.mjs.map +1 -1
  788. package/dist/jsx/shared/utils.native.js +3 -2
  789. package/dist/jsx/shared/utils.native.js.map +1 -1
  790. package/dist/jsx/themedPrimitives.mjs +13 -25
  791. package/dist/jsx/themedPrimitives.mjs.map +1 -1
  792. package/dist/jsx/themedPrimitives.native.js +12 -24
  793. package/dist/jsx/themedPrimitives.native.js.map +1 -1
  794. package/package.json +16 -16
  795. package/src/AdaptivePopup/AdaptivePopup.spec.tsx +210 -0
  796. package/src/AdaptivePopup/index.tsx +187 -52
  797. package/src/Button/Button.lc18.spec.tsx +134 -0
  798. package/src/Button/Button.lc50.spec.tsx +73 -0
  799. package/src/Button/Button.lc71.spec.tsx +109 -0
  800. package/src/Button/Button.spec.tsx +128 -0
  801. package/src/Button/Button.stories.tsx +40 -0
  802. package/src/Button/index.tsx +355 -73
  803. package/src/Chip/Chip.spec.tsx +173 -1
  804. package/src/Chip/index.tsx +425 -64
  805. package/src/ControlGroup/ControlGroup.stories.tsx +46 -3
  806. package/src/ControlGroup/index.tsx +179 -74
  807. package/src/FieldDisplay/FieldDisplay.spec.tsx +121 -0
  808. package/src/FieldDisplay/FieldDisplay.stories.tsx +16 -5
  809. package/src/FieldDisplay/index.tsx +416 -102
  810. package/src/FieldGroup.tsx +46 -42
  811. package/src/FloatingPanel/FloatingPanel.spec.tsx +263 -0
  812. package/src/FloatingPanel/FloatingPanel.stories.tsx +10 -39
  813. package/src/FloatingPanel/index.native.tsx +9 -8
  814. package/src/FloatingPanel/index.tsx +139 -11
  815. package/src/FloatingPanel/useFloatingPanel.spec.tsx +59 -0
  816. package/src/FloatingPanel/useFloatingPanel.ts +58 -7
  817. package/src/Form/Form.stories.tsx +181 -130
  818. package/src/Form/form.spec.tsx +43 -1
  819. package/src/Form/index.tsx +67 -12
  820. package/src/FormGrid.spec.tsx +41 -0
  821. package/src/FormGrid.stories.tsx +3 -4
  822. package/src/FormGrid.tsx +55 -15
  823. package/src/FormSection.tsx +14 -7
  824. package/src/InputParts/index.spec.tsx +62 -1
  825. package/src/InputParts/index.tsx +375 -72
  826. package/src/Label/Label.spec.tsx +65 -0
  827. package/src/Label/Label.stories.tsx +75 -5
  828. package/src/Label/index.tsx +101 -6
  829. package/src/Skeleton/index.tsx +18 -8
  830. package/src/Spinner/Spinner.spec.tsx +66 -0
  831. package/src/Spinner/Spinner.stories.tsx +43 -14
  832. package/src/Spinner/SpinnerGlyph.tsx +38 -0
  833. package/src/Spinner/index.native.tsx +64 -0
  834. package/src/Spinner/index.tsx +30 -37
  835. package/src/Spinner/spinnerSize.ts +27 -0
  836. package/src/fieldLayout.tsx +6 -0
  837. package/src/fields/Barcode/Barcode.spec.tsx +91 -1
  838. package/src/fields/Barcode/Barcode.stories.tsx +13 -0
  839. package/src/fields/Barcode/BarcodeScanner.native.tsx +6 -17
  840. package/src/fields/Barcode/BarcodeScanner.tsx +37 -6
  841. package/src/fields/Barcode/index.tsx +111 -66
  842. package/src/fields/Barcode/scannerTypes.ts +130 -0
  843. package/src/fields/Checkbox/Checkbox.spec.tsx +84 -3
  844. package/src/fields/Checkbox/Checkbox.tsx +52 -99
  845. package/src/fields/Checkbox/CheckboxBox.tsx +139 -0
  846. package/src/fields/Checkbox/CheckboxCard.tsx +1 -1
  847. package/src/fields/Checkbox/CheckboxFieldFrame.tsx +14 -30
  848. package/src/fields/Checkbox/CheckboxGroup.tsx +8 -2
  849. package/src/fields/Checkbox/index.tsx +49 -82
  850. package/src/fields/ColorPicker/ColorPicker.spec.tsx +84 -2
  851. package/src/fields/ColorPicker/ColorPicker.stories.tsx +1 -1
  852. package/src/fields/ColorPicker/gradients.native.tsx +23 -5
  853. package/src/fields/ColorPicker/gradients.tsx +20 -5
  854. package/src/fields/ColorPicker/index.tsx +95 -71
  855. package/src/fields/ColorPicker/parts.tsx +498 -229
  856. package/src/fields/Combobox/Combobox.spec.tsx +33 -1
  857. package/src/fields/Combobox/index.tsx +219 -59
  858. package/src/fields/DatePicker/Calendar.spec.tsx +34 -0
  859. package/src/fields/DatePicker/Calendar.tsx +70 -200
  860. package/src/fields/DatePicker/DatePicker.spec.tsx +28 -1
  861. package/src/fields/DatePicker/DatePicker.stories.tsx +1 -1
  862. package/src/fields/DatePicker/DateRangePicker.spec.tsx +22 -1
  863. package/src/fields/DatePicker/DateRangePicker.stories.tsx +1 -1
  864. package/src/fields/DatePicker/DateRangePicker.tsx +55 -128
  865. package/src/fields/DatePicker/DatetimePicker.spec.tsx +14 -0
  866. package/src/fields/DatePicker/DatetimePicker.stories.tsx +1 -1
  867. package/src/fields/DatePicker/DatetimePicker.tsx +86 -224
  868. package/src/fields/DatePicker/MonthPicker.spec.tsx +44 -0
  869. package/src/fields/DatePicker/MonthPicker.stories.tsx +1 -1
  870. package/src/fields/DatePicker/MonthPicker.tsx +69 -62
  871. package/src/fields/DatePicker/MultiDatePicker.spec.tsx +22 -1
  872. package/src/fields/DatePicker/MultiDatePicker.stories.tsx +1 -1
  873. package/src/fields/DatePicker/MultiDatePicker.tsx +20 -90
  874. package/src/fields/DatePicker/index.tsx +23 -95
  875. package/src/fields/DatePicker/parts.tsx +583 -241
  876. package/src/fields/Duration/Duration.spec.tsx +58 -3
  877. package/src/fields/Duration/Duration.stories.tsx +20 -44
  878. package/src/fields/Duration/index.tsx +381 -183
  879. package/src/fields/FileUpload/FileUpload.spec.tsx +63 -1
  880. package/src/fields/FileUpload/index.tsx +163 -27
  881. package/src/fields/Geolocation/Geolocation.spec.tsx +144 -0
  882. package/src/fields/Geolocation/Geolocation.stories.tsx +11 -6
  883. package/src/fields/Geolocation/GeolocationMap.native.spec.tsx +7 -0
  884. package/src/fields/Geolocation/GeolocationMap.native.tsx +24 -19
  885. package/src/fields/Geolocation/GeolocationMap.tsx +134 -18
  886. package/src/fields/Geolocation/index.tsx +171 -120
  887. package/src/fields/Geolocation/mapMath.spec.ts +59 -0
  888. package/src/fields/Geolocation/mapMath.ts +91 -0
  889. package/src/fields/Geolocation/mapTypes.ts +7 -2
  890. package/src/fields/ImageField/ImageField.spec.tsx +68 -0
  891. package/src/fields/ImageField/ImageField.stories.tsx +40 -24
  892. package/src/fields/ImageField/index.tsx +381 -214
  893. package/src/fields/Input/Input.spec.tsx +111 -0
  894. package/src/fields/Input/Input.stories.tsx +37 -4
  895. package/src/fields/Input/index.tsx +139 -108
  896. package/src/fields/MentionInput/MentionInput.spec.tsx +115 -0
  897. package/src/fields/MentionInput/MentionInput.stories.tsx +1 -1
  898. package/src/fields/MentionInput/index.tsx +220 -69
  899. package/src/fields/OTPInput/OtpInput.spec.tsx +58 -1
  900. package/src/fields/OTPInput/OtpInput.stories.tsx +14 -18
  901. package/src/fields/OTPInput/index.tsx +220 -72
  902. package/src/fields/OTPInput/otpCellCss.ts +68 -0
  903. package/src/fields/PhoneInput/PhoneInput.spec.tsx +61 -8
  904. package/src/fields/PhoneInput/PhoneInput.stories.tsx +0 -2
  905. package/src/fields/PhoneInput/index.tsx +253 -140
  906. package/src/fields/PhoneInput/phone.spec.ts +85 -0
  907. package/src/fields/PhoneInput/phone.ts +268 -0
  908. package/src/fields/Progress/Progress.spec.tsx +53 -0
  909. package/src/fields/Progress/Progress.stories.tsx +7 -2
  910. package/src/fields/Progress/index.tsx +202 -64
  911. package/src/fields/RadioGroup/RadioGroup.spec.tsx +31 -4
  912. package/src/fields/RadioGroup/index.tsx +183 -93
  913. package/src/fields/Rating/Rating.spec.tsx +103 -0
  914. package/src/fields/Rating/Rating.stories.tsx +2 -1
  915. package/src/fields/Rating/StarInk.native.spec.tsx +175 -0
  916. package/src/fields/Rating/StarInk.native.tsx +77 -0
  917. package/src/fields/Rating/StarInk.tsx +23 -0
  918. package/src/fields/Rating/index.tsx +196 -46
  919. package/src/fields/Rating/types.ts +28 -0
  920. package/src/fields/SearchInput/SearchInput.spec.tsx +30 -0
  921. package/src/fields/SearchInput/SearchInput.stories.tsx +10 -1
  922. package/src/fields/SearchInput/index.tsx +207 -68
  923. package/src/fields/Select/Select.spec.tsx +55 -1
  924. package/src/fields/Select/index.tsx +172 -22
  925. package/src/fields/Signature/Signature.spec.tsx +122 -3
  926. package/src/fields/Signature/index.tsx +170 -54
  927. package/src/fields/Slider/Slider.spec.tsx +63 -21
  928. package/src/fields/Slider/index.tsx +282 -184
  929. package/src/fields/Slider/jumpMotion.ts +9 -25
  930. package/src/fields/Stepper/Stepper.spec.tsx +96 -0
  931. package/src/fields/Stepper/Stepper.stories.tsx +4 -6
  932. package/src/fields/Stepper/index.tsx +321 -129
  933. package/src/fields/Switch/Switch.spec.tsx +52 -3
  934. package/src/fields/Switch/Switch.stories.tsx +34 -0
  935. package/src/fields/Switch/index.tsx +234 -57
  936. package/src/fields/TextArea/TextArea.spec.tsx +38 -0
  937. package/src/fields/TextArea/TextArea.stories.tsx +11 -1
  938. package/src/fields/TextArea/index.tsx +79 -20
  939. package/src/fields/TimePicker/TimePicker.spec.tsx +66 -0
  940. package/src/fields/TimePicker/TimePicker.stories.tsx +8 -37
  941. package/src/fields/TimePicker/index.tsx +86 -292
  942. package/src/fields/TimePicker/parts.tsx +714 -0
  943. package/src/fields/ToggleGroup/ToggleGroup.spec.tsx +27 -0
  944. package/src/fields/ToggleGroup/ToggleGroup.stories.tsx +15 -0
  945. package/src/fields/ToggleGroup/index.tsx +144 -153
  946. package/src/formSpacing.ts +3 -8
  947. package/src/index.ts +2 -0
  948. package/src/shared/devWarn.ts +1 -0
  949. package/src/shared/focusManagement.ts +8 -2
  950. package/src/shared/i18n.ts +25 -0
  951. package/src/shared/utils.ts +5 -6
  952. package/src/themedPrimitives.tsx +14 -17
  953. package/types/AdaptivePopup/index.d.ts.map +1 -1
  954. package/types/Button/index.d.ts +51 -1
  955. package/types/Button/index.d.ts.map +1 -1
  956. package/types/Chip/index.d.ts +31 -7
  957. package/types/Chip/index.d.ts.map +1 -1
  958. package/types/ControlGroup/index.d.ts +14 -1
  959. package/types/ControlGroup/index.d.ts.map +1 -1
  960. package/types/FieldDisplay/index.d.ts +10 -12
  961. package/types/FieldDisplay/index.d.ts.map +1 -1
  962. package/types/FieldGroup.d.ts +10 -4
  963. package/types/FieldGroup.d.ts.map +1 -1
  964. package/types/FloatingPanel/index.d.ts.map +1 -1
  965. package/types/FloatingPanel/index.native.d.ts.map +1 -1
  966. package/types/FloatingPanel/useFloatingPanel.d.ts +10 -1
  967. package/types/FloatingPanel/useFloatingPanel.d.ts.map +1 -1
  968. package/types/Form/index.d.ts +18 -1
  969. package/types/Form/index.d.ts.map +1 -1
  970. package/types/FormGrid.d.ts +8 -3
  971. package/types/FormGrid.d.ts.map +1 -1
  972. package/types/FormSection.d.ts +3 -1
  973. package/types/FormSection.d.ts.map +1 -1
  974. package/types/InputParts/index.d.ts +61 -13
  975. package/types/InputParts/index.d.ts.map +1 -1
  976. package/types/Label/index.d.ts +16 -4
  977. package/types/Label/index.d.ts.map +1 -1
  978. package/types/Skeleton/index.d.ts.map +1 -1
  979. package/types/Spinner/SpinnerGlyph.d.ts +7 -0
  980. package/types/Spinner/SpinnerGlyph.d.ts.map +1 -0
  981. package/types/Spinner/index.d.ts +3 -6
  982. package/types/Spinner/index.d.ts.map +1 -1
  983. package/types/Spinner/index.native.d.ts +5 -0
  984. package/types/Spinner/index.native.d.ts.map +1 -0
  985. package/types/Spinner/spinnerSize.d.ts +16 -0
  986. package/types/Spinner/spinnerSize.d.ts.map +1 -0
  987. package/types/fieldLayout.d.ts.map +1 -1
  988. package/types/fields/Barcode/BarcodeScanner.d.ts +1 -1
  989. package/types/fields/Barcode/BarcodeScanner.d.ts.map +1 -1
  990. package/types/fields/Barcode/BarcodeScanner.native.d.ts +1 -1
  991. package/types/fields/Barcode/BarcodeScanner.native.d.ts.map +1 -1
  992. package/types/fields/Barcode/index.d.ts +2 -2
  993. package/types/fields/Barcode/index.d.ts.map +1 -1
  994. package/types/fields/Barcode/scannerTypes.d.ts +21 -0
  995. package/types/fields/Barcode/scannerTypes.d.ts.map +1 -1
  996. package/types/fields/Checkbox/Checkbox.d.ts.map +1 -1
  997. package/types/fields/Checkbox/CheckboxBox.d.ts +71 -0
  998. package/types/fields/Checkbox/CheckboxBox.d.ts.map +1 -0
  999. package/types/fields/Checkbox/CheckboxFieldFrame.d.ts +2 -2
  1000. package/types/fields/Checkbox/CheckboxFieldFrame.d.ts.map +1 -1
  1001. package/types/fields/Checkbox/CheckboxGroup.d.ts +1 -1
  1002. package/types/fields/Checkbox/CheckboxGroup.d.ts.map +1 -1
  1003. package/types/fields/Checkbox/index.d.ts +4 -4
  1004. package/types/fields/Checkbox/index.d.ts.map +1 -1
  1005. package/types/fields/ColorPicker/gradients.d.ts +4 -2
  1006. package/types/fields/ColorPicker/gradients.d.ts.map +1 -1
  1007. package/types/fields/ColorPicker/gradients.native.d.ts +4 -2
  1008. package/types/fields/ColorPicker/gradients.native.d.ts.map +1 -1
  1009. package/types/fields/ColorPicker/index.d.ts +1 -1
  1010. package/types/fields/ColorPicker/index.d.ts.map +1 -1
  1011. package/types/fields/ColorPicker/parts.d.ts +19 -4
  1012. package/types/fields/ColorPicker/parts.d.ts.map +1 -1
  1013. package/types/fields/Combobox/index.d.ts.map +1 -1
  1014. package/types/fields/DatePicker/Calendar.d.ts.map +1 -1
  1015. package/types/fields/DatePicker/DateRangePicker.d.ts +1 -1
  1016. package/types/fields/DatePicker/DateRangePicker.d.ts.map +1 -1
  1017. package/types/fields/DatePicker/DatetimePicker.d.ts +1 -1
  1018. package/types/fields/DatePicker/DatetimePicker.d.ts.map +1 -1
  1019. package/types/fields/DatePicker/MonthPicker.d.ts +1 -1
  1020. package/types/fields/DatePicker/MonthPicker.d.ts.map +1 -1
  1021. package/types/fields/DatePicker/MultiDatePicker.d.ts +1 -1
  1022. package/types/fields/DatePicker/MultiDatePicker.d.ts.map +1 -1
  1023. package/types/fields/DatePicker/index.d.ts +1 -1
  1024. package/types/fields/DatePicker/index.d.ts.map +1 -1
  1025. package/types/fields/DatePicker/parts.d.ts +52 -118
  1026. package/types/fields/DatePicker/parts.d.ts.map +1 -1
  1027. package/types/fields/Duration/index.d.ts +25 -6
  1028. package/types/fields/Duration/index.d.ts.map +1 -1
  1029. package/types/fields/FileUpload/index.d.ts +1 -1
  1030. package/types/fields/FileUpload/index.d.ts.map +1 -1
  1031. package/types/fields/Geolocation/GeolocationMap.d.ts +5 -5
  1032. package/types/fields/Geolocation/GeolocationMap.d.ts.map +1 -1
  1033. package/types/fields/Geolocation/GeolocationMap.native.d.ts +1 -1
  1034. package/types/fields/Geolocation/GeolocationMap.native.d.ts.map +1 -1
  1035. package/types/fields/Geolocation/index.d.ts +1 -1
  1036. package/types/fields/Geolocation/index.d.ts.map +1 -1
  1037. package/types/fields/Geolocation/mapMath.d.ts +41 -0
  1038. package/types/fields/Geolocation/mapMath.d.ts.map +1 -0
  1039. package/types/fields/Geolocation/mapTypes.d.ts +7 -2
  1040. package/types/fields/Geolocation/mapTypes.d.ts.map +1 -1
  1041. package/types/fields/ImageField/index.d.ts +9 -8
  1042. package/types/fields/ImageField/index.d.ts.map +1 -1
  1043. package/types/fields/Input/index.d.ts +38 -9
  1044. package/types/fields/Input/index.d.ts.map +1 -1
  1045. package/types/fields/MentionInput/index.d.ts +1 -1
  1046. package/types/fields/MentionInput/index.d.ts.map +1 -1
  1047. package/types/fields/OTPInput/index.d.ts +6 -0
  1048. package/types/fields/OTPInput/index.d.ts.map +1 -1
  1049. package/types/fields/OTPInput/otpCellCss.d.ts +3 -0
  1050. package/types/fields/OTPInput/otpCellCss.d.ts.map +1 -0
  1051. package/types/fields/PhoneInput/index.d.ts +1 -3
  1052. package/types/fields/PhoneInput/index.d.ts.map +1 -1
  1053. package/types/fields/PhoneInput/phone.d.ts +25 -0
  1054. package/types/fields/PhoneInput/phone.d.ts.map +1 -0
  1055. package/types/fields/Progress/index.d.ts +7 -2
  1056. package/types/fields/Progress/index.d.ts.map +1 -1
  1057. package/types/fields/RadioGroup/index.d.ts +2 -2
  1058. package/types/fields/RadioGroup/index.d.ts.map +1 -1
  1059. package/types/fields/Rating/StarInk.d.ts +15 -0
  1060. package/types/fields/Rating/StarInk.d.ts.map +1 -0
  1061. package/types/fields/Rating/StarInk.native.d.ts +49 -0
  1062. package/types/fields/Rating/StarInk.native.d.ts.map +1 -0
  1063. package/types/fields/Rating/index.d.ts +1 -1
  1064. package/types/fields/Rating/index.d.ts.map +1 -1
  1065. package/types/fields/Rating/types.d.ts +27 -0
  1066. package/types/fields/Rating/types.d.ts.map +1 -0
  1067. package/types/fields/SearchInput/index.d.ts +5 -3
  1068. package/types/fields/SearchInput/index.d.ts.map +1 -1
  1069. package/types/fields/Select/index.d.ts.map +1 -1
  1070. package/types/fields/Signature/index.d.ts +1 -1
  1071. package/types/fields/Signature/index.d.ts.map +1 -1
  1072. package/types/fields/Slider/index.d.ts +1 -1
  1073. package/types/fields/Slider/index.d.ts.map +1 -1
  1074. package/types/fields/Slider/jumpMotion.d.ts +7 -17
  1075. package/types/fields/Slider/jumpMotion.d.ts.map +1 -1
  1076. package/types/fields/Stepper/index.d.ts +8 -1
  1077. package/types/fields/Stepper/index.d.ts.map +1 -1
  1078. package/types/fields/Switch/index.d.ts +9 -1
  1079. package/types/fields/Switch/index.d.ts.map +1 -1
  1080. package/types/fields/TextArea/index.d.ts +1 -1
  1081. package/types/fields/TextArea/index.d.ts.map +1 -1
  1082. package/types/fields/TimePicker/index.d.ts +4 -3
  1083. package/types/fields/TimePicker/index.d.ts.map +1 -1
  1084. package/types/fields/TimePicker/parts.d.ts +51 -0
  1085. package/types/fields/TimePicker/parts.d.ts.map +1 -0
  1086. package/types/fields/ToggleGroup/index.d.ts +1 -1
  1087. package/types/fields/ToggleGroup/index.d.ts.map +1 -1
  1088. package/types/formSpacing.d.ts +3 -8
  1089. package/types/formSpacing.d.ts.map +1 -1
  1090. package/types/index.d.ts +2 -2
  1091. package/types/index.d.ts.map +1 -1
  1092. package/types/shared/devWarn.d.ts +1 -1
  1093. package/types/shared/devWarn.d.ts.map +1 -1
  1094. package/types/shared/focusManagement.d.ts.map +1 -1
  1095. package/types/shared/i18n.d.ts +13 -0
  1096. package/types/shared/i18n.d.ts.map +1 -0
  1097. package/types/shared/utils.d.ts +2 -2
  1098. package/types/shared/utils.d.ts.map +1 -1
  1099. package/types/themedPrimitives.d.ts +1 -1
  1100. package/types/themedPrimitives.d.ts.map +1 -1
@@ -98,6 +98,34 @@ describe("Switch", () => {
98
98
  expect(onCheckedChange).toHaveBeenCalledWith(true);
99
99
  });
100
100
 
101
+ it("forwards top-level aria-label to the role=switch node", () => {
102
+ const result = renderWithProviders(
103
+ <Switch aria-label="Toggle availability" defaultValue={false} />,
104
+ );
105
+ const switchElement = result.getSwitch();
106
+ expect(switchElement?.getAttribute("aria-label")).toBe("Toggle availability");
107
+ });
108
+
109
+ it("forwards top-level aria-labelledby to the role=switch node", () => {
110
+ const result = renderWithProviders(
111
+ <Switch aria-labelledby="external-label-id" defaultValue={false} />,
112
+ );
113
+ const switchElement = result.getSwitch();
114
+ expect(switchElement?.getAttribute("aria-labelledby")).toBe("external-label-id");
115
+ });
116
+
117
+ it("top-level aria-label wins over the switchProps escape hatch", () => {
118
+ const result = renderWithProviders(
119
+ <Switch
120
+ aria-label="Dedicated prop"
121
+ switchProps={{ "aria-label": "Escape hatch" } as any}
122
+ defaultValue={false}
123
+ />,
124
+ );
125
+ const switchElement = result.getSwitch();
126
+ expect(switchElement?.getAttribute("aria-label")).toBe("Dedicated prop");
127
+ });
128
+
101
129
  it("should toggle on via press+drag across the track", async () => {
102
130
  const onCheckedChange = vi.fn();
103
131
  const result = renderWithProviders(
@@ -208,16 +236,17 @@ describe("Switch", () => {
208
236
  fireEvent.pointerDown(switchElement, { clientX: 0, pointerId: 1, button: 0 });
209
237
  });
210
238
  await act(async () => {
211
- // Past drag-intent (10px) but still below the snap midpoint.
239
+ // Past drag-intent (10px) but still below the snap midpoint
240
+ // (recipe $4 track ≈ 21px, midpoint ≈ 10.5).
212
241
  fireEvent(
213
242
  document,
214
- new PointerEvent("pointermove", { clientX: 12, pointerId: 1, bubbles: true }),
243
+ new PointerEvent("pointermove", { clientX: 10, pointerId: 1, bubbles: true }),
215
244
  );
216
245
  });
217
246
  await act(async () => {
218
247
  fireEvent(
219
248
  document,
220
- new PointerEvent("pointerup", { clientX: 12, pointerId: 1, bubbles: true }),
249
+ new PointerEvent("pointerup", { clientX: 10, pointerId: 1, bubbles: true }),
221
250
  );
222
251
  });
223
252
  // Same-gesture press that follows a drag must not flip the value.
@@ -363,4 +392,24 @@ describe("Switch", () => {
363
392
  expect(off.className).not.toContain("_bg-accentBackg");
364
393
  });
365
394
  });
395
+
396
+ describe("LC-71 RING-ANATOMY", () => {
397
+ it("does not paint a keyboard ring until keyboard-origin focus", () => {
398
+ const result = renderWithProviders(<Switch label="Focus" defaultValue={false} />);
399
+ const switchElement = result.getSwitch();
400
+ expect(switchElement).toBeTruthy();
401
+ expect(switchElement?.getAttribute("data-kb-focus")).toBeNull();
402
+ });
403
+
404
+ it("does not use outline as the on/selected channel", () => {
405
+ const result = renderWithProviders(<Switch label="On" defaultValue={true} />);
406
+ const switchElement = result.getSwitch();
407
+ expect(switchElement).toBeTruthy();
408
+ if (!switchElement) return;
409
+ expect(switchElement.getAttribute("aria-checked")).toBe("true");
410
+ expect(switchElement.getAttribute("data-kb-focus")).toBeNull();
411
+ const outline = getComputedStyle(switchElement).outlineWidth;
412
+ expect(outline === "0px" || outline === "").toBe(true);
413
+ });
414
+ });
366
415
  });
@@ -1,3 +1,4 @@
1
+ import { CheckIcon, XIcon } from "@phosphor-icons/react";
1
2
  import { action } from "@multiplatform.one/storybook";
2
3
  import type { Meta, StoryObj } from "@storybook/react-native-web-vite";
3
4
  import { useForm } from "@tanstack/react-form";
@@ -109,6 +110,38 @@ export const Pointy: Story = {
109
110
  ),
110
111
  };
111
112
 
113
+ export const States: Story = {
114
+ render: () => (
115
+ <YStack gap="$4" maxWidth={400}>
116
+ <Switch label="Off" defaultValue={false} />
117
+ <Switch label="On" defaultValue={true} />
118
+ <Switch label="Disabled off" disabled defaultValue={false} />
119
+ <Switch label="Disabled on" disabled defaultValue={true} />
120
+ <Switch label="Read only" readOnly defaultValue={true} />
121
+ </YStack>
122
+ ),
123
+ };
124
+
125
+ export const WithIcons: Story = {
126
+ render: () => (
127
+ <YStack gap="$4" maxWidth={400}>
128
+ <Switch
129
+ label="Do not disturb"
130
+ helperText="Icons sit in the off/on pockets"
131
+ defaultValue={false}
132
+ leftIcon={<XIcon />}
133
+ rightIcon={<CheckIcon />}
134
+ />
135
+ <Switch
136
+ label="Do not disturb"
137
+ defaultValue={true}
138
+ leftIcon={<XIcon />}
139
+ rightIcon={<CheckIcon />}
140
+ />
141
+ </YStack>
142
+ ),
143
+ };
144
+
112
145
  export const Sizes: Story = {
113
146
  render: () => (
114
147
  <YStack gap="$4" maxWidth={400}>
@@ -145,6 +178,7 @@ export const Interactive: Story = {
145
178
  };
146
179
 
147
180
  export const Comparison: StoryObj = {
181
+ parameters: { foreignContrastSpecimen: true },
148
182
  render: () => {
149
183
  const ComparisonExample = () => {
150
184
  const [customChecked, setCustomChecked] = useState(false);
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from "react";
2
- import { useEffect, useRef, useState } from "react";
2
+ import { useEffect, useLayoutEffect, useRef, useState } from "react";
3
3
  import type { AnyFormApi } from "../../types";
4
4
  import type { ColorTokens, FontSizeTokens, LabelProps, SizeTokens } from "tamagui";
5
5
  import {
@@ -19,12 +19,17 @@ import {
19
19
  useTheme,
20
20
  withStaticProperties,
21
21
  } from "tamagui";
22
- import { getSize } from "@tamagui/get-token";
23
22
  import {
23
+ TOUCH_HEIGHT_FLOOR,
24
24
  contrastRatio,
25
+ ensureFocusVisibleRing,
26
+ isTouchSurface,
25
27
  normalizeToHex,
26
28
  relativeLuminance,
29
+ sizeRecipeForToken,
27
30
  useResolvedKnobs,
31
+ wasKeyboardFocus,
32
+ ensureKeyboardModalityTracking,
28
33
  } from "@multiplatform.one/theme";
29
34
  import { Skeleton } from "../../Skeleton";
30
35
  import { Field, FieldLayout } from "../../fieldLayout";
@@ -45,11 +50,62 @@ const SWITCH_DRAG_INTENT_PX = 10;
45
50
  /** Minimum pressable height for the switch inside table cells (SP-FIXED). */
46
51
  const SWITCH_CELL_TARGET_HEIGHT = 44;
47
52
 
53
+ /**
54
+ * Apple / Material 3 / Polaris: the thumb floats inside the track (≈2px
55
+ * gutter), never flush to the rim. Shrinks on tiny sizes so the handle
56
+ * stays ≥10px.
57
+ */
58
+ const switchThumbInset = (trackInner: number) =>
59
+ Math.min(2, Math.max(0, Math.floor((trackInner - 10) / 2)));
60
+
61
+ /** `animation=none` resolves to undefined — do not fall back to `quick`. */
62
+ const resolveSwitchMotion = (token: string | undefined) =>
63
+ token && token !== "none" ? token : "none";
64
+
65
+ const SWITCH_KB_RING_CSS_ID = "mp-switch-kb-ring-css";
66
+ const SWITCH_KB_RING_CLASS = "mp-switch-kb-ring";
67
+
68
+ /** LC-71: Tamagui compiles focusStyle outlineWidth:0 to `:focus { outline-width:0 !important }`. */
69
+ function ensureSwitchKbRingCss() {
70
+ if (typeof document === "undefined") return;
71
+ const css = `:root:root:root:root:root:root:root:root .${SWITCH_KB_RING_CLASS}.${SWITCH_KB_RING_CLASS},:root:root:root:root:root:root:root:root .${SWITCH_KB_RING_CLASS}.${SWITCH_KB_RING_CLASS}:focus,:root:root:root:root:root:root:root:root .${SWITCH_KB_RING_CLASS}.${SWITCH_KB_RING_CLASS}:focus-visible{outline-width:2px!important;outline-style:solid!important;outline-color:var(--outlineColor,var(--c-outlineColor,CanvasText))!important;outline-offset:2px!important}`;
72
+ let tag = document.getElementById(SWITCH_KB_RING_CSS_ID) as HTMLStyleElement | null;
73
+ if (!tag) {
74
+ tag = document.createElement("style");
75
+ tag.id = SWITCH_KB_RING_CSS_ID;
76
+ document.head.appendChild(tag);
77
+ }
78
+ if (tag.textContent !== css) tag.textContent = css;
79
+ }
80
+
81
+ /** LC-71: hover/press/focus knobs must not smuggle a second outline channel. */
82
+ const stripOutlineFromState = (props?: Record<string, any>) => {
83
+ if (!props) return props;
84
+ const { outlineWidth, outlineStyle, outlineColor, outlineOffset, ...rest } = props;
85
+ return Object.keys(rest).length > 0 ? rest : undefined;
86
+ };
87
+
48
88
  // ─── Switch internals ─────────────────────────────────────────────────────────
49
89
 
50
- const getSwitchHeight = (val: SizeTokens) => Math.round(getVariableValue(getSize(val)) * 0.65);
90
+ /**
91
+ * Switch geometry rides the GENERATED size recipe (LC-75 / LC-80): the
92
+ * painted TRACK equals the family height for the token (track = thumb slot +
93
+ * 2×border), so a `$4` switch is exactly as tall as a `$4` input (32).
94
+ * Previously thumb/track indexed the flat Tamagui size ramp (getSize × 0.65)
95
+ * — the independent-position drift LC-75 bans. The styled fallbacks assume
96
+ * the 1px hairline track border; the component passes exact frameProps with
97
+ * the live knob borderWidth. Touch keeps the DESKTOP recipe for the painted
98
+ * track (a 44px-tall painted switch is not a control anyone ships) and
99
+ * restores the 44 floor on the PRESSABLE frame via grown-target mode below.
100
+ */
101
+ const SWITCH_TRACK_BORDER_FALLBACK = 1;
102
+
103
+ const getSwitchTrackHeight = (val: SizeTokens) => sizeRecipeForToken(String(val)).height;
51
104
 
52
- const getSwitchWidth = (val: SizeTokens) => getSwitchHeight(val) * 2;
105
+ const getSwitchThumbHeight = (
106
+ val: SizeTokens,
107
+ borderWidth: number = SWITCH_TRACK_BORDER_FALLBACK,
108
+ ) => getSwitchTrackHeight(val) - borderWidth * 2;
53
109
 
54
110
  const resolveRadiusValue = (radius: unknown) => {
55
111
  if (typeof radius === "number") return radius;
@@ -99,7 +155,7 @@ const SwitchThumbStyled = styled(View, {
99
155
 
100
156
  size: {
101
157
  "...size": (val) => {
102
- const size = getSwitchHeight(val);
158
+ const size = getSwitchThumbHeight(val);
103
159
  return { height: size, width: size };
104
160
  },
105
161
  },
@@ -121,13 +177,14 @@ const SwitchFrameStyled = styled(View, {
121
177
  borderRadius: 1000,
122
178
  backgroundColor: formSwitchColors.track.off,
123
179
  borderWidth: 1,
124
- borderColor: formControlColors.border,
125
-
126
- focusVisibleStyle: {
127
- outlineColor: "$outlineColor",
128
- outlineStyle: "solid",
129
- outlineWidth: 2,
130
- },
180
+ // Off track: muted fill + ≥3:1 boundary (M3 unselected outline,
181
+ // DF-06). On track is fill — see `checked` / `activeStyle`.
182
+ borderColor: formControlColors.boundary,
183
+ outlineWidth: 0,
184
+ focusStyle: { outlineWidth: 0 },
185
+ // LC-71: ring is painted from keyboard modality on the track, never
186
+ // via :focus-visible (mouse click on a <button> can still ring).
187
+ focusVisibleStyle: { outlineWidth: 0 },
131
188
  },
132
189
  },
133
190
 
@@ -138,14 +195,14 @@ const SwitchFrameStyled = styled(View, {
138
195
  },
139
196
  false: {
140
197
  backgroundColor: formSwitchColors.track.off,
141
- borderColor: formControlColors.border,
198
+ borderColor: formControlColors.boundary,
142
199
  },
143
200
  },
144
201
 
145
202
  size: {
146
203
  "...size": (val) => {
147
- const height = getSwitchHeight(val);
148
- const width = getSwitchWidth(val);
204
+ const height = getSwitchTrackHeight(val);
205
+ const width = getSwitchThumbHeight(val) * 2 + SWITCH_TRACK_BORDER_FALLBACK * 2;
149
206
  return { height, minHeight: height, width };
150
207
  },
151
208
  },
@@ -286,6 +343,10 @@ type SwitchControlProps = {
286
343
  accessibilityLabel?: string;
287
344
  /** Native VoiceOver/TalkBack hint (error or helper text). */
288
345
  accessibilityHint?: string;
346
+ /** Web accessible name — forwarded to the role="switch" node. */
347
+ ariaLabel?: string;
348
+ /** Web external labeling element id — forwarded to the role="switch" node. */
349
+ ariaLabelledBy?: string;
289
350
  /**
290
351
  * Grown-target mode (SP-FIXED): when set, the role=switch frame is a
291
352
  * `frameHeight`-tall transparent target (44px in table cells) and the
@@ -316,13 +377,25 @@ function SwitchControl({
316
377
  hoverStyle,
317
378
  pressStyle,
318
379
  focusStyle,
319
- focusVisibleStyle,
380
+ focusVisibleStyle: _focusVisibleStyle,
320
381
  accessibilityLabel,
321
382
  accessibilityHint,
383
+ ariaLabel,
384
+ ariaLabelledBy,
322
385
  cellTrack,
323
386
  }: SwitchControlProps) {
324
- const { disabledState } = useResolvedKnobs();
325
- // Travel distance for a 2:1 track (inner width − thumb ≈ thumb height).
387
+ if (isWeb) {
388
+ ensureKeyboardModalityTracking();
389
+ ensureSwitchKbRingCss();
390
+ }
391
+ const { disabledState, knobProps } = useResolvedKnobs();
392
+ const outlined = knobProps.outlined;
393
+ const trackOffFill = outlined ? "transparent" : formSwitchColors.track.off;
394
+ const trackOffBorder = formControlColors.boundary;
395
+ const thumbInset = switchThumbInset(thumbHeight);
396
+ const thumbSize = thumbHeight - thumbInset * 2;
397
+ const motion = resolveSwitchMotion(transition);
398
+ // Travel distance for a 2:1 track (inner width − thumb − gutters = thumb height).
326
399
  const dragDistance = thumbHeight;
327
400
  const [dragX, setDragX] = useState<number | null>(null);
328
401
  // Hold snapped thumb until the controlled `checked` prop catches up (avoids flash).
@@ -397,21 +470,61 @@ function SwitchControl({
397
470
  const restingX = displayChecked ? dragDistance : 0;
398
471
  const thumbX = dragX != null ? dragX : restingX;
399
472
  const canDrag = isWeb && !disabled && !readOnly;
473
+ const [kbFocus, setKbFocus] = useState(false);
474
+ useLayoutEffect(() => {
475
+ if (!isWeb) return;
476
+ const el = document.getElementById(id);
477
+ if (!el) return;
478
+ const apply = (node: HTMLElement | null, on: boolean) => {
479
+ if (!node?.style) return;
480
+ if (on) {
481
+ node.style.setProperty("outline-width", "2px", "important");
482
+ node.style.setProperty("outline-style", "solid", "important");
483
+ node.style.setProperty(
484
+ "outline-color",
485
+ "var(--outlineColor, var(--c-outlineColor, CanvasText))",
486
+ "important",
487
+ );
488
+ node.style.setProperty("outline-offset", "2px", "important");
489
+ } else {
490
+ node.style.removeProperty("outline-width");
491
+ node.style.removeProperty("outline-style");
492
+ node.style.removeProperty("outline-color");
493
+ node.style.removeProperty("outline-offset");
494
+ }
495
+ };
496
+ apply(el, kbFocus && !cellTrack);
497
+ apply(
498
+ el.querySelector(`.${SWITCH_KB_RING_CLASS}`) as HTMLElement | null,
499
+ kbFocus && !!cellTrack,
500
+ );
501
+ }, [kbFocus, cellTrack, id]);
502
+ const hoverSafe = stripOutlineFromState(hoverStyle);
503
+ const pressSafe = stripOutlineFromState(pressStyle);
504
+ const focusSafe = stripOutlineFromState(focusStyle);
400
505
  const {
401
506
  onPointerDown: switchPointerDown,
402
507
  onPress: switchPress,
508
+ onFocus: switchFocus,
509
+ onBlur: switchBlur,
510
+ className: switchClassName,
403
511
  ...restSwitchProps
404
512
  } = (switchProps || {}) as Record<string, any>;
513
+ const kbRingClass = kbFocus ? SWITCH_KB_RING_CLASS : undefined;
514
+ const frameClassName =
515
+ [switchClassName, !cellTrack ? kbRingClass : undefined].filter(Boolean).join(" ") || undefined;
405
516
 
406
517
  return (
407
518
  <StyledSwitch
408
519
  {...inputSurface}
409
- transition={transition || "quick"}
520
+ transition={motion}
410
521
  size={sizeToken}
411
- {...(hoverStyle && { hoverStyle })}
412
- {...(pressStyle && { pressStyle })}
413
- {...(focusStyle && { focusStyle })}
414
- {...(focusVisibleStyle && { focusVisibleStyle })}
522
+ {...(hoverSafe && { hoverStyle: hoverSafe })}
523
+ {...(pressSafe && { pressStyle: pressSafe })}
524
+ {...(focusSafe && { focusStyle: { ...focusSafe } })}
525
+ focusVisibleStyle={{ outlineWidth: 0 }}
526
+ // createSwitch applies `activeStyle` last when checked — that is the
527
+ // ON=fill channel (LC-71), not CSS :active.
415
528
  activeStyle={{
416
529
  backgroundColor: formSwitchColors.track.on,
417
530
  borderColor: formSwitchColors.track.on,
@@ -426,6 +539,24 @@ function SwitchControl({
426
539
  disabled={disabled}
427
540
  id={id}
428
541
  checked={checked}
542
+ {...(cellTrack
543
+ ? undefined
544
+ : displayChecked
545
+ ? {
546
+ backgroundColor: formSwitchColors.track.on,
547
+ borderColor: formSwitchColors.track.on,
548
+ }
549
+ : {
550
+ backgroundColor: trackOffFill,
551
+ borderColor: trackOffBorder,
552
+ })}
553
+ {...(kbFocus ? { "data-kb-focus": "true" } : undefined)}
554
+ {...(frameClassName ? { className: frameClassName } : undefined)}
555
+ {...(cellTrack
556
+ ? { outlineWidth: 0 }
557
+ : kbFocus
558
+ ? ensureFocusVisibleRing()
559
+ : { outlineWidth: 0 })}
429
560
  // iOS: bare styled Views are not accessibility elements — without this
430
561
  // block the switch is invisible to VoiceOver (no name, role, or state).
431
562
  {...(!isWeb && {
@@ -437,8 +568,21 @@ function SwitchControl({
437
568
  })}
438
569
  {...(readOnly ? { pointerEvents: "none" as const } : undefined)}
439
570
  {...(readOnly ? { "aria-readonly": true } : undefined)}
571
+ // Top-level aria-label/aria-labelledby land AFTER restSwitchProps so
572
+ // the dedicated props win over the legacy switchProps escape hatch.
573
+ {...(ariaLabel ? { "aria-label": ariaLabel } : undefined)}
574
+ {...(ariaLabelledBy ? { "aria-labelledby": ariaLabelledBy } : undefined)}
440
575
  aria-required={required || undefined}
441
576
  aria-invalid={hasError || undefined}
577
+ onFocus={(e: any) => {
578
+ switchFocus?.(e);
579
+ if (wasKeyboardFocus()) setKbFocus(true);
580
+ }}
581
+ onBlur={(e: any) => {
582
+ setKbFocus(false);
583
+ switchBlur?.(e);
584
+ onBlur?.(e);
585
+ }}
442
586
  onCheckedChange={(val) => {
443
587
  if (disabled || readOnly) return;
444
588
  // After a drag, Tamagui still fires press→toggle; ignore that flip.
@@ -448,7 +592,6 @@ function SwitchControl({
448
592
  }
449
593
  onCheckedChange?.(val);
450
594
  }}
451
- {...(onBlur ? { onBlur } : undefined)}
452
595
  onPointerDown={(e: any) => {
453
596
  switchPointerDown?.(e);
454
597
  if (!canDrag) return;
@@ -476,24 +619,26 @@ function SwitchControl({
476
619
  height={cellTrack.height}
477
620
  borderRadius={cellTrack.borderRadius}
478
621
  borderWidth={cellTrack.borderWidth}
479
- borderColor={displayChecked ? formSwitchColors.track.on : formControlColors.border}
480
- backgroundColor={displayChecked ? formSwitchColors.track.on : formSwitchColors.track.off}
481
- transition={transition || "quick"}
622
+ borderColor={displayChecked ? formSwitchColors.track.on : trackOffBorder}
623
+ backgroundColor={displayChecked ? formSwitchColors.track.on : trackOffFill}
624
+ transition={motion}
482
625
  pointerEvents="none"
626
+ className={kbFocus ? SWITCH_KB_RING_CLASS : undefined}
627
+ {...(kbFocus ? ensureFocusVisibleRing() : { outlineWidth: 0 })}
483
628
  />
484
629
  )}
485
630
  {leftIcon && <StyledSwitch.Icon placement="left">{leftIcon}</StyledSwitch.Icon>}
486
631
  {rightIcon && <StyledSwitch.Icon placement="right">{rightIcon}</StyledSwitch.Icon>}
487
632
  <StyledSwitch.Thumb
488
633
  borderRadius={thumbRadius}
634
+ width={thumbSize}
635
+ height={thumbSize}
489
636
  // Own position so drag can override Tamagui's initialChecked alignSelf/x math.
490
637
  alignSelf="flex-start"
491
- x={thumbX + (cellTrack ? cellTrack.borderWidth : 0)}
492
- {...(cellTrack && {
493
- y: (cellTrack.frameHeight - thumbHeight) / 2,
494
- })}
638
+ x={thumbX + thumbInset + (cellTrack ? cellTrack.borderWidth : 0)}
639
+ y={cellTrack ? (cellTrack.frameHeight - thumbSize) / 2 : thumbInset}
495
640
  {...(thumbHandleColor ? { backgroundColor: thumbHandleColor } : undefined)}
496
- transition={dragX != null ? "none" : transition || "quick"}
641
+ transition={dragX != null ? "none" : motion}
497
642
  />
498
643
  </StyledSwitch>
499
644
  );
@@ -524,6 +669,14 @@ export interface SwitchProps {
524
669
  onChange?: (checked: boolean) => void;
525
670
  onCheckedChange?: (checked: boolean) => void;
526
671
  onBlur?: (...args: any[]) => void;
672
+ /**
673
+ * Accessible name for the role="switch" control — use when there is no
674
+ * visible `label` (icon-only / externally-labeled toggles). Forwarded to
675
+ * the rendered switch node (web) and VoiceOver/TalkBack name (native).
676
+ */
677
+ "aria-label"?: string;
678
+ /** Id of an external element that labels the switch (web). */
679
+ "aria-labelledby"?: string;
527
680
  leftIcon?: ReactNode;
528
681
  rightIcon?: ReactNode;
529
682
  switchProps?: Omit<
@@ -563,6 +716,8 @@ export function Switch({
563
716
  onChange,
564
717
  onCheckedChange,
565
718
  onBlur,
719
+ "aria-label": ariaLabel,
720
+ "aria-labelledby": ariaLabelledBy,
566
721
  leftIcon,
567
722
  rightIcon,
568
723
  switchProps,
@@ -596,20 +751,25 @@ export function Switch({
596
751
 
597
752
  // Coordinated geometry (LC-10): ONE size token drives the control (track,
598
753
  // thumb) AND the row slot, so an explicit `size` prop can never make the
599
- // control outgrow its own row.
754
+ // control outgrow its own row. Track = recipe height (LC-75); the thumb
755
+ // rides inside it.
600
756
  const sizeToken = (size ?? knobProps.sizeToken) as SizeTokens;
601
757
  const borderWidth = knobProps.borderRadius.borderWidth ?? 1;
602
- const thumbHeight = getSwitchHeight(sizeToken);
758
+ const thumbHeight = getSwitchThumbHeight(sizeToken, borderWidth);
603
759
  const trackHeight = thumbHeight + borderWidth * 2;
604
760
  // Grown-target mode (SP-FIXED): table cells always grow the pressable
605
- // frame to 44px; standalone consumers opt in via `minTargetHeight`. The
606
- // row slot floors at the frame height so grown targets never overlap
607
- // sibling rows.
761
+ // frame to 44px; standalone consumers opt in via `minTargetHeight`; touch
762
+ // surfaces get the LC-77 44px floor on the PRESSABLE frame while the
763
+ // painted track keeps the desktop recipe height (same split as Select:
764
+ // floor on the target, never on painted chrome). The row slot floors at
765
+ // the frame height so grown targets never overlap sibling rows.
608
766
  const targetHeight = inTableCell
609
767
  ? SWITCH_CELL_TARGET_HEIGHT
610
768
  : minTargetHeight !== undefined
611
769
  ? Math.max(minTargetHeight, trackHeight)
612
- : undefined;
770
+ : isTouchSurface() && trackHeight < TOUCH_HEIGHT_FLOOR
771
+ ? TOUCH_HEIGHT_FLOOR
772
+ : undefined;
613
773
  const grownTarget = targetHeight !== undefined;
614
774
  const rowMinHeight = !inTableCell && grownTarget ? targetHeight : undefined;
615
775
 
@@ -677,23 +837,33 @@ export function Switch({
677
837
  // (invisible) grown frame transparent in the checked state too.
678
838
  activeStyle: { backgroundColor: "transparent", borderColor: "transparent" },
679
839
  };
840
+ } else if (switchChecked) {
841
+ frameProps = {
842
+ ...frameProps,
843
+ backgroundColor: formSwitchColors.track.on,
844
+ borderColor: formSwitchColors.track.on,
845
+ };
846
+ } else {
847
+ frameProps = {
848
+ ...frameProps,
849
+ backgroundColor: knobProps.outlined ? "transparent" : formSwitchColors.track.off,
850
+ borderColor: formControlColors.boundary,
851
+ };
680
852
  }
681
853
 
682
- // Checked tracks keep the accent fill AND border through hover/press/
683
- // focus — the control knobs' neutral state-layer ($backgroundHover/
684
- // $backgroundPress) must never paint over the active accent track
685
- // (LC-05 ONE-EMPHASIS), so the checked fill is re-applied last.
686
- const stateBorderColor = switchChecked ? formSwitchColors.track.on : formControlColors.border;
854
+ // Checked tracks keep the accent FILL through hover/press/focus — the
855
+ // control knobs' neutral state-layer ($backgroundHover/$backgroundPress)
856
+ // must never paint over the active accent track (LC-05 / LC-71 on=fill).
857
+ const stateBorderColor = switchChecked ? formSwitchColors.track.on : formControlColors.boundary;
687
858
  const checkedTrackFill = switchChecked
688
859
  ? {
689
860
  backgroundColor: formSwitchColors.track.on,
690
861
  borderColor: formSwitchColors.track.on,
691
862
  }
692
863
  : undefined;
693
- const hoverKnob = stripRadiusFromStateProps(control.hoverKnobProps);
694
- const pressKnob = stripRadiusFromStateProps(control.pressKnobProps);
695
- const focusKnob = stripRadiusFromStateProps(control.focusKnobProps);
696
- const focusVisibleKnob = stripRadiusFromStateProps(control.focusVisibleKnobProps);
864
+ const hoverKnob = stripOutlineFromState(stripRadiusFromStateProps(control.hoverKnobProps));
865
+ const pressKnob = stripOutlineFromState(stripRadiusFromStateProps(control.pressKnobProps));
866
+ const focusKnob = stripOutlineFromState(stripRadiusFromStateProps(control.focusKnobProps));
697
867
 
698
868
  const switchElement = (
699
869
  <SwitchControl
@@ -712,7 +882,7 @@ export function Switch({
712
882
  sizeToken={sizeToken}
713
883
  thumbHeight={thumbHeight}
714
884
  thumbRadius={thumbRadius}
715
- transition={(knobProps.transition as string | undefined) || "quick"}
885
+ transition={resolveSwitchMotion(knobProps.transition as string | undefined)}
716
886
  frameProps={frameProps}
717
887
  switchProps={switchProps}
718
888
  leftIcon={leftIcon}
@@ -720,22 +890,22 @@ export function Switch({
720
890
  inputSurface={grownTarget ? {} : knobProps.inputSurface}
721
891
  cellTrack={cellTrack}
722
892
  accessibilityLabel={
723
- typeof label === "string" ? `${label}${required ? " *" : ""}` : undefined
893
+ typeof label === "string" ? `${label}${required ? " *" : ""}` : ariaLabel
724
894
  }
725
895
  accessibilityHint={errorMessage ?? helperText}
896
+ ariaLabel={ariaLabel}
897
+ ariaLabelledBy={ariaLabelledBy}
726
898
  {...(hoverKnob && {
727
- hoverStyle: { borderColor: stateBorderColor, ...hoverKnob, ...checkedTrackFill },
899
+ hoverStyle: { ...hoverKnob, borderColor: stateBorderColor, ...checkedTrackFill },
728
900
  })}
729
901
  {...(pressKnob && {
730
- pressStyle: { borderColor: stateBorderColor, ...pressKnob, ...checkedTrackFill },
902
+ pressStyle: { ...pressKnob, borderColor: stateBorderColor, ...checkedTrackFill },
731
903
  })}
732
904
  {...(focusKnob && {
733
- focusStyle: { borderColor: stateBorderColor, ...focusKnob, ...checkedTrackFill },
734
- })}
735
- {...(focusVisibleKnob && {
736
- focusVisibleStyle: {
905
+ focusStyle: {
906
+ outlineWidth: 0,
907
+ ...focusKnob,
737
908
  borderColor: stateBorderColor,
738
- ...focusVisibleKnob,
739
909
  ...checkedTrackFill,
740
910
  },
741
911
  })}
@@ -772,7 +942,14 @@ export function Switch({
772
942
  height={trackHeight}
773
943
  borderRadius={isSquare ? 0 : 1000}
774
944
  />
775
- {label && <Skeleton variant="text" width={96} height={14} />}
945
+ {label && (
946
+ <Skeleton
947
+ variant="text"
948
+ width={96}
949
+ // Label bone tracks the recipe type channel (LC-20 mirrors anatomy).
950
+ height={sizeRecipeForToken(String(sizeToken)).fontSize}
951
+ />
952
+ )}
776
953
  </XStack>
777
954
  </FieldLayout>
778
955
  );
@@ -239,6 +239,44 @@ describe("TextArea", () => {
239
239
  });
240
240
  });
241
241
 
242
+ describe("LC-71 ring anatomy and character count", () => {
243
+ it("paints the ring class on the Box; the inner textarea is mp-input-area", () => {
244
+ const result = renderWithProviders(<TextArea label="Notes" defaultValue="hello" />);
245
+ const textarea = result.getTextArea() as HTMLTextAreaElement;
246
+ expect(textarea?.className).toMatch(/mp-input-area/);
247
+ expect(textarea?.closest(".mp-composite-ring")).toBeTruthy();
248
+ expect(textarea?.getAttribute("aria-multiline")).toBe("true");
249
+ });
250
+
251
+ it("surfaces a live character count when maxLength is set, announced only while focused", async () => {
252
+ const result = renderWithProviders(
253
+ <TextArea label="Notes" id="notes-count" maxLength={20} defaultValue="hello" />,
254
+ );
255
+ const textarea = result.getTextArea() as HTMLTextAreaElement;
256
+ const count = result.container.querySelector("#notes-count-count");
257
+ expect(count?.textContent).toBe("5/20");
258
+ expect(count?.getAttribute("aria-live")).toBe("off");
259
+ expect(textarea?.getAttribute("aria-describedby") ?? "").toContain("notes-count-count");
260
+
261
+ await act(async () => {
262
+ if (textarea) fireEvent.focus(textarea);
263
+ });
264
+ expect(count?.getAttribute("aria-live")).toBe("polite");
265
+
266
+ await act(async () => {
267
+ if (textarea) fireEvent.blur(textarea);
268
+ });
269
+ expect(count?.getAttribute("aria-live")).toBe("off");
270
+ });
271
+
272
+ it("does not render a count when showCount is explicitly false", () => {
273
+ const result = renderWithProviders(
274
+ <TextArea label="Notes" maxLength={20} showCount={false} defaultValue="hello" />,
275
+ );
276
+ expect(result.container.textContent).not.toContain("5/20");
277
+ });
278
+ });
279
+
242
280
  describe("with useForm hook directly", () => {
243
281
  it("should handle form submission with useForm", async () => {
244
282
  const onSubmitMock = vi.fn();