@cambly/syntax-core 10.9.0 → 10.11.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 (417) hide show
  1. package/dist/Avatar/Avatar.cjs +10 -9
  2. package/dist/Avatar/Avatar.d.ts +1 -1
  3. package/dist/Avatar/Avatar.js +10 -9
  4. package/dist/AvatarGroup/AvatarGroup.cjs +9 -8
  5. package/dist/AvatarGroup/AvatarGroup.js +9 -8
  6. package/dist/Badge/Badge.cjs +11 -10
  7. package/dist/Badge/Badge.d.ts +1 -1
  8. package/dist/Badge/Badge.js +11 -10
  9. package/dist/Box/Box.cjs +8 -7
  10. package/dist/Box/Box.js +8 -7
  11. package/dist/Button/Button.cjs +19 -18
  12. package/dist/Button/Button.js +20 -19
  13. package/dist/Button/constants/classicSize.cjs +2 -1
  14. package/dist/Button/constants/classicSize.cjs.map +1 -1
  15. package/dist/Button/constants/classicSize.js +2 -1
  16. package/dist/Button/constants/classicSize.js.map +1 -1
  17. package/dist/Button/constants/color.cjs +5 -4
  18. package/dist/Button/constants/color.js +3 -2
  19. package/dist/Button/constants/iconSize.cjs +6 -5
  20. package/dist/Button/constants/iconSize.js +4 -3
  21. package/dist/Button/constants/loadingIconSize.cjs +5 -4
  22. package/dist/Button/constants/loadingIconSize.js +3 -2
  23. package/dist/Button/constants/textVariant.cjs +5 -4
  24. package/dist/Button/constants/textVariant.js +3 -2
  25. package/dist/ButtonGroup/ButtonGroup.cjs +5 -4
  26. package/dist/ButtonGroup/ButtonGroup.d.ts +1 -1
  27. package/dist/ButtonGroup/ButtonGroup.js +3 -2
  28. package/dist/Card/Card.cjs +9 -8
  29. package/dist/Card/Card.d.ts +1 -12
  30. package/dist/Card/Card.js +9 -8
  31. package/dist/Checkbox/Checkbox.cjs +12 -11
  32. package/dist/Checkbox/Checkbox.d.ts +1 -1
  33. package/dist/Checkbox/Checkbox.js +10 -9
  34. package/dist/Chip/Chip.cjs +12 -11
  35. package/dist/Chip/Chip.js +12 -11
  36. package/dist/Dialog/Dialog.cjs +11 -10
  37. package/dist/Dialog/Dialog.js +11 -10
  38. package/dist/Dialog/ModalDialog.cjs +22 -21
  39. package/dist/Dialog/ModalDialog.js +23 -22
  40. package/dist/Divider/Divider.cjs +5 -4
  41. package/dist/Divider/Divider.js +3 -2
  42. package/dist/Heading/Heading.cjs +9 -8
  43. package/dist/Heading/Heading.d.ts +2 -2
  44. package/dist/Heading/Heading.js +7 -6
  45. package/dist/IconButton/IconButton.cjs +13 -12
  46. package/dist/IconButton/IconButton.js +12 -11
  47. package/dist/LinkButton/LinkButton.cjs +16 -15
  48. package/dist/LinkButton/LinkButton.js +15 -14
  49. package/dist/Modal/FocusTrap.cjs +5 -4
  50. package/dist/Modal/FocusTrap.js +3 -2
  51. package/dist/Modal/Layer.cjs +9 -8
  52. package/dist/Modal/Layer.js +9 -8
  53. package/dist/Modal/Modal.cjs +15 -14
  54. package/dist/Modal/Modal.js +15 -14
  55. package/dist/Modal/StopScroll.cjs +5 -4
  56. package/dist/Modal/StopScroll.js +3 -2
  57. package/dist/Popover/Popover.cjs +26 -25
  58. package/dist/Popover/Popover.js +27 -26
  59. package/dist/RadioButton/RadioButton.cjs +12 -11
  60. package/dist/RadioButton/RadioButton.d.ts +1 -1
  61. package/dist/RadioButton/RadioButton.js +10 -9
  62. package/dist/RichSelect/RichSelectBox.cjs +32 -31
  63. package/dist/RichSelect/RichSelectBox.d.ts +1 -1
  64. package/dist/RichSelect/RichSelectBox.js +33 -32
  65. package/dist/RichSelect/RichSelectChip.cjs +14 -13
  66. package/dist/RichSelect/RichSelectChip.js +14 -13
  67. package/dist/RichSelect/RichSelectItem.cjs +6 -5
  68. package/dist/RichSelect/RichSelectItem.js +4 -3
  69. package/dist/RichSelect/RichSelectList.cjs +45 -44
  70. package/dist/RichSelect/RichSelectList.d.ts +1 -1
  71. package/dist/RichSelect/RichSelectList.js +46 -45
  72. package/dist/RichSelect/RichSelectRadioButton.cjs +14 -13
  73. package/dist/RichSelect/RichSelectRadioButton.d.ts +1 -1
  74. package/dist/RichSelect/RichSelectRadioButton.js +12 -11
  75. package/dist/RichSelect/RichSelectSection.cjs +11 -10
  76. package/dist/RichSelect/RichSelectSection.js +10 -9
  77. package/dist/SelectList/SelectList.cjs +14 -13
  78. package/dist/SelectList/SelectList.js +12 -11
  79. package/dist/SelectList/SelectOption.cjs +5 -4
  80. package/dist/SelectList/SelectOption.js +3 -2
  81. package/dist/TapArea/TapArea.cjs +7 -6
  82. package/dist/TapArea/TapArea.d.ts +1 -1
  83. package/dist/TapArea/TapArea.js +5 -4
  84. package/dist/TextArea/TextArea.cjs +12 -11
  85. package/dist/TextArea/TextArea.js +13 -12
  86. package/dist/TextField/TextField.cjs +12 -11
  87. package/dist/TextField/TextField.js +13 -12
  88. package/dist/ThemeProvider/ThemeProvider.cjs +5 -4
  89. package/dist/ThemeProvider/ThemeProvider.js +3 -2
  90. package/dist/Tooltip/Tooltip.cjs +16 -15
  91. package/dist/Tooltip/Tooltip.js +16 -15
  92. package/dist/Typography/Typography.cjs +8 -7
  93. package/dist/Typography/Typography.d.ts +5 -5
  94. package/dist/Typography/Typography.js +6 -5
  95. package/dist/__chunks/{Q5RYWCW7.js → 23RTNWVN.js} +7 -6
  96. package/dist/__chunks/{Q5RYWCW7.js.map → 23RTNWVN.js.map} +1 -1
  97. package/dist/__chunks/{T2WKEFB5.js → 2HKT4ZZ3.js} +10 -9
  98. package/dist/__chunks/{T2WKEFB5.js.map → 2HKT4ZZ3.js.map} +1 -1
  99. package/dist/__chunks/{OI44OAX7.cjs → 2LJ5BR5J.cjs} +16 -15
  100. package/dist/__chunks/2LJ5BR5J.cjs.map +1 -0
  101. package/dist/__chunks/{PKXXQ3OV.js → 37PNBG3P.js} +3 -1
  102. package/dist/__chunks/{PKXXQ3OV.js.map → 37PNBG3P.js.map} +1 -1
  103. package/dist/__chunks/{Y6L6EOCB.js → 3AAZZWKY.js} +3 -2
  104. package/dist/__chunks/{Y6L6EOCB.js.map → 3AAZZWKY.js.map} +1 -1
  105. package/dist/__chunks/{GYI2PBXY.cjs → 3K37FYOT.cjs} +5 -4
  106. package/dist/__chunks/3K37FYOT.cjs.map +1 -0
  107. package/dist/__chunks/{LQ6T5UCI.cjs → 3P2PWHOU.cjs} +4 -2
  108. package/dist/__chunks/3P2PWHOU.cjs.map +1 -0
  109. package/dist/__chunks/{MGHMASZR.cjs → 44AWCXIE.cjs} +5 -4
  110. package/dist/__chunks/44AWCXIE.cjs.map +1 -0
  111. package/dist/__chunks/{DSGIOBWG.js → 46XGANFF.js} +3 -1
  112. package/dist/__chunks/{DSGIOBWG.js.map → 46XGANFF.js.map} +1 -1
  113. package/dist/__chunks/{UWLK56NJ.js → 4DDBT2NH.js} +3 -2
  114. package/dist/__chunks/{UWLK56NJ.js.map → 4DDBT2NH.js.map} +1 -1
  115. package/dist/__chunks/{SPWDKPHT.cjs → 4RHEB5F4.cjs} +5 -10
  116. package/dist/__chunks/4RHEB5F4.cjs.map +1 -0
  117. package/dist/__chunks/4U4UW4AK.js +2 -0
  118. package/dist/__chunks/{GKECCWR3.cjs → 4UJE5GMH.cjs} +4 -2
  119. package/dist/__chunks/4UJE5GMH.cjs.map +1 -0
  120. package/dist/__chunks/{DM4UMQ5D.cjs → 4ZST4KQI.cjs} +35 -34
  121. package/dist/__chunks/4ZST4KQI.cjs.map +1 -0
  122. package/dist/__chunks/{A72TS5OX.cjs → 54PSDUCD.cjs} +4 -2
  123. package/dist/__chunks/54PSDUCD.cjs.map +1 -0
  124. package/dist/__chunks/{7AYSDTC6.cjs → 5JUNB754.cjs} +4 -2
  125. package/dist/__chunks/5JUNB754.cjs.map +1 -0
  126. package/dist/__chunks/{4QCCTDDW.cjs → 6B2PWEM7.cjs} +8 -7
  127. package/dist/__chunks/6B2PWEM7.cjs.map +1 -0
  128. package/dist/__chunks/{SJG2X2VN.cjs → 6DRTKEXK.cjs} +11 -10
  129. package/dist/__chunks/6DRTKEXK.cjs.map +1 -0
  130. package/dist/__chunks/{CVY5S6ZX.cjs → 6IS4356O.cjs} +11 -10
  131. package/dist/__chunks/6IS4356O.cjs.map +1 -0
  132. package/dist/__chunks/{ANT3IQ3X.cjs → 6SALMOFU.cjs} +22 -21
  133. package/dist/__chunks/6SALMOFU.cjs.map +1 -0
  134. package/dist/__chunks/{KP3CHNJW.js → 6WW5YWOS.js} +10 -9
  135. package/dist/__chunks/{KP3CHNJW.js.map → 6WW5YWOS.js.map} +1 -1
  136. package/dist/__chunks/{5ZDZZL2P.js → 7N4ZDVVD.js} +3 -1
  137. package/dist/__chunks/{5ZDZZL2P.js.map → 7N4ZDVVD.js.map} +1 -1
  138. package/dist/__chunks/{JOG44CT2.js → 7P2G663D.js} +10 -9
  139. package/dist/__chunks/{JOG44CT2.js.map → 7P2G663D.js.map} +1 -1
  140. package/dist/__chunks/A4O4F3KK.cjs +57 -0
  141. package/dist/__chunks/A4O4F3KK.cjs.map +1 -0
  142. package/dist/__chunks/{BIOBVFK4.js → A4QZYP2J.js} +5 -4
  143. package/dist/__chunks/{BIOBVFK4.js.map → A4QZYP2J.js.map} +1 -1
  144. package/dist/__chunks/{ARYTS7XZ.js → ABAYJGAF.js} +6 -5
  145. package/dist/__chunks/{ARYTS7XZ.js.map → ABAYJGAF.js.map} +1 -1
  146. package/dist/__chunks/{SJFWRAOP.cjs → BA4JPX36.cjs} +4 -2
  147. package/dist/__chunks/BA4JPX36.cjs.map +1 -0
  148. package/dist/__chunks/{OGJDUOWP.js → BWPNF6RD.js} +3 -1
  149. package/dist/__chunks/{OGJDUOWP.js.map → BWPNF6RD.js.map} +1 -1
  150. package/dist/__chunks/{POAYQEOA.cjs → CJJAA2FD.cjs} +4 -2
  151. package/dist/__chunks/CJJAA2FD.cjs.map +1 -0
  152. package/dist/__chunks/{WKDXUPAM.cjs → COV3XKSJ.cjs} +4 -2
  153. package/dist/__chunks/COV3XKSJ.cjs.map +1 -0
  154. package/dist/__chunks/{PTWXXDFF.js → DDUJFFG7.js} +3 -1
  155. package/dist/__chunks/{PTWXXDFF.js.map → DDUJFFG7.js.map} +1 -1
  156. package/dist/__chunks/{3TXXNWWA.cjs → DJHFPKBX.cjs} +4 -2
  157. package/dist/__chunks/DJHFPKBX.cjs.map +1 -0
  158. package/dist/__chunks/{M3L2KJQY.cjs → DKBI6MRY.cjs} +14 -13
  159. package/dist/__chunks/DKBI6MRY.cjs.map +1 -0
  160. package/dist/__chunks/{ZUFGJYFB.js → DUQSTRXU.js} +3 -2
  161. package/dist/__chunks/{ZUFGJYFB.js.map → DUQSTRXU.js.map} +1 -1
  162. package/dist/__chunks/{XKDASN7N.js → E5KMIBEU.js} +3 -1
  163. package/dist/__chunks/{XKDASN7N.js.map → E5KMIBEU.js.map} +1 -1
  164. package/dist/__chunks/{RFHPSEBF.cjs → E5P6WRJD.cjs} +4 -2
  165. package/dist/__chunks/E5P6WRJD.cjs.map +1 -0
  166. package/dist/__chunks/{DWTZH7KM.cjs → EQIP4BAD.cjs} +12 -11
  167. package/dist/__chunks/EQIP4BAD.cjs.map +1 -0
  168. package/dist/__chunks/{GJ44NFS5.cjs → FFPBVVGU.cjs} +7 -6
  169. package/dist/__chunks/FFPBVVGU.cjs.map +1 -0
  170. package/dist/__chunks/{5I67FE26.js → FMQVMNVR.js} +3 -1
  171. package/dist/__chunks/{5I67FE26.js.map → FMQVMNVR.js.map} +1 -1
  172. package/dist/__chunks/{WPRJVUVL.cjs → FO34OHGH.cjs} +27 -26
  173. package/dist/__chunks/FO34OHGH.cjs.map +1 -0
  174. package/dist/__chunks/{4PLE46VU.cjs → FZLDJPVT.cjs} +4 -2
  175. package/dist/__chunks/FZLDJPVT.cjs.map +1 -0
  176. package/dist/__chunks/{K3H7QFPB.js → GFKDPMFK.js} +3 -1
  177. package/dist/__chunks/{K3H7QFPB.js.map → GFKDPMFK.js.map} +1 -1
  178. package/dist/__chunks/{CRDTRKBH.js → GHQXAXV3.js} +8 -7
  179. package/dist/__chunks/{CRDTRKBH.js.map → GHQXAXV3.js.map} +1 -1
  180. package/dist/__chunks/{2IVYMX2N.cjs → H44LFJ2L.cjs} +15 -14
  181. package/dist/__chunks/H44LFJ2L.cjs.map +1 -0
  182. package/dist/__chunks/{DAMHOGG6.js → HNDUANRX.js} +5 -4
  183. package/dist/__chunks/{DAMHOGG6.js.map → HNDUANRX.js.map} +1 -1
  184. package/dist/__chunks/{PBWG2BB5.cjs → HUIHS6RN.cjs} +4 -2
  185. package/dist/__chunks/HUIHS6RN.cjs.map +1 -0
  186. package/dist/__chunks/{PSWX5DBC.cjs → HWQUS53M.cjs} +4 -2
  187. package/dist/__chunks/HWQUS53M.cjs.map +1 -0
  188. package/dist/__chunks/{BQ6CW43H.js → IDI4ITMK.js} +5 -4
  189. package/dist/__chunks/{BQ6CW43H.js.map → IDI4ITMK.js.map} +1 -1
  190. package/dist/__chunks/{7W5RYLTS.cjs → IYA2TMMR.cjs} +10 -9
  191. package/dist/__chunks/IYA2TMMR.cjs.map +1 -0
  192. package/dist/__chunks/{3UFCDOCF.js → IYVE2HA6.js} +5 -4
  193. package/dist/__chunks/{3UFCDOCF.js.map → IYVE2HA6.js.map} +1 -1
  194. package/dist/__chunks/{MQUMPR4A.js → J6IV47MV.js} +9 -8
  195. package/dist/__chunks/{MQUMPR4A.js.map → J6IV47MV.js.map} +1 -1
  196. package/dist/__chunks/{YJ7YDIGB.js → JB65NEXK.js} +3 -1
  197. package/dist/__chunks/{YJ7YDIGB.js.map → JB65NEXK.js.map} +1 -1
  198. package/dist/__chunks/{X6F66N7W.cjs → JDLL6DAC.cjs} +16 -15
  199. package/dist/__chunks/JDLL6DAC.cjs.map +1 -0
  200. package/dist/__chunks/{5OB72SMM.js → JHJZ5COD.js} +3 -1
  201. package/dist/__chunks/{5OB72SMM.js.map → JHJZ5COD.js.map} +1 -1
  202. package/dist/__chunks/{DSCWFIR3.cjs → JQGCEUQE.cjs} +12 -11
  203. package/dist/__chunks/JQGCEUQE.cjs.map +1 -0
  204. package/dist/__chunks/{YHKD5YRY.js → JVOQF4CG.js} +3 -2
  205. package/dist/__chunks/{YHKD5YRY.js.map → JVOQF4CG.js.map} +1 -1
  206. package/dist/__chunks/{FZRIE7EX.cjs → K4AUV2VK.cjs} +4 -2
  207. package/dist/__chunks/K4AUV2VK.cjs.map +1 -0
  208. package/dist/__chunks/{2O6FDRTF.js → KKADUD65.js} +3 -1
  209. package/dist/__chunks/{2O6FDRTF.js.map → KKADUD65.js.map} +1 -1
  210. package/dist/__chunks/{42YPEAFS.js → KODEDJGB.js} +3 -1
  211. package/dist/__chunks/{42YPEAFS.js.map → KODEDJGB.js.map} +1 -1
  212. package/dist/__chunks/{SCOOHJY4.js → KUXGXAAN.js} +5 -4
  213. package/dist/__chunks/{SCOOHJY4.js.map → KUXGXAAN.js.map} +1 -1
  214. package/dist/__chunks/{32FNU7ZY.js → L7PPCZM5.js} +4 -3
  215. package/dist/__chunks/{32FNU7ZY.js.map → L7PPCZM5.js.map} +1 -1
  216. package/dist/__chunks/{4EXO6IHD.cjs → LLFHCGRA.cjs} +4 -2
  217. package/dist/__chunks/LLFHCGRA.cjs.map +1 -0
  218. package/dist/__chunks/{JQ6POHCA.js → M26PGOYA.js} +4 -3
  219. package/dist/__chunks/{JQ6POHCA.js.map → M26PGOYA.js.map} +1 -1
  220. package/dist/__chunks/{I5W7ECUO.js → MAPDSZR4.js} +5 -4
  221. package/dist/__chunks/{I5W7ECUO.js.map → MAPDSZR4.js.map} +1 -1
  222. package/dist/__chunks/{ZDMSFZS3.cjs → MF7LLV7V.cjs} +4 -2
  223. package/dist/__chunks/MF7LLV7V.cjs.map +1 -0
  224. package/dist/__chunks/{6LBX2D7Z.js → MNVLUU4O.js} +14 -13
  225. package/dist/__chunks/{6LBX2D7Z.js.map → MNVLUU4O.js.map} +1 -1
  226. package/dist/__chunks/{5HJFQPOL.js → MTLPG2DC.js} +4 -3
  227. package/dist/__chunks/{5HJFQPOL.js.map → MTLPG2DC.js.map} +1 -1
  228. package/dist/__chunks/{GVEA7SLQ.cjs → NOELZTQX.cjs} +4 -2
  229. package/dist/__chunks/NOELZTQX.cjs.map +1 -0
  230. package/dist/__chunks/{TVGN7SBI.cjs → NYOKOJQB.cjs} +24 -23
  231. package/dist/__chunks/NYOKOJQB.cjs.map +1 -0
  232. package/dist/__chunks/{KMIZI5PW.js → O3CEUWCC.js} +3 -1
  233. package/dist/__chunks/{KMIZI5PW.js.map → O3CEUWCC.js.map} +1 -1
  234. package/dist/__chunks/{IISMRA4R.js → OF66QEJL.js} +3 -1
  235. package/dist/__chunks/{IISMRA4R.js.map → OF66QEJL.js.map} +1 -1
  236. package/dist/__chunks/{HOSRHZZG.js → OFOTR7RY.js} +5 -4
  237. package/dist/__chunks/{HOSRHZZG.js.map → OFOTR7RY.js.map} +1 -1
  238. package/dist/__chunks/{ZEA5JDEB.js → OULAADL7.js} +7 -6
  239. package/dist/__chunks/{ZEA5JDEB.js.map → OULAADL7.js.map} +1 -1
  240. package/dist/__chunks/{UXWIAEKV.cjs → P67XTYNK.cjs} +24 -23
  241. package/dist/__chunks/P67XTYNK.cjs.map +1 -0
  242. package/dist/__chunks/{5WNFAQGY.cjs → PLUVW6AM.cjs} +4 -2
  243. package/dist/__chunks/PLUVW6AM.cjs.map +1 -0
  244. package/dist/__chunks/{AXP5KWIY.cjs → PTQQBZPQ.cjs} +12 -11
  245. package/dist/__chunks/PTQQBZPQ.cjs.map +1 -0
  246. package/dist/__chunks/{OXKLJY2L.js → QBGKDCTG.js} +5 -4
  247. package/dist/__chunks/{OXKLJY2L.js.map → QBGKDCTG.js.map} +1 -1
  248. package/dist/__chunks/{AFINOME7.js → QQT35OLE.js} +3 -1
  249. package/dist/__chunks/{AFINOME7.js.map → QQT35OLE.js.map} +1 -1
  250. package/dist/__chunks/{CGFXAKKI.js → QSC7CAQA.js} +3 -1
  251. package/dist/__chunks/{CGFXAKKI.js.map → QSC7CAQA.js.map} +1 -1
  252. package/dist/__chunks/{VS4SS6B3.cjs → RKEF7WKZ.cjs} +13 -12
  253. package/dist/__chunks/RKEF7WKZ.cjs.map +1 -0
  254. package/dist/__chunks/{RXNTJFP4.js → RN3PLPAG.js} +3 -1
  255. package/dist/__chunks/{RXNTJFP4.js.map → RN3PLPAG.js.map} +1 -1
  256. package/dist/__chunks/{VMARHE5B.cjs → SBCGYV6N.cjs} +4 -2
  257. package/dist/__chunks/SBCGYV6N.cjs.map +1 -0
  258. package/dist/__chunks/{ARBLKS7D.js → SVZOETLJ.js} +3 -1
  259. package/dist/__chunks/{ARBLKS7D.js.map → SVZOETLJ.js.map} +1 -1
  260. package/dist/__chunks/{K2AMFXJG.cjs → T6GJCK6W.cjs} +26 -25
  261. package/dist/__chunks/T6GJCK6W.cjs.map +1 -0
  262. package/dist/__chunks/{KOZMH6AE.js → TXXXNKKO.js} +6 -5
  263. package/dist/__chunks/{KOZMH6AE.js.map → TXXXNKKO.js.map} +1 -1
  264. package/dist/__chunks/{QJI4G5FP.cjs → UAN6WTHU.cjs} +8 -7
  265. package/dist/__chunks/UAN6WTHU.cjs.map +1 -0
  266. package/dist/__chunks/{VA23P3ZI.cjs → ULMCQ7EA.cjs} +20 -19
  267. package/dist/__chunks/ULMCQ7EA.cjs.map +1 -0
  268. package/dist/__chunks/{LULBCTQR.js → UWGNJENA.js} +2 -1
  269. package/dist/__chunks/{6NXOQHE2.js → UZODIMNK.js} +11 -10
  270. package/dist/__chunks/{6NXOQHE2.js.map → UZODIMNK.js.map} +1 -1
  271. package/dist/__chunks/{2L772DMJ.js → V6DB6ZQU.js} +5 -4
  272. package/dist/__chunks/{2L772DMJ.js.map → V6DB6ZQU.js.map} +1 -1
  273. package/dist/__chunks/{TMH27D62.js → VBRCBEDC.js} +12 -11
  274. package/dist/__chunks/{TMH27D62.js.map → VBRCBEDC.js.map} +1 -1
  275. package/dist/__chunks/{7GJ2SD7O.cjs → VF7PQHZP.cjs} +4 -2
  276. package/dist/__chunks/VF7PQHZP.cjs.map +1 -0
  277. package/dist/__chunks/{4YO26FWL.cjs → VKB7KOAH.cjs} +4 -2
  278. package/dist/__chunks/VKB7KOAH.cjs.map +1 -0
  279. package/dist/__chunks/{LCEAHKFE.cjs → WEIWUACW.cjs} +8 -7
  280. package/dist/__chunks/WEIWUACW.cjs.map +1 -0
  281. package/dist/__chunks/WFVGNGEP.cjs +2 -0
  282. package/dist/__chunks/{SZCVEBN2.cjs → WJRIAS4W.cjs} +12 -11
  283. package/dist/__chunks/WJRIAS4W.cjs.map +1 -0
  284. package/dist/__chunks/{33HJ72Y2.cjs → WRTSVDQZ.cjs} +4 -2
  285. package/dist/__chunks/WRTSVDQZ.cjs.map +1 -0
  286. package/dist/__chunks/{74UCGNED.js → WSRIDHYX.js} +3 -8
  287. package/dist/__chunks/WSRIDHYX.js.map +1 -0
  288. package/dist/__chunks/{FINKF5MC.cjs → WYWNQJ3B.cjs} +9 -8
  289. package/dist/__chunks/WYWNQJ3B.cjs.map +1 -0
  290. package/dist/__chunks/{TF76F532.cjs → X2LNODY7.cjs} +4 -2
  291. package/dist/__chunks/X2LNODY7.cjs.map +1 -0
  292. package/dist/__chunks/{I64JGYX7.cjs → X2SDR4SD.cjs} +3 -2
  293. package/dist/__chunks/{TPMQI44L.js → X5UGK633.js} +3 -1
  294. package/dist/__chunks/{TPMQI44L.js.map → X5UGK633.js.map} +1 -1
  295. package/dist/__chunks/{TIW4V757.cjs → X6HZ6DM2.cjs} +21 -20
  296. package/dist/__chunks/X6HZ6DM2.cjs.map +1 -0
  297. package/dist/__chunks/{7W3S3GV2.cjs → XE3INH2F.cjs} +5 -4
  298. package/dist/__chunks/XE3INH2F.cjs.map +1 -0
  299. package/dist/__chunks/{TZX4M4BC.cjs → XEN6XJKU.cjs} +4 -2
  300. package/dist/__chunks/XEN6XJKU.cjs.map +1 -0
  301. package/dist/__chunks/{IOQT7L7F.js → XFP4MBWD.js} +3 -1
  302. package/dist/__chunks/{IOQT7L7F.js.map → XFP4MBWD.js.map} +1 -1
  303. package/dist/__chunks/{LTM57QMY.cjs → XLUVINJW.cjs} +4 -2
  304. package/dist/__chunks/XLUVINJW.cjs.map +1 -0
  305. package/dist/__chunks/{YOMN7RCA.js → Y2OAIOQE.js} +3 -2
  306. package/dist/__chunks/{YOMN7RCA.js.map → Y2OAIOQE.js.map} +1 -1
  307. package/dist/__chunks/{HOUO3WV6.js → Y47XTR6M.js} +3 -1
  308. package/dist/__chunks/{HOUO3WV6.js.map → Y47XTR6M.js.map} +1 -1
  309. package/dist/__chunks/{WDR3YIMA.cjs → YT3NEG6Z.cjs} +9 -8
  310. package/dist/__chunks/YT3NEG6Z.cjs.map +1 -0
  311. package/dist/__chunks/{6VWFOSQZ.js → Z4ZJZXZV.js} +3 -1
  312. package/dist/__chunks/{6VWFOSQZ.js.map → Z4ZJZXZV.js.map} +1 -1
  313. package/dist/__chunks/{JXZMI4WT.js → Z5ZUAP2B.js} +3 -1
  314. package/dist/__chunks/{JXZMI4WT.js.map → Z5ZUAP2B.js.map} +1 -1
  315. package/dist/__chunks/{JBEJC7X2.js → Z7EXVTCJ.js} +4 -3
  316. package/dist/__chunks/{JBEJC7X2.js.map → Z7EXVTCJ.js.map} +1 -1
  317. package/dist/__chunks/{IOYNCG2J.js → ZBDW45GJ.js} +8 -7
  318. package/dist/__chunks/{IOYNCG2J.js.map → ZBDW45GJ.js.map} +1 -1
  319. package/dist/__chunks/{652STTPK.js → ZOWOFYUE.js} +3 -1
  320. package/dist/__chunks/{652STTPK.js.map → ZOWOFYUE.js.map} +1 -1
  321. package/dist/__chunks/{K2SCOMJX.cjs → ZX7LO5H4.cjs} +28 -27
  322. package/dist/__chunks/ZX7LO5H4.cjs.map +1 -0
  323. package/dist/colors/allColors.cjs +2 -1
  324. package/dist/colors/allColors.cjs.map +1 -1
  325. package/dist/colors/allColors.js +2 -1
  326. package/dist/colors/allColors.js.map +1 -1
  327. package/dist/colors/backgroundColor.cjs +7 -6
  328. package/dist/colors/backgroundColor.js +5 -4
  329. package/dist/colors/foregroundColor.cjs +7 -6
  330. package/dist/colors/foregroundColor.js +5 -4
  331. package/dist/colors/foregroundTypographyColor.cjs +2 -1
  332. package/dist/colors/foregroundTypographyColor.cjs.map +1 -1
  333. package/dist/colors/foregroundTypographyColor.js +2 -1
  334. package/dist/colors/foregroundTypographyColor.js.map +1 -1
  335. package/dist/constants.cjs +2 -1
  336. package/dist/constants.cjs.map +1 -1
  337. package/dist/constants.js +2 -1
  338. package/dist/constants.js.map +1 -1
  339. package/dist/index.cjs +61 -60
  340. package/dist/index.js +63 -62
  341. package/dist/react-aria-utils/OverlayVisibility.cjs +5 -4
  342. package/dist/react-aria-utils/OverlayVisibility.js +3 -2
  343. package/dist/react-aria-utils/Triggerable.cjs +6 -5
  344. package/dist/react-aria-utils/Triggerable.js +4 -3
  345. package/dist/react-aria-utils/placement.cjs +5 -4
  346. package/dist/react-aria-utils/placement.js +3 -2
  347. package/dist/react-aria-utils/useDomRefSyntheticEventBridge.cjs +5 -4
  348. package/dist/react-aria-utils/useDomRefSyntheticEventBridge.js +3 -2
  349. package/dist/useFocusVisible.cjs +5 -4
  350. package/dist/useFocusVisible.js +3 -2
  351. package/dist/useIsHydrated.cjs +5 -4
  352. package/dist/useIsHydrated.js +3 -2
  353. package/package.json +1 -1
  354. package/dist/__chunks/2IVYMX2N.cjs.map +0 -1
  355. package/dist/__chunks/33HJ72Y2.cjs.map +0 -1
  356. package/dist/__chunks/3TXXNWWA.cjs.map +0 -1
  357. package/dist/__chunks/4EXO6IHD.cjs.map +0 -1
  358. package/dist/__chunks/4PLE46VU.cjs.map +0 -1
  359. package/dist/__chunks/4QCCTDDW.cjs.map +0 -1
  360. package/dist/__chunks/4YO26FWL.cjs.map +0 -1
  361. package/dist/__chunks/5AR53MHD.js +0 -1
  362. package/dist/__chunks/5WNFAQGY.cjs.map +0 -1
  363. package/dist/__chunks/74UCGNED.js.map +0 -1
  364. package/dist/__chunks/7AYSDTC6.cjs.map +0 -1
  365. package/dist/__chunks/7GJ2SD7O.cjs.map +0 -1
  366. package/dist/__chunks/7W3S3GV2.cjs.map +0 -1
  367. package/dist/__chunks/7W5RYLTS.cjs.map +0 -1
  368. package/dist/__chunks/A72TS5OX.cjs.map +0 -1
  369. package/dist/__chunks/ANT3IQ3X.cjs.map +0 -1
  370. package/dist/__chunks/AXP5KWIY.cjs.map +0 -1
  371. package/dist/__chunks/CVY5S6ZX.cjs.map +0 -1
  372. package/dist/__chunks/DM4UMQ5D.cjs.map +0 -1
  373. package/dist/__chunks/DSCWFIR3.cjs.map +0 -1
  374. package/dist/__chunks/DWTZH7KM.cjs.map +0 -1
  375. package/dist/__chunks/FINKF5MC.cjs.map +0 -1
  376. package/dist/__chunks/FZRIE7EX.cjs.map +0 -1
  377. package/dist/__chunks/GJ44NFS5.cjs.map +0 -1
  378. package/dist/__chunks/GKECCWR3.cjs.map +0 -1
  379. package/dist/__chunks/GVEA7SLQ.cjs.map +0 -1
  380. package/dist/__chunks/GYI2PBXY.cjs.map +0 -1
  381. package/dist/__chunks/K2AMFXJG.cjs.map +0 -1
  382. package/dist/__chunks/K2SCOMJX.cjs.map +0 -1
  383. package/dist/__chunks/LCEAHKFE.cjs.map +0 -1
  384. package/dist/__chunks/LQ6T5UCI.cjs.map +0 -1
  385. package/dist/__chunks/LTM57QMY.cjs.map +0 -1
  386. package/dist/__chunks/M3L2KJQY.cjs.map +0 -1
  387. package/dist/__chunks/MF7Q6ZSW.cjs +0 -56
  388. package/dist/__chunks/MF7Q6ZSW.cjs.map +0 -1
  389. package/dist/__chunks/MGHMASZR.cjs.map +0 -1
  390. package/dist/__chunks/OI44OAX7.cjs.map +0 -1
  391. package/dist/__chunks/PBWG2BB5.cjs.map +0 -1
  392. package/dist/__chunks/POAYQEOA.cjs.map +0 -1
  393. package/dist/__chunks/PSWX5DBC.cjs.map +0 -1
  394. package/dist/__chunks/QJI4G5FP.cjs.map +0 -1
  395. package/dist/__chunks/RFHPSEBF.cjs.map +0 -1
  396. package/dist/__chunks/SJFWRAOP.cjs.map +0 -1
  397. package/dist/__chunks/SJG2X2VN.cjs.map +0 -1
  398. package/dist/__chunks/SPWDKPHT.cjs.map +0 -1
  399. package/dist/__chunks/SZCVEBN2.cjs.map +0 -1
  400. package/dist/__chunks/TF76F532.cjs.map +0 -1
  401. package/dist/__chunks/TIW4V757.cjs.map +0 -1
  402. package/dist/__chunks/TVGN7SBI.cjs.map +0 -1
  403. package/dist/__chunks/TZX4M4BC.cjs.map +0 -1
  404. package/dist/__chunks/UXWIAEKV.cjs.map +0 -1
  405. package/dist/__chunks/VA23P3ZI.cjs.map +0 -1
  406. package/dist/__chunks/VMARHE5B.cjs.map +0 -1
  407. package/dist/__chunks/VS4SS6B3.cjs.map +0 -1
  408. package/dist/__chunks/VUANIQYP.cjs +0 -1
  409. package/dist/__chunks/WDR3YIMA.cjs.map +0 -1
  410. package/dist/__chunks/WKDXUPAM.cjs.map +0 -1
  411. package/dist/__chunks/WPRJVUVL.cjs.map +0 -1
  412. package/dist/__chunks/X6F66N7W.cjs.map +0 -1
  413. package/dist/__chunks/ZDMSFZS3.cjs.map +0 -1
  414. /package/dist/__chunks/{5AR53MHD.js.map → 4U4UW4AK.js.map} +0 -0
  415. /package/dist/__chunks/{LULBCTQR.js.map → UWGNJENA.js.map} +0 -0
  416. /package/dist/__chunks/{I64JGYX7.cjs.map → WFVGNGEP.cjs.map} +0 -0
  417. /package/dist/__chunks/{VUANIQYP.cjs.map → X2SDR4SD.cjs.map} +0 -0
