@timeax/form-palette 0.0.3 → 0.0.4

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 (503) hide show
  1. package/dist/adapters/axios.d.ts +21 -0
  2. package/dist/adapters/axios.d.ts.map +1 -0
  3. package/dist/adapters/axios.js +74 -0
  4. package/dist/adapters/axios.js.map +1 -0
  5. package/dist/adapters/index.d.ts +35 -0
  6. package/dist/adapters/index.d.ts.map +1 -0
  7. package/dist/adapters/index.js +74 -0
  8. package/dist/adapters/index.js.map +1 -0
  9. package/dist/adapters/inertia.d.ts +24 -0
  10. package/dist/adapters/inertia.d.ts.map +1 -0
  11. package/dist/adapters/inertia.js +126 -0
  12. package/dist/adapters/inertia.js.map +1 -0
  13. package/dist/core/adapter-registry.d.ts +30 -0
  14. package/dist/core/adapter-registry.d.ts.map +1 -0
  15. package/{src/core/adapter-registry.ts → dist/core/adapter-registry.js} +10 -28
  16. package/dist/core/adapter-registry.js.map +1 -0
  17. package/{src/core/bound/bind-host.ts → dist/core/bound/bind-host.d.ts} +2 -3
  18. package/dist/core/bound/bind-host.d.ts.map +1 -0
  19. package/dist/core/bound/bind-host.js +2 -0
  20. package/dist/core/bound/bind-host.js.map +1 -0
  21. package/dist/core/bound/observe-bound-field.d.ts +21 -0
  22. package/dist/core/bound/observe-bound-field.d.ts.map +1 -0
  23. package/dist/core/bound/observe-bound-field.js +116 -0
  24. package/dist/core/bound/observe-bound-field.js.map +1 -0
  25. package/dist/core/bound/wait-for-bound-field.d.ts +5 -0
  26. package/dist/core/bound/wait-for-bound-field.d.ts.map +1 -0
  27. package/dist/core/bound/wait-for-bound-field.js +35 -0
  28. package/dist/core/bound/wait-for-bound-field.js.map +1 -0
  29. package/{src/core/context.ts → dist/core/context.d.ts} +2 -6
  30. package/dist/core/context.d.ts.map +1 -0
  31. package/dist/core/context.js +11 -0
  32. package/dist/core/context.js.map +1 -0
  33. package/dist/core/core-provider.d.ts +22 -0
  34. package/dist/core/core-provider.d.ts.map +1 -0
  35. package/{src/core/core-provider.tsx → dist/core/core-provider.js} +209 -364
  36. package/dist/core/core-provider.js.map +1 -0
  37. package/dist/core/core-root.d.ts +26 -0
  38. package/dist/core/core-root.d.ts.map +1 -0
  39. package/dist/core/core-root.js +38 -0
  40. package/dist/core/core-root.js.map +1 -0
  41. package/dist/core/core-shell.d.ts +22 -0
  42. package/dist/core/core-shell.d.ts.map +1 -0
  43. package/dist/core/core-shell.js +8 -0
  44. package/dist/core/core-shell.js.map +1 -0
  45. package/{src/core/errors/error-strip.tsx → dist/core/errors/error-strip.d.ts} +2 -39
  46. package/dist/core/errors/error-strip.d.ts.map +1 -0
  47. package/dist/core/errors/error-strip.js +18 -0
  48. package/dist/core/errors/error-strip.js.map +1 -0
  49. package/dist/core/errors/index.d.ts +4 -0
  50. package/dist/core/errors/index.d.ts.map +1 -0
  51. package/dist/core/errors/index.js +4 -0
  52. package/dist/core/errors/index.js.map +1 -0
  53. package/dist/core/errors/map-error-bag.d.ts +24 -0
  54. package/dist/core/errors/map-error-bag.d.ts.map +1 -0
  55. package/{src/core/errors/map-error-bag.ts → dist/core/errors/map-error-bag.js} +10 -22
  56. package/dist/core/errors/map-error-bag.js.map +1 -0
  57. package/dist/core/errors/map-zod.d.ts +18 -0
  58. package/dist/core/errors/map-zod.d.ts.map +1 -0
  59. package/{src/core/errors/map-zod.ts → dist/core/errors/map-zod.js} +7 -19
  60. package/dist/core/errors/map-zod.js.map +1 -0
  61. package/dist/core/hooks/use-button.d.ts +73 -0
  62. package/dist/core/hooks/use-button.d.ts.map +1 -0
  63. package/dist/core/hooks/use-button.js +116 -0
  64. package/dist/core/hooks/use-button.js.map +1 -0
  65. package/dist/core/hooks/use-core-context.d.ts +9 -0
  66. package/dist/core/hooks/use-core-context.d.ts.map +1 -0
  67. package/{src/core/hooks/use-core-context.ts → dist/core/hooks/use-core-context.js} +3 -6
  68. package/dist/core/hooks/use-core-context.js.map +1 -0
  69. package/dist/core/hooks/use-core-utility.d.ts +1 -0
  70. package/dist/core/hooks/use-core-utility.d.ts.map +1 -0
  71. package/dist/core/hooks/use-core-utility.js +2 -0
  72. package/dist/core/hooks/use-core-utility.js.map +1 -0
  73. package/{src/core/hooks/use-core.ts → dist/core/hooks/use-core.d.ts} +9 -13
  74. package/dist/core/hooks/use-core.d.ts.map +1 -0
  75. package/dist/core/hooks/use-core.js +11 -0
  76. package/dist/core/hooks/use-core.js.map +1 -0
  77. package/dist/core/hooks/use-field.d.ts +141 -0
  78. package/dist/core/hooks/use-field.d.ts.map +1 -0
  79. package/dist/core/hooks/use-field.js +256 -0
  80. package/dist/core/hooks/use-field.js.map +1 -0
  81. package/dist/core/hooks/use-optional-field.d.ts +9 -0
  82. package/dist/core/hooks/use-optional-field.d.ts.map +1 -0
  83. package/dist/core/hooks/use-optional-field.js +146 -0
  84. package/dist/core/hooks/use-optional-field.js.map +1 -0
  85. package/dist/core/index.d.ts +11 -0
  86. package/dist/core/index.d.ts.map +1 -0
  87. package/dist/core/index.js +11 -0
  88. package/dist/core/index.js.map +1 -0
  89. package/dist/core/registry/binder-registry.d.ts +38 -0
  90. package/dist/core/registry/binder-registry.d.ts.map +1 -0
  91. package/dist/core/registry/binder-registry.js +52 -0
  92. package/dist/core/registry/binder-registry.js.map +1 -0
  93. package/dist/core/registry/field-registry.d.ts +86 -0
  94. package/dist/core/registry/field-registry.d.ts.map +1 -0
  95. package/{src/core/registry/field-registry.ts → dist/core/registry/field-registry.js} +56 -70
  96. package/dist/core/registry/field-registry.js.map +1 -0
  97. package/dist/core/test.d.ts +2 -0
  98. package/dist/core/test.d.ts.map +1 -0
  99. package/dist/core/test.js +9 -0
  100. package/dist/core/test.js.map +1 -0
  101. package/dist/index.d.ts +15 -0
  102. package/dist/index.d.ts.map +1 -0
  103. package/{src/index.ts → dist/index.js} +5 -47
  104. package/dist/index.js.map +1 -0
  105. package/{src/input/index.ts → dist/input/index.d.ts} +1 -2
  106. package/dist/input/index.d.ts.map +1 -0
  107. package/dist/input/index.js +3 -0
  108. package/dist/input/index.js.map +1 -0
  109. package/dist/input/input-field.d.ts +15 -0
  110. package/dist/input/input-field.d.ts.map +1 -0
  111. package/dist/input/input-field.js +413 -0
  112. package/dist/input/input-field.js.map +1 -0
  113. package/dist/input/input-layout-graph.d.ts +77 -0
  114. package/dist/input/input-layout-graph.d.ts.map +1 -0
  115. package/dist/input/input-layout-graph.js +108 -0
  116. package/dist/input/input-layout-graph.js.map +1 -0
  117. package/{src/input/input-props.ts → dist/input/input-props.d.ts} +22 -84
  118. package/dist/input/input-props.d.ts.map +1 -0
  119. package/dist/input/input-props.js +4 -0
  120. package/dist/input/input-props.js.map +1 -0
  121. package/dist/lib/get-global-countries.d.ts +3 -0
  122. package/dist/lib/get-global-countries.d.ts.map +1 -0
  123. package/dist/lib/get-global-countries.js +70 -0
  124. package/dist/lib/get-global-countries.js.map +1 -0
  125. package/dist/lib/utils.d.ts +3 -0
  126. package/dist/lib/utils.d.ts.map +1 -0
  127. package/dist/lib/utils.js +6 -0
  128. package/dist/lib/utils.js.map +1 -0
  129. package/dist/presets/index.d.ts +1 -0
  130. package/dist/presets/index.d.ts.map +1 -0
  131. package/dist/presets/index.js +2 -0
  132. package/dist/presets/index.js.map +1 -0
  133. package/dist/presets/shadcn-preset.d.ts +1 -0
  134. package/dist/presets/shadcn-preset.d.ts.map +1 -0
  135. package/dist/presets/shadcn-preset.js +2 -0
  136. package/dist/presets/shadcn-preset.js.map +1 -0
  137. package/dist/presets/shadcn-variants/checkbox.d.ts +212 -0
  138. package/dist/presets/shadcn-variants/checkbox.d.ts.map +1 -0
  139. package/dist/presets/shadcn-variants/checkbox.js +315 -0
  140. package/dist/presets/shadcn-variants/checkbox.js.map +1 -0
  141. package/dist/presets/shadcn-variants/chips.d.ts +154 -0
  142. package/dist/presets/shadcn-variants/chips.d.ts.map +1 -0
  143. package/dist/presets/shadcn-variants/chips.js +266 -0
  144. package/dist/presets/shadcn-variants/chips.js.map +1 -0
  145. package/dist/presets/shadcn-variants/color.d.ts +63 -0
  146. package/dist/presets/shadcn-variants/color.d.ts.map +1 -0
  147. package/dist/presets/shadcn-variants/color.js +96 -0
  148. package/dist/presets/shadcn-variants/color.js.map +1 -0
  149. package/dist/presets/shadcn-variants/custom.d.ts +94 -0
  150. package/dist/presets/shadcn-variants/custom.d.ts.map +1 -0
  151. package/dist/presets/shadcn-variants/custom.js +80 -0
  152. package/dist/presets/shadcn-variants/custom.js.map +1 -0
  153. package/dist/presets/shadcn-variants/date.d.ts +114 -0
  154. package/dist/presets/shadcn-variants/date.d.ts.map +1 -0
  155. package/dist/presets/shadcn-variants/date.js +414 -0
  156. package/dist/presets/shadcn-variants/date.js.map +1 -0
  157. package/dist/presets/shadcn-variants/file.d.ts +79 -0
  158. package/dist/presets/shadcn-variants/file.d.ts.map +1 -0
  159. package/dist/presets/shadcn-variants/file.js +289 -0
  160. package/dist/presets/shadcn-variants/file.js.map +1 -0
  161. package/dist/presets/shadcn-variants/keyvalue.d.ts +35 -0
  162. package/dist/presets/shadcn-variants/keyvalue.d.ts.map +1 -0
  163. package/dist/presets/shadcn-variants/keyvalue.js +215 -0
  164. package/dist/presets/shadcn-variants/keyvalue.js.map +1 -0
  165. package/dist/presets/shadcn-variants/multiselect.d.ts +210 -0
  166. package/dist/presets/shadcn-variants/multiselect.d.ts.map +1 -0
  167. package/dist/presets/shadcn-variants/multiselect.js +352 -0
  168. package/dist/presets/shadcn-variants/multiselect.js.map +1 -0
  169. package/dist/presets/shadcn-variants/number.d.ts +31 -0
  170. package/dist/presets/shadcn-variants/number.d.ts.map +1 -0
  171. package/dist/presets/shadcn-variants/number.js +64 -0
  172. package/dist/presets/shadcn-variants/number.js.map +1 -0
  173. package/dist/presets/shadcn-variants/password.d.ts +195 -0
  174. package/dist/presets/shadcn-variants/password.d.ts.map +1 -0
  175. package/dist/presets/shadcn-variants/password.js +296 -0
  176. package/dist/presets/shadcn-variants/password.js.map +1 -0
  177. package/dist/presets/shadcn-variants/phone.d.ts +69 -0
  178. package/dist/presets/shadcn-variants/phone.d.ts.map +1 -0
  179. package/dist/presets/shadcn-variants/phone.js +308 -0
  180. package/dist/presets/shadcn-variants/phone.js.map +1 -0
  181. package/dist/presets/shadcn-variants/radio.d.ts +172 -0
  182. package/dist/presets/shadcn-variants/radio.d.ts.map +1 -0
  183. package/dist/presets/shadcn-variants/radio.js +192 -0
  184. package/dist/presets/shadcn-variants/radio.js.map +1 -0
  185. package/dist/presets/shadcn-variants/select.d.ts +203 -0
  186. package/dist/presets/shadcn-variants/select.d.ts.map +1 -0
  187. package/dist/presets/shadcn-variants/select.js +285 -0
  188. package/dist/presets/shadcn-variants/select.js.map +1 -0
  189. package/dist/presets/shadcn-variants/slider.d.ts +131 -0
  190. package/dist/presets/shadcn-variants/slider.d.ts.map +1 -0
  191. package/dist/presets/shadcn-variants/slider.js +151 -0
  192. package/dist/presets/shadcn-variants/slider.js.map +1 -0
  193. package/dist/presets/shadcn-variants/text.d.ts +155 -0
  194. package/dist/presets/shadcn-variants/text.d.ts.map +1 -0
  195. package/dist/presets/shadcn-variants/text.js +98 -0
  196. package/dist/presets/shadcn-variants/text.js.map +1 -0
  197. package/dist/presets/shadcn-variants/textarea.d.ts +18 -0
  198. package/dist/presets/shadcn-variants/textarea.d.ts.map +1 -0
  199. package/dist/presets/shadcn-variants/textarea.js +24 -0
  200. package/dist/presets/shadcn-variants/textarea.js.map +1 -0
  201. package/dist/presets/shadcn-variants/toggle.d.ts +61 -0
  202. package/dist/presets/shadcn-variants/toggle.d.ts.map +1 -0
  203. package/dist/presets/shadcn-variants/toggle.js +67 -0
  204. package/dist/presets/shadcn-variants/toggle.js.map +1 -0
  205. package/dist/presets/shadcn-variants/treeselect.d.ts +81 -0
  206. package/dist/presets/shadcn-variants/treeselect.d.ts.map +1 -0
  207. package/dist/presets/shadcn-variants/treeselect.js +317 -0
  208. package/dist/presets/shadcn-variants/treeselect.js.map +1 -0
  209. package/dist/presets/ui/badge.d.ts +10 -0
  210. package/dist/presets/ui/badge.d.ts.map +1 -0
  211. package/dist/presets/ui/badge.js +23 -0
  212. package/dist/presets/ui/badge.js.map +1 -0
  213. package/dist/presets/ui/button.d.ts +11 -0
  214. package/dist/presets/ui/button.d.ts.map +1 -0
  215. package/dist/presets/ui/button.js +34 -0
  216. package/dist/presets/ui/button.js.map +1 -0
  217. package/dist/presets/ui/calendar.d.ts +9 -0
  218. package/dist/presets/ui/calendar.d.ts.map +1 -0
  219. package/dist/presets/ui/calendar.js +76 -0
  220. package/dist/presets/ui/calendar.js.map +1 -0
  221. package/dist/presets/ui/checkbox.d.ts +18 -0
  222. package/dist/presets/ui/checkbox.d.ts.map +1 -0
  223. package/dist/presets/ui/checkbox.js +61 -0
  224. package/dist/presets/ui/checkbox.js.map +1 -0
  225. package/dist/presets/ui/custom.d.ts +1 -0
  226. package/dist/presets/ui/custom.d.ts.map +1 -0
  227. package/dist/presets/ui/custom.js +2 -0
  228. package/dist/presets/ui/custom.js.map +1 -0
  229. package/dist/presets/ui/dialog.d.ts +16 -0
  230. package/dist/presets/ui/dialog.d.ts.map +1 -0
  231. package/dist/presets/ui/dialog.js +36 -0
  232. package/dist/presets/ui/dialog.js.map +1 -0
  233. package/dist/presets/ui/field.d.ts +25 -0
  234. package/dist/presets/ui/field.d.ts.map +1 -0
  235. package/dist/presets/ui/field.js +76 -0
  236. package/dist/presets/ui/field.js.map +1 -0
  237. package/dist/presets/ui/input-mask.d.ts +34 -0
  238. package/dist/presets/ui/input-mask.d.ts.map +1 -0
  239. package/dist/presets/ui/input-mask.js +561 -0
  240. package/dist/presets/ui/input-mask.js.map +1 -0
  241. package/dist/presets/ui/input-otp.d.ts +12 -0
  242. package/dist/presets/ui/input-otp.d.ts.map +1 -0
  243. package/dist/presets/ui/input-otp.js +22 -0
  244. package/dist/presets/ui/input-otp.js.map +1 -0
  245. package/dist/presets/ui/input.d.ts +83 -0
  246. package/dist/presets/ui/input.d.ts.map +1 -0
  247. package/dist/presets/ui/input.js +436 -0
  248. package/dist/presets/ui/input.js.map +1 -0
  249. package/dist/presets/ui/label.d.ts +5 -0
  250. package/dist/presets/ui/label.d.ts.map +1 -0
  251. package/dist/presets/ui/label.js +8 -0
  252. package/dist/presets/ui/label.js.map +1 -0
  253. package/dist/presets/ui/number.d.ts +60 -0
  254. package/dist/presets/ui/number.d.ts.map +1 -0
  255. package/dist/presets/ui/number.js +1078 -0
  256. package/dist/presets/ui/number.js.map +1 -0
  257. package/dist/presets/ui/popover.d.ts +8 -0
  258. package/dist/presets/ui/popover.d.ts.map +1 -0
  259. package/dist/presets/ui/popover.js +17 -0
  260. package/dist/presets/ui/popover.js.map +1 -0
  261. package/dist/presets/ui/radio-group.d.ts +6 -0
  262. package/dist/presets/ui/radio-group.d.ts.map +1 -0
  263. package/dist/presets/ui/radio-group.js +12 -0
  264. package/dist/presets/ui/radio-group.js.map +1 -0
  265. package/dist/presets/ui/scroll-area.d.ts +6 -0
  266. package/dist/presets/ui/scroll-area.d.ts.map +1 -0
  267. package/dist/presets/ui/scroll-area.js +13 -0
  268. package/dist/presets/ui/scroll-area.js.map +1 -0
  269. package/dist/presets/ui/select.d.ts +21 -0
  270. package/dist/presets/ui/select.d.ts.map +1 -0
  271. package/dist/presets/ui/select.js +38 -0
  272. package/dist/presets/ui/select.js.map +1 -0
  273. package/dist/presets/ui/separator.d.ts +5 -0
  274. package/dist/presets/ui/separator.d.ts.map +1 -0
  275. package/dist/presets/ui/separator.js +9 -0
  276. package/dist/presets/ui/separator.js.map +1 -0
  277. package/dist/presets/ui/slider.d.ts +5 -0
  278. package/dist/presets/ui/slider.d.ts.map +1 -0
  279. package/dist/presets/ui/slider.js +14 -0
  280. package/dist/presets/ui/slider.js.map +1 -0
  281. package/dist/presets/ui/switch.d.ts +7 -0
  282. package/dist/presets/ui/switch.d.ts.map +1 -0
  283. package/dist/presets/ui/switch.js +9 -0
  284. package/dist/presets/ui/switch.js.map +1 -0
  285. package/dist/presets/ui/textarea.d.ts +76 -0
  286. package/dist/presets/ui/textarea.d.ts.map +1 -0
  287. package/dist/presets/ui/textarea.js +291 -0
  288. package/dist/presets/ui/textarea.js.map +1 -0
  289. package/dist/presets/ui/time-dropdowns.d.ts +58 -0
  290. package/dist/presets/ui/time-dropdowns.d.ts.map +1 -0
  291. package/dist/presets/ui/time-dropdowns.js +133 -0
  292. package/dist/presets/ui/time-dropdowns.js.map +1 -0
  293. package/{src/schema/adapter.ts → dist/schema/adapter.d.ts} +7 -35
  294. package/dist/schema/adapter.d.ts.map +1 -0
  295. package/dist/schema/adapter.js +3 -0
  296. package/dist/schema/adapter.js.map +1 -0
  297. package/{src/schema/core.ts → dist/schema/core.d.ts} +17 -117
  298. package/dist/schema/core.d.ts.map +1 -0
  299. package/dist/schema/core.js +4 -0
  300. package/dist/schema/core.js.map +1 -0
  301. package/dist/schema/field-map.d.ts +1 -0
  302. package/dist/schema/field-map.d.ts.map +1 -0
  303. package/dist/schema/field-map.js +2 -0
  304. package/dist/schema/field-map.js.map +1 -0
  305. package/{src/schema/field.ts → dist/schema/field.d.ts} +1 -34
  306. package/dist/schema/field.d.ts.map +1 -0
  307. package/dist/schema/field.js +4 -0
  308. package/dist/schema/field.js.map +1 -0
  309. package/dist/schema/index.d.ts +1 -0
  310. package/dist/schema/index.d.ts.map +1 -0
  311. package/dist/schema/index.js +2 -0
  312. package/dist/schema/index.js.map +1 -0
  313. package/{src/schema/input-field.ts → dist/schema/input-field.d.ts} +6 -43
  314. package/dist/schema/input-field.d.ts.map +1 -0
  315. package/dist/schema/input-field.js +3 -0
  316. package/dist/schema/input-field.js.map +1 -0
  317. package/dist/schema/presets.d.ts +1 -0
  318. package/dist/schema/presets.d.ts.map +1 -0
  319. package/dist/schema/presets.js +2 -0
  320. package/dist/schema/presets.js.map +1 -0
  321. package/{src/schema/variant.ts → dist/schema/variant.d.ts} +24 -64
  322. package/dist/schema/variant.d.ts.map +1 -0
  323. package/dist/schema/variant.js +3 -0
  324. package/dist/schema/variant.js.map +1 -0
  325. package/dist/variants/core/checkbox.d.ts +15 -0
  326. package/dist/variants/core/checkbox.d.ts.map +1 -0
  327. package/dist/variants/core/checkbox.js +27 -0
  328. package/dist/variants/core/checkbox.js.map +1 -0
  329. package/dist/variants/core/chips.d.ts +3 -0
  330. package/dist/variants/core/chips.d.ts.map +1 -0
  331. package/dist/variants/core/chips.js +20 -0
  332. package/dist/variants/core/chips.js.map +1 -0
  333. package/dist/variants/core/color.d.ts +3 -0
  334. package/dist/variants/core/color.d.ts.map +1 -0
  335. package/dist/variants/core/color.js +14 -0
  336. package/dist/variants/core/color.js.map +1 -0
  337. package/dist/variants/core/custom.d.ts +11 -0
  338. package/dist/variants/core/custom.d.ts.map +1 -0
  339. package/{src/variants/core/custom.tsx → dist/variants/core/custom.js} +15 -18
  340. package/dist/variants/core/custom.js.map +1 -0
  341. package/dist/variants/core/date.d.ts +3 -0
  342. package/dist/variants/core/date.d.ts.map +1 -0
  343. package/dist/variants/core/date.js +20 -0
  344. package/dist/variants/core/date.js.map +1 -0
  345. package/dist/variants/core/file.d.ts +3 -0
  346. package/dist/variants/core/file.d.ts.map +1 -0
  347. package/dist/variants/core/file.js +6 -0
  348. package/dist/variants/core/file.js.map +1 -0
  349. package/dist/variants/core/keyvalue.d.ts +3 -0
  350. package/dist/variants/core/keyvalue.d.ts.map +1 -0
  351. package/dist/variants/core/keyvalue.js +9 -0
  352. package/dist/variants/core/keyvalue.js.map +1 -0
  353. package/dist/variants/core/multiselect.d.ts +11 -0
  354. package/dist/variants/core/multiselect.d.ts.map +1 -0
  355. package/dist/variants/core/multiselect.js +15 -0
  356. package/dist/variants/core/multiselect.js.map +1 -0
  357. package/dist/variants/core/number.d.ts +38 -0
  358. package/dist/variants/core/number.d.ts.map +1 -0
  359. package/dist/variants/core/number.js +62 -0
  360. package/dist/variants/core/number.js.map +1 -0
  361. package/dist/variants/core/password.d.ts +11 -0
  362. package/dist/variants/core/password.d.ts.map +1 -0
  363. package/dist/variants/core/password.js +29 -0
  364. package/dist/variants/core/password.js.map +1 -0
  365. package/dist/variants/core/phone.d.ts +3 -0
  366. package/dist/variants/core/phone.d.ts.map +1 -0
  367. package/dist/variants/core/phone.js +14 -0
  368. package/dist/variants/core/phone.js.map +1 -0
  369. package/dist/variants/core/radio.d.ts +8 -0
  370. package/dist/variants/core/radio.d.ts.map +1 -0
  371. package/dist/variants/core/radio.js +34 -0
  372. package/dist/variants/core/radio.js.map +1 -0
  373. package/dist/variants/core/select.d.ts +5 -0
  374. package/dist/variants/core/select.d.ts.map +1 -0
  375. package/dist/variants/core/select.js +11 -0
  376. package/dist/variants/core/select.js.map +1 -0
  377. package/dist/variants/core/slider.d.ts +19 -0
  378. package/dist/variants/core/slider.d.ts.map +1 -0
  379. package/dist/variants/core/slider.js +36 -0
  380. package/dist/variants/core/slider.js.map +1 -0
  381. package/dist/variants/core/text.d.ts +38 -0
  382. package/dist/variants/core/text.d.ts.map +1 -0
  383. package/{src/variants/core/text.tsx → dist/variants/core/text.js} +4 -56
  384. package/dist/variants/core/text.js.map +1 -0
  385. package/dist/variants/core/textarea.d.ts +3 -0
  386. package/dist/variants/core/textarea.d.ts.map +1 -0
  387. package/dist/variants/core/textarea.js +20 -0
  388. package/dist/variants/core/textarea.js.map +1 -0
  389. package/dist/variants/core/toggle.d.ts +6 -0
  390. package/dist/variants/core/toggle.d.ts.map +1 -0
  391. package/dist/variants/core/toggle.js +41 -0
  392. package/dist/variants/core/toggle.js.map +1 -0
  393. package/dist/variants/core/treeselect.d.ts +4 -0
  394. package/dist/variants/core/treeselect.d.ts.map +1 -0
  395. package/dist/variants/core/treeselect.js +7 -0
  396. package/dist/variants/core/treeselect.js.map +1 -0
  397. package/dist/variants/helpers/selection-summary.d.ts +24 -0
  398. package/dist/variants/helpers/selection-summary.d.ts.map +1 -0
  399. package/dist/variants/helpers/selection-summary.js +105 -0
  400. package/dist/variants/helpers/selection-summary.js.map +1 -0
  401. package/dist/variants/index.d.ts +16 -0
  402. package/dist/variants/index.d.ts.map +1 -0
  403. package/{src/variants/index.ts → dist/variants/index.js} +7 -27
  404. package/dist/variants/index.js.map +1 -0
  405. package/dist/variants/registry.d.ts +19 -0
  406. package/dist/variants/registry.d.ts.map +1 -0
  407. package/dist/variants/registry.js +29 -0
  408. package/dist/variants/registry.js.map +1 -0
  409. package/dist/variants/select-shared.d.ts +1 -0
  410. package/dist/variants/select-shared.d.ts.map +1 -0
  411. package/dist/variants/select-shared.js +2 -0
  412. package/dist/variants/select-shared.js.map +1 -0
  413. package/{src/variants/shared.ts → dist/variants/shared.d.ts} +3 -22
  414. package/dist/variants/shared.d.ts.map +1 -0
  415. package/dist/variants/shared.js +3 -0
  416. package/dist/variants/shared.js.map +1 -0
  417. package/package.json +4 -4
  418. package/.scaffold-cache.json +0 -537
  419. package/src/.scaffold-cache.json +0 -544
  420. package/src/adapters/axios.ts +0 -117
  421. package/src/adapters/index.ts +0 -91
  422. package/src/adapters/inertia.ts +0 -187
  423. package/src/core/bound/observe-bound-field.ts +0 -172
  424. package/src/core/bound/wait-for-bound-field.ts +0 -57
  425. package/src/core/core-root.tsx +0 -72
  426. package/src/core/core-shell.tsx +0 -44
  427. package/src/core/errors/index.ts +0 -2
  428. package/src/core/hooks/use-button.ts +0 -220
  429. package/src/core/hooks/use-core-utility.ts +0 -0
  430. package/src/core/hooks/use-field.ts +0 -497
  431. package/src/core/hooks/use-optional-field.ts +0 -28
  432. package/src/core/index.ts +0 -0
  433. package/src/core/registry/binder-registry.ts +0 -82
  434. package/src/core/test.tsx +0 -17
  435. package/src/global.d.ts +0 -14
  436. package/src/input/input-field.tsx +0 -854
  437. package/src/input/input-layout-graph.ts +0 -230
  438. package/src/lib/get-global-countries.ts +0 -87
  439. package/src/lib/utils.ts +0 -6
  440. package/src/presets/index.ts +0 -0
  441. package/src/presets/shadcn-preset.ts +0 -0
  442. package/src/presets/shadcn-variants/checkbox.tsx +0 -849
  443. package/src/presets/shadcn-variants/chips.tsx +0 -756
  444. package/src/presets/shadcn-variants/color.tsx +0 -284
  445. package/src/presets/shadcn-variants/custom.tsx +0 -227
  446. package/src/presets/shadcn-variants/date.tsx +0 -796
  447. package/src/presets/shadcn-variants/file.tsx +0 -764
  448. package/src/presets/shadcn-variants/keyvalue.tsx +0 -556
  449. package/src/presets/shadcn-variants/multiselect.tsx +0 -1132
  450. package/src/presets/shadcn-variants/number.tsx +0 -176
  451. package/src/presets/shadcn-variants/password.tsx +0 -737
  452. package/src/presets/shadcn-variants/phone.tsx +0 -628
  453. package/src/presets/shadcn-variants/radio.tsx +0 -578
  454. package/src/presets/shadcn-variants/select.tsx +0 -956
  455. package/src/presets/shadcn-variants/slider.tsx +0 -622
  456. package/src/presets/shadcn-variants/text.tsx +0 -343
  457. package/src/presets/shadcn-variants/textarea.tsx +0 -66
  458. package/src/presets/shadcn-variants/toggle.tsx +0 -218
  459. package/src/presets/shadcn-variants/treeselect.tsx +0 -784
  460. package/src/presets/ui/badge.tsx +0 -46
  461. package/src/presets/ui/button.tsx +0 -60
  462. package/src/presets/ui/calendar.tsx +0 -214
  463. package/src/presets/ui/checkbox.tsx +0 -115
  464. package/src/presets/ui/custom.tsx +0 -0
  465. package/src/presets/ui/dialog.tsx +0 -141
  466. package/src/presets/ui/field.tsx +0 -246
  467. package/src/presets/ui/input-mask.tsx +0 -739
  468. package/src/presets/ui/input-otp.tsx +0 -77
  469. package/src/presets/ui/input.tsx +0 -1011
  470. package/src/presets/ui/label.tsx +0 -22
  471. package/src/presets/ui/number.tsx +0 -1370
  472. package/src/presets/ui/popover.tsx +0 -46
  473. package/src/presets/ui/radio-group.tsx +0 -43
  474. package/src/presets/ui/scroll-area.tsx +0 -56
  475. package/src/presets/ui/select.tsx +0 -190
  476. package/src/presets/ui/separator.tsx +0 -28
  477. package/src/presets/ui/slider.tsx +0 -61
  478. package/src/presets/ui/switch.tsx +0 -32
  479. package/src/presets/ui/textarea.tsx +0 -634
  480. package/src/presets/ui/time-dropdowns.tsx +0 -350
  481. package/src/schema/field-map.ts +0 -0
  482. package/src/schema/index.ts +0 -0
  483. package/src/schema/presets.ts +0 -0
  484. package/src/variants/core/checkbox.tsx +0 -54
  485. package/src/variants/core/chips.tsx +0 -22
  486. package/src/variants/core/color.tsx +0 -16
  487. package/src/variants/core/date.tsx +0 -25
  488. package/src/variants/core/file.tsx +0 -9
  489. package/src/variants/core/keyvalue.tsx +0 -12
  490. package/src/variants/core/multiselect.tsx +0 -28
  491. package/src/variants/core/number.tsx +0 -115
  492. package/src/variants/core/password.tsx +0 -35
  493. package/src/variants/core/phone.tsx +0 -16
  494. package/src/variants/core/radio.tsx +0 -38
  495. package/src/variants/core/select.tsx +0 -15
  496. package/src/variants/core/slider.tsx +0 -55
  497. package/src/variants/core/textarea.tsx +0 -22
  498. package/src/variants/core/toggle.tsx +0 -50
  499. package/src/variants/core/treeselect.tsx +0 -11
  500. package/src/variants/helpers/selection-summary.tsx +0 -236
  501. package/src/variants/registry.ts +0 -38
  502. package/src/variants/select-shared.ts +0 -0
  503. package/tsconfig.json +0 -14
