@multiplatform.one/forms 6.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 (1591) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +239 -0
  3. package/dist/cjs/AdaptivePopup/AdaptivePopup.stories.cjs +257 -0
  4. package/dist/cjs/AdaptivePopup/AdaptivePopup.stories.native.js +269 -0
  5. package/dist/cjs/AdaptivePopup/AdaptivePopup.stories.native.js.map +1 -0
  6. package/dist/cjs/AdaptivePopup/index.cjs +186 -0
  7. package/dist/cjs/AdaptivePopup/index.native.js +192 -0
  8. package/dist/cjs/AdaptivePopup/index.native.js.map +1 -0
  9. package/dist/cjs/Button/Button.stories.cjs +255 -0
  10. package/dist/cjs/Button/Button.stories.native.js +271 -0
  11. package/dist/cjs/Button/Button.stories.native.js.map +1 -0
  12. package/dist/cjs/Button/index.cjs +279 -0
  13. package/dist/cjs/Button/index.native.js +301 -0
  14. package/dist/cjs/Button/index.native.js.map +1 -0
  15. package/dist/cjs/Chip/index.cjs +198 -0
  16. package/dist/cjs/Chip/index.native.js +203 -0
  17. package/dist/cjs/Chip/index.native.js.map +1 -0
  18. package/dist/cjs/ControlGroup/index.cjs +189 -0
  19. package/dist/cjs/ControlGroup/index.native.js +198 -0
  20. package/dist/cjs/ControlGroup/index.native.js.map +1 -0
  21. package/dist/cjs/FieldDisplay/editMode.cjs +69 -0
  22. package/dist/cjs/FieldDisplay/editMode.native.js +73 -0
  23. package/dist/cjs/FieldDisplay/editMode.native.js.map +1 -0
  24. package/dist/cjs/FieldDisplay/index.cjs +406 -0
  25. package/dist/cjs/FieldDisplay/index.native.js +447 -0
  26. package/dist/cjs/FieldDisplay/index.native.js.map +1 -0
  27. package/dist/cjs/FloatingPanel/FloatingPanel.stories.cjs +252 -0
  28. package/dist/cjs/FloatingPanel/FloatingPanel.stories.native.js +267 -0
  29. package/dist/cjs/FloatingPanel/FloatingPanel.stories.native.js.map +1 -0
  30. package/dist/cjs/FloatingPanel/index.cjs +374 -0
  31. package/dist/cjs/FloatingPanel/index.native.js +392 -0
  32. package/dist/cjs/FloatingPanel/index.native.js.map +1 -0
  33. package/dist/cjs/FloatingPanel/useFloatingPanel.cjs +271 -0
  34. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js +294 -0
  35. package/dist/cjs/FloatingPanel/useFloatingPanel.native.js.map +1 -0
  36. package/dist/cjs/Form/Form.stories.cjs +1823 -0
  37. package/dist/cjs/Form/Form.stories.native.js +1863 -0
  38. package/dist/cjs/Form/Form.stories.native.js.map +1 -0
  39. package/dist/cjs/Form/form.spec.cjs +356 -0
  40. package/dist/cjs/Form/form.spec.native.js +367 -0
  41. package/dist/cjs/Form/form.spec.native.js.map +1 -0
  42. package/dist/cjs/Form/index.cjs +96 -0
  43. package/dist/cjs/Form/index.native.js +105 -0
  44. package/dist/cjs/Form/index.native.js.map +1 -0
  45. package/dist/cjs/FormGrid.cjs +61 -0
  46. package/dist/cjs/FormGrid.native.js +69 -0
  47. package/dist/cjs/FormGrid.native.js.map +1 -0
  48. package/dist/cjs/FormsIntegration.stories.cjs +415 -0
  49. package/dist/cjs/FormsIntegration.stories.native.js +460 -0
  50. package/dist/cjs/FormsIntegration.stories.native.js.map +1 -0
  51. package/dist/cjs/InputParts/index.cjs +585 -0
  52. package/dist/cjs/InputParts/index.native.js +615 -0
  53. package/dist/cjs/InputParts/index.native.js.map +1 -0
  54. package/dist/cjs/Label/index.cjs +43 -0
  55. package/dist/cjs/Label/index.native.js +47 -0
  56. package/dist/cjs/Label/index.native.js.map +1 -0
  57. package/dist/cjs/Skeleton/index.cjs +119 -0
  58. package/dist/cjs/Skeleton/index.native.js +127 -0
  59. package/dist/cjs/Skeleton/index.native.js.map +1 -0
  60. package/dist/cjs/Spinner/index.cjs +41 -0
  61. package/dist/cjs/Spinner/index.native.js +45 -0
  62. package/dist/cjs/Spinner/index.native.js.map +1 -0
  63. package/dist/cjs/Table/index.cjs +28 -0
  64. package/dist/cjs/Table/index.native.js +31 -0
  65. package/dist/cjs/Table/index.native.js.map +1 -0
  66. package/dist/cjs/Wheel/index.cjs +563 -0
  67. package/dist/cjs/Wheel/index.native.js +585 -0
  68. package/dist/cjs/Wheel/index.native.js.map +1 -0
  69. package/dist/cjs/fieldLayout.cjs +121 -0
  70. package/dist/cjs/fieldLayout.native.js +125 -0
  71. package/dist/cjs/fieldLayout.native.js.map +1 -0
  72. package/dist/cjs/fields/Barcode/Barcode.spec.cjs +106 -0
  73. package/dist/cjs/fields/Barcode/Barcode.spec.native.js +109 -0
  74. package/dist/cjs/fields/Barcode/Barcode.spec.native.js.map +1 -0
  75. package/dist/cjs/fields/Barcode/Barcode.stories.cjs +238 -0
  76. package/dist/cjs/fields/Barcode/Barcode.stories.native.js +252 -0
  77. package/dist/cjs/fields/Barcode/Barcode.stories.native.js.map +1 -0
  78. package/dist/cjs/fields/Barcode/BarcodeScanner.cjs +116 -0
  79. package/dist/cjs/fields/Barcode/BarcodeScanner.native.js +88 -0
  80. package/dist/cjs/fields/Barcode/BarcodeScanner.native.js.map +1 -0
  81. package/dist/cjs/fields/Barcode/index.cjs +214 -0
  82. package/dist/cjs/fields/Barcode/index.native.js +227 -0
  83. package/dist/cjs/fields/Barcode/index.native.js.map +1 -0
  84. package/dist/cjs/fields/Barcode/scannerTypes.cjs +18 -0
  85. package/dist/cjs/fields/Barcode/scannerTypes.native.js +21 -0
  86. package/dist/cjs/fields/Barcode/scannerTypes.native.js.map +1 -0
  87. package/dist/cjs/fields/Checkbox/Checkbox.cjs +368 -0
  88. package/dist/cjs/fields/Checkbox/Checkbox.native.js +380 -0
  89. package/dist/cjs/fields/Checkbox/Checkbox.native.js.map +1 -0
  90. package/dist/cjs/fields/Checkbox/Checkbox.spec.cjs +139 -0
  91. package/dist/cjs/fields/Checkbox/Checkbox.spec.native.js +142 -0
  92. package/dist/cjs/fields/Checkbox/Checkbox.spec.native.js.map +1 -0
  93. package/dist/cjs/fields/Checkbox/Checkbox.stories.cjs +457 -0
  94. package/dist/cjs/fields/Checkbox/Checkbox.stories.native.js +479 -0
  95. package/dist/cjs/fields/Checkbox/Checkbox.stories.native.js.map +1 -0
  96. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.cjs +76 -0
  97. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js +79 -0
  98. package/dist/cjs/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -0
  99. package/dist/cjs/fields/Checkbox/CheckboxGroup.cjs +171 -0
  100. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js +182 -0
  101. package/dist/cjs/fields/Checkbox/CheckboxGroup.native.js.map +1 -0
  102. package/dist/cjs/fields/Checkbox/index.cjs +237 -0
  103. package/dist/cjs/fields/Checkbox/index.native.js +241 -0
  104. package/dist/cjs/fields/Checkbox/index.native.js.map +1 -0
  105. package/dist/cjs/fields/ColorPicker/ColorPicker.spec.cjs +147 -0
  106. package/dist/cjs/fields/ColorPicker/ColorPicker.spec.native.js +158 -0
  107. package/dist/cjs/fields/ColorPicker/ColorPicker.spec.native.js.map +1 -0
  108. package/dist/cjs/fields/ColorPicker/ColorPicker.stories.cjs +242 -0
  109. package/dist/cjs/fields/ColorPicker/ColorPicker.stories.native.js +261 -0
  110. package/dist/cjs/fields/ColorPicker/ColorPicker.stories.native.js.map +1 -0
  111. package/dist/cjs/fields/ColorPicker/index.cjs +584 -0
  112. package/dist/cjs/fields/ColorPicker/index.native.js +609 -0
  113. package/dist/cjs/fields/ColorPicker/index.native.js.map +1 -0
  114. package/dist/cjs/fields/ColorPicker/parts.cjs +474 -0
  115. package/dist/cjs/fields/ColorPicker/parts.native.js +491 -0
  116. package/dist/cjs/fields/ColorPicker/parts.native.js.map +1 -0
  117. package/dist/cjs/fields/Combobox/Combobox.spec.cjs +92 -0
  118. package/dist/cjs/fields/Combobox/Combobox.spec.native.js +95 -0
  119. package/dist/cjs/fields/Combobox/Combobox.spec.native.js.map +1 -0
  120. package/dist/cjs/fields/Combobox/Combobox.stories.cjs +331 -0
  121. package/dist/cjs/fields/Combobox/Combobox.stories.native.js +352 -0
  122. package/dist/cjs/fields/Combobox/Combobox.stories.native.js.map +1 -0
  123. package/dist/cjs/fields/Combobox/authorOptions.cjs +522 -0
  124. package/dist/cjs/fields/Combobox/authorOptions.native.js +525 -0
  125. package/dist/cjs/fields/Combobox/authorOptions.native.js.map +1 -0
  126. package/dist/cjs/fields/Combobox/index.cjs +1741 -0
  127. package/dist/cjs/fields/Combobox/index.native.js +2032 -0
  128. package/dist/cjs/fields/Combobox/index.native.js.map +1 -0
  129. package/dist/cjs/fields/DatePicker/Calendar.cjs +401 -0
  130. package/dist/cjs/fields/DatePicker/Calendar.native.js +444 -0
  131. package/dist/cjs/fields/DatePicker/Calendar.native.js.map +1 -0
  132. package/dist/cjs/fields/DatePicker/Calendar.spec.cjs +83 -0
  133. package/dist/cjs/fields/DatePicker/Calendar.spec.native.js +98 -0
  134. package/dist/cjs/fields/DatePicker/Calendar.spec.native.js.map +1 -0
  135. package/dist/cjs/fields/DatePicker/DatePicker.spec.cjs +86 -0
  136. package/dist/cjs/fields/DatePicker/DatePicker.spec.native.js +107 -0
  137. package/dist/cjs/fields/DatePicker/DatePicker.spec.native.js.map +1 -0
  138. package/dist/cjs/fields/DatePicker/DatePicker.stories.cjs +309 -0
  139. package/dist/cjs/fields/DatePicker/DatePicker.stories.native.js +336 -0
  140. package/dist/cjs/fields/DatePicker/DatePicker.stories.native.js.map +1 -0
  141. package/dist/cjs/fields/DatePicker/DateRangePicker.cjs +470 -0
  142. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js +495 -0
  143. package/dist/cjs/fields/DatePicker/DateRangePicker.native.js.map +1 -0
  144. package/dist/cjs/fields/DatePicker/DateRangePicker.spec.cjs +100 -0
  145. package/dist/cjs/fields/DatePicker/DateRangePicker.spec.native.js +122 -0
  146. package/dist/cjs/fields/DatePicker/DateRangePicker.spec.native.js.map +1 -0
  147. package/dist/cjs/fields/DatePicker/DatetimePicker.cjs +579 -0
  148. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js +624 -0
  149. package/dist/cjs/fields/DatePicker/DatetimePicker.native.js.map +1 -0
  150. package/dist/cjs/fields/DatePicker/DatetimePicker.spec.cjs +76 -0
  151. package/dist/cjs/fields/DatePicker/DatetimePicker.spec.native.js +79 -0
  152. package/dist/cjs/fields/DatePicker/DatetimePicker.spec.native.js.map +1 -0
  153. package/dist/cjs/fields/DatePicker/MonthPicker.cjs +308 -0
  154. package/dist/cjs/fields/DatePicker/MonthPicker.native.js +327 -0
  155. package/dist/cjs/fields/DatePicker/MonthPicker.native.js.map +1 -0
  156. package/dist/cjs/fields/DatePicker/MonthPicker.spec.cjs +76 -0
  157. package/dist/cjs/fields/DatePicker/MonthPicker.spec.native.js +79 -0
  158. package/dist/cjs/fields/DatePicker/MonthPicker.spec.native.js.map +1 -0
  159. package/dist/cjs/fields/DatePicker/MultiDatePicker.cjs +398 -0
  160. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js +428 -0
  161. package/dist/cjs/fields/DatePicker/MultiDatePicker.native.js.map +1 -0
  162. package/dist/cjs/fields/DatePicker/MultiDatePicker.spec.cjs +103 -0
  163. package/dist/cjs/fields/DatePicker/MultiDatePicker.spec.native.js +124 -0
  164. package/dist/cjs/fields/DatePicker/MultiDatePicker.spec.native.js.map +1 -0
  165. package/dist/cjs/fields/DatePicker/ThemeRefactor.spec.cjs +122 -0
  166. package/dist/cjs/fields/DatePicker/ThemeRefactor.spec.native.js +209 -0
  167. package/dist/cjs/fields/DatePicker/ThemeRefactor.spec.native.js.map +1 -0
  168. package/dist/cjs/fields/DatePicker/index.cjs +344 -0
  169. package/dist/cjs/fields/DatePicker/index.native.js +366 -0
  170. package/dist/cjs/fields/DatePicker/index.native.js.map +1 -0
  171. package/dist/cjs/fields/DatePicker/parts.cjs +478 -0
  172. package/dist/cjs/fields/DatePicker/parts.native.js +502 -0
  173. package/dist/cjs/fields/DatePicker/parts.native.js.map +1 -0
  174. package/dist/cjs/fields/DatePicker/utils.cjs +46 -0
  175. package/dist/cjs/fields/DatePicker/utils.native.js +58 -0
  176. package/dist/cjs/fields/DatePicker/utils.native.js.map +1 -0
  177. package/dist/cjs/fields/Duration/Duration.spec.cjs +80 -0
  178. package/dist/cjs/fields/Duration/Duration.spec.native.js +83 -0
  179. package/dist/cjs/fields/Duration/Duration.spec.native.js.map +1 -0
  180. package/dist/cjs/fields/Duration/Duration.stories.cjs +280 -0
  181. package/dist/cjs/fields/Duration/Duration.stories.native.js +296 -0
  182. package/dist/cjs/fields/Duration/Duration.stories.native.js.map +1 -0
  183. package/dist/cjs/fields/Duration/index.cjs +284 -0
  184. package/dist/cjs/fields/Duration/index.native.js +310 -0
  185. package/dist/cjs/fields/Duration/index.native.js.map +1 -0
  186. package/dist/cjs/fields/FileUpload/FileUpload.spec.cjs +17 -0
  187. package/dist/cjs/fields/FileUpload/FileUpload.spec.native.js +20 -0
  188. package/dist/cjs/fields/FileUpload/FileUpload.spec.native.js.map +1 -0
  189. package/dist/cjs/fields/FileUpload/FileUpload.stories.cjs +245 -0
  190. package/dist/cjs/fields/FileUpload/FileUpload.stories.native.js +262 -0
  191. package/dist/cjs/fields/FileUpload/FileUpload.stories.native.js.map +1 -0
  192. package/dist/cjs/fields/FileUpload/index.cjs +424 -0
  193. package/dist/cjs/fields/FileUpload/index.native.js +445 -0
  194. package/dist/cjs/fields/FileUpload/index.native.js.map +1 -0
  195. package/dist/cjs/fields/Geolocation/Geolocation.spec.cjs +105 -0
  196. package/dist/cjs/fields/Geolocation/Geolocation.spec.native.js +109 -0
  197. package/dist/cjs/fields/Geolocation/Geolocation.spec.native.js.map +1 -0
  198. package/dist/cjs/fields/Geolocation/Geolocation.stories.cjs +345 -0
  199. package/dist/cjs/fields/Geolocation/Geolocation.stories.native.js +360 -0
  200. package/dist/cjs/fields/Geolocation/Geolocation.stories.native.js.map +1 -0
  201. package/dist/cjs/fields/Geolocation/index.cjs +465 -0
  202. package/dist/cjs/fields/Geolocation/index.native.js +478 -0
  203. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -0
  204. package/dist/cjs/fields/ImageField/ImageField.spec.cjs +82 -0
  205. package/dist/cjs/fields/ImageField/ImageField.spec.native.js +85 -0
  206. package/dist/cjs/fields/ImageField/ImageField.spec.native.js.map +1 -0
  207. package/dist/cjs/fields/ImageField/ImageField.stories.cjs +301 -0
  208. package/dist/cjs/fields/ImageField/ImageField.stories.native.js +323 -0
  209. package/dist/cjs/fields/ImageField/ImageField.stories.native.js.map +1 -0
  210. package/dist/cjs/fields/ImageField/index.cjs +296 -0
  211. package/dist/cjs/fields/ImageField/index.native.js +315 -0
  212. package/dist/cjs/fields/ImageField/index.native.js.map +1 -0
  213. package/dist/cjs/fields/Input/Input.spec.cjs +102 -0
  214. package/dist/cjs/fields/Input/Input.spec.native.js +107 -0
  215. package/dist/cjs/fields/Input/Input.spec.native.js.map +1 -0
  216. package/dist/cjs/fields/Input/Input.stories.cjs +220 -0
  217. package/dist/cjs/fields/Input/Input.stories.native.js +231 -0
  218. package/dist/cjs/fields/Input/Input.stories.native.js.map +1 -0
  219. package/dist/cjs/fields/Input/index.cjs +228 -0
  220. package/dist/cjs/fields/Input/index.native.js +236 -0
  221. package/dist/cjs/fields/Input/index.native.js.map +1 -0
  222. package/dist/cjs/fields/MentionInput/MentionInput.spec.cjs +23 -0
  223. package/dist/cjs/fields/MentionInput/MentionInput.spec.native.js +26 -0
  224. package/dist/cjs/fields/MentionInput/MentionInput.spec.native.js.map +1 -0
  225. package/dist/cjs/fields/MentionInput/MentionInput.stories.cjs +332 -0
  226. package/dist/cjs/fields/MentionInput/MentionInput.stories.native.js +354 -0
  227. package/dist/cjs/fields/MentionInput/MentionInput.stories.native.js.map +1 -0
  228. package/dist/cjs/fields/MentionInput/index.cjs +557 -0
  229. package/dist/cjs/fields/MentionInput/index.native.js +648 -0
  230. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -0
  231. package/dist/cjs/fields/OTPInput/OtpInput.spec.cjs +638 -0
  232. package/dist/cjs/fields/OTPInput/OtpInput.spec.native.js +665 -0
  233. package/dist/cjs/fields/OTPInput/OtpInput.spec.native.js.map +1 -0
  234. package/dist/cjs/fields/OTPInput/OtpInput.stories.cjs +260 -0
  235. package/dist/cjs/fields/OTPInput/OtpInput.stories.native.js +271 -0
  236. package/dist/cjs/fields/OTPInput/OtpInput.stories.native.js.map +1 -0
  237. package/dist/cjs/fields/OTPInput/index.cjs +494 -0
  238. package/dist/cjs/fields/OTPInput/index.native.js +526 -0
  239. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -0
  240. package/dist/cjs/fields/PhoneInput/PhoneInput.spec.cjs +362 -0
  241. package/dist/cjs/fields/PhoneInput/PhoneInput.spec.native.js +367 -0
  242. package/dist/cjs/fields/PhoneInput/PhoneInput.spec.native.js.map +1 -0
  243. package/dist/cjs/fields/PhoneInput/PhoneInput.stories.cjs +229 -0
  244. package/dist/cjs/fields/PhoneInput/PhoneInput.stories.native.js +240 -0
  245. package/dist/cjs/fields/PhoneInput/PhoneInput.stories.native.js.map +1 -0
  246. package/dist/cjs/fields/PhoneInput/dialCodes.cjs +276 -0
  247. package/dist/cjs/fields/PhoneInput/dialCodes.native.js +279 -0
  248. package/dist/cjs/fields/PhoneInput/dialCodes.native.js.map +1 -0
  249. package/dist/cjs/fields/PhoneInput/index.cjs +257 -0
  250. package/dist/cjs/fields/PhoneInput/index.native.js +276 -0
  251. package/dist/cjs/fields/PhoneInput/index.native.js.map +1 -0
  252. package/dist/cjs/fields/Progress/Progress.spec.cjs +73 -0
  253. package/dist/cjs/fields/Progress/Progress.spec.native.js +76 -0
  254. package/dist/cjs/fields/Progress/Progress.spec.native.js.map +1 -0
  255. package/dist/cjs/fields/Progress/Progress.stories.cjs +242 -0
  256. package/dist/cjs/fields/Progress/Progress.stories.native.js +252 -0
  257. package/dist/cjs/fields/Progress/Progress.stories.native.js.map +1 -0
  258. package/dist/cjs/fields/Progress/index.cjs +154 -0
  259. package/dist/cjs/fields/Progress/index.native.js +160 -0
  260. package/dist/cjs/fields/Progress/index.native.js.map +1 -0
  261. package/dist/cjs/fields/RadioGroup/RadioGroup.spec.cjs +194 -0
  262. package/dist/cjs/fields/RadioGroup/RadioGroup.spec.native.js +204 -0
  263. package/dist/cjs/fields/RadioGroup/RadioGroup.spec.native.js.map +1 -0
  264. package/dist/cjs/fields/RadioGroup/RadioGroup.stories.cjs +361 -0
  265. package/dist/cjs/fields/RadioGroup/RadioGroup.stories.native.js +377 -0
  266. package/dist/cjs/fields/RadioGroup/RadioGroup.stories.native.js.map +1 -0
  267. package/dist/cjs/fields/RadioGroup/index.cjs +301 -0
  268. package/dist/cjs/fields/RadioGroup/index.native.js +313 -0
  269. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -0
  270. package/dist/cjs/fields/Rating/Rating.spec.cjs +93 -0
  271. package/dist/cjs/fields/Rating/Rating.spec.native.js +99 -0
  272. package/dist/cjs/fields/Rating/Rating.spec.native.js.map +1 -0
  273. package/dist/cjs/fields/Rating/Rating.stories.cjs +259 -0
  274. package/dist/cjs/fields/Rating/Rating.stories.native.js +267 -0
  275. package/dist/cjs/fields/Rating/Rating.stories.native.js.map +1 -0
  276. package/dist/cjs/fields/Rating/index.cjs +279 -0
  277. package/dist/cjs/fields/Rating/index.native.js +300 -0
  278. package/dist/cjs/fields/Rating/index.native.js.map +1 -0
  279. package/dist/cjs/fields/Select/Select.spec.cjs +234 -0
  280. package/dist/cjs/fields/Select/Select.spec.native.js +244 -0
  281. package/dist/cjs/fields/Select/Select.spec.native.js.map +1 -0
  282. package/dist/cjs/fields/Select/Select.stories.cjs +431 -0
  283. package/dist/cjs/fields/Select/Select.stories.native.js +457 -0
  284. package/dist/cjs/fields/Select/Select.stories.native.js.map +1 -0
  285. package/dist/cjs/fields/Select/index.cjs +1136 -0
  286. package/dist/cjs/fields/Select/index.native.js +1385 -0
  287. package/dist/cjs/fields/Select/index.native.js.map +1 -0
  288. package/dist/cjs/fields/Signature/Signature.spec.cjs +86 -0
  289. package/dist/cjs/fields/Signature/Signature.spec.native.js +91 -0
  290. package/dist/cjs/fields/Signature/Signature.spec.native.js.map +1 -0
  291. package/dist/cjs/fields/Signature/Signature.stories.cjs +265 -0
  292. package/dist/cjs/fields/Signature/Signature.stories.native.js +281 -0
  293. package/dist/cjs/fields/Signature/Signature.stories.native.js.map +1 -0
  294. package/dist/cjs/fields/Signature/index.cjs +520 -0
  295. package/dist/cjs/fields/Signature/index.native.js +568 -0
  296. package/dist/cjs/fields/Signature/index.native.js.map +1 -0
  297. package/dist/cjs/fields/Slider/Slider.spec.cjs +288 -0
  298. package/dist/cjs/fields/Slider/Slider.spec.native.js +293 -0
  299. package/dist/cjs/fields/Slider/Slider.spec.native.js.map +1 -0
  300. package/dist/cjs/fields/Slider/Slider.stories.cjs +302 -0
  301. package/dist/cjs/fields/Slider/Slider.stories.native.js +310 -0
  302. package/dist/cjs/fields/Slider/Slider.stories.native.js.map +1 -0
  303. package/dist/cjs/fields/Slider/index.cjs +198 -0
  304. package/dist/cjs/fields/Slider/index.native.js +207 -0
  305. package/dist/cjs/fields/Slider/index.native.js.map +1 -0
  306. package/dist/cjs/fields/Stepper/Stepper.spec.cjs +203 -0
  307. package/dist/cjs/fields/Stepper/Stepper.spec.native.js +212 -0
  308. package/dist/cjs/fields/Stepper/Stepper.spec.native.js.map +1 -0
  309. package/dist/cjs/fields/Stepper/Stepper.stories.cjs +239 -0
  310. package/dist/cjs/fields/Stepper/Stepper.stories.native.js +248 -0
  311. package/dist/cjs/fields/Stepper/Stepper.stories.native.js.map +1 -0
  312. package/dist/cjs/fields/Stepper/index.cjs +331 -0
  313. package/dist/cjs/fields/Stepper/index.native.js +347 -0
  314. package/dist/cjs/fields/Stepper/index.native.js.map +1 -0
  315. package/dist/cjs/fields/Switch/Switch.spec.cjs +182 -0
  316. package/dist/cjs/fields/Switch/Switch.spec.native.js +187 -0
  317. package/dist/cjs/fields/Switch/Switch.spec.native.js.map +1 -0
  318. package/dist/cjs/fields/Switch/Switch.stories.cjs +259 -0
  319. package/dist/cjs/fields/Switch/Switch.stories.native.js +269 -0
  320. package/dist/cjs/fields/Switch/Switch.stories.native.js.map +1 -0
  321. package/dist/cjs/fields/Switch/index.cjs +467 -0
  322. package/dist/cjs/fields/Switch/index.native.js +489 -0
  323. package/dist/cjs/fields/Switch/index.native.js.map +1 -0
  324. package/dist/cjs/fields/TextArea/TextArea.spec.cjs +258 -0
  325. package/dist/cjs/fields/TextArea/TextArea.spec.native.js +263 -0
  326. package/dist/cjs/fields/TextArea/TextArea.spec.native.js.map +1 -0
  327. package/dist/cjs/fields/TextArea/TextArea.stories.cjs +307 -0
  328. package/dist/cjs/fields/TextArea/TextArea.stories.native.js +316 -0
  329. package/dist/cjs/fields/TextArea/TextArea.stories.native.js.map +1 -0
  330. package/dist/cjs/fields/TextArea/index.cjs +266 -0
  331. package/dist/cjs/fields/TextArea/index.native.js +280 -0
  332. package/dist/cjs/fields/TextArea/index.native.js.map +1 -0
  333. package/dist/cjs/fields/TimePicker/TimePicker.spec.cjs +91 -0
  334. package/dist/cjs/fields/TimePicker/TimePicker.spec.native.js +94 -0
  335. package/dist/cjs/fields/TimePicker/TimePicker.spec.native.js.map +1 -0
  336. package/dist/cjs/fields/TimePicker/TimePicker.stories.cjs +341 -0
  337. package/dist/cjs/fields/TimePicker/TimePicker.stories.native.js +363 -0
  338. package/dist/cjs/fields/TimePicker/TimePicker.stories.native.js.map +1 -0
  339. package/dist/cjs/fields/TimePicker/index.cjs +353 -0
  340. package/dist/cjs/fields/TimePicker/index.native.js +386 -0
  341. package/dist/cjs/fields/TimePicker/index.native.js.map +1 -0
  342. package/dist/cjs/fields/ToggleGroup/ToggleGroup.spec.cjs +84 -0
  343. package/dist/cjs/fields/ToggleGroup/ToggleGroup.spec.native.js +87 -0
  344. package/dist/cjs/fields/ToggleGroup/ToggleGroup.spec.native.js.map +1 -0
  345. package/dist/cjs/fields/ToggleGroup/ToggleGroup.stories.cjs +362 -0
  346. package/dist/cjs/fields/ToggleGroup/ToggleGroup.stories.native.js +374 -0
  347. package/dist/cjs/fields/ToggleGroup/ToggleGroup.stories.native.js.map +1 -0
  348. package/dist/cjs/fields/ToggleGroup/index.cjs +354 -0
  349. package/dist/cjs/fields/ToggleGroup/index.native.js +366 -0
  350. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -0
  351. package/dist/cjs/hooks/useFocusManagement.cjs +250 -0
  352. package/dist/cjs/hooks/useFocusManagement.native.js +270 -0
  353. package/dist/cjs/hooks/useFocusManagement.native.js.map +1 -0
  354. package/dist/cjs/hooks/useFocusManagement.spec.cjs +241 -0
  355. package/dist/cjs/hooks/useFocusManagement.spec.native.js +251 -0
  356. package/dist/cjs/hooks/useFocusManagement.spec.native.js.map +1 -0
  357. package/dist/cjs/index.cjs +153 -0
  358. package/dist/cjs/index.native.js +156 -0
  359. package/dist/cjs/index.native.js.map +1 -0
  360. package/dist/cjs/shared/TimeColumn.cjs +116 -0
  361. package/dist/cjs/shared/TimeColumn.native.js +128 -0
  362. package/dist/cjs/shared/TimeColumn.native.js.map +1 -0
  363. package/dist/cjs/shared/colorRamps.cjs +84 -0
  364. package/dist/cjs/shared/colorRamps.native.js +87 -0
  365. package/dist/cjs/shared/colorRamps.native.js.map +1 -0
  366. package/dist/cjs/shared/floatingList.cjs +185 -0
  367. package/dist/cjs/shared/floatingList.native.js +194 -0
  368. package/dist/cjs/shared/floatingList.native.js.map +1 -0
  369. package/dist/cjs/shared/groupContext.cjs +31 -0
  370. package/dist/cjs/shared/groupContext.native.js +36 -0
  371. package/dist/cjs/shared/groupContext.native.js.map +1 -0
  372. package/dist/cjs/shared/tableCellContext.cjs +30 -0
  373. package/dist/cjs/shared/tableCellContext.native.js +33 -0
  374. package/dist/cjs/shared/tableCellContext.native.js.map +1 -0
  375. package/dist/cjs/shared/useDragScroll.cjs +91 -0
  376. package/dist/cjs/shared/useDragScroll.native.js +97 -0
  377. package/dist/cjs/shared/useDragScroll.native.js.map +1 -0
  378. package/dist/cjs/shared/useWheelIncrement.cjs +74 -0
  379. package/dist/cjs/shared/useWheelIncrement.native.js +77 -0
  380. package/dist/cjs/shared/useWheelIncrement.native.js.map +1 -0
  381. package/dist/cjs/shared/utils.cjs +200 -0
  382. package/dist/cjs/shared/utils.native.js +221 -0
  383. package/dist/cjs/shared/utils.native.js.map +1 -0
  384. package/dist/cjs/shared/utils.spec.cjs +157 -0
  385. package/dist/cjs/shared/utils.spec.native.js +160 -0
  386. package/dist/cjs/shared/utils.spec.native.js.map +1 -0
  387. package/dist/cjs/shared/zIndex.cjs +62 -0
  388. package/dist/cjs/shared/zIndex.native.js +65 -0
  389. package/dist/cjs/shared/zIndex.native.js.map +1 -0
  390. package/dist/cjs/themedPrimitives.cjs +69 -0
  391. package/dist/cjs/themedPrimitives.native.js +73 -0
  392. package/dist/cjs/themedPrimitives.native.js.map +1 -0
  393. package/dist/cjs/types.cjs +18 -0
  394. package/dist/cjs/types.native.js +21 -0
  395. package/dist/cjs/types.native.js.map +1 -0
  396. package/dist/cjs/utils/LinkCell.cjs +48 -0
  397. package/dist/cjs/utils/LinkCell.native.js +52 -0
  398. package/dist/cjs/utils/LinkCell.native.js.map +1 -0
  399. package/dist/esm/AdaptivePopup/AdaptivePopup.stories.mjs +226 -0
  400. package/dist/esm/AdaptivePopup/AdaptivePopup.stories.mjs.map +1 -0
  401. package/dist/esm/AdaptivePopup/AdaptivePopup.stories.native.js +235 -0
  402. package/dist/esm/AdaptivePopup/AdaptivePopup.stories.native.js.map +1 -0
  403. package/dist/esm/AdaptivePopup/index.mjs +161 -0
  404. package/dist/esm/AdaptivePopup/index.mjs.map +1 -0
  405. package/dist/esm/AdaptivePopup/index.native.js +164 -0
  406. package/dist/esm/AdaptivePopup/index.native.js.map +1 -0
  407. package/dist/esm/Button/Button.stories.mjs +226 -0
  408. package/dist/esm/Button/Button.stories.mjs.map +1 -0
  409. package/dist/esm/Button/Button.stories.native.js +239 -0
  410. package/dist/esm/Button/Button.stories.native.js.map +1 -0
  411. package/dist/esm/Button/index.mjs +254 -0
  412. package/dist/esm/Button/index.mjs.map +1 -0
  413. package/dist/esm/Button/index.native.js +273 -0
  414. package/dist/esm/Button/index.native.js.map +1 -0
  415. package/dist/esm/Chip/index.mjs +173 -0
  416. package/dist/esm/Chip/index.mjs.map +1 -0
  417. package/dist/esm/Chip/index.native.js +175 -0
  418. package/dist/esm/Chip/index.native.js.map +1 -0
  419. package/dist/esm/ControlGroup/index.mjs +164 -0
  420. package/dist/esm/ControlGroup/index.mjs.map +1 -0
  421. package/dist/esm/ControlGroup/index.native.js +170 -0
  422. package/dist/esm/ControlGroup/index.native.js.map +1 -0
  423. package/dist/esm/FieldDisplay/editMode.mjs +43 -0
  424. package/dist/esm/FieldDisplay/editMode.mjs.map +1 -0
  425. package/dist/esm/FieldDisplay/editMode.native.js +44 -0
  426. package/dist/esm/FieldDisplay/editMode.native.js.map +1 -0
  427. package/dist/esm/FieldDisplay/index.mjs +381 -0
  428. package/dist/esm/FieldDisplay/index.mjs.map +1 -0
  429. package/dist/esm/FieldDisplay/index.native.js +419 -0
  430. package/dist/esm/FieldDisplay/index.native.js.map +1 -0
  431. package/dist/esm/FloatingPanel/FloatingPanel.stories.mjs +222 -0
  432. package/dist/esm/FloatingPanel/FloatingPanel.stories.mjs.map +1 -0
  433. package/dist/esm/FloatingPanel/FloatingPanel.stories.native.js +234 -0
  434. package/dist/esm/FloatingPanel/FloatingPanel.stories.native.js.map +1 -0
  435. package/dist/esm/FloatingPanel/index.mjs +343 -0
  436. package/dist/esm/FloatingPanel/index.mjs.map +1 -0
  437. package/dist/esm/FloatingPanel/index.native.js +358 -0
  438. package/dist/esm/FloatingPanel/index.native.js.map +1 -0
  439. package/dist/esm/FloatingPanel/useFloatingPanel.mjs +242 -0
  440. package/dist/esm/FloatingPanel/useFloatingPanel.mjs.map +1 -0
  441. package/dist/esm/FloatingPanel/useFloatingPanel.native.js +262 -0
  442. package/dist/esm/FloatingPanel/useFloatingPanel.native.js.map +1 -0
  443. package/dist/esm/Form/Form.stories.mjs +1791 -0
  444. package/dist/esm/Form/Form.stories.mjs.map +1 -0
  445. package/dist/esm/Form/Form.stories.native.js +1828 -0
  446. package/dist/esm/Form/Form.stories.native.js.map +1 -0
  447. package/dist/esm/Form/form.spec.mjs +357 -0
  448. package/dist/esm/Form/form.spec.mjs.map +1 -0
  449. package/dist/esm/Form/form.spec.native.js +365 -0
  450. package/dist/esm/Form/form.spec.native.js.map +1 -0
  451. package/dist/esm/Form/index.mjs +69 -0
  452. package/dist/esm/Form/index.mjs.map +1 -0
  453. package/dist/esm/Form/index.native.js +75 -0
  454. package/dist/esm/Form/index.native.js.map +1 -0
  455. package/dist/esm/FormGrid.mjs +36 -0
  456. package/dist/esm/FormGrid.mjs.map +1 -0
  457. package/dist/esm/FormGrid.native.js +41 -0
  458. package/dist/esm/FormGrid.native.js.map +1 -0
  459. package/dist/esm/FormsIntegration.stories.mjs +388 -0
  460. package/dist/esm/FormsIntegration.stories.mjs.map +1 -0
  461. package/dist/esm/FormsIntegration.stories.native.js +430 -0
  462. package/dist/esm/FormsIntegration.stories.native.js.map +1 -0
  463. package/dist/esm/InputParts/index.mjs +549 -0
  464. package/dist/esm/InputParts/index.mjs.map +1 -0
  465. package/dist/esm/InputParts/index.native.js +576 -0
  466. package/dist/esm/InputParts/index.native.js.map +1 -0
  467. package/dist/esm/Label/index.mjs +18 -0
  468. package/dist/esm/Label/index.mjs.map +1 -0
  469. package/dist/esm/Label/index.native.js +19 -0
  470. package/dist/esm/Label/index.native.js.map +1 -0
  471. package/dist/esm/Skeleton/index.mjs +92 -0
  472. package/dist/esm/Skeleton/index.mjs.map +1 -0
  473. package/dist/esm/Skeleton/index.native.js +97 -0
  474. package/dist/esm/Skeleton/index.native.js.map +1 -0
  475. package/dist/esm/Spinner/index.mjs +16 -0
  476. package/dist/esm/Spinner/index.mjs.map +1 -0
  477. package/dist/esm/Spinner/index.native.js +17 -0
  478. package/dist/esm/Spinner/index.native.js.map +1 -0
  479. package/dist/esm/Table/index.mjs +3 -0
  480. package/dist/esm/Table/index.mjs.map +1 -0
  481. package/dist/esm/Table/index.native.js +3 -0
  482. package/dist/esm/Table/index.native.js.map +1 -0
  483. package/dist/esm/Wheel/index.mjs +538 -0
  484. package/dist/esm/Wheel/index.mjs.map +1 -0
  485. package/dist/esm/Wheel/index.native.js +557 -0
  486. package/dist/esm/Wheel/index.native.js.map +1 -0
  487. package/dist/esm/fieldLayout.mjs +94 -0
  488. package/dist/esm/fieldLayout.mjs.map +1 -0
  489. package/dist/esm/fieldLayout.native.js +95 -0
  490. package/dist/esm/fieldLayout.native.js.map +1 -0
  491. package/dist/esm/fields/Barcode/Barcode.spec.mjs +107 -0
  492. package/dist/esm/fields/Barcode/Barcode.spec.mjs.map +1 -0
  493. package/dist/esm/fields/Barcode/Barcode.spec.native.js +107 -0
  494. package/dist/esm/fields/Barcode/Barcode.spec.native.js.map +1 -0
  495. package/dist/esm/fields/Barcode/Barcode.stories.mjs +206 -0
  496. package/dist/esm/fields/Barcode/Barcode.stories.mjs.map +1 -0
  497. package/dist/esm/fields/Barcode/Barcode.stories.native.js +217 -0
  498. package/dist/esm/fields/Barcode/Barcode.stories.native.js.map +1 -0
  499. package/dist/esm/fields/Barcode/BarcodeScanner.mjs +80 -0
  500. package/dist/esm/fields/Barcode/BarcodeScanner.mjs.map +1 -0
  501. package/dist/esm/fields/Barcode/BarcodeScanner.native.js +60 -0
  502. package/dist/esm/fields/Barcode/BarcodeScanner.native.js.map +1 -0
  503. package/dist/esm/fields/Barcode/index.mjs +189 -0
  504. package/dist/esm/fields/Barcode/index.mjs.map +1 -0
  505. package/dist/esm/fields/Barcode/index.native.js +199 -0
  506. package/dist/esm/fields/Barcode/index.native.js.map +1 -0
  507. package/dist/esm/fields/Barcode/scannerTypes.mjs +2 -0
  508. package/dist/esm/fields/Barcode/scannerTypes.mjs.map +1 -0
  509. package/dist/esm/fields/Barcode/scannerTypes.native.js +2 -0
  510. package/dist/esm/fields/Barcode/scannerTypes.native.js.map +1 -0
  511. package/dist/esm/fields/Checkbox/Checkbox.mjs +343 -0
  512. package/dist/esm/fields/Checkbox/Checkbox.mjs.map +1 -0
  513. package/dist/esm/fields/Checkbox/Checkbox.native.js +352 -0
  514. package/dist/esm/fields/Checkbox/Checkbox.native.js.map +1 -0
  515. package/dist/esm/fields/Checkbox/Checkbox.spec.mjs +140 -0
  516. package/dist/esm/fields/Checkbox/Checkbox.spec.mjs.map +1 -0
  517. package/dist/esm/fields/Checkbox/Checkbox.spec.native.js +140 -0
  518. package/dist/esm/fields/Checkbox/Checkbox.spec.native.js.map +1 -0
  519. package/dist/esm/fields/Checkbox/Checkbox.stories.mjs +418 -0
  520. package/dist/esm/fields/Checkbox/Checkbox.stories.mjs.map +1 -0
  521. package/dist/esm/fields/Checkbox/Checkbox.stories.native.js +437 -0
  522. package/dist/esm/fields/Checkbox/Checkbox.stories.native.js.map +1 -0
  523. package/dist/esm/fields/Checkbox/CheckboxFieldFrame.mjs +51 -0
  524. package/dist/esm/fields/Checkbox/CheckboxFieldFrame.mjs.map +1 -0
  525. package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js +51 -0
  526. package/dist/esm/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -0
  527. package/dist/esm/fields/Checkbox/CheckboxGroup.mjs +146 -0
  528. package/dist/esm/fields/Checkbox/CheckboxGroup.mjs.map +1 -0
  529. package/dist/esm/fields/Checkbox/CheckboxGroup.native.js +154 -0
  530. package/dist/esm/fields/Checkbox/CheckboxGroup.native.js.map +1 -0
  531. package/dist/esm/fields/Checkbox/index.mjs +210 -0
  532. package/dist/esm/fields/Checkbox/index.mjs.map +1 -0
  533. package/dist/esm/fields/Checkbox/index.native.js +211 -0
  534. package/dist/esm/fields/Checkbox/index.native.js.map +1 -0
  535. package/dist/esm/fields/ColorPicker/ColorPicker.spec.mjs +124 -0
  536. package/dist/esm/fields/ColorPicker/ColorPicker.spec.mjs.map +1 -0
  537. package/dist/esm/fields/ColorPicker/ColorPicker.spec.native.js +132 -0
  538. package/dist/esm/fields/ColorPicker/ColorPicker.spec.native.js.map +1 -0
  539. package/dist/esm/fields/ColorPicker/ColorPicker.stories.mjs +208 -0
  540. package/dist/esm/fields/ColorPicker/ColorPicker.stories.mjs.map +1 -0
  541. package/dist/esm/fields/ColorPicker/ColorPicker.stories.native.js +224 -0
  542. package/dist/esm/fields/ColorPicker/ColorPicker.stories.native.js.map +1 -0
  543. package/dist/esm/fields/ColorPicker/index.mjs +559 -0
  544. package/dist/esm/fields/ColorPicker/index.mjs.map +1 -0
  545. package/dist/esm/fields/ColorPicker/index.native.js +581 -0
  546. package/dist/esm/fields/ColorPicker/index.native.js.map +1 -0
  547. package/dist/esm/fields/ColorPicker/parts.mjs +436 -0
  548. package/dist/esm/fields/ColorPicker/parts.mjs.map +1 -0
  549. package/dist/esm/fields/ColorPicker/parts.native.js +450 -0
  550. package/dist/esm/fields/ColorPicker/parts.native.js.map +1 -0
  551. package/dist/esm/fields/Combobox/Combobox.spec.mjs +93 -0
  552. package/dist/esm/fields/Combobox/Combobox.spec.mjs.map +1 -0
  553. package/dist/esm/fields/Combobox/Combobox.spec.native.js +93 -0
  554. package/dist/esm/fields/Combobox/Combobox.spec.native.js.map +1 -0
  555. package/dist/esm/fields/Combobox/Combobox.stories.mjs +296 -0
  556. package/dist/esm/fields/Combobox/Combobox.stories.mjs.map +1 -0
  557. package/dist/esm/fields/Combobox/Combobox.stories.native.js +314 -0
  558. package/dist/esm/fields/Combobox/Combobox.stories.native.js.map +1 -0
  559. package/dist/esm/fields/Combobox/authorOptions.mjs +496 -0
  560. package/dist/esm/fields/Combobox/authorOptions.mjs.map +1 -0
  561. package/dist/esm/fields/Combobox/authorOptions.native.js +496 -0
  562. package/dist/esm/fields/Combobox/authorOptions.native.js.map +1 -0
  563. package/dist/esm/fields/Combobox/index.mjs +1716 -0
  564. package/dist/esm/fields/Combobox/index.mjs.map +1 -0
  565. package/dist/esm/fields/Combobox/index.native.js +2004 -0
  566. package/dist/esm/fields/Combobox/index.native.js.map +1 -0
  567. package/dist/esm/fields/DatePicker/Calendar.mjs +376 -0
  568. package/dist/esm/fields/DatePicker/Calendar.mjs.map +1 -0
  569. package/dist/esm/fields/DatePicker/Calendar.native.js +416 -0
  570. package/dist/esm/fields/DatePicker/Calendar.native.js.map +1 -0
  571. package/dist/esm/fields/DatePicker/Calendar.spec.mjs +84 -0
  572. package/dist/esm/fields/DatePicker/Calendar.spec.mjs.map +1 -0
  573. package/dist/esm/fields/DatePicker/Calendar.spec.native.js +96 -0
  574. package/dist/esm/fields/DatePicker/Calendar.spec.native.js.map +1 -0
  575. package/dist/esm/fields/DatePicker/DatePicker.spec.mjs +63 -0
  576. package/dist/esm/fields/DatePicker/DatePicker.spec.mjs.map +1 -0
  577. package/dist/esm/fields/DatePicker/DatePicker.spec.native.js +81 -0
  578. package/dist/esm/fields/DatePicker/DatePicker.spec.native.js.map +1 -0
  579. package/dist/esm/fields/DatePicker/DatePicker.stories.mjs +269 -0
  580. package/dist/esm/fields/DatePicker/DatePicker.stories.mjs.map +1 -0
  581. package/dist/esm/fields/DatePicker/DatePicker.stories.native.js +293 -0
  582. package/dist/esm/fields/DatePicker/DatePicker.stories.native.js.map +1 -0
  583. package/dist/esm/fields/DatePicker/DateRangePicker.mjs +445 -0
  584. package/dist/esm/fields/DatePicker/DateRangePicker.mjs.map +1 -0
  585. package/dist/esm/fields/DatePicker/DateRangePicker.native.js +467 -0
  586. package/dist/esm/fields/DatePicker/DateRangePicker.native.js.map +1 -0
  587. package/dist/esm/fields/DatePicker/DateRangePicker.spec.mjs +77 -0
  588. package/dist/esm/fields/DatePicker/DateRangePicker.spec.mjs.map +1 -0
  589. package/dist/esm/fields/DatePicker/DateRangePicker.spec.native.js +96 -0
  590. package/dist/esm/fields/DatePicker/DateRangePicker.spec.native.js.map +1 -0
  591. package/dist/esm/fields/DatePicker/DatetimePicker.mjs +554 -0
  592. package/dist/esm/fields/DatePicker/DatetimePicker.mjs.map +1 -0
  593. package/dist/esm/fields/DatePicker/DatetimePicker.native.js +596 -0
  594. package/dist/esm/fields/DatePicker/DatetimePicker.native.js.map +1 -0
  595. package/dist/esm/fields/DatePicker/DatetimePicker.spec.mjs +77 -0
  596. package/dist/esm/fields/DatePicker/DatetimePicker.spec.mjs.map +1 -0
  597. package/dist/esm/fields/DatePicker/DatetimePicker.spec.native.js +77 -0
  598. package/dist/esm/fields/DatePicker/DatetimePicker.spec.native.js.map +1 -0
  599. package/dist/esm/fields/DatePicker/MonthPicker.mjs +283 -0
  600. package/dist/esm/fields/DatePicker/MonthPicker.mjs.map +1 -0
  601. package/dist/esm/fields/DatePicker/MonthPicker.native.js +299 -0
  602. package/dist/esm/fields/DatePicker/MonthPicker.native.js.map +1 -0
  603. package/dist/esm/fields/DatePicker/MonthPicker.spec.mjs +77 -0
  604. package/dist/esm/fields/DatePicker/MonthPicker.spec.mjs.map +1 -0
  605. package/dist/esm/fields/DatePicker/MonthPicker.spec.native.js +77 -0
  606. package/dist/esm/fields/DatePicker/MonthPicker.spec.native.js.map +1 -0
  607. package/dist/esm/fields/DatePicker/MultiDatePicker.mjs +373 -0
  608. package/dist/esm/fields/DatePicker/MultiDatePicker.mjs.map +1 -0
  609. package/dist/esm/fields/DatePicker/MultiDatePicker.native.js +400 -0
  610. package/dist/esm/fields/DatePicker/MultiDatePicker.native.js.map +1 -0
  611. package/dist/esm/fields/DatePicker/MultiDatePicker.spec.mjs +80 -0
  612. package/dist/esm/fields/DatePicker/MultiDatePicker.spec.mjs.map +1 -0
  613. package/dist/esm/fields/DatePicker/MultiDatePicker.spec.native.js +98 -0
  614. package/dist/esm/fields/DatePicker/MultiDatePicker.spec.native.js.map +1 -0
  615. package/dist/esm/fields/DatePicker/ThemeRefactor.spec.mjs +99 -0
  616. package/dist/esm/fields/DatePicker/ThemeRefactor.spec.mjs.map +1 -0
  617. package/dist/esm/fields/DatePicker/ThemeRefactor.spec.native.js +183 -0
  618. package/dist/esm/fields/DatePicker/ThemeRefactor.spec.native.js.map +1 -0
  619. package/dist/esm/fields/DatePicker/index.mjs +314 -0
  620. package/dist/esm/fields/DatePicker/index.mjs.map +1 -0
  621. package/dist/esm/fields/DatePicker/index.native.js +333 -0
  622. package/dist/esm/fields/DatePicker/index.native.js.map +1 -0
  623. package/dist/esm/fields/DatePicker/parts.mjs +438 -0
  624. package/dist/esm/fields/DatePicker/parts.mjs.map +1 -0
  625. package/dist/esm/fields/DatePicker/parts.native.js +459 -0
  626. package/dist/esm/fields/DatePicker/parts.native.js.map +1 -0
  627. package/dist/esm/fields/DatePicker/utils.mjs +21 -0
  628. package/dist/esm/fields/DatePicker/utils.mjs.map +1 -0
  629. package/dist/esm/fields/DatePicker/utils.native.js +30 -0
  630. package/dist/esm/fields/DatePicker/utils.native.js.map +1 -0
  631. package/dist/esm/fields/Duration/Duration.spec.mjs +81 -0
  632. package/dist/esm/fields/Duration/Duration.spec.mjs.map +1 -0
  633. package/dist/esm/fields/Duration/Duration.spec.native.js +81 -0
  634. package/dist/esm/fields/Duration/Duration.spec.native.js.map +1 -0
  635. package/dist/esm/fields/Duration/Duration.stories.mjs +247 -0
  636. package/dist/esm/fields/Duration/Duration.stories.mjs.map +1 -0
  637. package/dist/esm/fields/Duration/Duration.stories.native.js +260 -0
  638. package/dist/esm/fields/Duration/Duration.stories.native.js.map +1 -0
  639. package/dist/esm/fields/Duration/index.mjs +259 -0
  640. package/dist/esm/fields/Duration/index.mjs.map +1 -0
  641. package/dist/esm/fields/Duration/index.native.js +282 -0
  642. package/dist/esm/fields/Duration/index.native.js.map +1 -0
  643. package/dist/esm/fields/FileUpload/FileUpload.spec.mjs +18 -0
  644. package/dist/esm/fields/FileUpload/FileUpload.spec.mjs.map +1 -0
  645. package/dist/esm/fields/FileUpload/FileUpload.spec.native.js +18 -0
  646. package/dist/esm/fields/FileUpload/FileUpload.spec.native.js.map +1 -0
  647. package/dist/esm/fields/FileUpload/FileUpload.stories.mjs +212 -0
  648. package/dist/esm/fields/FileUpload/FileUpload.stories.mjs.map +1 -0
  649. package/dist/esm/fields/FileUpload/FileUpload.stories.native.js +226 -0
  650. package/dist/esm/fields/FileUpload/FileUpload.stories.native.js.map +1 -0
  651. package/dist/esm/fields/FileUpload/index.mjs +399 -0
  652. package/dist/esm/fields/FileUpload/index.mjs.map +1 -0
  653. package/dist/esm/fields/FileUpload/index.native.js +417 -0
  654. package/dist/esm/fields/FileUpload/index.native.js.map +1 -0
  655. package/dist/esm/fields/Geolocation/Geolocation.spec.mjs +106 -0
  656. package/dist/esm/fields/Geolocation/Geolocation.spec.mjs.map +1 -0
  657. package/dist/esm/fields/Geolocation/Geolocation.spec.native.js +107 -0
  658. package/dist/esm/fields/Geolocation/Geolocation.spec.native.js.map +1 -0
  659. package/dist/esm/fields/Geolocation/Geolocation.stories.mjs +310 -0
  660. package/dist/esm/fields/Geolocation/Geolocation.stories.mjs.map +1 -0
  661. package/dist/esm/fields/Geolocation/Geolocation.stories.native.js +322 -0
  662. package/dist/esm/fields/Geolocation/Geolocation.stories.native.js.map +1 -0
  663. package/dist/esm/fields/Geolocation/index.mjs +440 -0
  664. package/dist/esm/fields/Geolocation/index.mjs.map +1 -0
  665. package/dist/esm/fields/Geolocation/index.native.js +450 -0
  666. package/dist/esm/fields/Geolocation/index.native.js.map +1 -0
  667. package/dist/esm/fields/ImageField/ImageField.spec.mjs +83 -0
  668. package/dist/esm/fields/ImageField/ImageField.spec.mjs.map +1 -0
  669. package/dist/esm/fields/ImageField/ImageField.spec.native.js +83 -0
  670. package/dist/esm/fields/ImageField/ImageField.spec.native.js.map +1 -0
  671. package/dist/esm/fields/ImageField/ImageField.stories.mjs +265 -0
  672. package/dist/esm/fields/ImageField/ImageField.stories.mjs.map +1 -0
  673. package/dist/esm/fields/ImageField/ImageField.stories.native.js +284 -0
  674. package/dist/esm/fields/ImageField/ImageField.stories.native.js.map +1 -0
  675. package/dist/esm/fields/ImageField/index.mjs +271 -0
  676. package/dist/esm/fields/ImageField/index.mjs.map +1 -0
  677. package/dist/esm/fields/ImageField/index.native.js +287 -0
  678. package/dist/esm/fields/ImageField/index.native.js.map +1 -0
  679. package/dist/esm/fields/Input/Input.spec.mjs +103 -0
  680. package/dist/esm/fields/Input/Input.spec.mjs.map +1 -0
  681. package/dist/esm/fields/Input/Input.spec.native.js +105 -0
  682. package/dist/esm/fields/Input/Input.spec.native.js.map +1 -0
  683. package/dist/esm/fields/Input/Input.stories.mjs +189 -0
  684. package/dist/esm/fields/Input/Input.stories.mjs.map +1 -0
  685. package/dist/esm/fields/Input/Input.stories.native.js +197 -0
  686. package/dist/esm/fields/Input/Input.stories.native.js.map +1 -0
  687. package/dist/esm/fields/Input/index.mjs +203 -0
  688. package/dist/esm/fields/Input/index.mjs.map +1 -0
  689. package/dist/esm/fields/Input/index.native.js +208 -0
  690. package/dist/esm/fields/Input/index.native.js.map +1 -0
  691. package/dist/esm/fields/MentionInput/MentionInput.spec.mjs +24 -0
  692. package/dist/esm/fields/MentionInput/MentionInput.spec.mjs.map +1 -0
  693. package/dist/esm/fields/MentionInput/MentionInput.spec.native.js +24 -0
  694. package/dist/esm/fields/MentionInput/MentionInput.spec.native.js.map +1 -0
  695. package/dist/esm/fields/MentionInput/MentionInput.stories.mjs +299 -0
  696. package/dist/esm/fields/MentionInput/MentionInput.stories.mjs.map +1 -0
  697. package/dist/esm/fields/MentionInput/MentionInput.stories.native.js +318 -0
  698. package/dist/esm/fields/MentionInput/MentionInput.stories.native.js.map +1 -0
  699. package/dist/esm/fields/MentionInput/index.mjs +532 -0
  700. package/dist/esm/fields/MentionInput/index.mjs.map +1 -0
  701. package/dist/esm/fields/MentionInput/index.native.js +620 -0
  702. package/dist/esm/fields/MentionInput/index.native.js.map +1 -0
  703. package/dist/esm/fields/OTPInput/OtpInput.spec.mjs +639 -0
  704. package/dist/esm/fields/OTPInput/OtpInput.spec.mjs.map +1 -0
  705. package/dist/esm/fields/OTPInput/OtpInput.spec.native.js +663 -0
  706. package/dist/esm/fields/OTPInput/OtpInput.spec.native.js.map +1 -0
  707. package/dist/esm/fields/OTPInput/OtpInput.stories.mjs +227 -0
  708. package/dist/esm/fields/OTPInput/OtpInput.stories.mjs.map +1 -0
  709. package/dist/esm/fields/OTPInput/OtpInput.stories.native.js +235 -0
  710. package/dist/esm/fields/OTPInput/OtpInput.stories.native.js.map +1 -0
  711. package/dist/esm/fields/OTPInput/index.mjs +469 -0
  712. package/dist/esm/fields/OTPInput/index.mjs.map +1 -0
  713. package/dist/esm/fields/OTPInput/index.native.js +498 -0
  714. package/dist/esm/fields/OTPInput/index.native.js.map +1 -0
  715. package/dist/esm/fields/PhoneInput/PhoneInput.spec.mjs +363 -0
  716. package/dist/esm/fields/PhoneInput/PhoneInput.spec.mjs.map +1 -0
  717. package/dist/esm/fields/PhoneInput/PhoneInput.spec.native.js +365 -0
  718. package/dist/esm/fields/PhoneInput/PhoneInput.spec.native.js.map +1 -0
  719. package/dist/esm/fields/PhoneInput/PhoneInput.stories.mjs +196 -0
  720. package/dist/esm/fields/PhoneInput/PhoneInput.stories.mjs.map +1 -0
  721. package/dist/esm/fields/PhoneInput/PhoneInput.stories.native.js +204 -0
  722. package/dist/esm/fields/PhoneInput/PhoneInput.stories.native.js.map +1 -0
  723. package/dist/esm/fields/PhoneInput/dialCodes.mjs +250 -0
  724. package/dist/esm/fields/PhoneInput/dialCodes.mjs.map +1 -0
  725. package/dist/esm/fields/PhoneInput/dialCodes.native.js +250 -0
  726. package/dist/esm/fields/PhoneInput/dialCodes.native.js.map +1 -0
  727. package/dist/esm/fields/PhoneInput/index.mjs +232 -0
  728. package/dist/esm/fields/PhoneInput/index.mjs.map +1 -0
  729. package/dist/esm/fields/PhoneInput/index.native.js +248 -0
  730. package/dist/esm/fields/PhoneInput/index.native.js.map +1 -0
  731. package/dist/esm/fields/Progress/Progress.spec.mjs +74 -0
  732. package/dist/esm/fields/Progress/Progress.spec.mjs.map +1 -0
  733. package/dist/esm/fields/Progress/Progress.spec.native.js +74 -0
  734. package/dist/esm/fields/Progress/Progress.spec.native.js.map +1 -0
  735. package/dist/esm/fields/Progress/Progress.stories.mjs +209 -0
  736. package/dist/esm/fields/Progress/Progress.stories.mjs.map +1 -0
  737. package/dist/esm/fields/Progress/Progress.stories.native.js +216 -0
  738. package/dist/esm/fields/Progress/Progress.stories.native.js.map +1 -0
  739. package/dist/esm/fields/Progress/index.mjs +129 -0
  740. package/dist/esm/fields/Progress/index.mjs.map +1 -0
  741. package/dist/esm/fields/Progress/index.native.js +132 -0
  742. package/dist/esm/fields/Progress/index.native.js.map +1 -0
  743. package/dist/esm/fields/RadioGroup/RadioGroup.spec.mjs +195 -0
  744. package/dist/esm/fields/RadioGroup/RadioGroup.spec.mjs.map +1 -0
  745. package/dist/esm/fields/RadioGroup/RadioGroup.spec.native.js +202 -0
  746. package/dist/esm/fields/RadioGroup/RadioGroup.spec.native.js.map +1 -0
  747. package/dist/esm/fields/RadioGroup/RadioGroup.stories.mjs +325 -0
  748. package/dist/esm/fields/RadioGroup/RadioGroup.stories.mjs.map +1 -0
  749. package/dist/esm/fields/RadioGroup/RadioGroup.stories.native.js +338 -0
  750. package/dist/esm/fields/RadioGroup/RadioGroup.stories.native.js.map +1 -0
  751. package/dist/esm/fields/RadioGroup/index.mjs +276 -0
  752. package/dist/esm/fields/RadioGroup/index.mjs.map +1 -0
  753. package/dist/esm/fields/RadioGroup/index.native.js +285 -0
  754. package/dist/esm/fields/RadioGroup/index.native.js.map +1 -0
  755. package/dist/esm/fields/Rating/Rating.spec.mjs +94 -0
  756. package/dist/esm/fields/Rating/Rating.spec.mjs.map +1 -0
  757. package/dist/esm/fields/Rating/Rating.spec.native.js +97 -0
  758. package/dist/esm/fields/Rating/Rating.spec.native.js.map +1 -0
  759. package/dist/esm/fields/Rating/Rating.stories.mjs +226 -0
  760. package/dist/esm/fields/Rating/Rating.stories.mjs.map +1 -0
  761. package/dist/esm/fields/Rating/Rating.stories.native.js +231 -0
  762. package/dist/esm/fields/Rating/Rating.stories.native.js.map +1 -0
  763. package/dist/esm/fields/Rating/index.mjs +243 -0
  764. package/dist/esm/fields/Rating/index.mjs.map +1 -0
  765. package/dist/esm/fields/Rating/index.native.js +261 -0
  766. package/dist/esm/fields/Rating/index.native.js.map +1 -0
  767. package/dist/esm/fields/Select/Select.spec.mjs +235 -0
  768. package/dist/esm/fields/Select/Select.spec.mjs.map +1 -0
  769. package/dist/esm/fields/Select/Select.spec.native.js +242 -0
  770. package/dist/esm/fields/Select/Select.spec.native.js.map +1 -0
  771. package/dist/esm/fields/Select/Select.stories.mjs +398 -0
  772. package/dist/esm/fields/Select/Select.stories.mjs.map +1 -0
  773. package/dist/esm/fields/Select/Select.stories.native.js +410 -0
  774. package/dist/esm/fields/Select/Select.stories.native.js.map +1 -0
  775. package/dist/esm/fields/Select/index.mjs +1111 -0
  776. package/dist/esm/fields/Select/index.mjs.map +1 -0
  777. package/dist/esm/fields/Select/index.native.js +1357 -0
  778. package/dist/esm/fields/Select/index.native.js.map +1 -0
  779. package/dist/esm/fields/Signature/Signature.spec.mjs +87 -0
  780. package/dist/esm/fields/Signature/Signature.spec.mjs.map +1 -0
  781. package/dist/esm/fields/Signature/Signature.spec.native.js +89 -0
  782. package/dist/esm/fields/Signature/Signature.spec.native.js.map +1 -0
  783. package/dist/esm/fields/Signature/Signature.stories.mjs +232 -0
  784. package/dist/esm/fields/Signature/Signature.stories.mjs.map +1 -0
  785. package/dist/esm/fields/Signature/Signature.stories.native.js +245 -0
  786. package/dist/esm/fields/Signature/Signature.stories.native.js.map +1 -0
  787. package/dist/esm/fields/Signature/index.mjs +483 -0
  788. package/dist/esm/fields/Signature/index.mjs.map +1 -0
  789. package/dist/esm/fields/Signature/index.native.js +528 -0
  790. package/dist/esm/fields/Signature/index.native.js.map +1 -0
  791. package/dist/esm/fields/Slider/Slider.spec.mjs +289 -0
  792. package/dist/esm/fields/Slider/Slider.spec.mjs.map +1 -0
  793. package/dist/esm/fields/Slider/Slider.spec.native.js +291 -0
  794. package/dist/esm/fields/Slider/Slider.spec.native.js.map +1 -0
  795. package/dist/esm/fields/Slider/Slider.stories.mjs +268 -0
  796. package/dist/esm/fields/Slider/Slider.stories.mjs.map +1 -0
  797. package/dist/esm/fields/Slider/Slider.stories.native.js +273 -0
  798. package/dist/esm/fields/Slider/Slider.stories.native.js.map +1 -0
  799. package/dist/esm/fields/Slider/index.mjs +173 -0
  800. package/dist/esm/fields/Slider/index.mjs.map +1 -0
  801. package/dist/esm/fields/Slider/index.native.js +179 -0
  802. package/dist/esm/fields/Slider/index.native.js.map +1 -0
  803. package/dist/esm/fields/Stepper/Stepper.spec.mjs +204 -0
  804. package/dist/esm/fields/Stepper/Stepper.spec.mjs.map +1 -0
  805. package/dist/esm/fields/Stepper/Stepper.spec.native.js +210 -0
  806. package/dist/esm/fields/Stepper/Stepper.spec.native.js.map +1 -0
  807. package/dist/esm/fields/Stepper/Stepper.stories.mjs +207 -0
  808. package/dist/esm/fields/Stepper/Stepper.stories.mjs.map +1 -0
  809. package/dist/esm/fields/Stepper/Stepper.stories.native.js +213 -0
  810. package/dist/esm/fields/Stepper/Stepper.stories.native.js.map +1 -0
  811. package/dist/esm/fields/Stepper/index.mjs +306 -0
  812. package/dist/esm/fields/Stepper/index.mjs.map +1 -0
  813. package/dist/esm/fields/Stepper/index.native.js +319 -0
  814. package/dist/esm/fields/Stepper/index.native.js.map +1 -0
  815. package/dist/esm/fields/Switch/Switch.spec.mjs +183 -0
  816. package/dist/esm/fields/Switch/Switch.spec.mjs.map +1 -0
  817. package/dist/esm/fields/Switch/Switch.spec.native.js +185 -0
  818. package/dist/esm/fields/Switch/Switch.spec.native.js.map +1 -0
  819. package/dist/esm/fields/Switch/Switch.stories.mjs +225 -0
  820. package/dist/esm/fields/Switch/Switch.stories.mjs.map +1 -0
  821. package/dist/esm/fields/Switch/Switch.stories.native.js +232 -0
  822. package/dist/esm/fields/Switch/Switch.stories.native.js.map +1 -0
  823. package/dist/esm/fields/Switch/index.mjs +442 -0
  824. package/dist/esm/fields/Switch/index.mjs.map +1 -0
  825. package/dist/esm/fields/Switch/index.native.js +461 -0
  826. package/dist/esm/fields/Switch/index.native.js.map +1 -0
  827. package/dist/esm/fields/TextArea/TextArea.spec.mjs +259 -0
  828. package/dist/esm/fields/TextArea/TextArea.spec.mjs.map +1 -0
  829. package/dist/esm/fields/TextArea/TextArea.spec.native.js +261 -0
  830. package/dist/esm/fields/TextArea/TextArea.spec.native.js.map +1 -0
  831. package/dist/esm/fields/TextArea/TextArea.stories.mjs +273 -0
  832. package/dist/esm/fields/TextArea/TextArea.stories.mjs.map +1 -0
  833. package/dist/esm/fields/TextArea/TextArea.stories.native.js +279 -0
  834. package/dist/esm/fields/TextArea/TextArea.stories.native.js.map +1 -0
  835. package/dist/esm/fields/TextArea/index.mjs +241 -0
  836. package/dist/esm/fields/TextArea/index.mjs.map +1 -0
  837. package/dist/esm/fields/TextArea/index.native.js +252 -0
  838. package/dist/esm/fields/TextArea/index.native.js.map +1 -0
  839. package/dist/esm/fields/TimePicker/TimePicker.spec.mjs +92 -0
  840. package/dist/esm/fields/TimePicker/TimePicker.spec.mjs.map +1 -0
  841. package/dist/esm/fields/TimePicker/TimePicker.spec.native.js +92 -0
  842. package/dist/esm/fields/TimePicker/TimePicker.spec.native.js.map +1 -0
  843. package/dist/esm/fields/TimePicker/TimePicker.stories.mjs +305 -0
  844. package/dist/esm/fields/TimePicker/TimePicker.stories.mjs.map +1 -0
  845. package/dist/esm/fields/TimePicker/TimePicker.stories.native.js +324 -0
  846. package/dist/esm/fields/TimePicker/TimePicker.stories.native.js.map +1 -0
  847. package/dist/esm/fields/TimePicker/index.mjs +328 -0
  848. package/dist/esm/fields/TimePicker/index.mjs.map +1 -0
  849. package/dist/esm/fields/TimePicker/index.native.js +358 -0
  850. package/dist/esm/fields/TimePicker/index.native.js.map +1 -0
  851. package/dist/esm/fields/ToggleGroup/ToggleGroup.spec.mjs +85 -0
  852. package/dist/esm/fields/ToggleGroup/ToggleGroup.spec.mjs.map +1 -0
  853. package/dist/esm/fields/ToggleGroup/ToggleGroup.spec.native.js +85 -0
  854. package/dist/esm/fields/ToggleGroup/ToggleGroup.spec.native.js.map +1 -0
  855. package/dist/esm/fields/ToggleGroup/ToggleGroup.stories.mjs +329 -0
  856. package/dist/esm/fields/ToggleGroup/ToggleGroup.stories.mjs.map +1 -0
  857. package/dist/esm/fields/ToggleGroup/ToggleGroup.stories.native.js +338 -0
  858. package/dist/esm/fields/ToggleGroup/ToggleGroup.stories.native.js.map +1 -0
  859. package/dist/esm/fields/ToggleGroup/index.mjs +329 -0
  860. package/dist/esm/fields/ToggleGroup/index.mjs.map +1 -0
  861. package/dist/esm/fields/ToggleGroup/index.native.js +338 -0
  862. package/dist/esm/fields/ToggleGroup/index.native.js.map +1 -0
  863. package/dist/esm/hooks/useFocusManagement.mjs +223 -0
  864. package/dist/esm/hooks/useFocusManagement.mjs.map +1 -0
  865. package/dist/esm/hooks/useFocusManagement.native.js +240 -0
  866. package/dist/esm/hooks/useFocusManagement.native.js.map +1 -0
  867. package/dist/esm/hooks/useFocusManagement.spec.mjs +242 -0
  868. package/dist/esm/hooks/useFocusManagement.spec.mjs.map +1 -0
  869. package/dist/esm/hooks/useFocusManagement.spec.native.js +249 -0
  870. package/dist/esm/hooks/useFocusManagement.spec.native.js.map +1 -0
  871. package/dist/esm/index.mjs +48 -0
  872. package/dist/esm/index.mjs.map +1 -0
  873. package/dist/esm/index.native.js +48 -0
  874. package/dist/esm/index.native.js.map +1 -0
  875. package/dist/esm/shared/TimeColumn.mjs +89 -0
  876. package/dist/esm/shared/TimeColumn.mjs.map +1 -0
  877. package/dist/esm/shared/TimeColumn.native.js +98 -0
  878. package/dist/esm/shared/TimeColumn.native.js.map +1 -0
  879. package/dist/esm/shared/colorRamps.mjs +55 -0
  880. package/dist/esm/shared/colorRamps.mjs.map +1 -0
  881. package/dist/esm/shared/colorRamps.native.js +55 -0
  882. package/dist/esm/shared/colorRamps.native.js.map +1 -0
  883. package/dist/esm/shared/floatingList.mjs +157 -0
  884. package/dist/esm/shared/floatingList.mjs.map +1 -0
  885. package/dist/esm/shared/floatingList.native.js +163 -0
  886. package/dist/esm/shared/floatingList.native.js.map +1 -0
  887. package/dist/esm/shared/groupContext.mjs +5 -0
  888. package/dist/esm/shared/groupContext.mjs.map +1 -0
  889. package/dist/esm/shared/groupContext.native.js +7 -0
  890. package/dist/esm/shared/groupContext.native.js.map +1 -0
  891. package/dist/esm/shared/tableCellContext.mjs +3 -0
  892. package/dist/esm/shared/tableCellContext.mjs.map +1 -0
  893. package/dist/esm/shared/tableCellContext.native.js +3 -0
  894. package/dist/esm/shared/tableCellContext.native.js.map +1 -0
  895. package/dist/esm/shared/useDragScroll.mjs +66 -0
  896. package/dist/esm/shared/useDragScroll.mjs.map +1 -0
  897. package/dist/esm/shared/useDragScroll.native.js +69 -0
  898. package/dist/esm/shared/useDragScroll.native.js.map +1 -0
  899. package/dist/esm/shared/useWheelIncrement.mjs +49 -0
  900. package/dist/esm/shared/useWheelIncrement.mjs.map +1 -0
  901. package/dist/esm/shared/useWheelIncrement.native.js +49 -0
  902. package/dist/esm/shared/useWheelIncrement.native.js.map +1 -0
  903. package/dist/esm/shared/utils.mjs +165 -0
  904. package/dist/esm/shared/utils.mjs.map +1 -0
  905. package/dist/esm/shared/utils.native.js +183 -0
  906. package/dist/esm/shared/utils.native.js.map +1 -0
  907. package/dist/esm/shared/utils.spec.mjs +158 -0
  908. package/dist/esm/shared/utils.spec.mjs.map +1 -0
  909. package/dist/esm/shared/utils.spec.native.js +158 -0
  910. package/dist/esm/shared/utils.spec.native.js.map +1 -0
  911. package/dist/esm/shared/zIndex.mjs +28 -0
  912. package/dist/esm/shared/zIndex.mjs.map +1 -0
  913. package/dist/esm/shared/zIndex.native.js +28 -0
  914. package/dist/esm/shared/zIndex.native.js.map +1 -0
  915. package/dist/esm/themedPrimitives.mjs +44 -0
  916. package/dist/esm/themedPrimitives.mjs.map +1 -0
  917. package/dist/esm/themedPrimitives.native.js +45 -0
  918. package/dist/esm/themedPrimitives.native.js.map +1 -0
  919. package/dist/esm/types.mjs +2 -0
  920. package/dist/esm/types.mjs.map +1 -0
  921. package/dist/esm/types.native.js +2 -0
  922. package/dist/esm/types.native.js.map +1 -0
  923. package/dist/esm/utils/LinkCell.mjs +23 -0
  924. package/dist/esm/utils/LinkCell.mjs.map +1 -0
  925. package/dist/esm/utils/LinkCell.native.js +24 -0
  926. package/dist/esm/utils/LinkCell.native.js.map +1 -0
  927. package/dist/jsx/AdaptivePopup/AdaptivePopup.stories.mjs +226 -0
  928. package/dist/jsx/AdaptivePopup/AdaptivePopup.stories.mjs.map +1 -0
  929. package/dist/jsx/AdaptivePopup/AdaptivePopup.stories.native.js +269 -0
  930. package/dist/jsx/AdaptivePopup/AdaptivePopup.stories.native.js.map +1 -0
  931. package/dist/jsx/AdaptivePopup/index.mjs +161 -0
  932. package/dist/jsx/AdaptivePopup/index.mjs.map +1 -0
  933. package/dist/jsx/AdaptivePopup/index.native.js +192 -0
  934. package/dist/jsx/AdaptivePopup/index.native.js.map +1 -0
  935. package/dist/jsx/Button/Button.stories.mjs +226 -0
  936. package/dist/jsx/Button/Button.stories.mjs.map +1 -0
  937. package/dist/jsx/Button/Button.stories.native.js +271 -0
  938. package/dist/jsx/Button/Button.stories.native.js.map +1 -0
  939. package/dist/jsx/Button/index.mjs +254 -0
  940. package/dist/jsx/Button/index.mjs.map +1 -0
  941. package/dist/jsx/Button/index.native.js +301 -0
  942. package/dist/jsx/Button/index.native.js.map +1 -0
  943. package/dist/jsx/Chip/index.mjs +173 -0
  944. package/dist/jsx/Chip/index.mjs.map +1 -0
  945. package/dist/jsx/Chip/index.native.js +203 -0
  946. package/dist/jsx/Chip/index.native.js.map +1 -0
  947. package/dist/jsx/ControlGroup/index.mjs +164 -0
  948. package/dist/jsx/ControlGroup/index.mjs.map +1 -0
  949. package/dist/jsx/ControlGroup/index.native.js +198 -0
  950. package/dist/jsx/ControlGroup/index.native.js.map +1 -0
  951. package/dist/jsx/FieldDisplay/editMode.mjs +43 -0
  952. package/dist/jsx/FieldDisplay/editMode.mjs.map +1 -0
  953. package/dist/jsx/FieldDisplay/editMode.native.js +73 -0
  954. package/dist/jsx/FieldDisplay/editMode.native.js.map +1 -0
  955. package/dist/jsx/FieldDisplay/index.mjs +381 -0
  956. package/dist/jsx/FieldDisplay/index.mjs.map +1 -0
  957. package/dist/jsx/FieldDisplay/index.native.js +447 -0
  958. package/dist/jsx/FieldDisplay/index.native.js.map +1 -0
  959. package/dist/jsx/FloatingPanel/FloatingPanel.stories.mjs +222 -0
  960. package/dist/jsx/FloatingPanel/FloatingPanel.stories.mjs.map +1 -0
  961. package/dist/jsx/FloatingPanel/FloatingPanel.stories.native.js +267 -0
  962. package/dist/jsx/FloatingPanel/FloatingPanel.stories.native.js.map +1 -0
  963. package/dist/jsx/FloatingPanel/index.mjs +343 -0
  964. package/dist/jsx/FloatingPanel/index.mjs.map +1 -0
  965. package/dist/jsx/FloatingPanel/index.native.js +392 -0
  966. package/dist/jsx/FloatingPanel/index.native.js.map +1 -0
  967. package/dist/jsx/FloatingPanel/useFloatingPanel.mjs +242 -0
  968. package/dist/jsx/FloatingPanel/useFloatingPanel.mjs.map +1 -0
  969. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js +294 -0
  970. package/dist/jsx/FloatingPanel/useFloatingPanel.native.js.map +1 -0
  971. package/dist/jsx/Form/Form.stories.mjs +1791 -0
  972. package/dist/jsx/Form/Form.stories.mjs.map +1 -0
  973. package/dist/jsx/Form/Form.stories.native.js +1863 -0
  974. package/dist/jsx/Form/Form.stories.native.js.map +1 -0
  975. package/dist/jsx/Form/form.spec.mjs +357 -0
  976. package/dist/jsx/Form/form.spec.mjs.map +1 -0
  977. package/dist/jsx/Form/form.spec.native.js +367 -0
  978. package/dist/jsx/Form/form.spec.native.js.map +1 -0
  979. package/dist/jsx/Form/index.mjs +69 -0
  980. package/dist/jsx/Form/index.mjs.map +1 -0
  981. package/dist/jsx/Form/index.native.js +105 -0
  982. package/dist/jsx/Form/index.native.js.map +1 -0
  983. package/dist/jsx/FormGrid.mjs +36 -0
  984. package/dist/jsx/FormGrid.mjs.map +1 -0
  985. package/dist/jsx/FormGrid.native.js +69 -0
  986. package/dist/jsx/FormGrid.native.js.map +1 -0
  987. package/dist/jsx/FormsIntegration.stories.mjs +388 -0
  988. package/dist/jsx/FormsIntegration.stories.mjs.map +1 -0
  989. package/dist/jsx/FormsIntegration.stories.native.js +460 -0
  990. package/dist/jsx/FormsIntegration.stories.native.js.map +1 -0
  991. package/dist/jsx/InputParts/index.mjs +549 -0
  992. package/dist/jsx/InputParts/index.mjs.map +1 -0
  993. package/dist/jsx/InputParts/index.native.js +615 -0
  994. package/dist/jsx/InputParts/index.native.js.map +1 -0
  995. package/dist/jsx/Label/index.mjs +18 -0
  996. package/dist/jsx/Label/index.mjs.map +1 -0
  997. package/dist/jsx/Label/index.native.js +47 -0
  998. package/dist/jsx/Label/index.native.js.map +1 -0
  999. package/dist/jsx/Skeleton/index.mjs +92 -0
  1000. package/dist/jsx/Skeleton/index.mjs.map +1 -0
  1001. package/dist/jsx/Skeleton/index.native.js +127 -0
  1002. package/dist/jsx/Skeleton/index.native.js.map +1 -0
  1003. package/dist/jsx/Spinner/index.mjs +16 -0
  1004. package/dist/jsx/Spinner/index.mjs.map +1 -0
  1005. package/dist/jsx/Spinner/index.native.js +45 -0
  1006. package/dist/jsx/Spinner/index.native.js.map +1 -0
  1007. package/dist/jsx/Table/index.mjs +3 -0
  1008. package/dist/jsx/Table/index.mjs.map +1 -0
  1009. package/dist/jsx/Table/index.native.js +31 -0
  1010. package/dist/jsx/Table/index.native.js.map +1 -0
  1011. package/dist/jsx/Wheel/index.mjs +538 -0
  1012. package/dist/jsx/Wheel/index.mjs.map +1 -0
  1013. package/dist/jsx/Wheel/index.native.js +585 -0
  1014. package/dist/jsx/Wheel/index.native.js.map +1 -0
  1015. package/dist/jsx/fieldLayout.mjs +94 -0
  1016. package/dist/jsx/fieldLayout.mjs.map +1 -0
  1017. package/dist/jsx/fieldLayout.native.js +125 -0
  1018. package/dist/jsx/fieldLayout.native.js.map +1 -0
  1019. package/dist/jsx/fields/Barcode/Barcode.spec.mjs +107 -0
  1020. package/dist/jsx/fields/Barcode/Barcode.spec.mjs.map +1 -0
  1021. package/dist/jsx/fields/Barcode/Barcode.spec.native.js +109 -0
  1022. package/dist/jsx/fields/Barcode/Barcode.spec.native.js.map +1 -0
  1023. package/dist/jsx/fields/Barcode/Barcode.stories.mjs +206 -0
  1024. package/dist/jsx/fields/Barcode/Barcode.stories.mjs.map +1 -0
  1025. package/dist/jsx/fields/Barcode/Barcode.stories.native.js +252 -0
  1026. package/dist/jsx/fields/Barcode/Barcode.stories.native.js.map +1 -0
  1027. package/dist/jsx/fields/Barcode/BarcodeScanner.mjs +80 -0
  1028. package/dist/jsx/fields/Barcode/BarcodeScanner.mjs.map +1 -0
  1029. package/dist/jsx/fields/Barcode/BarcodeScanner.native.js +88 -0
  1030. package/dist/jsx/fields/Barcode/BarcodeScanner.native.js.map +1 -0
  1031. package/dist/jsx/fields/Barcode/index.mjs +189 -0
  1032. package/dist/jsx/fields/Barcode/index.mjs.map +1 -0
  1033. package/dist/jsx/fields/Barcode/index.native.js +227 -0
  1034. package/dist/jsx/fields/Barcode/index.native.js.map +1 -0
  1035. package/dist/jsx/fields/Barcode/scannerTypes.mjs +2 -0
  1036. package/dist/jsx/fields/Barcode/scannerTypes.mjs.map +1 -0
  1037. package/dist/jsx/fields/Barcode/scannerTypes.native.js +21 -0
  1038. package/dist/jsx/fields/Barcode/scannerTypes.native.js.map +1 -0
  1039. package/dist/jsx/fields/Checkbox/Checkbox.mjs +343 -0
  1040. package/dist/jsx/fields/Checkbox/Checkbox.mjs.map +1 -0
  1041. package/dist/jsx/fields/Checkbox/Checkbox.native.js +380 -0
  1042. package/dist/jsx/fields/Checkbox/Checkbox.native.js.map +1 -0
  1043. package/dist/jsx/fields/Checkbox/Checkbox.spec.mjs +140 -0
  1044. package/dist/jsx/fields/Checkbox/Checkbox.spec.mjs.map +1 -0
  1045. package/dist/jsx/fields/Checkbox/Checkbox.spec.native.js +142 -0
  1046. package/dist/jsx/fields/Checkbox/Checkbox.spec.native.js.map +1 -0
  1047. package/dist/jsx/fields/Checkbox/Checkbox.stories.mjs +418 -0
  1048. package/dist/jsx/fields/Checkbox/Checkbox.stories.mjs.map +1 -0
  1049. package/dist/jsx/fields/Checkbox/Checkbox.stories.native.js +479 -0
  1050. package/dist/jsx/fields/Checkbox/Checkbox.stories.native.js.map +1 -0
  1051. package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.mjs +51 -0
  1052. package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.mjs.map +1 -0
  1053. package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.native.js +79 -0
  1054. package/dist/jsx/fields/Checkbox/CheckboxFieldFrame.native.js.map +1 -0
  1055. package/dist/jsx/fields/Checkbox/CheckboxGroup.mjs +146 -0
  1056. package/dist/jsx/fields/Checkbox/CheckboxGroup.mjs.map +1 -0
  1057. package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js +182 -0
  1058. package/dist/jsx/fields/Checkbox/CheckboxGroup.native.js.map +1 -0
  1059. package/dist/jsx/fields/Checkbox/index.mjs +210 -0
  1060. package/dist/jsx/fields/Checkbox/index.mjs.map +1 -0
  1061. package/dist/jsx/fields/Checkbox/index.native.js +241 -0
  1062. package/dist/jsx/fields/Checkbox/index.native.js.map +1 -0
  1063. package/dist/jsx/fields/ColorPicker/ColorPicker.spec.mjs +124 -0
  1064. package/dist/jsx/fields/ColorPicker/ColorPicker.spec.mjs.map +1 -0
  1065. package/dist/jsx/fields/ColorPicker/ColorPicker.spec.native.js +158 -0
  1066. package/dist/jsx/fields/ColorPicker/ColorPicker.spec.native.js.map +1 -0
  1067. package/dist/jsx/fields/ColorPicker/ColorPicker.stories.mjs +208 -0
  1068. package/dist/jsx/fields/ColorPicker/ColorPicker.stories.mjs.map +1 -0
  1069. package/dist/jsx/fields/ColorPicker/ColorPicker.stories.native.js +261 -0
  1070. package/dist/jsx/fields/ColorPicker/ColorPicker.stories.native.js.map +1 -0
  1071. package/dist/jsx/fields/ColorPicker/index.mjs +559 -0
  1072. package/dist/jsx/fields/ColorPicker/index.mjs.map +1 -0
  1073. package/dist/jsx/fields/ColorPicker/index.native.js +609 -0
  1074. package/dist/jsx/fields/ColorPicker/index.native.js.map +1 -0
  1075. package/dist/jsx/fields/ColorPicker/parts.mjs +436 -0
  1076. package/dist/jsx/fields/ColorPicker/parts.mjs.map +1 -0
  1077. package/dist/jsx/fields/ColorPicker/parts.native.js +491 -0
  1078. package/dist/jsx/fields/ColorPicker/parts.native.js.map +1 -0
  1079. package/dist/jsx/fields/Combobox/Combobox.spec.mjs +93 -0
  1080. package/dist/jsx/fields/Combobox/Combobox.spec.mjs.map +1 -0
  1081. package/dist/jsx/fields/Combobox/Combobox.spec.native.js +95 -0
  1082. package/dist/jsx/fields/Combobox/Combobox.spec.native.js.map +1 -0
  1083. package/dist/jsx/fields/Combobox/Combobox.stories.mjs +296 -0
  1084. package/dist/jsx/fields/Combobox/Combobox.stories.mjs.map +1 -0
  1085. package/dist/jsx/fields/Combobox/Combobox.stories.native.js +352 -0
  1086. package/dist/jsx/fields/Combobox/Combobox.stories.native.js.map +1 -0
  1087. package/dist/jsx/fields/Combobox/authorOptions.mjs +496 -0
  1088. package/dist/jsx/fields/Combobox/authorOptions.mjs.map +1 -0
  1089. package/dist/jsx/fields/Combobox/authorOptions.native.js +525 -0
  1090. package/dist/jsx/fields/Combobox/authorOptions.native.js.map +1 -0
  1091. package/dist/jsx/fields/Combobox/index.mjs +1716 -0
  1092. package/dist/jsx/fields/Combobox/index.mjs.map +1 -0
  1093. package/dist/jsx/fields/Combobox/index.native.js +2032 -0
  1094. package/dist/jsx/fields/Combobox/index.native.js.map +1 -0
  1095. package/dist/jsx/fields/DatePicker/Calendar.mjs +376 -0
  1096. package/dist/jsx/fields/DatePicker/Calendar.mjs.map +1 -0
  1097. package/dist/jsx/fields/DatePicker/Calendar.native.js +444 -0
  1098. package/dist/jsx/fields/DatePicker/Calendar.native.js.map +1 -0
  1099. package/dist/jsx/fields/DatePicker/Calendar.spec.mjs +84 -0
  1100. package/dist/jsx/fields/DatePicker/Calendar.spec.mjs.map +1 -0
  1101. package/dist/jsx/fields/DatePicker/Calendar.spec.native.js +98 -0
  1102. package/dist/jsx/fields/DatePicker/Calendar.spec.native.js.map +1 -0
  1103. package/dist/jsx/fields/DatePicker/DatePicker.spec.mjs +63 -0
  1104. package/dist/jsx/fields/DatePicker/DatePicker.spec.mjs.map +1 -0
  1105. package/dist/jsx/fields/DatePicker/DatePicker.spec.native.js +107 -0
  1106. package/dist/jsx/fields/DatePicker/DatePicker.spec.native.js.map +1 -0
  1107. package/dist/jsx/fields/DatePicker/DatePicker.stories.mjs +269 -0
  1108. package/dist/jsx/fields/DatePicker/DatePicker.stories.mjs.map +1 -0
  1109. package/dist/jsx/fields/DatePicker/DatePicker.stories.native.js +336 -0
  1110. package/dist/jsx/fields/DatePicker/DatePicker.stories.native.js.map +1 -0
  1111. package/dist/jsx/fields/DatePicker/DateRangePicker.mjs +445 -0
  1112. package/dist/jsx/fields/DatePicker/DateRangePicker.mjs.map +1 -0
  1113. package/dist/jsx/fields/DatePicker/DateRangePicker.native.js +495 -0
  1114. package/dist/jsx/fields/DatePicker/DateRangePicker.native.js.map +1 -0
  1115. package/dist/jsx/fields/DatePicker/DateRangePicker.spec.mjs +77 -0
  1116. package/dist/jsx/fields/DatePicker/DateRangePicker.spec.mjs.map +1 -0
  1117. package/dist/jsx/fields/DatePicker/DateRangePicker.spec.native.js +122 -0
  1118. package/dist/jsx/fields/DatePicker/DateRangePicker.spec.native.js.map +1 -0
  1119. package/dist/jsx/fields/DatePicker/DatetimePicker.mjs +554 -0
  1120. package/dist/jsx/fields/DatePicker/DatetimePicker.mjs.map +1 -0
  1121. package/dist/jsx/fields/DatePicker/DatetimePicker.native.js +624 -0
  1122. package/dist/jsx/fields/DatePicker/DatetimePicker.native.js.map +1 -0
  1123. package/dist/jsx/fields/DatePicker/DatetimePicker.spec.mjs +77 -0
  1124. package/dist/jsx/fields/DatePicker/DatetimePicker.spec.mjs.map +1 -0
  1125. package/dist/jsx/fields/DatePicker/DatetimePicker.spec.native.js +79 -0
  1126. package/dist/jsx/fields/DatePicker/DatetimePicker.spec.native.js.map +1 -0
  1127. package/dist/jsx/fields/DatePicker/MonthPicker.mjs +283 -0
  1128. package/dist/jsx/fields/DatePicker/MonthPicker.mjs.map +1 -0
  1129. package/dist/jsx/fields/DatePicker/MonthPicker.native.js +327 -0
  1130. package/dist/jsx/fields/DatePicker/MonthPicker.native.js.map +1 -0
  1131. package/dist/jsx/fields/DatePicker/MonthPicker.spec.mjs +77 -0
  1132. package/dist/jsx/fields/DatePicker/MonthPicker.spec.mjs.map +1 -0
  1133. package/dist/jsx/fields/DatePicker/MonthPicker.spec.native.js +79 -0
  1134. package/dist/jsx/fields/DatePicker/MonthPicker.spec.native.js.map +1 -0
  1135. package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs +373 -0
  1136. package/dist/jsx/fields/DatePicker/MultiDatePicker.mjs.map +1 -0
  1137. package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js +428 -0
  1138. package/dist/jsx/fields/DatePicker/MultiDatePicker.native.js.map +1 -0
  1139. package/dist/jsx/fields/DatePicker/MultiDatePicker.spec.mjs +80 -0
  1140. package/dist/jsx/fields/DatePicker/MultiDatePicker.spec.mjs.map +1 -0
  1141. package/dist/jsx/fields/DatePicker/MultiDatePicker.spec.native.js +124 -0
  1142. package/dist/jsx/fields/DatePicker/MultiDatePicker.spec.native.js.map +1 -0
  1143. package/dist/jsx/fields/DatePicker/ThemeRefactor.spec.mjs +99 -0
  1144. package/dist/jsx/fields/DatePicker/ThemeRefactor.spec.mjs.map +1 -0
  1145. package/dist/jsx/fields/DatePicker/ThemeRefactor.spec.native.js +209 -0
  1146. package/dist/jsx/fields/DatePicker/ThemeRefactor.spec.native.js.map +1 -0
  1147. package/dist/jsx/fields/DatePicker/index.mjs +314 -0
  1148. package/dist/jsx/fields/DatePicker/index.mjs.map +1 -0
  1149. package/dist/jsx/fields/DatePicker/index.native.js +366 -0
  1150. package/dist/jsx/fields/DatePicker/index.native.js.map +1 -0
  1151. package/dist/jsx/fields/DatePicker/parts.mjs +438 -0
  1152. package/dist/jsx/fields/DatePicker/parts.mjs.map +1 -0
  1153. package/dist/jsx/fields/DatePicker/parts.native.js +502 -0
  1154. package/dist/jsx/fields/DatePicker/parts.native.js.map +1 -0
  1155. package/dist/jsx/fields/DatePicker/utils.mjs +21 -0
  1156. package/dist/jsx/fields/DatePicker/utils.mjs.map +1 -0
  1157. package/dist/jsx/fields/DatePicker/utils.native.js +58 -0
  1158. package/dist/jsx/fields/DatePicker/utils.native.js.map +1 -0
  1159. package/dist/jsx/fields/Duration/Duration.spec.mjs +81 -0
  1160. package/dist/jsx/fields/Duration/Duration.spec.mjs.map +1 -0
  1161. package/dist/jsx/fields/Duration/Duration.spec.native.js +83 -0
  1162. package/dist/jsx/fields/Duration/Duration.spec.native.js.map +1 -0
  1163. package/dist/jsx/fields/Duration/Duration.stories.mjs +247 -0
  1164. package/dist/jsx/fields/Duration/Duration.stories.mjs.map +1 -0
  1165. package/dist/jsx/fields/Duration/Duration.stories.native.js +296 -0
  1166. package/dist/jsx/fields/Duration/Duration.stories.native.js.map +1 -0
  1167. package/dist/jsx/fields/Duration/index.mjs +259 -0
  1168. package/dist/jsx/fields/Duration/index.mjs.map +1 -0
  1169. package/dist/jsx/fields/Duration/index.native.js +310 -0
  1170. package/dist/jsx/fields/Duration/index.native.js.map +1 -0
  1171. package/dist/jsx/fields/FileUpload/FileUpload.spec.mjs +18 -0
  1172. package/dist/jsx/fields/FileUpload/FileUpload.spec.mjs.map +1 -0
  1173. package/dist/jsx/fields/FileUpload/FileUpload.spec.native.js +20 -0
  1174. package/dist/jsx/fields/FileUpload/FileUpload.spec.native.js.map +1 -0
  1175. package/dist/jsx/fields/FileUpload/FileUpload.stories.mjs +212 -0
  1176. package/dist/jsx/fields/FileUpload/FileUpload.stories.mjs.map +1 -0
  1177. package/dist/jsx/fields/FileUpload/FileUpload.stories.native.js +262 -0
  1178. package/dist/jsx/fields/FileUpload/FileUpload.stories.native.js.map +1 -0
  1179. package/dist/jsx/fields/FileUpload/index.mjs +399 -0
  1180. package/dist/jsx/fields/FileUpload/index.mjs.map +1 -0
  1181. package/dist/jsx/fields/FileUpload/index.native.js +445 -0
  1182. package/dist/jsx/fields/FileUpload/index.native.js.map +1 -0
  1183. package/dist/jsx/fields/Geolocation/Geolocation.spec.mjs +106 -0
  1184. package/dist/jsx/fields/Geolocation/Geolocation.spec.mjs.map +1 -0
  1185. package/dist/jsx/fields/Geolocation/Geolocation.spec.native.js +109 -0
  1186. package/dist/jsx/fields/Geolocation/Geolocation.spec.native.js.map +1 -0
  1187. package/dist/jsx/fields/Geolocation/Geolocation.stories.mjs +310 -0
  1188. package/dist/jsx/fields/Geolocation/Geolocation.stories.mjs.map +1 -0
  1189. package/dist/jsx/fields/Geolocation/Geolocation.stories.native.js +360 -0
  1190. package/dist/jsx/fields/Geolocation/Geolocation.stories.native.js.map +1 -0
  1191. package/dist/jsx/fields/Geolocation/index.mjs +440 -0
  1192. package/dist/jsx/fields/Geolocation/index.mjs.map +1 -0
  1193. package/dist/jsx/fields/Geolocation/index.native.js +478 -0
  1194. package/dist/jsx/fields/Geolocation/index.native.js.map +1 -0
  1195. package/dist/jsx/fields/ImageField/ImageField.spec.mjs +83 -0
  1196. package/dist/jsx/fields/ImageField/ImageField.spec.mjs.map +1 -0
  1197. package/dist/jsx/fields/ImageField/ImageField.spec.native.js +85 -0
  1198. package/dist/jsx/fields/ImageField/ImageField.spec.native.js.map +1 -0
  1199. package/dist/jsx/fields/ImageField/ImageField.stories.mjs +265 -0
  1200. package/dist/jsx/fields/ImageField/ImageField.stories.mjs.map +1 -0
  1201. package/dist/jsx/fields/ImageField/ImageField.stories.native.js +323 -0
  1202. package/dist/jsx/fields/ImageField/ImageField.stories.native.js.map +1 -0
  1203. package/dist/jsx/fields/ImageField/index.mjs +271 -0
  1204. package/dist/jsx/fields/ImageField/index.mjs.map +1 -0
  1205. package/dist/jsx/fields/ImageField/index.native.js +315 -0
  1206. package/dist/jsx/fields/ImageField/index.native.js.map +1 -0
  1207. package/dist/jsx/fields/Input/Input.spec.mjs +103 -0
  1208. package/dist/jsx/fields/Input/Input.spec.mjs.map +1 -0
  1209. package/dist/jsx/fields/Input/Input.spec.native.js +107 -0
  1210. package/dist/jsx/fields/Input/Input.spec.native.js.map +1 -0
  1211. package/dist/jsx/fields/Input/Input.stories.mjs +189 -0
  1212. package/dist/jsx/fields/Input/Input.stories.mjs.map +1 -0
  1213. package/dist/jsx/fields/Input/Input.stories.native.js +231 -0
  1214. package/dist/jsx/fields/Input/Input.stories.native.js.map +1 -0
  1215. package/dist/jsx/fields/Input/index.mjs +203 -0
  1216. package/dist/jsx/fields/Input/index.mjs.map +1 -0
  1217. package/dist/jsx/fields/Input/index.native.js +236 -0
  1218. package/dist/jsx/fields/Input/index.native.js.map +1 -0
  1219. package/dist/jsx/fields/MentionInput/MentionInput.spec.mjs +24 -0
  1220. package/dist/jsx/fields/MentionInput/MentionInput.spec.mjs.map +1 -0
  1221. package/dist/jsx/fields/MentionInput/MentionInput.spec.native.js +26 -0
  1222. package/dist/jsx/fields/MentionInput/MentionInput.spec.native.js.map +1 -0
  1223. package/dist/jsx/fields/MentionInput/MentionInput.stories.mjs +299 -0
  1224. package/dist/jsx/fields/MentionInput/MentionInput.stories.mjs.map +1 -0
  1225. package/dist/jsx/fields/MentionInput/MentionInput.stories.native.js +354 -0
  1226. package/dist/jsx/fields/MentionInput/MentionInput.stories.native.js.map +1 -0
  1227. package/dist/jsx/fields/MentionInput/index.mjs +532 -0
  1228. package/dist/jsx/fields/MentionInput/index.mjs.map +1 -0
  1229. package/dist/jsx/fields/MentionInput/index.native.js +648 -0
  1230. package/dist/jsx/fields/MentionInput/index.native.js.map +1 -0
  1231. package/dist/jsx/fields/OTPInput/OtpInput.spec.mjs +639 -0
  1232. package/dist/jsx/fields/OTPInput/OtpInput.spec.mjs.map +1 -0
  1233. package/dist/jsx/fields/OTPInput/OtpInput.spec.native.js +665 -0
  1234. package/dist/jsx/fields/OTPInput/OtpInput.spec.native.js.map +1 -0
  1235. package/dist/jsx/fields/OTPInput/OtpInput.stories.mjs +227 -0
  1236. package/dist/jsx/fields/OTPInput/OtpInput.stories.mjs.map +1 -0
  1237. package/dist/jsx/fields/OTPInput/OtpInput.stories.native.js +271 -0
  1238. package/dist/jsx/fields/OTPInput/OtpInput.stories.native.js.map +1 -0
  1239. package/dist/jsx/fields/OTPInput/index.mjs +469 -0
  1240. package/dist/jsx/fields/OTPInput/index.mjs.map +1 -0
  1241. package/dist/jsx/fields/OTPInput/index.native.js +526 -0
  1242. package/dist/jsx/fields/OTPInput/index.native.js.map +1 -0
  1243. package/dist/jsx/fields/PhoneInput/PhoneInput.spec.mjs +363 -0
  1244. package/dist/jsx/fields/PhoneInput/PhoneInput.spec.mjs.map +1 -0
  1245. package/dist/jsx/fields/PhoneInput/PhoneInput.spec.native.js +367 -0
  1246. package/dist/jsx/fields/PhoneInput/PhoneInput.spec.native.js.map +1 -0
  1247. package/dist/jsx/fields/PhoneInput/PhoneInput.stories.mjs +196 -0
  1248. package/dist/jsx/fields/PhoneInput/PhoneInput.stories.mjs.map +1 -0
  1249. package/dist/jsx/fields/PhoneInput/PhoneInput.stories.native.js +240 -0
  1250. package/dist/jsx/fields/PhoneInput/PhoneInput.stories.native.js.map +1 -0
  1251. package/dist/jsx/fields/PhoneInput/dialCodes.mjs +250 -0
  1252. package/dist/jsx/fields/PhoneInput/dialCodes.mjs.map +1 -0
  1253. package/dist/jsx/fields/PhoneInput/dialCodes.native.js +279 -0
  1254. package/dist/jsx/fields/PhoneInput/dialCodes.native.js.map +1 -0
  1255. package/dist/jsx/fields/PhoneInput/index.mjs +232 -0
  1256. package/dist/jsx/fields/PhoneInput/index.mjs.map +1 -0
  1257. package/dist/jsx/fields/PhoneInput/index.native.js +276 -0
  1258. package/dist/jsx/fields/PhoneInput/index.native.js.map +1 -0
  1259. package/dist/jsx/fields/Progress/Progress.spec.mjs +74 -0
  1260. package/dist/jsx/fields/Progress/Progress.spec.mjs.map +1 -0
  1261. package/dist/jsx/fields/Progress/Progress.spec.native.js +76 -0
  1262. package/dist/jsx/fields/Progress/Progress.spec.native.js.map +1 -0
  1263. package/dist/jsx/fields/Progress/Progress.stories.mjs +209 -0
  1264. package/dist/jsx/fields/Progress/Progress.stories.mjs.map +1 -0
  1265. package/dist/jsx/fields/Progress/Progress.stories.native.js +252 -0
  1266. package/dist/jsx/fields/Progress/Progress.stories.native.js.map +1 -0
  1267. package/dist/jsx/fields/Progress/index.mjs +129 -0
  1268. package/dist/jsx/fields/Progress/index.mjs.map +1 -0
  1269. package/dist/jsx/fields/Progress/index.native.js +160 -0
  1270. package/dist/jsx/fields/Progress/index.native.js.map +1 -0
  1271. package/dist/jsx/fields/RadioGroup/RadioGroup.spec.mjs +195 -0
  1272. package/dist/jsx/fields/RadioGroup/RadioGroup.spec.mjs.map +1 -0
  1273. package/dist/jsx/fields/RadioGroup/RadioGroup.spec.native.js +204 -0
  1274. package/dist/jsx/fields/RadioGroup/RadioGroup.spec.native.js.map +1 -0
  1275. package/dist/jsx/fields/RadioGroup/RadioGroup.stories.mjs +325 -0
  1276. package/dist/jsx/fields/RadioGroup/RadioGroup.stories.mjs.map +1 -0
  1277. package/dist/jsx/fields/RadioGroup/RadioGroup.stories.native.js +377 -0
  1278. package/dist/jsx/fields/RadioGroup/RadioGroup.stories.native.js.map +1 -0
  1279. package/dist/jsx/fields/RadioGroup/index.mjs +276 -0
  1280. package/dist/jsx/fields/RadioGroup/index.mjs.map +1 -0
  1281. package/dist/jsx/fields/RadioGroup/index.native.js +313 -0
  1282. package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -0
  1283. package/dist/jsx/fields/Rating/Rating.spec.mjs +94 -0
  1284. package/dist/jsx/fields/Rating/Rating.spec.mjs.map +1 -0
  1285. package/dist/jsx/fields/Rating/Rating.spec.native.js +99 -0
  1286. package/dist/jsx/fields/Rating/Rating.spec.native.js.map +1 -0
  1287. package/dist/jsx/fields/Rating/Rating.stories.mjs +226 -0
  1288. package/dist/jsx/fields/Rating/Rating.stories.mjs.map +1 -0
  1289. package/dist/jsx/fields/Rating/Rating.stories.native.js +267 -0
  1290. package/dist/jsx/fields/Rating/Rating.stories.native.js.map +1 -0
  1291. package/dist/jsx/fields/Rating/index.mjs +243 -0
  1292. package/dist/jsx/fields/Rating/index.mjs.map +1 -0
  1293. package/dist/jsx/fields/Rating/index.native.js +300 -0
  1294. package/dist/jsx/fields/Rating/index.native.js.map +1 -0
  1295. package/dist/jsx/fields/Select/Select.spec.mjs +235 -0
  1296. package/dist/jsx/fields/Select/Select.spec.mjs.map +1 -0
  1297. package/dist/jsx/fields/Select/Select.spec.native.js +244 -0
  1298. package/dist/jsx/fields/Select/Select.spec.native.js.map +1 -0
  1299. package/dist/jsx/fields/Select/Select.stories.mjs +398 -0
  1300. package/dist/jsx/fields/Select/Select.stories.mjs.map +1 -0
  1301. package/dist/jsx/fields/Select/Select.stories.native.js +457 -0
  1302. package/dist/jsx/fields/Select/Select.stories.native.js.map +1 -0
  1303. package/dist/jsx/fields/Select/index.mjs +1111 -0
  1304. package/dist/jsx/fields/Select/index.mjs.map +1 -0
  1305. package/dist/jsx/fields/Select/index.native.js +1385 -0
  1306. package/dist/jsx/fields/Select/index.native.js.map +1 -0
  1307. package/dist/jsx/fields/Signature/Signature.spec.mjs +87 -0
  1308. package/dist/jsx/fields/Signature/Signature.spec.mjs.map +1 -0
  1309. package/dist/jsx/fields/Signature/Signature.spec.native.js +91 -0
  1310. package/dist/jsx/fields/Signature/Signature.spec.native.js.map +1 -0
  1311. package/dist/jsx/fields/Signature/Signature.stories.mjs +232 -0
  1312. package/dist/jsx/fields/Signature/Signature.stories.mjs.map +1 -0
  1313. package/dist/jsx/fields/Signature/Signature.stories.native.js +281 -0
  1314. package/dist/jsx/fields/Signature/Signature.stories.native.js.map +1 -0
  1315. package/dist/jsx/fields/Signature/index.mjs +483 -0
  1316. package/dist/jsx/fields/Signature/index.mjs.map +1 -0
  1317. package/dist/jsx/fields/Signature/index.native.js +568 -0
  1318. package/dist/jsx/fields/Signature/index.native.js.map +1 -0
  1319. package/dist/jsx/fields/Slider/Slider.spec.mjs +289 -0
  1320. package/dist/jsx/fields/Slider/Slider.spec.mjs.map +1 -0
  1321. package/dist/jsx/fields/Slider/Slider.spec.native.js +293 -0
  1322. package/dist/jsx/fields/Slider/Slider.spec.native.js.map +1 -0
  1323. package/dist/jsx/fields/Slider/Slider.stories.mjs +268 -0
  1324. package/dist/jsx/fields/Slider/Slider.stories.mjs.map +1 -0
  1325. package/dist/jsx/fields/Slider/Slider.stories.native.js +310 -0
  1326. package/dist/jsx/fields/Slider/Slider.stories.native.js.map +1 -0
  1327. package/dist/jsx/fields/Slider/index.mjs +173 -0
  1328. package/dist/jsx/fields/Slider/index.mjs.map +1 -0
  1329. package/dist/jsx/fields/Slider/index.native.js +207 -0
  1330. package/dist/jsx/fields/Slider/index.native.js.map +1 -0
  1331. package/dist/jsx/fields/Stepper/Stepper.spec.mjs +204 -0
  1332. package/dist/jsx/fields/Stepper/Stepper.spec.mjs.map +1 -0
  1333. package/dist/jsx/fields/Stepper/Stepper.spec.native.js +212 -0
  1334. package/dist/jsx/fields/Stepper/Stepper.spec.native.js.map +1 -0
  1335. package/dist/jsx/fields/Stepper/Stepper.stories.mjs +207 -0
  1336. package/dist/jsx/fields/Stepper/Stepper.stories.mjs.map +1 -0
  1337. package/dist/jsx/fields/Stepper/Stepper.stories.native.js +248 -0
  1338. package/dist/jsx/fields/Stepper/Stepper.stories.native.js.map +1 -0
  1339. package/dist/jsx/fields/Stepper/index.mjs +306 -0
  1340. package/dist/jsx/fields/Stepper/index.mjs.map +1 -0
  1341. package/dist/jsx/fields/Stepper/index.native.js +347 -0
  1342. package/dist/jsx/fields/Stepper/index.native.js.map +1 -0
  1343. package/dist/jsx/fields/Switch/Switch.spec.mjs +183 -0
  1344. package/dist/jsx/fields/Switch/Switch.spec.mjs.map +1 -0
  1345. package/dist/jsx/fields/Switch/Switch.spec.native.js +187 -0
  1346. package/dist/jsx/fields/Switch/Switch.spec.native.js.map +1 -0
  1347. package/dist/jsx/fields/Switch/Switch.stories.mjs +225 -0
  1348. package/dist/jsx/fields/Switch/Switch.stories.mjs.map +1 -0
  1349. package/dist/jsx/fields/Switch/Switch.stories.native.js +269 -0
  1350. package/dist/jsx/fields/Switch/Switch.stories.native.js.map +1 -0
  1351. package/dist/jsx/fields/Switch/index.mjs +442 -0
  1352. package/dist/jsx/fields/Switch/index.mjs.map +1 -0
  1353. package/dist/jsx/fields/Switch/index.native.js +489 -0
  1354. package/dist/jsx/fields/Switch/index.native.js.map +1 -0
  1355. package/dist/jsx/fields/TextArea/TextArea.spec.mjs +259 -0
  1356. package/dist/jsx/fields/TextArea/TextArea.spec.mjs.map +1 -0
  1357. package/dist/jsx/fields/TextArea/TextArea.spec.native.js +263 -0
  1358. package/dist/jsx/fields/TextArea/TextArea.spec.native.js.map +1 -0
  1359. package/dist/jsx/fields/TextArea/TextArea.stories.mjs +273 -0
  1360. package/dist/jsx/fields/TextArea/TextArea.stories.mjs.map +1 -0
  1361. package/dist/jsx/fields/TextArea/TextArea.stories.native.js +316 -0
  1362. package/dist/jsx/fields/TextArea/TextArea.stories.native.js.map +1 -0
  1363. package/dist/jsx/fields/TextArea/index.mjs +241 -0
  1364. package/dist/jsx/fields/TextArea/index.mjs.map +1 -0
  1365. package/dist/jsx/fields/TextArea/index.native.js +280 -0
  1366. package/dist/jsx/fields/TextArea/index.native.js.map +1 -0
  1367. package/dist/jsx/fields/TimePicker/TimePicker.spec.mjs +92 -0
  1368. package/dist/jsx/fields/TimePicker/TimePicker.spec.mjs.map +1 -0
  1369. package/dist/jsx/fields/TimePicker/TimePicker.spec.native.js +94 -0
  1370. package/dist/jsx/fields/TimePicker/TimePicker.spec.native.js.map +1 -0
  1371. package/dist/jsx/fields/TimePicker/TimePicker.stories.mjs +305 -0
  1372. package/dist/jsx/fields/TimePicker/TimePicker.stories.mjs.map +1 -0
  1373. package/dist/jsx/fields/TimePicker/TimePicker.stories.native.js +363 -0
  1374. package/dist/jsx/fields/TimePicker/TimePicker.stories.native.js.map +1 -0
  1375. package/dist/jsx/fields/TimePicker/index.mjs +328 -0
  1376. package/dist/jsx/fields/TimePicker/index.mjs.map +1 -0
  1377. package/dist/jsx/fields/TimePicker/index.native.js +386 -0
  1378. package/dist/jsx/fields/TimePicker/index.native.js.map +1 -0
  1379. package/dist/jsx/fields/ToggleGroup/ToggleGroup.spec.mjs +85 -0
  1380. package/dist/jsx/fields/ToggleGroup/ToggleGroup.spec.mjs.map +1 -0
  1381. package/dist/jsx/fields/ToggleGroup/ToggleGroup.spec.native.js +87 -0
  1382. package/dist/jsx/fields/ToggleGroup/ToggleGroup.spec.native.js.map +1 -0
  1383. package/dist/jsx/fields/ToggleGroup/ToggleGroup.stories.mjs +329 -0
  1384. package/dist/jsx/fields/ToggleGroup/ToggleGroup.stories.mjs.map +1 -0
  1385. package/dist/jsx/fields/ToggleGroup/ToggleGroup.stories.native.js +374 -0
  1386. package/dist/jsx/fields/ToggleGroup/ToggleGroup.stories.native.js.map +1 -0
  1387. package/dist/jsx/fields/ToggleGroup/index.mjs +329 -0
  1388. package/dist/jsx/fields/ToggleGroup/index.mjs.map +1 -0
  1389. package/dist/jsx/fields/ToggleGroup/index.native.js +366 -0
  1390. package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -0
  1391. package/dist/jsx/hooks/useFocusManagement.mjs +223 -0
  1392. package/dist/jsx/hooks/useFocusManagement.mjs.map +1 -0
  1393. package/dist/jsx/hooks/useFocusManagement.native.js +270 -0
  1394. package/dist/jsx/hooks/useFocusManagement.native.js.map +1 -0
  1395. package/dist/jsx/hooks/useFocusManagement.spec.mjs +242 -0
  1396. package/dist/jsx/hooks/useFocusManagement.spec.mjs.map +1 -0
  1397. package/dist/jsx/hooks/useFocusManagement.spec.native.js +251 -0
  1398. package/dist/jsx/hooks/useFocusManagement.spec.native.js.map +1 -0
  1399. package/dist/jsx/index.js +48 -0
  1400. package/dist/jsx/index.js.map +1 -0
  1401. package/dist/jsx/index.mjs +48 -0
  1402. package/dist/jsx/index.mjs.map +1 -0
  1403. package/dist/jsx/index.native.js +156 -0
  1404. package/dist/jsx/index.native.js.map +1 -0
  1405. package/dist/jsx/shared/TimeColumn.mjs +89 -0
  1406. package/dist/jsx/shared/TimeColumn.mjs.map +1 -0
  1407. package/dist/jsx/shared/TimeColumn.native.js +128 -0
  1408. package/dist/jsx/shared/TimeColumn.native.js.map +1 -0
  1409. package/dist/jsx/shared/colorRamps.mjs +55 -0
  1410. package/dist/jsx/shared/colorRamps.mjs.map +1 -0
  1411. package/dist/jsx/shared/colorRamps.native.js +87 -0
  1412. package/dist/jsx/shared/colorRamps.native.js.map +1 -0
  1413. package/dist/jsx/shared/floatingList.mjs +157 -0
  1414. package/dist/jsx/shared/floatingList.mjs.map +1 -0
  1415. package/dist/jsx/shared/floatingList.native.js +194 -0
  1416. package/dist/jsx/shared/floatingList.native.js.map +1 -0
  1417. package/dist/jsx/shared/groupContext.mjs +5 -0
  1418. package/dist/jsx/shared/groupContext.mjs.map +1 -0
  1419. package/dist/jsx/shared/groupContext.native.js +36 -0
  1420. package/dist/jsx/shared/groupContext.native.js.map +1 -0
  1421. package/dist/jsx/shared/tableCellContext.mjs +3 -0
  1422. package/dist/jsx/shared/tableCellContext.mjs.map +1 -0
  1423. package/dist/jsx/shared/tableCellContext.native.js +33 -0
  1424. package/dist/jsx/shared/tableCellContext.native.js.map +1 -0
  1425. package/dist/jsx/shared/useDragScroll.mjs +66 -0
  1426. package/dist/jsx/shared/useDragScroll.mjs.map +1 -0
  1427. package/dist/jsx/shared/useDragScroll.native.js +97 -0
  1428. package/dist/jsx/shared/useDragScroll.native.js.map +1 -0
  1429. package/dist/jsx/shared/useWheelIncrement.mjs +49 -0
  1430. package/dist/jsx/shared/useWheelIncrement.mjs.map +1 -0
  1431. package/dist/jsx/shared/useWheelIncrement.native.js +77 -0
  1432. package/dist/jsx/shared/useWheelIncrement.native.js.map +1 -0
  1433. package/dist/jsx/shared/utils.mjs +165 -0
  1434. package/dist/jsx/shared/utils.mjs.map +1 -0
  1435. package/dist/jsx/shared/utils.native.js +221 -0
  1436. package/dist/jsx/shared/utils.native.js.map +1 -0
  1437. package/dist/jsx/shared/utils.spec.mjs +158 -0
  1438. package/dist/jsx/shared/utils.spec.mjs.map +1 -0
  1439. package/dist/jsx/shared/utils.spec.native.js +160 -0
  1440. package/dist/jsx/shared/utils.spec.native.js.map +1 -0
  1441. package/dist/jsx/shared/zIndex.mjs +28 -0
  1442. package/dist/jsx/shared/zIndex.mjs.map +1 -0
  1443. package/dist/jsx/shared/zIndex.native.js +65 -0
  1444. package/dist/jsx/shared/zIndex.native.js.map +1 -0
  1445. package/dist/jsx/themedPrimitives.mjs +44 -0
  1446. package/dist/jsx/themedPrimitives.mjs.map +1 -0
  1447. package/dist/jsx/themedPrimitives.native.js +73 -0
  1448. package/dist/jsx/themedPrimitives.native.js.map +1 -0
  1449. package/dist/jsx/types.mjs +2 -0
  1450. package/dist/jsx/types.mjs.map +1 -0
  1451. package/dist/jsx/types.native.js +21 -0
  1452. package/dist/jsx/types.native.js.map +1 -0
  1453. package/dist/jsx/utils/LinkCell.mjs +23 -0
  1454. package/dist/jsx/utils/LinkCell.mjs.map +1 -0
  1455. package/dist/jsx/utils/LinkCell.native.js +52 -0
  1456. package/dist/jsx/utils/LinkCell.native.js.map +1 -0
  1457. package/package.json +102 -0
  1458. package/src/AdaptivePopup/AdaptivePopup.stories.tsx +206 -0
  1459. package/src/AdaptivePopup/index.tsx +181 -0
  1460. package/src/Button/Button.stories.tsx +164 -0
  1461. package/src/Button/index.tsx +288 -0
  1462. package/src/Chip/index.tsx +157 -0
  1463. package/src/ControlGroup/index.tsx +173 -0
  1464. package/src/FieldDisplay/editMode.ts +64 -0
  1465. package/src/FieldDisplay/index.tsx +384 -0
  1466. package/src/FloatingPanel/FloatingPanel.stories.tsx +197 -0
  1467. package/src/FloatingPanel/index.tsx +445 -0
  1468. package/src/FloatingPanel/useFloatingPanel.ts +344 -0
  1469. package/src/Form/Form.stories.tsx +1071 -0
  1470. package/src/Form/form.spec.tsx +349 -0
  1471. package/src/Form/index.tsx +122 -0
  1472. package/src/FormGrid.tsx +54 -0
  1473. package/src/FormsIntegration.stories.tsx +377 -0
  1474. package/src/InputParts/index.tsx +661 -0
  1475. package/src/Label/index.tsx +12 -0
  1476. package/src/Skeleton/index.tsx +121 -0
  1477. package/src/Spinner/index.tsx +17 -0
  1478. package/src/Table/index.tsx +18 -0
  1479. package/src/Wheel/index.tsx +767 -0
  1480. package/src/fieldLayout.tsx +195 -0
  1481. package/src/fields/Barcode/Barcode.spec.tsx +115 -0
  1482. package/src/fields/Barcode/Barcode.stories.tsx +157 -0
  1483. package/src/fields/Barcode/BarcodeScanner.native.tsx +80 -0
  1484. package/src/fields/Barcode/BarcodeScanner.tsx +96 -0
  1485. package/src/fields/Barcode/index.tsx +234 -0
  1486. package/src/fields/Barcode/scannerTypes.ts +13 -0
  1487. package/src/fields/Checkbox/Checkbox.spec.tsx +101 -0
  1488. package/src/fields/Checkbox/Checkbox.stories.tsx +339 -0
  1489. package/src/fields/Checkbox/Checkbox.tsx +398 -0
  1490. package/src/fields/Checkbox/CheckboxFieldFrame.tsx +38 -0
  1491. package/src/fields/Checkbox/CheckboxGroup.tsx +198 -0
  1492. package/src/fields/Checkbox/index.tsx +212 -0
  1493. package/src/fields/ColorPicker/ColorPicker.spec.tsx +130 -0
  1494. package/src/fields/ColorPicker/ColorPicker.stories.tsx +165 -0
  1495. package/src/fields/ColorPicker/index.tsx +742 -0
  1496. package/src/fields/ColorPicker/parts.tsx +557 -0
  1497. package/src/fields/Combobox/Combobox.spec.tsx +68 -0
  1498. package/src/fields/Combobox/Combobox.stories.tsx +284 -0
  1499. package/src/fields/Combobox/authorOptions.ts +133 -0
  1500. package/src/fields/Combobox/index.tsx +2269 -0
  1501. package/src/fields/DatePicker/Calendar.spec.tsx +94 -0
  1502. package/src/fields/DatePicker/Calendar.tsx +507 -0
  1503. package/src/fields/DatePicker/DatePicker.spec.tsx +64 -0
  1504. package/src/fields/DatePicker/DatePicker.stories.tsx +244 -0
  1505. package/src/fields/DatePicker/DateRangePicker.spec.tsx +90 -0
  1506. package/src/fields/DatePicker/DateRangePicker.tsx +602 -0
  1507. package/src/fields/DatePicker/DatetimePicker.spec.tsx +57 -0
  1508. package/src/fields/DatePicker/DatetimePicker.tsx +735 -0
  1509. package/src/fields/DatePicker/MonthPicker.spec.tsx +57 -0
  1510. package/src/fields/DatePicker/MonthPicker.tsx +392 -0
  1511. package/src/fields/DatePicker/MultiDatePicker.spec.tsx +93 -0
  1512. package/src/fields/DatePicker/MultiDatePicker.tsx +519 -0
  1513. package/src/fields/DatePicker/ThemeRefactor.spec.tsx +73 -0
  1514. package/src/fields/DatePicker/index.tsx +450 -0
  1515. package/src/fields/DatePicker/parts.tsx +603 -0
  1516. package/src/fields/DatePicker/utils.ts +30 -0
  1517. package/src/fields/Duration/Duration.spec.tsx +60 -0
  1518. package/src/fields/Duration/Duration.stories.tsx +186 -0
  1519. package/src/fields/Duration/index.tsx +312 -0
  1520. package/src/fields/FileUpload/FileUpload.spec.tsx +20 -0
  1521. package/src/fields/FileUpload/FileUpload.stories.tsx +168 -0
  1522. package/src/fields/FileUpload/index.tsx +504 -0
  1523. package/src/fields/Geolocation/Geolocation.spec.tsx +93 -0
  1524. package/src/fields/Geolocation/Geolocation.stories.tsx +235 -0
  1525. package/src/fields/Geolocation/index.tsx +487 -0
  1526. package/src/fields/ImageField/ImageField.spec.tsx +60 -0
  1527. package/src/fields/ImageField/ImageField.stories.tsx +214 -0
  1528. package/src/fields/ImageField/index.tsx +364 -0
  1529. package/src/fields/Input/Input.spec.tsx +75 -0
  1530. package/src/fields/Input/Input.stories.tsx +152 -0
  1531. package/src/fields/Input/index.tsx +251 -0
  1532. package/src/fields/MentionInput/MentionInput.spec.tsx +25 -0
  1533. package/src/fields/MentionInput/MentionInput.stories.tsx +265 -0
  1534. package/src/fields/MentionInput/index.tsx +691 -0
  1535. package/src/fields/OTPInput/OtpInput.spec.tsx +611 -0
  1536. package/src/fields/OTPInput/OtpInput.stories.tsx +211 -0
  1537. package/src/fields/OTPInput/index.tsx +662 -0
  1538. package/src/fields/PhoneInput/PhoneInput.spec.tsx +334 -0
  1539. package/src/fields/PhoneInput/PhoneInput.stories.tsx +195 -0
  1540. package/src/fields/PhoneInput/dialCodes.ts +250 -0
  1541. package/src/fields/PhoneInput/index.tsx +319 -0
  1542. package/src/fields/Progress/Progress.spec.tsx +51 -0
  1543. package/src/fields/Progress/Progress.stories.tsx +167 -0
  1544. package/src/fields/Progress/index.tsx +185 -0
  1545. package/src/fields/RadioGroup/RadioGroup.spec.tsx +188 -0
  1546. package/src/fields/RadioGroup/RadioGroup.stories.tsx +297 -0
  1547. package/src/fields/RadioGroup/index.tsx +318 -0
  1548. package/src/fields/Rating/Rating.spec.tsx +68 -0
  1549. package/src/fields/Rating/Rating.stories.tsx +202 -0
  1550. package/src/fields/Rating/index.tsx +312 -0
  1551. package/src/fields/Select/Select.spec.tsx +227 -0
  1552. package/src/fields/Select/Select.stories.tsx +328 -0
  1553. package/src/fields/Select/index.tsx +1429 -0
  1554. package/src/fields/Signature/Signature.spec.tsx +70 -0
  1555. package/src/fields/Signature/Signature.stories.tsx +169 -0
  1556. package/src/fields/Signature/index.tsx +645 -0
  1557. package/src/fields/Slider/Slider.spec.tsx +257 -0
  1558. package/src/fields/Slider/Slider.stories.tsx +248 -0
  1559. package/src/fields/Slider/index.tsx +223 -0
  1560. package/src/fields/Stepper/Stepper.spec.tsx +185 -0
  1561. package/src/fields/Stepper/Stepper.stories.tsx +144 -0
  1562. package/src/fields/Stepper/index.tsx +408 -0
  1563. package/src/fields/Switch/Switch.spec.tsx +160 -0
  1564. package/src/fields/Switch/Switch.stories.tsx +188 -0
  1565. package/src/fields/Switch/index.tsx +480 -0
  1566. package/src/fields/TextArea/TextArea.spec.tsx +231 -0
  1567. package/src/fields/TextArea/TextArea.stories.tsx +229 -0
  1568. package/src/fields/TextArea/index.tsx +291 -0
  1569. package/src/fields/TimePicker/TimePicker.spec.tsx +68 -0
  1570. package/src/fields/TimePicker/TimePicker.stories.tsx +221 -0
  1571. package/src/fields/TimePicker/index.tsx +407 -0
  1572. package/src/fields/ToggleGroup/ToggleGroup.spec.tsx +63 -0
  1573. package/src/fields/ToggleGroup/ToggleGroup.stories.tsx +280 -0
  1574. package/src/fields/ToggleGroup/index.tsx +399 -0
  1575. package/src/hooks/useFocusManagement.spec.tsx +289 -0
  1576. package/src/hooks/useFocusManagement.ts +384 -0
  1577. package/src/index.ts +231 -0
  1578. package/src/router.d.ts +16 -0
  1579. package/src/shared/TimeColumn.tsx +101 -0
  1580. package/src/shared/colorRamps.ts +57 -0
  1581. package/src/shared/floatingList.tsx +174 -0
  1582. package/src/shared/groupContext.ts +4 -0
  1583. package/src/shared/tableCellContext.ts +14 -0
  1584. package/src/shared/useDragScroll.ts +120 -0
  1585. package/src/shared/useWheelIncrement.ts +79 -0
  1586. package/src/shared/utils.spec.ts +163 -0
  1587. package/src/shared/utils.ts +232 -0
  1588. package/src/shared/zIndex.ts +71 -0
  1589. package/src/themedPrimitives.tsx +48 -0
  1590. package/src/types.ts +217 -0
  1591. package/src/utils/LinkCell.tsx +31 -0