@@ -1,28 +1,29 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client"
2
2
 
3
- var _TZX4M4BCcjs = require('./TZX4M4BC.cjs');
4
3
 
4
+ var _XEN6XJKUcjs = require('./XEN6XJKU.cjs');
5
5
 
6
- var _UXWIAEKVcjs = require('./UXWIAEKV.cjs');
7
6
 
7
+ var _P67XTYNKcjs = require('./P67XTYNK.cjs');
8
8
 
9
- var _3TXXNWWAcjs = require('./3TXXNWWA.cjs');
10
9
 
10
+ var _DJHFPKBXcjs = require('./DJHFPKBX.cjs');
11
11
 
12
- var _LCEAHKFEcjs = require('./LCEAHKFE.cjs');
13
12
 
13
+ var _WEIWUACWcjs = require('./WEIWUACW.cjs');
14
14
 
15
- var _7W5RYLTScjs = require('./7W5RYLTS.cjs');
16
15
 
16
+ var _IYA2TMMRcjs = require('./IYA2TMMR.cjs');
17
17
 
18
- var _WDR3YIMAcjs = require('./WDR3YIMA.cjs');
19
18
 
19
+ var _YT3NEG6Zcjs = require('./YT3NEG6Z.cjs');
20
20
 
21
21
 
22
- var _GYI2PBXYcjs = require('./GYI2PBXY.cjs');
23
22
 
23
+ var _3K37FYOTcjs = require('./3K37FYOT.cjs');
24
24
 
25
- var _SZCVEBN2cjs = require('./SZCVEBN2.cjs');
25
+
26
+ var _WJRIAS4Wcjs = require('./WJRIAS4W.cjs');
26
27
 
27
28
  // src/RichSelect/RichSelectBox.tsx
28
29
 
@@ -124,7 +125,7 @@ var RichSelectBox = _react.forwardRef.call(void 0,
124
125
  });
125
126
  }, []);
126
127
  const { autoFocus } = _react.useContext.call(void 0, RichSelectBoxContext);
