@particle-academy/react-fancy 6.8.0 → 6.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (583) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +1 -0
  3. package/dist/{Card-CuRZivBz.d.cts → Card-D0sp2T1V.d.cts} +6 -1
  4. package/dist/{Card-CuRZivBz.d.ts → Card-D0sp2T1V.d.ts} +6 -1
  5. package/dist/accordion-panel.cjs +7 -7
  6. package/dist/accordion-panel.js +1 -1
  7. package/dist/accordion.cjs +3 -3
  8. package/dist/accordion.js +1 -1
  9. package/dist/autocomplete.cjs +4 -3
  10. package/dist/autocomplete.js +3 -2
  11. package/dist/avatar.cjs +2 -2
  12. package/dist/avatar.js +1 -1
  13. package/dist/breadcrumbs.cjs +2 -2
  14. package/dist/breadcrumbs.js +1 -1
  15. package/dist/button.cjs +3 -3
  16. package/dist/button.d.cts +1 -1
  17. package/dist/button.d.ts +1 -1
  18. package/dist/button.js +1 -1
  19. package/dist/calendar.cjs +2 -2
  20. package/dist/calendar.js +1 -1
  21. package/dist/callout.cjs +2 -2
  22. package/dist/callout.js +1 -1
  23. package/dist/card.cjs +7 -7
  24. package/dist/card.d.cts +2 -2
  25. package/dist/card.d.ts +2 -2
  26. package/dist/card.js +1 -1
  27. package/dist/carousel.cjs +7 -7
  28. package/dist/carousel.js +1 -1
  29. package/dist/chart.cjs +2 -2
  30. package/dist/chart.js +1 -1
  31. package/dist/chat-drawer.cjs +2 -2
  32. package/dist/chat-drawer.js +1 -1
  33. package/dist/chat-thread.cjs +7 -7
  34. package/dist/chat-thread.js +5 -5
  35. package/dist/checkbox-group.cjs +5 -5
  36. package/dist/checkbox-group.js +4 -4
  37. package/dist/checkbox.cjs +3 -3
  38. package/dist/checkbox.js +2 -2
  39. package/dist/{chunk-6GVOW3UL.js → chunk-24RWB7Q3.js} +12 -11
  40. package/dist/chunk-24RWB7Q3.js.map +1 -0
  41. package/dist/{chunk-B4YV2V7G.cjs → chunk-2DX3PNXU.cjs} +3 -3
  42. package/dist/{chunk-B4YV2V7G.cjs.map → chunk-2DX3PNXU.cjs.map} +1 -1
  43. package/dist/{chunk-KPRSRWNM.js → chunk-2I7VNCBZ.js} +3 -3
  44. package/dist/{chunk-KPRSRWNM.js.map → chunk-2I7VNCBZ.js.map} +1 -1
  45. package/dist/{chunk-WMANILKC.cjs → chunk-2UYQ34RJ.cjs} +7 -7
  46. package/dist/chunk-2UYQ34RJ.cjs.map +1 -0
  47. package/dist/chunk-36IC3NDN.cjs +21 -0
  48. package/dist/chunk-36IC3NDN.cjs.map +1 -0
  49. package/dist/{chunk-LFC2DL6H.cjs → chunk-3BBEVHSP.cjs} +14 -9
  50. package/dist/chunk-3BBEVHSP.cjs.map +1 -0
  51. package/dist/{chunk-2O5UXH5R.cjs → chunk-3EZ6UPXS.cjs} +10 -10
  52. package/dist/chunk-3EZ6UPXS.cjs.map +1 -0
  53. package/dist/{chunk-37D5PYEF.js → chunk-3O3ZWWLG.js} +17 -4
  54. package/dist/chunk-3O3ZWWLG.js.map +1 -0
  55. package/dist/{chunk-5TP642UT.js → chunk-3W6BKQVZ.js} +12 -11
  56. package/dist/chunk-3W6BKQVZ.js.map +1 -0
  57. package/dist/{chunk-5PHPJL7Z.js → chunk-4EQ336PQ.js} +4 -4
  58. package/dist/{chunk-5PHPJL7Z.js.map → chunk-4EQ336PQ.js.map} +1 -1
  59. package/dist/{chunk-EENHSMV2.js → chunk-4L3MGQAR.js} +6 -6
  60. package/dist/{chunk-EENHSMV2.js.map → chunk-4L3MGQAR.js.map} +1 -1
  61. package/dist/{chunk-QGY5FPVM.js → chunk-54NB3T3Q.js} +6 -4
  62. package/dist/chunk-54NB3T3Q.js.map +1 -0
  63. package/dist/{chunk-FRWOWDGX.js → chunk-5FA6V7JF.js} +3 -3
  64. package/dist/{chunk-FRWOWDGX.js.map → chunk-5FA6V7JF.js.map} +1 -1
  65. package/dist/{chunk-UUEAFG6V.js → chunk-5NJF7SQX.js} +6 -6
  66. package/dist/{chunk-UUEAFG6V.js.map → chunk-5NJF7SQX.js.map} +1 -1
  67. package/dist/{chunk-ZGDOWJKL.cjs → chunk-5NTFXQ4K.cjs} +6 -6
  68. package/dist/{chunk-ZGDOWJKL.cjs.map → chunk-5NTFXQ4K.cjs.map} +1 -1
  69. package/dist/{chunk-CQ7QXZLR.cjs → chunk-5SVZX6WF.cjs} +4 -4
  70. package/dist/chunk-5SVZX6WF.cjs.map +1 -0
  71. package/dist/{chunk-JY7HPFOE.cjs → chunk-6B2GMKE4.cjs} +5 -5
  72. package/dist/{chunk-JY7HPFOE.cjs.map → chunk-6B2GMKE4.cjs.map} +1 -1
  73. package/dist/{chunk-OASSZI6M.cjs → chunk-6B43ARGW.cjs} +5 -4
  74. package/dist/chunk-6B43ARGW.cjs.map +1 -0
  75. package/dist/{chunk-CVDL6C2O.cjs → chunk-6EPM5JG7.cjs} +3 -3
  76. package/dist/{chunk-CVDL6C2O.cjs.map → chunk-6EPM5JG7.cjs.map} +1 -1
  77. package/dist/{chunk-FVQO75KY.cjs → chunk-6GOPFKGC.cjs} +10 -4
  78. package/dist/chunk-6GOPFKGC.cjs.map +1 -0
  79. package/dist/{chunk-TLRFXSPA.cjs → chunk-73REG7KM.cjs} +13 -13
  80. package/dist/{chunk-TLRFXSPA.cjs.map → chunk-73REG7KM.cjs.map} +1 -1
  81. package/dist/{chunk-MI57NAKF.js → chunk-7B3Z4NVM.js} +6 -5
  82. package/dist/chunk-7B3Z4NVM.js.map +1 -0
  83. package/dist/{chunk-J2BWXCES.js → chunk-7GRIO5AZ.js} +3 -3
  84. package/dist/{chunk-J2BWXCES.js.map → chunk-7GRIO5AZ.js.map} +1 -1
  85. package/dist/{chunk-V5JTTLJP.cjs → chunk-7K2C744H.cjs} +3 -3
  86. package/dist/{chunk-V5JTTLJP.cjs.map → chunk-7K2C744H.cjs.map} +1 -1
  87. package/dist/{chunk-I2VAGZXY.cjs → chunk-7N7XVBH7.cjs} +11 -11
  88. package/dist/{chunk-I2VAGZXY.cjs.map → chunk-7N7XVBH7.cjs.map} +1 -1
  89. package/dist/{chunk-AJPYGRLA.cjs → chunk-7NRG77U5.cjs} +12 -4
  90. package/dist/chunk-7NRG77U5.cjs.map +1 -0
  91. package/dist/{chunk-GDF6XTHC.js → chunk-7OUBFO4D.js} +7 -5
  92. package/dist/chunk-7OUBFO4D.js.map +1 -0
  93. package/dist/{chunk-6H7ZN23X.cjs → chunk-7PK3OUKR.cjs} +6 -6
  94. package/dist/{chunk-6H7ZN23X.cjs.map → chunk-7PK3OUKR.cjs.map} +1 -1
  95. package/dist/{chunk-EUVWYDFN.js → chunk-AE6ICNJR.js} +14 -9
  96. package/dist/chunk-AE6ICNJR.js.map +1 -0
  97. package/dist/{chunk-YJXP6AOL.cjs → chunk-AF33UCTN.cjs} +4 -4
  98. package/dist/{chunk-YJXP6AOL.cjs.map → chunk-AF33UCTN.cjs.map} +1 -1
  99. package/dist/{chunk-PM5I5ZHK.cjs → chunk-AFFR7HHZ.cjs} +8 -7
  100. package/dist/chunk-AFFR7HHZ.cjs.map +1 -0
  101. package/dist/{chunk-F4OYQ2XZ.js → chunk-AR5DLM4K.js} +9 -6
  102. package/dist/chunk-AR5DLM4K.js.map +1 -0
  103. package/dist/{chunk-DJB3N4G3.cjs → chunk-AVGZ4PPC.cjs} +9 -9
  104. package/dist/{chunk-DJB3N4G3.cjs.map → chunk-AVGZ4PPC.cjs.map} +1 -1
  105. package/dist/{chunk-RANTYGKW.js → chunk-AXW55PQG.js} +3 -3
  106. package/dist/chunk-AXW55PQG.js.map +1 -0
  107. package/dist/{chunk-NSJBVV7R.js → chunk-BPTCMI3E.js} +21 -10
  108. package/dist/chunk-BPTCMI3E.js.map +1 -0
  109. package/dist/{chunk-25HRO7HQ.cjs → chunk-BYMOPR7P.cjs} +7 -7
  110. package/dist/chunk-BYMOPR7P.cjs.map +1 -0
  111. package/dist/{chunk-RWU2MFUL.js → chunk-C2VGO375.js} +5 -4
  112. package/dist/chunk-C2VGO375.js.map +1 -0
  113. package/dist/{chunk-FKZB27OM.cjs → chunk-C6EVRWXZ.cjs} +11 -8
  114. package/dist/chunk-C6EVRWXZ.cjs.map +1 -0
  115. package/dist/{chunk-GTS3QA7M.js → chunk-CO2NEUFK.js} +5 -5
  116. package/dist/chunk-CO2NEUFK.js.map +1 -0
  117. package/dist/{chunk-ESCIXKFT.js → chunk-D6NISIKV.js} +17 -7
  118. package/dist/chunk-D6NISIKV.js.map +1 -0
  119. package/dist/{chunk-MRZXTL46.cjs → chunk-DFROB5TW.cjs} +20 -20
  120. package/dist/{chunk-MRZXTL46.cjs.map → chunk-DFROB5TW.cjs.map} +1 -1
  121. package/dist/{chunk-KFA7B6WP.cjs → chunk-DPPDZOMY.cjs} +17 -7
  122. package/dist/chunk-DPPDZOMY.cjs.map +1 -0
  123. package/dist/{chunk-KOTUFZJ6.cjs → chunk-DQWAG7YY.cjs} +14 -11
  124. package/dist/chunk-DQWAG7YY.cjs.map +1 -0
  125. package/dist/{chunk-5WQ6FPSP.js → chunk-E2AEU5SP.js} +4 -4
  126. package/dist/{chunk-5WQ6FPSP.js.map → chunk-E2AEU5SP.js.map} +1 -1
  127. package/dist/{chunk-3QCAOD2W.cjs → chunk-EC4ZYZNK.cjs} +3 -3
  128. package/dist/{chunk-3QCAOD2W.cjs.map → chunk-EC4ZYZNK.cjs.map} +1 -1
  129. package/dist/{chunk-XBFTO64U.cjs → chunk-EDIB6V6Y.cjs} +4 -4
  130. package/dist/{chunk-XBFTO64U.cjs.map → chunk-EDIB6V6Y.cjs.map} +1 -1
  131. package/dist/{chunk-KXYMMNNV.js → chunk-EDIX6EXQ.js} +20 -20
  132. package/dist/{chunk-KXYMMNNV.js.map → chunk-EDIX6EXQ.js.map} +1 -1
  133. package/dist/{chunk-HNJXBMHI.cjs → chunk-EEFU5BVM.cjs} +40 -39
  134. package/dist/chunk-EEFU5BVM.cjs.map +1 -0
  135. package/dist/{chunk-KOAMRCSC.cjs → chunk-ETUDUDSL.cjs} +14 -11
  136. package/dist/chunk-ETUDUDSL.cjs.map +1 -0
  137. package/dist/{chunk-PJNUGSKI.js → chunk-EW2N52FD.js} +26 -25
  138. package/dist/chunk-EW2N52FD.js.map +1 -0
  139. package/dist/{chunk-6PRXG7L6.js → chunk-FECD3WKN.js} +4 -4
  140. package/dist/{chunk-6PRXG7L6.js.map → chunk-FECD3WKN.js.map} +1 -1
  141. package/dist/{chunk-CNWTYRZC.cjs → chunk-FF5G3E76.cjs} +4 -4
  142. package/dist/{chunk-CNWTYRZC.cjs.map → chunk-FF5G3E76.cjs.map} +1 -1
  143. package/dist/{chunk-WNWEC5OU.cjs → chunk-FKHYJ5IC.cjs} +3 -3
  144. package/dist/{chunk-WNWEC5OU.cjs.map → chunk-FKHYJ5IC.cjs.map} +1 -1
  145. package/dist/{chunk-QTS4Q2NK.js → chunk-FNHKZMMI.js} +4 -3
  146. package/dist/chunk-FNHKZMMI.js.map +1 -0
  147. package/dist/{chunk-QP6VNKLW.cjs → chunk-FNPII6TF.cjs} +9 -5
  148. package/dist/chunk-FNPII6TF.cjs.map +1 -0
  149. package/dist/{chunk-HLI6RB5V.cjs → chunk-FR3V5IAJ.cjs} +32 -31
  150. package/dist/chunk-FR3V5IAJ.cjs.map +1 -0
  151. package/dist/{chunk-EQ7G5F6K.js → chunk-FRUHEDZN.js} +3 -3
  152. package/dist/{chunk-EQ7G5F6K.js.map → chunk-FRUHEDZN.js.map} +1 -1
  153. package/dist/{chunk-BYO5RUDE.cjs → chunk-FSLEFL4U.cjs} +6 -5
  154. package/dist/chunk-FSLEFL4U.cjs.map +1 -0
  155. package/dist/{chunk-JY2RC6I4.js → chunk-FX37P4KR.js} +13 -10
  156. package/dist/chunk-FX37P4KR.js.map +1 -0
  157. package/dist/{chunk-BJL3VDRK.cjs → chunk-FY2WDVKF.cjs} +3 -3
  158. package/dist/{chunk-BJL3VDRK.cjs.map → chunk-FY2WDVKF.cjs.map} +1 -1
  159. package/dist/{chunk-SKMORSBO.cjs → chunk-FZQWFDUV.cjs} +5 -5
  160. package/dist/chunk-FZQWFDUV.cjs.map +1 -0
  161. package/dist/{chunk-4DL2U23D.cjs → chunk-GE2ZGE3A.cjs} +21 -13
  162. package/dist/chunk-GE2ZGE3A.cjs.map +1 -0
  163. package/dist/{chunk-THMFLRDW.cjs → chunk-GE6TSA3M.cjs} +17 -17
  164. package/dist/{chunk-THMFLRDW.cjs.map → chunk-GE6TSA3M.cjs.map} +1 -1
  165. package/dist/{chunk-PIG3UTHU.js → chunk-GZSRKBYI.js} +3 -3
  166. package/dist/{chunk-PIG3UTHU.js.map → chunk-GZSRKBYI.js.map} +1 -1
  167. package/dist/{chunk-BXPLERIJ.js → chunk-H5LJFN7D.js} +5 -4
  168. package/dist/chunk-H5LJFN7D.js.map +1 -0
  169. package/dist/{chunk-FR4RHVPR.js → chunk-H7IQVCTX.js} +6 -4
  170. package/dist/chunk-H7IQVCTX.js.map +1 -0
  171. package/dist/{chunk-LY3RQB3H.js → chunk-HCIEXBEB.js} +3 -3
  172. package/dist/{chunk-LY3RQB3H.js.map → chunk-HCIEXBEB.js.map} +1 -1
  173. package/dist/{chunk-XZOBGKZL.cjs → chunk-HEGM5LMZ.cjs} +6 -5
  174. package/dist/chunk-HEGM5LMZ.cjs.map +1 -0
  175. package/dist/{chunk-K5MQZTDW.cjs → chunk-HKLBCA5X.cjs} +4 -4
  176. package/dist/{chunk-K5MQZTDW.cjs.map → chunk-HKLBCA5X.cjs.map} +1 -1
  177. package/dist/{chunk-5QKQXM5V.cjs → chunk-HYU46SOE.cjs} +5 -5
  178. package/dist/{chunk-5QKQXM5V.cjs.map → chunk-HYU46SOE.cjs.map} +1 -1
  179. package/dist/{chunk-X2A3NAJW.js → chunk-I65KXHYL.js} +4 -4
  180. package/dist/chunk-I65KXHYL.js.map +1 -0
  181. package/dist/{chunk-USWQAMI3.js → chunk-IF6EITB5.js} +3 -3
  182. package/dist/{chunk-USWQAMI3.js.map → chunk-IF6EITB5.js.map} +1 -1
  183. package/dist/{chunk-DXZCKDYS.js → chunk-IG2UDCBA.js} +9 -9
  184. package/dist/chunk-IG2UDCBA.js.map +1 -0
  185. package/dist/{chunk-YQZB5Z7C.cjs → chunk-INC35VEE.cjs} +3 -2
  186. package/dist/chunk-INC35VEE.cjs.map +1 -0
  187. package/dist/{chunk-AQ4DZT4Y.cjs → chunk-ISAHWGMD.cjs} +6 -6
  188. package/dist/{chunk-AQ4DZT4Y.cjs.map → chunk-ISAHWGMD.cjs.map} +1 -1
  189. package/dist/{chunk-GDH43QH6.js → chunk-J57JSHDC.js} +6 -6
  190. package/dist/{chunk-GDH43QH6.js.map → chunk-J57JSHDC.js.map} +1 -1
  191. package/dist/{chunk-Z4UXLQSK.cjs → chunk-JDFJK5GO.cjs} +16 -16
  192. package/dist/chunk-JDFJK5GO.cjs.map +1 -0
  193. package/dist/{chunk-GSMD5NK5.js → chunk-JN5DHZ6I.js} +7 -7
  194. package/dist/{chunk-GSMD5NK5.js.map → chunk-JN5DHZ6I.js.map} +1 -1
  195. package/dist/{chunk-MAZEX4EZ.cjs → chunk-JQIFCWNZ.cjs} +13 -13
  196. package/dist/{chunk-MAZEX4EZ.cjs.map → chunk-JQIFCWNZ.cjs.map} +1 -1
  197. package/dist/{chunk-DJYG7DXS.js → chunk-KDRBUF5S.js} +4 -4
  198. package/dist/chunk-KDRBUF5S.js.map +1 -0
  199. package/dist/{chunk-ZVDW2VX5.cjs → chunk-KGSL6SVX.cjs} +3 -3
  200. package/dist/chunk-KGSL6SVX.cjs.map +1 -0
  201. package/dist/{chunk-YAPGHVBZ.js → chunk-KRECSPD3.js} +4 -4
  202. package/dist/{chunk-YAPGHVBZ.js.map → chunk-KRECSPD3.js.map} +1 -1
  203. package/dist/{chunk-UE3QO7R3.js → chunk-LAQT5FFV.js} +3 -3
  204. package/dist/{chunk-UE3QO7R3.js.map → chunk-LAQT5FFV.js.map} +1 -1
  205. package/dist/{chunk-YH75G6SP.cjs → chunk-LHHELLMT.cjs} +3 -3
  206. package/dist/{chunk-YH75G6SP.cjs.map → chunk-LHHELLMT.cjs.map} +1 -1
  207. package/dist/chunk-LJCQI6ZS.js +1212 -0
  208. package/dist/chunk-LJCQI6ZS.js.map +1 -0
  209. package/dist/{chunk-UK6BGM74.cjs → chunk-LREJ7AV2.cjs} +17 -4
  210. package/dist/chunk-LREJ7AV2.cjs.map +1 -0
  211. package/dist/{chunk-Y3QAEF2P.cjs → chunk-LVNCNMKD.cjs} +9 -7
  212. package/dist/chunk-LVNCNMKD.cjs.map +1 -0
  213. package/dist/{chunk-UZCR7DK5.js → chunk-LXEOBSEZ.js} +3 -3
  214. package/dist/{chunk-UZCR7DK5.js.map → chunk-LXEOBSEZ.js.map} +1 -1
  215. package/dist/{chunk-MKGWHSNV.cjs → chunk-MAY4NMRI.cjs} +5 -4
  216. package/dist/chunk-MAY4NMRI.cjs.map +1 -0
  217. package/dist/{chunk-PDVU2PXR.js → chunk-MD7HUHJB.js} +10 -10
  218. package/dist/chunk-MD7HUHJB.js.map +1 -0
  219. package/dist/{chunk-CEFK54WP.cjs → chunk-MDAI54AG.cjs} +7 -5
  220. package/dist/chunk-MDAI54AG.cjs.map +1 -0
  221. package/dist/{chunk-WE5WGVVX.js → chunk-MKDTXMCE.js} +3 -3
  222. package/dist/{chunk-WE5WGVVX.js.map → chunk-MKDTXMCE.js.map} +1 -1
  223. package/dist/{chunk-SXXDTW7S.js → chunk-NETUI353.js} +10 -4
  224. package/dist/chunk-NETUI353.js.map +1 -0
  225. package/dist/{chunk-XHUV3VSM.cjs → chunk-NIFHAFKK.cjs} +3 -3
  226. package/dist/{chunk-XHUV3VSM.cjs.map → chunk-NIFHAFKK.cjs.map} +1 -1
  227. package/dist/{chunk-LKN7FYW6.js → chunk-NW2LQRUP.js} +4 -4
  228. package/dist/chunk-NW2LQRUP.js.map +1 -0
  229. package/dist/{chunk-ONHT2PDW.cjs → chunk-NWP5EGSR.cjs} +3 -3
  230. package/dist/{chunk-ONHT2PDW.cjs.map → chunk-NWP5EGSR.cjs.map} +1 -1
  231. package/dist/{chunk-RSLZL6VP.js → chunk-OBA2LR4I.js} +3 -3
  232. package/dist/chunk-OBA2LR4I.js.map +1 -0
  233. package/dist/{chunk-GR2WKBER.js → chunk-OE4AIUAN.js} +4 -3
  234. package/dist/chunk-OE4AIUAN.js.map +1 -0
  235. package/dist/chunk-OP7A4SZZ.cjs +1216 -0
  236. package/dist/chunk-OP7A4SZZ.cjs.map +1 -0
  237. package/dist/{chunk-Z44A7NPD.cjs → chunk-OUPHLIXV.cjs} +40 -39
  238. package/dist/chunk-OUPHLIXV.cjs.map +1 -0
  239. package/dist/{chunk-VSTUGU7W.js → chunk-PIYQPXLT.js} +8 -8
  240. package/dist/{chunk-VSTUGU7W.js.map → chunk-PIYQPXLT.js.map} +1 -1
  241. package/dist/{chunk-WX5XYDVN.js → chunk-PZTFGPQJ.js} +3 -3
  242. package/dist/{chunk-WX5XYDVN.js.map → chunk-PZTFGPQJ.js.map} +1 -1
  243. package/dist/{chunk-4GPH7HOR.js → chunk-Q4CNEHVN.js} +3 -3
  244. package/dist/{chunk-4GPH7HOR.js.map → chunk-Q4CNEHVN.js.map} +1 -1
  245. package/dist/{chunk-QF7CD4JH.cjs → chunk-Q7XL37T3.cjs} +5 -5
  246. package/dist/{chunk-QF7CD4JH.cjs.map → chunk-Q7XL37T3.cjs.map} +1 -1
  247. package/dist/{chunk-BLOX7MRO.js → chunk-QE7KXMUZ.js} +3 -3
  248. package/dist/{chunk-BLOX7MRO.js.map → chunk-QE7KXMUZ.js.map} +1 -1
  249. package/dist/{chunk-ZPBKRJMH.js → chunk-QEJBMXRQ.js} +7 -7
  250. package/dist/chunk-QEJBMXRQ.js.map +1 -0
  251. package/dist/{chunk-PCNJJVTF.cjs → chunk-QMZK7SRS.cjs} +3 -3
  252. package/dist/chunk-QMZK7SRS.cjs.map +1 -0
  253. package/dist/{chunk-J2DI6RMR.cjs → chunk-QQKWI7QP.cjs} +19 -12
  254. package/dist/chunk-QQKWI7QP.cjs.map +1 -0
  255. package/dist/{chunk-TFX4LL7V.js → chunk-QSRYTWQN.js} +3 -2
  256. package/dist/chunk-QSRYTWQN.js.map +1 -0
  257. package/dist/{chunk-Z7SQMQTF.cjs → chunk-QU6HZH6V.cjs} +21 -10
  258. package/dist/chunk-QU6HZH6V.cjs.map +1 -0
  259. package/dist/{chunk-WGRLNXNB.js → chunk-R3PCZSBQ.js} +3 -3
  260. package/dist/{chunk-WGRLNXNB.js.map → chunk-R3PCZSBQ.js.map} +1 -1
  261. package/dist/{chunk-VZTXUYPM.cjs → chunk-R4SANV3G.cjs} +20 -20
  262. package/dist/chunk-R4SANV3G.cjs.map +1 -0
  263. package/dist/{chunk-EZZKHMR4.js → chunk-R6O6SLXK.js} +3 -3
  264. package/dist/{chunk-EZZKHMR4.js.map → chunk-R6O6SLXK.js.map} +1 -1
  265. package/dist/{chunk-5EW47IH7.js → chunk-RCTPN5QK.js} +9 -7
  266. package/dist/chunk-RCTPN5QK.js.map +1 -0
  267. package/dist/{chunk-JSD6IEBW.js → chunk-RFTDMQ56.js} +3 -3
  268. package/dist/{chunk-JSD6IEBW.js.map → chunk-RFTDMQ56.js.map} +1 -1
  269. package/dist/{chunk-MQ6VGG62.js → chunk-RUEDMYBF.js} +19 -12
  270. package/dist/chunk-RUEDMYBF.js.map +1 -0
  271. package/dist/{chunk-2G6TIX5Q.cjs → chunk-RVBA4LEB.cjs} +13 -13
  272. package/dist/{chunk-2G6TIX5Q.cjs.map → chunk-RVBA4LEB.cjs.map} +1 -1
  273. package/dist/{chunk-UVUBV4VZ.js → chunk-S2ID4NNQ.js} +6 -6
  274. package/dist/{chunk-UVUBV4VZ.js.map → chunk-S2ID4NNQ.js.map} +1 -1
  275. package/dist/{chunk-TMQF2CRN.js → chunk-S4JQPOBR.js} +7 -7
  276. package/dist/chunk-S4JQPOBR.js.map +1 -0
  277. package/dist/{chunk-ETNQ4AEQ.cjs → chunk-S6TVSQDT.cjs} +5 -5
  278. package/dist/{chunk-ETNQ4AEQ.cjs.map → chunk-S6TVSQDT.cjs.map} +1 -1
  279. package/dist/{chunk-SSCW67KA.cjs → chunk-SD6YAMDH.cjs} +4 -4
  280. package/dist/chunk-SD6YAMDH.cjs.map +1 -0
  281. package/dist/{chunk-MLZGGAXQ.js → chunk-SOIGBPK6.js} +21 -13
  282. package/dist/chunk-SOIGBPK6.js.map +1 -0
  283. package/dist/{chunk-KKYILQTG.cjs → chunk-TBLKVTJC.cjs} +7 -7
  284. package/dist/{chunk-KKYILQTG.cjs.map → chunk-TBLKVTJC.cjs.map} +1 -1
  285. package/dist/{chunk-7QENPLOP.cjs → chunk-TQDZZIOW.cjs} +5 -5
  286. package/dist/{chunk-7QENPLOP.cjs.map → chunk-TQDZZIOW.cjs.map} +1 -1
  287. package/dist/{chunk-MPCZUZ4O.cjs → chunk-U4KUW3RK.cjs} +19 -15
  288. package/dist/chunk-U4KUW3RK.cjs.map +1 -0
  289. package/dist/{chunk-AZQXPI5S.js → chunk-UBLMYH6C.js} +3 -3
  290. package/dist/{chunk-AZQXPI5S.js.map → chunk-UBLMYH6C.js.map} +1 -1
  291. package/dist/{chunk-P53432AK.cjs → chunk-UIBAIWUR.cjs} +4 -4
  292. package/dist/{chunk-P53432AK.cjs.map → chunk-UIBAIWUR.cjs.map} +1 -1
  293. package/dist/{chunk-UXYFM2XT.cjs → chunk-UQABXIQV.cjs} +6 -4
  294. package/dist/chunk-UQABXIQV.cjs.map +1 -0
  295. package/dist/chunk-US5R36TQ.js +17 -0
  296. package/dist/chunk-US5R36TQ.js.map +1 -0
  297. package/dist/{chunk-CS2ZYMYP.js → chunk-UZZJJ3HJ.js} +3 -3
  298. package/dist/{chunk-CS2ZYMYP.js.map → chunk-UZZJJ3HJ.js.map} +1 -1
  299. package/dist/{chunk-Y7RGUUTS.cjs → chunk-V3EKI3VV.cjs} +3 -3
  300. package/dist/{chunk-Y7RGUUTS.cjs.map → chunk-V3EKI3VV.cjs.map} +1 -1
  301. package/dist/{chunk-U4Y7ZXME.js → chunk-V64XIPYG.js} +6 -6
  302. package/dist/{chunk-U4Y7ZXME.js.map → chunk-V64XIPYG.js.map} +1 -1
  303. package/dist/{chunk-LIVC3WUU.cjs → chunk-VH34IZ7R.cjs} +3 -3
  304. package/dist/{chunk-LIVC3WUU.cjs.map → chunk-VH34IZ7R.cjs.map} +1 -1
  305. package/dist/{chunk-WNUAGRQN.cjs → chunk-VOAC5OKY.cjs} +4 -4
  306. package/dist/chunk-VOAC5OKY.cjs.map +1 -0
  307. package/dist/{chunk-H7ELUIF6.cjs → chunk-W53SZTPX.cjs} +10 -10
  308. package/dist/{chunk-H7ELUIF6.cjs.map → chunk-W53SZTPX.cjs.map} +1 -1
  309. package/dist/{chunk-4FH2JHUY.js → chunk-WAEOIEDI.js} +5 -5
  310. package/dist/{chunk-4FH2JHUY.js.map → chunk-WAEOIEDI.js.map} +1 -1
  311. package/dist/{chunk-ICMLLZKZ.js → chunk-WJE7UX2G.js} +4 -4
  312. package/dist/{chunk-ICMLLZKZ.js.map → chunk-WJE7UX2G.js.map} +1 -1
  313. package/dist/{chunk-DTOIO42M.js → chunk-WLRKE4HC.js} +9 -5
  314. package/dist/chunk-WLRKE4HC.js.map +1 -0
  315. package/dist/{chunk-7ZCNZUZK.cjs → chunk-WOURDD4U.cjs} +4 -4
  316. package/dist/{chunk-7ZCNZUZK.cjs.map → chunk-WOURDD4U.cjs.map} +1 -1
  317. package/dist/{chunk-OTM7RL2L.js → chunk-WSU36HJM.js} +4 -4
  318. package/dist/{chunk-OTM7RL2L.js.map → chunk-WSU36HJM.js.map} +1 -1
  319. package/dist/{chunk-TAYJSIOP.js → chunk-X4NXS42J.js} +5 -5
  320. package/dist/{chunk-TAYJSIOP.js.map → chunk-X4NXS42J.js.map} +1 -1
  321. package/dist/{chunk-2UTN3EFK.js → chunk-XALAQZCD.js} +5 -5
  322. package/dist/{chunk-2UTN3EFK.js.map → chunk-XALAQZCD.js.map} +1 -1
  323. package/dist/{chunk-RZUYCZ5D.cjs → chunk-XCFBMHQD.cjs} +6 -4
  324. package/dist/chunk-XCFBMHQD.cjs.map +1 -0
  325. package/dist/{chunk-NZHVDWOM.cjs → chunk-XEI5JG7C.cjs} +3 -3
  326. package/dist/{chunk-NZHVDWOM.cjs.map → chunk-XEI5JG7C.cjs.map} +1 -1
  327. package/dist/{chunk-O3F6DYWR.cjs → chunk-XG6J5MOK.cjs} +3 -3
  328. package/dist/{chunk-O3F6DYWR.cjs.map → chunk-XG6J5MOK.cjs.map} +1 -1
  329. package/dist/{chunk-GVMWJ4NI.js → chunk-XH24BGEK.js} +6 -6
  330. package/dist/{chunk-GVMWJ4NI.js.map → chunk-XH24BGEK.js.map} +1 -1
  331. package/dist/{chunk-3S5ED522.js → chunk-XO4GHRA2.js} +11 -8
  332. package/dist/chunk-XO4GHRA2.js.map +1 -0
  333. package/dist/{chunk-O5ORO2RX.cjs → chunk-XQF4HCOV.cjs} +13 -11
  334. package/dist/chunk-XQF4HCOV.cjs.map +1 -0
  335. package/dist/{chunk-IUCYRQ4J.js → chunk-YPYZZLZ5.js} +5 -5
  336. package/dist/{chunk-IUCYRQ4J.js.map → chunk-YPYZZLZ5.js.map} +1 -1
  337. package/dist/{chunk-NVXTHTJI.js → chunk-YTWMIVRI.js} +10 -10
  338. package/dist/chunk-YTWMIVRI.js.map +1 -0
  339. package/dist/{chunk-WZAKEJDL.js → chunk-YZW7HQXH.js} +13 -11
  340. package/dist/chunk-YZW7HQXH.js.map +1 -0
  341. package/dist/{chunk-AYBKPAI2.cjs → chunk-Z5MNYYUJ.cjs} +3 -3
  342. package/dist/{chunk-AYBKPAI2.cjs.map → chunk-Z5MNYYUJ.cjs.map} +1 -1
  343. package/dist/{chunk-GOE36IXL.js → chunk-Z6M3UELD.js} +3 -3
  344. package/dist/{chunk-GOE36IXL.js.map → chunk-Z6M3UELD.js.map} +1 -1
  345. package/dist/{chunk-PXZRYL5I.js → chunk-ZBXJDQXN.js} +12 -4
  346. package/dist/chunk-ZBXJDQXN.js.map +1 -0
  347. package/dist/{chunk-M5SEYDSS.cjs → chunk-ZDHLEHYR.cjs} +6 -6
  348. package/dist/{chunk-M5SEYDSS.cjs.map → chunk-ZDHLEHYR.cjs.map} +1 -1
  349. package/dist/{chunk-NPSKZ7ZB.cjs → chunk-ZFXCZ2QO.cjs} +12 -12
  350. package/dist/{chunk-NPSKZ7ZB.cjs.map → chunk-ZFXCZ2QO.cjs.map} +1 -1
  351. package/dist/{chunk-SCGTO3PX.js → chunk-ZHTK4IPQ.js} +3 -3
  352. package/dist/{chunk-SCGTO3PX.js.map → chunk-ZHTK4IPQ.js.map} +1 -1
  353. package/dist/{chunk-QF2FODTG.js → chunk-ZL5QVNKG.js} +10 -6
  354. package/dist/chunk-ZL5QVNKG.js.map +1 -0
  355. package/dist/code-block.cjs +4 -4
  356. package/dist/code-block.js +3 -3
  357. package/dist/code-view.cjs +2 -2
  358. package/dist/code-view.js +1 -1
  359. package/dist/command.cjs +3 -3
  360. package/dist/command.js +1 -1
  361. package/dist/composer.cjs +7 -6
  362. package/dist/composer.js +5 -4
  363. package/dist/content-renderer.cjs +6 -6
  364. package/dist/content-renderer.js +3 -3
  365. package/dist/context-menu.cjs +4 -3
  366. package/dist/context-menu.d.cts +2 -0
  367. package/dist/context-menu.d.ts +2 -0
  368. package/dist/context-menu.js +2 -1
  369. package/dist/date-picker.cjs +5 -5
  370. package/dist/date-picker.js +4 -4
  371. package/dist/drawer.cjs +3 -3
  372. package/dist/drawer.d.cts +10 -4
  373. package/dist/drawer.d.ts +10 -4
  374. package/dist/drawer.js +1 -1
  375. package/dist/dropdown.cjs +5 -4
  376. package/dist/dropdown.js +3 -2
  377. package/dist/editor.cjs +9 -8
  378. package/dist/editor.js +7 -6
  379. package/dist/emoji-select.cjs +2 -2
  380. package/dist/emoji-select.js +1 -1
  381. package/dist/eyebrow.cjs +2 -2
  382. package/dist/eyebrow.js +1 -1
  383. package/dist/faux-client.cjs +2 -2
  384. package/dist/faux-client.js +1 -1
  385. package/dist/field.cjs +3 -3
  386. package/dist/field.js +2 -2
  387. package/dist/file-browser.cjs +6 -5
  388. package/dist/file-browser.js +2 -1
  389. package/dist/file-upload.cjs +3 -3
  390. package/dist/file-upload.js +1 -1
  391. package/dist/image-viewer.cjs +3 -3
  392. package/dist/image-viewer.js +2 -2
  393. package/dist/index-list.cjs +2 -2
  394. package/dist/index-list.js +1 -1
  395. package/dist/index.cjs +252 -238
  396. package/dist/index.cjs.map +1 -1
  397. package/dist/index.d.cts +20 -1
  398. package/dist/index.d.ts +20 -1
  399. package/dist/index.js +83 -81
  400. package/dist/index.js.map +1 -1
  401. package/dist/input-tag.cjs +7 -6
  402. package/dist/input-tag.d.cts +6 -2
  403. package/dist/input-tag.d.ts +6 -2
  404. package/dist/input-tag.js +2 -1
  405. package/dist/input.cjs +10 -9
  406. package/dist/input.js +9 -8
  407. package/dist/inputs.cjs +42 -41
  408. package/dist/inputs.js +21 -20
  409. package/dist/json-editor.cjs +27 -26
  410. package/dist/json-editor.js +16 -15
  411. package/dist/magic-wand.cjs +8 -8
  412. package/dist/magic-wand.js +7 -7
  413. package/dist/marquee.cjs +2 -2
  414. package/dist/marquee.js +1 -1
  415. package/dist/media-viewer.cjs +5 -5
  416. package/dist/media-viewer.js +4 -4
  417. package/dist/menu.cjs +3 -3
  418. package/dist/menu.js +1 -1
  419. package/dist/mobile-menu.cjs +5 -4
  420. package/dist/mobile-menu.d.cts +2 -1
  421. package/dist/mobile-menu.d.ts +2 -1
  422. package/dist/mobile-menu.js +3 -2
  423. package/dist/mode.cjs +3 -3
  424. package/dist/mode.js +2 -2
  425. package/dist/multi-switch.cjs +6 -5
  426. package/dist/multi-switch.js +5 -4
  427. package/dist/number-field.cjs +11 -10
  428. package/dist/number-field.js +10 -9
  429. package/dist/otp-input.cjs +3 -2
  430. package/dist/otp-input.js +2 -1
  431. package/dist/pagination.cjs +2 -2
  432. package/dist/pagination.js +1 -1
  433. package/dist/paste-pills.cjs +17 -16
  434. package/dist/paste-pills.js +4 -3
  435. package/dist/pdf-viewer.cjs +3 -3
  436. package/dist/pdf-viewer.js +2 -2
  437. package/dist/phone-input.cjs +39 -0
  438. package/dist/phone-input.cjs.map +1 -0
  439. package/dist/phone-input.d.cts +139 -0
  440. package/dist/phone-input.d.ts +139 -0
  441. package/dist/phone-input.js +22 -0
  442. package/dist/phone-input.js.map +1 -0
  443. package/dist/popover.cjs +5 -4
  444. package/dist/popover.js +3 -2
  445. package/dist/profile.cjs +3 -3
  446. package/dist/profile.js +2 -2
  447. package/dist/progress.cjs +2 -2
  448. package/dist/progress.js +1 -1
  449. package/dist/prompt-input.cjs +10 -9
  450. package/dist/prompt-input.js +7 -6
  451. package/dist/qr-code.cjs +8 -8
  452. package/dist/qr-code.js +2 -2
  453. package/dist/radio-group.cjs +5 -5
  454. package/dist/radio-group.js +4 -4
  455. package/dist/reason-tag.cjs +6 -5
  456. package/dist/reason-tag.js +5 -4
  457. package/dist/reorderable-grid.cjs +4 -3
  458. package/dist/reorderable-grid.js +2 -1
  459. package/dist/resizable-panels.cjs +3 -2
  460. package/dist/resizable-panels.js +2 -1
  461. package/dist/select.cjs +8 -7
  462. package/dist/select.js +7 -6
  463. package/dist/separator.cjs +2 -2
  464. package/dist/separator.js +1 -1
  465. package/dist/sidebar.cjs +6 -5
  466. package/dist/sidebar.js +4 -3
  467. package/dist/slider.cjs +5 -5
  468. package/dist/slider.js +4 -4
  469. package/dist/stat-list.cjs +2 -2
  470. package/dist/stat-list.d.cts +5 -2
  471. package/dist/stat-list.d.ts +5 -2
  472. package/dist/stat-list.js +1 -1
  473. package/dist/stepper.cjs +3 -2
  474. package/dist/stepper.js +2 -1
  475. package/dist/styles.css +24 -0
  476. package/dist/styles.css.map +1 -1
  477. package/dist/switch.cjs +3 -3
  478. package/dist/switch.js +2 -2
  479. package/dist/table.cjs +11 -11
  480. package/dist/table.js +1 -1
  481. package/dist/tabs.cjs +4 -3
  482. package/dist/tabs.js +2 -1
  483. package/dist/textarea.cjs +6 -6
  484. package/dist/textarea.js +5 -5
  485. package/dist/time-grid.cjs +3 -2
  486. package/dist/time-grid.js +2 -1
  487. package/dist/time-picker.cjs +2 -2
  488. package/dist/time-picker.js +1 -1
  489. package/dist/timeline.cjs +4 -4
  490. package/dist/timeline.js +1 -1
  491. package/dist/toast.cjs +4 -3
  492. package/dist/toast.d.cts +6 -2
  493. package/dist/toast.d.ts +6 -2
  494. package/dist/toast.js +2 -1
  495. package/dist/tooltip.cjs +4 -3
  496. package/dist/tooltip.js +3 -2
  497. package/dist/tree-nav.cjs +3 -3
  498. package/dist/tree-nav.js +1 -1
  499. package/docs/Dropdown.md +1 -1
  500. package/docs/InputTag.md +1 -1
  501. package/docs/MobileMenu.md +2 -2
  502. package/docs/PhoneInput.md +104 -0
  503. package/docs/Popover.md +1 -1
  504. package/docs/ReorderableGrid.md +2 -0
  505. package/docs/ResizablePanels.md +2 -0
  506. package/docs/Toast.md +2 -2
  507. package/package.json +11 -1
  508. package/dist/chunk-25HRO7HQ.cjs.map +0 -1
  509. package/dist/chunk-2O5UXH5R.cjs.map +0 -1
  510. package/dist/chunk-37D5PYEF.js.map +0 -1
  511. package/dist/chunk-3S5ED522.js.map +0 -1
  512. package/dist/chunk-4DL2U23D.cjs.map +0 -1
  513. package/dist/chunk-5EW47IH7.js.map +0 -1
  514. package/dist/chunk-5TP642UT.js.map +0 -1
  515. package/dist/chunk-6GVOW3UL.js.map +0 -1
  516. package/dist/chunk-AJPYGRLA.cjs.map +0 -1
  517. package/dist/chunk-BXPLERIJ.js.map +0 -1
  518. package/dist/chunk-BYO5RUDE.cjs.map +0 -1
  519. package/dist/chunk-CEFK54WP.cjs.map +0 -1
  520. package/dist/chunk-CQ7QXZLR.cjs.map +0 -1
  521. package/dist/chunk-DJYG7DXS.js.map +0 -1
  522. package/dist/chunk-DTOIO42M.js.map +0 -1
  523. package/dist/chunk-DXZCKDYS.js.map +0 -1
  524. package/dist/chunk-ESCIXKFT.js.map +0 -1
  525. package/dist/chunk-EUVWYDFN.js.map +0 -1
  526. package/dist/chunk-F4OYQ2XZ.js.map +0 -1
  527. package/dist/chunk-FKZB27OM.cjs.map +0 -1
  528. package/dist/chunk-FR4RHVPR.js.map +0 -1
  529. package/dist/chunk-FVQO75KY.cjs.map +0 -1
  530. package/dist/chunk-GDF6XTHC.js.map +0 -1
  531. package/dist/chunk-GR2WKBER.js.map +0 -1
  532. package/dist/chunk-GTS3QA7M.js.map +0 -1
  533. package/dist/chunk-HLI6RB5V.cjs.map +0 -1
  534. package/dist/chunk-HNJXBMHI.cjs.map +0 -1
  535. package/dist/chunk-J2DI6RMR.cjs.map +0 -1
  536. package/dist/chunk-JY2RC6I4.js.map +0 -1
  537. package/dist/chunk-KFA7B6WP.cjs.map +0 -1
  538. package/dist/chunk-KOAMRCSC.cjs.map +0 -1
  539. package/dist/chunk-KOTUFZJ6.cjs.map +0 -1
  540. package/dist/chunk-LFC2DL6H.cjs.map +0 -1
  541. package/dist/chunk-LKN7FYW6.js.map +0 -1
  542. package/dist/chunk-MI57NAKF.js.map +0 -1
  543. package/dist/chunk-MKGWHSNV.cjs.map +0 -1
  544. package/dist/chunk-MLZGGAXQ.js.map +0 -1
  545. package/dist/chunk-MPCZUZ4O.cjs.map +0 -1
  546. package/dist/chunk-MQ6VGG62.js.map +0 -1
  547. package/dist/chunk-NSJBVV7R.js.map +0 -1
  548. package/dist/chunk-NVXTHTJI.js.map +0 -1
  549. package/dist/chunk-O5ORO2RX.cjs.map +0 -1
  550. package/dist/chunk-OASSZI6M.cjs.map +0 -1
  551. package/dist/chunk-PCNJJVTF.cjs.map +0 -1
  552. package/dist/chunk-PDVU2PXR.js.map +0 -1
  553. package/dist/chunk-PJNUGSKI.js.map +0 -1
  554. package/dist/chunk-PM5I5ZHK.cjs.map +0 -1
  555. package/dist/chunk-PXZRYL5I.js.map +0 -1
  556. package/dist/chunk-QF2FODTG.js.map +0 -1
  557. package/dist/chunk-QGY5FPVM.js.map +0 -1
  558. package/dist/chunk-QP6VNKLW.cjs.map +0 -1
  559. package/dist/chunk-QTS4Q2NK.js.map +0 -1
  560. package/dist/chunk-RANTYGKW.js.map +0 -1
  561. package/dist/chunk-RSLZL6VP.js.map +0 -1
  562. package/dist/chunk-RWU2MFUL.js.map +0 -1
  563. package/dist/chunk-RZUYCZ5D.cjs.map +0 -1
  564. package/dist/chunk-SKMORSBO.cjs.map +0 -1
  565. package/dist/chunk-SSCW67KA.cjs.map +0 -1
  566. package/dist/chunk-SXXDTW7S.js.map +0 -1
  567. package/dist/chunk-TFX4LL7V.js.map +0 -1
  568. package/dist/chunk-TMQF2CRN.js.map +0 -1
  569. package/dist/chunk-UK6BGM74.cjs.map +0 -1
  570. package/dist/chunk-UXYFM2XT.cjs.map +0 -1
  571. package/dist/chunk-VZTXUYPM.cjs.map +0 -1
  572. package/dist/chunk-WMANILKC.cjs.map +0 -1
  573. package/dist/chunk-WNUAGRQN.cjs.map +0 -1
  574. package/dist/chunk-WZAKEJDL.js.map +0 -1
  575. package/dist/chunk-X2A3NAJW.js.map +0 -1
  576. package/dist/chunk-XZOBGKZL.cjs.map +0 -1
  577. package/dist/chunk-Y3QAEF2P.cjs.map +0 -1
  578. package/dist/chunk-YQZB5Z7C.cjs.map +0 -1
  579. package/dist/chunk-Z44A7NPD.cjs.map +0 -1
  580. package/dist/chunk-Z4UXLQSK.cjs.map +0 -1
  581. package/dist/chunk-Z7SQMQTF.cjs.map +0 -1
  582. package/dist/chunk-ZPBKRJMH.js.map +0 -1
  583. package/dist/chunk-ZVDW2VX5.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/inputs/NumberField/NumberField.tsx"],"names":["k","forwardRef","useControllableState","useState","useRef","useEffect","jsxs","jsx","Input"],"mappings":"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","file":"chunk-XBFTO64U.cjs","sourcesContent":["import { forwardRef, useEffect, useRef, useState, type KeyboardEvent } from \"react\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { Input } from \"../Input\";\nimport type { NumberFieldProps } from \"./NumberField.types\";\n\n/**\n * Plain decimal notation only. `Number()` alone is not safe here: it reads \"0x10\"\n * as 16 and \"Infinity\" as a number, and those are wrong numbers to emit.\n */\nconst NUMBER = /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)([eE][+-]?\\d+)?$/;\nconst WHOLE = /^[+-]?\\d+$/;\n\n/** The number the text says, or `null` if it does not say one. */\nfunction parseNumber(text: string): number | null {\n const trimmed = text.trim();\n if (!NUMBER.test(trimmed)) return null;\n\n const n = Number(trimmed);\n if (!Number.isFinite(n)) return null;\n // Past 2^53 a whole number rounds to a different one than was typed.\n if (WHOLE.test(trimmed) && !Number.isSafeInteger(n)) return null;\n\n return n === 0 ? 0 : n; // -0 is 0\n}\n\nfunction formatNumber(value: number | null): string {\n return value === null ? \"\" : String(value);\n}\n\n/** Decimal places in a number, so stepping can round away floating-point dust. */\nfunction decimals(n: number): number {\n const [mantissa, exponent] = String(n).split(\"e\");\n const places = (mantissa.split(\".\")[1] ?? \"\").length - Number(exponent ?? 0);\n return Math.min(Math.max(places, 0), 100);\n}\n\nfunction stepped(\n current: number | null,\n direction: 1 | -1,\n min: number | undefined,\n max: number | undefined,\n step: number,\n): number {\n const base = min ?? 0;\n const places = Math.max(decimals(step), decimals(base));\n const at = (k: number) => Number((base + k * step).toFixed(places));\n const position = ((current ?? 0) - base) / step;\n const nudge = 1e-9;\n\n // The next grid line in that direction, so an off-grid value lands on the grid.\n let k =\n direction === 1\n ? Math.floor(position + nudge) + 1\n : Math.ceil(position - nudge) - 1;\n\n if (max !== undefined && at(k) > max) k = Math.floor((max - base) / step + nudge);\n if (min !== undefined && at(k) < min) k = 0;\n\n return at(k);\n}\n\nexport const NumberField = forwardRef<HTMLInputElement, NumberFieldProps>(\n (\n {\n value,\n defaultValue = null,\n onValueChange,\n min,\n max,\n step,\n messages,\n name,\n form,\n inputMode,\n onKeyDown,\n onBlur,\n ...rest\n },\n ref,\n ) => {\n const [held, setValue] = useControllableState<number | null>(\n value,\n defaultValue,\n onValueChange,\n );\n // A host's NaN or Infinity has no text form, so it reads as no number.\n const current = typeof held === \"number\" && Number.isFinite(held) ? held : null;\n\n /*\n * The text is held apart from the number because \"1.\" and \"-\" have no number\n * that displays them. It only moves on its own when the number moved to\n * something the text does not say: a change from outside, or a parent refusing\n * this one.\n */\n const [text, setText] = useState(() => formatNumber(current));\n if (parseNumber(text) !== current && text !== formatNumber(current)) {\n setText(formatNumber(current));\n }\n\n const stepSize = typeof step === \"number\" && step > 0 ? step : 1;\n\n const problem = (() => {\n if (text.trim() !== \"\" && parseNumber(text) === null) {\n return messages?.invalid ?? \"Enter a number.\";\n }\n if (current === null) return \"\";\n if (min !== undefined && current < min) return messages?.min ?? `Must be at least ${min}.`;\n if (max !== undefined && current > max) return messages?.max ?? `Must be at most ${max}.`;\n if (typeof step === \"number\" && step > 0) {\n const position = (current - (min ?? 0)) / step;\n if (Math.abs(position - Math.round(position)) > 1e-9) {\n return messages?.step ?? `Must be in steps of ${step}.`;\n }\n }\n return \"\";\n })();\n\n // The text input has no min/max/step of its own, so a form learns of them here.\n // Runs every render: click-to-edit mounts a fresh input.\n const inputRef = useRef<HTMLInputElement | null>(null);\n useEffect(() => {\n inputRef.current?.setCustomValidity(problem);\n });\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || rest.disabled || rest.readOnly) return;\n if (e.key !== \"ArrowUp\" && e.key !== \"ArrowDown\") return;\n\n e.preventDefault(); // or the caret jumps to the end of the text\n const next = stepped(current, e.key === \"ArrowUp\" ? 1 : -1, min, max, stepSize);\n setText(formatNumber(next));\n if (next !== current) setValue(next);\n };\n\n return (\n <div data-react-fancy-number-field=\"\">\n <Input\n aria-invalid={problem ? true : undefined}\n aria-valuemax={max}\n aria-valuemin={min}\n aria-valuenow={current ?? undefined}\n inputMode={\n inputMode ??\n // A numeric or decimal keypad has no minus sign on iOS, so those are\n // only offered where a negative number cannot be valid.\n (min !== undefined && min >= 0\n ? typeof step === \"number\" && Number.isInteger(step)\n ? \"numeric\"\n : \"decimal\"\n : \"text\")\n }\n role=\"spinbutton\"\n {...rest}\n ref={(el) => {\n inputRef.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n // Text, not `number`: a browser reports \"-\" and \"1e\" in a number input as\n // an empty value, indistinguishable from blank, and turns the wheel into\n // a value change on a focused field. Neither applies to a text input.\n type=\"text\"\n value={text}\n onValueChange={(next) => {\n setText(next);\n const parsed = parseNumber(next);\n if (parsed !== current) setValue(parsed);\n }}\n onKeyDown={handleKeyDown}\n onBlur={(e) => {\n setText(formatNumber(current));\n onBlur?.(e);\n }}\n />\n {/* What a native submit posts: the number, never the half-typed text. */}\n {name ? (\n <input\n type=\"hidden\"\n name={name}\n form={form}\n disabled={rest.disabled}\n value={formatNumber(current)}\n />\n ) : null}\n </div>\n );\n },\n);\n\nNumberField.displayName = \"NumberField\";\n"]}
