@timeax/form-palette 0.0.2 → 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 +5 -5
  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
@@ -0,0 +1,154 @@
1
+ import * as React from "react";
2
+ import type { VariantBaseProps } from "@/variants/shared";
3
+ import type { ShadcnTextVariantProps } from "@/presets/shadcn-variants/text";
4
+ type ChipsValue = string[] | undefined;
5
+ type BaseProps = VariantBaseProps<ChipsValue>;
6
+ /**
7
+ * How we split text into chips when committing.
8
+ */
9
+ export type ChipsSeparator = string | RegExp | (string | RegExp)[];
10
+ /**
11
+ * Placement of chips relative to the entry control.
12
+ *
13
+ * - "inline" → inside the same visual box (Input) or in the textarea toolbox.
14
+ * - "below" → chips rendered as a block underneath the field.
15
+ */
16
+ export type ChipsPlacement = "inline" | "below";
17
+ /**
18
+ * Actions reported via ChangeDetail.meta.
19
+ */
20
+ export type ChipsChangeAction = "add" | "remove" | "clear";
21
+ /**
22
+ * Extra metadata sent with onValue() via ChangeDetail.
23
+ */
24
+ export interface ChipsChangeMeta {
25
+ action: ChipsChangeAction;
26
+ added?: string[];
27
+ removed?: string[];
28
+ chips: string[];
29
+ }
30
+ /**
31
+ * Chips-only props, on top of the injected ones.
32
+ */
33
+ export interface ChipsVariantProps {
34
+ /**
35
+ * Placeholder shown when there are no chips and input is empty.
36
+ */
37
+ placeholder?: string;
38
+ /**
39
+ * Separators used to split raw input into chips.
40
+ *
41
+ * - string → split on that string
42
+ * - RegExp → split with regex
43
+ * - array → try each in order
44
+ *
45
+ * Default: [",", ";"]
46
+ */
47
+ separators?: ChipsSeparator;
48
+ /**
49
+ * When true, pressing Enter commits the current input as chips.
50
+ * Default: true
51
+ */
52
+ addOnEnter?: boolean;
53
+ /**
54
+ * When true, pressing Tab commits the current input as chips.
55
+ * Default: true
56
+ */
57
+ addOnTab?: boolean;
58
+ /**
59
+ * When true, blurring the field commits any remaining input as chips.
60
+ * Default: true
61
+ */
62
+ addOnBlur?: boolean;
63
+ /**
64
+ * When false, duplicate chips are ignored.
65
+ * Default: false
66
+ */
67
+ allowDuplicates?: boolean;
68
+ /**
69
+ * Maximum number of chips allowed.
70
+ * Undefined → unlimited.
71
+ */
72
+ maxChips?: number;
73
+ /**
74
+ * When true, Backspace on empty input removes the last chip.
75
+ * Default: true
76
+ */
77
+ backspaceRemovesLast?: boolean;
78
+ /**
79
+ * Show a small clear-all button.
80
+ * Default: false
81
+ */
82
+ clearable?: boolean;
83
+ /**
84
+ * Called when chips are added.
85
+ */
86
+ onAddChips?(added: string[], next: string[]): void;
87
+ /**
88
+ * Called when chips are removed.
89
+ */
90
+ onRemoveChips?(removed: string[], next: string[]): void;
91
+ /**
92
+ * Optional custom chip renderer.
93
+ *
94
+ * If provided, you are responsible for calling onRemove(index)
95
+ * from your UI when you want to remove a chip.
96
+ */
97
+ renderChip?(chip: string, index: number, ctx: {
98
+ remove(): void;
99
+ chips: string[];
100
+ }): React.ReactNode;
101
+ /**
102
+ * Optional custom overflow chip renderer.
103
+ *
104
+ * Receives the hidden count and the full chip list.
105
+ */
106
+ renderOverflowChip?(hiddenCount: number, chips: string[]): React.ReactNode;
107
+ /**
108
+ * Max number of chips to *render*.
109
+ * Extra chips are summarized as "+N more".
110
+ */
111
+ maxVisibleChips?: number;
112
+ /**
113
+ * Max number of characters to *display* per chip.
114
+ * The underlying value is not truncated.
115
+ */
116
+ maxChipChars?: number;
117
+ /**
118
+ * CSS max-width for chip labels (e.g. 160 or "12rem").
119
+ */
120
+ maxChipWidth?: number | string;
121
+ /**
122
+ * When true, the entry control is a Textarea instead of Input.
123
+ * Good for comment-style chip entry.
124
+ */
125
+ textareaMode?: boolean;
126
+ /**
127
+ * Where chips are rendered relative to the entry.
128
+ *
129
+ * Default:
130
+ * - Input mode → "inline"
131
+ * - Textarea mode → "inline"
132
+ */
133
+ placement?: ChipsPlacement;
134
+ className?: string;
135
+ chipsClassName?: string;
136
+ chipClassName?: string;
137
+ chipLabelClassName?: string;
138
+ chipRemoveClassName?: string;
139
+ inputClassName?: string;
140
+ }
141
+ /**
142
+ * We still type against ShadcnTextVariantProps so chips can reuse
143
+ * size/density/icon props etc. We take control of:
144
+ * - type / value / onValue
145
+ * - leadingControl / trailingControl
146
+ */
147
+ type TextUiProps = Omit<ShadcnTextVariantProps, "type" | "inputMode" | "leadingControl" | "trailingControl" | "value" | "onValue">;
148
+ /**
149
+ * Full props for the Shadcn-based chips variant.
150
+ */
151
+ export type ShadcnChipsVariantProps = TextUiProps & ChipsVariantProps & Pick<BaseProps, "value" | "onValue" | "error">;
152
+ export declare const ShadcnChipsVariant: React.ForwardRefExoticComponent<TextUiProps & ChipsVariantProps & Pick<BaseProps, "value" | "onValue" | "error"> & React.RefAttributes<HTMLInputElement | HTMLTextAreaElement>>;
153
+ export default ShadcnChipsVariant;
154
+ //# sourceMappingURL=chips.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chips.d.ts","sourceRoot":"","sources":["../../../src/presets/shadcn-variants/chips.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,266 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ // src/presets/shadcn-variants/chips.tsx
3
+ import * as React from "react";
4
+ import { Input } from "@/presets/ui/input";
5
+ import { Textarea } from "@/presets/ui/textarea";
6
+ import { cn } from "@/lib/utils";
7
+ import { X } from "lucide-react";
8
+ // ─────────────────────────────────────────────
9
+ // Helpers
10
+ // ─────────────────────────────────────────────
11
+ function normalizeSeparators(sep) {
12
+ if (!sep)
13
+ return [",", ";"];
14
+ if (Array.isArray(sep))
15
+ return sep;
16
+ return [sep];
17
+ }
18
+ function splitIntoTokens(raw, sep) {
19
+ const separators = normalizeSeparators(sep);
20
+ let acc = [raw];
21
+ for (const s of separators) {
22
+ const next = [];
23
+ for (const chunk of acc) {
24
+ if (!chunk)
25
+ continue;
26
+ if (typeof s === "string") {
27
+ next.push(...chunk.split(s));
28
+ }
29
+ else {
30
+ next.push(...chunk.split(s));
31
+ }
32
+ }
33
+ acc = next;
34
+ }
35
+ return acc
36
+ .map((t) => t.trim())
37
+ .filter((t) => t.length > 0);
38
+ }
39
+ // ─────────────────────────────────────────────
40
+ // Component
41
+ // ─────────────────────────────────────────────
42
+ export const ShadcnChipsVariant = React.forwardRef(function ShadcnChipsVariant(props, ref) {
43
+ const {
44
+ // variant base bits
45
+ value, onValue, error,
46
+ // chips behaviour
47
+ placeholder, separators, addOnEnter = true, addOnTab = true, addOnBlur = true, allowDuplicates = false, maxChips, backspaceRemovesLast = true, clearable = false, onAddChips, onRemoveChips, renderChip, renderOverflowChip, maxVisibleChips, maxChipChars, maxChipWidth, textareaMode = false, placement,
48
+ // UI classNames
49
+ className, chipsClassName, chipClassName, chipLabelClassName, chipRemoveClassName, inputClassName,
50
+ // rest of text UI bits (size, density, icons, etc.)
51
+ ...restTextProps } = props;
52
+ const chips = React.useMemo(() => value ?? [], [value]);
53
+ const hasChips = chips.length > 0;
54
+ const [inputText, setInputText] = React.useState("");
55
+ // ─────────────────────────────────────────────
56
+ // Value emit
57
+ // ─────────────────────────────────────────────
58
+ const emitChange = React.useCallback((nextChips, meta) => {
59
+ const detail = {
60
+ source: "variant",
61
+ raw: nextChips,
62
+ nativeEvent: undefined,
63
+ meta: {
64
+ ...meta,
65
+ chips: nextChips,
66
+ },
67
+ };
68
+ onValue?.(nextChips.length ? nextChips : undefined, detail);
69
+ }, [onValue]);
70
+ const commitFromRaw = React.useCallback((raw) => {
71
+ const tokens = splitIntoTokens(raw, separators);
72
+ if (!tokens.length)
73
+ return;
74
+ let next = [...chips];
75
+ const added = [];
76
+ for (const token of tokens) {
77
+ if (!allowDuplicates && next.includes(token))
78
+ continue;
79
+ if (typeof maxChips === "number" && next.length >= maxChips) {
80
+ break;
81
+ }
82
+ next.push(token);
83
+ added.push(token);
84
+ }
85
+ if (!added.length)
86
+ return;
87
+ emitChange(next, { action: "add", added });
88
+ onAddChips?.(added, next);
89
+ setInputText("");
90
+ }, [chips, separators, allowDuplicates, maxChips, emitChange, onAddChips]);
91
+ const handleRemoveAt = React.useCallback((index) => {
92
+ if (index < 0 || index >= chips.length)
93
+ return;
94
+ const removed = [chips[index]];
95
+ const next = chips.filter((_, i) => i !== index);
96
+ emitChange(next, { action: "remove", removed });
97
+ onRemoveChips?.(removed, next);
98
+ }, [chips, emitChange, onRemoveChips]);
99
+ const handleClear = React.useCallback((ev) => {
100
+ ev?.preventDefault();
101
+ ev?.stopPropagation();
102
+ if (!chips.length)
103
+ return;
104
+ emitChange([], { action: "clear", removed: [...chips] });
105
+ onRemoveChips?.([...chips], []);
106
+ setInputText("");
107
+ }, [chips, emitChange, onRemoveChips]);
108
+ // ─────────────────────────────────────────────
109
+ // Entry events (Input or Textarea)
110
+ // ─────────────────────────────────────────────
111
+ const handleEntryChange = React.useCallback((event) => {
112
+ const next = event.target.value ?? "";
113
+ setInputText(next);
114
+ }, []);
115
+ const handleEntryKeyDown = React.useCallback((event) => {
116
+ const key = event.key;
117
+ if (key === "Enter" && addOnEnter) {
118
+ event.preventDefault();
119
+ if (inputText.trim().length) {
120
+ commitFromRaw(inputText);
121
+ }
122
+ return;
123
+ }
124
+ if (key === "Tab" && addOnTab && inputText.trim().length) {
125
+ event.preventDefault();
126
+ commitFromRaw(inputText);
127
+ return;
128
+ }
129
+ // Backspace on empty input → remove last chip
130
+ if (key === "Backspace" &&
131
+ backspaceRemovesLast &&
132
+ !inputText.length &&
133
+ chips.length) {
134
+ event.preventDefault();
135
+ handleRemoveAt(chips.length - 1);
136
+ return;
137
+ }
138
+ }, [
139
+ inputText,
140
+ addOnEnter,
141
+ addOnTab,
142
+ backspaceRemovesLast,
143
+ chips.length,
144
+ commitFromRaw,
145
+ handleRemoveAt,
146
+ ]);
147
+ const handleEntryBlur = React.useCallback((event) => {
148
+ if (addOnBlur && inputText.trim().length) {
149
+ commitFromRaw(inputText);
150
+ }
151
+ // Forward to host onBlur if provided in restTextProps
152
+ const anyProps = restTextProps;
153
+ const hostOnBlur = anyProps?.onBlur;
154
+ hostOnBlur?.(event);
155
+ }, [addOnBlur, inputText, commitFromRaw, restTextProps]);
156
+ const effectivePlaceholder = placeholder ?? (hasChips ? "" : "Add item…");
157
+ // ─────────────────────────────────────────────
158
+ // Chip rendering (maxVisible / overflow / truncation)
159
+ // ─────────────────────────────────────────────
160
+ let visibleChips = chips;
161
+ let hiddenCount = 0;
162
+ if (typeof maxVisibleChips === "number" &&
163
+ maxVisibleChips > 0 &&
164
+ chips.length > maxVisibleChips) {
165
+ visibleChips = chips.slice(0, maxVisibleChips);
166
+ hiddenCount = chips.length - visibleChips.length;
167
+ }
168
+ const maxWidthStyle = maxChipWidth !== undefined
169
+ ? {
170
+ maxWidth: typeof maxChipWidth === "number"
171
+ ? `${maxChipWidth}px`
172
+ : maxChipWidth,
173
+ }
174
+ : undefined;
175
+ const baseChipClasses = textareaMode
176
+ ? "inline-flex min-w-0 gap-1 items-center justify-between rounded-md bg-muted px-2 py-2 text-muted-foreground"
177
+ : "inline-flex max-w-full items-center gap-1 rounded bg-muted px-2 py-0.5 text-muted-foreground hover:bg-muted/80";
178
+ const baseRemoveClasses = textareaMode
179
+ ? "cursor-pointer text-[16px] opacity-70 hover:opacity-100 mt-0.5"
180
+ : "cursor-pointer text-[16px] opacity-70 hover:opacity-100";
181
+ const chipNodes = visibleChips.map((chip, index) => {
182
+ if (renderChip) {
183
+ return (_jsx(React.Fragment, { children: renderChip(chip, index, {
184
+ remove: () => handleRemoveAt(index),
185
+ chips,
186
+ }) }, `${chip}-${index}`));
187
+ }
188
+ let label = chip;
189
+ if (typeof maxChipChars === "number" &&
190
+ maxChipChars > 0 &&
191
+ label.length > maxChipChars) {
192
+ label = label.slice(0, maxChipChars) + "…";
193
+ }
194
+ return (_jsxs("button", { type: "button", className: cn(baseChipClasses, chipClassName), onClick: (e) => {
195
+ e.preventDefault();
196
+ }, "data-slot": "chip", children: [_jsx("span", { className: cn("truncate", chipLabelClassName), style: maxWidthStyle, children: label }), _jsx("span", { className: cn(baseRemoveClasses, chipRemoveClassName), onClick: (e) => {
197
+ e.preventDefault();
198
+ e.stopPropagation();
199
+ handleRemoveAt(index);
200
+ }, "aria-hidden": "true", children: _jsx(X, { size: 16 }) })] }, `${chip}-${index}`));
201
+ });
202
+ if (hiddenCount > 0) {
203
+ const defaultOverflow = (_jsxs("span", { className: cn(baseChipClasses, "cursor-default", chipClassName), "data-slot": "chip-overflow", children: ["+", hiddenCount, " more"] }));
204
+ const node = renderOverflowChip?.(hiddenCount, chips) ?? defaultOverflow;
205
+ chipNodes.push(_jsx(React.Fragment, { children: node }, "__overflow"));
206
+ }
207
+ // ─────────────────────────────────────────────
208
+ // Placement (inline vs below)
209
+ // ─────────────────────────────────────────────
210
+ const effectivePlacement = textareaMode
211
+ ? (placement ?? "inline")
212
+ : (placement ?? "inline");
213
+ const inlinePlacement = effectivePlacement === "inline";
214
+ // Input-mode inline controls (inside the Input frame)
215
+ let leadingControl;
216
+ let trailingControl;
217
+ // Below-the-field block (both modes)
218
+ let chipsBelowBlock;
219
+ // Textarea-mode upper toolbox (instead of leadingControl/trailingControl)
220
+ let textareaUpperControl;
221
+ let textareaUpperClassName;
222
+ if (hasChips) {
223
+ if (textareaMode) {
224
+ if (inlinePlacement) {
225
+ // chips live in the upper toolbox row, single-line row by default
226
+ textareaUpperControl = (_jsxs("div", { "data-slot": "chips-upper", className: cn("flex items-center gap-1 text-xs", chipsClassName), children: [chipNodes, clearable && (_jsx("button", { type: "button", onClick: handleClear, className: "ml-auto inline-flex h-6 px-2 items-center justify-center rounded-full text-[0.72rem] text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1", "data-slot": "chips-clear", children: "Clear" }))] }));
227
+ textareaUpperClassName = chipsClassName;
228
+ }
229
+ else {
230
+ // textareaMode + placement=below → block under the textarea box
231
+ chipsBelowBlock = (_jsxs("div", { className: cn("mt-2 flex items-center gap-2 text-xs", chipsClassName), "data-slot": "chips-list-below", children: [chipNodes, clearable && (_jsx("button", { type: "button", onClick: handleClear, className: "self-start inline-flex h-6 px-2 items-center justify-center rounded-full text-[0.72rem] text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1", "data-slot": "chips-clear", children: "Clear" }))] }));
232
+ }
233
+ }
234
+ else {
235
+ // INPUT MODE
236
+ if (inlinePlacement) {
237
+ leadingControl = (_jsx("div", { className: cn("flex min-w-0 flex-row items-center gap-1 pr-1 py-1 text-xs pl-2", chipsClassName), "data-slot": "chips-list", children: chipNodes }));
238
+ if (clearable) {
239
+ trailingControl = (_jsx("div", { className: "flex h-full items-center pr-1", "data-slot": "chips-trailing", children: _jsx("button", { type: "button", onClick: handleClear, className: "inline-flex h-6 w-6 items-center justify-center rounded-full text-xs text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1", "data-slot": "chips-clear", "aria-label": "Clear chips", children: "\u00D7" }) }));
240
+ }
241
+ }
242
+ else {
243
+ chipsBelowBlock = (_jsxs("div", { className: cn("mt-1 flex flex-row items-center gap-1 text-xs", chipsClassName), "data-slot": "chips-list-below", children: [chipNodes, clearable && (_jsx("button", { type: "button", onClick: handleClear, className: "inline-flex h-6 px-2 items-center justify-center rounded-full text-[0.72rem] text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1", "data-slot": "chips-clear", children: "Clear" }))] }));
244
+ }
245
+ }
246
+ }
247
+ const joinControls = !textareaMode && inlinePlacement && hasChips;
248
+ const extendBoxToControls = !textareaMode && inlinePlacement && hasChips;
249
+ // ─────────────────────────────────────────────
250
+ // Entry control (Input vs Textarea)
251
+ // ─────────────────────────────────────────────
252
+ return (_jsx("div", { className: className, "data-slot": "chips-field", children: textareaMode ? (_jsxs(_Fragment, { children: [_jsx(Textarea, { ref: ref, ...restTextProps, value: inputText, onChange: handleEntryChange, onKeyDown: handleEntryKeyDown, onBlur: handleEntryBlur, extendBoxToToolbox: effectivePlacement === "inline", placeholder: effectivePlaceholder,
253
+ // textarea-specific defaults
254
+ autoResize: true, rows: 1, upperControl: textareaUpperControl, upperControlClassName: textareaUpperClassName, inputClassName: inputClassName, "aria-invalid": error ? "true" : undefined }), !inlinePlacement && hasChips && chipsBelowBlock] })) : (_jsxs(_Fragment, { children: [_jsx(Input, { ref: ref, ...restTextProps, type: "text",
255
+ // The Input's value is the *draft* text, not the chips.
256
+ value: inputText, onChange: handleEntryChange, onKeyDown: handleEntryKeyDown, onBlur: handleEntryBlur, placeholder: effectivePlaceholder,
257
+ // ONLY pass controls when chips are inline
258
+ leadingControl: inlinePlacement ? leadingControl : undefined, trailingControl: inlinePlacement ? trailingControl : undefined,
259
+ // Only flip into "group box" mode when there are chips inline
260
+ joinControls: joinControls, extendBoxToControls: extendBoxToControls, inputClassName: cn("min-w-[4ch] flex-1 py-0", inlinePlacement &&
261
+ hasChips &&
262
+ "bg-transparent border-none shadow-none outline-none", inputClassName), "aria-invalid": error ? "true" : undefined }), !inlinePlacement && hasChips && chipsBelowBlock] })) }));
263
+ });
264
+ ShadcnChipsVariant.displayName = "ShadcnChipsVariant";
265
+ export default ShadcnChipsVariant;
266
+ //# sourceMappingURL=chips.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chips.js","sourceRoot":"","sources":["../../../src/presets/shadcn-variants/chips.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import * as React from "react";
2
+ import type { VariantBaseProps } from "@/variants/shared";
3
+ import type { ShadcnTextVariantProps } from "@/presets/shadcn-variants/text";
4
+ type BaseProps = VariantBaseProps<string | undefined>;
5
+ /**
6
+ * Extra options specific to the color variant.
7
+ */
8
+ export interface ColorSpecificProps {
9
+ /**
10
+ * If false, we hide the colour preview box.
11
+ * Default: true
12
+ */
13
+ showPreview?: boolean;
14
+ /**
15
+ * If false, we hide the picker toggle control/icon.
16
+ * Default: true
17
+ */
18
+ showPickerToggle?: boolean;
19
+ /**
20
+ * Size of the colour swatch in pixels.
21
+ * Default: 18
22
+ */
23
+ previewSize?: number;
24
+ /**
25
+ * Optional className for the outer wrapper that hosts
26
+ * the Input + hidden color input.
27
+ */
28
+ wrapperClassName?: string;
29
+ /**
30
+ * Optional className for the preview button itself (around the swatch).
31
+ */
32
+ previewButtonClassName?: string;
33
+ /**
34
+ * Optional className for the swatch box inside the preview button.
35
+ */
36
+ previewSwatchClassName?: string;
37
+ /**
38
+ * Optional className for the hidden `<input type="color">`.
39
+ *
40
+ * By default this input is visually hidden and only used
41
+ * to invoke the browser/OS colour picker, but you can override
42
+ * this class to make it visible and style it.
43
+ */
44
+ pickerInputClassName?: string;
45
+ /**
46
+ * Custom icon shown in the trailing control as the picker toggle.
47
+ * If omitted, a tiny ▾ triangle is used.
48
+ */
49
+ pickerToggleIcon?: React.ReactNode;
50
+ className?: string;
51
+ }
52
+ /**
53
+ * We inherit the *visual/behavioural* props from ShadcnTextVariant,
54
+ * but control value / onValue / type / inputMode / leadingControl / trailingControl ourselves.
55
+ */
56
+ type TextUiProps = Omit<ShadcnTextVariantProps, "type" | "inputMode" | "leadingControl" | "trailingControl" | "value" | "onValue">;
57
+ /**
58
+ * Full props for the color variant as seen by the form runtime.
59
+ */
60
+ export type ShadcnColorVariantProps = TextUiProps & ColorSpecificProps & Pick<BaseProps, "value" | "onValue">;
61
+ export declare const ShadcnColorVariant: React.ForwardRefExoticComponent<TextUiProps & ColorSpecificProps & Pick<BaseProps, "value" | "onValue"> & React.RefAttributes<HTMLInputElement>>;
62
+ export {};
63
+ //# sourceMappingURL=color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../../src/presets/shadcn-variants/color.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,gBAAgB,EAAgB,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAK7E,KAAK,SAAS,GAAG,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAChC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAEnC,SAAS,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,KAAK,WAAW,GAAG,IAAI,CACpB,sBAAsB,EACtB,MAAM,GAAG,WAAW,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,OAAO,GAAG,SAAS,CACnF,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,WAAW,GAC9C,kBAAkB,GAClB,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC,CAAC;AAUxC,eAAO,MAAM,kBAAkB,kJA4L7B,CAAC"}
@@ -0,0 +1,96 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // src/presets/shadcn-variants/color.tsx
3
+ import * as React from "react";
4
+ import { Input } from "@/presets/ui/input";
5
+ import { cn } from "@/lib/utils";
6
+ import { Palette } from "lucide-react";
7
+ function normalizeColorForPicker(value) {
8
+ // Very light sanity: accept #rgb or #rrggbb; otherwise fall back.
9
+ if (typeof value === "string" && /^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(value)) {
10
+ return value;
11
+ }
12
+ return "#000000";
13
+ }
14
+ export const ShadcnColorVariant = React.forwardRef(function ShadcnColorVariant(props, ref) {
15
+ const {
16
+ // variant contract
17
+ value, onValue,
18
+ // colour-specific
19
+ showPreview = true, showPickerToggle = true, previewSize = 18, wrapperClassName, previewButtonClassName, previewSwatchClassName, pickerInputClassName, pickerToggleIcon,
20
+ // from text variant UI
21
+ error, joinControls = true, extendBoxToControls = true,
22
+ // everything else → Input (size, density, className, icons, etc.)
23
+ ...restTextProps } = props;
24
+ const [local, setLocal] = React.useState(value ?? "");
25
+ const [pickerOpen, setPickerOpen] = React.useState(false);
26
+ React.useEffect(() => {
27
+ setLocal(value ?? "");
28
+ }, [value]);
29
+ const pickerRef = React.useRef(null);
30
+ const effectiveColor = normalizeColorForPicker(local || value);
31
+ const showError = Boolean(error);
32
+ const openSystemPicker = React.useCallback(() => {
33
+ setPickerOpen(true);
34
+ // Small timeout so state flushes before click; not strictly required but safe.
35
+ window.setTimeout(() => {
36
+ pickerRef.current?.click();
37
+ }, 0);
38
+ }, []);
39
+ const handleTextChange = React.useCallback((event) => {
40
+ const next = event.target.value ?? "";
41
+ setLocal(next);
42
+ if (onValue) {
43
+ const detail = {
44
+ source: "variant",
45
+ raw: next,
46
+ nativeEvent: event,
47
+ meta: { source: "input" },
48
+ };
49
+ onValue(next || undefined, detail);
50
+ }
51
+ }, [onValue]);
52
+ const handlePickerChange = React.useCallback((event) => {
53
+ const next = event.target.value ?? "";
54
+ setLocal(next);
55
+ if (onValue) {
56
+ const detail = {
57
+ source: "variant",
58
+ raw: next,
59
+ nativeEvent: event,
60
+ meta: { source: "picker" },
61
+ };
62
+ onValue(next || undefined, detail);
63
+ }
64
+ // Once the user picks a colour, the OS picker closes.
65
+ setPickerOpen(false);
66
+ }, [onValue]);
67
+ const handlePickerBlur = React.useCallback(() => {
68
+ // If the user cancels the picker, blur fires and we can clear state.
69
+ setPickerOpen(false);
70
+ }, []);
71
+ // ———————————————————————————————
72
+ // Leading control: colour preview
73
+ // ———————————————————————————————
74
+ const leadingControl = showPreview ? (_jsx("button", { type: "button", onClick: openSystemPicker, className: cn("flex h-full items-center px-3 border-r border-border/50", "hover:bg-muted/50 transition-colors focus-visible:outline-none focus-visible:bg-muted/50", previewButtonClassName), tabIndex: -1, "aria-label": "Open colour picker", children: _jsx("span", { className: cn("inline-flex rounded-sm shadow-sm ring-1 ring-inset ring-foreground/10", previewSwatchClassName), style: {
75
+ width: previewSize,
76
+ height: previewSize,
77
+ backgroundColor: effectiveColor,
78
+ } }) })) : undefined;
79
+ // ———————————————————————————————
80
+ // Trailing control: picker toggle icon
81
+ // ———————————————————————————————
82
+ const toggleNode = pickerToggleIcon !== undefined ? (pickerToggleIcon) : (
83
+ // Swapped the text caret for a Lucide Palette icon
84
+ _jsx(Palette, { className: "h-4 w-4 opacity-50" }));
85
+ const trailingControl = showPickerToggle ? (_jsx("button", { type: "button", onClick: openSystemPicker, className: "flex h-full items-center px-3 text-muted-foreground hover:text-foreground transition-colors", tabIndex: -1, "aria-label": pickerOpen ? "Close colour picker" : "Open colour picker", "data-open": pickerOpen ? "true" : "false", children: toggleNode })) : undefined;
86
+ // ———————————————————————————————
87
+ // Render
88
+ // ———————————————————————————————
89
+ return (_jsxs("div", { className: cn("relative group/color", wrapperClassName), children: [_jsx(Input, { ref: ref, ...restTextProps, type: "text", value: local, onChange: handleTextChange, leadingControl: leadingControl, trailingControl: trailingControl, joinControls: joinControls, extendBoxToControls: extendBoxToControls, "aria-invalid": showError ? "true" : undefined,
90
+ // Added mono font and uppercase for cleaner hex code display
91
+ className: cn("font-mono uppercase", restTextProps.className), maxLength: 9 }), _jsx("input", { ref: pickerRef, type: "color",
92
+ // hidden
93
+ className: cn("absolute h-0 w-0 opacity-0 pointer-events-none", pickerInputClassName), value: effectiveColor, onChange: handlePickerChange, onBlur: handlePickerBlur, tabIndex: -1, "aria-hidden": "true" })] }));
94
+ });
95
+ ShadcnColorVariant.displayName = "ShadcnColorVariant";
96
+ //# sourceMappingURL=color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color.js","sourceRoot":"","sources":["../../../src/presets/shadcn-variants/color.tsx"],"names":[],"mappings":"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"}