127
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _GYI2PBXYcjs.RichSelectItemContext.Provider, { value: { disableKey }, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _SZCVEBN2cjs.Box_default, { children: [
128
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _3K37FYOTcjs.RichSelectItemContext.Provider, { value: { disableKey }, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _WJRIAS4Wcjs.Box_default, { children: [
128
129
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
129
130
  _reactariacomponents.ListBox,
130
131
  {
@@ -138,12 +139,12 @@ var RichSelectBox = _react.forwardRef.call(void 0,
138
139
  selectedKeys: stagedKeys,
139
140
  onSelectionChange: stageChanges,
140
141
  disabledKeys: disabledKeysComposed,
141
- className: _GYI2PBXYcjs.RichSelect_module_default.richSelectBox,
142
+ className: _3K37FYOTcjs.RichSelect_module_default.richSelectBox,
142
143
  children
143
144
  }
144
145
  ),
145
146
  !autosave && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
146
- _SZCVEBN2cjs.Box_default,
147
+ _WJRIAS4Wcjs.Box_default,
147
148
  {
148
149
  backgroundColor: "white",
149
150
  display: "flex",
@@ -158,17 +159,17 @@ var RichSelectBox = _react.forwardRef.call(void 0,
158
159
  }
159
160
  },
160
161
  children: [
161
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _SZCVEBN2cjs.Box_default, { flex: "grow", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _3TXXNWWAcjs.Divider, {}) }),
162
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _WJRIAS4Wcjs.Box_default, { flex: "grow", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _DJHFPKBXcjs.Divider, {}) }),
162
163
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
163
- _SZCVEBN2cjs.Box_default,
164
+ _WJRIAS4Wcjs.Box_default,
164
165
  {
165
166
  paddingY: 5,
166
167
  marginTop: -5,
167
168
  display: "flex",
168
169
  justifyContent: "end",
169
- children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _TZX4M4BCcjs.ButtonGroup_default, { orientation: "horizontal", children: [
170
+ children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _XEN6XJKUcjs.ButtonGroup_default, { orientation: "horizontal", children: [
170
171
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
171
- _UXWIAEKVcjs.Button_default,
172
+ _P67XTYNKcjs.Button_default,
172
173
  {
173
174
  onClick: clearChanges,
174
175
  color: "secondary",
@@ -178,7 +179,7 @@ var RichSelectBox = _react.forwardRef.call(void 0,
178
179
  }
179
180
  ),
180
181
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
181
- _UXWIAEKVcjs.Button_default,
182
+ _P67XTYNKcjs.Button_default,
182
183
  {
183
184
  onClick: saveChanges,
184
185
  text: primaryButtonText,
@@ -197,9 +198,9 @@ var RichSelectBox = _react.forwardRef.call(void 0,
197
198
  }
198
199
  );
199
200
  var RichSelectBox_default = Object.assign(RichSelectBox, {
200
- Section: _7W5RYLTScjs.RichSelectSection_default,
201
- Chip: _LCEAHKFEcjs.RichSelectChip_default,
202
- RadioButton: _WDR3YIMAcjs.RichSelectRadioButton_default
201
+ Section: _IYA2TMMRcjs.RichSelectSection_default,
202
+ Chip: _WEIWUACWcjs.RichSelectChip_default,
203
+ RadioButton: _YT3NEG6Zcjs.RichSelectRadioButton_default
203
204
  });
204
205
 
205
206
 
@@ -207,4 +208,4 @@ var RichSelectBox_default = Object.assign(RichSelectBox, {
207
208
 
208
209
 
209
210
  exports.convertSelection = convertSelection; exports.RichSelectBoxContext = RichSelectBoxContext; exports.RichSelectBox_default = RichSelectBox_default;
210
- //# sourceMappingURL=ANT3IQ3X.cjs.map
211
+ //# sourceMappingURL=6SALMOFU.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/RichSelect/RichSelectBox.tsx"],"names":["RichSelectBox"],"mappings":"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","sourcesContent":["import React, {\n forwardRef,\n type ReactElement,\n useContext,\n useState,\n useCallback,\n createContext,\n useMemo,\n} from \"react\";\nimport { ListBox as ReactAriaListBox } from \"react-aria-components\";\nimport { type Key } from \"react-aria\";\nimport { type Selection } from \"react-stately\";\nimport { useControlledState } from \"@react-stately/utils\";\nimport { RichSelectItemContext } from \"./RichSelectItem\";\nimport ButtonGroup from \"../ButtonGroup/ButtonGroup\";\nimport Button from \"../Button/Button\";\nimport styles from \"./RichSelect.module.css\";\nimport Box from \"../Box/Box\";\nimport Divider from \"../Divider/Divider\";\nimport RichSelectSection from \"./RichSelectSection\";\nimport RichSelectChip from \"./RichSelectChip\";\nimport RichSelectRadioButton from \"./RichSelectRadioButton\";\n\ntype RichSelectChild =\n | ReactElement<typeof RichSelectChip>\n | ReactElement<typeof RichSelectRadioButton>\n | ReactElement<typeof RichSelectSection>;\n\nfunction isString(val: unknown): val is string {\n return typeof val === \"string\";\n}\n\nfunction isEqualSelection(set1?: Selection, set2?: Selection): boolean {\n if (set1 === set2) return true;\n if (!set1 && !set2) return true;\n if (!set1 || !set2) return false;\n if (isString(set1)) return set1 === set2;\n if (isString(set2)) return false;\n if (set1.size !== set2.size) return false;\n for (const item of set1) {\n if (!set2.has(item)) return false;\n }\n return true;\n}\n\nexport function convertSelection(\n selection: \"all\" | Iterable<Key> | undefined,\n defaultValue?: \"all\" | Set<Key>,\n): \"all\" | Set<Key> | undefined {\n if (!selection) return defaultValue;\n if (selection === \"all\") return \"all\";\n return new Set(selection);\n}\n\nexport type RichSelectBoxProps = {\n /** aria-label for the list box */\n accessibilityLabel: string;\n /** Automatically saves changes when true, shows save/clear buttons when not true */\n autosave?: boolean;\n /** Test id for the list box element */\n \"data-testid\"?: string;\n /** One or more RichSelectList.<Chip|RadioButton|Section|...> components. */\n children: RichSelectChild | RichSelectChild[];\n /** Default selected values */\n defaultSelectedValues?: Set<Key> | string[] | \"all\";\n /** Enables multiple selection (multiselect) */\n multiple?: boolean;\n /** The callback to be called when options are selected / committed */\n onChange: (selectedValues: string[] | \"all\") => void;\n /** Text for primary button (Save). Required: string must be translated */\n primaryButtonText: string;\n /** accessibilityLabel for primary Button component (Save). Required: string must be translated */\n primaryButtonAccessibilityLabel: string;\n /** Text for primary button (Clear). Required: string must be translated */\n secondaryButtonText: string;\n /** accessibilityLabel for secondary Button component (Clear). Required: string must be translated */\n secondaryButtonAccessibilityLabel: string;\n /** Value of the currently selected options */\n selectedValues?: Set<Key> | string[] | \"all\";\n};\n\ntype RichSelectBoxContextType = {\n /** Automatically focuses RichSelectBox on mount when enabled */\n autoFocus?: boolean;\n};\nexport const RichSelectBoxContext = createContext<RichSelectBoxContextType>({});\n\n/**\n * [RichSelectBox](https://cambly-syntax.vercel.app/?path=/docs/components-richselectbox--docs) is an element that allows users to select one or multiple options from a list.\n *\n * Example Usage:\n ```\n <RichSelectBox\n label=\"My Label\"\n multiple\n onChange={() => { ... }}\n primaryButtonText=\"Save\"\n primaryButtonAccessibilityLabel=\"Save\"\n secondaryButtonText=\"Clear\"\n secondaryButtonAccessibilityLabel=\"Clear\"\n >\n <RichSelectBox.Section label=\"Cities\">\n <RichSelectBox.Chip label=\"San Francisco\" value=\"sf\" />\n <RichSelectBox.Chip label=\"New York\" value=\"ny\" disabled />\n <RichSelectBox.Chip label=\"Tulsa\" value=\"tulsa\" />\n <RichSelectBox.Chip label=\"Chicago\" value=\"chicago\" disabled />\n </RichSelectBox.Section>\n </RichSelectBox>\n ```\n */\nconst RichSelectBox = forwardRef<HTMLDivElement, RichSelectBoxProps>(\n function RichSelectBox(props, ref): ReactElement {\n const {\n accessibilityLabel,\n autosave,\n children,\n \"data-testid\": dataTestId,\n multiple = false,\n onChange,\n primaryButtonText,\n primaryButtonAccessibilityLabel,\n secondaryButtonText,\n secondaryButtonAccessibilityLabel,\n selectedValues: selectedValuesProp,\n defaultSelectedValues: defaultSelectedValuesProp,\n } = props;\n\n const selectedKeysProp = useMemo(\n () => convertSelection(selectedValuesProp),\n [selectedValuesProp],\n );\n const defaultSelectedKeys = useMemo(\n () => convertSelection(defaultSelectedValuesProp, new Set()),\n [defaultSelectedValuesProp],\n );\n const [selectedKeys, setSelectedKeys] = useControlledState(\n selectedKeysProp!, // eslint-disable-line @typescript-eslint/no-non-null-assertion -- there is a bug in the typedef for useControlledState from react-stately. Internally they rely on value (first arg) able to be undefined\n defaultSelectedKeys,\n (value) => {\n if (isEqualSelection(value, selectedKeys)) return;\n // Notify parent about the changes\n if (value === \"all\") return onChange(\"all\");\n onChange([...value].map(String));\n },\n );\n const [stagedKeys, setStagedKeys] = useState<Set<Key> | \"all\">(\n selectedKeys,\n );\n\n const saveChanges = () => setSelectedKeys(stagedKeys);\n const clearChanges = () => setStagedKeys(new Set());\n const stageChanges = (selectedValues: Selection) => {\n setStagedKeys(selectedValues);\n if (autosave) setSelectedKeys(selectedValues);\n };\n\n // inject method into context so children can disable themselves\n // by adding `disabled` attribute (through RichSelectItem)\n const [disabledKeysComposed, setDisabledKeysComposed] = useState<Set<Key>>(\n new Set(),\n );\n const disableKey = useCallback((key: Key, _disabled: boolean) => {\n setDisabledKeysComposed((keys) => {\n if (keys.has(key) === _disabled) return keys;\n _disabled ? keys.add(key) : keys.delete(key);\n return new Set(keys);\n });\n }, []);\n\n // higher level context for autoFocus behavior (parent sets when rendering RichSelectBox in overlay)\n const { autoFocus } = useContext(RichSelectBoxContext);\n\n return (\n <RichSelectItemContext.Provider value={{ disableKey }}>\n <Box>\n <ReactAriaListBox\n ref={ref}\n aria-label={accessibilityLabel}\n autoFocus={autoFocus}\n selectionMode={multiple ? \"multiple\" : \"single\"}\n selectionBehavior={multiple ? \"toggle\" : \"replace\"}\n shouldFocusWrap={true}\n orientation=\"horizontal\"\n selectedKeys={stagedKeys}\n onSelectionChange={stageChanges}\n disabledKeys={disabledKeysComposed}\n className={styles.richSelectBox}\n >\n {children}\n </ReactAriaListBox>\n {!autosave && (\n <Box\n backgroundColor=\"white\"\n display=\"flex\"\n direction=\"column\"\n gap={5}\n marginTop={5}\n justifyContent=\"end\"\n position=\"sticky\"\n dangerouslySetInlineStyle={{\n __style: {\n bottom: 0,\n },\n }}\n >\n <Box flex=\"grow\">\n <Divider />\n </Box>\n <Box\n paddingY={5}\n marginTop={-5}\n display=\"flex\"\n justifyContent=\"end\"\n >\n <ButtonGroup orientation=\"horizontal\">\n <Button\n onClick={clearChanges}\n color={\"secondary\"}\n text={secondaryButtonText}\n accessibilityLabel={secondaryButtonAccessibilityLabel}\n data-testid={[dataTestId, \"secondary-button\"]\n .filter(Boolean)\n .join(\"-\")}\n />\n <Button\n onClick={saveChanges}\n text={primaryButtonText}\n accessibilityLabel={primaryButtonAccessibilityLabel}\n color=\"primary\"\n data-testid={[dataTestId, \"primary-button\"]\n .filter(Boolean)\n .join(\"-\")}\n />\n </ButtonGroup>\n </Box>\n </Box>\n )}\n </Box>\n </RichSelectItemContext.Provider>\n );\n },\n);\n\nexport default Object.assign(RichSelectBox, {\n Section: RichSelectSection,\n Chip: RichSelectChip,\n RadioButton: RichSelectRadioButton,\n});\n"]}
@@ -1,30 +1,31 @@
1
+ "use client"
1
2
  import {
2
3
  textVariant_default
3
- } from "./JXZMI4WT.js";
4
+ } from "./Z5ZUAP2B.js";
4
5
  import {
5
6
  iconSize_default
6
- } from "./PKXXQ3OV.js";
7
+ } from "./37PNBG3P.js";
7
8
  import {
8
9
  Button_module_default
9
- } from "./DSGIOBWG.js";
10
+ } from "./46XGANFF.js";
10
11
  import {
11
12
  cambioColor,
12
13
  classicColor
13
- } from "./K3H7QFPB.js";
14
+ } from "./GFKDPMFK.js";
14
15
  import {
15
16
  cambioForegroundColor,
16
17
  classicForegroundColor
17
- } from "./YHKD5YRY.js";
18
+ } from "./JVOQF4CG.js";
18
19
  import {
19
20
  cambioBackgroundColor,
20
21
  classicBackgroundColor
21
- } from "./YOMN7RCA.js";
22
+ } from "./Y2OAIOQE.js";
22
23
  import {
23
24
  Typography_default
24
- } from "./32FNU7ZY.js";
25
+ } from "./L7PPCZM5.js";
25
26
  import {
26
27
  useTheme
27
- } from "./RXNTJFP4.js";
28
+ } from "./RN3PLPAG.js";
28
29
 
29
30
  // src/LinkButton/LinkButton.tsx
30
31
  import { forwardRef } from "react";
@@ -121,4 +122,4 @@ var LinkButton_default = LinkButton;
121
122
  export {
122
123
  LinkButton_default
123
124
  };
124
- //# sourceMappingURL=KP3CHNJW.js.map
125
+ //# sourceMappingURL=6WW5YWOS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/LinkButton/LinkButton.tsx","css-module:./LinkButton.module.css#css-module"],"sourcesContent":["import { forwardRef, type HtmlHTMLAttributes } from \"react\";\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport { type Size } from \"../constants\";\nimport Typography from \"../Typography/Typography\";\nimport buttonStyles from \"../Button/Button.module.css\";\nimport iconSize from \"../Button/constants/iconSize\";\nimport textVariant from \"../Button/constants/textVariant\";\nimport styles from \"./LinkButton.module.css\";\n\nimport { classicColor, cambioColor } from \"../Button/constants/color\";\nimport {\n classicBackgroundColor,\n cambioBackgroundColor,\n} from \"../colors//backgroundColor\";\nimport {\n classicForegroundColor,\n cambioForegroundColor,\n} from \"../colors/foregroundColor\";\nimport { useTheme } from \"../ThemeProvider/ThemeProvider\";\n\ntype LinkButtonProps = {\n /**\n * Test id for the button\n */\n \"data-testid\"?: string;\n /**\n * The text to be displayed inside the button\n */\n text: string;\n /**\n * The link that the LinkButton should route to.\n *\n */\n href?: string;\n /**\n * The target attribute specifies where to open the linked document.\n *\n */\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\";\n /**\n * The rel attribute specifies the relationship between the document and the link.\n *\n */\n rel?: HtmlHTMLAttributes<HTMLAnchorElement>[\"rel\"];\n /**\n * The color of the button\n *\n * Classic only:\n * * `inverse`\n * * `success`\n *\n * Cambio only:\n * * `success-primary`\n * * `success-secondary`\n * * `success-tertiary`\n *\n * @defaultValue \"primary\"\n */\n color?:\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"destructive-primary\"\n | \"destructive-secondary\"\n | \"destructive-tertiary\"\n | \"branded\"\n | \"success\"\n | \"success-primary\"\n | \"success-secondary\"\n | \"success-tertiary\"\n | \"inverse\";\n /**\n * The size of the button\n *\n * Classic:\n * * `sm`: 32px\n * * `md`: 40px\n * * `lg`: 48px\n *\n * Cambio:\n * * `sm`: 32px\n * * `md`: 48px\n * * `lg`: 64px\n *\n * @defaultValue \"md\"\n */\n size?: (typeof Size)[number];\n /**\n * If `true`, the button will take up the full width of its container\n *\n * @defaultValue false\n */\n fullWidth?: boolean;\n /**\n * The icon to be displayed at the start of the button. Please use a [Rounded Material Icon](https://material.io/resources/icons/?style=round)\n * Note: startIcon is not supported in the Cambio theme\n */\n startIcon?: React.ComponentType<{ className?: string }>;\n /**\n * The icon to be displayed at the end of the button. Please use a [Rounded Material Icon](https://material.io/resources/icons/?style=round)\n * Note: endIcon is not supported in the Cambio theme\n */\n endIcon?: React.ComponentType<{ className?: string }>;\n /**\n * An optional onClick event. This is used for certain wrapper's support (such as react-router-dom).\n */\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n};\n\n/**\n * [LinkButton](https://cambly-syntax.vercel.app/?path=/docs/components-linkbutton--docs) is a \"variation\" of Button that should look identical to Button, but should be used to render links instead.\n */\nconst LinkButton = forwardRef<HTMLAnchorElement, LinkButtonProps>(\n (\n {\n text,\n href,\n target,\n rel,\n \"data-testid\": dataTestId,\n color = \"primary\",\n size = \"md\",\n fullWidth = false,\n startIcon: StartIcon,\n endIcon: EndIcon,\n onClick,\n }: LinkButtonProps,\n ref,\n ) => {\n const { themeName } = useTheme();\n\n const foregroundColorClass =\n themeName === \"classic\"\n ? classicForegroundColor(classicColor(color))\n : cambioForegroundColor(cambioColor(color));\n\n const backgroundColorClass =\n themeName === \"classic\"\n ? classicBackgroundColor(classicColor(color))\n : cambioBackgroundColor(cambioColor(color));\n\n return (\n <a\n href={href}\n data-testid={dataTestId}\n target={target}\n ref={ref}\n rel={rel}\n className={classNames(\n styles.linkButton,\n buttonStyles.button,\n foregroundColorClass,\n backgroundColorClass,\n themeName === \"classic\"\n ? buttonStyles[size]\n : buttonStyles[`${size}Cambio`],\n {\n [buttonStyles.fullWidth]: fullWidth,\n [styles.fitContent]: !fullWidth,\n [buttonStyles.buttonGap]:\n themeName === \"classic\" && (size === \"lg\" || size === \"md\"),\n [buttonStyles.secondaryBorder]:\n themeName === \"classic\" && color === \"secondary\",\n [buttonStyles.secondaryDestructiveBorder]:\n themeName === \"classic\" && color === \"destructive-secondary\",\n },\n )}\n onClick={onClick}\n >\n {StartIcon && themeName === \"classic\" && (\n <StartIcon\n className={classNames(\n buttonStyles.icon,\n iconSize[size],\n foregroundColorClass,\n )}\n />\n )}\n <Typography\n size={themeName === \"classic\" ? textVariant[size] : textVariant[size]}\n >\n <span\n // Temporary - until we have cambio colors on Typogrphay\n className={foregroundColorClass}\n style={{ fontWeight: 500 }}\n >\n {text}\n </span>\n </Typography>\n {EndIcon && themeName === \"classic\" && (\n <EndIcon\n className={classNames(\n buttonStyles.icon,\n iconSize[size],\n foregroundColorClass,\n )}\n />\n )}\n </a>\n );\n },\n);\n\nLinkButton.displayName = \"LinkButton\";\n\nexport default LinkButton;\n","import \"/home/runner/work/syntax/syntax/packages/syntax-core/src/LinkButton/LinkButton.module.css\"; export default {\"linkButton\":\"_linkButton_1qjrb_1\",\"fitContent\":\"_fitContent_1qjrb_11\"}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,kBAA2C;AACpD,OAAO,gBAAgB;;;ACD6E,IAAO,4BAAQ,EAAC,cAAa,uBAAsB,cAAa,uBAAsB;;;AD+IpL,SA4BI,KA5BJ;AA9BN,IAAM,aAAa;AAAA,EACjB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,IACT;AAAA,EACF,GACA,QACG;AACH,UAAM,EAAE,UAAU,IAAI,SAAS;AAE/B,UAAM,uBACJ,cAAc,YACV,uBAAuB,aAAa,KAAK,CAAC,IAC1C,sBAAsB,YAAY,KAAK,CAAC;AAE9C,UAAM,uBACJ,cAAc,YACV,uBAAuB,aAAa,KAAK,CAAC,IAC1C,sBAAsB,YAAY,KAAK,CAAC;AAE9C,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,UACT,0BAAO;AAAA,UACP,sBAAa;AAAA,UACb;AAAA,UACA;AAAA,UACA,cAAc,YACV,sBAAa,IAAI,IACjB,sBAAa,GAAG,YAAY;AAAA,UAChC;AAAA,YACE,CAAC,sBAAa,SAAS,GAAG;AAAA,YAC1B,CAAC,0BAAO,UAAU,GAAG,CAAC;AAAA,YACtB,CAAC,sBAAa,SAAS,GACrB,cAAc,cAAc,SAAS,QAAQ,SAAS;AAAA,YACxD,CAAC,sBAAa,eAAe,GAC3B,cAAc,aAAa,UAAU;AAAA,YACvC,CAAC,sBAAa,0BAA0B,GACtC,cAAc,aAAa,UAAU;AAAA,UACzC;AAAA,QACF;AAAA,QACA;AAAA,QAEC;AAAA,uBAAa,cAAc,aAC1B;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT,sBAAa;AAAA,gBACb,iBAAS,IAAI;AAAA,gBACb;AAAA,cACF;AAAA;AAAA,UACF;AAAA,UAEF;AAAA,YAAC;AAAA;AAAA,cACC,MAAM,cAAc,YAAY,oBAAY,IAAI,IAAI,oBAAY,IAAI;AAAA,cAEpE;AAAA,gBAAC;AAAA;AAAA,kBAEC,WAAW;AAAA,kBACX,OAAO,EAAE,YAAY,IAAI;AAAA,kBAExB;AAAA;AAAA,cACH;AAAA;AAAA,UACF;AAAA,UACC,WAAW,cAAc,aACxB;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT,sBAAa;AAAA,gBACb,iBAAS,IAAI;AAAA,gBACb;AAAA,cACF;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAEA,WAAW,cAAc;AAEzB,IAAO,qBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../src/LinkButton/LinkButton.tsx","css-module:./LinkButton.module.css#css-module"],"sourcesContent":["import { forwardRef, type HtmlHTMLAttributes } from \"react\";\nimport classNames from \"classnames\";\nimport React from \"react\";\nimport { type Size } from \"../constants\";\nimport Typography from \"../Typography/Typography\";\nimport buttonStyles from \"../Button/Button.module.css\";\nimport iconSize from \"../Button/constants/iconSize\";\nimport textVariant from \"../Button/constants/textVariant\";\nimport styles from \"./LinkButton.module.css\";\n\nimport { classicColor, cambioColor } from \"../Button/constants/color\";\nimport {\n classicBackgroundColor,\n cambioBackgroundColor,\n} from \"../colors//backgroundColor\";\nimport {\n classicForegroundColor,\n cambioForegroundColor,\n} from \"../colors/foregroundColor\";\nimport { useTheme } from \"../ThemeProvider/ThemeProvider\";\n\ntype LinkButtonProps = {\n /**\n * Test id for the button\n */\n \"data-testid\"?: string;\n /**\n * The text to be displayed inside the button\n */\n text: string;\n /**\n * The link that the LinkButton should route to.\n *\n */\n href?: string;\n /**\n * The target attribute specifies where to open the linked document.\n *\n */\n target?: \"_blank\" | \"_self\" | \"_parent\" | \"_top\";\n /**\n * The rel attribute specifies the relationship between the document and the link.\n *\n */\n rel?: HtmlHTMLAttributes<HTMLAnchorElement>[\"rel\"];\n /**\n * The color of the button\n *\n * Classic only:\n * * `inverse`\n * * `success`\n *\n * Cambio only:\n * * `success-primary`\n * * `success-secondary`\n * * `success-tertiary`\n *\n * @defaultValue \"primary\"\n */\n color?:\n | \"primary\"\n | \"secondary\"\n | \"tertiary\"\n | \"destructive-primary\"\n | \"destructive-secondary\"\n | \"destructive-tertiary\"\n | \"branded\"\n | \"success\"\n | \"success-primary\"\n | \"success-secondary\"\n | \"success-tertiary\"\n | \"inverse\";\n /**\n * The size of the button\n *\n * Classic:\n * * `sm`: 32px\n * * `md`: 40px\n * * `lg`: 48px\n *\n * Cambio:\n * * `sm`: 32px\n * * `md`: 48px\n * * `lg`: 64px\n *\n * @defaultValue \"md\"\n */\n size?: (typeof Size)[number];\n /**\n * If `true`, the button will take up the full width of its container\n *\n * @defaultValue false\n */\n fullWidth?: boolean;\n /**\n * The icon to be displayed at the start of the button. Please use a [Rounded Material Icon](https://material.io/resources/icons/?style=round)\n * Note: startIcon is not supported in the Cambio theme\n */\n startIcon?: React.ComponentType<{ className?: string }>;\n /**\n * The icon to be displayed at the end of the button. Please use a [Rounded Material Icon](https://material.io/resources/icons/?style=round)\n * Note: endIcon is not supported in the Cambio theme\n */\n endIcon?: React.ComponentType<{ className?: string }>;\n /**\n * An optional onClick event. This is used for certain wrapper's support (such as react-router-dom).\n */\n onClick?: React.MouseEventHandler<HTMLAnchorElement>;\n};\n\n/**\n * [LinkButton](https://cambly-syntax.vercel.app/?path=/docs/components-linkbutton--docs) is a \"variation\" of Button that should look identical to Button, but should be used to render links instead.\n */\nconst LinkButton = forwardRef<HTMLAnchorElement, LinkButtonProps>(\n (\n {\n text,\n href,\n target,\n rel,\n \"data-testid\": dataTestId,\n color = \"primary\",\n size = \"md\",\n fullWidth = false,\n startIcon: StartIcon,\n endIcon: EndIcon,\n onClick,\n }: LinkButtonProps,\n ref,\n ) => {\n const { themeName } = useTheme();\n\n const foregroundColorClass =\n themeName === \"classic\"\n ? classicForegroundColor(classicColor(color))\n : cambioForegroundColor(cambioColor(color));\n\n const backgroundColorClass =\n themeName === \"classic\"\n ? classicBackgroundColor(classicColor(color))\n : cambioBackgroundColor(cambioColor(color));\n\n return (\n <a\n href={href}\n data-testid={dataTestId}\n target={target}\n ref={ref}\n rel={rel}\n className={classNames(\n styles.linkButton,\n buttonStyles.button,\n foregroundColorClass,\n backgroundColorClass,\n themeName === \"classic\"\n ? buttonStyles[size]\n : buttonStyles[`${size}Cambio`],\n {\n [buttonStyles.fullWidth]: fullWidth,\n [styles.fitContent]: !fullWidth,\n [buttonStyles.buttonGap]:\n themeName === \"classic\" && (size === \"lg\" || size === \"md\"),\n [buttonStyles.secondaryBorder]:\n themeName === \"classic\" && color === \"secondary\",\n [buttonStyles.secondaryDestructiveBorder]:\n themeName === \"classic\" && color === \"destructive-secondary\",\n },\n )}\n onClick={onClick}\n >\n {StartIcon && themeName === \"classic\" && (\n <StartIcon\n className={classNames(\n buttonStyles.icon,\n iconSize[size],\n foregroundColorClass,\n )}\n />\n )}\n <Typography\n size={themeName === \"classic\" ? textVariant[size] : textVariant[size]}\n >\n <span\n // Temporary - until we have cambio colors on Typogrphay\n className={foregroundColorClass}\n style={{ fontWeight: 500 }}\n >\n {text}\n </span>\n </Typography>\n {EndIcon && themeName === \"classic\" && (\n <EndIcon\n className={classNames(\n buttonStyles.icon,\n iconSize[size],\n foregroundColorClass,\n )}\n />\n )}\n </a>\n );\n },\n);\n\nLinkButton.displayName = \"LinkButton\";\n\nexport default LinkButton;\n","import \"/home/runner/work/syntax/syntax/packages/syntax-core/src/LinkButton/LinkButton.module.css\"; export default {\"linkButton\":\"_linkButton_1qjrb_1\",\"fitContent\":\"_fitContent_1qjrb_11\"}"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,kBAA2C;AACpD,OAAO,gBAAgB;;;ACD6E,IAAO,4BAAQ,EAAC,cAAa,uBAAsB,cAAa,uBAAsB;;;AD+IpL,SA4BI,KA5BJ;AA9BN,IAAM,aAAa;AAAA,EACjB,CACE;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,SAAS;AAAA,IACT;AAAA,EACF,GACA,QACG;AACH,UAAM,EAAE,UAAU,IAAI,SAAS;AAE/B,UAAM,uBACJ,cAAc,YACV,uBAAuB,aAAa,KAAK,CAAC,IAC1C,sBAAsB,YAAY,KAAK,CAAC;AAE9C,UAAM,uBACJ,cAAc,YACV,uBAAuB,aAAa,KAAK,CAAC,IAC1C,sBAAsB,YAAY,KAAK,CAAC;AAE9C,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACA,WAAW;AAAA,UACT,0BAAO;AAAA,UACP,sBAAa;AAAA,UACb;AAAA,UACA;AAAA,UACA,cAAc,YACV,sBAAa,IAAI,IACjB,sBAAa,GAAG,YAAY;AAAA,UAChC;AAAA,YACE,CAAC,sBAAa,SAAS,GAAG;AAAA,YAC1B,CAAC,0BAAO,UAAU,GAAG,CAAC;AAAA,YACtB,CAAC,sBAAa,SAAS,GACrB,cAAc,cAAc,SAAS,QAAQ,SAAS;AAAA,YACxD,CAAC,sBAAa,eAAe,GAC3B,cAAc,aAAa,UAAU;AAAA,YACvC,CAAC,sBAAa,0BAA0B,GACtC,cAAc,aAAa,UAAU;AAAA,UACzC;AAAA,QACF;AAAA,QACA;AAAA,QAEC;AAAA,uBAAa,cAAc,aAC1B;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT,sBAAa;AAAA,gBACb,iBAAS,IAAI;AAAA,gBACb;AAAA,cACF;AAAA;AAAA,UACF;AAAA,UAEF;AAAA,YAAC;AAAA;AAAA,cACC,MAAM,cAAc,YAAY,oBAAY,IAAI,IAAI,oBAAY,IAAI;AAAA,cAEpE;AAAA,gBAAC;AAAA;AAAA,kBAEC,WAAW;AAAA,kBACX,OAAO,EAAE,YAAY,IAAI;AAAA,kBAExB;AAAA;AAAA,cACH;AAAA;AAAA,UACF;AAAA,UACC,WAAW,cAAc,aACxB;AAAA,YAAC;AAAA;AAAA,cACC,WAAW;AAAA,gBACT,sBAAa;AAAA,gBACb,iBAAS,IAAI;AAAA,gBACb;AAAA,cACF;AAAA;AAAA,UACF;AAAA;AAAA;AAAA,IAEJ;AAAA,EAEJ;AACF;AAEA,WAAW,cAAc;AAEzB,IAAO,qBAAQ;","names":[]}
@@ -1,3 +1,5 @@
1
+ "use client"
2
+
1
3
  // src/react-aria-utils/useDomRefSyntheticEventBridge.ts
2
4
  import { useEffect } from "react";
3
5
  var createSyntheticEvent = (event) => {
@@ -60,4 +62,4 @@ var useDomRefSyntheticEventBridge = (props, ref, { enabled = true } = {}) => {
60
62
  export {
61
63
  useDomRefSyntheticEventBridge
62
64
  };
63
- //# sourceMappingURL=5ZDZZL2P.js.map
65
+ //# sourceMappingURL=7N4ZDVVD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react-aria-utils/useDomRefSyntheticEventBridge.ts"],"sourcesContent":["import { type SyntheticEvent, useEffect } from \"react\";\n\nconst createSyntheticEvent = <T extends Element, E extends Event>(\n event: E,\n): SyntheticEvent<T, E> => {\n let isDefaultPrevented = false;\n let isPropagationStopped = false;\n const preventDefault = () => {\n isDefaultPrevented = true;\n event.preventDefault();\n };\n const stopPropagation = () => {\n isPropagationStopped = true;\n event.stopPropagation();\n };\n return {\n nativeEvent: event,\n currentTarget: event.currentTarget as EventTarget & T,\n target: event.target as EventTarget & T,\n bubbles: event.bubbles,\n cancelable: event.cancelable,\n defaultPrevented: event.defaultPrevented,\n eventPhase: event.eventPhase,\n isTrusted: event.isTrusted,\n preventDefault,\n isDefaultPrevented: () => isDefaultPrevented,\n stopPropagation,\n isPropagationStopped: () => isPropagationStopped,\n persist: () => undefined,\n timeStamp: event.timeStamp,\n type: event.type,\n };\n};\n\nexport const useDomRefSyntheticEventBridge = <T extends Element>(\n props: Record<string, unknown>,\n ref: React.RefObject<T>,\n { enabled = true }: { enabled?: boolean } = {},\n): void => {\n useEffect(() => {\n if (!enabled) return () => undefined;\n if (!ref.current) return () => undefined;\n const element = ref.current;\n\n const cleanups = Object.entries(props).map<(() => void) | undefined>(\n ([key, value]) => {\n if (!key.startsWith(\"on\")) return;\n if (typeof value !== \"function\") return;\n const endsWithCapture = key.endsWith(\"Capture\");\n const eventname = key\n .slice(2, endsWithCapture ? -7 : undefined)\n .toLowerCase();\n\n const handler = (evt: Event) => {\n const fn = value as (event: SyntheticEvent) => void;\n fn(createSyntheticEvent(evt));\n };\n\n const args: [\n eventname: string,\n handler: EventListenerOrEventListenerObject,\n useCapture?: boolean,\n ] = [eventname, handler, endsWithCapture];\n element.addEventListener(...args);\n return () => element.removeEventListener(...args);\n },\n );\n\n return () => cleanups.forEach((cleanup) => cleanup?.());\n }, [enabled, props, ref]);\n};\n"],"mappings":";AAAA,SAA8B,iBAAiB;AAE/C,IAAM,uBAAuB,CAC3B,UACyB;AACzB,MAAI,qBAAqB;AACzB,MAAI,uBAAuB;AAC3B,QAAM,iBAAiB,MAAM;AAC3B,yBAAqB;AACrB,UAAM,eAAe;AAAA,EACvB;AACA,QAAM,kBAAkB,MAAM;AAC5B,2BAAuB;AACvB,UAAM,gBAAgB;AAAA,EACxB;AACA,SAAO;AAAA,IACL,aAAa;AAAA,IACb,eAAe,MAAM;AAAA,IACrB,QAAQ,MAAM;AAAA,IACd,SAAS,MAAM;AAAA,IACf,YAAY,MAAM;AAAA,IAClB,kBAAkB,MAAM;AAAA,IACxB,YAAY,MAAM;AAAA,IAClB,WAAW,MAAM;AAAA,IACjB;AAAA,IACA,oBAAoB,MAAM;AAAA,IAC1B;AAAA,IACA,sBAAsB,MAAM;AAAA,IAC5B,SAAS,MAAM;AAAA,IACf,WAAW,MAAM;AAAA,IACjB,MAAM,MAAM;AAAA,EACd;AACF;AAEO,IAAM,gCAAgC,CAC3C,OACA,KACA,EAAE,UAAU,KAAK,IAA2B,CAAC,MACpC;AACT,YAAU,MAAM;AACd,QAAI,CAAC;AAAS,aAAO,MAAM;AAC3B,QAAI,CAAC,IAAI;AAAS,aAAO,MAAM;AAC/B,UAAM,UAAU,IAAI;AAEpB,UAAM,WAAW,OAAO,QAAQ,KAAK,EAAE;AAAA,MACrC,CAAC,CAAC,KAAK,KAAK,MAAM;AAChB,YAAI,CAAC,IAAI,WAAW,IAAI;AAAG;AAC3B,YAAI,OAAO,UAAU;AAAY;AACjC,cAAM,kBAAkB,IAAI,SAAS,SAAS;AAC9C,cAAM,YAAY,IACf,MAAM,GAAG,kBAAkB,KAAK,MAAS,EACzC,YAAY;AAEf,cAAM,UAAU,CAAC,QAAe;AAC9B,gBAAM,KAAK;AACX,aAAG,qBAAqB,GAAG,CAAC;AAAA,QAC9B;AAEA,cAAM,OAIF,CAAC,WAAW,SAAS,eAAe;AACxC,gBAAQ,iBAAiB,GAAG,IAAI;AAChC,eAAO,MAAM,QAAQ,oBAAoB,GAAG,IAAI;AAAA,MAClD;AAAA,IACF;AAEA,WAAO,MAAM,SAAS,QAAQ,CAAC,YAAY,oCAAW;AAAA,EACxD,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC;AAC1B;","names":[]}
1
+ {"version":3,"sources":["../../src/react-aria-utils/useDomRefSyntheticEventBridge.ts"],"sourcesContent":["import { type SyntheticEvent, useEffect } from \"react\";\n\nconst createSyntheticEvent = <T extends Element, E extends Event>(\n event: E,\n): SyntheticEvent<T, E> => {\n let isDefaultPrevented = false;\n let isPropagationStopped = false;\n const preventDefault = () => {\n isDefaultPrevented = true;\n event.preventDefault();\n };\n const stopPropagation = () => {\n isPropagationStopped = true;\n event.stopPropagation();\n };\n return {\n nativeEvent: event,\n currentTarget: event.currentTarget as EventTarget & T,\n target: event.target as EventTarget & T,\n bubbles: event.bubbles,\n cancelable: event.cancelable,\n defaultPrevented: event.defaultPrevented,\n eventPhase: event.eventPhase,\n isTrusted: event.isTrusted,\n preventDefault,\n isDefaultPrevented: () => isDefaultPrevented,\n stopPropagation,\n isPropagationStopped: () => isPropagationStopped,\n persist: () => undefined,\n timeStamp: event.timeStamp,\n type: event.type,\n };\n};\n\nexport const useDomRefSyntheticEventBridge = <T extends Element>(\n props: Record<string, unknown>,\n ref: React.RefObject<T>,\n { enabled = true }: { enabled?: boolean } = {},\n): void => {\n useEffect(() => {\n if (!enabled) return () => undefined;\n if (!ref.current) return () => undefined;\n const element = ref.current;\n\n const cleanups = Object.entries(props).map<(() => void) | undefined>(\n ([key, value]) => {\n if (!key.startsWith(\"on\")) return;\n if (typeof value !== \"function\") return;\n const endsWithCapture = key.endsWith(\"Capture\");\n const eventname = key\n .slice(2, endsWithCapture ? -7 : undefined)\n .toLowerCase();\n\n const handler = (evt: Event) => {\n const fn = value as (event: SyntheticEvent) => void;\n fn(createSyntheticEvent(evt));\n };\n\n const args: [\n eventname: string,\n handler: EventListenerOrEventListenerObject,\n useCapture?: boolean,\n ] = [eventname, handler, endsWithCapture];\n element.addEventListener(...args);\n return () => element.removeEventListener(...args);\n },\n );\n\n return () => cleanups.forEach((cleanup) => cleanup?.());\n }, [enabled, props, ref]);\n};\n"],"mappings":";;;AAAA,SAA8B,iBAAiB;AAE/C,IAAM,uBAAuB,CAC3B,UACyB;AACzB,MAAI,qBAAqB;AACzB,MAAI,uBAAuB;AAC3B,QAAM,iBAAiB,MAAM;AAC3B,yBAAqB;AACrB,UAAM,eAAe;AAAA,EACvB;AACA,QAAM,kBAAkB,MAAM;AAC5B,2BAAuB;AACvB,UAAM,gBAAgB;AAAA,EACxB;AACA,SAAO;AAAA,IACL,aAAa;AAAA,IACb,eAAe,MAAM;AAAA,IACrB,QAAQ,MAAM;AAAA,IACd,SAAS,MAAM;AAAA,IACf,YAAY,MAAM;AAAA,IAClB,kBAAkB,MAAM;AAAA,IACxB,YAAY,MAAM;AAAA,IAClB,WAAW,MAAM;AAAA,IACjB;AAAA,IACA,oBAAoB,MAAM;AAAA,IAC1B;AAAA,IACA,sBAAsB,MAAM;AAAA,IAC5B,SAAS,MAAM;AAAA,IACf,WAAW,MAAM;AAAA,IACjB,MAAM,MAAM;AAAA,EACd;AACF;AAEO,IAAM,gCAAgC,CAC3C,OACA,KACA,EAAE,UAAU,KAAK,IAA2B,CAAC,MACpC;AACT,YAAU,MAAM;AACd,QAAI,CAAC;AAAS,aAAO,MAAM;AAC3B,QAAI,CAAC,IAAI;AAAS,aAAO,MAAM;AAC/B,UAAM,UAAU,IAAI;AAEpB,UAAM,WAAW,OAAO,QAAQ,KAAK,EAAE;AAAA,MACrC,CAAC,CAAC,KAAK,KAAK,MAAM;AAChB,YAAI,CAAC,IAAI,WAAW,IAAI;AAAG;AAC3B,YAAI,OAAO,UAAU;AAAY;AACjC,cAAM,kBAAkB,IAAI,SAAS,SAAS;AAC9C,cAAM,YAAY,IACf,MAAM,GAAG,kBAAkB,KAAK,MAAS,EACzC,YAAY;AAEf,cAAM,UAAU,CAAC,QAAe;AAC9B,gBAAM,KAAK;AACX,aAAG,qBAAqB,GAAG,CAAC;AAAA,QAC9B;AAEA,cAAM,OAIF,CAAC,WAAW,SAAS,eAAe;AACxC,gBAAQ,iBAAiB,GAAG,IAAI;AAChC,eAAO,MAAM,QAAQ,oBAAoB,GAAG,IAAI;AAAA,MAClD;AAAA,IACF;AAEA,WAAO,MAAM,SAAS,QAAQ,CAAC,YAAY,oCAAW;AAAA,EACxD,GAAG,CAAC,SAAS,OAAO,GAAG,CAAC;AAC1B;","names":[]}
@@ -1,28 +1,29 @@
1
+ "use client"
1
2
  import {
2
3
  ButtonGroup_default
3
- } from "./IISMRA4R.js";
4
+ } from "./OF66QEJL.js";
4
5
  import {
5
6
  Button_default
6
- } from "./TMH27D62.js";
7
+ } from "./VBRCBEDC.js";
7
8
  import {
8
9
  Divider
9
- } from "./6VWFOSQZ.js";
10
+ } from "./Z4ZJZXZV.js";
10
11
  import {
11
12
  RichSelectChip_default
12
- } from "./DAMHOGG6.js";
13
+ } from "./HNDUANRX.js";
13
14
  import {
14
15
  RichSelectSection_default
15
- } from "./BIOBVFK4.js";
16
+ } from "./A4QZYP2J.js";
16
17
  import {
17
18
  RichSelectRadioButton_default
18
- } from "./HOSRHZZG.js";
19
+ } from "./OFOTR7RY.js";
19
20
  import {
20
21
  RichSelectItemContext,
21
22
  RichSelect_module_default
22
- } from "./Y6L6EOCB.js";
23
+ } from "./3AAZZWKY.js";
23
24
  import {
24
25
  Box_default
25
- } from "./I5W7ECUO.js";
26
+ } from "./MAPDSZR4.js";
26
27
 