1
+ {"version":3,"sources":["../src/components/inputs/NumberField/NumberField.tsx"],"names":["k","forwardRef","useControllableState","useState","useRef","useEffect","jsxs","jsx","Input"],"mappings":"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","file":"chunk-EDIB6V6Y.cjs","sourcesContent":["import { forwardRef, useEffect, useRef, useState, type KeyboardEvent } from \"react\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { Input } from \"../Input\";\nimport type { NumberFieldProps } from \"./NumberField.types\";\n\n/**\n * Plain decimal notation only. `Number()` alone is not safe here: it reads \"0x10\"\n * as 16 and \"Infinity\" as a number, and those are wrong numbers to emit.\n */\nconst NUMBER = /^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)([eE][+-]?\\d+)?$/;\nconst WHOLE = /^[+-]?\\d+$/;\n\n/** The number the text says, or `null` if it does not say one. */\nfunction parseNumber(text: string): number | null {\n const trimmed = text.trim();\n if (!NUMBER.test(trimmed)) return null;\n\n const n = Number(trimmed);\n if (!Number.isFinite(n)) return null;\n // Past 2^53 a whole number rounds to a different one than was typed.\n if (WHOLE.test(trimmed) && !Number.isSafeInteger(n)) return null;\n\n return n === 0 ? 0 : n; // -0 is 0\n}\n\nfunction formatNumber(value: number | null): string {\n return value === null ? \"\" : String(value);\n}\n\n/** Decimal places in a number, so stepping can round away floating-point dust. */\nfunction decimals(n: number): number {\n const [mantissa, exponent] = String(n).split(\"e\");\n const places = (mantissa.split(\".\")[1] ?? \"\").length - Number(exponent ?? 0);\n return Math.min(Math.max(places, 0), 100);\n}\n\nfunction stepped(\n current: number | null,\n direction: 1 | -1,\n min: number | undefined,\n max: number | undefined,\n step: number,\n): number {\n const base = min ?? 0;\n const places = Math.max(decimals(step), decimals(base));\n const at = (k: number) => Number((base + k * step).toFixed(places));\n const position = ((current ?? 0) - base) / step;\n const nudge = 1e-9;\n\n // The next grid line in that direction, so an off-grid value lands on the grid.\n let k =\n direction === 1\n ? Math.floor(position + nudge) + 1\n : Math.ceil(position - nudge) - 1;\n\n if (max !== undefined && at(k) > max) k = Math.floor((max - base) / step + nudge);\n if (min !== undefined && at(k) < min) k = 0;\n\n return at(k);\n}\n\nexport const NumberField = forwardRef<HTMLInputElement, NumberFieldProps>(\n (\n {\n value,\n defaultValue = null,\n onValueChange,\n min,\n max,\n step,\n messages,\n name,\n form,\n inputMode,\n onKeyDown,\n onBlur,\n ...rest\n },\n ref,\n ) => {\n const [held, setValue] = useControllableState<number | null>(\n value,\n defaultValue,\n onValueChange,\n );\n // A host's NaN or Infinity has no text form, so it reads as no number.\n const current = typeof held === \"number\" && Number.isFinite(held) ? held : null;\n\n /*\n * The text is held apart from the number because \"1.\" and \"-\" have no number\n * that displays them. It only moves on its own when the number moved to\n * something the text does not say: a change from outside, or a parent refusing\n * this one.\n */\n const [text, setText] = useState(() => formatNumber(current));\n if (parseNumber(text) !== current && text !== formatNumber(current)) {\n setText(formatNumber(current));\n }\n\n const stepSize = typeof step === \"number\" && step > 0 ? step : 1;\n\n const problem = (() => {\n if (text.trim() !== \"\" && parseNumber(text) === null) {\n return messages?.invalid ?? \"Enter a number.\";\n }\n if (current === null) return \"\";\n if (min !== undefined && current < min) return messages?.min ?? `Must be at least ${min}.`;\n if (max !== undefined && current > max) return messages?.max ?? `Must be at most ${max}.`;\n if (typeof step === \"number\" && step > 0) {\n const position = (current - (min ?? 0)) / step;\n if (Math.abs(position - Math.round(position)) > 1e-9) {\n return messages?.step ?? `Must be in steps of ${step}.`;\n }\n }\n return \"\";\n })();\n\n // The text input has no min/max/step of its own, so a form learns of them here.\n // Runs every render: click-to-edit mounts a fresh input.\n const inputRef = useRef<HTMLInputElement | null>(null);\n useEffect(() => {\n inputRef.current?.setCustomValidity(problem);\n });\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n onKeyDown?.(e);\n if (e.defaultPrevented || rest.disabled || rest.readOnly) return;\n if (e.key !== \"ArrowUp\" && e.key !== \"ArrowDown\") return;\n\n e.preventDefault(); // or the caret jumps to the end of the text\n const next = stepped(current, e.key === \"ArrowUp\" ? 1 : -1, min, max, stepSize);\n setText(formatNumber(next));\n if (next !== current) setValue(next);\n };\n\n return (\n <div data-react-fancy-number-field=\"\">\n <Input\n aria-invalid={problem ? true : undefined}\n aria-valuemax={max}\n aria-valuemin={min}\n aria-valuenow={current ?? undefined}\n inputMode={\n inputMode ??\n // A numeric or decimal keypad has no minus sign on iOS, so those are\n // only offered where a negative number cannot be valid.\n (min !== undefined && min >= 0\n ? typeof step === \"number\" && Number.isInteger(step)\n ? \"numeric\"\n : \"decimal\"\n : \"text\")\n }\n role=\"spinbutton\"\n {...rest}\n ref={(el) => {\n inputRef.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n // Text, not `number`: a browser reports \"-\" and \"1e\" in a number input as\n // an empty value, indistinguishable from blank, and turns the wheel into\n // a value change on a focused field. Neither applies to a text input.\n type=\"text\"\n value={text}\n onValueChange={(next) => {\n setText(next);\n const parsed = parseNumber(next);\n if (parsed !== current) setValue(parsed);\n }}\n onKeyDown={handleKeyDown}\n onBlur={(e) => {\n setText(formatNumber(current));\n onBlur?.(e);\n }}\n />\n {/* What a native submit posts: the number, never the half-typed text. */}\n {name ? (\n <input\n type=\"hidden\"\n name={name}\n form={form}\n disabled={rest.disabled}\n value={formatNumber(current)}\n />\n ) : null}\n </div>\n );\n },\n);\n\nNumberField.displayName = \"NumberField\";\n"]}
@@ -2,18 +2,18 @@ import { cn } from './chunk-MMW2JGKZ.js';
2
2
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
3
3
 