@@ -0,0 +1,2269 @@
1
+ import type { ReactNode } from "react";
2
+ import {
3
+ Fragment,
4
+ useCallback,
5
+ useEffect,
6
+ useLayoutEffect,
7
+ useMemo,
8
+ useRef,
9
+ useState,
10
+ memo,
11
+ } from "react";
12
+ import {
13
+ CaretDownIcon,
14
+ CheckIcon,
15
+ MagnifyingGlassIcon,
16
+ PlusIcon,
17
+ XIcon,
18
+ } from "@phosphor-icons/react";
19
+ import {
20
+ useClick,
21
+ useDismiss,
22
+ useInteractions,
23
+ useListNavigation,
24
+ useRole,
25
+ FloatingFocusManager,
26
+ } from "@floating-ui/react";
27
+ import type { AnyFormApi } from "../../types";
28
+ import { useResolvedKnobs } from "@multiplatform.one/theme";
29
+ import type { LabelProps, SizeTokens } from "tamagui";
30
+ import { Input as TInput, Text, View, XStack, YStack, isWeb, styled, useTheme } from "tamagui";
31
+ import { Chip, type ChipProps } from "../../Chip";
32
+ import { Skeleton } from "../../Skeleton";
33
+ import { Field, FieldLayout } from "../../fieldLayout";
34
+ import { Input as InputParts } from "../../InputParts";
35
+ import { Spinner } from "../../Spinner";
36
+ import { formCommonColors, formInputColors } from "../../shared/colorRamps";
37
+ import {
38
+ getFieldError,
39
+ getFieldHeight,
40
+ mergeFieldHandler,
41
+ useFormField,
42
+ useResolvedValidators,
43
+ } from "../../shared/utils";
44
+ import { SyncFocusToOpen, ScrollArrow } from "../../shared/floatingList";
45
+
46
+ /** Buffer so we scroll before the item hits the scroll-arrow gradient (28px) */
47
+ const scrollArrowBuffer = 28;
48
+
49
+ import {
50
+ FloatingPanel,
51
+ useFloatingPanel,
52
+ panelTransition,
53
+ panelViewportPadding,
54
+ useViewportGtSm,
55
+ } from "../../FloatingPanel";
56
+ import { zIndex } from "../../shared/zIndex";
57
+ import { useDragScroll } from "../../shared/useDragScroll";
58
+ import { useIsInTableCell } from "../../shared/tableCellContext";
59
+
60
+ // ── Styled row ───────────────────────────────────────────────
61
+
62
+ const ComboboxRow = styled(View, {
63
+ name: "ComboboxRow",
64
+ flexDirection: "row",
65
+ alignItems: "center",
66
+ gap: "$2",
67
+ paddingHorizontal: "$3",
68
+ cursor: "default",
69
+ outlineStyle: "none" as any,
70
+ hoverStyle: { backgroundColor: formInputColors.background.focus },
71
+ focusStyle: { outlineStyle: "none" as any },
72
+ focusVisibleStyle: { outlineStyle: "none" as any },
73
+ variants: {
74
+ selected: {
75
+ true: { backgroundColor: formInputColors.background.base },
76
+ false: { backgroundColor: "transparent" },
77
+ },
78
+ size: {
79
+ "...size": (val: any) => ({ height: val }),
80
+ },
81
+ } as const,
82
+ });
83
+
84
+ const GroupHeader = styled(Text, {
85
+ name: "ComboboxGroupHeader",
86
+ paddingHorizontal: "$3",
87
+ paddingVertical: "$2",
88
+ paddingTop: "$3",
89
+ fontWeight: "600",
90
+ fontSize: "$2",
91
+ opacity: 0.6,
92
+ numberOfLines: 1,
93
+ userSelect: "none",
94
+ cursor: "default",
95
+ });
96
+
97
+ // ── Types ─────────────────────────────────────────────────────
98
+
99
+ export interface ComboboxOption {
100
+ value: string;
101
+ label: string;
102
+ keywords?: string;
103
+ /** Optional group label for grouping options */
104
+ group?: string;
105
+ }
106
+
107
+ export interface ComboboxProps {
108
+ options: ComboboxOption[];
109
+ value?: string | string[];
110
+ defaultValue?: string | string[];
111
+ onValueChange?: (value: string | string[]) => void;
112
+ placeholder?: string;
113
+ searchPlaceholder?: string;
114
+ emptyMessage?: string;
115
+ onSearch?: (query: string) => void | (() => void);
116
+ loading?: boolean;
117
+ /** Called when the user scrolls near the bottom of the list. Use for cursor-based pagination. */
118
+ onLoadMore?: () => void;
119
+ /** Whether more pages are available. Shows a spinner at the bottom when loading more. */
120
+ hasMore?: boolean;
121
+ trigger?: (selected: ComboboxOption | ComboboxOption[] | undefined, open: boolean) => ReactNode;
122
+ name?: string;
123
+ form?: AnyFormApi;
124
+ validators?: Record<string, unknown>;
125
+ label?: ReactNode;
126
+ labelProps?: Omit<LabelProps, "htmlFor" | "ref">;
127
+ helperText?: string;
128
+ error?: string | boolean;
129
+ required?: boolean;
130
+ disabled?: boolean;
131
+ readOnly?: boolean;
132
+ size?: SizeTokens;
133
+ id?: string;
134
+ onBlur?: (...args: any[]) => void;
135
+ popoverWidth?: number;
136
+ tabIndex?: number;
137
+ multiple?: boolean;
138
+ /** Show dismiss button on badges to remove selected items (only applies when multiple=true) */
139
+ dismissible?: boolean;
140
+ /** When true, renders a skeleton placeholder instead of the combobox */
141
+ skeleton?: boolean;
142
+ /** When true, uses compact sizing */
143
+ compact?: boolean;
144
+ /** Allow creating new options when search doesn't match existing options */
145
+ creatable?: boolean;
146
+ /** Called when a new option is created. Should return the new option to be added. */
147
+ onCreate?: (value: string) => ComboboxOption | void;
148
+ /** Label template for the create option. Use {value} as placeholder. Default: 'Create "{value}"' */
149
+ createLabel?: string;
150
+ /** Hide the search input (useful for @mentions where search is provided externally) */
151
+ hideSearch?: boolean;
152
+ /** External search value (used when hideSearch is true) */
153
+ searchValue?: string;
154
+ /** Controlled open state (for external control like @mentions) */
155
+ open?: boolean;
156
+ /** Callback when open state changes */
157
+ onOpenChange?: (open: boolean) => void;
158
+ "aria-label"?: string;
159
+ }
160
+
161
+ // ── Helper to group options ───────────────────────────────────
162
+
163
+ interface GroupedComboboxOption {
164
+ type: "option";
165
+ option: ComboboxOption;
166
+ flatIndex: number;
167
+ }
168
+
169
+ interface ComboboxGroupHeaderItem {
170
+ type: "header";
171
+ label: string;
172
+ }
173
+
174
+ type GroupedComboboxItem = GroupedComboboxOption | ComboboxGroupHeaderItem;
175
+
176
+ function groupComboboxOptions(options: ComboboxOption[]): {
177
+ items: GroupedComboboxItem[];
178
+ flatOptions: ComboboxOption[];
179
+ } {
180
+ const hasGroups = options.some((o) => o.group);
181
+ if (!hasGroups) {
182
+ return {
183
+ items: options.map((option, index) => ({
184
+ type: "option" as const,
185
+ option,
186
+ flatIndex: index,
187
+ })),
188
+ flatOptions: options,
189
+ };
190
+ }
191
+
192
+ // Separate grouped and ungrouped options
193
+ const ungrouped = options.filter((o) => !o.group);
194
+ const grouped = options.filter((o) => o.group);
195
+
196
+ // Group by group label
197
+ const groups = new Map<string, ComboboxOption[]>();
198
+ for (const option of grouped) {
199
+ const groupLabel = option.group!;
200
+ if (!groups.has(groupLabel)) {
201
+ groups.set(groupLabel, []);
202
+ }
203
+ groups.get(groupLabel)!.push(option);
204
+ }
205
+
206
+ // Build result
207
+ const items: GroupedComboboxItem[] = [];
208
+ const flatOptions: ComboboxOption[] = [];
209
+
210
+ // Add ungrouped first
211
+ for (const option of ungrouped) {
212
+ items.push({ type: "option", option, flatIndex: flatOptions.length });
213
+ flatOptions.push(option);
214
+ }
215
+
216
+ // Add grouped options with headers
217
+ for (const [groupLabel, groupOptions] of groups) {
218
+ items.push({ type: "header", label: groupLabel });
219
+ for (const option of groupOptions) {
220
+ items.push({ type: "option", option, flatIndex: flatOptions.length });
221
+ flatOptions.push(option);
222
+ }
223
+ }
224
+
225
+ return { items, flatOptions };
226
+ }
227
+
228
+ // ── Memoized option row ──────────────────────────────────────
229
+
230
+ type KnobProps = ReturnType<typeof useResolvedKnobs>["knobProps"];
231
+
232
+ interface ComboboxItemHandlers {
233
+ getItemProps: (userProps?: React.HTMLProps<HTMLElement>) => Record<string, unknown>;
234
+ onSelect: (option: ComboboxOption, index: number, event?: React.MouseEvent) => void;
235
+ onItemHover?: (e: React.MouseEvent<HTMLElement>) => void;
236
+ onItemKeyDown?: (e: React.KeyboardEvent, index: number) => void;
237
+ knobProps: KnobProps;
238
+ textColor: string;
239
+ listItemsRef: React.RefObject<Array<HTMLElement | null>>;
240
+ }
241
+
242
+ const ComboboxItem = memo(function ComboboxItem({
243
+ option,
244
+ index,
245
+ isSelected,
246
+ isActive,
247
+ suppressHover,
248
+ handlers,
249
+ }: {
250
+ option: ComboboxOption;
251
+ index: number;
252
+ isSelected: boolean;
253
+ isActive: boolean;
254
+ /** When true, disable hoverStyle so only isActive drives the highlight (avoids ghost highlight from stale hover) */
255
+ suppressHover?: boolean;
256
+ handlers: React.RefObject<ComboboxItemHandlers>;
257
+ }) {
258
+ const ctx = handlers.current;
259
+ const itemProps = ctx.getItemProps({
260
+ onClick(event: React.MouseEvent) {
261
+ ctx.onSelect(option, index, event);
262
+ },
263
+ });
264
+ const defaultOnKeyDown = itemProps.onKeyDown as ((e: React.KeyboardEvent) => void) | undefined;
265
+ return (
266
+ <ComboboxRow
267
+ ref={(node: any) => {
268
+ ctx.listItemsRef.current[index] = node as HTMLElement | null;
269
+ }}
270
+ {...itemProps}
271
+ data-combobox-index={index}
272
+ data-active={isActive}
273
+ onKeyDown={(e: React.KeyboardEvent) => {
274
+ if (["j", "k"].includes(e.key)) {
275
+ ctx.onItemKeyDown?.(e, index);
276
+ } else {
277
+ defaultOnKeyDown?.(e);
278
+ }
279
+ }}
280
+ {...(ctx.onItemHover ? { onMouseEnter: ctx.onItemHover } : {})}
281
+ role="option"
282
+ tabIndex={-1}
283
+ selected={isSelected}
284
+ aria-selected={isSelected}
285
+ data-state={isSelected ? "active" : "inactive"}
286
+ size={ctx.knobProps.sizeToken}
287
+ {...(suppressHover
288
+ ? {
289
+ hoverStyle: {
290
+ backgroundColor: isActive
291
+ ? formInputColors.background.focus
292
+ : isSelected
293
+ ? formInputColors.background.base
294
+ : "transparent",
295
+ },
296
+ backgroundColor: isActive
297
+ ? formInputColors.background.focus
298
+ : isSelected
299
+ ? formInputColors.background.base
300
+ : undefined,
301
+ }
302
+ : {
303
+ hoverStyle: {
304
+ backgroundColor: isSelected
305
+ ? formInputColors.background.base
306
+ : formInputColors.background.focus,
307
+ },
308
+ })}
309
+ {...(ctx.knobProps.transition ? { animation: ctx.knobProps.transition } : undefined)}
310
+ >
311
+ <Text
312
+ fontFamily={ctx.knobProps.body.fontFamily}
313
+ fontWeight={ctx.knobProps.body.fontWeight}
314
+ color={ctx.textColor}
315
+ numberOfLines={1}
316
+ flex={1}
317
+ >
318
+ {option.label}
319
+ </Text>
320
+ {isSelected && <CheckIcon size={14} />}
321
+ </ComboboxRow>
322
+ );
323
+ });
324
+
325
+ // ── Floating Combobox Core ────────────────────────────────────
326
+
327
+ interface FloatingComboboxCoreProps {
328
+ options: ComboboxOption[];
329
+ value: string | string[] | undefined;
330
+ onValueChange?: (value: string | string[]) => void;
331
+ onBlur?: (...args: any[]) => void;
332
+ placeholder: string;
333
+ searchPlaceholder: string;
334
+ emptyMessage: string;
335
+ onSearch?: (query: string) => void | (() => void);
336
+ loading?: boolean;
337
+ onLoadMore?: () => void;
338
+ hasMore?: boolean;
339
+ disabled?: boolean;
340
+ id?: string;
341
+ tabIndexOverride?: number;
342
+ popoverWidth?: number;
343
+ trigger?: (selected: ComboboxOption | ComboboxOption[] | undefined, open: boolean) => ReactNode;
344
+ knobProps: KnobProps;
345
+ multiple?: boolean;
346
+ dismissible?: boolean;
347
+ creatable?: boolean;
348
+ onCreate?: (value: string) => ComboboxOption | void;
349
+ createLabel?: string;
350
+ hideSearch?: boolean;
351
+ searchValue?: string;
352
+ open?: boolean;
353
+ onOpenChange?: (open: boolean) => void;
354
+ }
355
+
356
+ function FloatingComboboxCore({
357
+ options,
358
+ value,
359
+ onValueChange,
360
+ onBlur,
361
+ placeholder,
362
+ searchPlaceholder,
363
+ emptyMessage,
364
+ onSearch,
365
+ loading,
366
+ onLoadMore,
367
+ hasMore,
368
+ disabled,
369
+ id,
370
+ tabIndexOverride,
371
+ popoverWidth,
372
+ trigger: triggerRender,
373
+ knobProps,
374
+ multiple,
375
+ dismissible,
376
+ creatable,
377
+ onCreate,
378
+ createLabel = 'Create "{value}"',
379
+ hideSearch,
380
+ searchValue,
381
+ open: openProp,
382
+ onOpenChange,
383
+ }: FloatingComboboxCoreProps) {
384
+ const inTableCell = useIsInTableCell();
385
+ const [internalOpen, setInternalOpen] = useState(false);
386
+ // Use external open state when provided (controlled), otherwise use internal state
387
+ const open = openProp !== undefined ? openProp : internalOpen;
388
+ const setOpen = useCallback(
389
+ (nextOpen: boolean) => {
390
+ if (openProp !== undefined) {
391
+ onOpenChange?.(nextOpen);
392
+ } else {
393
+ setInternalOpen(nextOpen);
394
+ }
395
+ },
396
+ [openProp, onOpenChange],
397
+ );
398
+ const [internalFilter, setInternalFilter] = useState("");
399
+ // Use external searchValue when provided, otherwise use internal filter
400
+ const filter = searchValue !== undefined ? searchValue : internalFilter;
401
+ const [activeIndex, setActiveIndex] = useState<number | null>(null);
402
+
403
+ const textColor = knobProps.textAccentColor;
404
+
405
+ const labelCacheRef = useRef<Map<string, string>>(new Map());
406
+ for (const o of options) labelCacheRef.current.set(o.value, o.label);
407
+ const getLabel = useCallback((v: string) => labelCacheRef.current.get(v) ?? v, []);
408
+
409
+ const selectedValues = useMemo<string[]>(() => {
410
+ if (!multiple) return [];
411
+ const vals = Array.isArray(value) ? value : value ? [value] : [];
412
+ return [...vals].sort((a, b) => getLabel(a).localeCompare(getLabel(b)));
413
+ }, [multiple, value, getLabel]);
414
+
415
+ const selectedOption = useMemo(
416
+ () => (multiple ? undefined : options.find((option) => option.value === value)),
417
+ [options, value, multiple],
418
+ );
419
+
420
+ const selectedOptions = useMemo(
421
+ () => (multiple ? options.filter((o) => selectedValues.includes(o.value)) : []),
422
+ [options, selectedValues, multiple],
423
+ );
424
+
425
+ const isSelected = useCallback(
426
+ (optionValue: string) =>
427
+ multiple ? selectedValues.includes(optionValue) : optionValue === value,
428
+ [multiple, selectedValues, value],
429
+ );
430
+
431
+ const handleDismiss = useCallback(
432
+ (valueToRemove: string) => {
433
+ if (!multiple) return;
434
+ const current = Array.isArray(value) ? value : value ? [value] : [];
435
+ const next = current.filter((v) => v !== valueToRemove);
436
+ onValueChange?.(next);
437
+ },
438
+ [multiple, value, onValueChange],
439
+ );
440
+
441
+ const filtered = useMemo(() => {
442
+ if (onSearch || !filter) return options;
443
+ const query = filter.toLowerCase();
444
+ return options.filter(
445
+ (option) =>
446
+ option.label.toLowerCase().includes(query) ||
447
+ option.value.toLowerCase().includes(query) ||
448
+ (option.keywords && option.keywords.toLowerCase().includes(query)),
449
+ );
450
+ }, [options, filter, onSearch]);
451
+
452
+ // Show create option if creatable is enabled and filter doesn't exactly match an existing option
453
+ const showCreateOption = useMemo(() => {
454
+ if (!creatable || !filter.trim()) return false;
455
+ const trimmed = filter.trim().toLowerCase();
456
+ return !options.some(
457
+ (o) => o.label.toLowerCase() === trimmed || o.value.toLowerCase() === trimmed,
458
+ );
459
+ }, [creatable, filter, options]);
460
+
461
+ const handleCreate = useCallback(() => {
462
+ if (!onCreate || !filter.trim()) return;
463
+ const newOption = onCreate(filter.trim());
464
+ if (newOption) {
465
+ if (multiple) {
466
+ const current = Array.isArray(value) ? value : value ? [value] : [];
467
+ onValueChange?.([...current, newOption.value]);
468
+ } else {
469
+ onValueChange?.(newOption.value);
470
+ setOpen(false);
471
+ }
472
+ }
473
+ setInternalFilter("");
474
+ }, [onCreate, filter, multiple, value, onValueChange]);
475
+
476
+ // Multi-select: selected at front ONLY when first opening. Never reorder when searching or selecting.
477
+ const initialOrderRef = useRef<ComboboxOption[] | null>(null);
478
+ const hasSearchedRef = useRef(false);
479
+ const sortedFiltered = useMemo(() => {
480
+ if (filter.trim()) {
481
+ hasSearchedRef.current = true;
482
+ return filtered;
483
+ }
484
+ if (!multiple) return filtered;
485
+ if (!open) return filtered;
486
+ // First open with empty filter (no search yet): compute order with selected at front, store once
487
+ if (hasSearchedRef.current) return filtered; // user searched then cleared; keep natural order
488
+ if (initialOrderRef.current === null) {
489
+ const current = Array.isArray(value) ? value : value ? [value] : [];
490
+ const snap = new Set(current);
491
+ if (snap.size === 0) {
492
+ initialOrderRef.current = filtered;
493
+ } else {
494
+ const first = filtered
495
+ .filter((o) => snap.has(o.value))
496
+ .sort((a, b) => a.label.localeCompare(b.label));
497
+ const rest = filtered.filter((o) => !snap.has(o.value));
498
+ initialOrderRef.current = [...first, ...rest];
499
+ }
500
+ }
501
+ return initialOrderRef.current;
502
+ }, [filtered, filter, open, multiple, value]);
503
+
504
+ // Group options for rendering with headers (only when not in multiple mode)
505
+ const { items: groupedItems, flatOptions: _flatOptions } = useMemo(
506
+ () => groupComboboxOptions(sortedFiltered),
507
+ [sortedFiltered],
508
+ );
509
+
510
+ const searchCleanupRef = useRef<(() => void) | null>(null);
511
+ useEffect(() => {
512
+ if (!onSearch || !open) return;
513
+ const timerId = setTimeout(() => {
514
+ searchCleanupRef.current?.();
515
+ const cleanup = onSearch(filter);
516
+ searchCleanupRef.current = cleanup ?? null;
517
+ }, 200);
518
+ return () => {
519
+ clearTimeout(timerId);
520
+ searchCleanupRef.current?.();
521
+ searchCleanupRef.current = null;
522
+ };
523
+ }, [filter, onSearch, open]);
524
+
525
+ const listItemsRef = useRef<Array<HTMLElement | null>>([]);
526
+ const searchInputRef = useRef<HTMLInputElement | null>(null);
527
+ const listScrollRef = useRef<HTMLElement | null>(null);
528
+ const keyboardNavRef = useRef(false);
529
+ const lastMousePosRef = useRef<{ x: number; y: number } | null>(null);
530
+ const currentMousePosRef = useRef({ x: 0, y: 0 });
531
+ const lastKeyboardNavTimeRef = useRef(0);
532
+
533
+ const overlayStyle = useRef<{ top: number; maxHeight: number } | null>(null);
534
+ const searchTopRef = useRef<number | null>(null);
535
+ const grownRef = useRef(false);
536
+ const lastScrollTopRef = useRef(0);
537
+ const growConstraintRef = useRef<"no-up" | "no-down" | null>(null);
538
+ const filterRef = useRef(filter);
539
+ filterRef.current = filter;
540
+
541
+ const repositionRef = useRef<(() => void) | null>(null);
542
+
543
+ const panel = useFloatingPanel({
544
+ open,
545
+ onOpenChange: (nextOpen) => {
546
+ setOpen(nextOpen);
547
+ if (!nextOpen) onBlur?.();
548
+ },
549
+ disabled,
550
+ repositionRef,
551
+ wheelGrowRef: grownRef,
552
+ scrollBoundaryRef: listScrollRef,
553
+ middleware: [],
554
+ useAutoUpdate: false,
555
+ onBeforeOpen: () => {
556
+ overlayStyle.current = null;
557
+ searchTopRef.current = null;
558
+ grownRef.current = false;
559
+ lastScrollTopRef.current = 0;
560
+ },
561
+ });
562
+
563
+ const { scrollRef: dragScrollRef, dragProps } = useDragScroll({
564
+ direction: "vertical",
565
+ });
566
+
567
+ // Sync drag scroll ref with list scroll ref
568
+ useEffect(() => {
569
+ if (listScrollRef.current) {
570
+ (dragScrollRef as React.RefObject<HTMLElement | null>).current = listScrollRef.current;
571
+ }
572
+ }, [open, dragScrollRef]);
573
+
574
+ const justResetFromFilterRef = useRef(false);
575
+ useEffect(() => {
576
+ if (open) {
577
+ justResetFromFilterRef.current = true;
578
+ setActiveIndex(0);
579
+ hasSelectedSinceOpenRef.current = false;
580
+ } else {
581
+ setInternalFilter("");
582
+ setActiveIndex(null);
583
+ lastMousePosRef.current = null;
584
+ initialOrderRef.current = null;
585
+ hasSearchedRef.current = false;
586
+ }
587
+ }, [open]);
588
+
589
+ // Document-level Enter/Escape to close (catches keys when focus is on list, not just search)
590
+ const activeIndexRef = useRef(activeIndex);
591
+ activeIndexRef.current = activeIndex;
592
+ const sortedFilteredRef = useRef(sortedFiltered);
593
+ sortedFilteredRef.current = sortedFiltered;
594
+ const showCreateOptionRef = useRef(showCreateOption);
595
+ showCreateOptionRef.current = showCreateOption;
596
+ const multipleRef = useRef(multiple);
597
+ multipleRef.current = multiple;
598
+
599
+ const repositionOverlay = useCallback(
600
+ (source: "filter" | "wheel" | "init") => {
601
+ const dropdownElement = panel.refs.floating.current;
602
+ const trigger = panel.triggerRef.current;
603
+ const listScrollElement = listScrollRef.current;
604
+ if (!dropdownElement || !trigger) return;
605
+
606
+ const suppressTransition = source === "init" || source === "filter";
607
+ if (suppressTransition) dropdownElement.style.transition = "none";
608
+
609
+ const triggerBounds = trigger.getBoundingClientRect();
610
+ const viewportHeight = window.innerHeight;
611
+ const viewportWidth = window.innerWidth;
612
+
613
+ const minWidth = popoverWidth ?? triggerBounds.width + 8;
614
+ const maxWidth = viewportWidth - 20;
615
+
616
+ dropdownElement.style.minWidth = `${minWidth}px`;
617
+ dropdownElement.style.maxWidth = `${maxWidth}px`;
618
+ if (popoverWidth) dropdownElement.style.width = `${popoverWidth}px`;
619
+
620
+ const searchBarElement = dropdownElement.children[0] as HTMLElement | undefined;
621
+ const searchBarHeight = searchBarElement?.offsetHeight ?? 0;
622
+ const listContentHeight = listScrollElement?.scrollHeight ?? 0;
623
+ const computedStyle = getComputedStyle(dropdownElement);
624
+ const borderHeight =
625
+ (parseFloat(computedStyle.borderTopWidth) || 0) +
626
+ (parseFloat(computedStyle.borderBottomWidth) || 0);
627
+ const contentHeight = searchBarHeight + listContentHeight + borderHeight;
628
+
629
+ const isDropup = panel.placement.startsWith("top");
630
+ let top: number;
631
+
632
+ if (searchTopRef.current === null) {
633
+ if (isDropup) {
634
+ const availableAbove = triggerBounds.bottom - panelViewportPadding;
635
+ const initialHeight = Math.min(contentHeight, availableAbove);
636
+ top = triggerBounds.bottom - initialHeight;
637
+ } else {
638
+ top = triggerBounds.top;
639
+ }
640
+ searchTopRef.current = top;
641
+
642
+ const maxAvailable = isDropup
643
+ ? triggerBounds.bottom - top
644
+ : viewportHeight - top - panelViewportPadding;
645
+ let height = Math.min(contentHeight, maxAvailable);
646
+ height = Math.max(120, height);
647
+
648
+ dropdownElement.style.top = `${top}px`;
649
+ dropdownElement.style.left = `${triggerBounds.left}px`;
650
+ dropdownElement.style.height = `${height}px`;
651
+ dropdownElement.style.maxHeight = "";
652
+ overlayStyle.current = { top, maxHeight: height };
653
+
654
+ if (listScrollRef.current) listScrollRef.current.scrollTop = 0;
655
+
656
+ void dropdownElement.offsetHeight;
657
+ if (suppressTransition) dropdownElement.style.transition = panelTransition;
658
+ requestAnimationFrame(() => {
659
+ if (listScrollRef.current) {
660
+ panel.updateArrows(listScrollRef.current);
661
+ requestAnimationFrame(() => {
662
+ if (listScrollRef.current) panel.updateArrows(listScrollRef.current);
663
+ });
664
+ }
665
+ });
666
+ return;
667
+ } else if (source === "wheel") {
668
+ top = searchTopRef.current;
669
+ const currentHeight = overlayStyle.current?.maxHeight ?? 0;
670
+ let grownHeight = currentHeight;
671
+
672
+ const constraint = growConstraintRef.current;
673
+ if (constraint !== "no-down") {
674
+ const canGrowDown = Math.max(
675
+ 0,
676
+ viewportHeight - panelViewportPadding - (top + currentHeight),
677
+ );
678
+ grownHeight += canGrowDown;
679
+ }
680
+ if (constraint !== "no-up") {
681
+ const canGrowUp = Math.max(0, top - panelViewportPadding);
682
+ top -= canGrowUp;
683
+ grownHeight += canGrowUp;
684
+ }
685
+
686
+ grownHeight = Math.min(grownHeight, contentHeight);
687
+ searchTopRef.current = top;
688
+ const maxAvailable = viewportHeight - top - panelViewportPadding;
689
+ let height = Math.min(grownHeight, maxAvailable);
690
+ height = Math.max(120, height);
691
+
692
+ // Only reposition if the panel has actually grown past the trigger's original position
693
+ // Don't jump to the bottom of the viewport - keep the panel near the trigger
694
+ const triggerTop = triggerBounds.top;
695
+ const triggerBottom = triggerBounds.bottom;
696
+
697
+ // For dropdowns: don't move the panel below the trigger
698
+ // For dropups: don't move the panel above where it started
699
+ if (!isDropup) {
700
+ // Keep the panel starting at or above the trigger
701
+ top = Math.min(top, triggerTop);
702
+ } else {
703
+ // Keep the panel ending at or below the trigger
704
+ const panelBottom = top + height;
705
+ if (panelBottom < triggerBottom) {
706
+ top = triggerBottom - height;
707
+ }
708
+ }
709
+ searchTopRef.current = top;
710
+
711
+ const cached = overlayStyle.current;
712
+ if (!cached || cached.top !== top || cached.maxHeight !== height) {
713
+ dropdownElement.style.top = `${top}px`;
714
+ dropdownElement.style.left = `${triggerBounds.left}px`;
715
+ dropdownElement.style.height = `${height}px`;
716
+ dropdownElement.style.maxHeight = "";
717
+ overlayStyle.current = { top, maxHeight: height };
718
+ }
719
+
720
+ void dropdownElement.offsetHeight;
721
+ requestAnimationFrame(() => {
722
+ if (listScrollRef.current) {
723
+ panel.updateArrows(listScrollRef.current);
724
+ }
725
+ });
726
+ return;
727
+ } else {
728
+ top = searchTopRef.current;
729
+ }
730
+
731
+ const hasTyped = filterRef.current.length > 0;
732
+ const maxAvailable =
733
+ !hasTyped && isDropup
734
+ ? triggerBounds.bottom - top
735
+ : viewportHeight - top - panelViewportPadding;
736
+ let height = Math.min(contentHeight, maxAvailable);
737
+ height = Math.max(120, height);
738
+
739
+ const cached = overlayStyle.current;
740
+ if (!cached || cached.top !== top || cached.maxHeight !== height) {
741
+ dropdownElement.style.top = `${top}px`;
742
+ dropdownElement.style.left = `${triggerBounds.left}px`;
743
+ dropdownElement.style.height = `${height}px`;
744
+ dropdownElement.style.maxHeight = "";
745
+ overlayStyle.current = { top, maxHeight: height };
746
+ }
747
+
748
+ void dropdownElement.offsetHeight;
749
+ if (suppressTransition) dropdownElement.style.transition = panelTransition;
750
+ requestAnimationFrame(() => {
751
+ if (listScrollRef.current) {
752
+ panel.updateArrows(listScrollRef.current);
753
+ requestAnimationFrame(() => {
754
+ if (listScrollRef.current) panel.updateArrows(listScrollRef.current);
755
+ });
756
+ }
757
+ });
758
+ },
759
+ [panel.placement, panel.updateArrows, popoverWidth, panel.refs],
760
+ );
761
+
762
+ repositionRef.current = () => repositionOverlay("wheel");
763
+
764
+ useLayoutEffect(() => {
765
+ if (!open || !panel.mounted) return;
766
+ grownRef.current = false;
767
+ repositionOverlay("filter");
768
+ }, [open, panel.mounted, filtered.length, loading, repositionOverlay]);
769
+
770
+ useEffect(() => {
771
+ if (open && panel.mounted && !hideSearch) {
772
+ requestAnimationFrame(() => searchInputRef.current?.focus());
773
+ }
774
+ }, [open, panel.mounted, hideSearch]);
775
+
776
+ const loadMoreTriggeredRef = useRef(false);
777
+
778
+ const repositionOverlayRef = useRef(repositionOverlay);
779
+ repositionOverlayRef.current = repositionOverlay;
780
+
781
+ const handleListScroll = useCallback(
782
+ (event: React.UIEvent) => {
783
+ const element = event.target as HTMLElement;
784
+ panel.updateArrows(element);
785
+
786
+ const arrowDir = panel.arrowScrollDirRef.current;
787
+ if (arrowDir) {
788
+ panel.arrowScrollDirRef.current = null;
789
+ lastScrollTopRef.current = element.scrollTop;
790
+ growConstraintRef.current = arrowDir === "down" ? "no-down" : "no-up";
791
+ repositionOverlayRef.current("wheel");
792
+ growConstraintRef.current = null;
793
+ return;
794
+ }
795
+
796
+ lastScrollTopRef.current = element.scrollTop;
797
+
798
+ if (onLoadMore && hasMore && !loading) {
799
+ const nearBottom = element.scrollHeight - element.scrollTop - element.clientHeight < 100;
800
+ if (nearBottom && !loadMoreTriggeredRef.current) {
801
+ loadMoreTriggeredRef.current = true;
802
+ onLoadMore();
803
+ } else if (!nearBottom) {
804
+ loadMoreTriggeredRef.current = false;
805
+ }
806
+ }
807
+ },
808
+ [panel.updateArrows, onLoadMore, hasMore, loading],
809
+ );
810
+
811
+ useEffect(() => {
812
+ if (!open) return;
813
+ const frame = requestAnimationFrame(() => {
814
+ const scrollElement = listScrollRef.current;
815
+ if (scrollElement) panel.updateArrows(scrollElement);
816
+ });
817
+ return () => cancelAnimationFrame(frame);
818
+ }, [open, filtered, panel.updateArrows]);
819
+
820
+ // Track mouse position when open. Use elementFromPoint as primary source for hover - mouseenter
821
+ // lags behind React's async updates. Only sync when cursor is over OUR panel.
822
+ // Sync synchronously (no rAF) so our update wins over any other handler.
823
+ useEffect(() => {
824
+ if (!open || typeof document === "undefined") return;
825
+ const onMove = (e: MouseEvent) => {
826
+ const { clientX: x, clientY: y } = e;
827
+ currentMousePosRef.current = { x, y };
828
+ if (keyboardNavRef.current) return;
829
+ const floating = panel.refs.floating.current;
830
+ if (!floating) return;
831
+ const el = document.elementFromPoint(x, y);
832
+ if (!el || !floating.contains(el)) return;
833
+ const row = el.closest?.("[data-combobox-index]");
834
+ const actualIndex = row?.getAttribute("data-combobox-index");
835
+ const list = sortedFilteredRef.current;
836
+ const len = list.length + (showCreateOptionRef.current ? 1 : 0);
837
+ const activeIdx = activeIndexRef.current;
838
+ const n = actualIndex != null ? Number(actualIndex) : null;
839
+ const next = n != null && n >= 0 && n < len ? n : activeIdx;
840
+ if (next !== activeIdx) {
841
+ setActiveIndex(next);
842
+ }
843
+ };
844
+ document.addEventListener("mousemove", onMove, { passive: true });
845
+ return () => document.removeEventListener("mousemove", onMove);
846
+ }, [open, panel.refs]);
847
+
848
+ // When filter/list changes: truncate refs, sync activeIndex with cursor, clear keyboard mode.
849
+ // After filter, the list remounts (Fragment key=filter) so mouseenter often doesn't fire for
850
+ // elements that appear under a stationary cursor. Use elementFromPoint to set the correct index.
851
+ useLayoutEffect(() => {
852
+ keyboardNavRef.current = false;
853
+ const len = sortedFiltered.length + (showCreateOption ? 1 : 0);
854
+ listItemsRef.current.length = len;
855
+ justResetFromFilterRef.current = true;
856
+
857
+ const rawPos = currentMousePosRef.current ?? lastMousePosRef.current;
858
+ // (0,0) is the default init before any mousemove - treat as "no position"
859
+ const pos = rawPos && (rawPos.x > 0 || rawPos.y > 0) ? rawPos : null;
860
+ if (pos && typeof document !== "undefined") {
861
+ const el = document.elementFromPoint(pos.x, pos.y);
862
+ const row = el?.closest?.("[data-combobox-index]");
863
+ const idx = row?.getAttribute("data-combobox-index");
864
+ if (idx != null) {
865
+ const n = Number(idx);
866
+ if (n >= 0 && n < len) setActiveIndex(n);
867
+ else setActiveIndex(null);
868
+ } else {
869
+ setActiveIndex(null);
870
+ }
871
+ } else {
872
+ setActiveIndex(0);
873
+ }
874
+ }, [filter, sortedFiltered.length, showCreateOption]);
875
+
876
+ const click = useClick(panel.context, { event: "mousedown", keyboardHandlers: false });
877
+ const dismiss = useDismiss(panel.context);
878
+ const role = useRole(panel.context, { role: "listbox" });
879
+ const listNav = useListNavigation(panel.context, {
880
+ listRef: listItemsRef,
881
+ activeIndex,
882
+ onNavigate: (index) => {
883
+ if (index !== null) {
884
+ keyboardNavRef.current = true;
885
+ lastKeyboardNavTimeRef.current = Date.now();
886
+ lastMousePosRef.current = { ...currentMousePosRef.current };
887
+ setActiveIndex(index);
888
+ }
889
+ },
890
+ virtual: true,
891
+ loop: true,
892
+ scrollItemIntoView: false,
893
+ focusItemOnHover: false, // We use elementFromPoint in mousemove handlers - floating-ui's indexOf can be stale after filter
894
+ });
895
+
896
+ const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions([
897
+ click,
898
+ dismiss,
899
+ role,
900
+ listNav,
901
+ ]);
902
+
903
+ const lastSelectedIndexRef = useRef<number | null>(null);
904
+ const hasSelectedSinceOpenRef = useRef(false);
905
+
906
+ const handleSelect = useCallback(
907
+ (option: ComboboxOption, index: number, event?: React.MouseEvent) => {
908
+ hasSelectedSinceOpenRef.current = true;
909
+ if (multiple) {
910
+ const current = Array.isArray(value) ? value : value ? [value] : [];
911
+ if (event?.shiftKey && lastSelectedIndexRef.current != null) {
912
+ const from = Math.min(lastSelectedIndexRef.current, index);
913
+ const to = Math.max(lastSelectedIndexRef.current, index);
914
+ const rangeValues = sortedFiltered.slice(from, to + 1).map((o) => o.value);
915
+ const merged = new Set([...current, ...rangeValues]);
916
+ onValueChange?.([...merged]);
917
+ } else {
918
+ const next = current.includes(option.value)
919
+ ? current.filter((v) => v !== option.value)
920
+ : [...current, option.value];
921
+ onValueChange?.(next);
922
+ lastSelectedIndexRef.current = index;
923
+ }
924
+ } else {
925
+ onValueChange?.(option.value);
926
+ setOpen(false);
927
+ }
928
+ },
929
+ [onValueChange, multiple, value, sortedFiltered],
930
+ );
931
+
932
+ const handleListMouseMove = useCallback((e: React.MouseEvent) => {
933
+ const { clientX, clientY } = e;
934
+ currentMousePosRef.current = { x: clientX, y: clientY };
935
+
936
+ // Sync activeIndex from elementUnderCursor - list's own mousemove fires in correct context (works in iframes)
937
+ if (!keyboardNavRef.current && typeof document !== "undefined") {
938
+ const el = document.elementFromPoint(clientX, clientY);
939
+ const row = el?.closest?.("[data-combobox-index]");
940
+ const actualIndex = row?.getAttribute("data-combobox-index");
941
+ const list = sortedFilteredRef.current;
942
+ const len = list.length + (showCreateOptionRef.current ? 1 : 0);
943
+ const activeIdx = activeIndexRef.current;
944
+ const n = actualIndex != null ? Number(actualIndex) : null;
945
+ const next = n != null && n >= 0 && n < len ? n : activeIdx;
946
+ if (next !== activeIdx) setActiveIndex(next);
947
+ }
948
+
949
+ const last = lastMousePosRef.current;
950
+ const posChanged = last != null && (clientX !== last.x || clientY !== last.y);
951
+ if (!posChanged) return;
952
+ const now = Date.now();
953
+ if (now - lastKeyboardNavTimeRef.current < 200) return;
954
+ lastMousePosRef.current = { x: clientX, y: clientY };
955
+ keyboardNavRef.current = false;
956
+ }, []);
957
+
958
+ const handlersRef = useRef({} as ComboboxItemHandlers);
959
+
960
+ const handleSelectRef = useRef(handleSelect);
961
+ handleSelectRef.current = handleSelect;
962
+ useEffect(() => {
963
+ if (!open || typeof document === "undefined") return;
964
+ const onKeyDown = (e: KeyboardEvent) => {
965
+ const floatingEl = panel.refs.floating.current;
966
+ const triggerEl = panel.triggerRef.current;
967
+ const target = e.target as Node | null;
968
+ const inPanel = target && (floatingEl?.contains(target) || triggerEl?.contains(target));
969
+ if (!inPanel) return;
970
+ if (e.key === "Escape") {
971
+ e.preventDefault();
972
+ e.stopPropagation();
973
+ setOpen(false);
974
+ } else if (e.key === "Enter" || e.key === " ") {
975
+ const target = e.target as HTMLElement | null;
976
+ if (
977
+ e.key === " " &&
978
+ target?.tagName === "INPUT" &&
979
+ (target as HTMLInputElement).type !== "checkbox"
980
+ )
981
+ return;
982
+ e.preventDefault();
983
+ e.stopPropagation();
984
+ const idx = activeIndexRef.current;
985
+ const list = sortedFilteredRef.current;
986
+ const createIdx = showCreateOptionRef.current ? list.length : -1;
987
+ if (idx === createIdx && showCreateOptionRef.current) {
988
+ handleCreate();
989
+ } else if (e.key === "Enter" && multipleRef.current && hasSelectedSinceOpenRef.current) {
990
+ setOpen(false);
991
+ } else if (idx != null && list[idx]) {
992
+ handleSelectRef.current(list[idx], idx);
993
+ if (e.key === "Enter" || !multipleRef.current) setOpen(false);
994
+ } else {
995
+ setOpen(false);
996
+ }
997
+ }
998
+ };
999
+ document.addEventListener("keydown", onKeyDown, { capture: true });
1000
+ return () => document.removeEventListener("keydown", onKeyDown, { capture: true });
1001
+ }, [open, showCreateOption, handleCreate, setOpen]);
1002
+
1003
+ const referenceProps = getReferenceProps({
1004
+ ref: panel.setReferenceRef,
1005
+ onKeyDown(event: React.KeyboardEvent) {
1006
+ if (
1007
+ event.key === "Enter" ||
1008
+ event.code === "Space" ||
1009
+ event.key === " " ||
1010
+ event.key === "ArrowDown" ||
1011
+ event.key === "ArrowUp" ||
1012
+ event.key === "j" ||
1013
+ event.key === "k"
1014
+ ) {
1015
+ event.preventDefault();
1016
+ setOpen(true);
1017
+ setActiveIndex(0);
1018
+ }
1019
+ },
1020
+ });
1021
+
1022
+ const boxEventProps: Record<string, any> = {};
1023
+ for (const [key, val] of Object.entries(referenceProps)) {
1024
+ if (key === "ref" || typeof val === "function") boxEventProps[key] = val;
1025
+ if (key.startsWith("aria-") || key === "role" || key === "tabIndex") boxEventProps[key] = val;
1026
+ }
1027
+ boxEventProps.tabIndex = disabled ? -1 : (tabIndexOverride ?? 0);
1028
+ boxEventProps.role = "combobox";
1029
+ boxEventProps["aria-haspopup"] = "listbox";
1030
+ boxEventProps["aria-expanded"] = open;
1031
+
1032
+ // Total navigable items includes the create option if shown
1033
+ const totalNavigableItems = sortedFiltered.length + (showCreateOption ? 1 : 0);
1034
+ const createOptionIndex = showCreateOption ? sortedFiltered.length : -1;
1035
+
1036
+ const handleItemKeyDown = useCallback(
1037
+ (e: React.KeyboardEvent, _index: number) => {
1038
+ const isDown = e.key === "j";
1039
+ const isUp = e.key === "k";
1040
+ if (isDown || isUp) {
1041
+ e.preventDefault();
1042
+ e.stopPropagation();
1043
+ keyboardNavRef.current = true;
1044
+ lastKeyboardNavTimeRef.current = Date.now();
1045
+ lastMousePosRef.current = { ...currentMousePosRef.current };
1046
+ setActiveIndex((prev) => {
1047
+ const next = isDown
1048
+ ? prev == null
1049
+ ? 0
1050
+ : prev + 1
1051
+ : prev == null
1052
+ ? totalNavigableItems - 1
1053
+ : prev - 1;
1054
+ return isDown
1055
+ ? next >= totalNavigableItems
1056
+ ? 0
1057
+ : next
1058
+ : next < 0
1059
+ ? totalNavigableItems - 1
1060
+ : next;
1061
+ });
1062
+ }
1063
+ },
1064
+ [totalNavigableItems],
1065
+ );
1066
+
1067
+ handlersRef.current = {
1068
+ getItemProps,
1069
+ onSelect: handleSelect,
1070
+ onItemHover: undefined,
1071
+ onItemKeyDown: handleItemKeyDown,
1072
+ knobProps,
1073
+ textColor,
1074
+ listItemsRef,
1075
+ };
1076
+
1077
+ const handleSearchKeyDown = useCallback(
1078
+ (event: React.KeyboardEvent) => {
1079
+ const isDown = event.key === "ArrowDown" || event.key === "j";
1080
+ const isUp = event.key === "ArrowUp" || event.key === "k";
1081
+ if (isDown) {
1082
+ event.preventDefault();
1083
+ keyboardNavRef.current = true;
1084
+ lastKeyboardNavTimeRef.current = Date.now();
1085
+ lastMousePosRef.current = { ...currentMousePosRef.current };
1086
+ setActiveIndex((prev) => {
1087
+ const next = prev == null ? 0 : prev + 1;
1088
+ return next >= totalNavigableItems ? 0 : next;
1089
+ });
1090
+ } else if (isUp) {
1091
+ event.preventDefault();
1092
+ keyboardNavRef.current = true;
1093
+ lastKeyboardNavTimeRef.current = Date.now();
1094
+ lastMousePosRef.current = { ...currentMousePosRef.current };
1095
+ setActiveIndex((prev) => {
1096
+ const next = prev == null ? totalNavigableItems - 1 : prev - 1;
1097
+ return next < 0 ? totalNavigableItems - 1 : next;
1098
+ });
1099
+ } else if (event.key === "Enter" || event.key === " ") {
1100
+ event.preventDefault();
1101
+ if (activeIndex === createOptionIndex && showCreateOption) {
1102
+ handleCreate();
1103
+ } else if (event.key === "Enter" && multiple && hasSelectedSinceOpenRef.current) {
1104
+ setOpen(false);
1105
+ } else if (activeIndex != null && sortedFiltered[activeIndex]) {
1106
+ handleSelect(sortedFiltered[activeIndex], activeIndex);
1107
+ if (event.key === "Enter" || !multiple) setOpen(false);
1108
+ } else {
1109
+ setOpen(false);
1110
+ }
1111
+ } else if (event.key === "Escape") {
1112
+ setOpen(false);
1113
+ }
1114
+ },
1115
+ [
1116
+ sortedFiltered,
1117
+ activeIndex,
1118
+ handleSelect,
1119
+ handleCreate,
1120
+ totalNavigableItems,
1121
+ createOptionIndex,
1122
+ showCreateOption,
1123
+ multiple,
1124
+ ],
1125
+ );
1126
+
1127
+ // Scroll to keep active item in view. Defer to next frame to avoid racing with
1128
+ // focus/scroll from useListNavigation and to run after list reorder on selection.
1129
+ // Grow dropdown when scrolling via keyboard (same as wheel/hover-arrow).
1130
+ useEffect(() => {
1131
+ if (activeIndex == null) return;
1132
+ const scrollContainer = listScrollRef.current;
1133
+ if (!scrollContainer) return;
1134
+ const rafId = requestAnimationFrame(() => {
1135
+ const item = listItemsRef.current[activeIndex];
1136
+ const container = listScrollRef.current;
1137
+ if (!item || !container) return;
1138
+ const containerRect = container.getBoundingClientRect();
1139
+ const itemRect = item.getBoundingClientRect();
1140
+ const bottomEdge = containerRect.bottom - scrollArrowBuffer;
1141
+ const topEdge = containerRect.top + scrollArrowBuffer;
1142
+ let didScroll = false;
1143
+ let scrollDir: "up" | "down" | null = null;
1144
+ if (itemRect.bottom > bottomEdge) {
1145
+ scrollDir = "down";
1146
+ container.scrollTop += itemRect.bottom - bottomEdge;
1147
+ didScroll = true;
1148
+ } else if (itemRect.top < topEdge) {
1149
+ scrollDir = "up";
1150
+ container.scrollTop -= topEdge - itemRect.top;
1151
+ didScroll = true;
1152
+ }
1153
+ if (didScroll && scrollDir && !justResetFromFilterRef.current) {
1154
+ lastScrollTopRef.current = container.scrollTop;
1155
+ growConstraintRef.current = scrollDir === "down" ? "no-down" : "no-up";
1156
+ repositionOverlayRef.current("wheel");
1157
+ growConstraintRef.current = null;
1158
+ }
1159
+ justResetFromFilterRef.current = false;
1160
+ });
1161
+ return () => cancelAnimationFrame(rafId);
1162
+ }, [activeIndex, multiple ? value : undefined]);
1163
+
1164
+ const triggerContent = triggerRender ? (
1165
+ <View {...boxEventProps} data-testid="combobox-trigger">
1166
+ {triggerRender(multiple ? selectedOptions : selectedOption, open)}
1167
+ </View>
1168
+ ) : (
1169
+ <InputParts.Box
1170
+ {...boxEventProps}
1171
+ data-testid="combobox-trigger"
1172
+ cursor={disabled ? "not-allowed" : "pointer"}
1173
+ opacity={disabled ? 0.5 : 1}
1174
+ disabled={disabled}
1175
+ size={knobProps.sizeToken}
1176
+ {...(inTableCell
1177
+ ? {}
1178
+ : {
1179
+ borderRadius: knobProps.borderRadius.borderRadius,
1180
+ borderWidth: knobProps.borderRadius.borderWidth,
1181
+ })}
1182
+ >
1183
+ <SyncFocusToOpen open={open} />
1184
+ <View
1185
+ flex={1}
1186
+ paddingHorizontal="$3"
1187
+ paddingVertical="$2"
1188
+ id={id}
1189
+ justifyContent={multiple && selectedValues.length > 0 ? "center" : "flex-start"}
1190
+ alignItems={multiple && selectedValues.length > 0 ? "center" : "flex-start"}
1191
+ >
1192
+ {multiple && selectedValues.length > 0 ? (
1193
+ <View
1194
+ flexDirection="row"
1195
+ flexWrap="nowrap"
1196
+ gap="$1.5"
1197
+ alignItems="center"
1198
+ maxHeight={getFieldHeight(knobProps.sizeToken as SizeTokens) * 0.75}
1199
+ overflow="hidden"
1200
+ overflowX="auto"
1201
+ >
1202
+ {selectedValues.map((v) => (
1203
+ <Chip
1204
+ key={v}
1205
+ size={
1206
+ ({ $3: "$2", $4: "$3", $5: "$4" }[knobProps.sizeToken] ??
1207
+ "$3") as ChipProps["size"]
1208
+ }
1209
+ color="gray"
1210
+ onDismiss={dismissible && !disabled ? () => handleDismiss(v) : undefined}
1211
+ >
1212
+ {getLabel(v)}
1213
+ </Chip>
1214
+ ))}
1215
+ </View>
1216
+ ) : (
1217
+ <Text
1218
+ fontFamily={knobProps.body.fontFamily}
1219
+ fontWeight={knobProps.body.fontWeight}
1220
+ color={selectedOption ? textColor : formCommonColors.muted}
1221
+ numberOfLines={1}
1222
+ userSelect="none"
1223
+ >
1224
+ {selectedOption?.label ?? placeholder}
1225
+ </Text>
1226
+ )}
1227
+ </View>
1228
+ <View paddingRight="$2" alignSelf="center">
1229
+ <CaretDownIcon size={16} />
1230
+ </View>
1231
+ </InputParts.Box>
1232
+ );
1233
+
1234
+ return (
1235
+ <>
1236
+ {triggerContent}
1237
+
1238
+ {panel.mounted && (
1239
+ <FloatingFocusManager context={panel.context} modal={false} initialFocus={-1}>
1240
+ <YStack
1241
+ outlineWidth={0}
1242
+ pointerEvents={panel.visible ? "auto" : "none"}
1243
+ {...getFloatingProps({
1244
+ ref: panel.refs.setFloating,
1245
+ })}
1246
+ style={
1247
+ {
1248
+ position: "fixed",
1249
+ top: 0,
1250
+ left: 0,
1251
+ zIndex: zIndex.dropdown,
1252
+ overflow: "hidden",
1253
+ display: "flex",
1254
+ flexDirection: "column",
1255
+ boxShadow: "0px 8px 28px rgba(0,0,0,0.12), 0px 2px 6px rgba(0,0,0,0.04)",
1256
+ opacity: panel.visible ? 1 : 0,
1257
+ transform: panel.visible ? "scale(1)" : "scale(0.96)",
1258
+ transition: panelTransition,
1259
+ transformOrigin: panel.placement.startsWith("top") ? "bottom left" : "top left",
1260
+ boxSizing: "border-box",
1261
+ } as any
1262
+ }
1263
+ backgroundColor="$background"
1264
+ borderRadius={panel.dropdownRadius}
1265
+ borderWidth={panel.hasBorder ? knobProps.borderRadius.borderWidth : 0}
1266
+ borderColor={panel.hasBorder ? formInputColors.border.focus : "transparent"}
1267
+ data-testid="combobox-dropdown"
1268
+ >
1269
+ {!hideSearch && (
1270
+ <InputParts size={knobProps.sizeToken}>
1271
+ <InputParts.Box
1272
+ borderWidth={0}
1273
+ borderBottomWidth={1}
1274
+ borderBottomColor={formCommonColors.divider}
1275
+ borderRadius={0}
1276
+ elevation={undefined}
1277
+ >
1278
+ <InputParts.Section>
1279
+ <InputParts.Icon adornment="leading">
1280
+ <MagnifyingGlassIcon />
1281
+ </InputParts.Icon>
1282
+ </InputParts.Section>
1283
+ <InputParts.Section>
1284
+ <InputParts.Area
1285
+ ref={searchInputRef as any}
1286
+ defaultValue=""
1287
+ onChangeText={(text: string) => setInternalFilter(text)}
1288
+ placeholder={searchPlaceholder}
1289
+ onKeyDown={handleSearchKeyDown as any}
1290
+ />
1291
+ </InputParts.Section>
1292
+ {loading ? (
1293
+ <InputParts.Section>
1294
+ <InputParts.Icon adornment="trailing">
1295
+ <Spinner size="small" />
1296
+ </InputParts.Icon>
1297
+ </InputParts.Section>
1298
+ ) : filter ? (
1299
+ <InputParts.Section>
1300
+ <InputParts.Button onPress={() => setInternalFilter("")}>
1301
+ <InputParts.Icon>
1302
+ <XIcon />
1303
+ </InputParts.Icon>
1304
+ </InputParts.Button>
1305
+ </InputParts.Section>
1306
+ ) : null}
1307
+ </InputParts.Box>
1308
+ </InputParts>
1309
+ )}
1310
+
1311
+ <YStack
1312
+ ref={listScrollRef as any}
1313
+ overflow="scroll"
1314
+ flex={1}
1315
+ minHeight={0}
1316
+ onScroll={handleListScroll as any}
1317
+ onMouseMove={handleListMouseMove}
1318
+ onPointerDown={dragProps.onPointerDown}
1319
+ style={dragProps.style}
1320
+ >
1321
+ <ScrollArrow
1322
+ direction="up"
1323
+ scrollRef={listScrollRef}
1324
+ visible={panel.arrowUp}
1325
+ arrowScrollDirRef={panel.arrowScrollDirRef}
1326
+ />
1327
+ {sortedFiltered.length > 0 ? (
1328
+ <Fragment key={filter}>
1329
+ {multiple
1330
+ ? sortedFiltered.map((option, index) => (
1331
+ <ComboboxItem
1332
+ key={option.value}
1333
+ option={option}
1334
+ index={index}
1335
+ isSelected={isSelected(option.value)}
1336
+ isActive={index === activeIndex}
1337
+ suppressHover={activeIndex != null}
1338
+ handlers={handlersRef}
1339
+ />
1340
+ ))
1341
+ : groupedItems.map((item, _i) =>
1342
+ item.type === "header" ? (
1343
+ <GroupHeader key={`header-${item.label}`} color={textColor}>
1344
+ {item.label}
1345
+ </GroupHeader>
1346
+ ) : (
1347
+ <ComboboxItem
1348
+ key={item.option.value}
1349
+ option={item.option}
1350
+ index={item.flatIndex}
1351
+ isSelected={isSelected(item.option.value)}
1352
+ isActive={item.flatIndex === activeIndex}
1353
+ suppressHover={activeIndex != null}
1354
+ handlers={handlersRef}
1355
+ />
1356
+ ),
1357
+ )}
1358
+ {showCreateOption && (
1359
+ <ComboboxRow
1360
+ role="option"
1361
+ tabIndex={-1}
1362
+ selected={false}
1363
+ size={knobProps.sizeToken}
1364
+ data-combobox-index={createOptionIndex}
1365
+ data-active={createOptionIndex === activeIndex}
1366
+ backgroundColor={
1367
+ createOptionIndex === activeIndex
1368
+ ? formInputColors.background.focus
1369
+ : undefined
1370
+ }
1371
+ hoverStyle={
1372
+ activeIndex != null
1373
+ ? {
1374
+ backgroundColor:
1375
+ createOptionIndex === activeIndex
1376
+ ? formInputColors.background.focus
1377
+ : "transparent",
1378
+ }
1379
+ : undefined
1380
+ }
1381
+ onPress={handleCreate}
1382
+ {...(knobProps.transition ? { animation: knobProps.transition } : undefined)}
1383
+ >
1384
+ <PlusIcon size={14} color={knobProps.textAccentColor} />
1385
+ <Text
1386
+ fontFamily={knobProps.body.fontFamily}
1387
+ fontWeight={knobProps.body.fontWeight}
1388
+ color={textColor}
1389
+ numberOfLines={1}
1390
+ flex={1}
1391
+ >
1392
+ {createLabel.replace("{value}", filter.trim())}
1393
+ </Text>
1394
+ </ComboboxRow>
1395
+ )}
1396
+ </Fragment>
1397
+ ) : showCreateOption ? (
1398
+ <View
1399
+ flexDirection="row"
1400
+ alignItems="center"
1401
+ gap="$2"
1402
+ paddingHorizontal="$3"
1403
+ height={knobProps.sizeToken}
1404
+ data-combobox-index={createOptionIndex}
1405
+ data-active={createOptionIndex === activeIndex}
1406
+ onPress={handleCreate}
1407
+ hoverStyle={
1408
+ activeIndex != null
1409
+ ? {
1410
+ backgroundColor:
1411
+ createOptionIndex === activeIndex
1412
+ ? formInputColors.background.focus
1413
+ : "transparent",
1414
+ }
1415
+ : { backgroundColor: formInputColors.background.focus }
1416
+ }
1417
+ backgroundColor={
1418
+ createOptionIndex === activeIndex
1419
+ ? formInputColors.background.focus
1420
+ : "transparent"
1421
+ }
1422
+ pressStyle={{ backgroundColor: formInputColors.background.focus }}
1423
+ {...(knobProps.transition ? { animation: knobProps.transition } : undefined)}
1424
+ >
1425
+ <PlusIcon size={14} color={knobProps.textAccentColor} />
1426
+ <Text
1427
+ fontFamily={knobProps.body.fontFamily}
1428
+ fontWeight={knobProps.body.fontWeight}
1429
+ color={textColor}
1430
+ numberOfLines={1}
1431
+ flex={1}
1432
+ >
1433
+ {createLabel.replace("{value}", filter.trim())}
1434
+ </Text>
1435
+ </View>
1436
+ ) : (
1437
+ <View {...knobProps.panelPadding} alignItems="center">
1438
+ <Text
1439
+ color={formCommonColors.muted}
1440
+ fontSize={knobProps.sizeToken}
1441
+ fontFamily={knobProps.body.fontFamily}
1442
+ fontWeight={knobProps.body.fontWeight}
1443
+ >
1444
+ {emptyMessage}
1445
+ </Text>
1446
+ </View>
1447
+ )}
1448
+ {hasMore && loading && (
1449
+ <View padding="$2" alignItems="center">
1450
+ <Spinner size="small" />
1451
+ </View>
1452
+ )}
1453
+ <ScrollArrow
1454
+ direction="down"
1455
+ scrollRef={listScrollRef}
1456
+ visible={panel.arrowDown}
1457
+ arrowScrollDirRef={panel.arrowScrollDirRef}
1458
+ />
1459
+ </YStack>
1460
+ </YStack>
1461
+ </FloatingFocusManager>
1462
+ )}
1463
+ </>
1464
+ );
1465
+ }
1466
+
1467
+ // ── Native Combobox (Sheet-based for iOS/Android) ─────────────
1468
+
1469
+ const comboboxSearchHeader = (
1470
+ knobProps: FloatingComboboxCoreProps["knobProps"],
1471
+ filter: string,
1472
+ setFilter: (v: string) => void,
1473
+ searchPlaceholder: string,
1474
+ textColor: string,
1475
+ mutedColor: string,
1476
+ loading: boolean,
1477
+ onKeyDown?: (e: React.KeyboardEvent) => void,
1478
+ ) => (
1479
+ <XStack
1480
+ alignItems="center"
1481
+ gap="$2"
1482
+ paddingHorizontal="$3"
1483
+ height={knobProps.sizeToken}
1484
+ borderBottomWidth={1}
1485
+ borderBottomColor={formCommonColors.divider}
1486
+ >
1487
+ <MagnifyingGlassIcon size={16} color={mutedColor as any} />
1488
+ <TInput
1489
+ unstyled
1490
+ flex={1}
1491
+ placeholder={searchPlaceholder}
1492
+ value={filter}
1493
+ onChangeText={setFilter}
1494
+ onKeyDown={onKeyDown as any}
1495
+ fontFamily={knobProps.body.fontFamily}
1496
+ fontWeight={knobProps.body.fontWeight}
1497
+ color={textColor}
1498
+ placeholderTextColor={mutedColor as any}
1499
+ autoFocus
1500
+ />
1501
+ {loading ? (
1502
+ <Spinner size="small" />
1503
+ ) : filter ? (
1504
+ <View onPress={() => setFilter("")} opacity={0.6}>
1505
+ <XIcon size={16} />
1506
+ </View>
1507
+ ) : null}
1508
+ </XStack>
1509
+ );
1510
+
1511
+ function NativeComboboxCore({
1512
+ options,
1513
+ value,
1514
+ onValueChange,
1515
+ onBlur,
1516
+ placeholder,
1517
+ searchPlaceholder,
1518
+ emptyMessage,
1519
+ onSearch,
1520
+ loading,
1521
+ onLoadMore,
1522
+ hasMore,
1523
+ disabled,
1524
+ id,
1525
+ trigger: triggerRender,
1526
+ knobProps,
1527
+ multiple,
1528
+ dismissible,
1529
+ creatable,
1530
+ onCreate,
1531
+ createLabel = 'Create "{value}"',
1532
+ hideSearch,
1533
+ searchValue,
1534
+ open: openProp,
1535
+ onOpenChange,
1536
+ }: FloatingComboboxCoreProps) {
1537
+ const inTableCell = useIsInTableCell();
1538
+ const [internalOpen, setInternalOpen] = useState(false);
1539
+ // Use external open state when provided (controlled), otherwise use internal state
1540
+ const open = openProp !== undefined ? openProp : internalOpen;
1541
+ const setOpen = useCallback(
1542
+ (nextOpen: boolean) => {
1543
+ if (openProp !== undefined) {
1544
+ onOpenChange?.(nextOpen);
1545
+ } else {
1546
+ setInternalOpen(nextOpen);
1547
+ }
1548
+ },
1549
+ [openProp, onOpenChange],
1550
+ );
1551
+ const [internalFilter, setInternalFilter] = useState("");
1552
+ // Use external searchValue when provided, otherwise use internal filter
1553
+ const filter = searchValue !== undefined ? searchValue : internalFilter;
1554
+ const [activeIndex, setActiveIndex] = useState<number | null>(0);
1555
+ const listRef = useRef<HTMLElement | null>(null);
1556
+
1557
+ const textColor = knobProps.textAccentColor;
1558
+ const theme = useTheme();
1559
+ const mutedColor = theme.color7?.val ?? "$color7";
1560
+
1561
+ const labelCacheRef = useRef<Map<string, string>>(new Map());
1562
+ for (const o of options) labelCacheRef.current.set(o.value, o.label);
1563
+ const getLabel = useCallback((v: string) => labelCacheRef.current.get(v) ?? v, []);
1564
+
1565
+ const selectedValues = useMemo<string[]>(() => {
1566
+ if (!multiple) return [];
1567
+ const vals = Array.isArray(value) ? value : value ? [value] : [];
1568
+ return [...vals].sort((a, b) => getLabel(a).localeCompare(getLabel(b)));
1569
+ }, [multiple, value, options]);
1570
+
1571
+ const selectedOption = useMemo(
1572
+ () => (multiple ? undefined : options.find((o) => o.value === value)),
1573
+ [options, value, multiple],
1574
+ );
1575
+
1576
+ const selectedOptions = useMemo(
1577
+ () => (multiple ? options.filter((o) => selectedValues.includes(o.value)) : []),
1578
+ [options, selectedValues, multiple],
1579
+ );
1580
+
1581
+ const isSelectedFn = useCallback(
1582
+ (optionValue: string) =>
1583
+ multiple ? selectedValues.includes(optionValue) : optionValue === value,
1584
+ [multiple, selectedValues, value],
1585
+ );
1586
+
1587
+ const handleDismiss = useCallback(
1588
+ (valueToRemove: string) => {
1589
+ if (!multiple) return;
1590
+ const current = Array.isArray(value) ? value : value ? [value] : [];
1591
+ const next = current.filter((v) => v !== valueToRemove);
1592
+ onValueChange?.(next);
1593
+ },
1594
+ [multiple, value, onValueChange],
1595
+ );
1596
+
1597
+ const filtered = useMemo(() => {
1598
+ if (onSearch || !filter) return options;
1599
+ const query = filter.toLowerCase();
1600
+ return options.filter(
1601
+ (option) =>
1602
+ option.label.toLowerCase().includes(query) ||
1603
+ option.value.toLowerCase().includes(query) ||
1604
+ (option.keywords && option.keywords.toLowerCase().includes(query)),
1605
+ );
1606
+ }, [options, filter, onSearch]);
1607
+
1608
+ // Show create option if creatable is enabled and filter doesn't exactly match an existing option
1609
+ const showCreateOption = useMemo(() => {
1610
+ if (!creatable || !filter.trim()) return false;
1611
+ const trimmed = filter.trim().toLowerCase();
1612
+ return !options.some(
1613
+ (o) => o.label.toLowerCase() === trimmed || o.value.toLowerCase() === trimmed,
1614
+ );
1615
+ }, [creatable, filter, options]);
1616
+
1617
+ const handleCreate = useCallback(() => {
1618
+ if (!onCreate || !filter.trim()) return;
1619
+ const newOption = onCreate(filter.trim());
1620
+ if (newOption) {
1621
+ if (multiple) {
1622
+ const current = Array.isArray(value) ? value : value ? [value] : [];
1623
+ onValueChange?.([...current, newOption.value]);
1624
+ } else {
1625
+ onValueChange?.(newOption.value);
1626
+ setOpen(false);
1627
+ }
1628
+ }
1629
+ setInternalFilter("");
1630
+ }, [onCreate, filter, multiple, value, onValueChange]);
1631
+
1632
+ const hasScrollableContent = filtered.length > 6;
1633
+ const sheetTransition = knobProps.transition ?? "medium";
1634
+
1635
+ // Selected item(s) at top when filter empty (single + multi); reset to normal order when searching
1636
+ const sortedFiltered = useMemo(() => {
1637
+ if (filter.trim()) return filtered;
1638
+ const current = Array.isArray(value) ? value : value ? [value] : [];
1639
+ if (current.length === 0) return filtered;
1640
+ const first = filtered
1641
+ .filter((o) => current.includes(o.value))
1642
+ .sort((a, b) => getLabel(a.value).localeCompare(getLabel(b.value)));
1643
+ const rest = filtered.filter((o) => !current.includes(o.value));
1644
+ return [...first, ...rest];
1645
+ }, [filtered, value, filter, getLabel]);
1646
+
1647
+ const searchCleanupRef = useRef<(() => void) | null>(null);
1648
+ useEffect(() => {
1649
+ if (!onSearch || !open) return;
1650
+ const timerId = setTimeout(() => {
1651
+ searchCleanupRef.current?.();
1652
+ const cleanup = onSearch(filter);
1653
+ searchCleanupRef.current = cleanup ?? null;
1654
+ }, 200);
1655
+ return () => {
1656
+ clearTimeout(timerId);
1657
+ searchCleanupRef.current?.();
1658
+ searchCleanupRef.current = null;
1659
+ };
1660
+ }, [filter, onSearch, open]);
1661
+
1662
+ useEffect(() => {
1663
+ if (open) {
1664
+ setActiveIndex(0);
1665
+ requestAnimationFrame(() => listRef.current?.focus());
1666
+ } else {
1667
+ setInternalFilter("");
1668
+ }
1669
+ }, [open]);
1670
+
1671
+ const totalItems = sortedFiltered.length + (showCreateOption ? 1 : 0);
1672
+ const createOptionIndex = showCreateOption ? sortedFiltered.length : -1;
1673
+
1674
+ const handleSelect = useCallback(
1675
+ (option: ComboboxOption) => {
1676
+ if (multiple) {
1677
+ const current = Array.isArray(value) ? value : value ? [value] : [];
1678
+ const next = current.includes(option.value)
1679
+ ? current.filter((v) => v !== option.value)
1680
+ : [...current, option.value];
1681
+ onValueChange?.(next);
1682
+ } else {
1683
+ onValueChange?.(option.value);
1684
+ setOpen(false);
1685
+ }
1686
+ },
1687
+ [onValueChange, multiple, value],
1688
+ );
1689
+
1690
+ const handleSearchKeyDown = useCallback(
1691
+ (e: React.KeyboardEvent) => {
1692
+ const isDown = e.key === "ArrowDown" || e.key === "j";
1693
+ const isUp = e.key === "ArrowUp" || e.key === "k";
1694
+ if (isDown) {
1695
+ e.preventDefault();
1696
+ listRef.current?.focus();
1697
+ setActiveIndex((prev) => {
1698
+ const next = prev == null ? 0 : prev + 1;
1699
+ return next >= totalItems ? 0 : next;
1700
+ });
1701
+ } else if (isUp) {
1702
+ e.preventDefault();
1703
+ listRef.current?.focus();
1704
+ setActiveIndex((prev) => {
1705
+ const next = prev == null ? totalItems - 1 : prev - 1;
1706
+ return next < 0 ? totalItems - 1 : next;
1707
+ });
1708
+ }
1709
+ },
1710
+ [totalItems],
1711
+ );
1712
+
1713
+ const handleListKeyDown = useCallback(
1714
+ (e: React.KeyboardEvent) => {
1715
+ if (totalItems === 0) return;
1716
+ const isDown = e.key === "ArrowDown" || e.key === "j";
1717
+ const isUp = e.key === "ArrowUp" || e.key === "k";
1718
+ if (isDown) {
1719
+ e.preventDefault();
1720
+ setActiveIndex((prev) => {
1721
+ const next = prev == null ? 0 : prev + 1;
1722
+ return next >= totalItems ? 0 : next;
1723
+ });
1724
+ } else if (isUp) {
1725
+ e.preventDefault();
1726
+ setActiveIndex((prev) => {
1727
+ const next = prev == null ? totalItems - 1 : prev - 1;
1728
+ return next < 0 ? totalItems - 1 : next;
1729
+ });
1730
+ } else if (e.key === "Enter" || e.key === " ") {
1731
+ e.preventDefault();
1732
+ if (activeIndex === createOptionIndex && showCreateOption) {
1733
+ handleCreate();
1734
+ } else if (activeIndex != null && activeIndex >= 0 && sortedFiltered[activeIndex]) {
1735
+ handleSelect(sortedFiltered[activeIndex]);
1736
+ if (e.key === "Enter" || !multiple) setOpen(false);
1737
+ }
1738
+ }
1739
+ },
1740
+ [
1741
+ totalItems,
1742
+ createOptionIndex,
1743
+ showCreateOption,
1744
+ activeIndex,
1745
+ sortedFiltered,
1746
+ handleCreate,
1747
+ handleSelect,
1748
+ multiple,
1749
+ ],
1750
+ );
1751
+
1752
+ // Document-level Enter/Space/Escape (sheet mode - catches keys when focus is on search or list)
1753
+ useEffect(() => {
1754
+ if (!open || typeof document === "undefined") return;
1755
+ const onKeyDown = (e: KeyboardEvent) => {
1756
+ if (e.key === "Escape") {
1757
+ e.preventDefault();
1758
+ setOpen(false);
1759
+ } else if (e.key === "Enter" || e.key === " ") {
1760
+ const target = e.target as HTMLElement | null;
1761
+ if (
1762
+ e.key === " " &&
1763
+ target?.tagName === "INPUT" &&
1764
+ (target as HTMLInputElement).type !== "checkbox"
1765
+ )
1766
+ return;
1767
+ e.preventDefault();
1768
+ e.stopPropagation();
1769
+ if (activeIndex === createOptionIndex && showCreateOption) {
1770
+ handleCreate();
1771
+ } else if (activeIndex != null && activeIndex >= 0 && sortedFiltered[activeIndex]) {
1772
+ handleSelect(sortedFiltered[activeIndex]);
1773
+ if (e.key === "Enter" || !multiple) setOpen(false);
1774
+ } else {
1775
+ setOpen(false);
1776
+ }
1777
+ }
1778
+ };
1779
+ document.addEventListener("keydown", onKeyDown, { capture: true });
1780
+ return () => document.removeEventListener("keydown", onKeyDown, { capture: true });
1781
+ }, [
1782
+ open,
1783
+ activeIndex,
1784
+ createOptionIndex,
1785
+ showCreateOption,
1786
+ sortedFiltered,
1787
+ handleCreate,
1788
+ handleSelect,
1789
+ multiple,
1790
+ ]);
1791
+
1792
+ const handleOpenChange = useCallback(
1793
+ (val: boolean) => {
1794
+ setOpen(val);
1795
+ if (!val) onBlur?.();
1796
+ },
1797
+ [onBlur],
1798
+ );
1799
+
1800
+ const searchHeader = hideSearch
1801
+ ? undefined
1802
+ : comboboxSearchHeader(
1803
+ knobProps,
1804
+ filter,
1805
+ setInternalFilter,
1806
+ searchPlaceholder,
1807
+ textColor,
1808
+ mutedColor,
1809
+ loading ?? false,
1810
+ handleSearchKeyDown,
1811
+ );
1812
+
1813
+ const listContent = (
1814
+ <View
1815
+ ref={listRef as any}
1816
+ tabIndex={0}
1817
+ onKeyDown={handleListKeyDown}
1818
+ outlineStyle="none"
1819
+ flex={1}
1820
+ >
1821
+ {sortedFiltered.length > 0 ? (
1822
+ <>
1823
+ {sortedFiltered.map((option, i) => {
1824
+ const selected = isSelectedFn(option.value);
1825
+ const active = i === activeIndex;
1826
+ const prevGroup = i > 0 ? sortedFiltered[i - 1].group : undefined;
1827
+ const showGroupHeader = option.group && option.group !== prevGroup;
1828
+ return (
1829
+ <View key={option.value}>
1830
+ {showGroupHeader && <GroupHeader color={textColor}>{option.group}</GroupHeader>}
1831
+ <View
1832
+ flexDirection="row"
1833
+ alignItems="center"
1834
+ gap="$2"
1835
+ paddingHorizontal="$3"
1836
+ height={knobProps.sizeToken}
1837
+ onPress={() => handleSelect(option)}
1838
+ onMouseEnter={() => setActiveIndex(i)}
1839
+ hoverStyle={
1840
+ activeIndex != null
1841
+ ? {
1842
+ backgroundColor: active
1843
+ ? formInputColors.background.focus
1844
+ : selected
1845
+ ? formInputColors.background.base
1846
+ : "transparent",
1847
+ }
1848
+ : {
1849
+ backgroundColor: selected
1850
+ ? formInputColors.background.base
1851
+ : formInputColors.background.focus,
1852
+ }
1853
+ }
1854
+ backgroundColor={
1855
+ active
1856
+ ? formInputColors.background.focus
1857
+ : selected
1858
+ ? formInputColors.background.base
1859
+ : "transparent"
1860
+ }
1861
+ pressStyle={{ backgroundColor: formInputColors.background.focus }}
1862
+ >
1863
+ <Text
1864
+ fontFamily={knobProps.body.fontFamily}
1865
+ fontWeight={knobProps.body.fontWeight}
1866
+ color={textColor}
1867
+ numberOfLines={1}
1868
+ flex={1}
1869
+ >
1870
+ {option.label}
1871
+ </Text>
1872
+ {selected && <CheckIcon size={14} />}
1873
+ </View>
1874
+ </View>
1875
+ );
1876
+ })}
1877
+ {showCreateOption && (
1878
+ <View
1879
+ flexDirection="row"
1880
+ alignItems="center"
1881
+ gap="$2"
1882
+ paddingHorizontal="$3"
1883
+ height={knobProps.sizeToken}
1884
+ onPress={handleCreate}
1885
+ onMouseEnter={() => setActiveIndex(createOptionIndex)}
1886
+ hoverStyle={
1887
+ activeIndex != null
1888
+ ? {
1889
+ backgroundColor:
1890
+ createOptionIndex === activeIndex
1891
+ ? formInputColors.background.focus
1892
+ : "transparent",
1893
+ }
1894
+ : { backgroundColor: formInputColors.background.focus }
1895
+ }
1896
+ backgroundColor={
1897
+ createOptionIndex === activeIndex ? formInputColors.background.focus : "transparent"
1898
+ }
1899
+ pressStyle={{ backgroundColor: formInputColors.background.focus }}
1900
+ >
1901
+ <PlusIcon size={14} color={textColor as string} />
1902
+ <Text
1903
+ fontFamily={knobProps.body.fontFamily}
1904
+ fontWeight={knobProps.body.fontWeight}
1905
+ color={textColor}
1906
+ numberOfLines={1}
1907
+ flex={1}
1908
+ >
1909
+ {createLabel.replace("{value}", filter.trim())}
1910
+ </Text>
1911
+ </View>
1912
+ )}
1913
+ </>
1914
+ ) : showCreateOption ? (
1915
+ <View
1916
+ flexDirection="row"
1917
+ alignItems="center"
1918
+ gap="$2"
1919
+ paddingHorizontal="$3"
1920
+ height={knobProps.sizeToken}
1921
+ onPress={handleCreate}
1922
+ onMouseEnter={() => setActiveIndex(createOptionIndex)}
1923
+ hoverStyle={
1924
+ activeIndex != null
1925
+ ? {
1926
+ backgroundColor:
1927
+ createOptionIndex === activeIndex
1928
+ ? formInputColors.background.focus
1929
+ : "transparent",
1930
+ }
1931
+ : { backgroundColor: formInputColors.background.focus }
1932
+ }
1933
+ backgroundColor={
1934
+ createOptionIndex === activeIndex ? formInputColors.background.focus : "transparent"
1935
+ }
1936
+ pressStyle={{ backgroundColor: formInputColors.background.focus }}
1937
+ >
1938
+ <PlusIcon size={14} color={textColor as string} />
1939
+ <Text
1940
+ fontFamily={knobProps.body.fontFamily}
1941
+ fontWeight={knobProps.body.fontWeight}
1942
+ color={textColor}
1943
+ numberOfLines={1}
1944
+ flex={1}
1945
+ >
1946
+ {createLabel.replace("{value}", filter.trim())}
1947
+ </Text>
1948
+ </View>
1949
+ ) : (
1950
+ <View {...knobProps.panelPadding} alignItems="center">
1951
+ <Text
1952
+ color={formCommonColors.muted}
1953
+ fontSize={knobProps.sizeToken}
1954
+ fontFamily={knobProps.body.fontFamily}
1955
+ fontWeight={knobProps.body.fontWeight}
1956
+ >
1957
+ {emptyMessage}
1958
+ </Text>
1959
+ </View>
1960
+ )}
1961
+ {hasMore && loading && (
1962
+ <View padding="$2" alignItems="center">
1963
+ <Spinner size="small" />
1964
+ </View>
1965
+ )}
1966
+ </View>
1967
+ );
1968
+
1969
+ const triggerContent = triggerRender ? (
1970
+ <View data-testid="combobox-trigger">
1971
+ {triggerRender(multiple ? selectedOptions : selectedOption, open)}
1972
+ </View>
1973
+ ) : (
1974
+ <InputParts.Box
1975
+ data-testid="combobox-trigger"
1976
+ cursor={disabled ? "not-allowed" : "pointer"}
1977
+ opacity={disabled ? 0.5 : 1}
1978
+ disabled={disabled}
1979
+ size={knobProps.sizeToken}
1980
+ {...(inTableCell
1981
+ ? {}
1982
+ : {
1983
+ borderRadius: knobProps.borderRadius.borderRadius,
1984
+ borderWidth: knobProps.borderRadius.borderWidth,
1985
+ })}
1986
+ tabIndex={disabled ? -1 : 0}
1987
+ onKeyDown={(e: React.KeyboardEvent) => {
1988
+ if (
1989
+ ["Enter", " ", "ArrowDown", "ArrowUp", "j", "k"].includes(e.key) ||
1990
+ e.code === "Space"
1991
+ ) {
1992
+ e.preventDefault();
1993
+ if (!open) handleOpenChange(true);
1994
+ }
1995
+ }}
1996
+ >
1997
+ <View
1998
+ flex={1}
1999
+ paddingHorizontal="$3"
2000
+ paddingVertical="$2"
2001
+ id={id}
2002
+ justifyContent={multiple && selectedValues.length > 0 ? "center" : "flex-start"}
2003
+ alignItems={multiple && selectedValues.length > 0 ? "center" : "flex-start"}
2004
+ >
2005
+ {multiple && selectedValues.length > 0 ? (
2006
+ <View
2007
+ flexDirection="row"
2008
+ flexWrap="nowrap"
2009
+ gap="$1.5"
2010
+ alignItems="center"
2011
+ maxHeight={getFieldHeight(knobProps.sizeToken as SizeTokens) * 0.75}
2012
+ overflow="hidden"
2013
+ overflowX="auto"
2014
+ >
2015
+ {selectedValues.map((v) => (
2016
+ <Chip
2017
+ key={v}
2018
+ size={
2019
+ ({ $3: "$2", $4: "$3", $5: "$4" }[knobProps.sizeToken] ??
2020
+ "$3") as ChipProps["size"]
2021
+ }
2022
+ color="gray"
2023
+ onDismiss={dismissible && !disabled ? () => handleDismiss(v) : undefined}
2024
+ >
2025
+ {getLabel(v)}
2026
+ </Chip>
2027
+ ))}
2028
+ </View>
2029
+ ) : (
2030
+ <Text
2031
+ fontFamily={knobProps.body.fontFamily}
2032
+ fontWeight={knobProps.body.fontWeight}
2033
+ color={selectedOption ? textColor : formCommonColors.muted}
2034
+ numberOfLines={1}
2035
+ >
2036
+ {selectedOption?.label ?? placeholder}
2037
+ </Text>
2038
+ )}
2039
+ </View>
2040
+ <View paddingRight="$2" alignSelf="center">
2041
+ <CaretDownIcon size={16} />
2042
+ </View>
2043
+ </InputParts.Box>
2044
+ );
2045
+
2046
+ return (
2047
+ <FloatingPanel
2048
+ open={open}
2049
+ onOpenChange={handleOpenChange}
2050
+ sheet
2051
+ trigger={triggerContent}
2052
+ header={searchHeader}
2053
+ scrollable={hasScrollableContent}
2054
+ disabled={disabled}
2055
+ contentPadding="none"
2056
+ transition={typeof sheetTransition === "string" ? sheetTransition : "medium"}
2057
+ scrollViewProps={{
2058
+ onScroll: (e: any) => {
2059
+ if (!onLoadMore || !hasMore || loading) return;
2060
+ const { layoutMeasurement, contentOffset, contentSize } = e.nativeEvent;
2061
+ if (contentSize.height - contentOffset.y - layoutMeasurement.height < 100) {
2062
+ onLoadMore();
2063
+ }
2064
+ },
2065
+ scrollEventThrottle: 100,
2066
+ }}
2067
+ >
2068
+ {listContent}
2069
+ </FloatingPanel>
2070
+ );
2071
+ }
2072
+
2073
+ // ── Combobox (public API) ─────────────────────────────────────
2074
+
2075
+ export function Combobox({
2076
+ options,
2077
+ value: valueProp,
2078
+ defaultValue,
2079
+ onValueChange,
2080
+ placeholder = "Select...",
2081
+ searchPlaceholder = "Search...",
2082
+ emptyMessage = "No results found.",
2083
+ onSearch,
2084
+ loading,
2085
+ onLoadMore,
2086
+ hasMore,
2087
+ trigger,
2088
+ name,
2089
+ form: formProp,
2090
+ validators,
2091
+ label,
2092
+ labelProps,
2093
+ helperText,
2094
+ error,
2095
+ required,
2096
+ disabled,
2097
+ readOnly,
2098
+ size: sizeProp,
2099
+ id: idProp,
2100
+ onBlur,
2101
+ popoverWidth,
2102
+ tabIndex: tabIndexProp,
2103
+ multiple,
2104
+ dismissible,
2105
+ skeleton,
2106
+ compact,
2107
+ creatable,
2108
+ onCreate,
2109
+ createLabel,
2110
+ hideSearch,
2111
+ searchValue,
2112
+ open,
2113
+ onOpenChange,
2114
+ ...rest
2115
+ }: ComboboxProps) {
2116
+ const { resolvedForm, knobProps, id } = useFormField({ form: formProp, id: idProp, compact });
2117
+ const resolvedValidators = useResolvedValidators(required, validators, label, name);
2118
+ const viewportGtSm = useViewportGtSm();
2119
+ // Sheet on native and sm (viewport ≤860px). Floating on desktop.
2120
+ const effectiveGtSm = typeof window !== "undefined" ? viewportGtSm : false;
2121
+ const shouldUseSheet = !isWeb || !effectiveGtSm;
2122
+ const textColor = knobProps.textAccentColor;
2123
+
2124
+ // Render skeleton placeholder
2125
+ if (skeleton) {
2126
+ return (
2127
+ <InputParts size={sizeProp || knobProps.sizeToken}>
2128
+ {label && <Skeleton variant="text" width="30%" height={14} />}
2129
+ <Skeleton variant="rounded" width="100%" height={knobProps.sizeToken} />
2130
+ </InputParts>
2131
+ );
2132
+ }
2133
+
2134
+ const renderReadOnly = (selectValue: string | string[] | undefined) => {
2135
+ if (multiple && Array.isArray(selectValue)) {
2136
+ const labels = selectValue
2137
+ .map((v) => options.find((o) => o.value === v)?.label ?? v)
2138
+ .join(", ");
2139
+ return (
2140
+ <Text
2141
+ fontSize={knobProps.sizeToken}
2142
+ color={textColor}
2143
+ paddingVertical="$2"
2144
+ paddingHorizontal="$3"
2145
+ fontFamily={knobProps.body.fontFamily}
2146
+ fontWeight={knobProps.body.fontWeight}
2147
+ >
2148
+ {labels || "-"}
2149
+ </Text>
2150
+ );
2151
+ }
2152
+ const sv = typeof selectValue === "string" ? selectValue : undefined;
2153
+ const selected = options.find((option) => option.value === sv);
2154
+ const displayText = selected?.label ?? (sv || "-");
2155
+ return (
2156
+ <Text
2157
+ fontSize={knobProps.sizeToken}
2158
+ color={textColor}
2159
+ paddingVertical="$2"
2160
+ paddingHorizontal="$3"
2161
+ fontFamily={knobProps.body.fontFamily}
2162
+ fontWeight={knobProps.body.fontWeight}
2163
+ >
2164
+ {displayText}
2165
+ </Text>
2166
+ );
2167
+ };
2168
+
2169
+ const renderComboboxContent = (
2170
+ selectValue: string | string[] | undefined,
2171
+ handleValueChange?: (value: any) => void,
2172
+ handleBlur?: (...args: any[]) => void,
2173
+ ) => {
2174
+ if (readOnly) return renderReadOnly(selectValue);
2175
+ const ComboboxCore = shouldUseSheet ? NativeComboboxCore : FloatingComboboxCore;
2176
+ return (
2177
+ <ComboboxCore
2178
+ options={options}
2179
+ value={selectValue}
2180
+ onValueChange={(value) => {
2181
+ if (disabled) return;
2182
+ handleValueChange?.(value);
2183
+ onValueChange?.(value);
2184
+ }}
2185
+ onBlur={handleBlur}
2186
+ placeholder={placeholder}
2187
+ searchPlaceholder={searchPlaceholder}
2188
+ emptyMessage={emptyMessage}
2189
+ onSearch={onSearch}
2190
+ loading={loading}
2191
+ onLoadMore={onLoadMore}
2192
+ hasMore={hasMore}
2193
+ disabled={disabled}
2194
+ id={id}
2195
+ tabIndexOverride={tabIndexProp}
2196
+ popoverWidth={popoverWidth}
2197
+ trigger={trigger}
2198
+ knobProps={knobProps}
2199
+ multiple={multiple}
2200
+ dismissible={dismissible}
2201
+ creatable={creatable}
2202
+ onCreate={onCreate}
2203
+ createLabel={createLabel}
2204
+ hideSearch={hideSearch}
2205
+ searchValue={searchValue}
2206
+ open={open}
2207
+ onOpenChange={onOpenChange}
2208
+ />
2209
+ );
2210
+ };
2211
+
2212
+ if (trigger) {
2213
+ return renderComboboxContent(valueProp, onValueChange, onBlur);
2214
+ }
2215
+
2216
+ if (!resolvedForm || !name) {
2217
+ return (
2218
+ <FieldLayout
2219
+ id={id}
2220
+ label={label}
2221
+ labelProps={labelProps}
2222
+ error={error}
2223
+ helperText={helperText}
2224
+ required={required}
2225
+ size={sizeProp}
2226
+ knobProps={knobProps as any}
2227
+ {...rest}
2228
+ >
2229
+ <InputParts size={sizeProp || knobProps.sizeToken}>
2230
+ {renderComboboxContent(valueProp ?? defaultValue, onValueChange, onBlur)}
2231
+ </InputParts>
2232
+ </FieldLayout>
2233
+ );
2234
+ }
2235
+
2236
+ return (
2237
+ <Field
2238
+ form={resolvedForm}
2239
+ name={name}
2240
+ defaultValue={defaultValue}
2241
+ validators={resolvedValidators}
2242
+ >
2243
+ {(field) => {
2244
+ const resolvedError = getFieldError(field, error);
2245
+ return (
2246
+ <FieldLayout
2247
+ id={id}
2248
+ label={label}
2249
+ labelProps={labelProps}
2250
+ error={resolvedError}
2251
+ helperText={helperText}
2252
+ required={required}
2253
+ size={sizeProp}
2254
+ knobProps={knobProps as any}
2255
+ {...rest}
2256
+ >
2257
+ <InputParts size={sizeProp || knobProps.sizeToken}>
2258
+ {renderComboboxContent(
2259
+ field.state.value as string | string[],
2260
+ (value) => field.handleChange(value as any),
2261
+ mergeFieldHandler(field, "handleBlur", onBlur),
2262
+ )}
2263
+ </InputParts>
2264
+ </FieldLayout>
2265
+ );
2266
+ }}
2267
+ </Field>
2268
+ );
2269
+ }