27
28
  // src/RichSelect/RichSelectBox.tsx
28
29
  import {
@@ -207,4 +208,4 @@ export {
207
208
  RichSelectBoxContext,
208
209
  RichSelectBox_default
209
210
  };
210
- //# sourceMappingURL=JOG44CT2.js.map
211
+ //# sourceMappingURL=7P2G663D.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/RichSelect/RichSelectBox.tsx"],"sourcesContent":["import React, {\n forwardRef,\n type ReactElement,\n useContext,\n useState,\n useCallback,\n createContext,\n useMemo,\n} from \"react\";\nimport { ListBox as ReactAriaListBox } from \"react-aria-components\";\nimport { type Key } from \"react-aria\";\nimport { type Selection } from \"react-stately\";\nimport { useControlledState } from \"@react-stately/utils\";\nimport { RichSelectItemContext } from \"./RichSelectItem\";\nimport ButtonGroup from \"../ButtonGroup/ButtonGroup\";\nimport Button from \"../Button/Button\";\nimport styles from \"./RichSelect.module.css\";\nimport Box from \"../Box/Box\";\nimport Divider from \"../Divider/Divider\";\nimport RichSelectSection from \"./RichSelectSection\";\nimport RichSelectChip from \"./RichSelectChip\";\nimport RichSelectRadioButton from \"./RichSelectRadioButton\";\n\ntype RichSelectChild =\n | ReactElement<typeof RichSelectChip>\n | ReactElement<typeof RichSelectRadioButton>\n | ReactElement<typeof RichSelectSection>;\n\nfunction isString(val: unknown): val is string {\n return typeof val === \"string\";\n}\n\nfunction isEqualSelection(set1?: Selection, set2?: Selection): boolean {\n if (set1 === set2) return true;\n if (!set1 && !set2) return true;\n if (!set1 || !set2) return false;\n if (isString(set1)) return set1 === set2;\n if (isString(set2)) return false;\n if (set1.size !== set2.size) return false;\n for (const item of set1) {\n if (!set2.has(item)) return false;\n }\n return true;\n}\n\nexport function convertSelection(\n selection: \"all\" | Iterable<Key> | undefined,\n defaultValue?: \"all\" | Set<Key>,\n): \"all\" | Set<Key> | undefined {\n if (!selection) return defaultValue;\n if (selection === \"all\") return \"all\";\n return new Set(selection);\n}\n\nexport type RichSelectBoxProps = {\n /** aria-label for the list box */\n accessibilityLabel: string;\n /** Automatically saves changes when true, shows save/clear buttons when not true */\n autosave?: boolean;\n /** Test id for the list box element */\n \"data-testid\"?: string;\n /** One or more RichSelectList.<Chip|RadioButton|Section|...> components. */\n children: RichSelectChild | RichSelectChild[];\n /** Default selected values */\n defaultSelectedValues?: Set<Key> | string[] | \"all\";\n /** Enables multiple selection (multiselect) */\n multiple?: boolean;\n /** The callback to be called when options are selected / committed */\n onChange: (selectedValues: string[] | \"all\") => void;\n /** Text for primary button (Save). Required: string must be translated */\n primaryButtonText: string;\n /** accessibilityLabel for primary Button component (Save). Required: string must be translated */\n primaryButtonAccessibilityLabel: string;\n /** Text for primary button (Clear). Required: string must be translated */\n secondaryButtonText: string;\n /** accessibilityLabel for secondary Button component (Clear). Required: string must be translated */\n secondaryButtonAccessibilityLabel: string;\n /** Value of the currently selected options */\n selectedValues?: Set<Key> | string[] | \"all\";\n};\n\ntype RichSelectBoxContextType = {\n /** Automatically focuses RichSelectBox on mount when enabled */\n autoFocus?: boolean;\n};\nexport const RichSelectBoxContext = createContext<RichSelectBoxContextType>({});\n\n/**\n * [RichSelectBox](https://cambly-syntax.vercel.app/?path=/docs/components-richselectbox--docs) is an element that allows users to select one or multiple options from a list.\n *\n * Example Usage:\n ```\n <RichSelectBox\n label=\"My Label\"\n multiple\n onChange={() => { ... }}\n primaryButtonText=\"Save\"\n primaryButtonAccessibilityLabel=\"Save\"\n secondaryButtonText=\"Clear\"\n secondaryButtonAccessibilityLabel=\"Clear\"\n >\n <RichSelectBox.Section label=\"Cities\">\n <RichSelectBox.Chip label=\"San Francisco\" value=\"sf\" />\n <RichSelectBox.Chip label=\"New York\" value=\"ny\" disabled />\n <RichSelectBox.Chip label=\"Tulsa\" value=\"tulsa\" />\n <RichSelectBox.Chip label=\"Chicago\" value=\"chicago\" disabled />\n </RichSelectBox.Section>\n </RichSelectBox>\n ```\n */\nconst RichSelectBox = forwardRef<HTMLDivElement, RichSelectBoxProps>(\n function RichSelectBox(props, ref): ReactElement {\n const {\n accessibilityLabel,\n autosave,\n children,\n \"data-testid\": dataTestId,\n multiple = false,\n onChange,\n primaryButtonText,\n primaryButtonAccessibilityLabel,\n secondaryButtonText,\n secondaryButtonAccessibilityLabel,\n selectedValues: selectedValuesProp,\n defaultSelectedValues: defaultSelectedValuesProp,\n } = props;\n\n const selectedKeysProp = useMemo(\n () => convertSelection(selectedValuesProp),\n [selectedValuesProp],\n );\n const defaultSelectedKeys = useMemo(\n () => convertSelection(defaultSelectedValuesProp, new Set()),\n [defaultSelectedValuesProp],\n );\n const [selectedKeys, setSelectedKeys] = useControlledState(\n selectedKeysProp!, // eslint-disable-line @typescript-eslint/no-non-null-assertion -- there is a bug in the typedef for useControlledState from react-stately. Internally they rely on value (first arg) able to be undefined\n defaultSelectedKeys,\n (value) => {\n if (isEqualSelection(value, selectedKeys)) return;\n // Notify parent about the changes\n if (value === \"all\") return onChange(\"all\");\n onChange([...value].map(String));\n },\n );\n const [stagedKeys, setStagedKeys] = useState<Set<Key> | \"all\">(\n selectedKeys,\n );\n\n const saveChanges = () => setSelectedKeys(stagedKeys);\n const clearChanges = () => setStagedKeys(new Set());\n const stageChanges = (selectedValues: Selection) => {\n setStagedKeys(selectedValues);\n if (autosave) setSelectedKeys(selectedValues);\n };\n\n // inject method into context so children can disable themselves\n // by adding `disabled` attribute (through RichSelectItem)\n const [disabledKeysComposed, setDisabledKeysComposed] = useState<Set<Key>>(\n new Set(),\n );\n const disableKey = useCallback((key: Key, _disabled: boolean) => {\n setDisabledKeysComposed((keys) => {\n if (keys.has(key) === _disabled) return keys;\n _disabled ? keys.add(key) : keys.delete(key);\n return new Set(keys);\n });\n }, []);\n\n // higher level context for autoFocus behavior (parent sets when rendering RichSelectBox in overlay)\n const { autoFocus } = useContext(RichSelectBoxContext);\n\n return (\n <RichSelectItemContext.Provider value={{ disableKey }}>\n <Box>\n <ReactAriaListBox\n ref={ref}\n aria-label={accessibilityLabel}\n autoFocus={autoFocus}\n selectionMode={multiple ? \"multiple\" : \"single\"}\n selectionBehavior={multiple ? \"toggle\" : \"replace\"}\n shouldFocusWrap={true}\n orientation=\"horizontal\"\n selectedKeys={stagedKeys}\n onSelectionChange={stageChanges}\n disabledKeys={disabledKeysComposed}\n className={styles.richSelectBox}\n >\n {children}\n </ReactAriaListBox>\n {!autosave && (\n <Box\n backgroundColor=\"white\"\n display=\"flex\"\n direction=\"column\"\n gap={5}\n marginTop={5}\n justifyContent=\"end\"\n position=\"sticky\"\n dangerouslySetInlineStyle={{\n __style: {\n bottom: 0,\n },\n }}\n >\n <Box flex=\"grow\">\n <Divider />\n </Box>\n <Box\n paddingY={5}\n marginTop={-5}\n display=\"flex\"\n justifyContent=\"end\"\n >\n <ButtonGroup orientation=\"horizontal\">\n <Button\n onClick={clearChanges}\n color={\"secondary\"}\n text={secondaryButtonText}\n accessibilityLabel={secondaryButtonAccessibilityLabel}\n data-testid={[dataTestId, \"secondary-button\"]\n .filter(Boolean)\n .join(\"-\")}\n />\n <Button\n onClick={saveChanges}\n text={primaryButtonText}\n accessibilityLabel={primaryButtonAccessibilityLabel}\n color=\"primary\"\n data-testid={[dataTestId, \"primary-button\"]\n .filter(Boolean)\n .join(\"-\")}\n />\n </ButtonGroup>\n </Box>\n </Box>\n )}\n </Box>\n </RichSelectItemContext.Provider>\n );\n },\n);\n\nexport default Object.assign(RichSelectBox, {\n Section: RichSelectSection,\n Chip: RichSelectChip,\n RadioButton: RichSelectRadioButton,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,WAAW,wBAAwB;AAG5C,SAAS,0BAA0B;AAmKzB,cAuCM,YAvCN;AAnJV,SAAS,SAAS,KAA6B;AAC7C,SAAO,OAAO,QAAQ;AACxB;AAEA,SAAS,iBAAiB,MAAkB,MAA2B;AACrE,MAAI,SAAS;AAAM,WAAO;AAC1B,MAAI,CAAC,QAAQ,CAAC;AAAM,WAAO;AAC3B,MAAI,CAAC,QAAQ,CAAC;AAAM,WAAO;AAC3B,MAAI,SAAS,IAAI;AAAG,WAAO,SAAS;AACpC,MAAI,SAAS,IAAI;AAAG,WAAO;AAC3B,MAAI,KAAK,SAAS,KAAK;AAAM,WAAO;AACpC,aAAW,QAAQ,MAAM;AACvB,QAAI,CAAC,KAAK,IAAI,IAAI;AAAG,aAAO;AAAA,EAC9B;AACA,SAAO;AACT;AAEO,SAAS,iBACd,WACA,cAC8B;AAC9B,MAAI,CAAC;AAAW,WAAO;AACvB,MAAI,cAAc;AAAO,WAAO;AAChC,SAAO,IAAI,IAAI,SAAS;AAC1B;AAiCO,IAAM,uBAAuB,cAAwC,CAAC,CAAC;AAyB9E,IAAM,gBAAgB;AAAA,EACpB,SAASA,eAAc,OAAO,KAAmB;AAC/C,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,MACf,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,uBAAuB;AAAA,IACzB,IAAI;AAEJ,UAAM,mBAAmB;AAAA,MACvB,MAAM,iBAAiB,kBAAkB;AAAA,MACzC,CAAC,kBAAkB;AAAA,IACrB;AACA,UAAM,sBAAsB;AAAA,MAC1B,MAAM,iBAAiB,2BAA2B,oBAAI,IAAI,CAAC;AAAA,MAC3D,CAAC,yBAAyB;AAAA,IAC5B;AACA,UAAM,CAAC,cAAc,eAAe,IAAI;AAAA,MACtC;AAAA;AAAA,MACA;AAAA,MACA,CAAC,UAAU;AACT,YAAI,iBAAiB,OAAO,YAAY;AAAG;AAE3C,YAAI,UAAU;AAAO,iBAAO,SAAS,KAAK;AAC1C,iBAAS,CAAC,GAAG,KAAK,EAAE,IAAI,MAAM,CAAC;AAAA,MACjC;AAAA,IACF;AACA,UAAM,CAAC,YAAY,aAAa,IAAI;AAAA,MAClC;AAAA,IACF;AAEA,UAAM,cAAc,MAAM,gBAAgB,UAAU;AACpD,UAAM,eAAe,MAAM,cAAc,oBAAI,IAAI,CAAC;AAClD,UAAM,eAAe,CAAC,mBAA8B;AAClD,oBAAc,cAAc;AAC5B,UAAI;AAAU,wBAAgB,cAAc;AAAA,IAC9C;AAIA,UAAM,CAAC,sBAAsB,uBAAuB,IAAI;AAAA,MACtD,oBAAI,IAAI;AAAA,IACV;AACA,UAAM,aAAa,YAAY,CAAC,KAAU,cAAuB;AAC/D,8BAAwB,CAAC,SAAS;AAChC,YAAI,KAAK,IAAI,GAAG,MAAM;AAAW,iBAAO;AACxC,oBAAY,KAAK,IAAI,GAAG,IAAI,KAAK,OAAO,GAAG;AAC3C,eAAO,IAAI,IAAI,IAAI;AAAA,MACrB,CAAC;AAAA,IACH,GAAG,CAAC,CAAC;AAGL,UAAM,EAAE,UAAU,IAAI,WAAW,oBAAoB;AAErD,WACE,oBAAC,sBAAsB,UAAtB,EAA+B,OAAO,EAAE,WAAW,GAClD,+BAAC,eACC;AAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA,cAAY;AAAA,UACZ;AAAA,UACA,eAAe,WAAW,aAAa;AAAA,UACvC,mBAAmB,WAAW,WAAW;AAAA,UACzC,iBAAiB;AAAA,UACjB,aAAY;AAAA,UACZ,cAAc;AAAA,UACd,mBAAmB;AAAA,UACnB,cAAc;AAAA,UACd,WAAW,0BAAO;AAAA,UAEjB;AAAA;AAAA,MACH;AAAA,MACC,CAAC,YACA;AAAA,QAAC;AAAA;AAAA,UACC,iBAAgB;AAAA,UAChB,SAAQ;AAAA,UACR,WAAU;AAAA,UACV,KAAK;AAAA,UACL,WAAW;AAAA,UACX,gBAAe;AAAA,UACf,UAAS;AAAA,UACT,2BAA2B;AAAA,YACzB,SAAS;AAAA,cACP,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,UAEA;AAAA,gCAAC,eAAI,MAAK,QACR,8BAAC,WAAQ,GACX;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,UAAU;AAAA,gBACV,WAAW;AAAA,gBACX,SAAQ;AAAA,gBACR,gBAAe;AAAA,gBAEf,+BAAC,uBAAY,aAAY,cACvB;AAAA;AAAA,oBAAC;AAAA;AAAA,sBACC,SAAS;AAAA,sBACT,OAAO;AAAA,sBACP,MAAM;AAAA,sBACN,oBAAoB;AAAA,sBACpB,eAAa,CAAC,YAAY,kBAAkB,EACzC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA;AAAA,kBACb;AAAA,kBACA;AAAA,oBAAC;AAAA;AAAA,sBACC,SAAS;AAAA,sBACT,MAAM;AAAA,sBACN,oBAAoB;AAAA,sBACpB,OAAM;AAAA,sBACN,eAAa,CAAC,YAAY,gBAAgB,EACvC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA;AAAA,kBACb;AAAA,mBACF;AAAA;AAAA,YACF;AAAA;AAAA;AAAA,MACF;AAAA,OAEJ,GACF;AAAA,EAEJ;AACF;AAEA,IAAO,wBAAQ,OAAO,OAAO,eAAe;AAAA,EAC1C,SAAS;AAAA,EACT,MAAM;AAAA,EACN,aAAa;AACf,CAAC;","names":["RichSelectBox"]}
1
+ {"version":3,"sources":["../../src/RichSelect/RichSelectBox.tsx"],"sourcesContent":["import React, {\n forwardRef,\n type ReactElement,\n useContext,\n useState,\n useCallback,\n createContext,\n useMemo,\n} from \"react\";\nimport { ListBox as ReactAriaListBox } from \"react-aria-components\";\nimport { type Key } from \"react-aria\";\nimport { type Selection } from \"react-stately\";\nimport { useControlledState } from \"@react-stately/utils\";\nimport { RichSelectItemContext } from \"./RichSelectItem\";\nimport ButtonGroup from \"../ButtonGroup/ButtonGroup\";\nimport Button from \"../Button/Button\";\nimport styles from \"./RichSelect.module.css\";\nimport Box from \"../Box/Box\";\nimport Divider from \"../Divider/Divider\";\nimport RichSelectSection from \"./RichSelectSection\";\nimport RichSelectChip from \"./RichSelectChip\";\nimport RichSelectRadioButton from \"./RichSelectRadioButton\";\n\ntype RichSelectChild =\n | ReactElement<typeof RichSelectChip>\n | ReactElement<typeof RichSelectRadioButton>\n | ReactElement<typeof RichSelectSection>;\n\nfunction isString(val: unknown): val is string {\n return typeof val === \"string\";\n}\n\nfunction isEqualSelection(set1?: Selection, set2?: Selection): boolean {\n if (set1 === set2) return true;\n if (!set1 && !set2) return true;\n if (!set1 || !set2) return false;\n if (isString(set1)) return set1 === set2;\n if (isString(set2)) return false;\n if (set1.size !== set2.size) return false;\n for (const item of set1) {\n if (!set2.has(item)) return false;\n }\n return true;\n}\n\nexport function convertSelection(\n selection: \"all\" | Iterable<Key> | undefined,\n defaultValue?: \"all\" | Set<Key>,\n): \"all\" | Set<Key> | undefined {\n if (!selection) return defaultValue;\n if (selection === \"all\") return \"all\";\n return new Set(selection);\n}\n\nexport type RichSelectBoxProps = {\n /** aria-label for the list box */\n accessibilityLabel: string;\n /** Automatically saves changes when true, shows save/clear buttons when not true */\n autosave?: boolean;\n /** Test id for the list box element */\n \"data-testid\"?: string;\n /** One or more RichSelectList.<Chip|RadioButton|Section|...> components. */\n children: RichSelectChild | RichSelectChild[];\n /** Default selected values */\n defaultSelectedValues?: Set<Key> | string[] | \"all\";\n /** Enables multiple selection (multiselect) */\n multiple?: boolean;\n /** The callback to be called when options are selected / committed */\n onChange: (selectedValues: string[] | \"all\") => void;\n /** Text for primary button (Save). Required: string must be translated */\n primaryButtonText: string;\n /** accessibilityLabel for primary Button component (Save). Required: string must be translated */\n primaryButtonAccessibilityLabel: string;\n /** Text for primary button (Clear). Required: string must be translated */\n secondaryButtonText: string;\n /** accessibilityLabel for secondary Button component (Clear). Required: string must be translated */\n secondaryButtonAccessibilityLabel: string;\n /** Value of the currently selected options */\n selectedValues?: Set<Key> | string[] | \"all\";\n};\n\ntype RichSelectBoxContextType = {\n /** Automatically focuses RichSelectBox on mount when enabled */\n autoFocus?: boolean;\n};\nexport const RichSelectBoxContext = createContext<RichSelectBoxContextType>({});\n\n/**\n * [RichSelectBox](https://cambly-syntax.vercel.app/?path=/docs/components-richselectbox--docs) is an element that allows users to select one or multiple options from a list.\n *\n * Example Usage:\n ```\n <RichSelectBox\n label=\"My Label\"\n multiple\n onChange={() => { ... }}\n primaryButtonText=\"Save\"\n primaryButtonAccessibilityLabel=\"Save\"\n secondaryButtonText=\"Clear\"\n secondaryButtonAccessibilityLabel=\"Clear\"\n >\n <RichSelectBox.Section label=\"Cities\">\n <RichSelectBox.Chip label=\"San Francisco\" value=\"sf\" />\n <RichSelectBox.Chip label=\"New York\" value=\"ny\" disabled />\n <RichSelectBox.Chip label=\"Tulsa\" value=\"tulsa\" />\n <RichSelectBox.Chip label=\"Chicago\" value=\"chicago\" disabled />\n </RichSelectBox.Section>\n </RichSelectBox>\n ```\n */\nconst RichSelectBox = forwardRef<HTMLDivElement, RichSelectBoxProps>(\n function RichSelectBox(props, ref): ReactElement {\n const {\n accessibilityLabel,\n autosave,\n children,\n \"data-testid\": dataTestId,\n multiple = false,\n onChange,\n primaryButtonText,\n primaryButtonAccessibilityLabel,\n secondaryButtonText,\n secondaryButtonAccessibilityLabel,\n selectedValues: selectedValuesProp,\n defaultSelectedValues: defaultSelectedValuesProp,\n } = props;\n\n const selectedKeysProp = useMemo(\n () => convertSelection(selectedValuesProp),\n [selectedValuesProp],\n );\n const defaultSelectedKeys = useMemo(\n () => convertSelection(defaultSelectedValuesProp, new Set()),\n [defaultSelectedValuesProp],\n );\n const [selectedKeys, setSelectedKeys] = useControlledState(\n selectedKeysProp!, // eslint-disable-line @typescript-eslint/no-non-null-assertion -- there is a bug in the typedef for useControlledState from react-stately. Internally they rely on value (first arg) able to be undefined\n defaultSelectedKeys,\n (value) => {\n if (isEqualSelection(value, selectedKeys)) return;\n // Notify parent about the changes\n if (value === \"all\") return onChange(\"all\");\n onChange([...value].map(String));\n },\n );\n const [stagedKeys, setStagedKeys] = useState<Set<Key> | \"all\">(\n selectedKeys,\n );\n\n const saveChanges = () => setSelectedKeys(stagedKeys);\n const clearChanges = () => setStagedKeys(new Set());\n const stageChanges = (selectedValues: Selection) => {\n setStagedKeys(selectedValues);\n if (autosave) setSelectedKeys(selectedValues);\n };\n\n // inject method into context so children can disable themselves\n // by adding `disabled` attribute (through RichSelectItem)\n const [disabledKeysComposed, setDisabledKeysComposed] = useState<Set<Key>>(\n new Set(),\n );\n const disableKey = useCallback((key: Key, _disabled: boolean) => {\n setDisabledKeysComposed((keys) => {\n if (keys.has(key) === _disabled) return keys;\n _disabled ? keys.add(key) : keys.delete(key);\n return new Set(keys);\n });\n }, []);\n\n // higher level context for autoFocus behavior (parent sets when rendering RichSelectBox in overlay)\n const { autoFocus } = useContext(RichSelectBoxContext);\n\n return (\n <RichSelectItemContext.Provider value={{ disableKey }}>\n <Box>\n <ReactAriaListBox\n ref={ref}\n aria-label={accessibilityLabel}\n autoFocus={autoFocus}\n selectionMode={multiple ? \"multiple\" : \"single\"}\n selectionBehavior={multiple ? \"toggle\" : \"replace\"}\n shouldFocusWrap={true}\n orientation=\"horizontal\"\n selectedKeys={stagedKeys}\n onSelectionChange={stageChanges}\n disabledKeys={disabledKeysComposed}\n className={styles.richSelectBox}\n >\n {children}\n </ReactAriaListBox>\n {!autosave && (\n <Box\n backgroundColor=\"white\"\n display=\"flex\"\n direction=\"column\"\n gap={5}\n marginTop={5}\n justifyContent=\"end\"\n position=\"sticky\"\n dangerouslySetInlineStyle={{\n __style: {\n bottom: 0,\n },\n }}\n >\n <Box flex=\"grow\">\n <Divider />\n </Box>\n <Box\n paddingY={5}\n marginTop={-5}\n display=\"flex\"\n justifyContent=\"end\"\n >\n <ButtonGroup orientation=\"horizontal\">\n <Button\n onClick={clearChanges}\n color={\"secondary\"}\n text={secondaryButtonText}\n accessibilityLabel={secondaryButtonAccessibilityLabel}\n data-testid={[dataTestId, \"secondary-button\"]\n .filter(Boolean)\n .join(\"-\")}\n />\n <Button\n onClick={saveChanges}\n text={primaryButtonText}\n accessibilityLabel={primaryButtonAccessibilityLabel}\n color=\"primary\"\n data-testid={[dataTestId, \"primary-button\"]\n .filter(Boolean)\n .join(\"-\")}\n />\n </ButtonGroup>\n </Box>\n </Box>\n )}\n </Box>\n </RichSelectItemContext.Provider>\n );\n },\n);\n\nexport default Object.assign(RichSelectBox, {\n Section: RichSelectSection,\n Chip: RichSelectChip,\n RadioButton: RichSelectRadioButton,\n});\n"],"mappings":"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","names":["RichSelectBox"]}
@@ -0,0 +1,57 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client"
2
+
3
+
4
+ var _VKB7KOAHcjs = require('./VKB7KOAH.cjs');
5
+
6
+ // src/colors/backgroundColor.ts
7
+ function classicBackgroundColor(color) {
8
+ switch (color) {
9
+ case "secondary":
10
+ return _VKB7KOAHcjs.colors_module_default.primary100BackgroundColor;
11
+ case "destructive-primary":
12
+ return _VKB7KOAHcjs.colors_module_default.destructive700BackgroundColor;
13
+ case "destructive-secondary":
14
+ return _VKB7KOAHcjs.colors_module_default.destructive100BackgroundColor;
15
+ case "success":
16
+ return _VKB7KOAHcjs.colors_module_default.success700BackgroundColor;
17
+ case "tertiary":
18
+ case "destructive-tertiary":
19
+ return _VKB7KOAHcjs.colors_module_default.whiteBackgroundColor;
20
+ case "branded":
21
+ return _VKB7KOAHcjs.colors_module_default.yellow700BackgroundColor;
22
+ case "inverse":
23
+ return _VKB7KOAHcjs.colors_module_default.gray60BackgroundColor;
24
+ default:
25
+ return _VKB7KOAHcjs.colors_module_default.primary700BackgroundColor;
26
+ }
27
+ }
28
+ function cambioBackgroundColor(color) {
29
+ switch (color) {
30
+ case "primary":
31
+ return _VKB7KOAHcjs.colors_module_default.cambioBlackBackgroundColor;
32
+ case "secondary":
33
+ return _VKB7KOAHcjs.colors_module_default.cambioGray370BackgroundColor;
34
+ case "tertiary":
35
+ case "success-tertiary":
36
+ case "destructive-tertiary":
37
+ return _VKB7KOAHcjs.colors_module_default.cambioTransparentFullBackgroundColor;
38
+ case "success-primary":
39
+ return _VKB7KOAHcjs.colors_module_default.cambioSuccess700BackgroundColor;
40
+ case "success-secondary":
41
+ return _VKB7KOAHcjs.colors_module_default.cambioSuccess370BackgroundColor;
42
+ case "destructive-primary":
43
+ return _VKB7KOAHcjs.colors_module_default.cambioDestructive700BackgroundColor;
44
+ case "destructive-secondary":
45
+ return _VKB7KOAHcjs.colors_module_default.cambioDestructive370BackgroundColor;
46
+ case "branded":
47
+ return _VKB7KOAHcjs.colors_module_default.cambioYellow700BackgroundColor;
48
+ default:
49
+ return _VKB7KOAHcjs.colors_module_default.cambioBlackBackgroundColor;
50
+ }
51
+ }
52
+
53
+
54
+
55
+
56
+ exports.classicBackgroundColor = classicBackgroundColor; exports.cambioBackgroundColor = cambioBackgroundColor;
57
+ //# sourceMappingURL=A4O4F3KK.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/colors/backgroundColor.ts"],"names":[],"mappings":";;;;;;AAGO,SAAS,uBAAuB,OAAuC;AAC5E,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB;AACE,aAAO,sBAAO;AAAA,EAClB;AACF;AAEO,SAAS,sBACd,OACQ;AACR,UAAQ,OAAO;AAAA,IACb,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB,KAAK;AACH,aAAO,sBAAO;AAAA,IAChB;AACE,aAAO,sBAAO;AAAA,EAClB;AACF","sourcesContent":["import { type CambioColor, type Color } from \"../constants\";\nimport styles from \"./colors.module.css\";\n\nexport function classicBackgroundColor(color: (typeof Color)[number]): string {\n switch (color) {\n case \"secondary\":\n return styles.primary100BackgroundColor;\n case \"destructive-primary\":\n return styles.destructive700BackgroundColor;\n case \"destructive-secondary\":\n return styles.destructive100BackgroundColor;\n case \"success\":\n return styles.success700BackgroundColor;\n case \"tertiary\":\n case \"destructive-tertiary\":\n return styles.whiteBackgroundColor;\n case \"branded\":\n return styles.yellow700BackgroundColor;\n case \"inverse\":\n return styles.gray60BackgroundColor;\n default:\n return styles.primary700BackgroundColor;\n }\n}\n\nexport function cambioBackgroundColor(\n color: (typeof CambioColor)[number],\n): string {\n switch (color) {\n case \"primary\":\n return styles.cambioBlackBackgroundColor;\n case \"secondary\":\n return styles.cambioGray370BackgroundColor;\n case \"tertiary\":\n case \"success-tertiary\":\n case \"destructive-tertiary\":\n return styles.cambioTransparentFullBackgroundColor;\n case \"success-primary\":\n return styles.cambioSuccess700BackgroundColor;\n case \"success-secondary\":\n return styles.cambioSuccess370BackgroundColor;\n case \"destructive-primary\":\n return styles.cambioDestructive700BackgroundColor;\n case \"destructive-secondary\":\n return styles.cambioDestructive370BackgroundColor;\n case \"branded\":\n return styles.cambioYellow700BackgroundColor;\n default:\n return styles.cambioBlackBackgroundColor;\n }\n}\n"]}
@@ -1,12 +1,13 @@
1
+ "use client"
1
2
  import {
2
3
  layout_module_default
3
- } from "./PTWXXDFF.js";
4
+ } from "./DDUJFFG7.js";
4
5
  import {
5
6
  Box_module_default
6
- } from "./KMIZI5PW.js";
7
+ } from "./O3CEUWCC.js";
7
8
  import {
8
9
  Typography_default
9
- } from "./32FNU7ZY.js";
10
+ } from "./L7PPCZM5.js";
10
11
 
