@particle-academy/react-fancy 6.8.0 → 6.9.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 (571) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/{Card-CuRZivBz.d.cts → Card-D0sp2T1V.d.cts} +6 -1
  3. package/dist/{Card-CuRZivBz.d.ts → Card-D0sp2T1V.d.ts} +6 -1
  4. package/dist/accordion-panel.cjs +7 -7
  5. package/dist/accordion-panel.js +1 -1
  6. package/dist/accordion.cjs +3 -3
  7. package/dist/accordion.js +1 -1
  8. package/dist/autocomplete.cjs +4 -3
  9. package/dist/autocomplete.js +3 -2
  10. package/dist/avatar.cjs +2 -2
  11. package/dist/avatar.js +1 -1
  12. package/dist/breadcrumbs.cjs +2 -2
  13. package/dist/breadcrumbs.js +1 -1
  14. package/dist/button.cjs +3 -3
  15. package/dist/button.d.cts +1 -1
  16. package/dist/button.d.ts +1 -1
  17. package/dist/button.js +1 -1
  18. package/dist/calendar.cjs +2 -2
  19. package/dist/calendar.js +1 -1
  20. package/dist/callout.cjs +2 -2
  21. package/dist/callout.js +1 -1
  22. package/dist/card.cjs +7 -7
  23. package/dist/card.d.cts +2 -2
  24. package/dist/card.d.ts +2 -2
  25. package/dist/card.js +1 -1
  26. package/dist/carousel.cjs +7 -7
  27. package/dist/carousel.js +1 -1
  28. package/dist/chart.cjs +2 -2
  29. package/dist/chart.js +1 -1
  30. package/dist/chat-drawer.cjs +2 -2
  31. package/dist/chat-drawer.js +1 -1
  32. package/dist/chat-thread.cjs +7 -7
  33. package/dist/chat-thread.js +5 -5
  34. package/dist/checkbox-group.cjs +5 -5
  35. package/dist/checkbox-group.js +4 -4
  36. package/dist/checkbox.cjs +3 -3
  37. package/dist/checkbox.js +2 -2
  38. package/dist/{chunk-B4YV2V7G.cjs → chunk-2DX3PNXU.cjs} +3 -3
  39. package/dist/{chunk-B4YV2V7G.cjs.map → chunk-2DX3PNXU.cjs.map} +1 -1
  40. package/dist/{chunk-KPRSRWNM.js → chunk-2I7VNCBZ.js} +3 -3
  41. package/dist/{chunk-KPRSRWNM.js.map → chunk-2I7VNCBZ.js.map} +1 -1
  42. package/dist/{chunk-WMANILKC.cjs → chunk-2UYQ34RJ.cjs} +7 -7
  43. package/dist/chunk-2UYQ34RJ.cjs.map +1 -0
  44. package/dist/chunk-36IC3NDN.cjs +21 -0
  45. package/dist/chunk-36IC3NDN.cjs.map +1 -0
  46. package/dist/{chunk-LFC2DL6H.cjs → chunk-3BBEVHSP.cjs} +14 -9
  47. package/dist/chunk-3BBEVHSP.cjs.map +1 -0
  48. package/dist/{chunk-2O5UXH5R.cjs → chunk-3EZ6UPXS.cjs} +10 -10
  49. package/dist/chunk-3EZ6UPXS.cjs.map +1 -0
  50. package/dist/{chunk-XBFTO64U.cjs → chunk-3KJN3GTB.cjs} +4 -4
  51. package/dist/{chunk-XBFTO64U.cjs.map → chunk-3KJN3GTB.cjs.map} +1 -1
  52. package/dist/{chunk-37D5PYEF.js → chunk-3O3ZWWLG.js} +17 -4
  53. package/dist/chunk-3O3ZWWLG.js.map +1 -0
  54. package/dist/{chunk-5PHPJL7Z.js → chunk-4EQ336PQ.js} +4 -4
  55. package/dist/{chunk-5PHPJL7Z.js.map → chunk-4EQ336PQ.js.map} +1 -1
  56. package/dist/{chunk-EENHSMV2.js → chunk-4L3MGQAR.js} +6 -6
  57. package/dist/{chunk-EENHSMV2.js.map → chunk-4L3MGQAR.js.map} +1 -1
  58. package/dist/{chunk-QGY5FPVM.js → chunk-54NB3T3Q.js} +6 -4
  59. package/dist/chunk-54NB3T3Q.js.map +1 -0
  60. package/dist/{chunk-FRWOWDGX.js → chunk-5FA6V7JF.js} +3 -3
  61. package/dist/{chunk-FRWOWDGX.js.map → chunk-5FA6V7JF.js.map} +1 -1
  62. package/dist/{chunk-UUEAFG6V.js → chunk-5NJF7SQX.js} +6 -6
  63. package/dist/{chunk-UUEAFG6V.js.map → chunk-5NJF7SQX.js.map} +1 -1
  64. package/dist/{chunk-ZGDOWJKL.cjs → chunk-5NTFXQ4K.cjs} +6 -6
  65. package/dist/{chunk-ZGDOWJKL.cjs.map → chunk-5NTFXQ4K.cjs.map} +1 -1
  66. package/dist/{chunk-CQ7QXZLR.cjs → chunk-5SVZX6WF.cjs} +4 -4
  67. package/dist/chunk-5SVZX6WF.cjs.map +1 -0
  68. package/dist/{chunk-JY7HPFOE.cjs → chunk-6B2GMKE4.cjs} +5 -5
  69. package/dist/{chunk-JY7HPFOE.cjs.map → chunk-6B2GMKE4.cjs.map} +1 -1
  70. package/dist/{chunk-GSMD5NK5.js → chunk-6BCXGP2T.js} +7 -7
  71. package/dist/{chunk-GSMD5NK5.js.map → chunk-6BCXGP2T.js.map} +1 -1
  72. package/dist/{chunk-CVDL6C2O.cjs → chunk-6EPM5JG7.cjs} +3 -3
  73. package/dist/{chunk-CVDL6C2O.cjs.map → chunk-6EPM5JG7.cjs.map} +1 -1
  74. package/dist/{chunk-FVQO75KY.cjs → chunk-6GOPFKGC.cjs} +10 -4
  75. package/dist/chunk-6GOPFKGC.cjs.map +1 -0
  76. package/dist/{chunk-QTS4Q2NK.js → chunk-6RXEWM3V.js} +4 -3
  77. package/dist/chunk-6RXEWM3V.js.map +1 -0
  78. package/dist/{chunk-TLRFXSPA.cjs → chunk-73REG7KM.cjs} +13 -13
  79. package/dist/{chunk-TLRFXSPA.cjs.map → chunk-73REG7KM.cjs.map} +1 -1
  80. package/dist/{chunk-MI57NAKF.js → chunk-7B3Z4NVM.js} +6 -5
  81. package/dist/chunk-7B3Z4NVM.js.map +1 -0
  82. package/dist/{chunk-J2BWXCES.js → chunk-7GRIO5AZ.js} +3 -3
  83. package/dist/{chunk-J2BWXCES.js.map → chunk-7GRIO5AZ.js.map} +1 -1
  84. package/dist/{chunk-V5JTTLJP.cjs → chunk-7K2C744H.cjs} +3 -3
  85. package/dist/{chunk-V5JTTLJP.cjs.map → chunk-7K2C744H.cjs.map} +1 -1
  86. package/dist/{chunk-AJPYGRLA.cjs → chunk-7NRG77U5.cjs} +12 -4
  87. package/dist/chunk-7NRG77U5.cjs.map +1 -0
  88. package/dist/{chunk-GDF6XTHC.js → chunk-7OUBFO4D.js} +7 -5
  89. package/dist/chunk-7OUBFO4D.js.map +1 -0
  90. package/dist/{chunk-6H7ZN23X.cjs → chunk-7PK3OUKR.cjs} +6 -6
  91. package/dist/{chunk-6H7ZN23X.cjs.map → chunk-7PK3OUKR.cjs.map} +1 -1
  92. package/dist/{chunk-EUVWYDFN.js → chunk-AE6ICNJR.js} +14 -9
  93. package/dist/chunk-AE6ICNJR.js.map +1 -0
  94. package/dist/{chunk-YJXP6AOL.cjs → chunk-AF33UCTN.cjs} +4 -4
  95. package/dist/{chunk-YJXP6AOL.cjs.map → chunk-AF33UCTN.cjs.map} +1 -1
  96. package/dist/{chunk-PM5I5ZHK.cjs → chunk-AFFR7HHZ.cjs} +8 -7
  97. package/dist/chunk-AFFR7HHZ.cjs.map +1 -0
  98. package/dist/{chunk-F4OYQ2XZ.js → chunk-AR5DLM4K.js} +9 -6
  99. package/dist/chunk-AR5DLM4K.js.map +1 -0
  100. package/dist/{chunk-DJB3N4G3.cjs → chunk-AVGZ4PPC.cjs} +9 -9
  101. package/dist/{chunk-DJB3N4G3.cjs.map → chunk-AVGZ4PPC.cjs.map} +1 -1
  102. package/dist/{chunk-RANTYGKW.js → chunk-AXW55PQG.js} +3 -3
  103. package/dist/chunk-AXW55PQG.js.map +1 -0
  104. package/dist/{chunk-OASSZI6M.cjs → chunk-AZ5DWOQY.cjs} +5 -4
  105. package/dist/chunk-AZ5DWOQY.cjs.map +1 -0
  106. package/dist/{chunk-NSJBVV7R.js → chunk-BPTCMI3E.js} +21 -10
  107. package/dist/chunk-BPTCMI3E.js.map +1 -0
  108. package/dist/{chunk-PDVU2PXR.js → chunk-BQENLOEV.js} +10 -10
  109. package/dist/chunk-BQENLOEV.js.map +1 -0
  110. package/dist/{chunk-25HRO7HQ.cjs → chunk-BYMOPR7P.cjs} +7 -7
  111. package/dist/chunk-BYMOPR7P.cjs.map +1 -0
  112. package/dist/{chunk-FKZB27OM.cjs → chunk-C6EVRWXZ.cjs} +11 -8
  113. package/dist/chunk-C6EVRWXZ.cjs.map +1 -0
  114. package/dist/{chunk-GTS3QA7M.js → chunk-CO2NEUFK.js} +5 -5
  115. package/dist/chunk-CO2NEUFK.js.map +1 -0
  116. package/dist/{chunk-ESCIXKFT.js → chunk-D6NISIKV.js} +17 -7
  117. package/dist/chunk-D6NISIKV.js.map +1 -0
  118. package/dist/{chunk-MRZXTL46.cjs → chunk-DFROB5TW.cjs} +20 -20
  119. package/dist/{chunk-MRZXTL46.cjs.map → chunk-DFROB5TW.cjs.map} +1 -1
  120. package/dist/{chunk-KFA7B6WP.cjs → chunk-DPPDZOMY.cjs} +17 -7
  121. package/dist/chunk-DPPDZOMY.cjs.map +1 -0
  122. package/dist/{chunk-BXPLERIJ.js → chunk-DW2PHLOA.js} +5 -4
  123. package/dist/chunk-DW2PHLOA.js.map +1 -0
  124. package/dist/{chunk-BYO5RUDE.cjs → chunk-DXLPBLNC.cjs} +6 -5
  125. package/dist/chunk-DXLPBLNC.cjs.map +1 -0
  126. package/dist/{chunk-5WQ6FPSP.js → chunk-E2AEU5SP.js} +4 -4
  127. package/dist/{chunk-5WQ6FPSP.js.map → chunk-E2AEU5SP.js.map} +1 -1
  128. package/dist/{chunk-3QCAOD2W.cjs → chunk-EC4ZYZNK.cjs} +3 -3
  129. package/dist/{chunk-3QCAOD2W.cjs.map → chunk-EC4ZYZNK.cjs.map} +1 -1
  130. package/dist/{chunk-KXYMMNNV.js → chunk-EDIX6EXQ.js} +20 -20
  131. package/dist/{chunk-KXYMMNNV.js.map → chunk-EDIX6EXQ.js.map} +1 -1
  132. package/dist/{chunk-KOAMRCSC.cjs → chunk-ETUDUDSL.cjs} +14 -11
  133. package/dist/chunk-ETUDUDSL.cjs.map +1 -0
  134. package/dist/{chunk-LY3RQB3H.js → chunk-F3U4AVGF.js} +3 -3
  135. package/dist/{chunk-LY3RQB3H.js.map → chunk-F3U4AVGF.js.map} +1 -1
  136. package/dist/{chunk-CNWTYRZC.cjs → chunk-FF5G3E76.cjs} +4 -4
  137. package/dist/{chunk-CNWTYRZC.cjs.map → chunk-FF5G3E76.cjs.map} +1 -1
  138. package/dist/{chunk-WNWEC5OU.cjs → chunk-FKHYJ5IC.cjs} +3 -3
  139. package/dist/{chunk-WNWEC5OU.cjs.map → chunk-FKHYJ5IC.cjs.map} +1 -1
  140. package/dist/{chunk-QP6VNKLW.cjs → chunk-FNPII6TF.cjs} +9 -5
  141. package/dist/chunk-FNPII6TF.cjs.map +1 -0
  142. package/dist/{chunk-JY2RC6I4.js → chunk-FQCLJZZS.js} +13 -10
  143. package/dist/chunk-FQCLJZZS.js.map +1 -0
  144. package/dist/{chunk-EQ7G5F6K.js → chunk-FRUHEDZN.js} +3 -3
  145. package/dist/{chunk-EQ7G5F6K.js.map → chunk-FRUHEDZN.js.map} +1 -1
  146. package/dist/{chunk-BJL3VDRK.cjs → chunk-FY2WDVKF.cjs} +3 -3
  147. package/dist/{chunk-BJL3VDRK.cjs.map → chunk-FY2WDVKF.cjs.map} +1 -1
  148. package/dist/{chunk-SKMORSBO.cjs → chunk-FZQWFDUV.cjs} +5 -5
  149. package/dist/chunk-FZQWFDUV.cjs.map +1 -0
  150. package/dist/{chunk-HNJXBMHI.cjs → chunk-G5MDMQVQ.cjs} +40 -39
  151. package/dist/chunk-G5MDMQVQ.cjs.map +1 -0
  152. package/dist/{chunk-4DL2U23D.cjs → chunk-GE2ZGE3A.cjs} +21 -13
  153. package/dist/chunk-GE2ZGE3A.cjs.map +1 -0
  154. package/dist/{chunk-THMFLRDW.cjs → chunk-GE6TSA3M.cjs} +17 -17
  155. package/dist/{chunk-THMFLRDW.cjs.map → chunk-GE6TSA3M.cjs.map} +1 -1
  156. package/dist/{chunk-MQ6VGG62.js → chunk-GJWNZMJT.js} +14 -11
  157. package/dist/chunk-GJWNZMJT.js.map +1 -0
  158. package/dist/{chunk-5TP642UT.js → chunk-GODJVIIO.js} +12 -11
  159. package/dist/chunk-GODJVIIO.js.map +1 -0
  160. package/dist/{chunk-PIG3UTHU.js → chunk-GZSRKBYI.js} +3 -3
  161. package/dist/{chunk-PIG3UTHU.js.map → chunk-GZSRKBYI.js.map} +1 -1
  162. package/dist/{chunk-FR4RHVPR.js → chunk-H7IQVCTX.js} +6 -4
  163. package/dist/chunk-H7IQVCTX.js.map +1 -0
  164. package/dist/{chunk-KOTUFZJ6.cjs → chunk-H7OTLGRD.cjs} +14 -11
  165. package/dist/chunk-H7OTLGRD.cjs.map +1 -0
  166. package/dist/{chunk-K5MQZTDW.cjs → chunk-HKLBCA5X.cjs} +4 -4
  167. package/dist/{chunk-K5MQZTDW.cjs.map → chunk-HKLBCA5X.cjs.map} +1 -1
  168. package/dist/{chunk-5QKQXM5V.cjs → chunk-HYU46SOE.cjs} +5 -5
  169. package/dist/{chunk-5QKQXM5V.cjs.map → chunk-HYU46SOE.cjs.map} +1 -1
  170. package/dist/{chunk-X2A3NAJW.js → chunk-I65KXHYL.js} +4 -4
  171. package/dist/chunk-I65KXHYL.js.map +1 -0
  172. package/dist/{chunk-USWQAMI3.js → chunk-IF6EITB5.js} +3 -3
  173. package/dist/{chunk-USWQAMI3.js.map → chunk-IF6EITB5.js.map} +1 -1
  174. package/dist/{chunk-DXZCKDYS.js → chunk-IG2UDCBA.js} +9 -9
  175. package/dist/chunk-IG2UDCBA.js.map +1 -0
  176. package/dist/{chunk-YQZB5Z7C.cjs → chunk-INC35VEE.cjs} +3 -2
  177. package/dist/chunk-INC35VEE.cjs.map +1 -0
  178. package/dist/{chunk-AQ4DZT4Y.cjs → chunk-ISAHWGMD.cjs} +6 -6
  179. package/dist/{chunk-AQ4DZT4Y.cjs.map → chunk-ISAHWGMD.cjs.map} +1 -1
  180. package/dist/{chunk-PJNUGSKI.js → chunk-IYG436ZY.js} +26 -25
  181. package/dist/chunk-IYG436ZY.js.map +1 -0
  182. package/dist/{chunk-Z4UXLQSK.cjs → chunk-JDFJK5GO.cjs} +16 -16
  183. package/dist/chunk-JDFJK5GO.cjs.map +1 -0
  184. package/dist/{chunk-MAZEX4EZ.cjs → chunk-JQIFCWNZ.cjs} +13 -13
  185. package/dist/{chunk-MAZEX4EZ.cjs.map → chunk-JQIFCWNZ.cjs.map} +1 -1
  186. package/dist/{chunk-MKGWHSNV.cjs → chunk-JV2HEOCB.cjs} +5 -4
  187. package/dist/chunk-JV2HEOCB.cjs.map +1 -0
  188. package/dist/{chunk-GDH43QH6.js → chunk-KAKKZDCE.js} +6 -6
  189. package/dist/{chunk-GDH43QH6.js.map → chunk-KAKKZDCE.js.map} +1 -1
  190. package/dist/{chunk-DJYG7DXS.js → chunk-KDRBUF5S.js} +4 -4
  191. package/dist/chunk-KDRBUF5S.js.map +1 -0
  192. package/dist/{chunk-ZVDW2VX5.cjs → chunk-KGSL6SVX.cjs} +3 -3
  193. package/dist/chunk-KGSL6SVX.cjs.map +1 -0
  194. package/dist/{chunk-YAPGHVBZ.js → chunk-KRECSPD3.js} +4 -4
  195. package/dist/{chunk-YAPGHVBZ.js.map → chunk-KRECSPD3.js.map} +1 -1
  196. package/dist/{chunk-NPSKZ7ZB.cjs → chunk-L5NDZEL6.cjs} +12 -12
  197. package/dist/{chunk-NPSKZ7ZB.cjs.map → chunk-L5NDZEL6.cjs.map} +1 -1
  198. package/dist/{chunk-UE3QO7R3.js → chunk-LAQT5FFV.js} +3 -3
  199. package/dist/{chunk-UE3QO7R3.js.map → chunk-LAQT5FFV.js.map} +1 -1
  200. package/dist/{chunk-YH75G6SP.cjs → chunk-LHHELLMT.cjs} +3 -3
  201. package/dist/{chunk-YH75G6SP.cjs.map → chunk-LHHELLMT.cjs.map} +1 -1
  202. package/dist/{chunk-UK6BGM74.cjs → chunk-LREJ7AV2.cjs} +17 -4
  203. package/dist/chunk-LREJ7AV2.cjs.map +1 -0
  204. package/dist/{chunk-Y3QAEF2P.cjs → chunk-LVNCNMKD.cjs} +9 -7
  205. package/dist/chunk-LVNCNMKD.cjs.map +1 -0
  206. package/dist/{chunk-UZCR7DK5.js → chunk-LXEOBSEZ.js} +3 -3
  207. package/dist/{chunk-UZCR7DK5.js.map → chunk-LXEOBSEZ.js.map} +1 -1
  208. package/dist/{chunk-HLI6RB5V.cjs → chunk-M5ER3Y5I.cjs} +32 -31
  209. package/dist/chunk-M5ER3Y5I.cjs.map +1 -0
  210. package/dist/{chunk-CEFK54WP.cjs → chunk-MDAI54AG.cjs} +7 -5
  211. package/dist/chunk-MDAI54AG.cjs.map +1 -0
  212. package/dist/{chunk-WE5WGVVX.js → chunk-MKDTXMCE.js} +3 -3
  213. package/dist/{chunk-WE5WGVVX.js.map → chunk-MKDTXMCE.js.map} +1 -1
  214. package/dist/{chunk-SXXDTW7S.js → chunk-NETUI353.js} +10 -4
  215. package/dist/chunk-NETUI353.js.map +1 -0
  216. package/dist/{chunk-XHUV3VSM.cjs → chunk-NIFHAFKK.cjs} +3 -3
  217. package/dist/{chunk-XHUV3VSM.cjs.map → chunk-NIFHAFKK.cjs.map} +1 -1
  218. package/dist/{chunk-LKN7FYW6.js → chunk-NW2LQRUP.js} +4 -4
  219. package/dist/chunk-NW2LQRUP.js.map +1 -0
  220. package/dist/{chunk-ONHT2PDW.cjs → chunk-NWP5EGSR.cjs} +3 -3
  221. package/dist/{chunk-ONHT2PDW.cjs.map → chunk-NWP5EGSR.cjs.map} +1 -1
  222. package/dist/{chunk-RSLZL6VP.js → chunk-OBA2LR4I.js} +3 -3
  223. package/dist/chunk-OBA2LR4I.js.map +1 -0
  224. package/dist/{chunk-VSTUGU7W.js → chunk-PIYQPXLT.js} +8 -8
  225. package/dist/{chunk-VSTUGU7W.js.map → chunk-PIYQPXLT.js.map} +1 -1
  226. package/dist/{chunk-WX5XYDVN.js → chunk-PZTFGPQJ.js} +3 -3
  227. package/dist/{chunk-WX5XYDVN.js.map → chunk-PZTFGPQJ.js.map} +1 -1
  228. package/dist/{chunk-4GPH7HOR.js → chunk-Q4CNEHVN.js} +3 -3
  229. package/dist/{chunk-4GPH7HOR.js.map → chunk-Q4CNEHVN.js.map} +1 -1
  230. package/dist/{chunk-I2VAGZXY.cjs → chunk-Q62RDKRA.cjs} +11 -11
  231. package/dist/{chunk-I2VAGZXY.cjs.map → chunk-Q62RDKRA.cjs.map} +1 -1
  232. package/dist/{chunk-QF7CD4JH.cjs → chunk-Q7XL37T3.cjs} +5 -5
  233. package/dist/{chunk-QF7CD4JH.cjs.map → chunk-Q7XL37T3.cjs.map} +1 -1
  234. package/dist/{chunk-XZOBGKZL.cjs → chunk-QAM6N3VG.cjs} +6 -5
  235. package/dist/chunk-QAM6N3VG.cjs.map +1 -0
  236. package/dist/{chunk-BLOX7MRO.js → chunk-QE7KXMUZ.js} +3 -3
  237. package/dist/{chunk-BLOX7MRO.js.map → chunk-QE7KXMUZ.js.map} +1 -1
  238. package/dist/{chunk-ZPBKRJMH.js → chunk-QEJBMXRQ.js} +7 -7
  239. package/dist/chunk-QEJBMXRQ.js.map +1 -0
  240. package/dist/{chunk-PCNJJVTF.cjs → chunk-QMZK7SRS.cjs} +3 -3
  241. package/dist/chunk-QMZK7SRS.cjs.map +1 -0
  242. package/dist/{chunk-TFX4LL7V.js → chunk-QSRYTWQN.js} +3 -2
  243. package/dist/chunk-QSRYTWQN.js.map +1 -0
  244. package/dist/{chunk-Z7SQMQTF.cjs → chunk-QU6HZH6V.cjs} +21 -10
  245. package/dist/chunk-QU6HZH6V.cjs.map +1 -0
  246. package/dist/{chunk-GR2WKBER.js → chunk-QUZOGRZS.js} +4 -3
  247. package/dist/chunk-QUZOGRZS.js.map +1 -0
  248. package/dist/{chunk-WGRLNXNB.js → chunk-R3PCZSBQ.js} +3 -3
  249. package/dist/{chunk-WGRLNXNB.js.map → chunk-R3PCZSBQ.js.map} +1 -1
  250. package/dist/{chunk-EZZKHMR4.js → chunk-R6O6SLXK.js} +3 -3
  251. package/dist/{chunk-EZZKHMR4.js.map → chunk-R6O6SLXK.js.map} +1 -1
  252. package/dist/{chunk-5EW47IH7.js → chunk-RCTPN5QK.js} +9 -7
  253. package/dist/chunk-RCTPN5QK.js.map +1 -0
  254. package/dist/{chunk-JSD6IEBW.js → chunk-RFTDMQ56.js} +3 -3
  255. package/dist/{chunk-JSD6IEBW.js.map → chunk-RFTDMQ56.js.map} +1 -1
  256. package/dist/{chunk-6PRXG7L6.js → chunk-RSB2P3JK.js} +4 -4
  257. package/dist/{chunk-6PRXG7L6.js.map → chunk-RSB2P3JK.js.map} +1 -1
  258. package/dist/{chunk-2G6TIX5Q.cjs → chunk-RVBA4LEB.cjs} +13 -13
  259. package/dist/{chunk-2G6TIX5Q.cjs.map → chunk-RVBA4LEB.cjs.map} +1 -1
  260. package/dist/{chunk-UVUBV4VZ.js → chunk-S2ID4NNQ.js} +6 -6
  261. package/dist/{chunk-UVUBV4VZ.js.map → chunk-S2ID4NNQ.js.map} +1 -1
  262. package/dist/{chunk-TMQF2CRN.js → chunk-S4JQPOBR.js} +7 -7
  263. package/dist/chunk-S4JQPOBR.js.map +1 -0
  264. package/dist/{chunk-ETNQ4AEQ.cjs → chunk-S6TVSQDT.cjs} +5 -5
  265. package/dist/{chunk-ETNQ4AEQ.cjs.map → chunk-S6TVSQDT.cjs.map} +1 -1
  266. package/dist/{chunk-SSCW67KA.cjs → chunk-SD6YAMDH.cjs} +4 -4
  267. package/dist/chunk-SD6YAMDH.cjs.map +1 -0
  268. package/dist/{chunk-MLZGGAXQ.js → chunk-SOIGBPK6.js} +21 -13
  269. package/dist/chunk-SOIGBPK6.js.map +1 -0
  270. package/dist/{chunk-7QENPLOP.cjs → chunk-TQDZZIOW.cjs} +5 -5
  271. package/dist/{chunk-7QENPLOP.cjs.map → chunk-TQDZZIOW.cjs.map} +1 -1
  272. package/dist/{chunk-MPCZUZ4O.cjs → chunk-U4KUW3RK.cjs} +19 -15
  273. package/dist/chunk-U4KUW3RK.cjs.map +1 -0
  274. package/dist/{chunk-AZQXPI5S.js → chunk-UBLMYH6C.js} +3 -3
  275. package/dist/{chunk-AZQXPI5S.js.map → chunk-UBLMYH6C.js.map} +1 -1
  276. package/dist/{chunk-P53432AK.cjs → chunk-UIBAIWUR.cjs} +4 -4
  277. package/dist/{chunk-P53432AK.cjs.map → chunk-UIBAIWUR.cjs.map} +1 -1
  278. package/dist/{chunk-KKYILQTG.cjs → chunk-UORN3Z7R.cjs} +7 -7
  279. package/dist/{chunk-KKYILQTG.cjs.map → chunk-UORN3Z7R.cjs.map} +1 -1
  280. package/dist/{chunk-UXYFM2XT.cjs → chunk-UQABXIQV.cjs} +6 -4
  281. package/dist/chunk-UQABXIQV.cjs.map +1 -0
  282. package/dist/chunk-US5R36TQ.js +17 -0
  283. package/dist/chunk-US5R36TQ.js.map +1 -0
  284. package/dist/{chunk-CS2ZYMYP.js → chunk-UZZJJ3HJ.js} +3 -3
  285. package/dist/{chunk-CS2ZYMYP.js.map → chunk-UZZJJ3HJ.js.map} +1 -1
  286. package/dist/{chunk-Y7RGUUTS.cjs → chunk-V3EKI3VV.cjs} +3 -3
  287. package/dist/{chunk-Y7RGUUTS.cjs.map → chunk-V3EKI3VV.cjs.map} +1 -1
  288. package/dist/{chunk-U4Y7ZXME.js → chunk-V64XIPYG.js} +6 -6
  289. package/dist/{chunk-U4Y7ZXME.js.map → chunk-V64XIPYG.js.map} +1 -1
  290. package/dist/{chunk-RWU2MFUL.js → chunk-VGUAIFGE.js} +5 -4
  291. package/dist/chunk-VGUAIFGE.js.map +1 -0
  292. package/dist/{chunk-LIVC3WUU.cjs → chunk-VH34IZ7R.cjs} +3 -3
  293. package/dist/{chunk-LIVC3WUU.cjs.map → chunk-VH34IZ7R.cjs.map} +1 -1
  294. package/dist/{chunk-WNUAGRQN.cjs → chunk-VOAC5OKY.cjs} +4 -4
  295. package/dist/chunk-VOAC5OKY.cjs.map +1 -0
  296. package/dist/{chunk-H7ELUIF6.cjs → chunk-W53SZTPX.cjs} +10 -10
  297. package/dist/{chunk-H7ELUIF6.cjs.map → chunk-W53SZTPX.cjs.map} +1 -1
  298. package/dist/{chunk-4FH2JHUY.js → chunk-WAEOIEDI.js} +5 -5
  299. package/dist/{chunk-4FH2JHUY.js.map → chunk-WAEOIEDI.js.map} +1 -1
  300. package/dist/{chunk-ICMLLZKZ.js → chunk-WJE7UX2G.js} +4 -4
  301. package/dist/{chunk-ICMLLZKZ.js.map → chunk-WJE7UX2G.js.map} +1 -1
  302. package/dist/{chunk-DTOIO42M.js → chunk-WLRKE4HC.js} +9 -5
  303. package/dist/chunk-WLRKE4HC.js.map +1 -0
  304. package/dist/{chunk-7ZCNZUZK.cjs → chunk-WOURDD4U.cjs} +4 -4
  305. package/dist/{chunk-7ZCNZUZK.cjs.map → chunk-WOURDD4U.cjs.map} +1 -1
  306. package/dist/{chunk-OTM7RL2L.js → chunk-WSU36HJM.js} +4 -4
  307. package/dist/{chunk-OTM7RL2L.js.map → chunk-WSU36HJM.js.map} +1 -1
  308. package/dist/{chunk-TAYJSIOP.js → chunk-X4NXS42J.js} +5 -5
  309. package/dist/{chunk-TAYJSIOP.js.map → chunk-X4NXS42J.js.map} +1 -1
  310. package/dist/{chunk-2UTN3EFK.js → chunk-XALAQZCD.js} +5 -5
  311. package/dist/{chunk-2UTN3EFK.js.map → chunk-XALAQZCD.js.map} +1 -1
  312. package/dist/{chunk-RZUYCZ5D.cjs → chunk-XCFBMHQD.cjs} +6 -4
  313. package/dist/chunk-XCFBMHQD.cjs.map +1 -0
  314. package/dist/{chunk-NZHVDWOM.cjs → chunk-XEI5JG7C.cjs} +3 -3
  315. package/dist/{chunk-NZHVDWOM.cjs.map → chunk-XEI5JG7C.cjs.map} +1 -1
  316. package/dist/{chunk-O3F6DYWR.cjs → chunk-XG6J5MOK.cjs} +3 -3
  317. package/dist/{chunk-O3F6DYWR.cjs.map → chunk-XG6J5MOK.cjs.map} +1 -1
  318. package/dist/{chunk-J2DI6RMR.cjs → chunk-XGGAAG74.cjs} +14 -11
  319. package/dist/chunk-XGGAAG74.cjs.map +1 -0
  320. package/dist/{chunk-GVMWJ4NI.js → chunk-XH24BGEK.js} +6 -6
  321. package/dist/{chunk-GVMWJ4NI.js.map → chunk-XH24BGEK.js.map} +1 -1
  322. package/dist/{chunk-3S5ED522.js → chunk-XO4GHRA2.js} +11 -8
  323. package/dist/chunk-XO4GHRA2.js.map +1 -0
  324. package/dist/{chunk-O5ORO2RX.cjs → chunk-XQF4HCOV.cjs} +13 -11
  325. package/dist/chunk-XQF4HCOV.cjs.map +1 -0
  326. package/dist/{chunk-VZTXUYPM.cjs → chunk-XT4WBBCD.cjs} +20 -20
  327. package/dist/chunk-XT4WBBCD.cjs.map +1 -0
  328. package/dist/{chunk-Z44A7NPD.cjs → chunk-YBBBX5H2.cjs} +40 -39
  329. package/dist/chunk-YBBBX5H2.cjs.map +1 -0
  330. package/dist/{chunk-IUCYRQ4J.js → chunk-YPYZZLZ5.js} +5 -5
  331. package/dist/{chunk-IUCYRQ4J.js.map → chunk-YPYZZLZ5.js.map} +1 -1
  332. package/dist/{chunk-NVXTHTJI.js → chunk-YTWMIVRI.js} +10 -10
  333. package/dist/chunk-YTWMIVRI.js.map +1 -0
  334. package/dist/{chunk-WZAKEJDL.js → chunk-YZW7HQXH.js} +13 -11
  335. package/dist/chunk-YZW7HQXH.js.map +1 -0
  336. package/dist/{chunk-AYBKPAI2.cjs → chunk-Z5MNYYUJ.cjs} +3 -3
  337. package/dist/{chunk-AYBKPAI2.cjs.map → chunk-Z5MNYYUJ.cjs.map} +1 -1
  338. package/dist/{chunk-GOE36IXL.js → chunk-Z6M3UELD.js} +3 -3
  339. package/dist/{chunk-GOE36IXL.js.map → chunk-Z6M3UELD.js.map} +1 -1
  340. package/dist/{chunk-PXZRYL5I.js → chunk-ZBXJDQXN.js} +12 -4
  341. package/dist/chunk-ZBXJDQXN.js.map +1 -0
  342. package/dist/{chunk-M5SEYDSS.cjs → chunk-ZDHLEHYR.cjs} +6 -6
  343. package/dist/{chunk-M5SEYDSS.cjs.map → chunk-ZDHLEHYR.cjs.map} +1 -1
  344. package/dist/{chunk-SCGTO3PX.js → chunk-ZHTK4IPQ.js} +3 -3
  345. package/dist/{chunk-SCGTO3PX.js.map → chunk-ZHTK4IPQ.js.map} +1 -1
  346. package/dist/{chunk-QF2FODTG.js → chunk-ZL5QVNKG.js} +10 -6
  347. package/dist/chunk-ZL5QVNKG.js.map +1 -0
  348. package/dist/{chunk-6GVOW3UL.js → chunk-ZUJVGHFW.js} +12 -11
  349. package/dist/chunk-ZUJVGHFW.js.map +1 -0
  350. package/dist/code-block.cjs +4 -4
  351. package/dist/code-block.js +3 -3
  352. package/dist/code-view.cjs +2 -2
  353. package/dist/code-view.js +1 -1
  354. package/dist/command.cjs +3 -3
  355. package/dist/command.js +1 -1
  356. package/dist/composer.cjs +7 -6
  357. package/dist/composer.js +5 -4
  358. package/dist/content-renderer.cjs +6 -6
  359. package/dist/content-renderer.js +3 -3
  360. package/dist/context-menu.cjs +4 -3
  361. package/dist/context-menu.d.cts +2 -0
  362. package/dist/context-menu.d.ts +2 -0
  363. package/dist/context-menu.js +2 -1
  364. package/dist/date-picker.cjs +5 -5
  365. package/dist/date-picker.js +4 -4
  366. package/dist/drawer.cjs +3 -3
  367. package/dist/drawer.d.cts +10 -4
  368. package/dist/drawer.d.ts +10 -4
  369. package/dist/drawer.js +1 -1
  370. package/dist/dropdown.cjs +5 -4
  371. package/dist/dropdown.js +3 -2
  372. package/dist/editor.cjs +9 -8
  373. package/dist/editor.js +7 -6
  374. package/dist/emoji-select.cjs +2 -2
  375. package/dist/emoji-select.js +1 -1
  376. package/dist/eyebrow.cjs +2 -2
  377. package/dist/eyebrow.js +1 -1
  378. package/dist/faux-client.cjs +2 -2
  379. package/dist/faux-client.js +1 -1
  380. package/dist/field.cjs +3 -3
  381. package/dist/field.js +2 -2
  382. package/dist/file-browser.cjs +6 -5
  383. package/dist/file-browser.js +2 -1
  384. package/dist/file-upload.cjs +3 -3
  385. package/dist/file-upload.js +1 -1
  386. package/dist/image-viewer.cjs +3 -3
  387. package/dist/image-viewer.js +2 -2
  388. package/dist/index-list.cjs +2 -2
  389. package/dist/index-list.js +1 -1
  390. package/dist/index.cjs +213 -212
  391. package/dist/index.cjs.map +1 -1
  392. package/dist/index.d.cts +19 -1
  393. package/dist/index.d.ts +19 -1
  394. package/dist/index.js +78 -77
  395. package/dist/index.js.map +1 -1
  396. package/dist/input-tag.cjs +7 -6
  397. package/dist/input-tag.d.cts +6 -2
  398. package/dist/input-tag.d.ts +6 -2
  399. package/dist/input-tag.js +2 -1
  400. package/dist/input.cjs +10 -9
  401. package/dist/input.js +9 -8
  402. package/dist/inputs.cjs +32 -31
  403. package/dist/inputs.js +19 -18
  404. package/dist/json-editor.cjs +27 -26
  405. package/dist/json-editor.js +16 -15
  406. package/dist/magic-wand.cjs +8 -8
  407. package/dist/magic-wand.js +7 -7
  408. package/dist/marquee.cjs +2 -2
  409. package/dist/marquee.js +1 -1
  410. package/dist/media-viewer.cjs +5 -5
  411. package/dist/media-viewer.js +4 -4
  412. package/dist/menu.cjs +3 -3
  413. package/dist/menu.js +1 -1
  414. package/dist/mobile-menu.cjs +5 -4
  415. package/dist/mobile-menu.d.cts +2 -1
  416. package/dist/mobile-menu.d.ts +2 -1
  417. package/dist/mobile-menu.js +3 -2
  418. package/dist/mode.cjs +3 -3
  419. package/dist/mode.js +2 -2
  420. package/dist/multi-switch.cjs +6 -5
  421. package/dist/multi-switch.js +5 -4
  422. package/dist/number-field.cjs +11 -10
  423. package/dist/number-field.js +10 -9
  424. package/dist/otp-input.cjs +3 -2
  425. package/dist/otp-input.js +2 -1
  426. package/dist/pagination.cjs +2 -2
  427. package/dist/pagination.js +1 -1
  428. package/dist/paste-pills.cjs +17 -16
  429. package/dist/paste-pills.js +4 -3
  430. package/dist/pdf-viewer.cjs +3 -3
  431. package/dist/pdf-viewer.js +2 -2
  432. package/dist/popover.cjs +5 -4
  433. package/dist/popover.js +3 -2
  434. package/dist/profile.cjs +3 -3
  435. package/dist/profile.js +2 -2
  436. package/dist/progress.cjs +2 -2
  437. package/dist/progress.js +1 -1
  438. package/dist/prompt-input.cjs +10 -9
  439. package/dist/prompt-input.js +7 -6
  440. package/dist/qr-code.cjs +8 -8
  441. package/dist/qr-code.js +2 -2
  442. package/dist/radio-group.cjs +5 -5
  443. package/dist/radio-group.js +4 -4
  444. package/dist/reason-tag.cjs +6 -5
  445. package/dist/reason-tag.js +5 -4
  446. package/dist/reorderable-grid.cjs +4 -3
  447. package/dist/reorderable-grid.js +2 -1
  448. package/dist/resizable-panels.cjs +3 -2
  449. package/dist/resizable-panels.js +2 -1
  450. package/dist/select.cjs +8 -7
  451. package/dist/select.js +7 -6
  452. package/dist/separator.cjs +2 -2
  453. package/dist/separator.js +1 -1
  454. package/dist/sidebar.cjs +6 -5
  455. package/dist/sidebar.js +4 -3
  456. package/dist/slider.cjs +5 -5
  457. package/dist/slider.js +4 -4
  458. package/dist/stat-list.cjs +2 -2
  459. package/dist/stat-list.d.cts +5 -2
  460. package/dist/stat-list.d.ts +5 -2
  461. package/dist/stat-list.js +1 -1
  462. package/dist/stepper.cjs +3 -2
  463. package/dist/stepper.js +2 -1
  464. package/dist/styles.css +24 -0
  465. package/dist/styles.css.map +1 -1
  466. package/dist/switch.cjs +3 -3
  467. package/dist/switch.js +2 -2
  468. package/dist/table.cjs +11 -11
  469. package/dist/table.js +1 -1
  470. package/dist/tabs.cjs +4 -3
  471. package/dist/tabs.js +2 -1
  472. package/dist/textarea.cjs +6 -6
  473. package/dist/textarea.js +5 -5
  474. package/dist/time-grid.cjs +3 -2
  475. package/dist/time-grid.js +2 -1
  476. package/dist/time-picker.cjs +2 -2
  477. package/dist/time-picker.js +1 -1
  478. package/dist/timeline.cjs +4 -4
  479. package/dist/timeline.js +1 -1
  480. package/dist/toast.cjs +4 -3
  481. package/dist/toast.d.cts +6 -2
  482. package/dist/toast.d.ts +6 -2
  483. package/dist/toast.js +2 -1
  484. package/dist/tooltip.cjs +4 -3
  485. package/dist/tooltip.js +3 -2
  486. package/dist/tree-nav.cjs +3 -3
  487. package/dist/tree-nav.js +1 -1
  488. package/docs/Dropdown.md +1 -1
  489. package/docs/InputTag.md +1 -1
  490. package/docs/MobileMenu.md +2 -2
  491. package/docs/Popover.md +1 -1
  492. package/docs/ReorderableGrid.md +2 -0
  493. package/docs/ResizablePanels.md +2 -0
  494. package/docs/Toast.md +2 -2
  495. package/package.json +1 -1
  496. package/dist/chunk-25HRO7HQ.cjs.map +0 -1
  497. package/dist/chunk-2O5UXH5R.cjs.map +0 -1
  498. package/dist/chunk-37D5PYEF.js.map +0 -1
  499. package/dist/chunk-3S5ED522.js.map +0 -1
  500. package/dist/chunk-4DL2U23D.cjs.map +0 -1
  501. package/dist/chunk-5EW47IH7.js.map +0 -1
  502. package/dist/chunk-5TP642UT.js.map +0 -1
  503. package/dist/chunk-6GVOW3UL.js.map +0 -1
  504. package/dist/chunk-AJPYGRLA.cjs.map +0 -1
  505. package/dist/chunk-BXPLERIJ.js.map +0 -1
  506. package/dist/chunk-BYO5RUDE.cjs.map +0 -1
  507. package/dist/chunk-CEFK54WP.cjs.map +0 -1
  508. package/dist/chunk-CQ7QXZLR.cjs.map +0 -1
  509. package/dist/chunk-DJYG7DXS.js.map +0 -1
  510. package/dist/chunk-DTOIO42M.js.map +0 -1
  511. package/dist/chunk-DXZCKDYS.js.map +0 -1
  512. package/dist/chunk-ESCIXKFT.js.map +0 -1
  513. package/dist/chunk-EUVWYDFN.js.map +0 -1
  514. package/dist/chunk-F4OYQ2XZ.js.map +0 -1
  515. package/dist/chunk-FKZB27OM.cjs.map +0 -1
  516. package/dist/chunk-FR4RHVPR.js.map +0 -1
  517. package/dist/chunk-FVQO75KY.cjs.map +0 -1
  518. package/dist/chunk-GDF6XTHC.js.map +0 -1
  519. package/dist/chunk-GR2WKBER.js.map +0 -1
  520. package/dist/chunk-GTS3QA7M.js.map +0 -1
  521. package/dist/chunk-HLI6RB5V.cjs.map +0 -1
  522. package/dist/chunk-HNJXBMHI.cjs.map +0 -1
  523. package/dist/chunk-J2DI6RMR.cjs.map +0 -1
  524. package/dist/chunk-JY2RC6I4.js.map +0 -1
  525. package/dist/chunk-KFA7B6WP.cjs.map +0 -1
  526. package/dist/chunk-KOAMRCSC.cjs.map +0 -1
  527. package/dist/chunk-KOTUFZJ6.cjs.map +0 -1
  528. package/dist/chunk-LFC2DL6H.cjs.map +0 -1
  529. package/dist/chunk-LKN7FYW6.js.map +0 -1
  530. package/dist/chunk-MI57NAKF.js.map +0 -1
  531. package/dist/chunk-MKGWHSNV.cjs.map +0 -1
  532. package/dist/chunk-MLZGGAXQ.js.map +0 -1
  533. package/dist/chunk-MPCZUZ4O.cjs.map +0 -1
  534. package/dist/chunk-MQ6VGG62.js.map +0 -1
  535. package/dist/chunk-NSJBVV7R.js.map +0 -1
  536. package/dist/chunk-NVXTHTJI.js.map +0 -1
  537. package/dist/chunk-O5ORO2RX.cjs.map +0 -1
  538. package/dist/chunk-OASSZI6M.cjs.map +0 -1
  539. package/dist/chunk-PCNJJVTF.cjs.map +0 -1
  540. package/dist/chunk-PDVU2PXR.js.map +0 -1
  541. package/dist/chunk-PJNUGSKI.js.map +0 -1
  542. package/dist/chunk-PM5I5ZHK.cjs.map +0 -1
  543. package/dist/chunk-PXZRYL5I.js.map +0 -1
  544. package/dist/chunk-QF2FODTG.js.map +0 -1
  545. package/dist/chunk-QGY5FPVM.js.map +0 -1
  546. package/dist/chunk-QP6VNKLW.cjs.map +0 -1
  547. package/dist/chunk-QTS4Q2NK.js.map +0 -1
  548. package/dist/chunk-RANTYGKW.js.map +0 -1
  549. package/dist/chunk-RSLZL6VP.js.map +0 -1
  550. package/dist/chunk-RWU2MFUL.js.map +0 -1
  551. package/dist/chunk-RZUYCZ5D.cjs.map +0 -1
  552. package/dist/chunk-SKMORSBO.cjs.map +0 -1
  553. package/dist/chunk-SSCW67KA.cjs.map +0 -1
  554. package/dist/chunk-SXXDTW7S.js.map +0 -1
  555. package/dist/chunk-TFX4LL7V.js.map +0 -1
  556. package/dist/chunk-TMQF2CRN.js.map +0 -1
  557. package/dist/chunk-UK6BGM74.cjs.map +0 -1
  558. package/dist/chunk-UXYFM2XT.cjs.map +0 -1
  559. package/dist/chunk-VZTXUYPM.cjs.map +0 -1
  560. package/dist/chunk-WMANILKC.cjs.map +0 -1
  561. package/dist/chunk-WNUAGRQN.cjs.map +0 -1
  562. package/dist/chunk-WZAKEJDL.js.map +0 -1
  563. package/dist/chunk-X2A3NAJW.js.map +0 -1
  564. package/dist/chunk-XZOBGKZL.cjs.map +0 -1
  565. package/dist/chunk-Y3QAEF2P.cjs.map +0 -1
  566. package/dist/chunk-YQZB5Z7C.cjs.map +0 -1
  567. package/dist/chunk-Z44A7NPD.cjs.map +0 -1
  568. package/dist/chunk-Z4UXLQSK.cjs.map +0 -1
  569. package/dist/chunk-Z7SQMQTF.cjs.map +0 -1
  570. package/dist/chunk-ZPBKRJMH.js.map +0 -1
  571. package/dist/chunk-ZVDW2VX5.cjs.map +0 -1