@@ -1,628 +0,0 @@
1
- // src/presets/shadcn-variants/phone.tsx
2
-
3
- import * as React from "react";
4
-
5
- import type { VariantModule } from "@/schema/variant";
6
- import type { VariantBaseProps, ChangeDetail } from "@/variants/shared";
7
- import type { ShadcnTextVariantProps } from "@/presets/shadcn-variants/text";
8
- import { Input } from "@/presets/ui/input";
9
- import {
10
- Select,
11
- SelectTrigger,
12
- SelectValue,
13
- SelectContent,
14
- SelectItem,
15
- } from "@/presets/ui/select";
16
- import { cn } from "@/lib/utils";
17
- import { getGlobalCountryList } from "@/lib/get-global-countries";
18
-
19
- type BaseProps = VariantBaseProps<string | undefined>;
20
-
21
- /**
22
- * Single-country phone config.
23
- *
24
- * - code: ISO 3166-1 alpha-2 ("NG", "US", "GB", ...)
25
- * - dial: dial code without "+" ("234", "1", "44", ...)
26
- * - mask: NATIONAL portion mask only (no dial), e.g. "999 999 9999"
27
- */
28
- export interface PhoneCountry {
29
- code: string;
30
- label: string;
31
- dial: string;
32
- mask: string;
33
- flag?: React.ReactNode;
34
- }
35
-
36
- /**
37
- * How the variant emits the form value.
38
- *
39
- * - "masked" → "+234 801 234 5678"
40
- * - "e164" → "2348012345678" (dial + national digits, no "+")
41
- * - "national"→ "8012345678"
42
- */
43
- export type PhoneValueMode = "masked" | "e164" | "national";
44
-
45
- export interface PhoneSpecificProps {
46
- countries?: PhoneCountry[];
47
- defaultCountry?: string;
48
- onCountryChange?: (country: PhoneCountry) => void;
49
-
50
- showCountry?: boolean;
51
- countryPlaceholder?: string;
52
- showFlag?: boolean;
53
- showSelectedLabel?: boolean;
54
- showSelectedDial?: boolean;
55
- showDialInList?: boolean;
56
-
57
- /**
58
- * Controls how the emitted value is shaped.
59
- *
60
- * Default mirrors legacy autoUnmask=true + emitE164=true → "e164".
61
- */
62
- valueMode?: PhoneValueMode;
63
-
64
- /**
65
- * When true, the national mask keeps placeholder characters
66
- * for not-yet-filled positions. When false, trailing mask
67
- * fragments are omitted.
68
- */
69
- keepCharPositions?: boolean;
70
-
71
- /**
72
- * Style hooks for the internal country selector.
73
- */
74
- countrySelectClassName?: string;
75
- countryTriggerClassName?: string;
76
- countryValueClassName?: string;
77
- countryContentClassName?: string;
78
- countryItemClassName?: string;
79
- }
80
-
81
- // We still *type* against ShadcnTextVariantProps so the phone variant exposes
82
- // the same visual/text props (size, density, icon props, etc.), but we don't
83
- // use the component itself anymore.
84
- type TextUiProps = Omit<
85
- ShadcnTextVariantProps,
86
- // We control these for phone behaviour
87
- "type" | "inputMode" | "leadingControl" | "value" | "onValue"
88
- >;
89
-
90
- /**
91
- * Full props for the phone variant as seen by the form runtime.
92
- *
93
- * - Keeps the same `value`/`onValue` contract as other variants.
94
- * - Inherits visual/behavioural text props (size, density, className, etc.).
95
- * - Adds phone-specific configuration (countries, valueMode, etc.).
96
- */
97
- export type ShadcnPhoneVariantProps = TextUiProps &
98
- PhoneSpecificProps &
99
- Pick<BaseProps, "value" | "onValue">;
100
-
101
- // ———————————————————————————————
102
- // Defaults
103
- // ———————————————————————————————
104
-
105
-
106
-
107
- // ———————————————————————————————
108
- // Mask helpers (lightweight legacy port)
109
- // ———————————————————————————————
110
-
111
- const TOKEN_CHARS = new Set(["9", "a", "*"] as const);
112
-
113
- interface CompiledMask {
114
- pattern: string;
115
- placeholderChar: string;
116
- }
117
-
118
- /**
119
- * Phone only ever really uses digit masks, so we keep this compact.
120
- */
121
- function compileMask(pattern: string, placeholderChar = "_"): CompiledMask {
122
- return { pattern, placeholderChar };
123
- }
124
-
125
- /**
126
- * Apply a simple token-based mask:
127
- * - '9' → digit
128
- * - 'a' → letter
129
- * - '*' → alphanumeric
130
- *
131
- * `keepCharPositions` keeps literal chars/placeholders even when not filled.
132
- */
133
- function applyMask(
134
- mask: CompiledMask,
135
- raw: string,
136
- keepCharPositions: boolean,
137
- ): string {
138
- const { pattern, placeholderChar } = mask;
139
- let result = "";
140
- let rawIndex = 0;
141
- const len = pattern.length;
142
-
143
- const hasTokenAhead = (pos: number): boolean => {
144
- for (let j = pos + 1; j < len; j++) {
145
- if (TOKEN_CHARS.has(pattern[j] as any)) return true;
146
- }
147
- return false;
148
- };
149
-
150
- for (let i = 0; i < len; i++) {
151
- const ch = pattern[i];
152
- const isToken = TOKEN_CHARS.has(ch as any);
153
-
154
- if (isToken) {
155
- if (rawIndex >= raw.length) {
156
- if (keepCharPositions) {
157
- result += placeholderChar;
158
- continue;
159
- }
160
- break;
161
- }
162
- const next = raw[rawIndex++];
163
- result += next;
164
- continue;
165
- }
166
-
167
- // Literal character in the mask.
168
- const rawRemaining = rawIndex < raw.length;
169
- const tokenAhead = hasTokenAhead(i);
170
-
171
- // No tokens ahead → trailing literal.
172
- if (!tokenAhead) {
173
- if (keepCharPositions) {
174
- result += ch;
175
- continue;
176
- }
177
- break;
178
- }
179
-
180
- if (rawRemaining) {
181
- // We still have digits to place → include the literal.
182
- result += ch;
183
- } else if (keepCharPositions) {
184
- // No digits left, but want full skeleton.
185
- result += ch;
186
- } else {
187
- // No digits left, and we don't keep skeleton → stop.
188
- break;
189
- }
190
- }
191
-
192
- return result;
193
- }
194
-
195
- /**
196
- * Strip everything except digits.
197
- */
198
- function digitsOnly(input: string | undefined | null): string {
199
- return (input ?? "").replace(/\D+/g, "");
200
- }
201
-
202
- // ———————————————————————————————
203
- // Value ↔ display helpers
204
- // ———————————————————————————————
205
-
206
- function dialPrefixFor(country: PhoneCountry): string {
207
- return `+${country.dial} `;
208
- }
209
-
210
- /**
211
- * From any stored value (masked, e164, or national) extract
212
- * the NATIONAL digits for a given country.
213
- *
214
- * Strategy: remove all non-digits, then strip leading dial code
215
- * if present.
216
- */
217
- function valueToNationalDigits(
218
- value: string | undefined,
219
- country: PhoneCountry,
220
- ): string {
221
- const digits = digitsOnly(value);
222
- if (!digits) return "";
223
- if (digits.startsWith(country.dial)) {
224
- return digits.slice(country.dial.length);
225
- }
226
- return digits;
227
- }
228
-
229
- /**
230
- * Build the display string shown in the input for a given value.
231
- *
232
- * Always renders "+<dial> " plus an optionally masked national part.
233
- */
234
- function computeDisplayFromValue(
235
- value: string | undefined,
236
- country: PhoneCountry,
237
- keepCharPositions: boolean,
238
- ): string {
239
- const prefix = dialPrefixFor(country);
240
-
241
- const national = valueToNationalDigits(value, country);
242
- if (!national) {
243
- return prefix;
244
- }
245
-
246
- const mask = compileMask(country.mask);
247
- const maskedNational = applyMask(mask, national, keepCharPositions);
248
- if (!maskedNational) {
249
- return prefix;
250
- }
251
-
252
- return prefix + maskedNational;
253
- }
254
-
255
- /**
256
- * Given raw user input in the field, compute:
257
- * - display string (what we show in the input)
258
- * - next form value (according to valueMode)
259
- * - nationalDigits (for metadata)
260
- */
261
- function computeNextFromInput(
262
- rawInput: string,
263
- country: PhoneCountry,
264
- mode: PhoneValueMode,
265
- keepCharPositions: boolean,
266
- ): {
267
- display: string;
268
- nextValue: string | undefined;
269
- nationalDigits: string;
270
- } {
271
- const prefix = dialPrefixFor(country);
272
- const allDigits = digitsOnly(rawInput);
273
-
274
- let national = allDigits;
275
- if (national.startsWith(country.dial)) {
276
- national = national.slice(country.dial.length);
277
- }
278
-
279
- const mask = compileMask(country.mask);
280
- const maskedNational = applyMask(mask, national, keepCharPositions);
281
-
282
- const display =
283
- national.length === 0 ? prefix : (prefix + maskedNational || prefix);
284
-
285
- let nextValue: string | undefined;
286
- if (!national.length) {
287
- nextValue = undefined;
288
- } else if (mode === "masked") {
289
- nextValue = display;
290
- } else if (mode === "e164") {
291
- nextValue = country.dial + national;
292
- } else {
293
- // "national"
294
- nextValue = national;
295
- }
296
-
297
- return { display, nextValue, nationalDigits: national };
298
- }
299
-
300
- /**
301
- * When the country changes, re-interpret the existing value's
302
- * digits into the new country's mask/dial.
303
- */
304
- function remapToCountry(
305
- value: string | undefined,
306
- from: PhoneCountry,
307
- to: PhoneCountry,
308
- mode: PhoneValueMode,
309
- keepCharPositions: boolean,
310
- ): { display: string; nextValue: string | undefined } {
311
- if (!value) {
312
- const prefix = dialPrefixFor(to);
313
- return { display: prefix, nextValue: undefined };
314
- }
315
-
316
- const digitsAll = digitsOnly(value);
317
-
318
- let national = digitsAll;
319
- if (digitsAll.startsWith(from.dial)) {
320
- national = digitsAll.slice(from.dial.length);
321
- }
322
-
323
- const prefix = dialPrefixFor(to);
324
- const mask = compileMask(to.mask);
325
- const masked = applyMask(mask, national, keepCharPositions);
326
-
327
- const display =
328
- national.length === 0 ? prefix : (prefix + masked || prefix);
329
-
330
- let nextValue: string | undefined;
331
- if (!national.length) {
332
- nextValue = undefined;
333
- } else if (mode === "masked") {
334
- nextValue = display;
335
- } else if (mode === "e164") {
336
- nextValue = to.dial + national;
337
- } else {
338
- nextValue = national;
339
- }
340
-
341
- return { display, nextValue };
342
- }
343
-
344
- /**
345
- * If no placeholder is passed, we show the dial prefix plus an
346
- * underscore-skeleton version of the national mask.
347
- */
348
- function buildPlaceholder(country: PhoneCountry): string {
349
- const prefix = dialPrefixFor(country);
350
- const skeleton = country.mask.replace(/[9a\*]/g, "_");
351
- return prefix + skeleton;
352
- }
353
-
354
- // ———————————————————————————————
355
- // Country select (Shadcn Select)
356
- // ———————————————————————————————
357
-
358
- interface CountrySelectProps {
359
- countries: PhoneCountry[];
360
- value: string;
361
- onChange: (code: string) => void;
362
- showFlag: boolean;
363
- showSelectedLabel: boolean;
364
- showSelectedDial: boolean;
365
- showDialInList: boolean;
366
-
367
- countrySelectClassName?: string;
368
- countryTriggerClassName?: string;
369
- countryValueClassName?: string;
370
- countryContentClassName?: string;
371
- countryItemClassName?: string;
372
- }
373
-
374
- const CountrySelect: React.FC<CountrySelectProps> = ({
375
- countries,
376
- value,
377
- onChange,
378
- showFlag,
379
- showSelectedLabel,
380
- showSelectedDial,
381
- showDialInList,
382
- countrySelectClassName,
383
- countryTriggerClassName,
384
- countryValueClassName,
385
- countryContentClassName,
386
- countryItemClassName,
387
- }) => {
388
- const selected =
389
- countries.find((c) => c.code === value) ?? countries[0] ?? null;
390
-
391
- const triggerLabel = selected
392
- ? [
393
- showFlag && selected.flag ? selected.flag : null,
394
- showSelectedDial ? `+${selected.dial}` : null,
395
- showSelectedLabel ? selected.label : null,
396
- ]
397
- .filter(Boolean)
398
- .join(" ")
399
- : "";
400
-
401
- return (
402
- <div className={countrySelectClassName}>
403
- <Select value={selected?.code ?? ""} onValueChange={onChange}>
404
- <SelectTrigger
405
- className={cn(
406
- "h-full min-w-18 px-2 focus-visible:ring-0 py-0 shadow-none rounded-none border-l-0 border-t-0 border-b-0 border-r text-xs whitespace-nowrap",
407
- countryTriggerClassName,
408
- )}
409
- >
410
- <SelectValue
411
- placeholder="Code"
412
- className={countryValueClassName}
413
- >
414
- {triggerLabel || selected?.code || "—"}
415
- </SelectValue>
416
- </SelectTrigger>
417
- <SelectContent className={countryContentClassName}>
418
- {countries.map((c) => {
419
- const parts: string[] = [];
420
-
421
- if (showFlag && c.flag) {
422
- parts.push(String(c.flag));
423
- }
424
-
425
- if (showDialInList) {
426
- parts.push(`+${c.dial}`);
427
- }
428
-
429
- parts.push(c.label);
430
-
431
- return (
432
- <SelectItem
433
- key={c.code}
434
- value={c.code}
435
- className={countryItemClassName}
436
- >
437
- {parts.join(" ")}
438
- </SelectItem>
439
- );
440
- })}
441
- </SelectContent>
442
- </Select>
443
- </div>
444
- );
445
- };
446
-
447
-
448
-
449
-
450
- // ———————————————————————————————
451
- // Main variant component
452
- // ———————————————————————————————
453
-
454
- export const ShadcnPhoneVariant = React.forwardRef<
455
- HTMLInputElement,
456
- ShadcnPhoneVariantProps
457
- >(function ShadcnPhoneVariant(props, ref) {
458
- const {
459
- countries: countriesProp,
460
- defaultCountry,
461
- onCountryChange,
462
- showCountry = true,
463
- showFlag = true,
464
- showSelectedLabel = false,
465
- showSelectedDial = false,
466
- showDialInList = true,
467
- valueMode = "e164",
468
- keepCharPositions = false,
469
- value,
470
- onValue,
471
- countryPlaceholder: placeholder,
472
- error,
473
-
474
- countrySelectClassName,
475
- countryTriggerClassName,
476
- countryValueClassName,
477
- countryContentClassName,
478
- countryItemClassName,
479
-
480
- ...restTextProps
481
- } = props;
482
-
483
- let DEFAULT_COUNTRIES = getGlobalCountryList();
484
- const countries =
485
- countriesProp && countriesProp.length > 0
486
- ? countriesProp
487
- : DEFAULT_COUNTRIES;
488
-
489
- const [country, setCountry] = React.useState<PhoneCountry>(() => {
490
- if (defaultCountry) {
491
- const found = countries.find((c) => c.code === defaultCountry);
492
- if (found) return found;
493
- }
494
- return countries[0] ?? DEFAULT_COUNTRIES[0];
495
- });
496
-
497
- // Keep active country in sync if list/default changes.
498
- React.useEffect(() => {
499
- setCountry((prev) => {
500
- if (defaultCountry) {
501
- const found = countries.find((c) => c.code === defaultCountry);
502
- if (found) return found;
503
- }
504
- const stillThere = countries.find((c) => c.code === prev.code);
505
- return stillThere ?? countries[0] ?? prev;
506
- });
507
- }, [countries, defaultCountry]);
508
-
509
- const [local, setLocal] = React.useState<string>(() =>
510
- computeDisplayFromValue(value, country, keepCharPositions),
511
- );
512
-
513
- // Sync local display when external value or country changes.
514
- React.useEffect(() => {
515
- setLocal(computeDisplayFromValue(value, country, keepCharPositions));
516
- }, [value, country, keepCharPositions]);
517
-
518
- const handleInputChange = React.useCallback(
519
- (event: React.ChangeEvent<HTMLInputElement>) => {
520
- const rawInput = event.target.value ?? "";
521
- const { display, nextValue, nationalDigits } = computeNextFromInput(
522
- rawInput,
523
- country,
524
- valueMode,
525
- keepCharPositions,
526
- );
527
-
528
- setLocal(display);
529
-
530
- if (onValue) {
531
- const detail: ChangeDetail<{
532
- country: PhoneCountry;
533
- nationalDigits: string;
534
- }> = {
535
- source: "variant",
536
- raw: rawInput,
537
- nativeEvent: event,
538
- meta: {
539
- country,
540
- nationalDigits,
541
- },
542
- };
543
- onValue(nextValue, detail);
544
- }
545
- },
546
- [country, valueMode, keepCharPositions, onValue],
547
- );
548
-
549
- const handleCountryChange = React.useCallback(
550
- (nextCode: string) => {
551
- const nextCountry =
552
- countries.find((c) => c.code === nextCode) ?? countries[0];
553
-
554
- if (!nextCountry) return;
555
-
556
- setCountry(nextCountry);
557
- onCountryChange?.(nextCountry);
558
-
559
- const { display, nextValue } = remapToCountry(
560
- value,
561
- country,
562
- nextCountry,
563
- valueMode,
564
- keepCharPositions,
565
- );
566
-
567
- setLocal(display);
568
-
569
- if (onValue) {
570
- const detail: ChangeDetail<{
571
- from: PhoneCountry;
572
- to: PhoneCountry;
573
- }> = {
574
- source: "variant",
575
- raw: undefined,
576
- meta: {
577
- from: country,
578
- to: nextCountry,
579
- },
580
- };
581
- onValue(nextValue, detail);
582
- }
583
- },
584
- [
585
- countries,
586
- country,
587
- keepCharPositions,
588
- onCountryChange,
589
- onValue,
590
- value,
591
- valueMode,
592
- ],
593
- );
594
-
595
- const effectivePlaceholder =
596
- placeholder ?? buildPlaceholder(country);
597
-
598
- const leadingControl = showCountry ? (
599
- <CountrySelect
600
- countries={countries}
601
- value={country.code}
602
- onChange={handleCountryChange}
603
- showFlag={showFlag}
604
- showSelectedLabel={showSelectedLabel}
605
- showSelectedDial={showSelectedDial}
606
- showDialInList={showDialInList}
607
- countrySelectClassName={countrySelectClassName}
608
- countryTriggerClassName={countryTriggerClassName}
609
- countryValueClassName={countryValueClassName}
610
- countryContentClassName={countryContentClassName}
611
- countryItemClassName={countryItemClassName}
612
- />
613
- ) : undefined;
614
-
615
- return (
616
- <Input
617
- ref={ref}
618
- {...restTextProps}
619
- type="tel"
620
- inputMode="tel"
621
- value={local}
622
- onChange={handleInputChange}
623
- leadingControl={leadingControl}
624
- placeholder={effectivePlaceholder}
625
- aria-invalid={error ? "true" : undefined}
626
- />
627
- );
628
- });