11
12
  // src/RichSelect/RichSelectSection.tsx
12
13
  import { forwardRef } from "react";
@@ -49,4 +50,4 @@ var RichSelectSection_default = forwardRef(
49
50
  export {
50
51
  RichSelectSection_default
51
52
  };
52
- //# sourceMappingURL=BIOBVFK4.js.map
53
+ //# sourceMappingURL=A4QZYP2J.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/RichSelect/RichSelectSection.tsx"],"sourcesContent":["import React, { forwardRef, type ReactElement } from \"react\";\nimport {\n Section as ReactAriaSection,\n Header as ReactAriaHeader,\n Collection as ReactAriaCollection,\n} from \"react-aria-components\";\nimport classNames from \"classnames\";\nimport boxStyles from \"../Box/Box.module.css\";\nimport layoutStyles from \"../layout.module.css\";\nimport Typography from \"../Typography/Typography\";\n\ntype RichSelectSectionProps = {\n \"data-testid\"?: string;\n label: string;\n children: ReactElement | ReactElement[];\n orientation?: \"horizontal\" | \"vertical\";\n};\n\nexport default forwardRef<HTMLDivElement, RichSelectSectionProps>(\n function RichSelectSection(props, ref): ReactElement {\n const {\n \"data-testid\": dataTestId,\n label,\n children,\n orientation = \"horizontal\",\n } = props;\n\n return (\n <ReactAriaSection\n ref={ref}\n data-testid={dataTestId}\n className={classNames(\n [boxStyles.box, boxStyles.flex, boxStyles.flexWrap, boxStyles.gap3],\n {\n [boxStyles.row]: orientation === \"horizontal\",\n [boxStyles.column]: orientation === \"vertical\",\n },\n )}\n >\n <ReactAriaHeader className={classNames(layoutStyles.fullWidth)}>\n <Typography>{label}</Typography>\n </ReactAriaHeader>\n <ReactAriaCollection>{children}</ReactAriaCollection>\n </ReactAriaSection>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;AAAA,SAAgB,kBAAqC;AACrD;AAAA,EACE,WAAW;AAAA,EACX,UAAU;AAAA,EACV,cAAc;AAAA,OACT;AACP,OAAO,gBAAgB;AAsBjB,SAYI,KAZJ;AAVN,IAAO,4BAAQ;AAAA,EACb,SAAS,kBAAkB,OAAO,KAAmB;AACnD,UAAM;AAAA,MACJ,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAChB,IAAI;AAEJ,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAW;AAAA,UACT,CAAC,mBAAU,KAAK,mBAAU,MAAM,mBAAU,UAAU,mBAAU,IAAI;AAAA,UAClE;AAAA,YACE,CAAC,mBAAU,GAAG,GAAG,gBAAgB;AAAA,YACjC,CAAC,mBAAU,MAAM,GAAG,gBAAgB;AAAA,UACtC;AAAA,QACF;AAAA,QAEA;AAAA,8BAAC,mBAAgB,WAAW,WAAW,sBAAa,SAAS,GAC3D,8BAAC,sBAAY,iBAAM,GACrB;AAAA,UACA,oBAAC,uBAAqB,UAAS;AAAA;AAAA;AAAA,IACjC;AAAA,EAEJ;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/RichSelect/RichSelectSection.tsx"],"sourcesContent":["import React, { forwardRef, type ReactElement } from \"react\";\nimport {\n Section as ReactAriaSection,\n Header as ReactAriaHeader,\n Collection as ReactAriaCollection,\n} from \"react-aria-components\";\nimport classNames from \"classnames\";\nimport boxStyles from \"../Box/Box.module.css\";\nimport layoutStyles from \"../layout.module.css\";\nimport Typography from \"../Typography/Typography\";\n\ntype RichSelectSectionProps = {\n \"data-testid\"?: string;\n label: string;\n children: ReactElement | ReactElement[];\n orientation?: \"horizontal\" | \"vertical\";\n};\n\nexport default forwardRef<HTMLDivElement, RichSelectSectionProps>(\n function RichSelectSection(props, ref): ReactElement {\n const {\n \"data-testid\": dataTestId,\n label,\n children,\n orientation = \"horizontal\",\n } = props;\n\n return (\n <ReactAriaSection\n ref={ref}\n data-testid={dataTestId}\n className={classNames(\n [boxStyles.box, boxStyles.flex, boxStyles.flexWrap, boxStyles.gap3],\n {\n [boxStyles.row]: orientation === \"horizontal\",\n [boxStyles.column]: orientation === \"vertical\",\n },\n )}\n >\n <ReactAriaHeader className={classNames(layoutStyles.fullWidth)}>\n <Typography>{label}</Typography>\n </ReactAriaHeader>\n <ReactAriaCollection>{children}</ReactAriaCollection>\n </ReactAriaSection>\n );\n },\n);\n"],"mappings":";;;;;;;;;;;;AAAA,SAAgB,kBAAqC;AACrD;AAAA,EACE,WAAW;AAAA,EACX,UAAU;AAAA,EACV,cAAc;AAAA,OACT;AACP,OAAO,gBAAgB;AAsBjB,SAYI,KAZJ;AAVN,IAAO,4BAAQ;AAAA,EACb,SAAS,kBAAkB,OAAO,KAAmB;AACnD,UAAM;AAAA,MACJ,eAAe;AAAA,MACf;AAAA,MACA;AAAA,MACA,cAAc;AAAA,IAChB,IAAI;AAEJ,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,eAAa;AAAA,QACb,WAAW;AAAA,UACT,CAAC,mBAAU,KAAK,mBAAU,MAAM,mBAAU,UAAU,mBAAU,IAAI;AAAA,UAClE;AAAA,YACE,CAAC,mBAAU,GAAG,GAAG,gBAAgB;AAAA,YACjC,CAAC,mBAAU,MAAM,GAAG,gBAAgB;AAAA,UACtC;AAAA,QACF;AAAA,QAEA;AAAA,8BAAC,mBAAgB,WAAW,WAAW,sBAAa,SAAS,GAC3D,8BAAC,sBAAY,iBAAM,GACrB;AAAA,UACA,oBAAC,uBAAqB,UAAS;AAAA;AAAA;AAAA,IACjC;AAAA,EAEJ;AACF;","names":[]}
@@ -1,15 +1,16 @@
1
+ "use client"
1
2
  import {
2
3
  Focus_module_default
3
- } from "./2O6FDRTF.js";
4
+ } from "./KKADUD65.js";
4
5
  import {
5
6
  Typography_default
6
- } from "./32FNU7ZY.js";
7
+ } from "./L7PPCZM5.js";
7
8
  import {
8
9
  useIsHydrated
9
- } from "./YJ7YDIGB.js";
10
+ } from "./JB65NEXK.js";
10
11
  import {
11
12
  useFocusVisible
12
- } from "./OGJDUOWP.js";
13
+ } from "./BWPNF6RD.js";
13
14
 