package/dist/checkbox.js CHANGED
@@ -1,5 +1,5 @@
1
- export { Checkbox } from './chunk-OTM7RL2L.js';
2
- import './chunk-USWQAMI3.js';
1
+ export { Checkbox } from './chunk-WSU36HJM.js';
2
+ import './chunk-IF6EITB5.js';
3
3
  import './chunk-OL53XYHF.js';
4
4
  import './chunk-NRXK42LO.js';
5
5
  import './chunk-EDYAXGUM.js';
@@ -240,7 +240,7 @@ var Progress = react.forwardRef(
240
240
  "span",
241
241
  {
242
242
  className: chunkZU5Q77OT_cjs.cn(
243
- "mt-1 block text-right text-xs font-medium",
243
+ "mt-1 block text-end text-xs font-medium",
244
244
  progressText[color]
245
245
  ),
246
246
  children: [
@@ -257,5 +257,5 @@ var Progress = react.forwardRef(
257
257
  Progress.displayName = "Progress";
258
258
 
259
259
  exports.Progress = Progress;
260
- //# sourceMappingURL=chunk-B4YV2V7G.cjs.map
261
- //# sourceMappingURL=chunk-B4YV2V7G.cjs.map
260
+ //# sourceMappingURL=chunk-2DX3PNXU.cjs.map
261
+ //# sourceMappingURL=chunk-2DX3PNXU.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Progress/Progress.colors.ts","../src/components/Progress/Progress.tsx"],"names":["forwardRef","jsxs","cn","jsx"],"mappings":"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","file":"chunk-B4YV2V7G.cjs","sourcesContent":["// AUTO-GENERATED by scripts/gen-progress-colors — do not edit by hand.\n// 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). Regenerate after changing the palette.\nimport type { Color } from \"../../utils/types\";\n\nexport const progressFill: Record<Color, string> = {\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: \"bg-brand\",\n slate: \"bg-slate-500 dark:bg-slate-400\",\n gray: \"bg-gray-500 dark:bg-gray-400\",\n zinc: \"bg-zinc-500 dark:bg-zinc-400\",\n neutral: \"bg-neutral-500 dark:bg-neutral-400\",\n stone: \"bg-stone-500 dark:bg-stone-400\",\n red: \"bg-red-500 dark:bg-red-400\",\n orange: \"bg-orange-500 dark:bg-orange-400\",\n amber: \"bg-amber-500 dark:bg-amber-400\",\n yellow: \"bg-yellow-500 dark:bg-yellow-400\",\n lime: \"bg-lime-500 dark:bg-lime-400\",\n green: \"bg-green-500 dark:bg-green-400\",\n emerald: \"bg-emerald-500 dark:bg-emerald-400\",\n teal: \"bg-teal-500 dark:bg-teal-400\",\n cyan: \"bg-cyan-500 dark:bg-cyan-400\",\n sky: \"bg-sky-500 dark:bg-sky-400\",\n blue: \"bg-blue-500 dark:bg-blue-400\",\n indigo: \"bg-indigo-500 dark:bg-indigo-400\",\n violet: \"bg-violet-500 dark:bg-violet-400\",\n purple: \"bg-purple-500 dark:bg-purple-400\",\n fuchsia: \"bg-fuchsia-500 dark:bg-fuchsia-400\",\n pink: \"bg-pink-500 dark:bg-pink-400\",\n rose: \"bg-rose-500 dark:bg-rose-400\",\n};\n\nexport const progressStroke: Record<Color, string> = {\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: \"stroke-brand\",\n slate: \"stroke-slate-500 dark:stroke-slate-400\",\n gray: \"stroke-gray-500 dark:stroke-gray-400\",\n zinc: \"stroke-zinc-500 dark:stroke-zinc-400\",\n neutral: \"stroke-neutral-500 dark:stroke-neutral-400\",\n stone: \"stroke-stone-500 dark:stroke-stone-400\",\n red: \"stroke-red-500 dark:stroke-red-400\",\n orange: \"stroke-orange-500 dark:stroke-orange-400\",\n amber: \"stroke-amber-500 dark:stroke-amber-400\",\n yellow: \"stroke-yellow-500 dark:stroke-yellow-400\",\n lime: \"stroke-lime-500 dark:stroke-lime-400\",\n green: \"stroke-green-500 dark:stroke-green-400\",\n emerald: \"stroke-emerald-500 dark:stroke-emerald-400\",\n teal: \"stroke-teal-500 dark:stroke-teal-400\",\n cyan: \"stroke-cyan-500 dark:stroke-cyan-400\",\n sky: \"stroke-sky-500 dark:stroke-sky-400\",\n blue: \"stroke-blue-500 dark:stroke-blue-400\",\n indigo: \"stroke-indigo-500 dark:stroke-indigo-400\",\n violet: \"stroke-violet-500 dark:stroke-violet-400\",\n purple: \"stroke-purple-500 dark:stroke-purple-400\",\n fuchsia: \"stroke-fuchsia-500 dark:stroke-fuchsia-400\",\n pink: \"stroke-pink-500 dark:stroke-pink-400\",\n rose: \"stroke-rose-500 dark:stroke-rose-400\",\n};\n\nexport const progressText: Record<Color, string> = {\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: \"text-brand\",\n slate: \"text-slate-600 dark:text-slate-400\",\n gray: \"text-gray-600 dark:text-gray-400\",\n zinc: \"text-zinc-600 dark:text-zinc-400\",\n neutral: \"text-neutral-600 dark:text-neutral-400\",\n stone: \"text-stone-600 dark:text-stone-400\",\n red: \"text-red-600 dark:text-red-400\",\n orange: \"text-orange-600 dark:text-orange-400\",\n amber: \"text-amber-600 dark:text-amber-400\",\n yellow: \"text-yellow-600 dark:text-yellow-400\",\n lime: \"text-lime-600 dark:text-lime-400\",\n green: \"text-green-600 dark:text-green-400\",\n emerald: \"text-emerald-600 dark:text-emerald-400\",\n teal: \"text-teal-600 dark:text-teal-400\",\n cyan: \"text-cyan-600 dark:text-cyan-400\",\n sky: \"text-sky-600 dark:text-sky-400\",\n blue: \"text-blue-600 dark:text-blue-400\",\n indigo: \"text-indigo-600 dark:text-indigo-400\",\n violet: \"text-violet-600 dark:text-violet-400\",\n purple: \"text-purple-600 dark:text-purple-400\",\n fuchsia: \"text-fuchsia-600 dark:text-fuchsia-400\",\n pink: \"text-pink-600 dark:text-pink-400\",\n rose: \"text-rose-600 dark:text-rose-400\",\n};\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { ProgressProps } from \"./Progress.types\";\nimport { progressFill, progressStroke, progressText } from \"./Progress.colors\";\n\ntype NamedSize = \"sm\" | \"md\" | \"lg\";\n\nconst barHeightClasses: Record<NamedSize, string> = {\n sm: \"h-1.5\",\n md: \"h-2.5\",\n lg: \"h-4\",\n};\n\nconst circularSizeMap: Record<NamedSize, number> = {\n sm: 32,\n md: 48,\n lg: 64,\n};\n\nconst namedStrokeWidth: Record<NamedSize, number> = { sm: 3, md: 4, lg: 5 };\n\nconst textSizeClasses: Record<NamedSize, string> = {\n sm: \"text-[8px]\",\n md: \"text-[10px]\",\n lg: \"text-xs\",\n};\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n value = 0,\n max = 100,\n variant = \"bar\",\n size = \"md\",\n strokeWidth: strokeWidthProp,\n color = \"blue\",\n indeterminate = false,\n showValue = false,\n className,\n trackClassName,\n fillClassName,\n ...rest\n },\n ref,\n ) => {\n // Class lookups need a named key; a pixel size sizes the ring itself and\n // leaves the type/bar scales on their default.\n const named: NamedSize = typeof size === \"number\" ? \"md\" : size;\n\n const percentage = Math.min(100, Math.max(0, (value / max) * 100));\n\n if (variant === \"circular\") {\n const pixelSize = typeof size === \"number\" ? size : null;\n const diameter = pixelSize ?? circularSizeMap[named];\n // Scale with the circle when not told otherwise: a 5px stroke on a 152px\n // ring reads as a hairline, so a fixed default makes large sizes look\n // broken out of the box. The named scale keeps its exact old values.\n const strokeWidth =\n strokeWidthProp ??\n (pixelSize === null ? namedStrokeWidth[named] : Math.max(3, Math.round(diameter * 0.075)));\n const radius = (diameter - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = indeterminate ? circumference * 0.75 : circumference - (percentage / 100) * circumference;\n\n return (\n <div\n ref={ref}\n {...rest}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n data-react-fancy-progress=\"\"\n // The named diameters live in styles.css keyed off this, so they work\n // without the consumer's Tailwind generating anything — and, being\n // layered, a className utility still beats them.\n data-size={pixelSize === null ? named : undefined}\n className={cn(\n \"relative inline-flex items-center justify-center\",\n className,\n )}\n style={pixelSize === null ? undefined : { width: pixelSize, height: pixelSize }}\n >\n <svg\n // viewBox + 100% so the geometry follows the box instead of being\n // baked in: the ring now scales with whatever sizes the wrapper,\n // including a `className` override of the named scale.\n viewBox={`0 0 ${diameter} ${diameter}`}\n width=\"100%\"\n height=\"100%\"\n className={cn(indeterminate && \"animate-spin\")}\n >\n <circle\n cx={diameter / 2}\n cy={diameter / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n className={cn(\"stroke-[color:var(--fancy-border,var(--color-zinc-200))] dark:stroke-[color:var(--fancy-border-dark,var(--color-zinc-700))]\", trackClassName)}\n />\n <circle\n cx={diameter / 2}\n cy={diameter / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n className={cn(\n progressStroke[color],\n \"transition-[stroke-dashoffset] duration-300\",\n fillClassName,\n )}\n style={{ transform: \"rotate(-90deg)\", transformOrigin: \"center\" }}\n />\n </svg>\n {showValue && !indeterminate && (\n <span\n className={cn(\n \"absolute font-medium\",\n progressText[color],\n textSizeClasses[named],\n )}\n >\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n {...rest}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n data-react-fancy-progress=\"\"\n className={cn(\"relative w-full\", className)}\n >\n <div\n className={cn(\n \"w-full overflow-hidden rounded-full bg-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-[color:var(--fancy-border-dark,var(--color-zinc-700))]\",\n barHeightClasses[named],\n trackClassName,\n )}\n >\n <div\n className={cn(\n \"h-full rounded-full transition-[width] duration-300\",\n progressFill[color],\n indeterminate && \"animate-pulse w-full\",\n fillClassName,\n )}\n style={indeterminate ? undefined : { width: `${percentage}%` }}\n />\n </div>\n {showValue && !indeterminate && (\n <span\n className={cn(\n \"mt-1 block text-right text-xs font-medium\",\n progressText[color],\n )}\n >\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n );\n },\n);\n\nProgress.displayName = \"Progress\";\n"]}
1
+ {"version":3,"sources":["../src/components/Progress/Progress.colors.ts","../src/components/Progress/Progress.tsx"],"names":["forwardRef","jsxs","cn","jsx"],"mappings":"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","file":"chunk-2DX3PNXU.cjs","sourcesContent":["// AUTO-GENERATED by scripts/gen-progress-colors — do not edit by hand.\n// 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). Regenerate after changing the palette.\nimport type { Color } from \"../../utils/types\";\n\nexport const progressFill: Record<Color, string> = {\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: \"bg-brand\",\n slate: \"bg-slate-500 dark:bg-slate-400\",\n gray: \"bg-gray-500 dark:bg-gray-400\",\n zinc: \"bg-zinc-500 dark:bg-zinc-400\",\n neutral: \"bg-neutral-500 dark:bg-neutral-400\",\n stone: \"bg-stone-500 dark:bg-stone-400\",\n red: \"bg-red-500 dark:bg-red-400\",\n orange: \"bg-orange-500 dark:bg-orange-400\",\n amber: \"bg-amber-500 dark:bg-amber-400\",\n yellow: \"bg-yellow-500 dark:bg-yellow-400\",\n lime: \"bg-lime-500 dark:bg-lime-400\",\n green: \"bg-green-500 dark:bg-green-400\",\n emerald: \"bg-emerald-500 dark:bg-emerald-400\",\n teal: \"bg-teal-500 dark:bg-teal-400\",\n cyan: \"bg-cyan-500 dark:bg-cyan-400\",\n sky: \"bg-sky-500 dark:bg-sky-400\",\n blue: \"bg-blue-500 dark:bg-blue-400\",\n indigo: \"bg-indigo-500 dark:bg-indigo-400\",\n violet: \"bg-violet-500 dark:bg-violet-400\",\n purple: \"bg-purple-500 dark:bg-purple-400\",\n fuchsia: \"bg-fuchsia-500 dark:bg-fuchsia-400\",\n pink: \"bg-pink-500 dark:bg-pink-400\",\n rose: \"bg-rose-500 dark:bg-rose-400\",\n};\n\nexport const progressStroke: Record<Color, string> = {\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: \"stroke-brand\",\n slate: \"stroke-slate-500 dark:stroke-slate-400\",\n gray: \"stroke-gray-500 dark:stroke-gray-400\",\n zinc: \"stroke-zinc-500 dark:stroke-zinc-400\",\n neutral: \"stroke-neutral-500 dark:stroke-neutral-400\",\n stone: \"stroke-stone-500 dark:stroke-stone-400\",\n red: \"stroke-red-500 dark:stroke-red-400\",\n orange: \"stroke-orange-500 dark:stroke-orange-400\",\n amber: \"stroke-amber-500 dark:stroke-amber-400\",\n yellow: \"stroke-yellow-500 dark:stroke-yellow-400\",\n lime: \"stroke-lime-500 dark:stroke-lime-400\",\n green: \"stroke-green-500 dark:stroke-green-400\",\n emerald: \"stroke-emerald-500 dark:stroke-emerald-400\",\n teal: \"stroke-teal-500 dark:stroke-teal-400\",\n cyan: \"stroke-cyan-500 dark:stroke-cyan-400\",\n sky: \"stroke-sky-500 dark:stroke-sky-400\",\n blue: \"stroke-blue-500 dark:stroke-blue-400\",\n indigo: \"stroke-indigo-500 dark:stroke-indigo-400\",\n violet: \"stroke-violet-500 dark:stroke-violet-400\",\n purple: \"stroke-purple-500 dark:stroke-purple-400\",\n fuchsia: \"stroke-fuchsia-500 dark:stroke-fuchsia-400\",\n pink: \"stroke-pink-500 dark:stroke-pink-400\",\n rose: \"stroke-rose-500 dark:stroke-rose-400\",\n};\n\nexport const progressText: Record<Color, string> = {\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: \"text-brand\",\n slate: \"text-slate-600 dark:text-slate-400\",\n gray: \"text-gray-600 dark:text-gray-400\",\n zinc: \"text-zinc-600 dark:text-zinc-400\",\n neutral: \"text-neutral-600 dark:text-neutral-400\",\n stone: \"text-stone-600 dark:text-stone-400\",\n red: \"text-red-600 dark:text-red-400\",\n orange: \"text-orange-600 dark:text-orange-400\",\n amber: \"text-amber-600 dark:text-amber-400\",\n yellow: \"text-yellow-600 dark:text-yellow-400\",\n lime: \"text-lime-600 dark:text-lime-400\",\n green: \"text-green-600 dark:text-green-400\",\n emerald: \"text-emerald-600 dark:text-emerald-400\",\n teal: \"text-teal-600 dark:text-teal-400\",\n cyan: \"text-cyan-600 dark:text-cyan-400\",\n sky: \"text-sky-600 dark:text-sky-400\",\n blue: \"text-blue-600 dark:text-blue-400\",\n indigo: \"text-indigo-600 dark:text-indigo-400\",\n violet: \"text-violet-600 dark:text-violet-400\",\n purple: \"text-purple-600 dark:text-purple-400\",\n fuchsia: \"text-fuchsia-600 dark:text-fuchsia-400\",\n pink: \"text-pink-600 dark:text-pink-400\",\n rose: \"text-rose-600 dark:text-rose-400\",\n};\n","import { forwardRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { ProgressProps } from \"./Progress.types\";\nimport { progressFill, progressStroke, progressText } from \"./Progress.colors\";\n\ntype NamedSize = \"sm\" | \"md\" | \"lg\";\n\nconst barHeightClasses: Record<NamedSize, string> = {\n sm: \"h-1.5\",\n md: \"h-2.5\",\n lg: \"h-4\",\n};\n\nconst circularSizeMap: Record<NamedSize, number> = {\n sm: 32,\n md: 48,\n lg: 64,\n};\n\nconst namedStrokeWidth: Record<NamedSize, number> = { sm: 3, md: 4, lg: 5 };\n\nconst textSizeClasses: Record<NamedSize, string> = {\n sm: \"text-[8px]\",\n md: \"text-[10px]\",\n lg: \"text-xs\",\n};\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n value = 0,\n max = 100,\n variant = \"bar\",\n size = \"md\",\n strokeWidth: strokeWidthProp,\n color = \"blue\",\n indeterminate = false,\n showValue = false,\n className,\n trackClassName,\n fillClassName,\n ...rest\n },\n ref,\n ) => {\n // Class lookups need a named key; a pixel size sizes the ring itself and\n // leaves the type/bar scales on their default.\n const named: NamedSize = typeof size === \"number\" ? \"md\" : size;\n\n const percentage = Math.min(100, Math.max(0, (value / max) * 100));\n\n if (variant === \"circular\") {\n const pixelSize = typeof size === \"number\" ? size : null;\n const diameter = pixelSize ?? circularSizeMap[named];\n // Scale with the circle when not told otherwise: a 5px stroke on a 152px\n // ring reads as a hairline, so a fixed default makes large sizes look\n // broken out of the box. The named scale keeps its exact old values.\n const strokeWidth =\n strokeWidthProp ??\n (pixelSize === null ? namedStrokeWidth[named] : Math.max(3, Math.round(diameter * 0.075)));\n const radius = (diameter - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const offset = indeterminate ? circumference * 0.75 : circumference - (percentage / 100) * circumference;\n\n return (\n <div\n ref={ref}\n {...rest}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n data-react-fancy-progress=\"\"\n // The named diameters live in styles.css keyed off this, so they work\n // without the consumer's Tailwind generating anything — and, being\n // layered, a className utility still beats them.\n data-size={pixelSize === null ? named : undefined}\n className={cn(\n \"relative inline-flex items-center justify-center\",\n className,\n )}\n style={pixelSize === null ? undefined : { width: pixelSize, height: pixelSize }}\n >\n <svg\n // viewBox + 100% so the geometry follows the box instead of being\n // baked in: the ring now scales with whatever sizes the wrapper,\n // including a `className` override of the named scale.\n viewBox={`0 0 ${diameter} ${diameter}`}\n width=\"100%\"\n height=\"100%\"\n className={cn(indeterminate && \"animate-spin\")}\n >\n <circle\n cx={diameter / 2}\n cy={diameter / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n className={cn(\"stroke-[color:var(--fancy-border,var(--color-zinc-200))] dark:stroke-[color:var(--fancy-border-dark,var(--color-zinc-700))]\", trackClassName)}\n />\n <circle\n cx={diameter / 2}\n cy={diameter / 2}\n r={radius}\n fill=\"none\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n className={cn(\n progressStroke[color],\n \"transition-[stroke-dashoffset] duration-300\",\n fillClassName,\n )}\n style={{ transform: \"rotate(-90deg)\", transformOrigin: \"center\" }}\n />\n </svg>\n {showValue && !indeterminate && (\n <span\n className={cn(\n \"absolute font-medium\",\n progressText[color],\n textSizeClasses[named],\n )}\n >\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n {...rest}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n data-react-fancy-progress=\"\"\n className={cn(\"relative w-full\", className)}\n >\n <div\n className={cn(\n \"w-full overflow-hidden rounded-full bg-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-[color:var(--fancy-border-dark,var(--color-zinc-700))]\",\n barHeightClasses[named],\n trackClassName,\n )}\n >\n <div\n className={cn(\n \"h-full rounded-full transition-[width] duration-300\",\n progressFill[color],\n indeterminate && \"animate-pulse w-full\",\n fillClassName,\n )}\n style={indeterminate ? undefined : { width: `${percentage}%` }}\n />\n </div>\n {showValue && !indeterminate && (\n <span\n className={cn(\n \"mt-1 block text-end text-xs font-medium\",\n progressText[color],\n )}\n >\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n );\n },\n);\n\nProgress.displayName = \"Progress\";\n"]}
@@ -75,7 +75,7 @@ var Callout = forwardRef(
75
75
  role: "alert",
76
76
  "data-react-fancy-callout": "",
77
77
  className: cn(
78
- "flex items-start gap-3 rounded-lg border-l-4 p-4",
78
+ "flex items-start gap-3 rounded-lg border-s-4 p-4",
79
79
  calloutContainer[color],
80
80
  className
81
81
  ),
@@ -103,5 +103,5 @@ var Callout = forwardRef(
103
103
  Callout.displayName = "Callout";
104
104
 
105
105
  export { Callout };
106
- //# sourceMappingURL=chunk-KPRSRWNM.js.map
107
- //# sourceMappingURL=chunk-KPRSRWNM.js.map
106
+ //# sourceMappingURL=chunk-2I7VNCBZ.js.map
107
+ //# sourceMappingURL=chunk-2I7VNCBZ.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/Callout/Callout.colors.ts","../src/components/Callout/Callout.tsx"],"names":[],"mappings":"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","file":"chunk-KPRSRWNM.js","sourcesContent":["// AUTO-GENERATED by scripts/gen-callout-colors — do not edit by hand.\n// 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). Regenerate after changing the palette.\nimport type { Color } from \"../../utils/types\";\n\nexport const calloutContainer: Record<Color, string> = {\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: \"border-brand bg-brand/5 text-brand\",\n slate: \"border-slate-500 bg-slate-50 text-slate-900 dark:border-slate-400 dark:bg-slate-950/50 dark:text-slate-100\",\n gray: \"border-gray-500 bg-gray-50 text-gray-900 dark:border-gray-400 dark:bg-gray-950/50 dark:text-gray-100\",\n zinc: \"border-zinc-500 bg-zinc-50 text-zinc-900 dark:border-zinc-400 dark:bg-zinc-950/50 dark:text-zinc-100\",\n neutral: \"border-neutral-500 bg-neutral-50 text-neutral-900 dark:border-neutral-400 dark:bg-neutral-950/50 dark:text-neutral-100\",\n stone: \"border-stone-500 bg-stone-50 text-stone-900 dark:border-stone-400 dark:bg-stone-950/50 dark:text-stone-100\",\n red: \"border-red-500 bg-red-50 text-red-900 dark:border-red-400 dark:bg-red-950/50 dark:text-red-100\",\n orange: \"border-orange-500 bg-orange-50 text-orange-900 dark:border-orange-400 dark:bg-orange-950/50 dark:text-orange-100\",\n amber: \"border-amber-500 bg-amber-50 text-amber-900 dark:border-amber-400 dark:bg-amber-950/50 dark:text-amber-100\",\n yellow: \"border-yellow-500 bg-yellow-50 text-yellow-900 dark:border-yellow-400 dark:bg-yellow-950/50 dark:text-yellow-100\",\n lime: \"border-lime-500 bg-lime-50 text-lime-900 dark:border-lime-400 dark:bg-lime-950/50 dark:text-lime-100\",\n green: \"border-green-500 bg-green-50 text-green-900 dark:border-green-400 dark:bg-green-950/50 dark:text-green-100\",\n emerald: \"border-emerald-500 bg-emerald-50 text-emerald-900 dark:border-emerald-400 dark:bg-emerald-950/50 dark:text-emerald-100\",\n teal: \"border-teal-500 bg-teal-50 text-teal-900 dark:border-teal-400 dark:bg-teal-950/50 dark:text-teal-100\",\n cyan: \"border-cyan-500 bg-cyan-50 text-cyan-900 dark:border-cyan-400 dark:bg-cyan-950/50 dark:text-cyan-100\",\n sky: \"border-sky-500 bg-sky-50 text-sky-900 dark:border-sky-400 dark:bg-sky-950/50 dark:text-sky-100\",\n blue: \"border-blue-500 bg-blue-50 text-blue-900 dark:border-blue-400 dark:bg-blue-950/50 dark:text-blue-100\",\n indigo: \"border-indigo-500 bg-indigo-50 text-indigo-900 dark:border-indigo-400 dark:bg-indigo-950/50 dark:text-indigo-100\",\n violet: \"border-violet-500 bg-violet-50 text-violet-900 dark:border-violet-400 dark:bg-violet-950/50 dark:text-violet-100\",\n purple: \"border-purple-500 bg-purple-50 text-purple-900 dark:border-purple-400 dark:bg-purple-950/50 dark:text-purple-100\",\n fuchsia: \"border-fuchsia-500 bg-fuchsia-50 text-fuchsia-900 dark:border-fuchsia-400 dark:bg-fuchsia-950/50 dark:text-fuchsia-100\",\n pink: \"border-pink-500 bg-pink-50 text-pink-900 dark:border-pink-400 dark:bg-pink-950/50 dark:text-pink-100\",\n rose: \"border-rose-500 bg-rose-50 text-rose-900 dark:border-rose-400 dark:bg-rose-950/50 dark:text-rose-100\",\n};\n\nexport const calloutIcon: Record<Color, string> = {\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: \"text-brand\",\n slate: \"text-slate-500 dark:text-slate-400\",\n gray: \"text-gray-500 dark:text-gray-400\",\n zinc: \"text-zinc-500 dark:text-zinc-400\",\n neutral: \"text-neutral-500 dark:text-neutral-400\",\n stone: \"text-stone-500 dark:text-stone-400\",\n red: \"text-red-500 dark:text-red-400\",\n orange: \"text-orange-500 dark:text-orange-400\",\n amber: \"text-amber-500 dark:text-amber-400\",\n yellow: \"text-yellow-500 dark:text-yellow-400\",\n lime: \"text-lime-500 dark:text-lime-400\",\n green: \"text-green-500 dark:text-green-400\",\n emerald: \"text-emerald-500 dark:text-emerald-400\",\n teal: \"text-teal-500 dark:text-teal-400\",\n cyan: \"text-cyan-500 dark:text-cyan-400\",\n sky: \"text-sky-500 dark:text-sky-400\",\n blue: \"text-blue-500 dark:text-blue-400\",\n indigo: \"text-indigo-500 dark:text-indigo-400\",\n violet: \"text-violet-500 dark:text-violet-400\",\n purple: \"text-purple-500 dark:text-purple-400\",\n fuchsia: \"text-fuchsia-500 dark:text-fuchsia-400\",\n pink: \"text-pink-500 dark:text-pink-400\",\n rose: \"text-rose-500 dark:text-rose-400\",\n};\n","import { forwardRef } from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CalloutProps } from \"./Callout.types\";\nimport { calloutContainer, calloutIcon } from \"./Callout.colors\";\n\nexport const Callout = forwardRef<HTMLDivElement, CalloutProps>(\n (\n {\n children,\n color = \"blue\",\n icon,\n dismissible = false,\n onDismiss,\n className,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n role=\"alert\"\n data-react-fancy-callout=\"\"\n className={cn(\n \"flex items-start gap-3 rounded-lg border-l-4 p-4\",\n calloutContainer[color],\n className,\n )}\n {...props}\n >\n {icon && (\n <span className={cn(\"mt-0.5 shrink-0\", calloutIcon[color])}>\n {icon}\n </span>\n )}\n <div className=\"min-w-0 flex-1\">{children}</div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className={cn(\n \"shrink-0 rounded p-0.5 opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-current\",\n )}\n aria-label=\"Dismiss\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n );\n },\n);\n\nCallout.displayName = \"Callout\";\n"]}
1
+ {"version":3,"sources":["../src/components/Callout/Callout.colors.ts","../src/components/Callout/Callout.tsx"],"names":[],"mappings":"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","file":"chunk-2I7VNCBZ.js","sourcesContent":["// AUTO-GENERATED by scripts/gen-callout-colors — do not edit by hand.\n// 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). Regenerate after changing the palette.\nimport type { Color } from \"../../utils/types\";\n\nexport const calloutContainer: Record<Color, string> = {\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: \"border-brand bg-brand/5 text-brand\",\n slate: \"border-slate-500 bg-slate-50 text-slate-900 dark:border-slate-400 dark:bg-slate-950/50 dark:text-slate-100\",\n gray: \"border-gray-500 bg-gray-50 text-gray-900 dark:border-gray-400 dark:bg-gray-950/50 dark:text-gray-100\",\n zinc: \"border-zinc-500 bg-zinc-50 text-zinc-900 dark:border-zinc-400 dark:bg-zinc-950/50 dark:text-zinc-100\",\n neutral: \"border-neutral-500 bg-neutral-50 text-neutral-900 dark:border-neutral-400 dark:bg-neutral-950/50 dark:text-neutral-100\",\n stone: \"border-stone-500 bg-stone-50 text-stone-900 dark:border-stone-400 dark:bg-stone-950/50 dark:text-stone-100\",\n red: \"border-red-500 bg-red-50 text-red-900 dark:border-red-400 dark:bg-red-950/50 dark:text-red-100\",\n orange: \"border-orange-500 bg-orange-50 text-orange-900 dark:border-orange-400 dark:bg-orange-950/50 dark:text-orange-100\",\n amber: \"border-amber-500 bg-amber-50 text-amber-900 dark:border-amber-400 dark:bg-amber-950/50 dark:text-amber-100\",\n yellow: \"border-yellow-500 bg-yellow-50 text-yellow-900 dark:border-yellow-400 dark:bg-yellow-950/50 dark:text-yellow-100\",\n lime: \"border-lime-500 bg-lime-50 text-lime-900 dark:border-lime-400 dark:bg-lime-950/50 dark:text-lime-100\",\n green: \"border-green-500 bg-green-50 text-green-900 dark:border-green-400 dark:bg-green-950/50 dark:text-green-100\",\n emerald: \"border-emerald-500 bg-emerald-50 text-emerald-900 dark:border-emerald-400 dark:bg-emerald-950/50 dark:text-emerald-100\",\n teal: \"border-teal-500 bg-teal-50 text-teal-900 dark:border-teal-400 dark:bg-teal-950/50 dark:text-teal-100\",\n cyan: \"border-cyan-500 bg-cyan-50 text-cyan-900 dark:border-cyan-400 dark:bg-cyan-950/50 dark:text-cyan-100\",\n sky: \"border-sky-500 bg-sky-50 text-sky-900 dark:border-sky-400 dark:bg-sky-950/50 dark:text-sky-100\",\n blue: \"border-blue-500 bg-blue-50 text-blue-900 dark:border-blue-400 dark:bg-blue-950/50 dark:text-blue-100\",\n indigo: \"border-indigo-500 bg-indigo-50 text-indigo-900 dark:border-indigo-400 dark:bg-indigo-950/50 dark:text-indigo-100\",\n violet: \"border-violet-500 bg-violet-50 text-violet-900 dark:border-violet-400 dark:bg-violet-950/50 dark:text-violet-100\",\n purple: \"border-purple-500 bg-purple-50 text-purple-900 dark:border-purple-400 dark:bg-purple-950/50 dark:text-purple-100\",\n fuchsia: \"border-fuchsia-500 bg-fuchsia-50 text-fuchsia-900 dark:border-fuchsia-400 dark:bg-fuchsia-950/50 dark:text-fuchsia-100\",\n pink: \"border-pink-500 bg-pink-50 text-pink-900 dark:border-pink-400 dark:bg-pink-950/50 dark:text-pink-100\",\n rose: \"border-rose-500 bg-rose-50 text-rose-900 dark:border-rose-400 dark:bg-rose-950/50 dark:text-rose-100\",\n};\n\nexport const calloutIcon: Record<Color, string> = {\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: \"text-brand\",\n slate: \"text-slate-500 dark:text-slate-400\",\n gray: \"text-gray-500 dark:text-gray-400\",\n zinc: \"text-zinc-500 dark:text-zinc-400\",\n neutral: \"text-neutral-500 dark:text-neutral-400\",\n stone: \"text-stone-500 dark:text-stone-400\",\n red: \"text-red-500 dark:text-red-400\",\n orange: \"text-orange-500 dark:text-orange-400\",\n amber: \"text-amber-500 dark:text-amber-400\",\n yellow: \"text-yellow-500 dark:text-yellow-400\",\n lime: \"text-lime-500 dark:text-lime-400\",\n green: \"text-green-500 dark:text-green-400\",\n emerald: \"text-emerald-500 dark:text-emerald-400\",\n teal: \"text-teal-500 dark:text-teal-400\",\n cyan: \"text-cyan-500 dark:text-cyan-400\",\n sky: \"text-sky-500 dark:text-sky-400\",\n blue: \"text-blue-500 dark:text-blue-400\",\n indigo: \"text-indigo-500 dark:text-indigo-400\",\n violet: \"text-violet-500 dark:text-violet-400\",\n purple: \"text-purple-500 dark:text-purple-400\",\n fuchsia: \"text-fuchsia-500 dark:text-fuchsia-400\",\n pink: \"text-pink-500 dark:text-pink-400\",\n rose: \"text-rose-500 dark:text-rose-400\",\n};\n","import { forwardRef } from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport type { CalloutProps } from \"./Callout.types\";\nimport { calloutContainer, calloutIcon } from \"./Callout.colors\";\n\nexport const Callout = forwardRef<HTMLDivElement, CalloutProps>(\n (\n {\n children,\n color = \"blue\",\n icon,\n dismissible = false,\n onDismiss,\n className,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n role=\"alert\"\n data-react-fancy-callout=\"\"\n className={cn(\n \"flex items-start gap-3 rounded-lg border-s-4 p-4\",\n calloutContainer[color],\n className,\n )}\n {...props}\n >\n {icon && (\n <span className={cn(\"mt-0.5 shrink-0\", calloutIcon[color])}>\n {icon}\n </span>\n )}\n <div className=\"min-w-0 flex-1\">{children}</div>\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className={cn(\n \"shrink-0 rounded p-0.5 opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus-visible:ring-2 focus-visible:ring-current\",\n )}\n aria-label=\"Dismiss\"\n >\n <X size={16} />\n </button>\n )}\n </div>\n );\n },\n);\n\nCallout.displayName = \"Callout\";\n"]}
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
 
3
+ var chunk36IC3NDN_cjs = require('./chunk-36IC3NDN.cjs');
3
4
  var chunkKJ22KE56_cjs = require('./chunk-KJ22KE56.cjs');
4
5
  var chunkL3V3BYVS_cjs = require('./chunk-L3V3BYVS.cjs');
5
6
  var chunkSNHU2AI4_cjs = require('./chunk-SNHU2AI4.cjs');
@@ -59,10 +60,8 @@ var OtpInput = react.forwardRef(
59
60
  setValue(chars.join("").trimEnd());
60
61
  focusInput(index - 1);
61
62
  }
62
- } else if (e.key === "ArrowLeft") {
63
- focusInput(index - 1);
64
- } else if (e.key === "ArrowRight") {
65
- focusInput(index + 1);
63
+ } else if (e.key === "ArrowLeft" || e.key === "ArrowRight") {
64
+ focusInput(index + chunk36IC3NDN_cjs.inlineStep(e.key, e.currentTarget));
66
65
  }
67
66
  },
68
67
  [value, length, setValue, focusInput]
@@ -108,7 +107,8 @@ var OtpInput = react.forwardRef(
108
107
  {
109
108
  "data-react-fancy-otp-input": "",
110
109
  ref,
111
- className: chunkZU5Q77OT_cjs.cn("flex gap-2", className),
110
+ dir: "ltr",
111
+ className: chunkZU5Q77OT_cjs.cn("flex gap-2 rtl:justify-end", className),
112
112
  onBlur: (e) => {
113
113
  if (interactive && !e.currentTarget.contains(e.relatedTarget)) exitEdit();
114
114
  },
@@ -140,5 +140,5 @@ var OtpInput = react.forwardRef(
140
140
  OtpInput.displayName = "OtpInput";
141
141
 
142
142
  exports.OtpInput = OtpInput;
143
- //# sourceMappingURL=chunk-WMANILKC.cjs.map
144
- //# sourceMappingURL=chunk-WMANILKC.cjs.map
143
+ //# sourceMappingURL=chunk-2UYQ34RJ.cjs.map
144
+ //# sourceMappingURL=chunk-2UYQ34RJ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/OtpInput/OtpInput.tsx"],"names":["forwardRef","OtpInput","useControllableState","useFieldMode","useInlineEdit","useRef","useCallback","inlineStep","jsx","cn"],"mappings":"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","file":"chunk-2UYQ34RJ.cjs","sourcesContent":["import { forwardRef, useCallback, useRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { inlineStep } from \"../../utils/direction\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport { useFieldMode } from \"../inputs/mode/FieldMode.context\";\nimport { useInlineEdit } from \"../inputs/mode/useInlineEdit\";\nimport type { OtpInputProps } from \"./OtpInput.types\";\n\nexport const OtpInput = forwardRef<HTMLDivElement, OtpInputProps>(\n function OtpInput(\n {\n length = 6,\n value: controlledValue,\n onChange,\n disabled = false,\n autoFocus = false,\n className,\n mode,\n },\n ref,\n ) {\n const [value, setValue] = useControllableState(\n controlledValue,\n \"\",\n onChange,\n );\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const inputsRef = useRef<(HTMLInputElement | null)[]>([]);\n\n const focusInput = useCallback(\n (index: number) => {\n const clamped = Math.max(0, Math.min(index, length - 1));\n inputsRef.current[clamped]?.focus();\n },\n [length],\n );\n\n const handleChange = useCallback(\n (index: number, char: string) => {\n const digit = char.replace(/[^0-9]/g, \"\");\n if (!digit) return;\n\n const chars = value.padEnd(length, \" \").split(\"\");\n chars[index] = digit[0];\n const newValue = chars.join(\"\").trimEnd();\n setValue(newValue);\n\n if (index < length - 1) {\n focusInput(index + 1);\n }\n },\n [value, length, setValue, focusInput],\n );\n\n const handleKeyDown = useCallback(\n (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Backspace\") {\n e.preventDefault();\n const chars = value.padEnd(length, \" \").split(\"\");\n if (chars[index]?.trim()) {\n chars[index] = \" \";\n setValue(chars.join(\"\").trimEnd());\n } else if (index > 0) {\n chars[index - 1] = \" \";\n setValue(chars.join(\"\").trimEnd());\n focusInput(index - 1);\n }\n } else if (e.key === \"ArrowLeft\" || e.key === \"ArrowRight\") {\n // Visual direction: the cells run right-to-left in RTL, so\n // ArrowLeft is the NEXT cell there.\n focusInput(index + inlineStep(e.key, e.currentTarget));\n }\n },\n [value, length, setValue, focusInput],\n );\n\n const handlePaste = useCallback(\n (e: React.ClipboardEvent) => {\n e.preventDefault();\n const pasted = e.clipboardData.getData(\"text\").replace(/[^0-9]/g, \"\");\n const newValue = pasted.slice(0, length);\n setValue(newValue);\n focusInput(Math.min(newValue.length, length - 1));\n },\n [length, setValue, focusInput],\n );\n\n if (!showControl) {\n return (\n <div\n data-react-fancy-otp-input=\"\"\n data-mode=\"view\"\n ref={ref}\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n title={interactive ? \"Click to edit\" : undefined}\n onClick={interactive ? enterEdit : undefined}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n enterEdit();\n }\n }\n : undefined\n }\n className={cn(\n \"font-mono text-lg tracking-[0.4em] text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\",\n interactive &&\n \"cursor-pointer rounded-md outline-none transition-opacity hover:opacity-80 focus-visible:ring-2 focus-visible:ring-blue-500/40\",\n className,\n )}\n >\n {value || \"—\"}\n </div>\n );\n }\n\n return (\n <div\n data-react-fancy-otp-input=\"\"\n ref={ref}\n // A code is a number, and numbers read left-to-right in RTL scripts\n // too: the cells stay in LTR order, sitting at the inline start\n // (the right) of an RTL page.\n dir=\"ltr\"\n className={cn(\"flex gap-2 rtl:justify-end\", className)}\n onBlur={(e) => {\n if (interactive && !e.currentTarget.contains(e.relatedTarget as Node)) exitEdit();\n }}\n >\n {Array.from({ length }, (_, i) => (\n <input\n key={i}\n ref={(el) => {\n inputsRef.current[i] = el;\n }}\n type=\"text\"\n inputMode=\"numeric\"\n maxLength={1}\n value={value[i] ?? \"\"}\n onChange={(e) => handleChange(i, e.target.value)}\n onKeyDown={(e) => handleKeyDown(i, e)}\n onPaste={handlePaste}\n onFocus={(e) => e.target.select()}\n disabled={disabled}\n autoFocus={(autoFocus || interactive) && i === 0}\n className=\"h-12 w-10 rounded-lg border border-[color:var(--fancy-border,var(--color-zinc-200))] bg-[color:var(--fancy-input,var(--color-white))] text-center text-lg font-medium text-[color:var(--fancy-text,var(--color-zinc-900))] outline-none transition-[border-color,box-shadow] duration-150 focus:border-[color:var(--fancy-focus,var(--color-blue-500))] focus:ring-2 focus:ring-[color:var(--fancy-focus,var(--color-blue-500))]/40 dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-[color:var(--fancy-input-dark,#1e1e24)] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))] dark:focus:border-[color:var(--fancy-focus-dark,var(--color-blue-400))] dark:focus:ring-[color:var(--fancy-focus-dark,var(--color-blue-400))]/20\"\n aria-label={`Digit ${i + 1}`}\n />\n ))}\n </div>\n );\n },\n);\n\nOtpInput.displayName = \"OtpInput\";\n"]}
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ // src/utils/direction.ts
4
+ function directionOf(el) {
5
+ if (!el || typeof window === "undefined" || typeof getComputedStyle !== "function") return "ltr";
6
+ return getComputedStyle(el).direction === "rtl" ? "rtl" : "ltr";
7
+ }
8
+ function isRtl(el) {
9
+ return directionOf(el) === "rtl";
10
+ }
11
+ function inlineStep(key, el) {
12
+ if (key !== "ArrowRight" && key !== "ArrowLeft") return 0;
13
+ const forward = key === "ArrowRight" ? 1 : -1;
14
+ return isRtl(el) ? -forward : forward;
15
+ }
16
+
17
+ exports.directionOf = directionOf;
18
+ exports.inlineStep = inlineStep;
19
+ exports.isRtl = isRtl;
20
+ //# sourceMappingURL=chunk-36IC3NDN.cjs.map
21
+ //# sourceMappingURL=chunk-36IC3NDN.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/direction.ts"],"names":[],"mappings":";;;AAYO,SAAS,YAAY,EAAA,EAA2C;AACrE,EAAA,IAAI,CAAC,MAAM,OAAO,MAAA,KAAW,eAAe,OAAO,gBAAA,KAAqB,YAAY,OAAO,KAAA;AAC3F,EAAA,OAAO,gBAAA,CAAiB,EAAE,CAAA,CAAE,SAAA,KAAc,QAAQ,KAAA,GAAQ,KAAA;AAC5D;AAEO,SAAS,MAAM,EAAA,EAAyC;AAC7D,EAAA,OAAO,WAAA,CAAY,EAAE,CAAA,KAAM,KAAA;AAC7B;AASO,SAAS,UAAA,CAAW,KAAa,EAAA,EAA4C;AAClF,EAAA,IAAI,GAAA,KAAQ,YAAA,IAAgB,GAAA,KAAQ,WAAA,EAAa,OAAO,CAAA;AACxD,EAAA,MAAM,OAAA,GAAU,GAAA,KAAQ,YAAA,GAAe,CAAA,GAAI,EAAA;AAC3C,EAAA,OAAQ,KAAA,CAAM,EAAE,CAAA,GAAI,CAAC,OAAA,GAAU,OAAA;AACjC","file":"chunk-36IC3NDN.cjs","sourcesContent":["/**\n * Writing direction, read from the DOM rather than passed as a prop.\n *\n * Components follow the `dir` the browser already resolved for them, inherited\n * from the nearest ancestor that sets one (usually `<html dir=\"rtl\">`). Reading\n * the computed `direction` means a `dir` on any wrapper works, with nothing to\n * thread through props or context, and SSR renders the same markup for both\n * directions: layout is logical CSS, and only code that measures or maps keys\n * asks this question, always in an effect or an event handler.\n */\nexport type Direction = \"ltr\" | \"rtl\";\n\nexport function directionOf(el: Element | null | undefined): Direction {\n if (!el || typeof window === \"undefined\" || typeof getComputedStyle !== \"function\") return \"ltr\";\n return getComputedStyle(el).direction === \"rtl\" ? \"rtl\" : \"ltr\";\n}\n\nexport function isRtl(el: Element | null | undefined): boolean {\n return directionOf(el) === \"rtl\";\n}\n\n/**\n * The LOGICAL step a horizontal arrow key means: +1 toward the inline end\n * (\"next\"), -1 toward the inline start (\"previous\"), 0 for any other key.\n *\n * ArrowRight moves visually right in both directions, and visually right is\n * the inline END in LTR but the inline START in RTL.\n */\nexport function inlineStep(key: string, el: Element | null | undefined): -1 | 0 | 1 {\n if (key !== \"ArrowRight\" && key !== \"ArrowLeft\") return 0;\n const forward = key === \"ArrowRight\" ? 1 : -1;\n return (isRtl(el) ? -forward : forward) as -1 | 1;\n}\n"]}
@@ -20,15 +20,20 @@ function MobileMenuFlyout({
20
20
  children,
21
21
  open,
22
22
  onClose,
23
- side = "left",
23
+ side = "start",
24
24
  title,
25
25
  className
26
26
  }) {
27
- const isLeft = side === "left";
27
+ const edge = {
28
+ start: { pos: "start-0", enter: "fancy-slide-in-start", exit: "fancy-slide-out-start" },
29
+ end: { pos: "end-0", enter: "fancy-slide-in-end", exit: "fancy-slide-out-end" },
30
+ left: { pos: "left-0", enter: "fancy-slide-in-left", exit: "fancy-slide-out-left" },
31
+ right: { pos: "right-0", enter: "fancy-slide-in-right", exit: "fancy-slide-out-right" }
32
+ }[side];
28
33
  const { mounted, className: animClass, ref } = chunkFQZE5N2N_cjs.useAnimation({
29
34
  open,
30
- enterClass: isLeft ? "fancy-slide-in-left" : "fancy-slide-in-right",
31
- exitClass: isLeft ? "fancy-slide-out-left" : "fancy-slide-out-right"
35
+ enterClass: edge.enter,
36
+ exitClass: edge.exit
32
37
  });
33
38
  chunkOUYC6EIL_cjs.useEscapeKey(onClose, open);
34
39
  react.useEffect(() => {
@@ -58,7 +63,7 @@ function MobileMenuFlyout({
58
63
  ref,
59
64
  className: chunkZU5Q77OT_cjs.cn(
60
65
  "absolute top-0 flex h-full w-72 max-w-[80vw] flex-col bg-[color:var(--fancy-surface,var(--color-white))] shadow-xl dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]",
61
- isLeft ? "left-0" : "right-0",
66
+ edge.pos,
62
67
  animClass,
63
68
  className
64
69
  ),
@@ -135,7 +140,7 @@ function MobileMenuItem({
135
140
  children: [
136
141
  icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-5 w-5 items-center justify-center", children: icon }),
137
142
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children }),
138
- badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute right-1 top-0.5", children: badge })
143
+ badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute end-1 top-0.5", children: badge })
139
144
  ]
140
145
  }
141
146
  );
@@ -158,7 +163,7 @@ function MobileMenuItem({
158
163
  ),
159
164
  children: [
160
165
  icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center", children: icon }),
161
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 truncate text-left", children }),
166
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex-1 truncate text-start", children }),
162
167
  badge && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "shrink-0", children: badge })
163
168
  ]
164
169
  }
@@ -175,5 +180,5 @@ var MobileMenu = {
175
180
 
176
181
  exports.MobileMenu = MobileMenu;
177
182
  exports.useMobileMenu = useMobileMenu;
178
- //# sourceMappingURL=chunk-LFC2DL6H.cjs.map
179
- //# sourceMappingURL=chunk-LFC2DL6H.cjs.map
183
+ //# sourceMappingURL=chunk-3BBEVHSP.cjs.map
184
+ //# sourceMappingURL=chunk-3BBEVHSP.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/MobileMenu/MobileMenu.context.ts","../src/components/MobileMenu/MobileMenuFlyout.tsx","../src/components/MobileMenu/MobileMenuBottomBar.tsx","../src/components/MobileMenu/MobileMenuItem.tsx","../src/components/MobileMenu/MobileMenu.tsx"],"names":["createContext","useContext","useAnimation","useEscapeKey","useEffect","Portal","jsx","jsxs","cn","X"],"mappings":"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","file":"chunk-3BBEVHSP.cjs","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { MobileMenuContextValue } from \"./MobileMenu.types\";\n\nexport const MobileMenuContext = createContext<MobileMenuContextValue | null>(null);\n\nexport function useMobileMenu(): MobileMenuContextValue {\n const ctx = useContext(MobileMenuContext);\n if (!ctx) {\n throw new Error(\"useMobileMenu must be used within a <MobileMenu> component\");\n }\n return ctx;\n}\n","import { useEffect } from \"react\";\nimport { X } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useEscapeKey } from \"../../hooks\";\nimport { useAnimation } from \"../../hooks\";\nimport { Portal } from \"../Portal\";\nimport { MobileMenuContext } from \"./MobileMenu.context\";\nimport type { MobileMenuFlyoutProps } from \"./MobileMenu.types\";\n\nexport function MobileMenuFlyout({\n children,\n open,\n onClose,\n side = \"start\",\n title,\n className,\n}: MobileMenuFlyoutProps) {\n // `start` / `end` resolve against the writing direction in CSS, so the\n // same markup is right for both and nothing is measured.\n const edge = {\n start: { pos: \"start-0\", enter: \"fancy-slide-in-start\", exit: \"fancy-slide-out-start\" },\n end: { pos: \"end-0\", enter: \"fancy-slide-in-end\", exit: \"fancy-slide-out-end\" },\n left: { pos: \"left-0\", enter: \"fancy-slide-in-left\", exit: \"fancy-slide-out-left\" },\n right: { pos: \"right-0\", enter: \"fancy-slide-in-right\", exit: \"fancy-slide-out-right\" },\n }[side];\n\n const { mounted, className: animClass, ref } = useAnimation({\n open,\n enterClass: edge.enter,\n exitClass: edge.exit,\n });\n\n useEscapeKey(onClose, open);\n\n // Lock body scroll\n useEffect(() => {\n if (open) {\n const prev = document.body.style.overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = prev;\n };\n }\n }, [open]);\n\n if (!mounted) return null;\n\n return (\n <Portal>\n <MobileMenuContext.Provider value={{ variant: \"flyout\" }}>\n <div data-react-fancy-mobile-menu-flyout=\"\" className=\"fixed inset-0 z-50\">\n {/* Backdrop */}\n <div\n className={cn(\n \"absolute inset-0 bg-black/40 transition-opacity\",\n open ? \"opacity-100\" : \"opacity-0\",\n )}\n onClick={onClose}\n />\n\n {/* Panel */}\n <div\n ref={ref as React.RefObject<HTMLDivElement>}\n className={cn(\n \"absolute top-0 flex h-full w-72 max-w-[80vw] flex-col bg-[color:var(--fancy-surface,var(--color-white))] shadow-xl dark:bg-[color:var(--fancy-surface-dark,var(--color-zinc-900))]\",\n edge.pos,\n animClass,\n className,\n )}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between border-b border-[color:var(--fancy-border,var(--color-zinc-200))] px-4 py-3 dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))]\">\n {title && (\n <span className=\"text-sm font-semibold text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\">\n {title}\n </span>\n )}\n {!title && <span />}\n <button\n type=\"button\"\n onClick={onClose}\n className=\"flex h-8 w-8 items-center justify-center rounded-md text-zinc-400 transition-colors hover:bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] hover:text-zinc-600 dark:hover:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:hover:text-zinc-300\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n\n {/* Content */}\n <div className=\"flex-1 overflow-y-auto p-2\">\n {children}\n </div>\n </div>\n </div>\n </MobileMenuContext.Provider>\n </Portal>\n );\n}\n\nMobileMenuFlyout.displayName = \"MobileMenuFlyout\";\n","import { cn } from \"../../utils/cn\";\nimport { MobileMenuContext } from \"./MobileMenu.context\";\nimport type { MobileMenuBottomBarProps } from \"./MobileMenu.types\";\n\nexport function MobileMenuBottomBar({ children, className }: MobileMenuBottomBarProps) {\n return (\n <MobileMenuContext.Provider value={{ variant: \"bottom-bar\" }}>\n <nav\n data-react-fancy-mobile-menu-bottom-bar=\"\"\n className={cn(\n \"fixed inset-x-0 bottom-0 z-40 flex items-stretch border-t border-[color:var(--fancy-border,var(--color-zinc-200))] bg-white/95 backdrop-blur-sm dark:border-[color:var(--fancy-border-dark,var(--color-zinc-700))] dark:bg-zinc-900/95\",\n \"pb-[env(safe-area-inset-bottom)]\",\n className,\n )}\n >\n {children}\n </nav>\n </MobileMenuContext.Provider>\n );\n}\n\nMobileMenuBottomBar.displayName = \"MobileMenuBottomBar\";\n","import type { ElementType } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useMobileMenu } from \"./MobileMenu.context\";\nimport type { MobileMenuItemProps } from \"./MobileMenu.types\";\n\nexport function MobileMenuItem({\n children,\n href,\n as: As,\n icon,\n active = false,\n disabled = false,\n badge,\n onClick,\n className,\n ...rest\n}: MobileMenuItemProps) {\n const { variant } = useMobileMenu();\n const isBottomBar = variant === \"bottom-bar\";\n\n // See NavigableProps: link mode engages on `href` OR `as`. Keeping `onClick`\n // in link mode matters most here — a mobile item usually has to close the menu\n // as well as navigate, and it was silently dropped.\n const isLink = Boolean(href || As);\n const Tag = isLink ? ((As ?? \"a\") as ElementType) : \"button\";\n const tagProps = isLink\n ? { ...(href ? { href } : {}), onClick }\n : { type: \"button\" as const, onClick };\n\n if (isBottomBar) {\n return (\n <Tag\n {...tagProps}\n {...rest}\n data-react-fancy-mobile-menu-item=\"\"\n data-active={active || undefined}\n aria-current={active ? \"page\" : undefined}\n aria-disabled={disabled || undefined}\n className={cn(\n \"flex flex-1 flex-col items-center justify-center gap-0.5 py-1.5 text-xs font-medium transition-colors\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-inset\",\n active\n ? \"text-blue-600 dark:text-blue-400\"\n : \"text-[color:var(--fancy-text-muted,var(--color-zinc-500))] hover:text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))] dark:hover:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n >\n {icon && <span className=\"flex h-5 w-5 items-center justify-center\">{icon}</span>}\n <span className=\"truncate\">{children}</span>\n {badge && <span className=\"absolute end-1 top-0.5\">{badge}</span>}\n </Tag>\n );\n }\n\n // Flyout variant — same as a vertical menu item\n return (\n <Tag\n {...tagProps}\n {...rest}\n data-react-fancy-mobile-menu-item=\"\"\n data-active={active || undefined}\n aria-current={active ? \"page\" : undefined}\n aria-disabled={disabled || undefined}\n className={cn(\n \"flex w-full items-center gap-3 rounded-md px-3 py-2.5 text-sm font-medium transition-colors\",\n \"outline-none focus-visible:ring-2 focus-visible:ring-blue-500\",\n active\n ? \"bg-[color:var(--fancy-surface-muted,var(--color-zinc-100))] text-[color:var(--fancy-text,var(--color-zinc-900))] dark:bg-[color:var(--fancy-surface-muted-dark,var(--color-zinc-800))] dark:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\"\n : \"text-[color:var(--fancy-text-subtle,var(--color-zinc-600))] hover:bg-[color:var(--fancy-surface-hover,var(--color-zinc-50))] hover:text-[color:var(--fancy-text,var(--color-zinc-900))] dark:text-[color:var(--fancy-text-subtle-dark,var(--color-zinc-400))] dark:hover:bg-[color:var(--fancy-surface-hover-dark,color-mix(in_oklab,var(--color-zinc-800)_50%,transparent))] dark:hover:text-[color:var(--fancy-text-dark,var(--color-zinc-100))]\",\n disabled && \"pointer-events-none opacity-50\",\n className,\n )}\n >\n {icon && <span className=\"flex h-5 w-5 shrink-0 items-center justify-center\">{icon}</span>}\n <span className=\"flex-1 truncate text-start\">{children}</span>\n {badge && <span className=\"shrink-0\">{badge}</span>}\n </Tag>\n );\n}\n\nMobileMenuItem.displayName = \"MobileMenuItem\";\n","import { MobileMenuFlyout } from \"./MobileMenuFlyout\";\nimport { MobileMenuBottomBar } from \"./MobileMenuBottomBar\";\nimport { MobileMenuItem } from \"./MobileMenuItem\";\n\nexport const MobileMenu = {\n Flyout: MobileMenuFlyout,\n BottomBar: MobileMenuBottomBar,\n Item: MobileMenuItem,\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkO3F6DYWR_cjs = require('./chunk-O3F6DYWR.cjs');
3
+ var chunkXG6J5MOK_cjs = require('./chunk-XG6J5MOK.cjs');
4
4
  var chunkKJ22KE56_cjs = require('./chunk-KJ22KE56.cjs');
5
5
  var chunkL3V3BYVS_cjs = require('./chunk-L3V3BYVS.cjs');
6
6
  var chunkSNHU2AI4_cjs = require('./chunk-SNHU2AI4.cjs');
@@ -86,11 +86,11 @@ var Switch = react.forwardRef(
86
86
  xl: "h-6 w-6"
87
87
  }[size];
88
88
  const translateOn = {
89
- xs: "translate-x-2.5",
90
- sm: "translate-x-3",
91
- md: "translate-x-4",
92
- lg: "translate-x-5",
93
- xl: "translate-x-6"
89
+ xs: "translate-x-2.5 rtl:-translate-x-2.5",
90
+ sm: "translate-x-3 rtl:-translate-x-3",
91
+ md: "translate-x-4 rtl:-translate-x-4",
92
+ lg: "translate-x-5 rtl:-translate-x-5",
93
+ xl: "translate-x-6 rtl:-translate-x-6"
94
94
  }[size];
95
95
  return /* @__PURE__ */ jsxRuntime.jsxs(
96
96
  "div",
@@ -143,7 +143,7 @@ var Switch = react.forwardRef(
143
143
  // fallback stays zinc-600, today's colour, not the role's zinc-700
144
144
  // default — set nothing, see no change.
145
145
  checked ? switchTrack[color] : "bg-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-[color:var(--fancy-border-dark,var(--color-zinc-600))]",
146
- chunkO3F6DYWR_cjs.dirtyRingClasses(dirty),
146
+ chunkXG6J5MOK_cjs.dirtyRingClasses(dirty),
147
147
  error && "ring-2 ring-red-500/50"
148
148
  ),
149
149
  children: /* @__PURE__ */ jsxRuntime.jsx(
@@ -172,7 +172,7 @@ var Switch = react.forwardRef(
172
172
  ),
173
173
  children: [
174
174
  label,
175
- required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-0.5 text-red-500", children: "*" })
175
+ required && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ms-0.5 text-red-500", children: "*" })
176
176
  ]
177
177
  }
178
178
  ),
@@ -187,5 +187,5 @@ var Switch = react.forwardRef(
187
187
  Switch.displayName = "Switch";
188
188
 
189
189
  exports.Switch = Switch;
190
- //# sourceMappingURL=chunk-2O5UXH5R.cjs.map
191
- //# sourceMappingURL=chunk-2O5UXH5R.cjs.map
190
+ //# sourceMappingURL=chunk-3EZ6UPXS.cjs.map
191
+ //# sourceMappingURL=chunk-3EZ6UPXS.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/inputs/Switch/Switch.colors.ts","../src/components/inputs/Switch/Switch.tsx"],"names":["forwardRef","useId","useFieldMode","useInlineEdit","useControllableState","jsxs","cn","jsx","dirtyRingClasses"],"mappings":"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","file":"chunk-3EZ6UPXS.cjs","sourcesContent":["// AUTO-GENERATED by scripts/gen-switch-colors — do not edit by hand.\n// 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). Regenerate after changing the palette.\nimport type { Color } from \"../../../utils/types\";\n\nexport const switchTrack: Record<Color, string> = {\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: \"bg-brand\",\n slate: \"bg-slate-500\",\n gray: \"bg-gray-500\",\n zinc: \"bg-zinc-500\",\n neutral: \"bg-neutral-500\",\n stone: \"bg-stone-500\",\n red: \"bg-red-500\",\n orange: \"bg-orange-500\",\n amber: \"bg-amber-500\",\n yellow: \"bg-yellow-500\",\n lime: \"bg-lime-500\",\n green: \"bg-green-500\",\n emerald: \"bg-emerald-500\",\n teal: \"bg-teal-500\",\n cyan: \"bg-cyan-500\",\n sky: \"bg-sky-500\",\n blue: \"bg-blue-500\",\n indigo: \"bg-indigo-500\",\n violet: \"bg-violet-500\",\n purple: \"bg-purple-500\",\n fuchsia: \"bg-fuchsia-500\",\n pink: \"bg-pink-500\",\n rose: \"bg-rose-500\",\n};\n","import { forwardRef, useId } from \"react\";\nimport { cn } from \"../../../utils/cn\";\nimport { useControllableState } from \"../../../hooks/use-controllable-state\";\nimport { useFieldMode } from \"../mode/FieldMode.context\";\nimport { useInlineEdit } from \"../mode/useInlineEdit\";\nimport { dirtyRingClasses } from \"../inputs.utils\";\nimport type { SwitchProps } from \"./Switch.types\";\nimport { switchTrack } from \"./Switch.colors\";\n\nexport const Switch = forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n size = \"md\",\n dirty,\n error,\n label,\n labelHidden,\n description,\n required,\n disabled,\n className,\n id,\n name,\n checked: controlledChecked,\n defaultChecked = false,\n onCheckedChange,\n color = \"blue\",\n mode,\n ...rest\n },\n ref,\n ) => {\n // `aria-*` names and describes the CONTROL, so it goes on the role=\"switch\"\n // button; everything else (className, style, data-*, handlers) stays on the\n // wrapper, where it has always gone. On the wrapper, an `aria-label` named a\n // div and left the switch itself unnamed.\n const wrapperProps: Record<string, unknown> = {};\n const controlAria: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(rest)) {\n if (key.startsWith(\"aria-\")) controlAria[key] = value;\n else wrapperProps[key] = value;\n }\n\n const autoId = useId();\n const switchId = id ?? autoId;\n const resolvedMode = useFieldMode(mode);\n const { showControl, interactive, enterEdit, exitEdit } = useInlineEdit(resolvedMode, disabled);\n const [checked, setChecked] = useControllableState(\n controlledChecked,\n defaultChecked,\n onCheckedChange,\n );\n\n const trackSizes = {\n xs: \"h-3.5 w-6\",\n sm: \"h-4 w-7\",\n md: \"h-5 w-9\",\n lg: \"h-6 w-11\",\n xl: \"h-7 w-[52px]\",\n }[size];\n\n const knobSizes = {\n xs: \"h-2.5 w-2.5\",\n sm: \"h-3 w-3\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n xl: \"h-6 w-6\",\n }[size];\n\n // On travels toward the inline END: rightward in LTR, leftward in RTL,\n // where the knob starts on the right.\n const translateOn = {\n xs: \"translate-x-2.5 rtl:-translate-x-2.5\",\n sm: \"translate-x-3 rtl:-translate-x-3\",\n md: \"translate-x-4 rtl:-translate-x-4\",\n lg: \"translate-x-5 rtl:-translate-x-5\",\n xl: \"translate-x-6 rtl:-translate-x-6\",\n }[size];\n\n return (\n <div\n {...wrapperProps}\n // View mode has no switch to name, so its aria-* stay on the wrapper.\n {...(showControl ? undefined : controlAria)}\n data-react-fancy-switch=\"\" className={cn(\"flex items-start gap-2\", className)}>\n {!showControl ? (\n <span\n data-react-fancy-display=\"\"\n data-mode=\"view\"\n role={interactive ? \"button\" : undefined}\n tabIndex={interactive ? 0 : undefined}\n title={interactive ? \"Click to edit\" : undefined}\n onClick={interactive ? enterEdit : undefined}\n onKeyDown={\n interactive\n ? (e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n enterEdit();\n }\n }\n : undefined\n }\n className={cn(\n \"text-sm font-medium text-zinc-700 dark:text-zinc-200\",\n interactive &&\n \"cursor-pointer rounded-md outline-none transition-colors hover:text-zinc-900 focus-visible:ring-2 focus-visible:ring-blue-500/40 dark:hover:text-white\",\n )}\n >\n {checked ? \"On\" : \"Off\"}\n </span>\n ) : (\n <button\n {...controlAria}\n ref={ref}\n id={switchId}\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n disabled={disabled}\n autoFocus={interactive}\n onBlur={() => {\n if (interactive) exitEdit();\n }}\n onClick={() => setChecked(!checked)}\n className={cn(\n \"relative inline-flex shrink-0 cursor-pointer rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/40 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n trackSizes,\n // The unchecked track is the `border` role (\"tracks\"). The dark\n // fallback stays zinc-600, today's colour, not the role's zinc-700\n // default — set nothing, see no change.\n checked\n ? switchTrack[color]\n : \"bg-[color:var(--fancy-border,var(--color-zinc-200))] dark:bg-[color:var(--fancy-border-dark,var(--color-zinc-600))]\",\n dirtyRingClasses(dirty),\n error && \"ring-2 ring-red-500/50\",\n )}\n >\n <span\n className={cn(\n \"pointer-events-none inline-block rounded-full bg-white shadow-sm transition-transform\",\n knobSizes,\n checked ? translateOn : \"translate-x-0\",\n )}\n />\n </button>\n )}\n {name && (\n <input type=\"hidden\" name={name} value={checked ? \"1\" : \"0\"} />\n )}\n {(label || description) && (\n <div className=\"flex flex-col\">\n {label && (\n <label\n htmlFor={switchId}\n className={cn(\n \"cursor-pointer text-sm text-zinc-700 dark:text-zinc-100\",\n disabled && \"cursor-not-allowed opacity-50\",\n // Not drawn, still the accessible name (it labels the button).\n labelHidden && \"sr-only\",\n )}\n >\n {label}\n {required && <span className=\"ms-0.5 text-red-500\">*</span>}\n </label>\n )}\n {description && (\n <span className=\"text-xs text-[color:var(--fancy-text-muted,var(--color-zinc-500))] dark:text-[color:var(--fancy-text-muted-dark,var(--color-zinc-400))]\">\n {description}\n </span>\n )}\n {error && <span className=\"text-xs text-red-500\">{error}</span>}\n </div>\n )}\n </div>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkHNJXBMHI_cjs = require('./chunk-HNJXBMHI.cjs');
3
+ var chunkG5MDMQVQ_cjs = require('./chunk-G5MDMQVQ.cjs');
4
4
  var chunkSNHU2AI4_cjs = require('./chunk-SNHU2AI4.cjs');
5
5
  var react = require('react');
6
6
  var jsxRuntime = require('react/jsx-runtime');
@@ -91,7 +91,7 @@ var NumberField = react.forwardRef(
91
91
  };
92
92
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-react-fancy-number-field": "", children: [
93
93
  /* @__PURE__ */ jsxRuntime.jsx(
94
- chunkHNJXBMHI_cjs.Input,
94
+ chunkG5MDMQVQ_cjs.Input,
95
95
  {
96
96
  "aria-invalid": problem ? true : void 0,
97
97
  "aria-valuemax": max,
@@ -137,5 +137,5 @@ var NumberField = react.forwardRef(
137
137
  NumberField.displayName = "NumberField";
138
138
 
139
139
  exports.NumberField = NumberField;
140
- //# sourceMappingURL=chunk-XBFTO64U.cjs.map
141
- //# sourceMappingURL=chunk-XBFTO64U.cjs.map
140
+ //# sourceMappingURL=chunk-3KJN3GTB.cjs.map
141
+ //# sourceMappingURL=chunk-3KJN3GTB.cjs.map
@@ -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-3KJN3GTB.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,4 +1,5 @@
1
1
  import { isImeComposing } from './chunk-S42OGG43.js';
2
+ import { isRtl } from './chunk-US5R36TQ.js';
2
3
  import { useMemo, useState, useRef, useEffect, useLayoutEffect, useCallback } from 'react';
3
4
  import { jsxs, jsx } from 'react/jsx-runtime';
4
5
 
@@ -37,7 +38,7 @@ function InputTag({
37
38
  adapter,
38
39
  triggers,
39
40
  maxItems = 8,
40
- placement = "bottom-left",
41
+ placement = "bottom-start",
41
42
  className,
42
43
  style,
43
44
  onPick
@@ -46,6 +47,8 @@ function InputTag({
46
47
  const [active, setActive] = useState(null);
47
48
  const [cursor, setCursor] = useState(0);
48
49
  const [anchorRect, setAnchorRect] = useState(null);
50
+ const popRef = useRef(null);
51
+ const [rtl, setRtl] = useState(false);
49
52
  const stateRef = useRef({ text: "", caretIndex: 0 });
50
53
  const activeRef = useRef(null);
51
54
  const cursorRef = useRef(0);
@@ -133,13 +136,17 @@ function InputTag({
133
136
  }
134
137
  });
135
138
  }, [adapter, items, pickItem]);
139
+ useLayoutEffect(() => {
140
+ if (popRef.current) setRtl(isRtl(popRef.current));
141
+ });
136
142
  if (!active || !anchorRect || items.length === 0) return null;
137
143
  const cfg = triggers[active.char];
138
144
  if (!cfg) return null;
139
- const popStyle = computePopoverStyle(anchorRect, placement);
145
+ const popStyle = computePopoverStyle(anchorRect, logicalToPhysical(placement, rtl));
140
146
  return /* @__PURE__ */ jsxs(
141
147
  "div",
142
148
  {
149
+ ref: popRef,
143
150
  role: "listbox",
144
151
  "aria-label": cfg.label ?? `Pick a ${active.char === "/" ? "command" : "mention"}`,
145
152
  className: [
@@ -189,6 +196,12 @@ function labelForChar(ch) {
189
196
  if (ch === ":") return "Emoji";
190
197
  return `Trigger ${ch}`;
191
198
  }
199
+ function logicalToPhysical(placement, rtl) {
200
+ const [block, inline] = placement.split("-");
201
+ if (inline === "start") return `${block}-${rtl ? "right" : "left"}`;
202
+ if (inline === "end") return `${block}-${rtl ? "left" : "right"}`;
203
+ return placement;
204
+ }
192
205
  function computePopoverStyle(anchor, placement) {
193
206
  const offset = 4;
194
207
  switch (placement) {
@@ -420,5 +433,5 @@ function controlledAdapter(opts) {
420
433
  }
421
434
 
422
435
  export { InputTag, contentEditableAdapter, controlledAdapter, inputAdapter, textareaAdapter };
423
- //# sourceMappingURL=chunk-37D5PYEF.js.map
424
- //# sourceMappingURL=chunk-37D5PYEF.js.map
436
+ //# sourceMappingURL=chunk-3O3ZWWLG.js.map
437
+ //# sourceMappingURL=chunk-3O3ZWWLG.js.map