4
4
  var insidePaddingLeft = {
5
- xs: "[&_input]:pl-7 [&_select]:pl-7 [&_textarea]:pl-7",
6
- sm: "[&_input]:pl-8 [&_select]:pl-8 [&_textarea]:pl-8",
7
- md: "[&_input]:pl-9 [&_select]:pl-9 [&_textarea]:pl-9",
8
- lg: "[&_input]:pl-10 [&_select]:pl-10 [&_textarea]:pl-10",
9
- xl: "[&_input]:pl-11 [&_select]:pl-11 [&_textarea]:pl-11"
5
+ xs: "[&_input]:ps-7 [&_select]:ps-7 [&_textarea]:ps-7",
6
+ sm: "[&_input]:ps-8 [&_select]:ps-8 [&_textarea]:ps-8",
7
+ md: "[&_input]:ps-9 [&_select]:ps-9 [&_textarea]:ps-9",
8
+ lg: "[&_input]:ps-10 [&_select]:ps-10 [&_textarea]:ps-10",
9
+ xl: "[&_input]:ps-11 [&_select]:ps-11 [&_textarea]:ps-11"
10
10
  };
11
11
  var insidePaddingRight = {
12
- xs: "[&_input]:pr-7 [&_select]:pr-7 [&_textarea]:pr-7",
13
- sm: "[&_input]:pr-8 [&_select]:pr-8 [&_textarea]:pr-8",
14
- md: "[&_input]:pr-9 [&_select]:pr-9 [&_textarea]:pr-9",
15
- lg: "[&_input]:pr-10 [&_select]:pr-10 [&_textarea]:pr-10",
16
- xl: "[&_input]:pr-11 [&_select]:pr-11 [&_textarea]:pr-11"
12
+ xs: "[&_input]:pe-7 [&_select]:pe-7 [&_textarea]:pe-7",
13
+ sm: "[&_input]:pe-8 [&_select]:pe-8 [&_textarea]:pe-8",
14
+ md: "[&_input]:pe-9 [&_select]:pe-9 [&_textarea]:pe-9",
15
+ lg: "[&_input]:pe-10 [&_select]:pe-10 [&_textarea]:pe-10",
16
+ xl: "[&_input]:pe-11 [&_select]:pe-11 [&_textarea]:pe-11"
17
17
  };