14
15
  // src/Checkbox/Checkbox.tsx
15
16
  import { useState } from "react";
@@ -108,4 +109,4 @@ var Checkbox_default = Checkbox;
108
109
  export {
109
110
  Checkbox_default
110
111
  };
111
- //# sourceMappingURL=ARYTS7XZ.js.map
112
+ //# sourceMappingURL=ABAYJGAF.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/Checkbox/Checkbox.tsx","css-module:./Checkbox.module.css#css-module"],"sourcesContent":["import React, { type ReactElement, useState } from \"react\";\nimport classNames from \"classnames\";\nimport useFocusVisible from \"../useFocusVisible\";\nimport styles from \"./Checkbox.module.css\";\nimport focusStyles from \"../Focus.module.css\";\nimport Typography from \"../Typography/Typography\";\nimport useIsHydrated from \"../useIsHydrated\";\n\nconst typographySize = {\n sm: 100,\n md: 200,\n} as const;\n\nconst iconWidth = {\n sm: 12,\n md: 20,\n};\n\n/**\n * [Checkbox](https://cambly-syntax.vercel.app/?path=/docs/components-checkbox--docs) is a clickable element that will show if an option has been selected or not.\n */\nconst Checkbox = ({\n checked = false,\n \"data-testid\": dataTestId,\n disabled: disabledProp = false,\n size = \"md\",\n label,\n error = false,\n onChange,\n}: {\n /**\n * Whether or not the box has been clicked\n *\n * @defaultValue false\n */\n checked: boolean;\n /**\n * Test id for the checkbox\n */\n \"data-testid\"?: string;\n /**\n * The callback to be called when the checkbox value changes\n */\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n /**\n * Whether or not the box is disabled\n *\n * @defaultValue false\n */\n disabled?: boolean;\n /**\n * The size of the checkbox and icon\n *\n * * `sm`: 16px\n * * `md`: 24px\n *\n * @defaultValue \"md\"\n */\n size?: \"sm\" | \"md\";\n /**\n * The text accompanying the checkbox\n */\n label: string;\n /**\n * Whether or not there is an error with the input\n *\n * @defaultValue false\n */\n error?: boolean;\n}): ReactElement => {\n const isHydrated = useIsHydrated();\n const disabled = !isHydrated || disabledProp;\n const [isFocused, setIsFocused] = useState(false);\n const { isFocusVisible } = useFocusVisible();\n\n const checkboxStyling = classNames(styles.checkbox, styles[size]);\n const uncheckedStyling = classNames(checkboxStyling, styles.uncheckedBox, {\n [styles.uncheckedBorder]: !error,\n [styles.uncheckedErrorBorder]: error,\n [focusStyles.accessibilityOutlineFocus]: isFocused && isFocusVisible,\n });\n const checkedStyling = classNames(checkboxStyling, styles.checkedBox, {\n [styles.checkedNonError]: !error,\n [styles.checkedError]: error,\n [focusStyles.accessibilityOutlineFocus]: isFocused && isFocusVisible,\n });\n\n return (\n <label\n className={classNames(\n styles.mainContainer,\n styles[`cursor${disabled ? \"Disabled\" : \"Enabled\"}`],\n {\n [styles.disabled]: disabled,\n },\n )}\n >\n <div className={checked ? checkedStyling : uncheckedStyling}>\n {checked && (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" width={iconWidth[size]}>\n <path\n fill=\"#fff\"\n d=\"m9 16.2-3.5-3.5a.9839.9839 0 0 0-1.4 0c-.39.39-.39 1.01 0 1.4l4.19 4.19c.39.39 1.02.39 1.41 0L20.3 7.7c.39-.39.39-1.01 0-1.4a.9839.9839 0 0 0-1.4 0L9 16.2z\"\n ></path>\n </svg>\n )}\n </div>\n <input\n data-testid={dataTestId}\n type=\"checkbox\"\n className={classNames(\n styles.inputOverlay,\n styles[size],\n styles[`cursor${disabled ? \"Disabled\" : \"Enabled\"}`],\n )}\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n onFocus={() => {\n setIsFocused(true);\n }}\n onBlur={() => {\n setIsFocused(false);\n }}\n />\n <Typography\n size={typographySize[size]}\n color={error ? \"destructive-primary\" : \"gray900\"}\n >\n {label}\n </Typography>\n </label>\n );\n};\n\nexport default Checkbox;\n","import \"/home/runner/work/syntax/syntax/packages/syntax-core/src/Checkbox/Checkbox.module.css\"; export default {\"mainContainer\":\"_mainContainer_an7al_1\",\"inputOverlay\":\"_inputOverlay_an7al_9\",\"checkbox\":\"_checkbox_an7al_17\",\"disabled\":\"_disabled_an7al_25\",\"cursorDisabled\":\"_cursorDisabled_an7al_29\",\"cursorEnabled\":\"_cursorEnabled_an7al_33\",\"uncheckedBox\":\"_uncheckedBox_an7al_37\",\"uncheckedBorder\":\"_uncheckedBorder_an7al_41\",\"uncheckedErrorBorder\":\"_uncheckedErrorBorder_an7al_45\",\"checkedBox\":\"_checkedBox_an7al_49\",\"checkedNonError\":\"_checkedNonError_an7al_53\",\"checkedError\":\"_checkedError_an7al_57\",\"sm\":\"_sm_an7al_61\",\"md\":\"_md_an7al_67\"}"],"mappings":";;;;;;;;;;;;;;AAAA,SAAmC,gBAAgB;AACnD,OAAO,gBAAgB;;;ACDyE,IAAO,0BAAQ,EAAC,iBAAgB,0BAAyB,gBAAe,yBAAwB,YAAW,sBAAqB,YAAW,sBAAqB,kBAAiB,4BAA2B,iBAAgB,2BAA0B,gBAAe,0BAAyB,mBAAkB,6BAA4B,wBAAuB,kCAAiC,cAAa,wBAAuB,mBAAkB,6BAA4B,gBAAe,0BAAyB,MAAK,gBAAe,MAAK,eAAc;;;ADwFjoB,SAYQ,KAZR;AAhFJ,IAAM,iBAAiB;AAAA,EACrB,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,IAAM,YAAY;AAAA,EAChB,IAAI;AAAA,EACJ,IAAI;AACN;AAKA,IAAM,WAAW,CAAC;AAAA,EAChB,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU,eAAe;AAAA,EACzB,OAAO;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,EACR;AACF,MAwCoB;AAClB,QAAM,aAAa,cAAc;AACjC,QAAM,WAAW,CAAC,cAAc;AAChC,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,EAAE,eAAe,IAAI,gBAAgB;AAE3C,QAAM,kBAAkB,WAAW,wBAAO,UAAU,wBAAO,IAAI,CAAC;AAChE,QAAM,mBAAmB,WAAW,iBAAiB,wBAAO,cAAc;AAAA,IACxE,CAAC,wBAAO,eAAe,GAAG,CAAC;AAAA,IAC3B,CAAC,wBAAO,oBAAoB,GAAG;AAAA,IAC/B,CAAC,qBAAY,yBAAyB,GAAG,aAAa;AAAA,EACxD,CAAC;AACD,QAAM,iBAAiB,WAAW,iBAAiB,wBAAO,YAAY;AAAA,IACpE,CAAC,wBAAO,eAAe,GAAG,CAAC;AAAA,IAC3B,CAAC,wBAAO,YAAY,GAAG;AAAA,IACvB,CAAC,qBAAY,yBAAyB,GAAG,aAAa;AAAA,EACxD,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,wBAAO;AAAA,QACP,wBAAO,SAAS,WAAW,aAAa,WAAW;AAAA,QACnD;AAAA,UACE,CAAC,wBAAO,QAAQ,GAAG;AAAA,QACrB;AAAA,MACF;AAAA,MAEA;AAAA,4BAAC,SAAI,WAAW,UAAU,iBAAiB,kBACxC,qBACC,oBAAC,SAAI,eAAY,QAAO,SAAQ,aAAY,OAAO,UAAU,IAAI,GAC/D;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,GAAE;AAAA;AAAA,QACH,GACH,GAEJ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,eAAa;AAAA,YACb,MAAK;AAAA,YACL,WAAW;AAAA,cACT,wBAAO;AAAA,cACP,wBAAO,IAAI;AAAA,cACX,wBAAO,SAAS,WAAW,aAAa,WAAW;AAAA,YACrD;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,SAAS,MAAM;AACb,2BAAa,IAAI;AAAA,YACnB;AAAA,YACA,QAAQ,MAAM;AACZ,2BAAa,KAAK;AAAA,YACpB;AAAA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,eAAe,IAAI;AAAA,YACzB,OAAO,QAAQ,wBAAwB;AAAA,YAEtC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,mBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../src/Checkbox/Checkbox.tsx","css-module:./Checkbox.module.css#css-module"],"sourcesContent":["import React, { type ReactElement, useState } from \"react\";\nimport classNames from \"classnames\";\nimport useFocusVisible from \"../useFocusVisible\";\nimport styles from \"./Checkbox.module.css\";\nimport focusStyles from \"../Focus.module.css\";\nimport Typography from \"../Typography/Typography\";\nimport useIsHydrated from \"../useIsHydrated\";\n\nconst typographySize = {\n sm: 100,\n md: 200,\n} as const;\n\nconst iconWidth = {\n sm: 12,\n md: 20,\n};\n\n/**\n * [Checkbox](https://cambly-syntax.vercel.app/?path=/docs/components-checkbox--docs) is a clickable element that will show if an option has been selected or not.\n */\nconst Checkbox = ({\n checked = false,\n \"data-testid\": dataTestId,\n disabled: disabledProp = false,\n size = \"md\",\n label,\n error = false,\n onChange,\n}: {\n /**\n * Whether or not the box has been clicked\n *\n * @defaultValue false\n */\n checked: boolean;\n /**\n * Test id for the checkbox\n */\n \"data-testid\"?: string;\n /**\n * The callback to be called when the checkbox value changes\n */\n onChange: React.ChangeEventHandler<HTMLInputElement>;\n /**\n * Whether or not the box is disabled\n *\n * @defaultValue false\n */\n disabled?: boolean;\n /**\n * The size of the checkbox and icon\n *\n * * `sm`: 16px\n * * `md`: 24px\n *\n * @defaultValue \"md\"\n */\n size?: \"sm\" | \"md\";\n /**\n * The text accompanying the checkbox\n */\n label: string;\n /**\n * Whether or not there is an error with the input\n *\n * @defaultValue false\n */\n error?: boolean;\n}): ReactElement => {\n const isHydrated = useIsHydrated();\n const disabled = !isHydrated || disabledProp;\n const [isFocused, setIsFocused] = useState(false);\n const { isFocusVisible } = useFocusVisible();\n\n const checkboxStyling = classNames(styles.checkbox, styles[size]);\n const uncheckedStyling = classNames(checkboxStyling, styles.uncheckedBox, {\n [styles.uncheckedBorder]: !error,\n [styles.uncheckedErrorBorder]: error,\n [focusStyles.accessibilityOutlineFocus]: isFocused && isFocusVisible,\n });\n const checkedStyling = classNames(checkboxStyling, styles.checkedBox, {\n [styles.checkedNonError]: !error,\n [styles.checkedError]: error,\n [focusStyles.accessibilityOutlineFocus]: isFocused && isFocusVisible,\n });\n\n return (\n <label\n className={classNames(\n styles.mainContainer,\n styles[`cursor${disabled ? \"Disabled\" : \"Enabled\"}`],\n {\n [styles.disabled]: disabled,\n },\n )}\n >\n <div className={checked ? checkedStyling : uncheckedStyling}>\n {checked && (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" width={iconWidth[size]}>\n <path\n fill=\"#fff\"\n d=\"m9 16.2-3.5-3.5a.9839.9839 0 0 0-1.4 0c-.39.39-.39 1.01 0 1.4l4.19 4.19c.39.39 1.02.39 1.41 0L20.3 7.7c.39-.39.39-1.01 0-1.4a.9839.9839 0 0 0-1.4 0L9 16.2z\"\n ></path>\n </svg>\n )}\n </div>\n <input\n data-testid={dataTestId}\n type=\"checkbox\"\n className={classNames(\n styles.inputOverlay,\n styles[size],\n styles[`cursor${disabled ? \"Disabled\" : \"Enabled\"}`],\n )}\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n onFocus={() => {\n setIsFocused(true);\n }}\n onBlur={() => {\n setIsFocused(false);\n }}\n />\n <Typography\n size={typographySize[size]}\n color={error ? \"destructive-primary\" : \"gray900\"}\n >\n {label}\n </Typography>\n </label>\n );\n};\n\nexport default Checkbox;\n","import \"/home/runner/work/syntax/syntax/packages/syntax-core/src/Checkbox/Checkbox.module.css\"; export default {\"mainContainer\":\"_mainContainer_an7al_1\",\"inputOverlay\":\"_inputOverlay_an7al_9\",\"checkbox\":\"_checkbox_an7al_17\",\"disabled\":\"_disabled_an7al_25\",\"cursorDisabled\":\"_cursorDisabled_an7al_29\",\"cursorEnabled\":\"_cursorEnabled_an7al_33\",\"uncheckedBox\":\"_uncheckedBox_an7al_37\",\"uncheckedBorder\":\"_uncheckedBorder_an7al_41\",\"uncheckedErrorBorder\":\"_uncheckedErrorBorder_an7al_45\",\"checkedBox\":\"_checkedBox_an7al_49\",\"checkedNonError\":\"_checkedNonError_an7al_53\",\"checkedError\":\"_checkedError_an7al_57\",\"sm\":\"_sm_an7al_61\",\"md\":\"_md_an7al_67\"}"],"mappings":";;;;;;;;;;;;;;;AAAA,SAAmC,gBAAgB;AACnD,OAAO,gBAAgB;;;ACDyE,IAAO,0BAAQ,EAAC,iBAAgB,0BAAyB,gBAAe,yBAAwB,YAAW,sBAAqB,YAAW,sBAAqB,kBAAiB,4BAA2B,iBAAgB,2BAA0B,gBAAe,0BAAyB,mBAAkB,6BAA4B,wBAAuB,kCAAiC,cAAa,wBAAuB,mBAAkB,6BAA4B,gBAAe,0BAAyB,MAAK,gBAAe,MAAK,eAAc;;;ADwFjoB,SAYQ,KAZR;AAhFJ,IAAM,iBAAiB;AAAA,EACrB,IAAI;AAAA,EACJ,IAAI;AACN;AAEA,IAAM,YAAY;AAAA,EAChB,IAAI;AAAA,EACJ,IAAI;AACN;AAKA,IAAM,WAAW,CAAC;AAAA,EAChB,UAAU;AAAA,EACV,eAAe;AAAA,EACf,UAAU,eAAe;AAAA,EACzB,OAAO;AAAA,EACP;AAAA,EACA,QAAQ;AAAA,EACR;AACF,MAwCoB;AAClB,QAAM,aAAa,cAAc;AACjC,QAAM,WAAW,CAAC,cAAc;AAChC,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,EAAE,eAAe,IAAI,gBAAgB;AAE3C,QAAM,kBAAkB,WAAW,wBAAO,UAAU,wBAAO,IAAI,CAAC;AAChE,QAAM,mBAAmB,WAAW,iBAAiB,wBAAO,cAAc;AAAA,IACxE,CAAC,wBAAO,eAAe,GAAG,CAAC;AAAA,IAC3B,CAAC,wBAAO,oBAAoB,GAAG;AAAA,IAC/B,CAAC,qBAAY,yBAAyB,GAAG,aAAa;AAAA,EACxD,CAAC;AACD,QAAM,iBAAiB,WAAW,iBAAiB,wBAAO,YAAY;AAAA,IACpE,CAAC,wBAAO,eAAe,GAAG,CAAC;AAAA,IAC3B,CAAC,wBAAO,YAAY,GAAG;AAAA,IACvB,CAAC,qBAAY,yBAAyB,GAAG,aAAa;AAAA,EACxD,CAAC;AAED,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT,wBAAO;AAAA,QACP,wBAAO,SAAS,WAAW,aAAa,WAAW;AAAA,QACnD;AAAA,UACE,CAAC,wBAAO,QAAQ,GAAG;AAAA,QACrB;AAAA,MACF;AAAA,MAEA;AAAA,4BAAC,SAAI,WAAW,UAAU,iBAAiB,kBACxC,qBACC,oBAAC,SAAI,eAAY,QAAO,SAAQ,aAAY,OAAO,UAAU,IAAI,GAC/D;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,GAAE;AAAA;AAAA,QACH,GACH,GAEJ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,eAAa;AAAA,YACb,MAAK;AAAA,YACL,WAAW;AAAA,cACT,wBAAO;AAAA,cACP,wBAAO,IAAI;AAAA,cACX,wBAAO,SAAS,WAAW,aAAa,WAAW;AAAA,YACrD;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,SAAS,MAAM;AACb,2BAAa,IAAI;AAAA,YACnB;AAAA,YACA,QAAQ,MAAM;AACZ,2BAAa,KAAK;AAAA,YACpB;AAAA;AAAA,QACF;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAM,eAAe,IAAI;AAAA,YACzB,OAAO,QAAQ,wBAAwB;AAAA,YAEtC;AAAA;AAAA,QACH;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,mBAAQ;","names":[]}
@@ -1,4 +1,6 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/Modal/FocusTrap.tsx
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client"
2
+
3
+ // src/Modal/FocusTrap.tsx
2
4
  var _react = require('react');
3
5
  var _jsxruntime = require('react/jsx-runtime');
4
6
  function queryFocusableAll(el) {
@@ -67,4 +69,4 @@ function FocusTrap({
67
69
 
68
70
 
69
71
  exports.FocusTrap = FocusTrap;
70
- //# sourceMappingURL=SJFWRAOP.cjs.map
72
+ //# sourceMappingURL=BA4JPX36.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/Modal/FocusTrap.tsx"],"names":[],"mappings":";;;AAAA,SAAgB,WAAW,cAAiC;AAyFxD;AAvFJ,SAAS,kBAAkB,IAA6C;AAEtE,QAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,GAAG;AACV,SAAO,GAAG,iBAAiB,QAAQ;AACrC;AAEA,IAAM,eAAe,CAAC,OAAoB;AACxC,MAAI,OAAO,GAAG,UAAU,YAAY;AAClC,OAAG,MAAM;AAAA,EACX;AACF;AAKe,SAAR,UAA2B;AAAA,EAChC;AACF,GAEiB;AACf,QAAM,QAAQ,OAA8B,IAAI;AAChD,QAAM,yBAAyB,OAA2B,IAAI;AAE9D,YAAU,MAAM;AACd,UAAM,EAAE,SAAS,QAAQ,IAAI;AAG7B,UAAM,kBAAkB,MAAM;AAC5B,YAAM,eAAe,WAAW,OAAO;AACvC,UAAI,WAAW,CAAC,cAAc;AAC5B,qBAAa,kBAAkB,OAAO,EAAE,CAAC,CAAC;AAAA,MAC5C;AAAA,IACF;AAEA,UAAM,cAA2C,CAAC,UAAsB;AACtE,UACE,CAAC,WACA,MAAM,kBAAkB,QAAQ,QAAQ,SAAS,MAAM,MAAM,GAC9D;AACA;AAAA,MACF;AAGA,UACE,MAAM,kBAAkB,WACxB,MAAM,OAAO,QAAQ,mCAAmC,MAAM,MAC9D;AACA;AAAA,MACF;AAEA,YAAM,gBAAgB;AACtB,YAAM,eAAe;AACrB,sBAAgB;AAAA,IAClB;AAGA,2BAAuB,UAAU,SAAS;AAC1C,oBAAgB;AAChB,aAAS,iBAAiB,SAAS,aAAa,IAAI;AAEpD,WAAO,SAAS,UAAU;AACxB,YAAM,EAAE,SAAS,oBAAoB,IAAI;AACzC,eAAS,oBAAoB,SAAS,aAAa,IAAI;AAEvD,UAAI,qBAAqB;AACvB,qBAAa,mBAAmB;AAAA,MAClC;AAAA,IACF;AAAA,EACF,GAAG,CAAC,OAAO,sBAAsB,CAAC;AAElC,SACE,oBAAC,SAAI,eAAY,qBAAoB,KAAK,OACvC,UACH;AAEJ","sourcesContent":["import React, { useEffect, useRef, type ReactElement } from \"react\";\n\nfunction queryFocusableAll(el: HTMLDivElement): NodeListOf<HTMLElement> {\n // Focusable, interactive elements that could possibly be in children\n const selector = [\n \"a[href]\",\n \"area[href]\",\n \"input:not([disabled])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"button:not([disabled])\",\n \"iframe\",\n \"object\",\n \"embed\",\n '[tabindex=\"-1\"]',\n '[tabindex=\"0\"]',\n \"[contenteditable]\",\n \"audio[controls]\",\n \"video[controls]\",\n \"summary\",\n ].join(\",\");\n return el.querySelectorAll(selector);\n}\n\nconst focusElement = (el: HTMLElement) => {\n if (typeof el.focus === \"function\") {\n el.focus();\n }\n};\n\n/**\n * FocusTrap is used by components like Modal to ensure that only elements within children components can be focused.\n */\nexport default function FocusTrap({\n children,\n}: {\n children?: ReactElement | null;\n}): ReactElement {\n const elRef = useRef<HTMLDivElement | null>(null);\n const previouslyFocusedElRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n const { current: element } = elRef;\n\n // Focus the first child element among all the focusable, interactive elements within `children`\n const focusFirstChild = () => {\n const withinIframe = window !== window.parent;\n if (element && !withinIframe) {\n focusElement(queryFocusableAll(element)[0]);\n }\n };\n\n const handleFocus: (event: FocusEvent) => void = (event: FocusEvent) => {\n if (\n !element ||\n (event.target instanceof Node && element.contains(event.target))\n ) {\n return;\n }\n\n // This prevents stack overflow when multiple FocusTraps are rendered\n if (\n event.target instanceof Element &&\n event.target.closest('[data-testid=\"syntax-focus-trap\"]') !== null\n ) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n focusFirstChild();\n };\n\n // If an element has focus currently, keep a reference to that element\n previouslyFocusedElRef.current = document.activeElement as HTMLElement;\n focusFirstChild();\n document.addEventListener(\"focus\", handleFocus, true);\n\n return function cleanup() {\n const { current: previouslyFocusedEl } = previouslyFocusedElRef;\n document.removeEventListener(\"focus\", handleFocus, true);\n // If we previously stored a reference to a focused element, return focus to that element\n if (previouslyFocusedEl) {\n focusElement(previouslyFocusedEl);\n }\n };\n }, [elRef, previouslyFocusedElRef]);\n\n return (\n <div data-testid=\"syntax-focus-trap\" ref={elRef}>\n {children}\n </div>\n );\n}\n"]}
@@ -1,3 +1,5 @@
1
+ "use client"
2
+
1
3
  // src/useFocusVisible.tsx
2
4
  import { useState, useEffect } from "react";
3
5
  var hasSetupGlobalListeners = false;
@@ -91,4 +93,4 @@ function useFocusVisible() {
91
93
  export {
92
94
  useFocusVisible
93
95
  };
94
- //# sourceMappingURL=OGJDUOWP.js.map
96
+ //# sourceMappingURL=BWPNF6RD.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/useFocusVisible.tsx"],"sourcesContent":["// Portions of the code in this file are based on code from react & react-spectrum:\n// https://github.com/facebook/react/blob/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions/events/src/dom/create-event-handle/Focus.js\n// https://github.com/adobe/react-spectrum/blob/c700898916bbd076bcc63e49d77c16d80623a8e7/packages/@react-aria/interactions/src/useFocusVisible.ts\n\nimport { useState, useEffect } from \"react\";\n\ntype Modality = \"keyboard\" | \"pointer\";\ntype HandlerEvent = PointerEvent | MouseEvent | KeyboardEvent | FocusEvent;\ntype Handler = (modality: Modality, e: HandlerEvent) => void;\n\nlet hasSetupGlobalListeners = false;\nlet currentModality: Modality | null = null;\nconst changeHandlers = new Set<Handler>();\nlet hasEventBeforeFocus = false;\n\nconst isMac =\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n typeof window !== \"undefined\" && window.navigator != null\n ? // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\n /^Mac/.test(window.navigator.platform)\n : false;\n\nfunction isValidKey(e: KeyboardEvent) {\n return !(e.metaKey || (!isMac && e.altKey) || e.ctrlKey);\n}\n\nfunction triggerChangeHandlers(modality: Modality, e: HandlerEvent) {\n changeHandlers.forEach((handler) => {\n handler(modality, e);\n });\n}\n\nfunction handleKeyboardEvent(e: KeyboardEvent) {\n hasEventBeforeFocus = true;\n if (isValidKey(e)) {\n currentModality = \"keyboard\";\n triggerChangeHandlers(\"keyboard\", e);\n }\n}\n\nfunction handlePointerEvent(e: PointerEvent | MouseEvent) {\n currentModality = \"pointer\";\n if (e.type === \"mousedown\" || e.type === \"pointerdown\") {\n hasEventBeforeFocus = true;\n triggerChangeHandlers(\"pointer\", e);\n }\n}\n\nfunction handleFocusEvent(e: FocusEvent) {\n // Firefox fires two extra focus events when the user first clicks into an iframe:\n // first on the window, then on the document. We ignore these events so they don't\n // cause keyboard focus rings to appear.\n if (e.target === window || e.target === document) {\n return;\n }\n\n // If a focus event occurs without a preceding keyboard or pointer event, switch to keyboard modality.\n // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n if (!hasEventBeforeFocus) {\n currentModality = \"keyboard\";\n triggerChangeHandlers(\"keyboard\", e);\n }\n\n hasEventBeforeFocus = false;\n}\n\nfunction handleWindowBlur() {\n // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n // for example, since a subsequent focus event won't be fired.\n hasEventBeforeFocus = false;\n}\n\nfunction isFocusVisible(): boolean {\n return currentModality !== \"pointer\";\n}\n\nfunction setupGlobalFocusEvents() {\n if (typeof window === \"undefined\" || hasSetupGlobalListeners) {\n return;\n }\n\n // Programmatic focus() calls shouldn't affect the current input modality.\n // However, we need to detect other cases when a focus event occurs without\n // a preceding user event (e.g. screen reader focus). Overriding the focus\n // method on HTMLElement.prototype is a bit hacky, but works.\n // $FlowExpectedError[method-unbinding]\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { focus } = HTMLElement.prototype;\n // $FlowIssue[cannot-write]\n HTMLElement.prototype.focus = function focusElement(...args) {\n hasEventBeforeFocus = true;\n focus.apply(this, args);\n };\n\n document.addEventListener(\"keydown\", handleKeyboardEvent, true);\n document.addEventListener(\"keyup\", handleKeyboardEvent, true);\n\n // Register focus events on the window so they are sure to happen\n // before React's event listeners (registered on the document).\n window.addEventListener(\"focus\", handleFocusEvent, true);\n window.addEventListener(\"blur\", handleWindowBlur, false);\n\n if (typeof PointerEvent !== \"undefined\") {\n document.addEventListener(\"pointerdown\", handlePointerEvent, true);\n document.addEventListener(\"pointermove\", handlePointerEvent, true);\n document.addEventListener(\"pointerup\", handlePointerEvent, true);\n } else {\n document.addEventListener(\"mousedown\", handlePointerEvent, true);\n document.addEventListener(\"mousemove\", handlePointerEvent, true);\n document.addEventListener(\"mouseup\", handlePointerEvent, true);\n }\n\n hasSetupGlobalListeners = true;\n}\n\nexport default function useFocusVisible(): {\n isFocusVisible: boolean;\n} {\n setupGlobalFocusEvents();\n const [isFocusVisibleState, setFocusVisible] = useState(isFocusVisible());\n useEffect(() => {\n const handler = () => {\n setFocusVisible(isFocusVisible());\n };\n\n changeHandlers.add(handler);\n return () => {\n changeHandlers.delete(handler);\n };\n }, []);\n\n return { isFocusVisible: isFocusVisibleState };\n}\n"],"mappings":";AAIA,SAAS,UAAU,iBAAiB;AAMpC,IAAI,0BAA0B;AAC9B,IAAI,kBAAmC;AACvC,IAAM,iBAAiB,oBAAI,IAAa;AACxC,IAAI,sBAAsB;AAE1B,IAAM;AAAA;AAAA,EAEJ,OAAO,WAAW,eAAe,OAAO,aAAa;AAAA;AAAA,IAEjD,OAAO,KAAK,OAAO,UAAU,QAAQ;AAAA,MACrC;AAAA;AAEN,SAAS,WAAW,GAAkB;AACpC,SAAO,EAAE,EAAE,WAAY,CAAC,SAAS,EAAE,UAAW,EAAE;AAClD;AAEA,SAAS,sBAAsB,UAAoB,GAAiB;AAClE,iBAAe,QAAQ,CAAC,YAAY;AAClC,YAAQ,UAAU,CAAC;AAAA,EACrB,CAAC;AACH;AAEA,SAAS,oBAAoB,GAAkB;AAC7C,wBAAsB;AACtB,MAAI,WAAW,CAAC,GAAG;AACjB,sBAAkB;AAClB,0BAAsB,YAAY,CAAC;AAAA,EACrC;AACF;AAEA,SAAS,mBAAmB,GAA8B;AACxD,oBAAkB;AAClB,MAAI,EAAE,SAAS,eAAe,EAAE,SAAS,eAAe;AACtD,0BAAsB;AACtB,0BAAsB,WAAW,CAAC;AAAA,EACpC;AACF;AAEA,SAAS,iBAAiB,GAAe;AAIvC,MAAI,EAAE,WAAW,UAAU,EAAE,WAAW,UAAU;AAChD;AAAA,EACF;AAIA,MAAI,CAAC,qBAAqB;AACxB,sBAAkB;AAClB,0BAAsB,YAAY,CAAC;AAAA,EACrC;AAEA,wBAAsB;AACxB;AAEA,SAAS,mBAAmB;AAG1B,wBAAsB;AACxB;AAEA,SAAS,iBAA0B;AACjC,SAAO,oBAAoB;AAC7B;AAEA,SAAS,yBAAyB;AAChC,MAAI,OAAO,WAAW,eAAe,yBAAyB;AAC5D;AAAA,EACF;AAQA,QAAM,EAAE,MAAM,IAAI,YAAY;AAE9B,cAAY,UAAU,QAAQ,SAAS,gBAAgB,MAAM;AAC3D,0BAAsB;AACtB,UAAM,MAAM,MAAM,IAAI;AAAA,EACxB;AAEA,WAAS,iBAAiB,WAAW,qBAAqB,IAAI;AAC9D,WAAS,iBAAiB,SAAS,qBAAqB,IAAI;AAI5D,SAAO,iBAAiB,SAAS,kBAAkB,IAAI;AACvD,SAAO,iBAAiB,QAAQ,kBAAkB,KAAK;AAEvD,MAAI,OAAO,iBAAiB,aAAa;AACvC,aAAS,iBAAiB,eAAe,oBAAoB,IAAI;AACjE,aAAS,iBAAiB,eAAe,oBAAoB,IAAI;AACjE,aAAS,iBAAiB,aAAa,oBAAoB,IAAI;AAAA,EACjE,OAAO;AACL,aAAS,iBAAiB,aAAa,oBAAoB,IAAI;AAC/D,aAAS,iBAAiB,aAAa,oBAAoB,IAAI;AAC/D,aAAS,iBAAiB,WAAW,oBAAoB,IAAI;AAAA,EAC/D;AAEA,4BAA0B;AAC5B;AAEe,SAAR,kBAEL;AACA,yBAAuB;AACvB,QAAM,CAAC,qBAAqB,eAAe,IAAI,SAAS,eAAe,CAAC;AACxE,YAAU,MAAM;AACd,UAAM,UAAU,MAAM;AACpB,sBAAgB,eAAe,CAAC;AAAA,IAClC;AAEA,mBAAe,IAAI,OAAO;AAC1B,WAAO,MAAM;AACX,qBAAe,OAAO,OAAO;AAAA,IAC/B;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO,EAAE,gBAAgB,oBAAoB;AAC/C;","names":[]}
1
+ {"version":3,"sources":["../../src/useFocusVisible.tsx"],"sourcesContent":["// Portions of the code in this file are based on code from react & react-spectrum:\n// https://github.com/facebook/react/blob/cc7c1aece46a6b69b41958d731e0fd27c94bfc6c/packages/react-interactions/events/src/dom/create-event-handle/Focus.js\n// https://github.com/adobe/react-spectrum/blob/c700898916bbd076bcc63e49d77c16d80623a8e7/packages/@react-aria/interactions/src/useFocusVisible.ts\n\nimport { useState, useEffect } from \"react\";\n\ntype Modality = \"keyboard\" | \"pointer\";\ntype HandlerEvent = PointerEvent | MouseEvent | KeyboardEvent | FocusEvent;\ntype Handler = (modality: Modality, e: HandlerEvent) => void;\n\nlet hasSetupGlobalListeners = false;\nlet currentModality: Modality | null = null;\nconst changeHandlers = new Set<Handler>();\nlet hasEventBeforeFocus = false;\n\nconst isMac =\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n typeof window !== \"undefined\" && window.navigator != null\n ? // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with\n /^Mac/.test(window.navigator.platform)\n : false;\n\nfunction isValidKey(e: KeyboardEvent) {\n return !(e.metaKey || (!isMac && e.altKey) || e.ctrlKey);\n}\n\nfunction triggerChangeHandlers(modality: Modality, e: HandlerEvent) {\n changeHandlers.forEach((handler) => {\n handler(modality, e);\n });\n}\n\nfunction handleKeyboardEvent(e: KeyboardEvent) {\n hasEventBeforeFocus = true;\n if (isValidKey(e)) {\n currentModality = \"keyboard\";\n triggerChangeHandlers(\"keyboard\", e);\n }\n}\n\nfunction handlePointerEvent(e: PointerEvent | MouseEvent) {\n currentModality = \"pointer\";\n if (e.type === \"mousedown\" || e.type === \"pointerdown\") {\n hasEventBeforeFocus = true;\n triggerChangeHandlers(\"pointer\", e);\n }\n}\n\nfunction handleFocusEvent(e: FocusEvent) {\n // Firefox fires two extra focus events when the user first clicks into an iframe:\n // first on the window, then on the document. We ignore these events so they don't\n // cause keyboard focus rings to appear.\n if (e.target === window || e.target === document) {\n return;\n }\n\n // If a focus event occurs without a preceding keyboard or pointer event, switch to keyboard modality.\n // This occurs, for example, when navigating a form with the next/previous buttons on iOS.\n if (!hasEventBeforeFocus) {\n currentModality = \"keyboard\";\n triggerChangeHandlers(\"keyboard\", e);\n }\n\n hasEventBeforeFocus = false;\n}\n\nfunction handleWindowBlur() {\n // When the window is blurred, reset state. This is necessary when tabbing out of the window,\n // for example, since a subsequent focus event won't be fired.\n hasEventBeforeFocus = false;\n}\n\nfunction isFocusVisible(): boolean {\n return currentModality !== \"pointer\";\n}\n\nfunction setupGlobalFocusEvents() {\n if (typeof window === \"undefined\" || hasSetupGlobalListeners) {\n return;\n }\n\n // Programmatic focus() calls shouldn't affect the current input modality.\n // However, we need to detect other cases when a focus event occurs without\n // a preceding user event (e.g. screen reader focus). Overriding the focus\n // method on HTMLElement.prototype is a bit hacky, but works.\n // $FlowExpectedError[method-unbinding]\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const { focus } = HTMLElement.prototype;\n // $FlowIssue[cannot-write]\n HTMLElement.prototype.focus = function focusElement(...args) {\n hasEventBeforeFocus = true;\n focus.apply(this, args);\n };\n\n document.addEventListener(\"keydown\", handleKeyboardEvent, true);\n document.addEventListener(\"keyup\", handleKeyboardEvent, true);\n\n // Register focus events on the window so they are sure to happen\n // before React's event listeners (registered on the document).\n window.addEventListener(\"focus\", handleFocusEvent, true);\n window.addEventListener(\"blur\", handleWindowBlur, false);\n\n if (typeof PointerEvent !== \"undefined\") {\n document.addEventListener(\"pointerdown\", handlePointerEvent, true);\n document.addEventListener(\"pointermove\", handlePointerEvent, true);\n document.addEventListener(\"pointerup\", handlePointerEvent, true);\n } else {\n document.addEventListener(\"mousedown\", handlePointerEvent, true);\n document.addEventListener(\"mousemove\", handlePointerEvent, true);\n document.addEventListener(\"mouseup\", handlePointerEvent, true);\n }\n\n hasSetupGlobalListeners = true;\n}\n\nexport default function useFocusVisible(): {\n isFocusVisible: boolean;\n} {\n setupGlobalFocusEvents();\n const [isFocusVisibleState, setFocusVisible] = useState(isFocusVisible());\n useEffect(() => {\n const handler = () => {\n setFocusVisible(isFocusVisible());\n };\n\n changeHandlers.add(handler);\n return () => {\n changeHandlers.delete(handler);\n };\n }, []);\n\n return { isFocusVisible: isFocusVisibleState };\n}\n"],"mappings":";;;AAIA,SAAS,UAAU,iBAAiB;AAMpC,IAAI,0BAA0B;AAC9B,IAAI,kBAAmC;AACvC,IAAM,iBAAiB,oBAAI,IAAa;AACxC,IAAI,sBAAsB;AAE1B,IAAM;AAAA;AAAA,EAEJ,OAAO,WAAW,eAAe,OAAO,aAAa;AAAA;AAAA,IAEjD,OAAO,KAAK,OAAO,UAAU,QAAQ;AAAA,MACrC;AAAA;AAEN,SAAS,WAAW,GAAkB;AACpC,SAAO,EAAE,EAAE,WAAY,CAAC,SAAS,EAAE,UAAW,EAAE;AAClD;AAEA,SAAS,sBAAsB,UAAoB,GAAiB;AAClE,iBAAe,QAAQ,CAAC,YAAY;AAClC,YAAQ,UAAU,CAAC;AAAA,EACrB,CAAC;AACH;AAEA,SAAS,oBAAoB,GAAkB;AAC7C,wBAAsB;AACtB,MAAI,WAAW,CAAC,GAAG;AACjB,sBAAkB;AAClB,0BAAsB,YAAY,CAAC;AAAA,EACrC;AACF;AAEA,SAAS,mBAAmB,GAA8B;AACxD,oBAAkB;AAClB,MAAI,EAAE,SAAS,eAAe,EAAE,SAAS,eAAe;AACtD,0BAAsB;AACtB,0BAAsB,WAAW,CAAC;AAAA,EACpC;AACF;AAEA,SAAS,iBAAiB,GAAe;AAIvC,MAAI,EAAE,WAAW,UAAU,EAAE,WAAW,UAAU;AAChD;AAAA,EACF;AAIA,MAAI,CAAC,qBAAqB;AACxB,sBAAkB;AAClB,0BAAsB,YAAY,CAAC;AAAA,EACrC;AAEA,wBAAsB;AACxB;AAEA,SAAS,mBAAmB;AAG1B,wBAAsB;AACxB;AAEA,SAAS,iBAA0B;AACjC,SAAO,oBAAoB;AAC7B;AAEA,SAAS,yBAAyB;AAChC,MAAI,OAAO,WAAW,eAAe,yBAAyB;AAC5D;AAAA,EACF;AAQA,QAAM,EAAE,MAAM,IAAI,YAAY;AAE9B,cAAY,UAAU,QAAQ,SAAS,gBAAgB,MAAM;AAC3D,0BAAsB;AACtB,UAAM,MAAM,MAAM,IAAI;AAAA,EACxB;AAEA,WAAS,iBAAiB,WAAW,qBAAqB,IAAI;AAC9D,WAAS,iBAAiB,SAAS,qBAAqB,IAAI;AAI5D,SAAO,iBAAiB,SAAS,kBAAkB,IAAI;AACvD,SAAO,iBAAiB,QAAQ,kBAAkB,KAAK;AAEvD,MAAI,OAAO,iBAAiB,aAAa;AACvC,aAAS,iBAAiB,eAAe,oBAAoB,IAAI;AACjE,aAAS,iBAAiB,eAAe,oBAAoB,IAAI;AACjE,aAAS,iBAAiB,aAAa,oBAAoB,IAAI;AAAA,EACjE,OAAO;AACL,aAAS,iBAAiB,aAAa,oBAAoB,IAAI;AAC/D,aAAS,iBAAiB,aAAa,oBAAoB,IAAI;AAC/D,aAAS,iBAAiB,WAAW,oBAAoB,IAAI;AAAA,EAC/D;AAEA,4BAA0B;AAC5B;AAEe,SAAR,kBAEL;AACA,yBAAuB;AACvB,QAAM,CAAC,qBAAqB,eAAe,IAAI,SAAS,eAAe,CAAC;AACxE,YAAU,MAAM;AACd,UAAM,UAAU,MAAM;AACpB,sBAAgB,eAAe,CAAC;AAAA,IAClC;AAEA,mBAAe,IAAI,OAAO;AAC1B,WAAO,MAAM;AACX,qBAAe,OAAO,OAAO;AAAA,IAC/B;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO,EAAE,gBAAgB,oBAAoB;AAC/C;","names":[]}