18
18
  var affixOutsideClasses = "inline-flex items-center border border-[color:var(--fancy-border-strong,var(--color-zinc-300))] bg-zinc-50 px-3 text-sm text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:border-[color:var(--fancy-border-strong-dark,var(--color-zinc-700))] dark:bg-zinc-800 dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]";
19
19
  function InputWrapper({
@@ -34,7 +34,7 @@ function InputWrapper({
34
34
  }
35
35
  if (hasOutside) {
36
36
  return /* @__PURE__ */ jsxs("div", { "data-react-fancy-input-wrapper": "", className: "flex", children: [
37
- hasOutsidePrefix && /* @__PURE__ */ jsx("span", { className: cn(affixOutsideClasses, "rounded-l-lg border-r-0"), children: prefix }),
37
+ hasOutsidePrefix && /* @__PURE__ */ jsx("span", { className: cn(affixOutsideClasses, "rounded-s-lg border-e-0"), children: prefix }),
38
38
  /* @__PURE__ */ jsxs(
39
39
  "div",
40
40
  {
@@ -43,29 +43,29 @@ function InputWrapper({
43
43
  hasInsidePrefix && "relative"
44
44
  ),
45
45
  children: [
46
- hasInsidePrefix && /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]", children: prefix }),
46
+ hasInsidePrefix && /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute start-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]", children: prefix }),
47
47
  /* @__PURE__ */ jsx(
48
48
  "div",
49
49
  {
50
50
  className: cn(
51
51
  "w-full [&>*]:w-full",
52
- hasOutsidePrefix && !hasOutsideSuffix && "[&_input]:rounded-l-none [&_select]:rounded-l-none [&_textarea]:rounded-l-none",
53
- !hasOutsidePrefix && hasOutsideSuffix && "[&_input]:rounded-r-none [&_select]:rounded-r-none [&_textarea]:rounded-r-none",
52
+ hasOutsidePrefix && !hasOutsideSuffix && "[&_input]:rounded-s-none [&_select]:rounded-s-none [&_textarea]:rounded-s-none",
53
+ !hasOutsidePrefix && hasOutsideSuffix && "[&_input]:rounded-e-none [&_select]:rounded-e-none [&_textarea]:rounded-e-none",
54
54
  hasOutsidePrefix && hasOutsideSuffix && "[&_input]:rounded-none [&_select]:rounded-none [&_textarea]:rounded-none",
55
55
  hasInsidePrefix && insidePaddingLeft[size]
56
56
  ),
57
57
  children
58
58
  }
59
59
  ),
60
- hasInsideSuffix && /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]", children: suffix })
60
+ hasInsideSuffix && /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute end-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]", children: suffix })
61
61
  ]
62
62
  }
63
63
  ),
64
- hasOutsideSuffix && /* @__PURE__ */ jsx("span", { className: cn(affixOutsideClasses, "rounded-r-lg border-l-0"), children: suffix })
64
+ hasOutsideSuffix && /* @__PURE__ */ jsx("span", { className: cn(affixOutsideClasses, "rounded-e-lg border-s-0"), children: suffix })
65
65
  ] });
66
66
  }
67
67
  return /* @__PURE__ */ jsxs("div", { "data-react-fancy-input-wrapper": "", className: "relative flex items-center", children: [
68
- hasInsidePrefix && /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute left-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]", children: prefix }),
68
+ hasInsidePrefix && /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute start-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]", children: prefix }),
69
69
  /* @__PURE__ */ jsx(
70
70
  "div",
71
71
  {
@@ -77,10 +77,10 @@ function InputWrapper({
77
77
  children
78
78
  }
79
79
  ),
80
- hasInsideSuffix && /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute right-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]", children: suffix })
80
+ hasInsideSuffix && /* @__PURE__ */ jsx("span", { className: "pointer-events-none absolute end-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]", children: suffix })
81
81
  ] });
82
82
  }
83
83
 
84
84
  export { InputWrapper };
85
- //# sourceMappingURL=chunk-KXYMMNNV.js.map
86
- //# sourceMappingURL=chunk-KXYMMNNV.js.map
85
+ //# sourceMappingURL=chunk-EDIX6EXQ.js.map
86
+ //# sourceMappingURL=chunk-EDIX6EXQ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/inputs/InputWrapper.tsx"],"names":[],"mappings":";;;AAsBA,IAAM,iBAAA,GAA0C;AAAA,EAC9C,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,qDAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,kBAAA,GAA2C;AAAA,EAC/C,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,kDAAA;AAAA,EACJ,EAAA,EAAI,qDAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,mBAAA,GACJ,oVAAA;AAEK,SAAS,YAAA,CAAa;AAAA,EAC3B,QAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,cAAA,GAAiB,QAAA;AAAA,EACjB,cAAA,GAAiB,QAAA;AAAA,EACjB,IAAA,GAAO;AACT,CAAA,EAAsB;AACpB,EAAA,MAAM,eAAA,GAAkB,UAAU,cAAA,KAAmB,QAAA;AACrD,EAAA,MAAM,eAAA,GAAkB,UAAU,cAAA,KAAmB,QAAA;AACrD,EAAA,MAAM,gBAAA,GAAmB,UAAU,cAAA,KAAmB,SAAA;AACtD,EAAA,MAAM,gBAAA,GAAmB,UAAU,cAAA,KAAmB,SAAA;AACtD,EAAA,MAAM,aAAa,gBAAA,IAAoB,gBAAA;AAEvC,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,MAAA,EAAQ;AACtB,IAAA,uCAAU,QAAA,EAAS,CAAA;AAAA,EACrB;AAEA,EAAA,IAAI,UAAA,EAAY;AACd,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,gCAAA,EAA+B,EAAA,EAAG,WAAU,MAAA,EAC9C,QAAA,EAAA;AAAA,MAAA,gBAAA,wBACE,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,mBAAA,EAAqB,yBAAyB,GAC/D,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,sBAEF,IAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,SAAA,EAAW,EAAA;AAAA,YACT,mCAAA;AAAA,YACA,eAAA,IAAmB;AAAA,WACrB;AAAA,UAEC,QAAA,EAAA;AAAA,YAAA,eAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0KAAA,EACb,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,4BAEF,GAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,qBAAA;AAAA,kBACA,gBAAA,IAAoB,CAAC,gBAAA,IAAoB,gFAAA;AAAA,kBACzC,CAAC,oBAAoB,gBAAA,IAAoB,gFAAA;AAAA,kBACzC,oBAAoB,gBAAA,IAAoB,0EAAA;AAAA,kBACxC,eAAA,IAAmB,kBAAkB,IAAI;AAAA,iBAC3C;AAAA,gBAEC;AAAA;AAAA,aACH;AAAA,YACC,eAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6KACb,QAAA,EAAA,MAAA,EACH;AAAA;AAAA;AAAA,OAEJ;AAAA,MACC,gBAAA,wBACE,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,mBAAA,EAAqB,yBAAyB,GAC/D,QAAA,EAAA,MAAA,EACH;AAAA,KAAA,EAEJ,CAAA;AAAA,EAEJ;AAGA,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,gCAAA,EAA+B,EAAA,EAAG,WAAU,4BAAA,EAC9C,QAAA,EAAA;AAAA,IAAA,eAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,0KAAA,EACb,QAAA,EAAA,MAAA,EACH,CAAA;AAAA,oBAEF,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,QAAA;AAAA,UACA,eAAA,IAAmB,kBAAkB,IAAI,CAAA;AAAA,UACzC,eAAA,IAAmB,mBAAmB,IAAI;AAAA,SAC5C;AAAA,QAEC;AAAA;AAAA,KACH;AAAA,IACC,eAAA,oBACC,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,6KACb,QAAA,EAAA,MAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ","file":"chunk-KXYMMNNV.js","sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { AffixPosition } from \"./inputs.types\";\nimport type { Size } from \"../../utils/types\";\n\ninterface InputWrapperProps {\n children: ReactNode;\n prefix?: ReactNode;\n suffix?: ReactNode;\n prefixPosition?: AffixPosition;\n suffixPosition?: AffixPosition;\n size?: Size;\n /** Extra padding className to apply to the input when affixes are \"inside\" */\n insidePrefixPadding?: string;\n insideSuffixPadding?: string;\n}\n\n// NOTE: these must be COMPLETE, static class strings. Tailwind only detects\n// utilities it can see verbatim in the source — building the arbitrary variant\n// at runtime (e.g. `[&_input]:${\"pl-9\"}`) means `[&_input]:pl-9` is never\n// emitted to CSS, so the inside affix gets no padding and overlaps the text\n// (issue #6). Keep input/select/textarea spelled out here.\nconst insidePaddingLeft: Record<Size, string> = {\n xs: \"[&_input]:pl-7 [&_select]:pl-7 [&_textarea]:pl-7\",\n sm: \"[&_input]:pl-8 [&_select]:pl-8 [&_textarea]:pl-8\",\n md: \"[&_input]:pl-9 [&_select]:pl-9 [&_textarea]:pl-9\",\n lg: \"[&_input]:pl-10 [&_select]:pl-10 [&_textarea]:pl-10\",\n xl: \"[&_input]:pl-11 [&_select]:pl-11 [&_textarea]:pl-11\",\n};\n\nconst insidePaddingRight: Record<Size, string> = {\n xs: \"[&_input]:pr-7 [&_select]:pr-7 [&_textarea]:pr-7\",\n sm: \"[&_input]:pr-8 [&_select]:pr-8 [&_textarea]:pr-8\",\n md: \"[&_input]:pr-9 [&_select]:pr-9 [&_textarea]:pr-9\",\n lg: \"[&_input]:pr-10 [&_select]:pr-10 [&_textarea]:pr-10\",\n xl: \"[&_input]:pr-11 [&_select]:pr-11 [&_textarea]:pr-11\",\n};\n\nconst affixOutsideClasses =\n \"inline-flex items-center border border-[color:var(--fancy-border-strong,var(--color-zinc-300))] bg-zinc-50 px-3 text-sm text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:border-[color:var(--fancy-border-strong-dark,var(--color-zinc-700))] dark:bg-zinc-800 dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\";\n\nexport function InputWrapper({\n children,\n prefix,\n suffix,\n prefixPosition = \"inside\",\n suffixPosition = \"inside\",\n size = \"md\",\n}: InputWrapperProps) {\n const hasInsidePrefix = prefix && prefixPosition === \"inside\";\n const hasInsideSuffix = suffix && suffixPosition === \"inside\";\n const hasOutsidePrefix = prefix && prefixPosition === \"outside\";\n const hasOutsideSuffix = suffix && suffixPosition === \"outside\";\n const hasOutside = hasOutsidePrefix || hasOutsideSuffix;\n\n if (!prefix && !suffix) {\n return <>{children}</>;\n }\n\n if (hasOutside) {\n return (\n <div data-react-fancy-input-wrapper=\"\" className=\"flex\">\n {hasOutsidePrefix && (\n <span className={cn(affixOutsideClasses, \"rounded-l-lg border-r-0\")}>\n {prefix}\n </span>\n )}\n <div\n className={cn(\n \"relative flex flex-1 items-center\",\n hasInsidePrefix && \"relative\",\n )}\n >\n {hasInsidePrefix && (\n <span className=\"pointer-events-none absolute left-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {prefix}\n </span>\n )}\n <div\n className={cn(\n \"w-full [&>*]:w-full\",\n hasOutsidePrefix && !hasOutsideSuffix && \"[&_input]:rounded-l-none [&_select]:rounded-l-none [&_textarea]:rounded-l-none\",\n !hasOutsidePrefix && hasOutsideSuffix && \"[&_input]:rounded-r-none [&_select]:rounded-r-none [&_textarea]:rounded-r-none\",\n hasOutsidePrefix && hasOutsideSuffix && \"[&_input]:rounded-none [&_select]:rounded-none [&_textarea]:rounded-none\",\n hasInsidePrefix && insidePaddingLeft[size],\n )}\n >\n {children}\n </div>\n {hasInsideSuffix && (\n <span className=\"pointer-events-none absolute right-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {suffix}\n </span>\n )}\n </div>\n {hasOutsideSuffix && (\n <span className={cn(affixOutsideClasses, \"rounded-r-lg border-l-0\")}>\n {suffix}\n </span>\n )}\n </div>\n );\n }\n\n // Both inside\n return (\n <div data-react-fancy-input-wrapper=\"\" className=\"relative flex items-center\">\n {hasInsidePrefix && (\n <span className=\"pointer-events-none absolute left-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {prefix}\n </span>\n )}\n <div\n className={cn(\n \"w-full\",\n hasInsidePrefix && insidePaddingLeft[size],\n hasInsideSuffix && insidePaddingRight[size],\n )}\n >\n {children}\n </div>\n {hasInsideSuffix && (\n <span className=\"pointer-events-none absolute right-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {suffix}\n </span>\n )}\n </div>\n );\n}\n"]}
1
+ {"version":3,"sources":["../src/components/inputs/InputWrapper.tsx"],"names":[],"mappings":"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","file":"chunk-EDIX6EXQ.js","sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { AffixPosition } from \"./inputs.types\";\nimport type { Size } from \"../../utils/types\";\n\ninterface InputWrapperProps {\n children: ReactNode;\n prefix?: ReactNode;\n suffix?: ReactNode;\n prefixPosition?: AffixPosition;\n suffixPosition?: AffixPosition;\n size?: Size;\n /** Extra padding className to apply to the input when affixes are \"inside\" */\n insidePrefixPadding?: string;\n insideSuffixPadding?: string;\n}\n\n// NOTE: these must be COMPLETE, static class strings. Tailwind only detects\n// utilities it can see verbatim in the source — building the arbitrary variant\n// at runtime (e.g. `[&_input]:${\"pl-9\"}`) means `[&_input]:ps-9` is never\n// emitted to CSS, so the inside affix gets no padding and overlaps the text\n// (issue #6). Keep input/select/textarea spelled out here.\nconst insidePaddingLeft: Record<Size, string> = {\n xs: \"[&_input]:ps-7 [&_select]:ps-7 [&_textarea]:ps-7\",\n sm: \"[&_input]:ps-8 [&_select]:ps-8 [&_textarea]:ps-8\",\n md: \"[&_input]:ps-9 [&_select]:ps-9 [&_textarea]:ps-9\",\n lg: \"[&_input]:ps-10 [&_select]:ps-10 [&_textarea]:ps-10\",\n xl: \"[&_input]:ps-11 [&_select]:ps-11 [&_textarea]:ps-11\",\n};\n\nconst insidePaddingRight: Record<Size, string> = {\n xs: \"[&_input]:pe-7 [&_select]:pe-7 [&_textarea]:pe-7\",\n sm: \"[&_input]:pe-8 [&_select]:pe-8 [&_textarea]:pe-8\",\n md: \"[&_input]:pe-9 [&_select]:pe-9 [&_textarea]:pe-9\",\n lg: \"[&_input]:pe-10 [&_select]:pe-10 [&_textarea]:pe-10\",\n xl: \"[&_input]:pe-11 [&_select]:pe-11 [&_textarea]:pe-11\",\n};\n\nconst affixOutsideClasses =\n \"inline-flex items-center border border-[color:var(--fancy-border-strong,var(--color-zinc-300))] bg-zinc-50 px-3 text-sm text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:border-[color:var(--fancy-border-strong-dark,var(--color-zinc-700))] dark:bg-zinc-800 dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\";\n\nexport function InputWrapper({\n children,\n prefix,\n suffix,\n prefixPosition = \"inside\",\n suffixPosition = \"inside\",\n size = \"md\",\n}: InputWrapperProps) {\n const hasInsidePrefix = prefix && prefixPosition === \"inside\";\n const hasInsideSuffix = suffix && suffixPosition === \"inside\";\n const hasOutsidePrefix = prefix && prefixPosition === \"outside\";\n const hasOutsideSuffix = suffix && suffixPosition === \"outside\";\n const hasOutside = hasOutsidePrefix || hasOutsideSuffix;\n\n if (!prefix && !suffix) {\n return <>{children}</>;\n }\n\n if (hasOutside) {\n return (\n <div data-react-fancy-input-wrapper=\"\" className=\"flex\">\n {hasOutsidePrefix && (\n <span className={cn(affixOutsideClasses, \"rounded-s-lg border-e-0\")}>\n {prefix}\n </span>\n )}\n <div\n className={cn(\n \"relative flex flex-1 items-center\",\n hasInsidePrefix && \"relative\",\n )}\n >\n {hasInsidePrefix && (\n <span className=\"pointer-events-none absolute start-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {prefix}\n </span>\n )}\n <div\n className={cn(\n \"w-full [&>*]:w-full\",\n hasOutsidePrefix && !hasOutsideSuffix && \"[&_input]:rounded-s-none [&_select]:rounded-s-none [&_textarea]:rounded-s-none\",\n !hasOutsidePrefix && hasOutsideSuffix && \"[&_input]:rounded-e-none [&_select]:rounded-e-none [&_textarea]:rounded-e-none\",\n hasOutsidePrefix && hasOutsideSuffix && \"[&_input]:rounded-none [&_select]:rounded-none [&_textarea]:rounded-none\",\n hasInsidePrefix && insidePaddingLeft[size],\n )}\n >\n {children}\n </div>\n {hasInsideSuffix && (\n <span className=\"pointer-events-none absolute end-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {suffix}\n </span>\n )}\n </div>\n {hasOutsideSuffix && (\n <span className={cn(affixOutsideClasses, \"rounded-e-lg border-s-0\")}>\n {suffix}\n </span>\n )}\n </div>\n );\n }\n\n // Both inside\n return (\n <div data-react-fancy-input-wrapper=\"\" className=\"relative flex items-center\">\n {hasInsidePrefix && (\n <span className=\"pointer-events-none absolute start-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {prefix}\n </span>\n )}\n <div\n className={cn(\n \"w-full\",\n hasInsidePrefix && insidePaddingLeft[size],\n hasInsideSuffix && insidePaddingRight[size],\n )}\n >\n {children}\n </div>\n {hasInsideSuffix && (\n <span className=\"pointer-events-none absolute end-3 z-10 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\">\n {suffix}\n </span>\n )}\n </div>\n );\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
 
3
- var chunkMRZXTL46_cjs = require('./chunk-MRZXTL46.cjs');
4
- var chunkP53432AK_cjs = require('./chunk-P53432AK.cjs');
5
- var chunkQF7CD4JH_cjs = require('./chunk-QF7CD4JH.cjs');
6
- var chunkO3F6DYWR_cjs = require('./chunk-O3F6DYWR.cjs');
7
- var chunkKKYILQTG_cjs = require('./chunk-KKYILQTG.cjs');
3
+ var chunkDFROB5TW_cjs = require('./chunk-DFROB5TW.cjs');
4
+ var chunkUIBAIWUR_cjs = require('./chunk-UIBAIWUR.cjs');
5
+ var chunkQ7XL37T3_cjs = require('./chunk-Q7XL37T3.cjs');
6
+ var chunkXG6J5MOK_cjs = require('./chunk-XG6J5MOK.cjs');
7
+ var chunkTBLKVTJC_cjs = require('./chunk-TBLKVTJC.cjs');
8
8
  var chunkKJ22KE56_cjs = require('./chunk-KJ22KE56.cjs');
9
9
  var chunkL3V3BYVS_cjs = require('./chunk-L3V3BYVS.cjs');
10
10
  var chunkSNHU2AI4_cjs = require('./chunk-SNHU2AI4.cjs');
@@ -82,7 +82,7 @@ var Input = react.forwardRef(
82
82
  const pasting = pasteThreshold !== void 0 || pasteImages;
83
83
  const editorRef = react.useRef(null);
84
84
  const hiddenRef = react.useRef(null);
85
- const paste = chunkKKYILQTG_cjs.useInlinePaste({
85
+ const paste = chunkTBLKVTJC_cjs.useInlinePaste({
86
86
  pasteThreshold,
87
87
  pasteImages,
88
88
  previewChars,
@@ -108,7 +108,7 @@ var Input = react.forwardRef(
108
108
  );
109
109
  const labelId = `${inputId}-label`;
110
110
  const input = !showControl ? /* @__PURE__ */ jsxRuntime.jsx(
111
- chunkP53432AK_cjs.DisplayValue,
111
+ chunkUIBAIWUR_cjs.DisplayValue,
112
112
  {
113
113
  size,
114
114
  interactive,
@@ -118,7 +118,7 @@ var Input = react.forwardRef(
118
118
  children: type === "password" ? props.value ? "\u2022\u2022\u2022\u2022\u2022\u2022" : "" : props.value
119
119
  }
120
120
  ) : /* @__PURE__ */ jsxRuntime.jsx(
121
- chunkMRZXTL46_cjs.InputWrapper,
121
+ chunkDFROB5TW_cjs.InputWrapper,
122
122
  {
123
123
  prefix,
124
124
  suffix,
@@ -130,13 +130,13 @@ var Input = react.forwardRef(
130
130
  "span",
131
131
  {
132
132
  ref: leadingRef,
133
- className: "pointer-events-none absolute left-3 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]",
133
+ className: "pointer-events-none absolute start-3 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]",
134
134
  children: leading
135
135
  }
136
136
  ),
137
137
  pasting ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
138
138
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ jsxRuntime.jsx(
139
- chunkKKYILQTG_cjs.InlinePasteEditor,
139
+ chunkTBLKVTJC_cjs.InlinePasteEditor,
140
140
  {
141
141
  ref: editorRef,
142
142
  id: inputId,
@@ -154,20 +154,20 @@ var Input = react.forwardRef(
154
154
  disabled: disabled === true,
155
155
  ariaLabelledBy: label ? labelId : props["aria-labelledby"],
156
156
  ariaInvalid: Boolean(error),
157
- placeholderClassName: chunkZU5Q77OT_cjs.cn(pastePlaceholderClasses[size], leading ? "left-9" : void 0),
157
+ placeholderClassName: chunkZU5Q77OT_cjs.cn(pastePlaceholderClasses[size], leading ? "start-9" : void 0),
158
158
  style: {
159
- ...leadingWidth ? { paddingLeft: leadingWidth + 20 } : null,
160
- ...trailingWidth ? { paddingRight: trailingWidth + 20 } : null
159
+ ...leadingWidth ? { paddingInlineStart: leadingWidth + 20 } : null,
160
+ ...trailingWidth ? { paddingInlineEnd: trailingWidth + 20 } : null
161
161
  },
162
162
  className: chunkZU5Q77OT_cjs.cn(
163
- chunkO3F6DYWR_cjs.inputBaseClasses,
164
- chunkO3F6DYWR_cjs.inputSizeClasses[size],
165
- chunkO3F6DYWR_cjs.dirtyClasses(dirty),
166
- chunkO3F6DYWR_cjs.errorClasses(error),
163
+ chunkXG6J5MOK_cjs.inputBaseClasses,
164
+ chunkXG6J5MOK_cjs.inputSizeClasses[size],
165
+ chunkXG6J5MOK_cjs.dirtyClasses(dirty),
166
+ chunkXG6J5MOK_cjs.errorClasses(error),
167
167
  // One line, like the <input> it stands in for.
168
168
  "min-h-0 max-h-none w-full overflow-x-auto overflow-y-hidden whitespace-nowrap break-normal",
169
- leading && !leadingWidth && "pl-9",
170
- trailing && !trailingWidth && "pr-9",
169
+ leading && !leadingWidth && "ps-9",
170
+ trailing && !trailingWidth && "pe-9",
171
171
  className,
172
172
  pasteClassNames?.input
173
173
  )
@@ -188,7 +188,7 @@ var Input = react.forwardRef(
188
188
  value: paste.expand(pasteValue)
189
189
  }
190
190
  ),
191
- pasteImages && filesName && /* @__PURE__ */ jsxRuntime.jsx(chunkKKYILQTG_cjs.PastedFilesInput, { name: filesName, files: pastedFiles, form: props.form })
191
+ pasteImages && filesName && /* @__PURE__ */ jsxRuntime.jsx(chunkTBLKVTJC_cjs.PastedFilesInput, { name: filesName, files: pastedFiles, form: props.form })
192
192
  ] }) : /* @__PURE__ */ jsxRuntime.jsx(
193
193
  "input",
194
194
  {
@@ -198,24 +198,25 @@ var Input = react.forwardRef(
198
198
  disabled,
199
199
  required,
200
200
  className: chunkZU5Q77OT_cjs.cn(
201
- chunkO3F6DYWR_cjs.inputBaseClasses,
202
- chunkO3F6DYWR_cjs.inputSizeClasses[size],
203
- chunkO3F6DYWR_cjs.dirtyClasses(dirty),
204
- chunkO3F6DYWR_cjs.errorClasses(error),
201
+ chunkXG6J5MOK_cjs.inputBaseClasses,
202
+ chunkXG6J5MOK_cjs.inputSizeClasses[size],
203
+ chunkXG6J5MOK_cjs.dirtyClasses(dirty),
204
+ chunkXG6J5MOK_cjs.errorClasses(error),
205
205
  "w-full",
206
206
  // The fixed classes are the PRE-MEASURE fallback only. Once the
207
207
  // adornment is measured, the inline style below overrides them
208
208
  // with its real width -- a fixed 36px is correct for one icon and
209
209
  // wrong for anything wider, which is how `https://` came to
210
210
  // render on top of the value.
211
- leading && !leadingWidth && "pl-9",
212
- (trailing || canReveal) && !trailingWidth && "pr-9",
211
+ leading && !leadingWidth && "ps-9",
212
+ (trailing || canReveal) && !trailingWidth && "pe-9",
213
213
  className
214
214
  ),
215
215
  style: {
216
- // 12px clears `left-3`/`right-3`; 8px is the gap to the text.
217
- ...leadingWidth ? { paddingLeft: leadingWidth + 20 } : null,
218
- ...trailingWidth ? { paddingRight: trailingWidth + 20 } : null,
216
+ // 12px clears `start-3`/`end-3`; 8px is the gap to the text. Logical,
217
+ // like the adornments, so both sides swap in RTL.
218
+ ...leadingWidth ? { paddingInlineStart: leadingWidth + 20 } : null,
219
+ ...trailingWidth ? { paddingInlineEnd: trailingWidth + 20 } : null,
219
220
  ...props.style
220
221
  },
221
222
  onChange: (e) => {
@@ -243,14 +244,14 @@ var Input = react.forwardRef(
243
244
  "aria-label": shown ? hideLabel : revealLabel,
244
245
  title: shown ? hideLabel : revealLabel,
245
246
  tabIndex: -1,
246
- className: "absolute right-2 inline-flex items-center justify-center rounded p-1 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] transition-colors hover:text-zinc-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/40 disabled:cursor-not-allowed disabled:opacity-50 dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))] dark:hover:text-zinc-300",
247
+ className: "absolute end-2 inline-flex items-center justify-center rounded p-1 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] transition-colors hover:text-zinc-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/40 disabled:cursor-not-allowed disabled:opacity-50 dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))] dark:hover:text-zinc-300",
247
248
  children: shown ? /* @__PURE__ */ jsxRuntime.jsx(EyeOffIcon, {}) : /* @__PURE__ */ jsxRuntime.jsx(EyeIcon, {})
248
249
  }
249
250
  ) : trailing && /* @__PURE__ */ jsxRuntime.jsx(
250
251
  "span",
251
252
  {
252
253
  ref: trailingRef,
253
- className: "pointer-events-none absolute right-3 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]",
254
+ className: "pointer-events-none absolute end-3 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]",
254
255
  children: trailing
255
256
  }
256
257
  )
@@ -259,7 +260,7 @@ var Input = react.forwardRef(
259
260
  );
260
261
  if (label || error || description) {
261
262
  return /* @__PURE__ */ jsxRuntime.jsx(
262
- chunkQF7CD4JH_cjs.Field,
263
+ chunkQ7XL37T3_cjs.Field,
263
264
  {
264
265
  label,
265
266
  labelId: pasting ? labelId : void 0,
@@ -278,11 +279,11 @@ var Input = react.forwardRef(
278
279
  );
279
280
  Input.displayName = "Input";
280
281
  var pastePlaceholderClasses = {
281
- xs: "left-2 top-1 text-xs",
282
- sm: "left-2.5 top-1.5 text-sm",
283
- md: "left-3 top-2 text-sm",
284
- lg: "left-4 top-2.5 text-base",
285
- xl: "left-5 top-3 text-lg"
282
+ xs: "start-2 top-1 text-xs",
283
+ sm: "start-2.5 top-1.5 text-sm",
284
+ md: "start-3 top-2 text-sm",
285
+ lg: "start-4 top-2.5 text-base",
286
+ xl: "start-5 top-3 text-lg"
286
287
  };
287
288
  function EyeIcon() {
288
289
  return /* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
@@ -300,5 +301,5 @@ function EyeOffIcon() {
300
301
  }
301
302
 
302
303
  exports.Input = Input;
303
- //# sourceMappingURL=chunk-HNJXBMHI.cjs.map
304
- //# sourceMappingURL=chunk-HNJXBMHI.cjs.map
304
+ //# sourceMappingURL=chunk-EEFU5BVM.cjs.map
305
+ //# sourceMappingURL=chunk-EEFU5BVM.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/use-adornment-width.ts","../src/components/inputs/Input/Input.tsx"],"names":["useState","useCallback","useEffect","forwardRef","useId","useFieldMode","useInlineEdit","useControllableState","useRef","useInlinePaste","useMemo","jsx","DisplayValue","InputWrapper","jsxs","Fragment","InlinePasteEditor","cn","inputBaseClasses","inputSizeClasses","dirtyClasses","errorClasses","PastedFilesInput","Field"],"mappings":"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","file":"chunk-EEFU5BVM.cjs","sourcesContent":["import { useCallback, useEffect, useState } from \"react\";\n\n/**\n * Measure an inline adornment so the input can reserve exactly its width.\n *\n * ## Why this exists\n *\n * `leading` / `trailing` render ABSOLUTELY over the input, so they take no\n * space in flow and the input must be padded by hand to keep text clear of\n * them. That padding used to be a fixed `pl-9` / `pr-9` (now `ps-9` / `pe-9`) — 36px, sized for a\n * single icon. Any wider adornment ran straight under the value: `leading =\n * \"https://\"` is roughly 50px, so `https://` and `fancy.app` rendered on top of\n * one another.\n *\n * A fixed padding cannot be right for arbitrary content, and these props accept\n * arbitrary content — a currency code, a unit, a protocol, a short label. So\n * the width is measured rather than assumed.\n *\n * Returns `0` until measured (and on the server), which is the signal to keep\n * the old fixed padding as a fallback: an unmeasured render is then no worse\n * than it was before, rather than unpadded.\n *\n * `ResizeObserver` rather than a one-shot read, because the width changes after\n * first paint for reasons the first paint cannot see — a webfont swapping in,\n * the adornment's own content changing, a container query resizing the text.\n */\nexport function useAdornmentWidth(): [(node: HTMLElement | null) => void, number] {\n const [width, setWidth] = useState(0);\n const [node, setNode] = useState<HTMLElement | null>(null);\n\n const ref = useCallback((n: HTMLElement | null) => setNode(n), []);\n\n useEffect(() => {\n if (!node) {\n setWidth(0);\n\n return;\n }\n\n const read = () => setWidth(node.getBoundingClientRect().width);\n read();\n\n if (typeof ResizeObserver === \"undefined\") return;\n\n const observer = new ResizeObserver(read);\n observer.observe(node);\n\n return () => observer.disconnect();\n }, [node]);\n\n return [ref, width];\n}\n","import { forwardRef, useId, useMemo, useRef } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { useAdornmentWidth } from \"../../../hooks/use-adornment-width\";\nimport { Field } from \"../Field\";\nimport { InputWrapper } from \"../InputWrapper\";\nimport {\n dirtyClasses,\n errorClasses,\n inputBaseClasses,\n inputSizeClasses,\n} from \"../inputs.utils\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { DisplayValue } from \"../mode/DisplayValue\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport {\n InlinePasteEditor,\n PastedFilesInput,\n useInlinePaste,\n type InlinePasteEditorHandle,\n} from \"../../PastePills\";\nimport type { InputProps } from \"./Input.types\";\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n type = \"text\",\n size = \"md\",\n dirty,\n error,\n label,\n labelHidden,\n description,\n required,\n disabled,\n className,\n id,\n leading,\n trailing,\n prefix,\n suffix,\n prefixPosition,\n suffixPosition,\n mode,\n onValueChange,\n onChange,\n reveal,\n revealed,\n onRevealedChange,\n revealLabel = \"Show password\",\n hideLabel = \"Hide password\",\n pasteThreshold,\n pasteImages = false,\n pasteFilesName,\n previewChars = 20,\n renderPastePreview,\n pasteClassNames,\n heldPastes,\n onHeldPastesChange,\n heldImages,\n onHeldImagesChange,\n ...props\n },\n ref,\n ) => {\n const autoId = useId();\n const inputId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n\n // Measured, not assumed: `leading`/`trailing` take arbitrary content, and a\n // fixed padding can only ever be right for one width. See\n // `useAdornmentWidth` for what went wrong with the fixed version.\n const [leadingRef, leadingWidth] = useAdornmentWidth();\n const [trailingRef, trailingWidth] = useAdornmentWidth();\n\n // Only meaningful on a password field: a reveal on an already-visible input\n // is a button that does nothing.\n const canReveal = reveal === true && type === \"password\";\n const [isRevealed, setRevealed] = useControllableState(revealed, false, onRevealedChange);\n const shown = canReveal && isRevealed;\n // The rendered type, NOT the declared one — `type` stays \"password\" so the\n // display-mode masking below and any caller reading props are unaffected.\n const renderedType = shown ? \"text\" : type;\n\n /*\n * Paste pills: the same core `Composer` and `PromptInput` use, so the three\n * cannot disagree about what a pill holds or what a send carries. Hooks run\n * whether or not it is on (Rules of Hooks); nothing is rendered unless asked.\n */\n const pasting = pasteThreshold !== undefined || pasteImages;\n const editorRef = useRef<InlinePasteEditorHandle>(null);\n const hiddenRef = useRef<HTMLInputElement | null>(null);\n const paste = useInlinePaste({\n pasteThreshold,\n pasteImages,\n previewChars,\n renderPastePreview,\n classNames: pasteClassNames,\n disabled: disabled === true,\n heldPastes,\n onHeldPastesChange,\n heldImages,\n onHeldImagesChange,\n editorRef,\n blockText: false,\n });\n const [pasteValue, setPasteValue] = useControllableState<string>(\n props.value === undefined ? undefined : String(props.value),\n props.defaultValue === undefined ? \"\" : String(props.defaultValue),\n onValueChange,\n );\n const filesName = pasteFilesName ?? (props.name ? `${props.name}_files[]` : undefined);\n const pastedFiles = useMemo(\n () => (pasteImages ? paste.imagesIn(pasteValue).map((i) => i.file) : []),\n [pasteImages, paste, pasteValue],\n );\n const labelId = `${inputId}-label`;\n\n const input = !showControl ? (\n <DisplayValue\n size={size}\n interactive={interactive}\n onActivate={enterEdit}\n leading={leading ?? prefix}\n trailing={trailing ?? suffix}\n >\n {type === \"password\" ? (props.value ? \"••••••\" : \"\") : (props.value as string | undefined)}\n </DisplayValue>\n ) : (\n <InputWrapper\n prefix={prefix}\n suffix={suffix}\n prefixPosition={prefixPosition}\n suffixPosition={suffixPosition}\n size={size}\n >\n <div data-react-fancy-input=\"\" className=\"relative flex items-center\">\n {leading && (\n <span\n ref={leadingRef}\n className=\"pointer-events-none absolute start-3 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\"\n >\n {leading}\n </span>\n )}\n {pasting ? (\n <>\n <div className=\"min-w-0 flex-1\">\n <InlinePasteEditor\n ref={editorRef}\n id={inputId}\n value={pasteValue}\n known={paste.known}\n onChange={(next) => {\n setPasteValue(next);\n paste.prune(next);\n }}\n // Enter in a text field submits its form; keep that.\n onSubmit={() => hiddenRef.current?.form?.requestSubmit()}\n multiline={false}\n onPaste={paste.decidePaste}\n onHostsChange={paste.onHostsChange}\n placeholder={props.placeholder ?? \"\"}\n disabled={disabled === true}\n ariaLabelledBy={label ? labelId : props[\"aria-labelledby\"]}\n ariaInvalid={Boolean(error)}\n placeholderClassName={cn(pastePlaceholderClasses[size], leading ? \"start-9\" : undefined)}\n style={{\n ...(leadingWidth ? { paddingInlineStart: leadingWidth + 20 } : null),\n ...(trailingWidth ? { paddingInlineEnd: trailingWidth + 20 } : null),\n }}\n className={cn(\n inputBaseClasses,\n inputSizeClasses[size],\n dirtyClasses(dirty),\n errorClasses(error),\n // One line, like the <input> it stands in for.\n \"min-h-0 max-h-none w-full overflow-x-auto overflow-y-hidden whitespace-nowrap break-normal\",\n leading && !leadingWidth && \"ps-9\",\n trailing && !trailingWidth && \"pe-9\",\n className,\n pasteClassNames?.input,\n )}\n />\n </div>\n {paste.portals}\n {/* What a native submit posts: the value with every pill expanded. */}\n <input\n ref={(el) => {\n hiddenRef.current = el;\n if (typeof ref === \"function\") ref(el);\n else if (ref) ref.current = el;\n }}\n type=\"hidden\"\n name={props.name}\n form={props.form}\n value={paste.expand(pasteValue)}\n />\n {pasteImages && filesName && (\n <PastedFilesInput name={filesName} files={pastedFiles} form={props.form} />\n )}\n </>\n ) : (\n <input\n ref={ref}\n id={inputId}\n type={renderedType}\n disabled={disabled}\n required={required}\n className={cn(\n inputBaseClasses,\n inputSizeClasses[size],\n dirtyClasses(dirty),\n errorClasses(error),\n \"w-full\",\n // The fixed classes are the PRE-MEASURE fallback only. Once the\n // adornment is measured, the inline style below overrides them\n // with its real width -- a fixed 36px is correct for one icon and\n // wrong for anything wider, which is how `https://` came to\n // render on top of the value.\n leading && !leadingWidth && \"ps-9\",\n (trailing || canReveal) && !trailingWidth && \"pe-9\",\n className,\n )}\n style={{\n // 12px clears `start-3`/`end-3`; 8px is the gap to the text. Logical,\n // like the adornments, so both sides swap in RTL.\n ...(leadingWidth ? { paddingInlineStart: leadingWidth + 20 } : null),\n ...(trailingWidth ? { paddingInlineEnd: trailingWidth + 20 } : null),\n ...props.style,\n }}\n onChange={(e) => {\n onChange?.(e);\n onValueChange?.(e.target.value);\n }}\n {...props}\n // Inline click-to-edit: focus on entering edit, return to the display\n // (and run the host's onBlur) when focus leaves.\n autoFocus={interactive || props.autoFocus}\n onBlur={(e) => {\n props.onBlur?.(e);\n if (interactive) exitEdit();\n }}\n />\n )}\n {canReveal ? (\n <button\n type=\"button\"\n // type=\"button\" is load-bearing: the default is \"submit\", so a\n // reveal inside a login form would submit it on every click.\n id={`${inputId}-reveal`}\n data-react-fancy-reveal=\"\"\n onClick={() => setRevealed((v) => !v)}\n disabled={disabled}\n aria-controls={inputId}\n aria-pressed={shown}\n aria-label={shown ? hideLabel : revealLabel}\n title={shown ? hideLabel : revealLabel}\n // Not focusable by tab: the field and the submit button are the\n // path through a login form, and a reveal in between is a stop\n // most people do not want. Still reachable by click and by\n // screen readers.\n tabIndex={-1}\n className=\"absolute end-2 inline-flex items-center justify-center rounded p-1 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] transition-colors hover:text-zinc-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/40 disabled:cursor-not-allowed disabled:opacity-50 dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))] dark:hover:text-zinc-300\"\n >\n {shown ? <EyeOffIcon /> : <EyeIcon />}\n </button>\n ) : (\n trailing && (\n <span\n ref={trailingRef}\n className=\"pointer-events-none absolute end-3 text-[color:var(--fancy-text-faint,var(--color-zinc-400))] dark:text-[color:var(--fancy-text-faint-dark,var(--color-zinc-500))]\"\n >\n {trailing}\n </span>\n )\n )}\n </div>\n </InputWrapper>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelId={pasting ? labelId : undefined}\n labelHidden={labelHidden}\n description={description}\n error={error}\n required={required}\n htmlFor={inputId}\n size={size}\n >\n {input}\n </Field>\n );\n }\n\n return input;\n },\n);\n\nInput.displayName = \"Input\";\n\n/** Where the placeholder sits over the paste editor, matching `inputSizeClasses`. */\nconst pastePlaceholderClasses = {\n xs: \"start-2 top-1 text-xs\",\n sm: \"start-2.5 top-1.5 text-sm\",\n md: \"start-3 top-2 text-sm\",\n lg: \"start-4 top-2.5 text-base\",\n xl: \"start-5 top-3 text-lg\",\n} as const;\n\n/**\n * Inline SVGs rather than the Icon component: Input is the most-installed\n * primitive in the kit, and routing it through the icon registry would make\n * every consumer's password field depend on an icon set being configured.\n */\nfunction EyeIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n\nfunction EyeOffIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" aria-hidden=\"true\">\n <path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\" />\n <path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\" />\n <path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\" />\n <path d=\"m2 2 20 20\" />\n </svg>\n );\n}\n"]}
@@ -1,9 +1,10 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkI27K6NLX_cjs = require('./chunk-I27K6NLX.cjs');
4
- var chunkP53432AK_cjs = require('./chunk-P53432AK.cjs');
5
- var chunkQF7CD4JH_cjs = require('./chunk-QF7CD4JH.cjs');
6
- var chunkO3F6DYWR_cjs = require('./chunk-O3F6DYWR.cjs');
4
+ var chunkUIBAIWUR_cjs = require('./chunk-UIBAIWUR.cjs');
5
+ var chunkQ7XL37T3_cjs = require('./chunk-Q7XL37T3.cjs');
6
+ var chunkXG6J5MOK_cjs = require('./chunk-XG6J5MOK.cjs');
7
+ var chunk36IC3NDN_cjs = require('./chunk-36IC3NDN.cjs');
7
8
  var chunkKJ22KE56_cjs = require('./chunk-KJ22KE56.cjs');
8
9
  var chunkL3V3BYVS_cjs = require('./chunk-L3V3BYVS.cjs');
9
10
  var chunkSNHU2AI4_cjs = require('./chunk-SNHU2AI4.cjs');
@@ -69,7 +70,7 @@ function MultiSwitch({
69
70
  }) {
70
71
  const reactId = react.useId();
71
72
  const labelId = label ? `${id ?? reactId}-label` : void 0;
72
- const resolvedOptions = list.map(chunkO3F6DYWR_cjs.resolveOption);
73
+ const resolvedOptions = list.map(chunkXG6J5MOK_cjs.resolveOption);
73
74
  const fallback = defaultValue ?? resolvedOptions[0]?.value;
74
75
  const resolvedMode = chunkL3V3BYVS_cjs.useFieldMode(mode);
75
76
  const { showControl, interactive, enterEdit, exitEdit } = chunkKJ22KE56_cjs.useInlineEdit(resolvedMode, disabled);
@@ -93,9 +94,11 @@ function MultiSwitch({
93
94
  }
94
95
  const containerRect = container.getBoundingClientRect();
95
96
  const itemRect = activeItem.getBoundingClientRect();
97
+ const rtl = chunk36IC3NDN_cjs.isRtl(container);
96
98
  setIndicator({
97
- left: itemRect.left - containerRect.left,
98
- width: itemRect.width
99
+ left: rtl ? containerRect.right - itemRect.right : itemRect.left - containerRect.left,
100
+ width: itemRect.width,
101
+ rtl
99
102
  });
100
103
  }, [selectedIndex]);
101
104
  react.useEffect(() => {
@@ -111,7 +114,7 @@ function MultiSwitch({
111
114
  observer.observe(activeItem);
112
115
  return () => observer.disconnect();
113
116
  }, [updateIndicator, selectedIndex, showControl]);
114
- const control = !showControl ? /* @__PURE__ */ jsxRuntime.jsx(chunkP53432AK_cjs.DisplayValue, { size, interactive, onActivate: enterEdit, children: resolvedOptions.find((o) => o.value === value)?.label }) : /* @__PURE__ */ jsxRuntime.jsxs(
117
+ const control = !showControl ? /* @__PURE__ */ jsxRuntime.jsx(chunkUIBAIWUR_cjs.DisplayValue, { size, interactive, onActivate: enterEdit, children: resolvedOptions.find((o) => o.value === value)?.label }) : /* @__PURE__ */ jsxRuntime.jsxs(
115
118
  "div",
116
119
  {
117
120
  ...rest,
@@ -138,7 +141,7 @@ function MultiSwitch({
138
141
  "data-react-fancy-multi-switch-thumb": "",
139
142
  "data-color": selectedColor,
140
143
  className: colorClasses ? `absolute top-0 bottom-0 rounded-lg ${colorClasses.thumb} transition-all duration-200 ease-out` : "absolute top-0 bottom-0 rounded-lg bg-blue-600 transition-all duration-200 ease-out",
141
- style: { left: indicator.left, width: indicator.width }
144
+ style: indicator.rtl ? { right: indicator.left, width: indicator.width } : { left: indicator.left, width: indicator.width }
142
145
  }
143
146
  ),
144
147
  resolvedOptions.map((option, index) => {
@@ -179,7 +182,7 @@ function MultiSwitch({
179
182
  );
180
183
  if (label || error || description) {
181
184
  return /* @__PURE__ */ jsxRuntime.jsx(
182
- chunkQF7CD4JH_cjs.Field,
185
+ chunkQ7XL37T3_cjs.Field,
183
186
  {
184
187
  label,
185
188
  labelHidden,
@@ -198,5 +201,5 @@ function MultiSwitch({
198
201
  MultiSwitch.displayName = "MultiSwitch";
199
202
 
200
203
  exports.MultiSwitch = MultiSwitch;
201
- //# sourceMappingURL=chunk-KOAMRCSC.cjs.map
202
- //# sourceMappingURL=chunk-KOAMRCSC.cjs.map
204
+ //# sourceMappingURL=chunk-ETUDUDSL.cjs.map
205
+ //# sourceMappingURL=chunk-ETUDUDSL.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/inputs/MultiSwitch/MultiSwitch.colors.ts","../src/components/inputs/MultiSwitch/MultiSwitch.tsx"],"names":["useId","resolveOption","useFieldMode","useInlineEdit","useControllableState","useRef","useMemo","composeRefs","useState","useCallback","isRtl","useEffect","DisplayValue","jsxs","cn","jsx","Field"],"mappings":"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","file":"chunk-ETUDUDSL.cjs","sourcesContent":["// Literal Tailwind class strings for every color in the v4 palette so the\n// scanner can detect them in the published dist (template-built names are\n// invisible to Tailwind's JIT). Shades follow badgeSolid: 600 / dark 500 for\n// the thumb, with dark label text on the light hues (amber, yellow, lime).\nimport type { Color } from \"../../../utils/types\";\n\nexport type MultiSwitchColorClasses = {\n /** The selected thumb's fill. */\n thumb: string;\n /** The selected option's label, readable on the thumb. */\n text: string;\n /** The container border while this option is selected. */\n border: string;\n};\n\nexport const multiSwitchColorClasses: Record<Color, MultiSwitchColorClasses> = {\n // The host's colour, from CSS variables -- no dark: variant, because a\n // host that themes per mode scopes the variables themselves.\n brand: { thumb: \"bg-brand\", text: \"text-brand-contrast\", border: \"border-brand\" },\n slate: { thumb: \"bg-slate-600 dark:bg-slate-500\", text: \"text-white\", border: \"border-slate-500 dark:border-slate-400\" },\n gray: { thumb: \"bg-gray-600 dark:bg-gray-500\", text: \"text-white\", border: \"border-gray-500 dark:border-gray-400\" },\n zinc: { thumb: \"bg-zinc-600 dark:bg-zinc-500\", text: \"text-white\", border: \"border-zinc-500 dark:border-zinc-400\" },\n neutral: { thumb: \"bg-neutral-600 dark:bg-neutral-500\", text: \"text-white\", border: \"border-neutral-500 dark:border-neutral-400\" },\n stone: { thumb: \"bg-stone-600 dark:bg-stone-500\", text: \"text-white\", border: \"border-stone-500 dark:border-stone-400\" },\n red: { thumb: \"bg-red-600 dark:bg-red-500\", text: \"text-white\", border: \"border-red-500 dark:border-red-400\" },\n orange: { thumb: \"bg-orange-600 dark:bg-orange-500\", text: \"text-white\", border: \"border-orange-500 dark:border-orange-400\" },\n amber: { thumb: \"bg-amber-400 dark:bg-amber-300\", text: \"text-amber-950\", border: \"border-amber-500 dark:border-amber-400\" },\n yellow: { thumb: \"bg-yellow-400 dark:bg-yellow-300\", text: \"text-yellow-950\", border: \"border-yellow-500 dark:border-yellow-400\" },\n lime: { thumb: \"bg-lime-400 dark:bg-lime-300\", text: \"text-lime-950\", border: \"border-lime-500 dark:border-lime-400\" },\n green: { thumb: \"bg-green-600 dark:bg-green-500\", text: \"text-white\", border: \"border-green-500 dark:border-green-400\" },\n emerald: { thumb: \"bg-emerald-600 dark:bg-emerald-500\", text: \"text-white\", border: \"border-emerald-500 dark:border-emerald-400\" },\n teal: { thumb: \"bg-teal-600 dark:bg-teal-500\", text: \"text-white\", border: \"border-teal-500 dark:border-teal-400\" },\n cyan: { thumb: \"bg-cyan-600 dark:bg-cyan-500\", text: \"text-white\", border: \"border-cyan-500 dark:border-cyan-400\" },\n sky: { thumb: \"bg-sky-600 dark:bg-sky-500\", text: \"text-white\", border: \"border-sky-500 dark:border-sky-400\" },\n blue: { thumb: \"bg-blue-600 dark:bg-blue-500\", text: \"text-white\", border: \"border-blue-500 dark:border-blue-400\" },\n indigo: { thumb: \"bg-indigo-600 dark:bg-indigo-500\", text: \"text-white\", border: \"border-indigo-500 dark:border-indigo-400\" },\n violet: { thumb: \"bg-violet-600 dark:bg-violet-500\", text: \"text-white\", border: \"border-violet-500 dark:border-violet-400\" },\n purple: { thumb: \"bg-purple-600 dark:bg-purple-500\", text: \"text-white\", border: \"border-purple-500 dark:border-purple-400\" },\n fuchsia: { thumb: \"bg-fuchsia-600 dark:bg-fuchsia-500\", text: \"text-white\", border: \"border-fuchsia-500 dark:border-fuchsia-400\" },\n pink: { thumb: \"bg-pink-600 dark:bg-pink-500\", text: \"text-white\", border: \"border-pink-500 dark:border-pink-400\" },\n rose: { thumb: \"bg-rose-600 dark:bg-rose-500\", text: \"text-white\", border: \"border-rose-500 dark:border-rose-400\" },\n};\n","import { useRef, useState, useEffect, useCallback, useId, useMemo, type Ref } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { composeRefs } from \"../../../utils/compose-refs\";\nimport { isRtl } from \"../../../utils/direction\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { Field } from \"../Field\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { DisplayValue } from \"../mode/DisplayValue\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { resolveOption } from \"../inputs.utils\";\nimport type { Color, Size } from \"../../../utils/types\";\nimport type { MultiSwitchProps } from \"./MultiSwitch.types\";\nimport { multiSwitchColorClasses } from \"./MultiSwitch.colors\";\n\nconst BORDER_DEFAULT =\n \"border-[color:var(--fancy-border-strong,var(--color-zinc-300))] dark:border-[color:var(--fancy-border-strong-dark,var(--color-zinc-700))]\";\n\nconst sizeClasses: Record<Size, string> = {\n xs: \"px-2 py-1 text-xs\",\n sm: \"px-2.5 py-1.5 text-sm\",\n md: \"px-3 py-2 text-sm\",\n lg: \"px-4 py-2.5 text-base\",\n xl: \"px-5 py-3 text-lg\",\n};\n\nexport function MultiSwitch<V = string>({\n size = \"md\",\n dirty,\n error,\n label,\n labelHidden,\n description,\n required,\n disabled,\n className,\n id,\n name,\n list,\n value: controlledValue,\n defaultValue,\n onValueChange,\n linear,\n mode,\n ...rest\n}: MultiSwitchProps<V>) {\n const reactId = useId();\n // A `<label for>` cannot name a div[role=\"radiogroup\"], so the group points at\n // the label instead. Needs an id the label and the group both agree on.\n const labelId = label ? `${id ?? reactId}-label` : undefined;\n\n // resolveOption hands an object option back as-is, so `color` survives it.\n const resolvedOptions = list.map(resolveOption) as Array<\n ReturnType<typeof resolveOption<V>> & { color?: Color }\n >;\n const fallback = defaultValue ?? resolvedOptions[0]?.value;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [value, setValue] = useControllableState(controlledValue, fallback as V, onValueChange);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const externalRef = (rest as { ref?: Ref<HTMLDivElement> }).ref;\n const containerSetRef = useMemo(() => composeRefs(externalRef, containerRef), [externalRef]);\n const itemRefs = useRef<(HTMLButtonElement | null)[]>([]);\n const [indicator, setIndicator] = useState<{ left: number; width: number; rtl?: boolean } | null>(null);\n\n const selectedIndex = resolvedOptions.findIndex(\n (o) => o.value === value,\n );\n const selectedColor = resolvedOptions[selectedIndex]?.color;\n const colorClasses = selectedColor ? multiSwitchColorClasses[selectedColor] : undefined;\n\n const updateIndicator = useCallback(() => {\n const container = containerRef.current;\n const activeItem = itemRefs.current[selectedIndex];\n if (!container || !activeItem) {\n setIndicator(null);\n return;\n }\n const containerRect = container.getBoundingClientRect();\n const itemRect = activeItem.getBoundingClientRect();\n // Offset from the inline START edge. In RTL that is the right edge, and\n // measuring from the left there would put the thumb a border-width off the\n // item, since the container's border is on the other side.\n const rtl = isRtl(container);\n setIndicator({\n left: rtl ? containerRect.right - itemRect.right : itemRect.left - containerRect.left,\n width: itemRect.width,\n rtl,\n });\n }, [selectedIndex]);\n\n useEffect(() => {\n updateIndicator();\n }, [updateIndicator]);\n\n // The selected option can change size without the selection changing: a\n // label carrying a live count (\"Changed 4\" -> \"Changed 12\"), a font loading\n // late, the container reflowing. Watch the selected option and the container\n // and re-measure. Without ResizeObserver (SSR, older jsdom) the thumb is\n // measured on selection only, as it always was.\n useEffect(() => {\n if (typeof ResizeObserver === \"undefined\") return;\n const container = containerRef.current;\n const activeItem = itemRefs.current[selectedIndex];\n if (!container || !activeItem) return;\n const observer = new ResizeObserver(() => updateIndicator());\n observer.observe(container);\n observer.observe(activeItem);\n return () => observer.disconnect();\n }, [updateIndicator, selectedIndex, showControl]);\n\n const control = !showControl ? (\n <DisplayValue size={size} interactive={interactive} onActivate={enterEdit}>\n {resolvedOptions.find((o) => o.value === value)?.label}\n </DisplayValue>\n ) : (\n <div\n {...rest}\n // React 19 passes `ref` to a function component as a plain prop, so a\n // caller's ref (Tooltip's anchor, or anyone's) arrives in `rest`. Spread\n // after `ref={containerRef}` it REPLACED the ref the thumb is measured\n // from, and the selected thumb never rendered. Feed both instead.\n ref={containerSetRef}\n data-react-fancy-multi-switch=\"\"\n role=\"radiogroup\"\n id={id}\n aria-labelledby={labelId}\n onBlur={(e) => {\n if (interactive && !e.currentTarget.contains(e.relatedTarget as Node)) exitEdit();\n }}\n className={cn(\n \"relative inline-flex rounded-lg border bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))]\",\n colorClasses ? colorClasses.border : BORDER_DEFAULT,\n dirty && \"ring-2 ring-amber-400/50\",\n error && \"ring-2 ring-red-500/50\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className,\n )}\n >\n {indicator && (\n <span\n data-react-fancy-multi-switch-thumb=\"\"\n data-color={selectedColor}\n className={\n colorClasses\n ? `absolute top-0 bottom-0 rounded-lg ${colorClasses.thumb} transition-all duration-200 ease-out`\n : \"absolute top-0 bottom-0 rounded-lg bg-blue-600 transition-all duration-200 ease-out\"\n }\n style={indicator.rtl ? { right: indicator.left, width: indicator.width } : { left: indicator.left, width: indicator.width }}\n />\n )}\n {resolvedOptions.map((option, index) => {\n const isSelected = option.value === value;\n return (\n <button\n key={String(option.value)}\n ref={(el) => { itemRefs.current[index] = el; }}\n type=\"button\"\n role=\"radio\"\n aria-checked={isSelected}\n disabled={disabled || option.disabled}\n autoFocus={interactive && (selectedIndex === -1 ? index === 0 : isSelected)}\n onClick={() => {\n if (linear) {\n const nextIndex = (selectedIndex + 1) % resolvedOptions.length;\n setValue(resolvedOptions[nextIndex].value as V);\n } else {\n setValue(option.value as V);\n }\n }}\n className={cn(\n \"relative z-10 font-medium transition-colors duration-200\",\n sizeClasses[size],\n isSelected\n ? (colorClasses?.text ?? \"text-white\")\n : \"text-[color:var(--fancy-text-subtle,var(--color-zinc-600))] hover:text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-subtle-dark,var(--color-zinc-400))] dark:hover:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\",\n (disabled || option.disabled) && \"cursor-not-allowed\",\n )}\n >\n {option.label}\n </button>\n );\n })}\n {name && <input type=\"hidden\" name={name} value={String(value)} />}\n </div>\n );\n\n if (label || error || description) {\n return (\n <Field\n label={label}\n labelHidden={labelHidden}\n labelId={labelId}\n description={description}\n error={error}\n required={required}\n htmlFor={id}\n size={size}\n >\n {control}\n </Field>\n );\n }\n\n return control;\n}\n\nMultiSwitch.displayName = \"MultiSwitch\";\n"]}