@novie/ui 0.1.13 → 0.1.15

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 (318) hide show
  1. package/dist/components/layout/data-table.d.ts +7 -0
  2. package/dist/components/layout/data-table.d.ts.map +1 -0
  3. package/dist/components/layout/navigation-bar.d.ts +6 -0
  4. package/dist/components/layout/navigation-bar.d.ts.map +1 -0
  5. package/dist/components/layout/sidebar.d.ts +27 -0
  6. package/dist/components/layout/sidebar.d.ts.map +1 -0
  7. package/dist/components/ui/accordion.d.ts +12 -0
  8. package/dist/components/ui/accordion.d.ts.map +1 -0
  9. package/dist/components/ui/alert-dialog.d.ts +15 -0
  10. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  11. package/dist/components/ui/breadcrumb.d.ts +14 -0
  12. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  13. package/dist/components/ui/calendar.d.ts +11 -0
  14. package/dist/components/ui/calendar.d.ts.map +1 -0
  15. package/dist/components/ui/context-menu.d.ts +24 -0
  16. package/dist/components/ui/context-menu.d.ts.map +1 -0
  17. package/dist/components/ui/dropdown-menu.d.ts +25 -0
  18. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  19. package/dist/components/ui/icons/IconAccessKey.d.ts +3 -0
  20. package/dist/components/ui/icons/IconAccessKey.d.ts.map +1 -0
  21. package/dist/components/ui/icons/IconActiveInactive.d.ts +3 -0
  22. package/dist/components/ui/icons/IconActiveInactive.d.ts.map +1 -0
  23. package/dist/components/ui/icons/IconAddPlus.d.ts +3 -0
  24. package/dist/components/ui/icons/IconAddPlus.d.ts.map +1 -0
  25. package/dist/components/ui/icons/IconAnalytics.d.ts +3 -0
  26. package/dist/components/ui/icons/IconAnalytics.d.ts.map +1 -0
  27. package/dist/components/ui/icons/IconArchive.d.ts +3 -0
  28. package/dist/components/ui/icons/IconArchive.d.ts.map +1 -0
  29. package/dist/components/ui/icons/IconArrowDown.d.ts +3 -0
  30. package/dist/components/ui/icons/IconArrowDown.d.ts.map +1 -0
  31. package/dist/components/ui/icons/IconArrowLeft.d.ts +3 -0
  32. package/dist/components/ui/icons/IconArrowLeft.d.ts.map +1 -0
  33. package/dist/components/ui/icons/IconArrowRight.d.ts +3 -0
  34. package/dist/components/ui/icons/IconArrowRight.d.ts.map +1 -0
  35. package/dist/components/ui/icons/IconArrowUp.d.ts +3 -0
  36. package/dist/components/ui/icons/IconArrowUp.d.ts.map +1 -0
  37. package/dist/components/ui/icons/IconAttachment.d.ts +3 -0
  38. package/dist/components/ui/icons/IconAttachment.d.ts.map +1 -0
  39. package/dist/components/ui/icons/IconAvatar.d.ts +3 -0
  40. package/dist/components/ui/icons/IconAvatar.d.ts.map +1 -0
  41. package/dist/components/ui/icons/IconBilling.d.ts +3 -0
  42. package/dist/components/ui/icons/IconBilling.d.ts.map +1 -0
  43. package/dist/components/ui/icons/IconBookmark.d.ts +3 -0
  44. package/dist/components/ui/icons/IconBookmark.d.ts.map +1 -0
  45. package/dist/components/ui/icons/IconBot.d.ts +3 -0
  46. package/dist/components/ui/icons/IconBot.d.ts.map +1 -0
  47. package/dist/components/ui/icons/IconBrain.d.ts +3 -0
  48. package/dist/components/ui/icons/IconBrain.d.ts.map +1 -0
  49. package/dist/components/ui/icons/IconCalendar.d.ts +3 -0
  50. package/dist/components/ui/icons/IconCalendar.d.ts.map +1 -0
  51. package/dist/components/ui/icons/IconCancelClose.d.ts +3 -0
  52. package/dist/components/ui/icons/IconCancelClose.d.ts.map +1 -0
  53. package/dist/components/ui/icons/IconChartAnalytics.d.ts +3 -0
  54. package/dist/components/ui/icons/IconChartAnalytics.d.ts.map +1 -0
  55. package/dist/components/ui/icons/IconChevronDown.d.ts +3 -0
  56. package/dist/components/ui/icons/IconChevronDown.d.ts.map +1 -0
  57. package/dist/components/ui/icons/IconChevronLeft.d.ts +3 -0
  58. package/dist/components/ui/icons/IconChevronLeft.d.ts.map +1 -0
  59. package/dist/components/ui/icons/IconChevronRight.d.ts +3 -0
  60. package/dist/components/ui/icons/IconChevronRight.d.ts.map +1 -0
  61. package/dist/components/ui/icons/IconChevronUp.d.ts +3 -0
  62. package/dist/components/ui/icons/IconChevronUp.d.ts.map +1 -0
  63. package/dist/components/ui/icons/IconCodeView.d.ts +3 -0
  64. package/dist/components/ui/icons/IconCodeView.d.ts.map +1 -0
  65. package/dist/components/ui/icons/IconComment.d.ts +3 -0
  66. package/dist/components/ui/icons/IconComment.d.ts.map +1 -0
  67. package/dist/components/ui/icons/IconCompleted.d.ts +3 -0
  68. package/dist/components/ui/icons/IconCompleted.d.ts.map +1 -0
  69. package/dist/components/ui/icons/IconConfirmCheck.d.ts +3 -0
  70. package/dist/components/ui/icons/IconConfirmCheck.d.ts.map +1 -0
  71. package/dist/components/ui/icons/IconConnectors.d.ts +3 -0
  72. package/dist/components/ui/icons/IconConnectors.d.ts.map +1 -0
  73. package/dist/components/ui/icons/IconCopy.d.ts +3 -0
  74. package/dist/components/ui/icons/IconCopy.d.ts.map +1 -0
  75. package/dist/components/ui/icons/IconCreate.d.ts +3 -0
  76. package/dist/components/ui/icons/IconCreate.d.ts.map +1 -0
  77. package/dist/components/ui/icons/IconCreate2.d.ts +3 -0
  78. package/dist/components/ui/icons/IconCreate2.d.ts.map +1 -0
  79. package/dist/components/ui/icons/IconCreditCard.d.ts +3 -0
  80. package/dist/components/ui/icons/IconCreditCard.d.ts.map +1 -0
  81. package/dist/components/ui/icons/IconDashboard.d.ts +3 -0
  82. package/dist/components/ui/icons/IconDashboard.d.ts.map +1 -0
  83. package/dist/components/ui/icons/IconDatabase.d.ts +3 -0
  84. package/dist/components/ui/icons/IconDatabase.d.ts.map +1 -0
  85. package/dist/components/ui/icons/IconDeleteTrash.d.ts +3 -0
  86. package/dist/components/ui/icons/IconDeleteTrash.d.ts.map +1 -0
  87. package/dist/components/ui/icons/IconDisabled.d.ts +3 -0
  88. package/dist/components/ui/icons/IconDisabled.d.ts.map +1 -0
  89. package/dist/components/ui/icons/IconDiscover.d.ts +3 -0
  90. package/dist/components/ui/icons/IconDiscover.d.ts.map +1 -0
  91. package/dist/components/ui/icons/IconDocumentGeneral.d.ts +3 -0
  92. package/dist/components/ui/icons/IconDocumentGeneral.d.ts.map +1 -0
  93. package/dist/components/ui/icons/IconDownload.d.ts +3 -0
  94. package/dist/components/ui/icons/IconDownload.d.ts.map +1 -0
  95. package/dist/components/ui/icons/IconDuplicate.d.ts +3 -0
  96. package/dist/components/ui/icons/IconDuplicate.d.ts.map +1 -0
  97. package/dist/components/ui/icons/IconEditPencil.d.ts +3 -0
  98. package/dist/components/ui/icons/IconEditPencil.d.ts.map +1 -0
  99. package/dist/components/ui/icons/IconEmail.d.ts +3 -0
  100. package/dist/components/ui/icons/IconEmail.d.ts.map +1 -0
  101. package/dist/components/ui/icons/IconError.d.ts +3 -0
  102. package/dist/components/ui/icons/IconError.d.ts.map +1 -0
  103. package/dist/components/ui/icons/IconEvent.d.ts +3 -0
  104. package/dist/components/ui/icons/IconEvent.d.ts.map +1 -0
  105. package/dist/components/ui/icons/IconExpand.d.ts +3 -0
  106. package/dist/components/ui/icons/IconExpand.d.ts.map +1 -0
  107. package/dist/components/ui/icons/IconExternalLink.d.ts +3 -0
  108. package/dist/components/ui/icons/IconExternalLink.d.ts.map +1 -0
  109. package/dist/components/ui/icons/IconFailed.d.ts +3 -0
  110. package/dist/components/ui/icons/IconFailed.d.ts.map +1 -0
  111. package/dist/components/ui/icons/IconFaq.d.ts +3 -0
  112. package/dist/components/ui/icons/IconFaq.d.ts.map +1 -0
  113. package/dist/components/ui/icons/IconFastForward.d.ts +3 -0
  114. package/dist/components/ui/icons/IconFastForward.d.ts.map +1 -0
  115. package/dist/components/ui/icons/IconFile.d.ts +3 -0
  116. package/dist/components/ui/icons/IconFile.d.ts.map +1 -0
  117. package/dist/components/ui/icons/IconFilter.d.ts +3 -0
  118. package/dist/components/ui/icons/IconFilter.d.ts.map +1 -0
  119. package/dist/components/ui/icons/IconFlag.d.ts +3 -0
  120. package/dist/components/ui/icons/IconFlag.d.ts.map +1 -0
  121. package/dist/components/ui/icons/IconFlowline.d.ts +3 -0
  122. package/dist/components/ui/icons/IconFlowline.d.ts.map +1 -0
  123. package/dist/components/ui/icons/IconFolder.d.ts +3 -0
  124. package/dist/components/ui/icons/IconFolder.d.ts.map +1 -0
  125. package/dist/components/ui/icons/IconFullScreen.d.ts +3 -0
  126. package/dist/components/ui/icons/IconFullScreen.d.ts.map +1 -0
  127. package/dist/components/ui/icons/IconGridView.d.ts +3 -0
  128. package/dist/components/ui/icons/IconGridView.d.ts.map +1 -0
  129. package/dist/components/ui/icons/IconHelp.d.ts +3 -0
  130. package/dist/components/ui/icons/IconHelp.d.ts.map +1 -0
  131. package/dist/components/ui/icons/IconHistory.d.ts +3 -0
  132. package/dist/components/ui/icons/IconHistory.d.ts.map +1 -0
  133. package/dist/components/ui/icons/IconImage.d.ts +3 -0
  134. package/dist/components/ui/icons/IconImage.d.ts.map +1 -0
  135. package/dist/components/ui/icons/IconInfoCircle.d.ts +3 -0
  136. package/dist/components/ui/icons/IconInfoCircle.d.ts.map +1 -0
  137. package/dist/components/ui/icons/IconInvite.d.ts +3 -0
  138. package/dist/components/ui/icons/IconInvite.d.ts.map +1 -0
  139. package/dist/components/ui/icons/IconInvoice.d.ts +3 -0
  140. package/dist/components/ui/icons/IconInvoice.d.ts.map +1 -0
  141. package/dist/components/ui/icons/IconLabel.d.ts +3 -0
  142. package/dist/components/ui/icons/IconLabel.d.ts.map +1 -0
  143. package/dist/components/ui/icons/IconLanguageGlobe.d.ts +3 -0
  144. package/dist/components/ui/icons/IconLanguageGlobe.d.ts.map +1 -0
  145. package/dist/components/ui/icons/IconLayers.d.ts +3 -0
  146. package/dist/components/ui/icons/IconLayers.d.ts.map +1 -0
  147. package/dist/components/ui/icons/IconLearn.d.ts +3 -0
  148. package/dist/components/ui/icons/IconLearn.d.ts.map +1 -0
  149. package/dist/components/ui/icons/IconLink.d.ts +3 -0
  150. package/dist/components/ui/icons/IconLink.d.ts.map +1 -0
  151. package/dist/components/ui/icons/IconListView.d.ts +3 -0
  152. package/dist/components/ui/icons/IconListView.d.ts.map +1 -0
  153. package/dist/components/ui/icons/IconLoading.d.ts +3 -0
  154. package/dist/components/ui/icons/IconLoading.d.ts.map +1 -0
  155. package/dist/components/ui/icons/IconLock.d.ts +3 -0
  156. package/dist/components/ui/icons/IconLock.d.ts.map +1 -0
  157. package/dist/components/ui/icons/IconLogOut.d.ts +3 -0
  158. package/dist/components/ui/icons/IconLogOut.d.ts.map +1 -0
  159. package/dist/components/ui/icons/IconLoginAccount.d.ts +3 -0
  160. package/dist/components/ui/icons/IconLoginAccount.d.ts.map +1 -0
  161. package/dist/components/ui/icons/IconMars.d.ts +3 -0
  162. package/dist/components/ui/icons/IconMars.d.ts.map +1 -0
  163. package/dist/components/ui/icons/IconMention.d.ts +3 -0
  164. package/dist/components/ui/icons/IconMention.d.ts.map +1 -0
  165. package/dist/components/ui/icons/IconMessageInbox.d.ts +3 -0
  166. package/dist/components/ui/icons/IconMessageInbox.d.ts.map +1 -0
  167. package/dist/components/ui/icons/IconMinimiseScreen.d.ts +3 -0
  168. package/dist/components/ui/icons/IconMinimiseScreen.d.ts.map +1 -0
  169. package/dist/components/ui/icons/IconMoreKebabHorizontal.d.ts +3 -0
  170. package/dist/components/ui/icons/IconMoreKebabHorizontal.d.ts.map +1 -0
  171. package/dist/components/ui/icons/IconMoreKebabVertical.d.ts +3 -0
  172. package/dist/components/ui/icons/IconMoreKebabVertical.d.ts.map +1 -0
  173. package/dist/components/ui/icons/IconNewProject.d.ts +3 -0
  174. package/dist/components/ui/icons/IconNewProject.d.ts.map +1 -0
  175. package/dist/components/ui/icons/IconNotification.d.ts +3 -0
  176. package/dist/components/ui/icons/IconNotification.d.ts.map +1 -0
  177. package/dist/components/ui/icons/IconNotificationBadge.d.ts +3 -0
  178. package/dist/components/ui/icons/IconNotificationBadge.d.ts.map +1 -0
  179. package/dist/components/ui/icons/IconOnlineOffline.d.ts +3 -0
  180. package/dist/components/ui/icons/IconOnlineOffline.d.ts.map +1 -0
  181. package/dist/components/ui/icons/IconPaste.d.ts +3 -0
  182. package/dist/components/ui/icons/IconPaste.d.ts.map +1 -0
  183. package/dist/components/ui/icons/IconPause.d.ts +3 -0
  184. package/dist/components/ui/icons/IconPause.d.ts.map +1 -0
  185. package/dist/components/ui/icons/IconPayment.d.ts +3 -0
  186. package/dist/components/ui/icons/IconPayment.d.ts.map +1 -0
  187. package/dist/components/ui/icons/IconPdfFile.d.ts +3 -0
  188. package/dist/components/ui/icons/IconPdfFile.d.ts.map +1 -0
  189. package/dist/components/ui/icons/IconPending.d.ts +3 -0
  190. package/dist/components/ui/icons/IconPending.d.ts.map +1 -0
  191. package/dist/components/ui/icons/IconPlay.d.ts +3 -0
  192. package/dist/components/ui/icons/IconPlay.d.ts.map +1 -0
  193. package/dist/components/ui/icons/IconPreferences.d.ts +3 -0
  194. package/dist/components/ui/icons/IconPreferences.d.ts.map +1 -0
  195. package/dist/components/ui/icons/IconPreview.d.ts +3 -0
  196. package/dist/components/ui/icons/IconPreview.d.ts.map +1 -0
  197. package/dist/components/ui/icons/IconProcessing.d.ts +3 -0
  198. package/dist/components/ui/icons/IconProcessing.d.ts.map +1 -0
  199. package/dist/components/ui/icons/IconProfile.d.ts +3 -0
  200. package/dist/components/ui/icons/IconProfile.d.ts.map +1 -0
  201. package/dist/components/ui/icons/IconReceipt.d.ts +3 -0
  202. package/dist/components/ui/icons/IconReceipt.d.ts.map +1 -0
  203. package/dist/components/ui/icons/IconRecent.d.ts +3 -0
  204. package/dist/components/ui/icons/IconRecent.d.ts.map +1 -0
  205. package/dist/components/ui/icons/IconRecord.d.ts +3 -0
  206. package/dist/components/ui/icons/IconRecord.d.ts.map +1 -0
  207. package/dist/components/ui/icons/IconRefreshReload.d.ts +3 -0
  208. package/dist/components/ui/icons/IconRefreshReload.d.ts.map +1 -0
  209. package/dist/components/ui/icons/IconReminder.d.ts +3 -0
  210. package/dist/components/ui/icons/IconReminder.d.ts.map +1 -0
  211. package/dist/components/ui/icons/IconRemoveMinus.d.ts +3 -0
  212. package/dist/components/ui/icons/IconRemoveMinus.d.ts.map +1 -0
  213. package/dist/components/ui/icons/IconRepoConfiguration.d.ts +3 -0
  214. package/dist/components/ui/icons/IconRepoConfiguration.d.ts.map +1 -0
  215. package/dist/components/ui/icons/IconRepoConfiguration2.d.ts +3 -0
  216. package/dist/components/ui/icons/IconRepoConfiguration2.d.ts.map +1 -0
  217. package/dist/components/ui/icons/IconReport.d.ts +3 -0
  218. package/dist/components/ui/icons/IconReport.d.ts.map +1 -0
  219. package/dist/components/ui/icons/IconRewind.d.ts +3 -0
  220. package/dist/components/ui/icons/IconRewind.d.ts.map +1 -0
  221. package/dist/components/ui/icons/IconRoleBadge.d.ts +3 -0
  222. package/dist/components/ui/icons/IconRoleBadge.d.ts.map +1 -0
  223. package/dist/components/ui/icons/IconSave.d.ts +3 -0
  224. package/dist/components/ui/icons/IconSave.d.ts.map +1 -0
  225. package/dist/components/ui/icons/IconSearch.d.ts +3 -0
  226. package/dist/components/ui/icons/IconSearch.d.ts.map +1 -0
  227. package/dist/components/ui/icons/IconSend.d.ts +3 -0
  228. package/dist/components/ui/icons/IconSend.d.ts.map +1 -0
  229. package/dist/components/ui/icons/IconSendMessage.d.ts +3 -0
  230. package/dist/components/ui/icons/IconSendMessage.d.ts.map +1 -0
  231. package/dist/components/ui/icons/IconSettings.d.ts +3 -0
  232. package/dist/components/ui/icons/IconSettings.d.ts.map +1 -0
  233. package/dist/components/ui/icons/IconShare.d.ts +3 -0
  234. package/dist/components/ui/icons/IconShare.d.ts.map +1 -0
  235. package/dist/components/ui/icons/IconShield.d.ts +3 -0
  236. package/dist/components/ui/icons/IconShield.d.ts.map +1 -0
  237. package/dist/components/ui/icons/IconSort.d.ts +3 -0
  238. package/dist/components/ui/icons/IconSort.d.ts.map +1 -0
  239. package/dist/components/ui/icons/IconSourceLibrary.d.ts +3 -0
  240. package/dist/components/ui/icons/IconSourceLibrary.d.ts.map +1 -0
  241. package/dist/components/ui/icons/IconSparkle.d.ts +3 -0
  242. package/dist/components/ui/icons/IconSparkle.d.ts.map +1 -0
  243. package/dist/components/ui/icons/IconSpeaker.d.ts +3 -0
  244. package/dist/components/ui/icons/IconSpeaker.d.ts.map +1 -0
  245. package/dist/components/ui/icons/IconStar.d.ts +3 -0
  246. package/dist/components/ui/icons/IconStar.d.ts.map +1 -0
  247. package/dist/components/ui/icons/IconStop.d.ts +3 -0
  248. package/dist/components/ui/icons/IconStop.d.ts.map +1 -0
  249. package/dist/components/ui/icons/IconStructure.d.ts +3 -0
  250. package/dist/components/ui/icons/IconStructure.d.ts.map +1 -0
  251. package/dist/components/ui/icons/IconSuccess.d.ts +3 -0
  252. package/dist/components/ui/icons/IconSuccess.d.ts.map +1 -0
  253. package/dist/components/ui/icons/IconSupport.d.ts +3 -0
  254. package/dist/components/ui/icons/IconSupport.d.ts.map +1 -0
  255. package/dist/components/ui/icons/IconSync.d.ts +3 -0
  256. package/dist/components/ui/icons/IconSync.d.ts.map +1 -0
  257. package/dist/components/ui/icons/IconTable.d.ts +3 -0
  258. package/dist/components/ui/icons/IconTable.d.ts.map +1 -0
  259. package/dist/components/ui/icons/IconTeam.d.ts +3 -0
  260. package/dist/components/ui/icons/IconTeam.d.ts.map +1 -0
  261. package/dist/components/ui/icons/IconTemplate.d.ts +3 -0
  262. package/dist/components/ui/icons/IconTemplate.d.ts.map +1 -0
  263. package/dist/components/ui/icons/IconTimeline.d.ts +3 -0
  264. package/dist/components/ui/icons/IconTimeline.d.ts.map +1 -0
  265. package/dist/components/ui/icons/IconToggleOff.d.ts +3 -0
  266. package/dist/components/ui/icons/IconToggleOff.d.ts.map +1 -0
  267. package/dist/components/ui/icons/IconToggleOn.d.ts +3 -0
  268. package/dist/components/ui/icons/IconToggleOn.d.ts.map +1 -0
  269. package/dist/components/ui/icons/IconUnlock.d.ts +3 -0
  270. package/dist/components/ui/icons/IconUnlock.d.ts.map +1 -0
  271. package/dist/components/ui/icons/IconUpload.d.ts +3 -0
  272. package/dist/components/ui/icons/IconUpload.d.ts.map +1 -0
  273. package/dist/components/ui/icons/IconUserAdd.d.ts +3 -0
  274. package/dist/components/ui/icons/IconUserAdd.d.ts.map +1 -0
  275. package/dist/components/ui/icons/IconUserRemove.d.ts +3 -0
  276. package/dist/components/ui/icons/IconUserRemove.d.ts.map +1 -0
  277. package/dist/components/ui/icons/IconVideo.d.ts +3 -0
  278. package/dist/components/ui/icons/IconVideo.d.ts.map +1 -0
  279. package/dist/components/ui/icons/IconVolumeOffMute.d.ts +3 -0
  280. package/dist/components/ui/icons/IconVolumeOffMute.d.ts.map +1 -0
  281. package/dist/components/ui/icons/IconVolumeUp.d.ts +3 -0
  282. package/dist/components/ui/icons/IconVolumeUp.d.ts.map +1 -0
  283. package/dist/components/ui/icons/IconWallet.d.ts +3 -0
  284. package/dist/components/ui/icons/IconWallet.d.ts.map +1 -0
  285. package/dist/components/ui/icons/IconWand.d.ts +3 -0
  286. package/dist/components/ui/icons/IconWand.d.ts.map +1 -0
  287. package/dist/components/ui/icons/IconWebPageFile.d.ts +3 -0
  288. package/dist/components/ui/icons/IconWebPageFile.d.ts.map +1 -0
  289. package/dist/components/ui/icons/IconWindowCollapse.d.ts +3 -0
  290. package/dist/components/ui/icons/IconWindowCollapse.d.ts.map +1 -0
  291. package/dist/components/ui/icons/IconWindowExpand.d.ts +3 -0
  292. package/dist/components/ui/icons/IconWindowExpand.d.ts.map +1 -0
  293. package/dist/components/ui/icons/IconWorkflow.d.ts +3 -0
  294. package/dist/components/ui/icons/IconWorkflow.d.ts.map +1 -0
  295. package/dist/components/ui/icons/IconWriting.d.ts +3 -0
  296. package/dist/components/ui/icons/IconWriting.d.ts.map +1 -0
  297. package/dist/components/ui/icons/index.d.ts +140 -0
  298. package/dist/components/ui/icons/index.d.ts.map +1 -0
  299. package/dist/components/ui/notification.d.ts +14 -0
  300. package/dist/components/ui/notification.d.ts.map +1 -0
  301. package/dist/components/ui/select.d.ts +14 -0
  302. package/dist/components/ui/select.d.ts.map +1 -0
  303. package/dist/components/ui/skeleton.d.ts +3 -0
  304. package/dist/components/ui/skeleton.d.ts.map +1 -0
  305. package/dist/components/ui/table.d.ts +9 -1
  306. package/dist/components/ui/table.d.ts.map +1 -1
  307. package/dist/components/ui/tabs.d.ts +12 -0
  308. package/dist/components/ui/tabs.d.ts.map +1 -0
  309. package/dist/index.css +1 -1
  310. package/dist/index.d.ts +2 -0
  311. package/dist/index.d.ts.map +1 -1
  312. package/dist/index.js +3420 -748
  313. package/dist/index.js.map +1 -1
  314. package/dist/lib/utils.d.ts.map +1 -1
  315. package/package.json +3 -1
  316. package/src/index.css +13 -9
  317. package/tailwind.config.ts +2 -169
  318. package/tailwind.preset.ts +190 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","React","React","React","React","useId","React","React","useLayoutEffect","React","React","ITEM_NAME","useId","Root","React","React","React","React2","React","createContextScope2","RadioGroup","React2","RovingFocusGroup.Root","Primitive2","RadioGroupItem","useComposedRefs2","RovingFocusGroup.Item","composeEventHandlers2","Root2","React","computePosition","arrow","flip","hide","offset","shift","limitShift","size","getComputedStyle","offset","offset$1","shift","shift$1","flip","flip$1","size","size$1","hide","hide$1","arrow","arrow$1","limitShift","limitShift$1","React","NAME","Arrow","React","Root","React","CONTENT_NAME","arrow","floatingUIarrow","ARROW_NAME","ArrowPrimitive.Root","PORTAL_NAME","Portal","React","React","TooltipProvider","React","Tooltip","useId","PopperPrimitive.Root","TooltipTrigger","PopperPrimitive.Anchor","PortalPrimitive","TooltipContent","PopperPrimitive.Content","VisuallyHiddenPrimitive.Root","PopperPrimitive.Arrow"],"sources":["../src/lib/utils.ts","../src/components/ui/novie-logo.tsx","../src/components/ui/novie-symbol.tsx","../src/components/ui/button.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/switch.tsx","../node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-collection/dist/index.mjs","../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/@radix-ui/react-direction/dist/index.mjs","../node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/@radix-ui/react-use-previous/dist/index.mjs","../node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/@radix-ui/react-radio-group/dist/index.mjs","../src/components/ui/radio-group.tsx","../src/components/ui/separator.tsx","../src/components/ui/badge.tsx","../src/components/ui/tag.tsx","../src/components/ui/avatar.tsx","../src/components/ui/icon-button.tsx","../src/components/ui/progress.tsx","../src/components/ui/input-field.tsx","../src/components/ui/search-input.tsx","../src/components/ui/stepper.tsx","../src/components/ui/card.tsx","../src/components/ui/table.tsx","../src/components/ui/dialog.tsx","../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@radix-ui/react-arrow/dist/index.mjs","../node_modules/@radix-ui/react-popper/dist/index.mjs","../node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../node_modules/@radix-ui/react-tooltip/dist/index.mjs","../src/components/ui/tooltip.tsx","../src/components/ui/alert.tsx","../src/components/ui/toast.tsx"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst logoVariants = cva(\"inline-flex shrink-0\", {\n variants: {\n size: {\n sm: \"h-4\",\n md: \"h-6\",\n lg: \"h-8\",\n xl: \"h-12\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\n/** Merged single-SVG logo (flower is smaller, embedded top-left of text) */\nfunction PrimaryLogo(props: React.ComponentProps<\"svg\">) {\n return (\n <svg viewBox=\"0 0 152 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M29.6559 10.4545C29.4679 9.91519 29.1836 9.41218 28.8213 8.96808C27.8997 7.84424 26.5241 7.17809 25.0568 7.15543C24.1443 7.15543 22.92 7.57234 20.8795 8.26568L19.8891 8.60102V7.48624C19.8891 5.35638 19.8891 4.07846 19.5911 3.22198C19.0913 1.8625 18.0045 0.793034 16.6289 0.294556C16.0879 0.0996957 15.5147 0 14.9369 0C14.3592 0 13.786 0.0996957 13.245 0.294556C11.8694 0.788503 10.7872 1.8625 10.2828 3.22198C9.98478 4.07393 9.98478 5.35185 9.98478 7.48624V8.59649L8.97142 8.27021C6.92178 7.61313 5.68832 7.21888 4.77584 7.23247C3.31312 7.28232 1.94669 7.97113 1.04338 9.1131C0.685726 9.56173 0.415191 10.0693 0.236363 10.6131C0.0667062 11.1523 -0.0158298 11.7233 0.00251152 12.2943C0.0529502 13.7399 0.749921 15.0903 1.90542 15.983C2.63449 16.5268 3.86336 16.9211 5.91301 17.5827L6.88051 17.8909L6.28442 18.702C5.01887 20.424 4.2577 21.4618 3.99175 22.3228C3.58824 23.714 3.82668 25.2094 4.64745 26.4103C4.96843 26.8816 5.37652 27.2985 5.84422 27.6338C6.31193 27.9692 6.83466 28.223 7.38948 28.3816C8.79718 28.7803 10.3103 28.5447 11.5255 27.7335C12.2729 27.2169 13.034 26.1837 14.3042 24.4572L15.0057 23.5055L15.7073 24.4572C16.9728 26.1792 17.734 27.2169 18.486 27.7335C19.7011 28.5447 21.2143 28.7803 22.622 28.3816C23.1768 28.223 23.6995 27.9737 24.1672 27.6338C24.6349 27.2985 25.0384 26.8861 25.364 26.4103C26.1848 25.2094 26.4232 23.714 26.0197 22.3228C25.7537 21.4618 24.9926 20.424 23.727 18.702L23.1126 17.8637L24.1259 17.5193C26.1664 16.8259 27.3861 16.409 28.106 15.8516C29.2432 14.9408 29.9172 13.5813 29.9401 12.1312C29.9493 11.5602 29.8576 10.9937 29.6696 10.4545H29.6559Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M33.4573 46.6382L33.6526 17.2696L40.3887 17.3147L51.8805 35.603H52.0258L51.9123 30.6173L51.9986 17.3868L58.3032 17.4274L58.1079 46.796L52.1757 46.7554L39.9027 27.7233H39.7392L39.8709 32.6864L39.7755 46.6743L33.4527 46.6337L33.4573 46.6382Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M73.1744 47.621C69.7723 47.5984 66.9833 46.521 64.8031 44.3888C62.6274 42.2566 61.5509 39.5564 61.569 36.2882C61.5917 32.993 62.7091 30.3018 64.9212 28.2101C67.1332 26.1185 69.9312 25.0862 73.3243 25.1087C76.7128 25.1313 79.5017 26.2041 81.682 28.3319C83.8668 30.4596 84.9478 33.1643 84.9251 36.446C84.9024 39.7142 83.7941 42.4009 81.5956 44.506C79.3972 46.6112 76.5901 47.6525 73.1744 47.63V47.621Z M73.2062 42.2476C74.7369 42.2566 76.0178 41.7112 77.0489 40.6112C78.0845 39.5113 78.6069 38.1049 78.616 36.3964C78.6296 34.6609 78.1209 33.2409 77.0943 32.141C76.0678 31.0411 74.7959 30.4866 73.2834 30.4731C71.7527 30.4641 70.4672 31.0005 69.4271 32.0869C68.3869 33.1733 67.86 34.5842 67.8464 36.3243C67.8373 38.0328 68.3369 39.4437 69.3589 40.5617C70.3764 41.6751 71.6573 42.2386 73.2016 42.2476H73.2062Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M93.637 47.0349L85.2839 25.8931L91.8974 25.9382L96.3987 38.6458L96.9847 40.5797H97.13L97.7841 38.6368L102.417 26.0103L108.908 26.0509L100.064 47.08L93.637 47.0394V47.0349Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M113.968 22.7827C112.946 22.7782 112.088 22.4266 111.393 21.7324C110.693 21.0381 110.348 20.1862 110.357 19.1719C110.366 18.1441 110.72 17.3011 111.429 16.634C112.137 15.9668 113 15.6377 114.018 15.6468C115.063 15.6558 115.93 15.9939 116.616 16.67C117.302 17.3462 117.638 18.1937 117.634 19.2215C117.629 20.2357 117.275 21.0832 116.584 21.7684C115.889 22.4536 115.022 22.7962 113.973 22.7872L113.968 22.7827Z M110.561 47.1476L110.702 26.0644L117.17 26.105L117.029 47.1882L110.561 47.1476Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M131.242 47.9996C127.854 47.9771 125.142 46.8997 123.111 44.7675C121.081 42.6353 120.073 39.9351 120.095 36.6669C120.118 33.4122 121.167 30.73 123.248 28.6158C125.328 26.5017 128.017 25.4604 131.31 25.4784C134.394 25.4964 136.933 26.4746 138.927 28.4085C140.921 30.3424 141.907 32.8127 141.884 35.8239L141.871 38.0373L123.189 37.9155L123.211 34.715L135.943 34.8006C135.857 33.5159 135.398 32.4701 134.567 31.6632C133.74 30.8562 132.636 30.4505 131.26 30.4415C129.743 30.4325 128.53 30.9599 127.622 32.0283C126.713 33.0967 126.25 34.5797 126.237 36.482C126.223 38.5466 126.741 40.183 127.794 41.3866C128.848 42.5902 130.256 43.1987 132.019 43.2078C132.805 43.2123 133.504 43.1086 134.117 42.8922C134.73 42.6758 135.285 42.3918 135.775 42.0402C136.266 41.6886 136.838 41.1161 137.492 40.3272L141.253 43.2664C140.254 44.5601 139.286 45.5158 138.36 46.1379C137.433 46.76 136.42 47.2288 135.321 47.5443C134.222 47.8599 132.864 48.0086 131.237 47.9996H131.242Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M147.985 47.7427C146.867 47.7336 145.927 47.3505 145.159 46.5841C144.392 45.8178 144.015 44.8847 144.019 43.7758C144.028 42.6803 144.419 41.7607 145.196 41.0169C145.972 40.2686 146.917 39.899 148.035 39.908C149.152 39.917 150.092 40.3002 150.86 41.053C151.628 41.8103 152.005 42.7344 152 43.8298C151.991 44.9388 151.6 45.8674 150.824 46.6202C150.047 47.373 149.102 47.7472 147.985 47.7382V47.7427Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n\n/** Symbol + wordmark side-by-side, bottom-aligned (flower is large, same height as text) */\nfunction SecondaryLogo(props: React.ComponentProps<\"svg\">) {\n return (\n <svg viewBox=\"0 0 202.46 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n {/* Flower symbol — 49.613 wide, 48 tall */}\n <path\n d=\"M29.6559 10.4545C29.4679 9.91519 29.1836 9.41218 28.8213 8.96808C27.8997 7.84424 26.5241 7.17809 25.0568 7.15543C24.1443 7.15543 22.92 7.57234 20.8795 8.26568L19.8891 8.60102V7.48624C19.8891 5.35638 19.8891 4.07846 19.5911 3.22198C19.0913 1.8625 18.0045 0.793034 16.6289 0.294556C16.0879 0.0996957 15.5147 0 14.9369 0C14.3592 0 13.786 0.0996957 13.245 0.294556C11.8694 0.788503 10.7872 1.8625 10.2828 3.22198C9.98478 4.07393 9.98478 5.35185 9.98478 7.48624V8.59649L8.97142 8.27021C6.92178 7.61313 5.68832 7.21888 4.77584 7.23247C3.31312 7.28232 1.94669 7.97113 1.04338 9.1131C0.685726 9.56173 0.415191 10.0693 0.236363 10.6131C0.0667062 11.1523 -0.0158298 11.7233 0.00251152 12.2943C0.0529502 13.7399 0.749921 15.0903 1.90542 15.983C2.63449 16.5268 3.86336 16.9211 5.91301 17.5827L6.88051 17.8909L6.28442 18.702C5.01887 20.424 4.2577 21.4618 3.99175 22.3228C3.58824 23.714 3.82668 25.2094 4.64745 26.4103C4.96843 26.8816 5.37652 27.2985 5.84422 27.6338C6.31193 27.9692 6.83466 28.223 7.38948 28.3816C8.79718 28.7803 10.3103 28.5447 11.5255 27.7335C12.2729 27.2169 13.034 26.1837 14.3042 24.4572L15.0057 23.5055L15.7073 24.4572C16.9728 26.1792 17.734 27.2169 18.486 27.7335C19.7011 28.5447 21.2143 28.7803 22.622 28.3816C23.1768 28.223 23.6995 27.9737 24.1672 27.6338C24.6349 27.2985 25.0384 26.8861 25.364 26.4103C26.1848 25.2094 26.4232 23.714 26.0197 22.3228C25.7537 21.4618 24.9926 20.424 23.727 18.702L23.1126 17.8637L24.1259 17.5193C26.1664 16.8259 27.3861 16.409 28.106 15.8516C29.2432 14.9408 29.9172 13.5813 29.9401 12.1312C29.9493 11.5602 29.8576 10.9937 29.6696 10.4545H29.6559Z\"\n fill=\"currentColor\"\n transform=\"translate(0, 0.58) scale(1.658)\"\n />\n {/* \"Novie.\" wordmark — offset right by 59 (49.613 symbol + 9.386 gap), bottom-aligned */}\n <g transform=\"translate(59, 9.114)\">\n <path\n d=\"M3.46758e-08 38.0536V1.90886H8.27733L22.4116 24.0932H22.5621L22.4116 18.4903V1.90886H30.2611V38.0536H22.9666L7.84942 14.96H7.67224L7.84942 20.5362V38.0536H3.46758e-08Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M48.4571 38.8861C44.3352 38.8861 40.9353 37.5723 38.2609 34.948C35.5865 32.3237 34.2493 29.0175 34.2493 25.0292C34.2493 21.041 35.5865 17.6946 38.2609 15.0837C40.9353 12.4762 44.3352 11.1724 48.4571 11.1724C52.5791 11.1724 55.9823 12.4795 58.6667 15.0971C61.3512 17.7147 62.6917 21.0243 62.6917 25.0292C62.6917 29.0342 61.3579 32.3237 58.6901 34.948C56.0224 37.5723 52.6125 38.8861 48.4538 38.8861H48.4571Z M48.4839 32.1465C50.3359 32.1465 51.8871 31.4779 53.1407 30.1407C54.3944 28.8035 55.0195 27.0986 55.0195 25.0292C55.0195 22.9599 54.3877 21.2148 53.1273 19.8943C51.8637 18.5738 50.3159 17.9119 48.4839 17.9119C46.6519 17.9119 45.0539 18.5772 43.8003 19.9044C42.5467 21.2349 41.9215 22.9432 41.9215 25.0292C41.9215 27.1153 42.5433 28.8035 43.7903 30.1407C45.0339 31.4779 46.6018 32.1465 48.4839 32.1465Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M72.2829 38.0536L62.0098 12.0048L70.1366 12.0048L75.6627 27.5265L76.3446 29.9234H76.4951L77.254 27.5265L82.7566 12.0048L90.7564 12.0048L80.2058 38.0536H72.2795H72.2829Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M96.8173 8.8891C95.5704 8.8891 94.5173 8.45785 93.6481 7.58867C92.7823 6.72282 92.3477 5.66643 92.3477 4.41948C92.3477 3.17253 92.7823 2.10611 93.6481 1.26366C94.514 0.421221 95.5704 0 96.8173 0C98.0643 0 99.1808 0.421221 100.023 1.26366C100.866 2.10611 101.287 3.15582 101.287 4.41948C101.287 5.68314 100.866 6.71948 100.023 7.58867C99.1808 8.45451 98.1144 8.8891 96.8173 8.8891Z M92.8558 38.0537L92.8558 12.0048L100.806 12.0048L100.806 38.0537L92.8558 38.0537Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M118.169 38.8861C114.047 38.8861 110.718 37.5823 108.187 34.9747C105.653 32.3672 104.389 29.0509 104.389 25.0292C104.389 21.0076 105.663 17.7347 108.214 15.1105C110.764 12.4862 114.041 11.1724 118.046 11.1724C122.05 11.1724 125.002 12.3625 127.459 14.7427C129.917 17.123 131.144 20.1752 131.144 23.8926V26.6172H108.2V22.6289H123.872C123.755 21.0644 123.177 19.7907 122.144 18.8045C121.108 17.8183 119.74 17.3269 118.042 17.3269C116.19 17.3269 114.692 17.9922 113.549 19.3193C112.406 20.6499 111.834 22.4818 111.834 24.822C111.834 27.3292 112.493 29.3116 113.817 30.7659C115.137 32.2201 116.859 32.9488 118.978 32.9488C119.938 32.9488 120.797 32.8151 121.552 32.5443C122.308 32.2769 122.99 31.9125 123.598 31.4579C124.203 31.0032 124.895 30.2711 125.668 29.2615L130.438 32.7182C129.241 34.3663 128.081 35.5965 126.955 36.4022C125.828 37.2079 124.581 37.823 123.221 38.2442C121.857 38.6654 120.175 38.876 118.173 38.876L118.169 38.8861Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M138.562 38.4582C137.181 38.4582 136.021 37.9901 135.078 37.0574C134.136 36.1247 133.664 34.9747 133.664 33.6108C133.664 32.2468 134.136 31.1002 135.078 30.1641C136.021 29.2314 137.181 28.7634 138.562 28.7634C139.942 28.7634 141.102 29.2314 142.045 30.1641C142.988 31.0968 143.459 32.2468 143.459 33.6108C143.459 34.9747 142.988 36.1214 142.045 37.0574C141.102 37.9901 139.942 38.4582 138.562 38.4582Z\"\n fill=\"currentColor\"\n />\n </g>\n </svg>\n )\n}\n\nfunction NovieLogo({\n className,\n size,\n variant = \"primary\",\n ...props\n}: React.ComponentProps<\"svg\"> &\n VariantProps<typeof logoVariants> & {\n variant?: \"primary\" | \"secondary\"\n }) {\n const Comp = variant === \"secondary\" ? SecondaryLogo : PrimaryLogo\n return (\n <Comp\n data-slot=\"novie-logo\"\n className={cn(logoVariants({ size }), \"w-auto\", className)}\n {...props}\n />\n )\n}\n\nexport { NovieLogo, logoVariants }\n","import { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst symbolVariants = cva(\"inline-block shrink-0 w-auto\", {\n variants: {\n size: {\n sm: \"h-3\",\n md: \"h-6\",\n lg: \"h-12\",\n xl: \"h-[72px]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\nfunction NovieSymbol({\n className,\n size,\n ...props\n}: React.ComponentProps<\"svg\"> & VariantProps<typeof symbolVariants>) {\n return (\n <svg\n data-slot=\"novie-symbol\"\n viewBox=\"0 0 30 29\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(symbolVariants({ size }), className)}\n {...props}\n >\n <path\n d=\"M29.6559 10.4545C29.4679 9.91519 29.1836 9.41218 28.8213 8.96808C27.8997 7.84424 26.5241 7.17809 25.0568 7.15543C24.1443 7.15543 22.92 7.57234 20.8795 8.26568L19.8891 8.60102V7.48624C19.8891 5.35638 19.8891 4.07846 19.5911 3.22198C19.0913 1.8625 18.0045 0.793034 16.6289 0.294556C16.0879 0.0996957 15.5147 0 14.9369 0C14.3592 0 13.786 0.0996957 13.245 0.294556C11.8694 0.788503 10.7872 1.8625 10.2828 3.22198C9.98478 4.07393 9.98478 5.35185 9.98478 7.48624V8.59649L8.97142 8.27021C6.92178 7.61313 5.68832 7.21888 4.77584 7.23247C3.31312 7.28232 1.94669 7.97113 1.04338 9.1131C0.685726 9.56173 0.415191 10.0693 0.236363 10.6131C0.0667062 11.1523 -0.0158298 11.7233 0.00251152 12.2943C0.0529502 13.7399 0.749921 15.0903 1.90542 15.983C2.63449 16.5268 3.86336 16.9211 5.91301 17.5827L6.88051 17.8909L6.28442 18.702C5.01887 20.424 4.2577 21.4618 3.99175 22.3228C3.58824 23.714 3.82668 25.2094 4.64745 26.4103C4.96843 26.8816 5.37652 27.2985 5.84422 27.6338C6.31193 27.9692 6.83466 28.223 7.38948 28.3816C8.79718 28.7803 10.3103 28.5447 11.5255 27.7335C12.2729 27.2169 13.034 26.1837 14.3042 24.4572L15.0057 23.5055L15.7073 24.4572C16.9728 26.1792 17.734 27.2169 18.486 27.7335C19.7011 28.5447 21.2143 28.7803 22.622 28.3816C23.1768 28.223 23.6995 27.9737 24.1672 27.6338C24.6349 27.2985 25.0384 26.8861 25.364 26.4103C26.1848 25.2094 26.4232 23.714 26.0197 22.3228C25.7537 21.4618 24.9926 20.424 23.727 18.702L23.1126 17.8637L24.1259 17.5193C26.1664 16.8259 27.3861 16.409 28.106 15.8516C29.2432 14.9408 29.9172 13.5813 29.9401 12.1312C29.9493 11.5602 29.8576 10.9937 29.6696 10.4545H29.6559Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n\nexport { NovieSymbol, symbolVariants }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Loader2 } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:h-4 [&_svg]:w-4\",\n {\n variants: {\n variant: {\n default:\n \"bg-[hsl(var(--button-brand-default))] text-white hover:bg-[hsl(var(--button-brand-hover))] active:bg-[hsl(var(--button-brand-pressed))] disabled:bg-[hsl(var(--button-primary-bg-disabled))] disabled:text-[hsl(var(--button-primary-text-disabled))]\",\n secondary:\n \"bg-primary text-primary-foreground hover:bg-[hsl(var(--button-secondary-filled-hover))] disabled:bg-[hsl(var(--button-primary-bg-disabled))] disabled:text-[hsl(var(--button-text-disabled))]\",\n outline:\n \"border-[1.5px] border-primary bg-transparent text-primary hover:bg-accent disabled:border-[hsl(var(--button-primary-bg-disabled))] disabled:text-[hsl(var(--button-text-disabled))]\",\n danger:\n \"bg-destructive text-destructive-foreground hover:bg-[hsl(var(--button-danger-hover))] disabled:bg-[hsl(var(--button-danger-bg-disabled))] disabled:text-[hsl(var(--button-danger-text-disabled))]\",\n ghost:\n \"text-muted-foreground hover:bg-page-secondary disabled:text-[hsl(var(--button-ghost-text-disabled))]\",\n link:\n \"text-foreground underline underline-offset-4 hover:text-muted-foreground disabled:text-[hsl(var(--button-text-disabled))] h-auto p-0\",\n \"link-primary\":\n \"text-[hsl(var(--button-brand-default))] underline underline-offset-4 disabled:text-[hsl(var(--button-text-disabled))] h-auto p-0\",\n },\n size: {\n sm: \"h-8 gap-1.5 rounded-[20px] px-4 text-xs\",\n default: \"h-10 gap-2 rounded-[20px] px-5 text-sm\",\n lg: \"h-12 gap-2 rounded-[30px] px-6 text-sm\",\n xl: \"h-[58px] gap-2 rounded-[30px] px-8 text-base\",\n icon: \"h-10 w-10 rounded-[20px]\",\n \"icon-sm\": \"h-8 w-8 rounded-[20px]\",\n \"icon-lg\": \"h-12 w-12 rounded-[30px]\",\n \"icon-xl\": \"h-[58px] w-[58px] rounded-[30px]\",\n },\n },\n compoundVariants: [\n { variant: \"secondary\", size: \"sm\", className: \"rounded-[30px]\" },\n { variant: \"secondary\", size: \"default\", className: \"rounded-[30px]\" },\n { variant: \"outline\", size: \"sm\", className: \"rounded-[30px]\" },\n { variant: \"outline\", size: \"default\", className: \"rounded-[30px]\" },\n { variant: \"ghost\", size: \"sm\", className: \"rounded-[30px]\" },\n { variant: \"ghost\", size: \"default\", className: \"rounded-[30px]\" },\n ],\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n loading = false,\n disabled,\n children,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n loading?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n const isDisabled = disabled || loading\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading && <Loader2 className=\"animate-spin\" />}\n {children}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants }\n","import { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"flex h-8 w-full rounded-lg border border-input bg-background px-2.5 py-2 text-sm ring-offset-background transition-colors\",\n \"file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"placeholder:text-primary-secondary\",\n \"focus-visible:outline-none focus-visible:shadow-[0_1px_2px_0_hsl(var(--shadow-sm))]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"aria-invalid:border-destructive aria-invalid:ring-destructive/20\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","import { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"text-xs font-medium leading-4 text-foreground\",\n \"peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n \"group-data-[disabled=true]:cursor-not-allowed group-data-[disabled=true]:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check, Minus } from \"lucide-react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst checkboxVariants = cva(\n [\n \"peer shrink-0 rounded border-[1.5px] border-border bg-background transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-foreground\",\n \"data-[state=indeterminate]:border-border data-[state=indeterminate]:text-foreground\",\n ].join(\" \"),\n {\n variants: {\n size: {\n sm: \"h-5 w-5\",\n md: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n }\n)\n\nconst iconVariants = cva(\"\", {\n variants: {\n size: {\n sm: \"h-4 w-4\",\n md: \"h-[18px] w-[18px]\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n})\n\nfunction Checkbox({\n className,\n size = \"sm\",\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root> &\n VariantProps<typeof checkboxVariants>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\"group\", checkboxVariants({ size, className }))}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current\"\n >\n <Check className={cn(iconVariants({ size }), \"group-data-[state=indeterminate]:hidden\")} />\n <Minus className={cn(iconVariants({ size }), \"hidden group-data-[state=indeterminate]:block\")} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox, checkboxVariants }\n","import * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst switchVariants = cva(\n [\n \"peer inline-flex shrink-0 cursor-pointer items-center rounded-full\",\n \"transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"disabled:cursor-not-allowed\",\n \"data-[state=checked]:bg-[hsl(var(--button-brand-default))]\",\n \"data-[state=unchecked]:bg-[hsl(var(--icon-secondary))]\",\n \"disabled:data-[state=checked]:bg-[hsl(var(--button-brand-secondary))]\",\n \"disabled:data-[state=unchecked]:bg-[hsl(var(--button-primary-bg-disabled))]\",\n ].join(\" \"),\n {\n variants: {\n size: {\n sm: \"h-5 w-9\",\n md: \"h-[22px] w-10\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n }\n)\n\nconst thumbVariants = cva(\n [\n \"pointer-events-none block rounded-full bg-background shadow-[0px_2px_4px_0px_rgba(39,39,39,0.1)]\",\n \"ring-0 transition-transform\",\n \"data-[state=unchecked]:translate-x-0.5\",\n ].join(\" \"),\n {\n variants: {\n size: {\n sm: \"h-4 w-4 data-[state=checked]:translate-x-[18px]\",\n md: \"h-[18px] w-[18px] data-[state=checked]:translate-x-5\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n }\n)\n\ntype SwitchProps = React.ComponentProps<typeof SwitchPrimitive.Root> &\n VariantProps<typeof switchVariants>\n\nfunction Switch({ className, size, ...props }: SwitchProps) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(switchVariants({ size, className }))}\n {...props}\n >\n <SwitchPrimitive.Thumb className={cn(thumbVariants({ size }))} />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch, switchVariants, thumbVariants }\nexport type { SwitchProps }\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = \"on\",\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...radioProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n RadioBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar RadioBubbleInput = React.forwardRef(\n ({\n __scopeRadio,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nRadioBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\n\n// src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange,\n caller: RADIO_GROUP_NAME\n });\n return /* @__PURE__ */ jsx2(\n RadioGroupProvider,\n {\n scope: __scopeRadioGroup,\n name,\n required,\n disabled,\n value,\n onValueChange: setValue,\n children: /* @__PURE__ */ jsx2(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx2(\n Primitive2.div,\n {\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : void 0,\n dir: direction,\n ...groupProps,\n ref: forwardedRef\n }\n )\n }\n )\n }\n );\n }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React2.useRef(false);\n React2.useEffect(() => {\n const handleKeyDown = (event) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"keyup\", handleKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, []);\n return /* @__PURE__ */ jsx2(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !isDisabled,\n active: checked,\n children: /* @__PURE__ */ jsx2(\n Radio,\n {\n disabled: isDisabled,\n required: context.required,\n checked,\n ...radioScope,\n ...itemProps,\n name: context.name,\n ref: composedRefs,\n onCheck: () => context.onValueChange(itemProps.value),\n onKeyDown: composeEventHandlers2((event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })\n }\n )\n }\n );\n }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n Indicator,\n Item2 as Item,\n RadioGroup,\n RadioGroupIndicator,\n RadioGroupItem,\n Root2 as Root,\n createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst radioGroupItemVariants = cva(\n [\n \"peer aspect-square shrink-0 rounded-full border-[1.5px] transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"border-border bg-background\",\n \"data-[state=checked]:border-foreground data-[state=checked]:bg-foreground\",\n ].join(\" \"),\n {\n variants: {\n size: {\n sm: \"h-5 w-5\",\n md: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n }\n)\n\nconst radioGroupIndicatorVariants = cva(\n \"block rounded-full bg-primary-foreground\",\n {\n variants: {\n size: {\n sm: \"h-2.5 w-2.5\",\n md: \"h-3 w-3\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n }\n)\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n size = \"sm\",\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> &\n VariantProps<typeof radioGroupItemVariants>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(radioGroupItemVariants({ size, className }))}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <span className={cn(radioGroupIndicatorVariants({ size }))} />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem, radioGroupItemVariants }\n","import * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype SeparatorVariant = \"full\" | \"middle\" | \"inset\"\n\ntype SeparatorProps = React.ComponentProps<typeof SeparatorPrimitive.Root> & {\n variant?: SeparatorVariant\n label?: string\n}\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n variant = \"full\",\n label,\n decorative = true,\n ...props\n}: SeparatorProps) {\n const isHorizontal = orientation === \"horizontal\"\n\n return (\n <div\n className={cn(\n \"flex shrink-0\",\n isHorizontal ? \"flex-col items-stretch\" : \"flex-row items-stretch\",\n variant === \"middle\" && (isHorizontal ? \"px-4\" : \"py-4\"),\n variant === \"inset\" && (isHorizontal ? \"pl-4\" : \"pt-4\"),\n label && isHorizontal && \"gap-2.5\",\n !isHorizontal && \"h-full self-stretch\",\n className\n )}\n >\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n isHorizontal ? \"h-px w-full\" : \"h-full w-px\"\n )}\n {...props}\n />\n {label && isHorizontal && (\n <span className=\"text-lg leading-7 text-foreground\">{label}</span>\n )}\n </div>\n )\n}\n\nexport { Separator }\nexport type { SeparatorProps, SeparatorVariant }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Ellipsis } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full text-[12px] leading-[16px] whitespace-nowrap text-white\",\n {\n variants: {\n variant: {\n default: \"bg-foreground\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n error: \"bg-error\",\n info: \"bg-info\",\n },\n size: {\n sm: \"h-1.5 w-1.5\",\n md: \"h-4 min-w-4\",\n },\n content: {\n none: \"\",\n dot: \"p-1\",\n number: \"p-0\",\n \"multi-number\": \"p-1\",\n text: \"p-3\",\n },\n stroke: {\n true: \"border-[1.5px] border-background\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n size: \"sm\",\n content: \"none\",\n className: \"h-1.5 w-1.5 p-0\",\n },\n {\n size: \"md\",\n content: \"number\",\n className: \"h-4 w-4 p-0\",\n },\n ],\n defaultVariants: {\n variant: \"default\",\n size: \"sm\",\n content: \"none\",\n stroke: false,\n },\n }\n)\n\ntype BadgeContentType = \"dot\" | \"number\" | \"multi-number\" | \"text\" | \"none\"\n\ntype BadgeProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof badgeVariants> & {\n content?: BadgeContentType\n stroke?: boolean\n }\n\nfunction Badge({\n className,\n variant = \"default\",\n size = \"sm\",\n content = \"none\",\n stroke = false,\n children,\n ...props\n}: BadgeProps) {\n const isDot = size === \"sm\" && content === \"none\"\n const isNumeric = content === \"number\" || content === \"multi-number\"\n\n return (\n <div\n data-slot=\"badge\"\n data-variant={variant}\n data-size={size}\n className={cn(badgeVariants({ variant, size, content, stroke, className }))}\n {...props}\n >\n {isDot ? null : (\n <span className={cn(\"text-center text-[12px] leading-[16px]\", isNumeric && \"font-medium\")}>\n {content === \"dot\" ? (\n <Ellipsis className=\"h-4 w-4\" aria-hidden=\"true\" />\n ) : (\n children\n )}\n </span>\n )}\n </div>\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst tagVariants = cva(\n \"inline-flex items-center whitespace-nowrap rounded-full text-sm font-medium transition-colors [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n outline: \"border-[1.5px] border-border text-foreground\",\n filled: \"bg-background text-foreground\",\n primary: \"bg-primary/10 text-primary border border-primary/20\",\n destructive: \"bg-destructive/10 text-destructive border border-destructive/20\",\n success: \"bg-success/10 text-success border border-success/20\",\n warning: \"bg-warning/10 text-warning border border-warning/20\",\n info: \"bg-info/10 text-info border border-info/20\",\n },\n size: {\n sm: \"h-6 gap-1 px-2 text-xs\",\n default: \"h-8 gap-1 px-4 text-sm\",\n lg: \"h-9 gap-1.5 px-4 text-sm\",\n },\n },\n compoundVariants: [\n { variant: \"filled\", size: \"default\", className: \"pl-4 pr-3\" },\n { variant: \"filled\", size: \"lg\", className: \"pl-4 pr-3\" },\n ],\n defaultVariants: {\n variant: \"outline\",\n size: \"default\",\n },\n }\n)\n\ntype TagProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof tagVariants> & {\n onDismiss?: () => void\n }\n\nfunction Tag({\n className,\n variant,\n size,\n onDismiss,\n children,\n ...props\n}: TagProps) {\n return (\n <div\n data-slot=\"tag\"\n className={cn(\n tagVariants({ variant, size }),\n onDismiss && \"pr-2\",\n className\n )}\n {...props}\n >\n {children}\n {onDismiss && (\n <button\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={onDismiss}\n className={cn(\n \"inline-flex items-center justify-center rounded-full transition-colors\",\n \"hover:bg-foreground/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n size === \"sm\" ? \"h-3.5 w-3.5\" : \"h-4 w-4\"\n )}\n >\n <X className={size === \"sm\" ? \"h-2.5 w-2.5\" : \"h-3 w-3\"} />\n </button>\n )}\n </div>\n )\n}\n\nexport { Tag, tagVariants }\nexport type { TagProps }\n","import * as AvatarPrimitive from \"@radix-ui/react-avatar\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst avatarVariants = cva(\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden bg-muted\",\n {\n variants: {\n size: {\n xs: \"h-6 w-6 text-xs\",\n sm: \"h-8 w-8 text-xs\",\n md: \"h-10 w-10 text-lg\",\n lg: \"h-12 w-12 text-lg\",\n },\n shape: {\n circle: \"rounded-full\",\n square: \"rounded-lg\",\n },\n },\n defaultVariants: {\n size: \"md\",\n shape: \"circle\",\n },\n }\n)\n\nconst statusDotVariants = cva(\n \"absolute bottom-0 right-0 block rounded-full border border-background shadow-sm\",\n {\n variants: {\n size: {\n xs: \"h-[4.5px] w-[4.5px]\",\n sm: \"h-1.5 w-1.5\",\n md: \"h-1.5 w-1.5\",\n lg: \"h-2 w-2\",\n },\n status: {\n online: \"bg-success\",\n busy: \"bg-destructive\",\n offline: \"bg-info\",\n away: \"bg-muted-foreground\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\ntype AvatarStatus = \"online\" | \"busy\" | \"offline\" | \"away\" | \"none\"\n\nfunction Avatar({\n className,\n size = \"md\",\n shape = \"circle\",\n status = \"none\",\n children,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> &\n VariantProps<typeof avatarVariants> & {\n status?: AvatarStatus\n }) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n data-shape={shape}\n className={cn(avatarVariants({ size, shape, className }))}\n {...props}\n >\n {children}\n {status !== \"none\" && (\n <span\n data-slot=\"avatar-status\"\n className={cn(statusDotVariants({ size, status }))}\n aria-label={status}\n />\n )}\n </AvatarPrimitive.Root>\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"h-full w-full object-cover\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"flex h-full w-full items-center justify-center bg-muted font-medium text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, avatarVariants }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Loader2 } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst iconButtonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground hover:bg-[hsl(var(--icon-button-hover))] disabled:bg-[hsl(var(--icon-button-disabled))] active:bg-primary active:ring-2 active:ring-primary active:ring-offset-2\",\n ghost:\n \"text-foreground hover:bg-accent hover:text-accent-foreground active:bg-accent\",\n danger:\n \"bg-[hsl(var(--icon-button-danger-bg))] text-destructive-foreground hover:bg-[hsl(var(--icon-button-danger-hover))] hover:text-destructive disabled:bg-[hsl(var(--icon-button-danger-disabled))] active:bg-destructive\",\n },\n size: {\n sm: \"h-8 w-8 rounded-[30px] [&_svg]:h-3.5 [&_svg]:w-3.5\",\n default: \"h-10 w-10 rounded-[30px] [&_svg]:h-5 [&_svg]:w-5\",\n lg: \"h-12 w-12 rounded-[30px] [&_svg]:h-6 [&_svg]:w-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction IconButton({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n loading = false,\n disabled,\n children,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof iconButtonVariants> & {\n asChild?: boolean\n loading?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n const isDisabled = disabled || loading\n\n return (\n <Comp\n data-slot=\"icon-button\"\n data-variant={variant}\n data-size={size}\n className={cn(iconButtonVariants({ variant, size, className }))}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading ? <Loader2 className=\"animate-spin\" /> : children}\n </Comp>\n )\n}\n\nexport { IconButton, iconButtonVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst progressTrackVariants = cva(\n \"relative w-full overflow-hidden rounded-full bg-surface-inset\",\n {\n variants: {\n size: {\n sm: \"h-1\",\n md: \"h-2\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n }\n)\n\nconst indicatorVariants = cva(\n \"h-full rounded-full transition-all duration-300 ease-in-out\",\n {\n variants: {\n status: {\n default: \"bg-foreground\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n error: \"bg-destructive\",\n },\n },\n defaultVariants: {\n status: \"default\",\n },\n }\n)\n\nconst labelColorVariants = cva(\"text-base font-medium leading-6\", {\n variants: {\n status: {\n default: \"text-muted-foreground\",\n success: \"text-success\",\n warning: \"text-warning\",\n error: \"text-destructive\",\n },\n },\n defaultVariants: {\n status: \"default\",\n },\n})\n\ntype ProgressProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof progressTrackVariants> &\n VariantProps<typeof indicatorVariants> & {\n value?: number\n max?: number\n label?: string\n helperText?: string\n showLabel?: boolean\n indeterminate?: boolean\n statusText?: string\n }\n\nfunction Progress({\n className,\n value = 0,\n max = 100,\n size = \"sm\",\n status = \"default\",\n label,\n helperText,\n showLabel = false,\n indeterminate = false,\n statusText,\n ...props\n}: ProgressProps) {\n const clampedValue = Math.min(Math.max(value, 0), max)\n const percentage = max > 0 ? (clampedValue / max) * 100 : 0\n const resolvedStatus = status ?? \"default\"\n\n return (\n <div\n data-slot=\"progress\"\n className={cn(\"flex w-full flex-col gap-1\", className)}\n {...props}\n >\n {showLabel && (\n <div className=\"flex items-end justify-between\">\n <span className={cn(labelColorVariants({ status: resolvedStatus }))}>\n {indeterminate ? (label ?? \"Loading\") : (label ?? \"\")}\n </span>\n <div className=\"flex items-end gap-2\">\n <span className=\"text-lg font-bold leading-7 text-foreground\">\n {indeterminate ? \"Loading\" : `${Math.round(percentage)}%`}\n </span>\n {!indeterminate && statusText && (\n <span className=\"pb-0.5 text-[10px] font-medium leading-4 tracking-[0.5px] text-muted-foreground\">\n {statusText}\n </span>\n )}\n </div>\n </div>\n )}\n\n <div\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : clampedValue}\n aria-valuemin={0}\n aria-valuemax={max}\n className={cn(progressTrackVariants({ size }))}\n >\n <div\n data-slot=\"progress-indicator\"\n className={cn(\n indicatorVariants({ status }),\n indeterminate && \"animate-progress-indeterminate\"\n )}\n style={\n indeterminate\n ? { width: \"50%\" }\n : { width: `${percentage}%` }\n }\n />\n </div>\n\n {showLabel && helperText && (\n <span className=\"text-[10px] leading-4 text-muted-foreground\">\n {helperText}\n </span>\n )}\n </div>\n )\n}\n\nexport { Progress, progressTrackVariants, indicatorVariants }\n","import { useId } from \"react\"\nimport { CalendarIcon, ChevronDown, Search, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Input } from \"./input\"\nimport { Label } from \"./label\"\n\ntype InputType = \"text\" | \"select\" | \"search\" | \"number\" | \"calendar\"\n\ntype InputFieldProps = Omit<React.ComponentProps<\"input\">, \"type\"> & {\n label?: string\n required?: boolean\n helpText?: string\n errorMessage?: string\n inputType?: InputType\n clearable?: boolean\n onClear?: () => void\n prefixLabel?: string\n}\n\nfunction InputField({\n className,\n label,\n required = false,\n helpText,\n errorMessage,\n inputType = \"text\",\n clearable = false,\n onClear,\n prefixLabel,\n disabled,\n value,\n id,\n ...props\n}: InputFieldProps) {\n const generatedId = useId()\n const fieldId = id ?? generatedId\n\n const isError = !!errorMessage\n const helpId = helpText ? `${fieldId}-help` : undefined\n const errorId = isError ? `${fieldId}-error` : undefined\n const describedBy =\n [helpId, errorId].filter(Boolean).join(\" \") || undefined\n\n const labelElement = label ? (\n <Label data-slot=\"input-field-label\" htmlFor={fieldId}>\n {label}\n {required && <span className=\"text-destructive\">*</span>}\n </Label>\n ) : null\n\n const helpElement =\n helpText && !isError ? (\n <p\n data-slot=\"input-field-help\"\n id={helpId}\n className=\"text-xs font-medium leading-4 text-muted-foreground\"\n >\n {helpText}\n </p>\n ) : null\n\n const errorElement = isError ? (\n <p\n data-slot=\"input-field-error\"\n id={errorId}\n role=\"alert\"\n className=\"text-xs font-medium leading-4 text-destructive\"\n >\n {errorMessage}\n </p>\n ) : null\n\n const leftIcon = inputType === \"search\" ? <Search /> : undefined\n const showChevron = inputType === \"select\"\n const showCalendar = inputType === \"calendar\"\n\n const nativeType =\n inputType === \"number\"\n ? \"tel\"\n : inputType === \"search\"\n ? \"search\"\n : \"text\"\n\n const inputWrapper =\n inputType === \"number\" && prefixLabel ? (\n <div\n data-slot=\"input-field-number-group\"\n className=\"flex items-start gap-2\"\n >\n <div\n data-slot=\"input-field-prefix\"\n data-disabled={disabled || undefined}\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-lg border border-input bg-background px-2.5 text-sm shadow-sm transition-colors\",\n \"focus-within:border-ring\",\n isError && \"border-destructive\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n >\n <span className=\"text-muted-foreground\">{prefixLabel}</span>\n </div>\n <div\n data-slot=\"input-wrapper\"\n data-disabled={disabled || undefined}\n className={cn(\n \"flex h-8 w-full items-center gap-1.5 rounded-lg border border-input bg-background px-2.5 shadow-sm transition-colors\",\n \"focus-within:border-ring\",\n isError && \"border-destructive\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n >\n <Input\n id={fieldId}\n type=\"tel\"\n disabled={disabled}\n value={value}\n aria-invalid={isError || undefined}\n aria-describedby={describedBy}\n data-slot=\"input-field-input\"\n className=\"h-full border-0 bg-transparent px-0 shadow-none ring-0 ring-offset-0 focus-visible:ring-0 focus-visible:ring-offset-0\"\n {...props}\n />\n </div>\n </div>\n ) : (\n <div\n data-slot=\"input-wrapper\"\n data-disabled={disabled || undefined}\n className={cn(\n \"flex h-8 w-full items-center gap-1.5 rounded-lg border border-input bg-background px-2.5 transition-colors\",\n \"focus-within:border-ring\",\n isError && \"border-destructive\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n >\n {leftIcon && (\n <span\n data-slot=\"input-field-icon\"\n className=\"inline-flex shrink-0 text-muted-foreground [&_svg]:h-4 [&_svg]:w-4\"\n >\n {leftIcon}\n </span>\n )}\n\n <Input\n id={fieldId}\n type={nativeType}\n disabled={disabled}\n value={value}\n aria-invalid={isError || undefined}\n aria-describedby={describedBy}\n data-slot=\"input-field-input\"\n className=\"h-full border-0 bg-transparent px-0 shadow-none ring-0 ring-offset-0 focus-visible:ring-0 focus-visible:ring-offset-0\"\n {...props}\n />\n\n {clearable && value && !disabled && (\n <button\n type=\"button\"\n onClick={onClear}\n data-slot=\"input-field-clear\"\n className=\"inline-flex shrink-0 text-muted-foreground hover:text-foreground [&_svg]:h-4 [&_svg]:w-4\"\n aria-label=\"Clear input\"\n >\n <X />\n </button>\n )}\n\n {showChevron && (\n <span\n data-slot=\"input-field-chevron\"\n className=\"inline-flex shrink-0 text-muted-foreground [&_svg]:h-4 [&_svg]:w-4\"\n >\n <ChevronDown />\n </span>\n )}\n\n {showCalendar && (\n <span\n data-slot=\"input-field-calendar\"\n className=\"inline-flex shrink-0 text-muted-foreground [&_svg]:h-4 [&_svg]:w-4\"\n >\n <CalendarIcon />\n </span>\n )}\n </div>\n )\n\n if (!label && !helpText && !errorMessage) {\n return inputWrapper\n }\n\n return (\n <div data-slot=\"input-field\" className=\"flex flex-col gap-1\">\n {labelElement}\n {inputWrapper}\n {helpElement}\n {errorElement}\n </div>\n )\n}\n\nexport { InputField }\nexport type { InputFieldProps, InputType }\n","import * as React from \"react\"\nimport { Search, X, Loader2 } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Input } from \"./input\"\n\nfunction SearchInput({\n className,\n inputSize = \"sm\",\n clearable = true,\n onClear,\n loading = false,\n disabled,\n value,\n defaultValue,\n onChange,\n placeholder = \"Type to Search...\",\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"size\" | \"type\"> & {\n inputSize?: \"sm\" | \"default\"\n clearable?: boolean\n onClear?: () => void\n loading?: boolean\n}) {\n const [internalValue, setInternalValue] = React.useState(\n defaultValue ?? \"\"\n )\n\n const isControlled = value !== undefined\n const currentValue = isControlled ? value : internalValue\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(e.target.value)\n }\n onChange?.(e)\n }\n\n const handleClear = () => {\n if (!isControlled) {\n setInternalValue(\"\")\n }\n onClear?.()\n }\n\n const hasValue = String(currentValue).length > 0\n const showClear = clearable && hasValue && !disabled && !loading\n const showLoader = loading && !disabled\n\n return (\n <div\n data-slot=\"search-input\"\n className={cn(\n \"flex items-center gap-2 rounded-full border border-input bg-background px-3\",\n \"transition-colors\",\n inputSize === \"sm\" && \"h-8\",\n inputSize === \"default\" && \"h-10\",\n disabled && \"cursor-not-allowed bg-secondary opacity-60\",\n className\n )}\n >\n <span\n className={cn(\n \"inline-flex shrink-0 [&_svg]:h-[18px] [&_svg]:w-[18px]\",\n disabled ? \"text-muted-foreground/50\" : \"text-muted-foreground\"\n )}\n >\n <Search />\n </span>\n\n <Input\n type=\"search\"\n disabled={disabled}\n value={currentValue}\n onChange={handleChange}\n placeholder={placeholder}\n className={cn(\n \"h-full border-0 bg-transparent px-0 text-[18px] leading-7 shadow-none ring-0 ring-offset-0\",\n \"focus-visible:ring-0 focus-visible:ring-offset-0\",\n \"placeholder:text-muted-foreground\",\n \"text-foreground\",\n \"[&::-webkit-search-cancel-button]:hidden [&::-webkit-search-decoration]:hidden\"\n )}\n {...props}\n />\n\n {showLoader && (\n <span className=\"inline-flex shrink-0 animate-spin text-muted-foreground [&_svg]:h-4 [&_svg]:w-4\">\n <Loader2 />\n </span>\n )}\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n disabled={disabled}\n className={cn(\n \"inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-full\",\n \"bg-foreground/5 text-muted-foreground transition-colors hover:bg-foreground/10 hover:text-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n aria-label=\"Clear search\"\n >\n <X className=\"h-3.5 w-3.5\" />\n </button>\n )}\n </div>\n )\n}\n\nexport { SearchInput }\n","import * as React from \"react\"\nimport { Check } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype StepStatus = \"completed\" | \"active\" | \"upcoming\" | \"inactive\"\n\ntype StepperContextValue = {\n activeStep: number\n orientation: \"horizontal\" | \"vertical\"\n totalSteps: number\n}\n\nconst StepperContext = React.createContext<StepperContextValue>({\n activeStep: 0,\n orientation: \"horizontal\",\n totalSteps: 0,\n})\n\nfunction useStepperContext() {\n return React.useContext(StepperContext)\n}\n\nfunction getStepStatus(index: number, activeStep: number): StepStatus {\n if (index < activeStep) return \"completed\"\n if (index === activeStep) return \"active\"\n return \"inactive\"\n}\n\nfunction StepIndicator({ status }: { status: StepStatus }) {\n return (\n <div\n data-slot=\"stepper-indicator\"\n className={cn(\n \"relative flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 transition-colors duration-300\",\n status === \"completed\" &&\n \"border-primary bg-primary text-primary-foreground\",\n status === \"active\" && \"border-primary bg-background\",\n status === \"inactive\" && \"border-muted bg-background\"\n )}\n >\n {status === \"completed\" && <Check className=\"h-4 w-4\" />}\n {status === \"active\" && (\n <div\n data-slot=\"stepper-dot\"\n className=\"h-2.5 w-2.5 rounded-full bg-primary\"\n />\n )}\n {status === \"inactive\" && (\n <div\n data-slot=\"stepper-dot\"\n className=\"h-2.5 w-2.5 rounded-full bg-muted\"\n />\n )}\n </div>\n )\n}\n\nfunction StepperSeparator({\n completed,\n orientation,\n}: {\n completed: boolean\n orientation: \"horizontal\" | \"vertical\"\n}) {\n return (\n <div\n data-slot=\"stepper-separator\"\n className={cn(\n \"transition-colors duration-300\",\n orientation === \"horizontal\"\n ? \"h-0.5 flex-1\"\n : \"h-20 w-0.5\",\n completed ? \"bg-primary\" : \"bg-surface-inset\"\n )}\n />\n )\n}\n\ntype StepperItemProps = {\n className?: string\n label?: string\n description?: string\n children?: React.ReactNode\n}\n\nfunction StepperItem({\n className,\n label,\n description,\n children,\n}: StepperItemProps) {\n return (\n <div data-slot=\"stepper-item\" className={className}>\n {children ?? (\n <>\n {label && (\n <span\n data-slot=\"stepper-item-label\"\n className=\"text-sm font-medium leading-5\"\n >\n {label}\n </span>\n )}\n {description && (\n <span\n data-slot=\"stepper-item-description\"\n className=\"text-xs text-muted-foreground\"\n >\n {description}\n </span>\n )}\n </>\n )}\n </div>\n )\n}\n\ntype StepperProps = Omit<React.ComponentProps<\"div\">, \"children\"> & {\n activeStep?: number\n orientation?: \"horizontal\" | \"vertical\"\n children?: React.ReactNode\n steps?: Array<{ label: string; description?: string }>\n}\n\nfunction Stepper({\n className,\n activeStep = 0,\n orientation = \"horizontal\",\n steps,\n children,\n ...props\n}: StepperProps) {\n const items = steps\n ? steps.map((s, i) => (\n <StepperItem key={i} label={s.label} description={s.description} />\n ))\n : React.Children.toArray(children)\n\n const totalSteps = items.length\n\n const contextValue: StepperContextValue = {\n activeStep,\n orientation,\n totalSteps,\n }\n\n const hasLabels = items.some(\n (child) =>\n React.isValidElement<StepperItemProps>(child) && child.props.label\n )\n\n if (orientation === \"horizontal\") {\n return (\n <StepperContext.Provider value={contextValue}>\n <div\n data-slot=\"stepper\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n >\n {/* Row 1: indicators + separators */}\n <div className=\"flex flex-row items-center\">\n {items.map((_, index) => {\n const status = getStepStatus(index, activeStep)\n const isLast = index === totalSteps - 1\n return (\n <React.Fragment key={index}>\n <StepIndicator status={status} />\n {!isLast && (\n <StepperSeparator\n completed={index < activeStep}\n orientation=\"horizontal\"\n />\n )}\n </React.Fragment>\n )\n })}\n </div>\n {/* Row 2: labels (only if any step has a label) */}\n {hasLabels && (\n <div className=\"flex flex-row\">\n {items.map((child, index) => {\n const status = getStepStatus(index, activeStep)\n const isLast = index === totalSteps - 1\n return (\n <React.Fragment key={index}>\n <div\n data-slot=\"stepper-step-content\"\n className=\"flex flex-col items-center text-center\"\n style={{ width: 32 }}\n >\n {React.isValidElement<StepperItemProps>(child) && (\n <>\n {child.props.label && (\n <span\n data-slot=\"stepper-label\"\n className={cn(\n \"whitespace-nowrap text-sm leading-5\",\n status === \"active\"\n ? \"font-semibold text-foreground\"\n : status === \"completed\"\n ? \"font-normal text-foreground\"\n : \"font-normal text-info\"\n )}\n >\n {child.props.label}\n </span>\n )}\n {child.props.description && (\n <span\n data-slot=\"stepper-description\"\n className=\"whitespace-nowrap text-xs text-muted-foreground\"\n >\n {child.props.description}\n </span>\n )}\n </>\n )}\n </div>\n {!isLast && <div className=\"flex-1\" />}\n </React.Fragment>\n )\n })}\n </div>\n )}\n </div>\n </StepperContext.Provider>\n )\n }\n\n return (\n <StepperContext.Provider value={contextValue}>\n <div\n data-slot=\"stepper\"\n className={cn(\"flex flex-col items-start\", className)}\n {...props}\n >\n {items.map((child, index) => {\n const status = getStepStatus(index, activeStep)\n const isLast = index === totalSteps - 1\n return (\n <React.Fragment key={index}>\n <div\n data-slot=\"stepper-step\"\n className=\"flex flex-row items-start gap-4\"\n >\n <div\n data-slot=\"stepper-step-indicator-group\"\n className=\"flex flex-col items-center\"\n >\n <StepIndicator status={status} />\n {!isLast && (\n <StepperSeparator\n completed={index < activeStep}\n orientation=\"vertical\"\n />\n )}\n </div>\n {React.isValidElement<StepperItemProps>(child) && (\n <div\n data-slot=\"stepper-step-content\"\n className=\"flex flex-col pb-8\"\n >\n {child.props.label && (\n <span\n data-slot=\"stepper-label\"\n className={cn(\n \"text-sm leading-8\",\n status === \"active\"\n ? \"font-semibold text-foreground\"\n : status === \"completed\"\n ? \"font-normal text-foreground\"\n : \"font-normal text-muted-foreground\"\n )}\n >\n {child.props.label}\n </span>\n )}\n {child.props.description && (\n <span\n data-slot=\"stepper-description\"\n className=\"text-xs text-muted-foreground\"\n >\n {child.props.description}\n </span>\n )}\n </div>\n )}\n </div>\n </React.Fragment>\n )\n })}\n </div>\n </StepperContext.Provider>\n )\n}\n\nexport { Stepper, StepperItem, useStepperContext }\nexport type { StepperProps, StepperItemProps, StepStatus }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & {\n variant?: \"default\" | \"outlined\" | \"elevated\"\n}) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"flex flex-col gap-4 rounded-lg bg-card px-6 py-5 text-card-foreground\",\n variant === \"outlined\" && \"border border-border\",\n variant === \"elevated\" &&\n \"shadow-[0px_4px_12px_0px_rgba(0,0,0,0.08)]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\"flex flex-col gap-4\", className)}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-h4\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"card-content\" className={cn(className)} {...props} />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center justify-end gap-3\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n CardFooter,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div data-slot=\"table-wrapper\" className=\"relative w-full overflow-auto\">\n <table\n data-slot=\"table\"\n className={cn(\n \"w-full caption-bottom border-collapse text-sm\",\n className\n )}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({\n className,\n ...props\n}: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({\n className,\n ...props\n}: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"border-b border-border transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"h-11 bg-muted px-2 text-left align-middle text-sm font-medium text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"h-11 px-2 align-middle text-sm text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableRow,\n TableHead,\n TableCell,\n TableCaption,\n}\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return (\n <DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n className={className}\n {...props}\n />\n )\n}\n\nfunction DialogClose({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={className}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) {\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/80\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\"\n )}\n />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border border-border bg-background p-6 shadow-lg duration-200\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n data-slot=\"dialog-close-button\"\n className=\"absolute top-4 right-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\"\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\n \"flex flex-col gap-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogFooter,\n DialogClose,\n}\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n let top = firstRect.top;\n let right = firstRect.right;\n let bottom = firstRect.bottom;\n let left = firstRect.left;\n for (let i = 1; i < clippingAncestors.length; i++) {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n top = max(rect.top, top);\n right = min(rect.right, right);\n bottom = min(rect.bottom, bottom);\n left = max(rect.left, left);\n }\n return {\n width: right - left,\n height: bottom - top,\n x: left,\n y: top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n if (floating) {\n resizeObserver.observe(floating);\n }\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => {\n const result = offset$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => {\n const result = shift$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => {\n const result = limitShift$1(options);\n return {\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => {\n const result = flip$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => {\n const result = size$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => {\n const result = autoPlacement$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => {\n const result = hide$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => {\n const result = inline$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => {\n const result = arrow$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VISUALLY_HIDDEN_STYLES,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const isOpenDelayedRef = React.useRef(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayedRef,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n isOpenDelayedRef.current = false;\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => isOpenDelayedRef.current = true,\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n },\n caller: TOOLTIP_NAME\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n if (context.open) {\n context.onClose();\n }\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 200,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider delayDuration={delayDuration} {...props} />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root {...props} />\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 8,\n variant = \"dark\",\n showArrow = true,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content> & {\n variant?: \"dark\" | \"light\"\n showArrow?: boolean\n}) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip\"\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-lg p-3 text-xs leading-4 text-center\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n variant === \"dark\"\n ? \"bg-primary text-primary-foreground\"\n : \"bg-popover text-popover-foreground shadow-md\",\n className\n )}\n {...props}\n >\n {children}\n {showArrow && (\n <TooltipPrimitive.Arrow\n className={cn(\n variant === \"dark\" ? \"fill-primary\" : \"fill-popover\"\n )}\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative flex w-full items-start gap-5 rounded-lg p-5 text-base leading-6 [&>svg]:h-6 [&>svg]:w-6 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"\",\n destructive: \"\",\n success: \"\",\n warning: \"\",\n },\n filled: {\n true: \"\",\n false: \"border bg-background\",\n },\n },\n compoundVariants: [\n {\n variant: \"default\",\n filled: false,\n className:\n \"border-border text-foreground [&>svg]:text-foreground\",\n },\n {\n variant: \"destructive\",\n filled: false,\n className:\n \"border-destructive text-destructive [&>svg]:text-destructive\",\n },\n {\n variant: \"success\",\n filled: false,\n className:\n \"border-success text-success [&>svg]:text-success\",\n },\n {\n variant: \"warning\",\n filled: false,\n className:\n \"border-warning text-warning [&>svg]:text-warning\",\n },\n {\n variant: \"default\",\n filled: true,\n className:\n \"bg-primary text-primary-foreground [&>svg]:text-primary-foreground\",\n },\n {\n variant: \"destructive\",\n filled: true,\n className:\n \"bg-destructive text-destructive-foreground [&>svg]:text-destructive-foreground\",\n },\n {\n variant: \"success\",\n filled: true,\n className:\n \"bg-success text-success-foreground [&>svg]:text-success-foreground\",\n },\n {\n variant: \"warning\",\n filled: true,\n className:\n \"bg-warning text-warning-foreground [&>svg]:text-warning-foreground\",\n },\n ],\n defaultVariants: {\n variant: \"default\",\n filled: false,\n },\n }\n)\n\nfunction Alert({\n className,\n variant = \"default\",\n filled = false,\n onDismiss,\n children,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof alertVariants> & {\n onDismiss?: () => void\n }) {\n return (\n <div\n data-slot=\"alert\"\n data-variant={variant}\n data-filled={filled || undefined}\n role=\"alert\"\n className={cn(alertVariants({ variant, filled, className }))}\n {...props}\n >\n <div\n data-slot=\"alert-content\"\n className=\"flex min-w-0 flex-1 items-center gap-2.5\"\n >\n {children}\n </div>\n {onDismiss ? (\n <button\n data-slot=\"alert-dismiss\"\n type=\"button\"\n onClick={onDismiss}\n className=\"shrink-0 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n aria-label=\"Dismiss\"\n >\n <X className=\"h-6 w-6\" />\n </button>\n ) : null}\n </div>\n )\n}\n\nfunction AlertTitle({\n className,\n children,\n ...props\n}: React.ComponentProps<\"h5\">) {\n return (\n <h5\n data-slot=\"alert-title\"\n className={cn(\"text-h4\", className)}\n {...props}\n >\n {children}\n </h5>\n )\n}\n\nfunction AlertDescription({\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\"text-base leading-6 [&_p]:leading-6\", className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, alertVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { X, CircleCheck, CircleAlert, TriangleAlert, Info } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toastVariants = cva(\n \"relative flex w-full flex-col gap-4 rounded-lg border px-3 py-5\",\n {\n variants: {\n variant: {\n default: \"border-border bg-background text-foreground\",\n success: \"border-border bg-background text-foreground\",\n destructive: \"border-destructive bg-background text-destructive\",\n warning: \"border-border bg-background text-foreground\",\n info: \"border-border bg-background text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst toastIconMap = {\n default: CircleCheck,\n success: CircleCheck,\n destructive: CircleAlert,\n warning: TriangleAlert,\n info: Info,\n} as const\n\nconst toastIconColorMap = {\n default: \"text-foreground\",\n success: \"text-success\",\n destructive: \"text-destructive\",\n warning: \"text-warning\",\n info: \"text-info\",\n} as const\n\ntype ToastVariant = NonNullable<VariantProps<typeof toastVariants>[\"variant\"]>\n\ntype ToastProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof toastVariants> & {\n onClose?: () => void\n }\n\nfunction Toast({\n className,\n variant = \"default\",\n onClose,\n children,\n ...props\n}: ToastProps) {\n return (\n <div\n data-slot=\"toast\"\n data-variant={variant}\n role=\"alert\"\n className={cn(toastVariants({ variant, className }))}\n {...props}\n >\n {children}\n {onClose && (\n <button\n data-slot=\"toast-close\"\n type=\"button\"\n onClick={onClose}\n className={cn(\n \"absolute right-3 top-5 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n variant === \"destructive\" && \"text-destructive\"\n )}\n aria-label=\"Close\"\n >\n <X className=\"h-6 w-6\" />\n </button>\n )}\n </div>\n )\n}\n\nfunction ToastHeader({\n className,\n variant = \"default\",\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n variant?: ToastVariant\n}) {\n const IconComponent = toastIconMap[variant]\n const iconColor = toastIconColorMap[variant]\n\n return (\n <div\n data-slot=\"toast-header\"\n className={cn(\"flex items-center gap-4\", className)}\n {...props}\n >\n <IconComponent\n data-slot=\"toast-icon\"\n className={cn(\"h-6 w-6 shrink-0\", iconColor)}\n aria-hidden=\"true\"\n />\n <div\n data-slot=\"toast-header-content\"\n className=\"flex flex-1 flex-col\"\n >\n {children}\n </div>\n </div>\n )\n}\n\nfunction ToastTitle({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"toast-title\"\n className={cn(\"text-h4\", className)}\n {...props}\n />\n )\n}\n\nfunction ToastDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"toast-description\"\n className={cn(\n \"pl-8 text-sm leading-5 text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ToastAction({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"toast-action\"\n className={cn(\"flex items-start justify-end gap-3 pl-8\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Toast,\n ToastHeader,\n ToastTitle,\n ToastDescription,\n ToastAction,\n toastVariants,\n}\nexport type { ToastProps, ToastVariant }\n"],"x_google_ignoreList":[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,36,37,38,39,40,41,42,43,44,45,46,47],"mappings":"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S,GAAe,EACtB,GAAG,KACqD;AACxD,QAAO,kBAAC,IAAD,EAA0B,GAAI,GAAS,CAAA;;AAGhD,SAAS,GAAe,EACtB,cACA,gBAAa,GACb,aAAU,QACV,eAAY,IACZ,aACA,GAAG,KAIF;AACD,QACE,kBAAC,IAAD,EAAA,UACE,kBAAC,IAAD;EACE,aAAU;EACE;EACZ,WAAW,EACT,qEACA,mCACA,kGACA,0CACA,0CACA,0CACA,0CACA,MAAY,SACR,uCACA,gDACJ,EACD;EACD,GAAI;YAhBN,CAkBG,GACA,KACC,kBAAC,IAAD,EACE,WAAW,EACT,MAAY,SAAS,iBAAiB,eACvC,EACD,CAAA,CAEqB;KACH,CAAA;;;;AC5D9B,IAAM,KAAgB,EACpB,sHACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,aAAa;GACb,SAAS;GACT,SAAS;GACV;EACD,QAAQ;GACN,MAAM;GACN,OAAO;GACR;EACF;CACD,kBAAkB;EAChB;GACE,SAAS;GACT,QAAQ;GACR,WACE;GACH;EACD;GACE,SAAS;GACT,QAAQ;GACR,WACE;GACH;EACD;GACE,SAAS;GACT,QAAQ;GACR,WACE;GACH;EACD;GACE,SAAS;GACT,QAAQ;GACR,WACE;GACH;EACD;GACE,SAAS;GACT,QAAQ;GACR,WACE;GACH;EACD;GACE,SAAS;GACT,QAAQ;GACR,WACE;GACH;EACD;GACE,SAAS;GACT,QAAQ;GACR,WACE;GACH;EACD;GACE,SAAS;GACT,QAAQ;GACR,WACE;GACH;EACF;CACD,iBAAiB;EACf,SAAS;EACT,QAAQ;EACT;CACF,CACF;AAED,SAAS,GAAM,EACb,cACA,aAAU,WACV,YAAS,IACT,cACA,aACA,GAAG,KAIA;AACH,QACE,kBAAC,OAAD;EACE,aAAU;EACV,gBAAc;EACd,eAAa,KAAU,KAAA;EACvB,MAAK;EACL,WAAW,EAAG,GAAc;GAAE;GAAS;GAAQ;GAAW,CAAC,CAAC;EAC5D,GAAI;YANN,CAQE,kBAAC,OAAD;GACE,aAAU;GACV,WAAU;GAET;GACG,CAAA,EACL,IACC,kBAAC,UAAD;GACE,aAAU;GACV,MAAK;GACL,SAAS;GACT,WAAU;GACV,cAAW;aAEX,kBAAC,GAAD,EAAG,WAAU,WAAY,CAAA;GAClB,CAAA,GACP,KACA;;;AAIV,SAAS,GAAW,EAClB,cACA,aACA,GAAG,KAC0B;AAC7B,QACE,kBAAC,MAAD;EACE,aAAU;EACV,WAAW,EAAG,WAAW,EAAU;EACnC,GAAI;EAEH;EACE,CAAA;;AAIT,SAAS,GAAiB,EACxB,cACA,aACA,GAAG,KAC2B;AAC9B,QACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EAAG,uCAAuC,EAAU;EAC/D,GAAI;EAEH;EACG,CAAA;;;;AC7IV,IAAM,KAAgB,EACpB,mEACA;CACE,UAAU,EACR,SAAS;EACP,SAAS;EACT,SAAS;EACT,aAAa;EACb,SAAS;EACT,MAAM;EACP,EACF;CACD,iBAAiB,EACf,SAAS,WACV;CACF,CACF,EAEK,KAAe;CACnB,SAAS;CACT,SAAS;CACT,aAAa;CACb,SAAS;CACT,MAAM;CACP,EAEK,KAAoB;CACxB,SAAS;CACT,SAAS;CACT,aAAa;CACb,SAAS;CACT,MAAM;CACP;AASD,SAAS,GAAM,EACb,cACA,aAAU,WACV,YACA,aACA,GAAG,KACU;AACb,QACE,kBAAC,OAAD;EACE,aAAU;EACV,gBAAc;EACd,MAAK;EACL,WAAW,EAAG,GAAc;GAAE;GAAS;GAAW,CAAC,CAAC;EACpD,GAAI;YALN,CAOG,GACA,KACC,kBAAC,UAAD;GACE,aAAU;GACV,MAAK;GACL,SAAS;GACT,WAAW,EACT,yJACA,MAAY,iBAAiB,mBAC9B;GACD,cAAW;aAEX,kBAAC,GAAD,EAAG,WAAU,WAAY,CAAA;GAClB,CAAA,CAEP;;;AAIV,SAAS,GAAY,EACnB,cACA,aAAU,WACV,aACA,GAAG,KAGF;CACD,IAAM,IAAgB,GAAa,IAC7B,IAAY,GAAkB;AAEpC,QACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EAAG,2BAA2B,EAAU;EACnD,GAAI;YAHN,CAKE,kBAAC,GAAD;GACE,aAAU;GACV,WAAW,EAAG,oBAAoB,EAAU;GAC5C,eAAY;GACZ,CAAA,EACF,kBAAC,OAAD;GACE,aAAU;GACV,WAAU;GAET;GACG,CAAA,CACF;;;AAIV,SAAS,GAAW,EAClB,cACA,GAAG,KACyB;AAC5B,QACE,kBAAC,KAAD;EACE,aAAU;EACV,WAAW,EAAG,WAAW,EAAU;EACnC,GAAI;EACJ,CAAA;;AAIN,SAAS,GAAiB,EACxB,cACA,GAAG,KACyB;AAC5B,QACE,kBAAC,KAAD;EACE,aAAU;EACV,WAAW,EACT,gDACA,EACD;EACD,GAAI;EACJ,CAAA;;AAIN,SAAS,GAAY,EACnB,cACA,GAAG,KAC2B;AAC9B,QACE,kBAAC,OAAD;EACE,aAAU;EACV,WAAW,EAAG,2CAA2C,EAAU;EACnE,GAAI;EACJ,CAAA"}
1
+ {"version":3,"file":"index.js","names":["React","React","React","React","React","count","useId","useCallbackRef","React","React","useLayoutEffect","React","EVENT_OPTIONS","GROUP_NAME","Collection","useCollection","createCollectionScope","React","useCallbackRef","ITEM_NAME","useId","wrapArray","focusFirst","Root","Item","React","React","React","React2","React","INDICATOR_NAME","BUBBLE_INPUT_NAME","RADIO_GROUP_NAME","createContextScope2","useRovingFocusGroupScope","RadioGroupProvider","useRadioGroupContext","RadioGroup","React2","RovingFocusGroup.Root","Primitive2","ITEM_NAME","RadioGroupItem","useComposedRefs2","RovingFocusGroup.Item","composeEventHandlers2","Root2","Item2","useCallbackRef","React","useCallbackRef","clamp","computePosition","arrow","clamp","flip","hide","offset","shift","limitShift","size","getComputedStyle","offset","offset$1","shift","shift$1","flip","flip$1","size","size$1","hide","hide$1","arrow","arrow$1","limitShift","limitShift$1","React","NAME","Arrow","React","Root","React","ANCHOR_NAME","CONTENT_NAME","arrow","floatingUIarrow","useCallbackRef","ARROW_NAME","ArrowPrimitive.Root","Root2","PORTAL_NAME","Portal","React","React","usePopperScope","TooltipProvider","React","Tooltip","useId","PopperPrimitive.Root","TRIGGER_NAME","TooltipTrigger","PopperPrimitive.Anchor","PORTAL_NAME","PortalProvider","usePortalContext","PortalPrimitive","CONTENT_NAME","TooltipContent","isPointInPolygon","PopperPrimitive.Content","VisuallyHiddenPrimitive.Root","ARROW_NAME","PopperPrimitive.Arrow","Root3","Trigger","Portal","Content2","Arrow2","React","useCallbackRef","focusFirst","React","React","React","React","React","React","SideCar","SELECTION_KEYS","Collection","useCollection","createCollectionScope","usePopperScope","React","useCallbackRef","PopperPrimitive.Root","PopperPrimitive.Anchor","PORTAL_NAME","PortalPrimitive","CONTENT_NAME","Slot","RemoveScroll","RovingFocusGroup.Root","PopperPrimitive.Content","GROUP_NAME","LABEL_NAME","ITEM_NAME","RovingFocusGroup.Item","CHECKBOX_ITEM_NAME","RADIO_GROUP_NAME","RADIO_ITEM_NAME","ITEM_INDICATOR_NAME","SEPARATOR_NAME","ARROW_NAME","PopperPrimitive.Arrow","SUB_NAME","useId","SUB_TRIGGER_NAME","SUB_CONTENT_NAME","wrapArray","Portal","Content2","Group","Label","Item2","RadioGroup","ItemIndicator","Separator","ContextMenu","React","useCallbackRef","MenuPrimitive.Root","TRIGGER_NAME","ContextMenuTrigger","MenuPrimitive.Anchor","PORTAL_NAME","MenuPrimitive.Portal","CONTENT_NAME","ContextMenuContent","MenuPrimitive.Content","GROUP_NAME","ContextMenuGroup","MenuPrimitive.Group","LABEL_NAME","ContextMenuLabel","MenuPrimitive.Label","ITEM_NAME","ContextMenuItem","MenuPrimitive.Item","ContextMenuCheckboxItem","MenuPrimitive.CheckboxItem","ContextMenuRadioGroup","MenuPrimitive.RadioGroup","ContextMenuRadioItem","MenuPrimitive.RadioItem","MenuPrimitive.ItemIndicator","SEPARATOR_NAME","ContextMenuSeparator","MenuPrimitive.Separator","ARROW_NAME","MenuPrimitive.Arrow","ContextMenuSub","MenuPrimitive.Sub","ContextMenuSubTrigger","MenuPrimitive.SubTrigger","ContextMenuSubContent","MenuPrimitive.SubContent","Root2","Trigger","Content2","Select","React","PopperPrimitive.Root","useId","SelectTrigger","PopperPrimitive.Anchor","SelectValue","PortalPrimitive","SelectContent","ReactDOM","Slot","RemoveScroll","PopperPrimitive.Content","SelectGroup","SelectLabel","SelectItem","SelectScrollUpButton","SelectScrollDownButton","SelectSeparator","PopperPrimitive.Arrow","useCallbackRef","Label","Separator"],"sources":["../src/lib/utils.ts","../src/components/ui/novie-logo.tsx","../src/components/ui/novie-symbol.tsx","../src/components/ui/icons/IconCalendar.tsx","../src/components/ui/icons/IconCancelClose.tsx","../src/components/ui/icons/IconChevronDown.tsx","../src/components/ui/icons/IconChevronRight.tsx","../src/components/ui/icons/IconChevronUp.tsx","../src/components/ui/icons/IconConfirmCheck.tsx","../src/components/ui/icons/IconError.tsx","../src/components/ui/icons/IconInfoCircle.tsx","../src/components/ui/icons/IconLoading.tsx","../src/components/ui/icons/IconMoreKebabHorizontal.tsx","../src/components/ui/icons/IconRemoveMinus.tsx","../src/components/ui/icons/IconSearch.tsx","../src/components/ui/icons/IconSuccess.tsx","../src/components/ui/button.tsx","../src/components/ui/input.tsx","../src/components/ui/label.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/switch.tsx","../node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-collection/dist/index.mjs","../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/@radix-ui/react-direction/dist/index.mjs","../node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/@radix-ui/react-use-previous/dist/index.mjs","../node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/@radix-ui/react-radio-group/dist/index.mjs","../src/components/ui/radio-group.tsx","../src/components/ui/separator.tsx","../src/components/ui/badge.tsx","../src/components/ui/tag.tsx","../src/components/ui/avatar.tsx","../src/components/ui/icon-button.tsx","../src/components/ui/progress.tsx","../src/components/ui/input-field.tsx","../src/components/ui/search-input.tsx","../src/components/ui/stepper.tsx","../src/components/ui/card.tsx","../src/components/ui/table.tsx","../src/components/ui/dialog.tsx","../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@radix-ui/react-arrow/dist/index.mjs","../node_modules/@radix-ui/react-popper/dist/index.mjs","../node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../node_modules/@radix-ui/react-tooltip/dist/index.mjs","../src/components/ui/tooltip.tsx","../node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../node_modules/aria-hidden/dist/es2015/index.js","../node_modules/tslib/tslib.es6.mjs","../node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/get-nonce/dist/es2015/index.js","../node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/@radix-ui/react-menu/dist/index.mjs","../node_modules/@radix-ui/react-context-menu/dist/index.mjs","../src/components/ui/context-menu.tsx","../node_modules/@radix-ui/number/dist/index.mjs","../node_modules/@radix-ui/react-select/dist/index.mjs","../src/components/ui/select.tsx","../src/components/ui/alert.tsx","../src/components/ui/toast.tsx"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { extendTailwindMerge } from \"tailwind-merge\"\n\nconst twMerge = extendTailwindMerge({\n extend: {\n classGroups: {\n \"font-size\": [\n \"text-display\",\n \"text-oversized\",\n \"text-h1\",\n \"text-h2\",\n \"text-h3\",\n \"text-h4\",\n \"text-body-lg\",\n \"text-body-lg-light\",\n \"text-body\",\n \"text-body-sm\",\n \"text-caption\",\n \"text-overline\",\n \"text-main-nav\",\n \"text-link-paragraph\",\n \"text-link-sm\",\n \"text-button-lg\",\n \"text-button\",\n \"text-button-sm\",\n \"text-select-item\",\n \"text-search-filter-item\",\n \"text-notification-message\",\n \"text-report-code\",\n \"text-label\",\n \"text-label-sm\",\n \"text-input-text-bold\",\n \"text-input-text\",\n \"text-help-text\",\n \"text-tab\",\n \"text-table-header\",\n ],\n },\n },\n})\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst logoVariants = cva(\"inline-flex shrink-0\", {\n variants: {\n size: {\n sm: \"h-4\",\n md: \"h-6\",\n lg: \"h-8\",\n xl: \"h-12\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\n/** Merged single-SVG logo (flower is smaller, embedded top-left of text) */\nfunction PrimaryLogo(props: React.ComponentProps<\"svg\">) {\n return (\n <svg viewBox=\"0 0 152 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M29.6559 10.4545C29.4679 9.91519 29.1836 9.41218 28.8213 8.96808C27.8997 7.84424 26.5241 7.17809 25.0568 7.15543C24.1443 7.15543 22.92 7.57234 20.8795 8.26568L19.8891 8.60102V7.48624C19.8891 5.35638 19.8891 4.07846 19.5911 3.22198C19.0913 1.8625 18.0045 0.793034 16.6289 0.294556C16.0879 0.0996957 15.5147 0 14.9369 0C14.3592 0 13.786 0.0996957 13.245 0.294556C11.8694 0.788503 10.7872 1.8625 10.2828 3.22198C9.98478 4.07393 9.98478 5.35185 9.98478 7.48624V8.59649L8.97142 8.27021C6.92178 7.61313 5.68832 7.21888 4.77584 7.23247C3.31312 7.28232 1.94669 7.97113 1.04338 9.1131C0.685726 9.56173 0.415191 10.0693 0.236363 10.6131C0.0667062 11.1523 -0.0158298 11.7233 0.00251152 12.2943C0.0529502 13.7399 0.749921 15.0903 1.90542 15.983C2.63449 16.5268 3.86336 16.9211 5.91301 17.5827L6.88051 17.8909L6.28442 18.702C5.01887 20.424 4.2577 21.4618 3.99175 22.3228C3.58824 23.714 3.82668 25.2094 4.64745 26.4103C4.96843 26.8816 5.37652 27.2985 5.84422 27.6338C6.31193 27.9692 6.83466 28.223 7.38948 28.3816C8.79718 28.7803 10.3103 28.5447 11.5255 27.7335C12.2729 27.2169 13.034 26.1837 14.3042 24.4572L15.0057 23.5055L15.7073 24.4572C16.9728 26.1792 17.734 27.2169 18.486 27.7335C19.7011 28.5447 21.2143 28.7803 22.622 28.3816C23.1768 28.223 23.6995 27.9737 24.1672 27.6338C24.6349 27.2985 25.0384 26.8861 25.364 26.4103C26.1848 25.2094 26.4232 23.714 26.0197 22.3228C25.7537 21.4618 24.9926 20.424 23.727 18.702L23.1126 17.8637L24.1259 17.5193C26.1664 16.8259 27.3861 16.409 28.106 15.8516C29.2432 14.9408 29.9172 13.5813 29.9401 12.1312C29.9493 11.5602 29.8576 10.9937 29.6696 10.4545H29.6559Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M33.4573 46.6382L33.6526 17.2696L40.3887 17.3147L51.8805 35.603H52.0258L51.9123 30.6173L51.9986 17.3868L58.3032 17.4274L58.1079 46.796L52.1757 46.7554L39.9027 27.7233H39.7392L39.8709 32.6864L39.7755 46.6743L33.4527 46.6337L33.4573 46.6382Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M73.1744 47.621C69.7723 47.5984 66.9833 46.521 64.8031 44.3888C62.6274 42.2566 61.5509 39.5564 61.569 36.2882C61.5917 32.993 62.7091 30.3018 64.9212 28.2101C67.1332 26.1185 69.9312 25.0862 73.3243 25.1087C76.7128 25.1313 79.5017 26.2041 81.682 28.3319C83.8668 30.4596 84.9478 33.1643 84.9251 36.446C84.9024 39.7142 83.7941 42.4009 81.5956 44.506C79.3972 46.6112 76.5901 47.6525 73.1744 47.63V47.621Z M73.2062 42.2476C74.7369 42.2566 76.0178 41.7112 77.0489 40.6112C78.0845 39.5113 78.6069 38.1049 78.616 36.3964C78.6296 34.6609 78.1209 33.2409 77.0943 32.141C76.0678 31.0411 74.7959 30.4866 73.2834 30.4731C71.7527 30.4641 70.4672 31.0005 69.4271 32.0869C68.3869 33.1733 67.86 34.5842 67.8464 36.3243C67.8373 38.0328 68.3369 39.4437 69.3589 40.5617C70.3764 41.6751 71.6573 42.2386 73.2016 42.2476H73.2062Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M93.637 47.0349L85.2839 25.8931L91.8974 25.9382L96.3987 38.6458L96.9847 40.5797H97.13L97.7841 38.6368L102.417 26.0103L108.908 26.0509L100.064 47.08L93.637 47.0394V47.0349Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M113.968 22.7827C112.946 22.7782 112.088 22.4266 111.393 21.7324C110.693 21.0381 110.348 20.1862 110.357 19.1719C110.366 18.1441 110.72 17.3011 111.429 16.634C112.137 15.9668 113 15.6377 114.018 15.6468C115.063 15.6558 115.93 15.9939 116.616 16.67C117.302 17.3462 117.638 18.1937 117.634 19.2215C117.629 20.2357 117.275 21.0832 116.584 21.7684C115.889 22.4536 115.022 22.7962 113.973 22.7872L113.968 22.7827Z M110.561 47.1476L110.702 26.0644L117.17 26.105L117.029 47.1882L110.561 47.1476Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M131.242 47.9996C127.854 47.9771 125.142 46.8997 123.111 44.7675C121.081 42.6353 120.073 39.9351 120.095 36.6669C120.118 33.4122 121.167 30.73 123.248 28.6158C125.328 26.5017 128.017 25.4604 131.31 25.4784C134.394 25.4964 136.933 26.4746 138.927 28.4085C140.921 30.3424 141.907 32.8127 141.884 35.8239L141.871 38.0373L123.189 37.9155L123.211 34.715L135.943 34.8006C135.857 33.5159 135.398 32.4701 134.567 31.6632C133.74 30.8562 132.636 30.4505 131.26 30.4415C129.743 30.4325 128.53 30.9599 127.622 32.0283C126.713 33.0967 126.25 34.5797 126.237 36.482C126.223 38.5466 126.741 40.183 127.794 41.3866C128.848 42.5902 130.256 43.1987 132.019 43.2078C132.805 43.2123 133.504 43.1086 134.117 42.8922C134.73 42.6758 135.285 42.3918 135.775 42.0402C136.266 41.6886 136.838 41.1161 137.492 40.3272L141.253 43.2664C140.254 44.5601 139.286 45.5158 138.36 46.1379C137.433 46.76 136.42 47.2288 135.321 47.5443C134.222 47.8599 132.864 48.0086 131.237 47.9996H131.242Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M147.985 47.7427C146.867 47.7336 145.927 47.3505 145.159 46.5841C144.392 45.8178 144.015 44.8847 144.019 43.7758C144.028 42.6803 144.419 41.7607 145.196 41.0169C145.972 40.2686 146.917 39.899 148.035 39.908C149.152 39.917 150.092 40.3002 150.86 41.053C151.628 41.8103 152.005 42.7344 152 43.8298C151.991 44.9388 151.6 45.8674 150.824 46.6202C150.047 47.373 149.102 47.7472 147.985 47.7382V47.7427Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n\n/** Symbol + wordmark side-by-side, bottom-aligned (flower is large, same height as text) */\nfunction SecondaryLogo(props: React.ComponentProps<\"svg\">) {\n return (\n <svg viewBox=\"0 0 202.46 48\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n {/* Flower symbol — 49.613 wide, 48 tall */}\n <path\n d=\"M29.6559 10.4545C29.4679 9.91519 29.1836 9.41218 28.8213 8.96808C27.8997 7.84424 26.5241 7.17809 25.0568 7.15543C24.1443 7.15543 22.92 7.57234 20.8795 8.26568L19.8891 8.60102V7.48624C19.8891 5.35638 19.8891 4.07846 19.5911 3.22198C19.0913 1.8625 18.0045 0.793034 16.6289 0.294556C16.0879 0.0996957 15.5147 0 14.9369 0C14.3592 0 13.786 0.0996957 13.245 0.294556C11.8694 0.788503 10.7872 1.8625 10.2828 3.22198C9.98478 4.07393 9.98478 5.35185 9.98478 7.48624V8.59649L8.97142 8.27021C6.92178 7.61313 5.68832 7.21888 4.77584 7.23247C3.31312 7.28232 1.94669 7.97113 1.04338 9.1131C0.685726 9.56173 0.415191 10.0693 0.236363 10.6131C0.0667062 11.1523 -0.0158298 11.7233 0.00251152 12.2943C0.0529502 13.7399 0.749921 15.0903 1.90542 15.983C2.63449 16.5268 3.86336 16.9211 5.91301 17.5827L6.88051 17.8909L6.28442 18.702C5.01887 20.424 4.2577 21.4618 3.99175 22.3228C3.58824 23.714 3.82668 25.2094 4.64745 26.4103C4.96843 26.8816 5.37652 27.2985 5.84422 27.6338C6.31193 27.9692 6.83466 28.223 7.38948 28.3816C8.79718 28.7803 10.3103 28.5447 11.5255 27.7335C12.2729 27.2169 13.034 26.1837 14.3042 24.4572L15.0057 23.5055L15.7073 24.4572C16.9728 26.1792 17.734 27.2169 18.486 27.7335C19.7011 28.5447 21.2143 28.7803 22.622 28.3816C23.1768 28.223 23.6995 27.9737 24.1672 27.6338C24.6349 27.2985 25.0384 26.8861 25.364 26.4103C26.1848 25.2094 26.4232 23.714 26.0197 22.3228C25.7537 21.4618 24.9926 20.424 23.727 18.702L23.1126 17.8637L24.1259 17.5193C26.1664 16.8259 27.3861 16.409 28.106 15.8516C29.2432 14.9408 29.9172 13.5813 29.9401 12.1312C29.9493 11.5602 29.8576 10.9937 29.6696 10.4545H29.6559Z\"\n fill=\"currentColor\"\n transform=\"translate(0, 0.58) scale(1.658)\"\n />\n {/* \"Novie.\" wordmark — offset right by 59 (49.613 symbol + 9.386 gap), bottom-aligned */}\n <g transform=\"translate(59, 9.114)\">\n <path\n d=\"M3.46758e-08 38.0536V1.90886H8.27733L22.4116 24.0932H22.5621L22.4116 18.4903V1.90886H30.2611V38.0536H22.9666L7.84942 14.96H7.67224L7.84942 20.5362V38.0536H3.46758e-08Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M48.4571 38.8861C44.3352 38.8861 40.9353 37.5723 38.2609 34.948C35.5865 32.3237 34.2493 29.0175 34.2493 25.0292C34.2493 21.041 35.5865 17.6946 38.2609 15.0837C40.9353 12.4762 44.3352 11.1724 48.4571 11.1724C52.5791 11.1724 55.9823 12.4795 58.6667 15.0971C61.3512 17.7147 62.6917 21.0243 62.6917 25.0292C62.6917 29.0342 61.3579 32.3237 58.6901 34.948C56.0224 37.5723 52.6125 38.8861 48.4538 38.8861H48.4571Z M48.4839 32.1465C50.3359 32.1465 51.8871 31.4779 53.1407 30.1407C54.3944 28.8035 55.0195 27.0986 55.0195 25.0292C55.0195 22.9599 54.3877 21.2148 53.1273 19.8943C51.8637 18.5738 50.3159 17.9119 48.4839 17.9119C46.6519 17.9119 45.0539 18.5772 43.8003 19.9044C42.5467 21.2349 41.9215 22.9432 41.9215 25.0292C41.9215 27.1153 42.5433 28.8035 43.7903 30.1407C45.0339 31.4779 46.6018 32.1465 48.4839 32.1465Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M72.2829 38.0536L62.0098 12.0048L70.1366 12.0048L75.6627 27.5265L76.3446 29.9234H76.4951L77.254 27.5265L82.7566 12.0048L90.7564 12.0048L80.2058 38.0536H72.2795H72.2829Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M96.8173 8.8891C95.5704 8.8891 94.5173 8.45785 93.6481 7.58867C92.7823 6.72282 92.3477 5.66643 92.3477 4.41948C92.3477 3.17253 92.7823 2.10611 93.6481 1.26366C94.514 0.421221 95.5704 0 96.8173 0C98.0643 0 99.1808 0.421221 100.023 1.26366C100.866 2.10611 101.287 3.15582 101.287 4.41948C101.287 5.68314 100.866 6.71948 100.023 7.58867C99.1808 8.45451 98.1144 8.8891 96.8173 8.8891Z M92.8558 38.0537L92.8558 12.0048L100.806 12.0048L100.806 38.0537L92.8558 38.0537Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M118.169 38.8861C114.047 38.8861 110.718 37.5823 108.187 34.9747C105.653 32.3672 104.389 29.0509 104.389 25.0292C104.389 21.0076 105.663 17.7347 108.214 15.1105C110.764 12.4862 114.041 11.1724 118.046 11.1724C122.05 11.1724 125.002 12.3625 127.459 14.7427C129.917 17.123 131.144 20.1752 131.144 23.8926V26.6172H108.2V22.6289H123.872C123.755 21.0644 123.177 19.7907 122.144 18.8045C121.108 17.8183 119.74 17.3269 118.042 17.3269C116.19 17.3269 114.692 17.9922 113.549 19.3193C112.406 20.6499 111.834 22.4818 111.834 24.822C111.834 27.3292 112.493 29.3116 113.817 30.7659C115.137 32.2201 116.859 32.9488 118.978 32.9488C119.938 32.9488 120.797 32.8151 121.552 32.5443C122.308 32.2769 122.99 31.9125 123.598 31.4579C124.203 31.0032 124.895 30.2711 125.668 29.2615L130.438 32.7182C129.241 34.3663 128.081 35.5965 126.955 36.4022C125.828 37.2079 124.581 37.823 123.221 38.2442C121.857 38.6654 120.175 38.876 118.173 38.876L118.169 38.8861Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M138.562 38.4582C137.181 38.4582 136.021 37.9901 135.078 37.0574C134.136 36.1247 133.664 34.9747 133.664 33.6108C133.664 32.2468 134.136 31.1002 135.078 30.1641C136.021 29.2314 137.181 28.7634 138.562 28.7634C139.942 28.7634 141.102 29.2314 142.045 30.1641C142.988 31.0968 143.459 32.2468 143.459 33.6108C143.459 34.9747 142.988 36.1214 142.045 37.0574C141.102 37.9901 139.942 38.4582 138.562 38.4582Z\"\n fill=\"currentColor\"\n />\n </g>\n </svg>\n )\n}\n\nfunction NovieLogo({\n className,\n size,\n variant = \"primary\",\n ...props\n}: React.ComponentProps<\"svg\"> &\n VariantProps<typeof logoVariants> & {\n variant?: \"primary\" | \"secondary\"\n }) {\n const Comp = variant === \"secondary\" ? SecondaryLogo : PrimaryLogo\n return (\n <Comp\n data-slot=\"novie-logo\"\n className={cn(logoVariants({ size }), \"w-auto\", className)}\n {...props}\n />\n )\n}\n\nexport { NovieLogo, logoVariants }\n","import { cn } from \"@/lib/utils\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nconst symbolVariants = cva(\"inline-block shrink-0 w-auto\", {\n variants: {\n size: {\n sm: \"h-3\",\n md: \"h-6\",\n lg: \"h-12\",\n xl: \"h-[72px]\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n})\n\nfunction NovieSymbol({\n className,\n size,\n ...props\n}: React.ComponentProps<\"svg\"> & VariantProps<typeof symbolVariants>) {\n return (\n <svg\n data-slot=\"novie-symbol\"\n viewBox=\"0 0 30 29\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn(symbolVariants({ size }), className)}\n {...props}\n >\n <path\n d=\"M29.6559 10.4545C29.4679 9.91519 29.1836 9.41218 28.8213 8.96808C27.8997 7.84424 26.5241 7.17809 25.0568 7.15543C24.1443 7.15543 22.92 7.57234 20.8795 8.26568L19.8891 8.60102V7.48624C19.8891 5.35638 19.8891 4.07846 19.5911 3.22198C19.0913 1.8625 18.0045 0.793034 16.6289 0.294556C16.0879 0.0996957 15.5147 0 14.9369 0C14.3592 0 13.786 0.0996957 13.245 0.294556C11.8694 0.788503 10.7872 1.8625 10.2828 3.22198C9.98478 4.07393 9.98478 5.35185 9.98478 7.48624V8.59649L8.97142 8.27021C6.92178 7.61313 5.68832 7.21888 4.77584 7.23247C3.31312 7.28232 1.94669 7.97113 1.04338 9.1131C0.685726 9.56173 0.415191 10.0693 0.236363 10.6131C0.0667062 11.1523 -0.0158298 11.7233 0.00251152 12.2943C0.0529502 13.7399 0.749921 15.0903 1.90542 15.983C2.63449 16.5268 3.86336 16.9211 5.91301 17.5827L6.88051 17.8909L6.28442 18.702C5.01887 20.424 4.2577 21.4618 3.99175 22.3228C3.58824 23.714 3.82668 25.2094 4.64745 26.4103C4.96843 26.8816 5.37652 27.2985 5.84422 27.6338C6.31193 27.9692 6.83466 28.223 7.38948 28.3816C8.79718 28.7803 10.3103 28.5447 11.5255 27.7335C12.2729 27.2169 13.034 26.1837 14.3042 24.4572L15.0057 23.5055L15.7073 24.4572C16.9728 26.1792 17.734 27.2169 18.486 27.7335C19.7011 28.5447 21.2143 28.7803 22.622 28.3816C23.1768 28.223 23.6995 27.9737 24.1672 27.6338C24.6349 27.2985 25.0384 26.8861 25.364 26.4103C26.1848 25.2094 26.4232 23.714 26.0197 22.3228C25.7537 21.4618 24.9926 20.424 23.727 18.702L23.1126 17.8637L24.1259 17.5193C26.1664 16.8259 27.3861 16.409 28.106 15.8516C29.2432 14.9408 29.9172 13.5813 29.9401 12.1312C29.9493 11.5602 29.8576 10.9937 29.6696 10.4545H29.6559Z\"\n fill=\"currentColor\"\n />\n </svg>\n )\n}\n\nexport { NovieSymbol, symbolVariants }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconCalendar({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M16 3V7M8 3V7M3 11H21M5 5H19C20.1046 5 21 5.89543 21 7V18C21 19.1046 20.1046 20 19 20H5C3.89543 20 3 19.1046 3 18V7C3 5.89543 3.89543 5 5 5Z\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nexport { IconCalendar }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconCancelClose({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M18 6L6 18M6 6L18 18\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nexport { IconCancelClose }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconChevronDown({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M6 9L12 15L18 9\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nexport { IconChevronDown }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconChevronRight({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M9 18L15 12L9 6\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nexport { IconChevronRight }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconChevronUp({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M18 15L12 9L6 15\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nexport { IconChevronUp }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconConfirmCheck({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M20 6L9 17L4 12\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nexport { IconConfirmCheck }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconError({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M12 8.99996V13M12 17H12.01M10.29 3.85996L1.82002 18C1.64539 18.3024 1.55299 18.6453 1.55201 18.9945C1.55103 19.3437 1.64151 19.6871 1.81445 19.9905C1.98738 20.2939 2.23675 20.5467 2.53773 20.7238C2.83871 20.9009 3.18082 20.9961 3.53002 21H20.47C20.8192 20.9961 21.1613 20.9009 21.4623 20.7238C21.7633 20.5467 22.0127 20.2939 22.1856 19.9905C22.3585 19.6871 22.449 19.3437 22.448 18.9945C22.4471 18.6453 22.3547 18.3024 22.18 18L13.71 3.85996C13.5318 3.56607 13.2807 3.32308 12.9812 3.15444C12.6817 2.98581 12.3438 2.89722 12 2.89722C11.6563 2.89722 11.3184 2.98581 11.0188 3.15444C10.7193 3.32308 10.4683 3.56607 10.29 3.85996Z\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nexport { IconError }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconInfoCircle({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M12 12L12 16.5M12 8.66455V8.625M3 12C3 7.02944 7.02944 3 12 3C16.9706 3 21 7.02944 21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12Z\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nexport { IconInfoCircle }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconLoading({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M12 2V6M12 18V22M4.93 4.93L7.76 7.76M16.24 16.24L19.07 19.07M2 12H6M18 12H22M4.93 19.07L7.76 16.24M16.24 7.76L19.07 4.93\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nexport { IconLoading }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconMoreKebabHorizontal({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M12 13C12.5523 13 13 12.5523 13 12C13 11.4477 12.5523 11 12 11C11.4477 11 11 11.4477 11 12C11 12.5523 11.4477 13 12 13Z\" fill=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/><path d=\"M19 13C19.5523 13 20 12.5523 20 12C20 11.4477 19.5523 11 19 11C18.4477 11 18 11.4477 18 12C18 12.5523 18.4477 13 19 13Z\" fill=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/><path d=\"M5 13C5.55228 13 6 12.5523 6 12C6 11.4477 5.55228 11 5 11C4.44772 11 4 11.4477 4 12C4 12.5523 4.44772 13 5 13Z\" fill=\"currentColor\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nexport { IconMoreKebabHorizontal }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconRemoveMinus({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M5.25 12H18.75\" strokeWidth=\"1.5\" strokeLinecap=\"round\"/>\n </svg>\n )\n}\n\nexport { IconRemoveMinus }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconSearch({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M21 21L16.65 16.65M19 11C19 15.4183 15.4183 19 11 19C6.58172 19 3 15.4183 3 11C3 6.58172 6.58172 3 11 3C15.4183 3 19 6.58172 19 11Z\" strokeWidth=\"1.5\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n )\n}\n\nexport { IconSearch }\n","import { cn } from \"@/lib/utils\"\n\nfunction IconSuccess({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <svg\n data-slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={cn(\"h-6 w-6\", className)}\n {...props}\n >\n <path d=\"M7 14L10.1145 16.7252C10.3259 16.9102 10.6481 16.8848 10.8279 16.669L18 8.0625M22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12Z\" strokeWidth=\"1.5\" strokeLinecap=\"round\"/>\n </svg>\n )\n}\n\nexport { IconSuccess }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { IconLoading } from \"@/components/ui/icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:h-4 [&_svg]:w-4\",\n {\n variants: {\n variant: {\n default:\n \"bg-[hsl(var(--button-brand-default))] text-white hover:bg-[hsl(var(--button-brand-hover))] active:bg-[hsl(var(--button-brand-pressed))] disabled:bg-[hsl(var(--button-primary-bg-disabled))] disabled:text-[hsl(var(--button-primary-text-disabled))]\",\n secondary:\n \"bg-primary text-primary-foreground hover:bg-[hsl(var(--button-secondary-filled-hover))] disabled:bg-[hsl(var(--button-primary-bg-disabled))] disabled:text-[hsl(var(--button-text-disabled))]\",\n outline:\n \"border-[1.5px] border-primary bg-transparent text-primary hover:bg-accent disabled:border-[hsl(var(--button-primary-bg-disabled))] disabled:text-[hsl(var(--button-text-disabled))]\",\n danger:\n \"bg-destructive text-destructive-foreground hover:bg-[hsl(var(--button-danger-hover))] disabled:bg-[hsl(var(--button-danger-bg-disabled))] disabled:text-[hsl(var(--button-danger-text-disabled))]\",\n ghost:\n \"text-muted-foreground hover:bg-page-secondary disabled:text-[hsl(var(--button-ghost-text-disabled))]\",\n link:\n \"text-foreground underline underline-offset-4 hover:text-muted-foreground disabled:text-[hsl(var(--button-text-disabled))] h-auto p-0\",\n \"link-primary\":\n \"text-[hsl(var(--button-brand-default))] underline underline-offset-4 disabled:text-[hsl(var(--button-text-disabled))] h-auto p-0\",\n },\n size: {\n sm: \"h-8 gap-1.5 rounded-[20px] px-4 text-xs\",\n default: \"h-10 gap-2 rounded-[20px] px-5 text-sm\",\n lg: \"h-12 gap-2 rounded-[30px] px-6 text-sm\",\n xl: \"h-[58px] gap-2 rounded-[30px] px-8 text-base\",\n icon: \"h-10 w-10 rounded-[20px]\",\n \"icon-sm\": \"h-8 w-8 rounded-[20px]\",\n \"icon-lg\": \"h-12 w-12 rounded-[30px]\",\n \"icon-xl\": \"h-[58px] w-[58px] rounded-[30px]\",\n },\n },\n compoundVariants: [\n { variant: \"secondary\", size: \"sm\", className: \"rounded-[30px]\" },\n { variant: \"secondary\", size: \"default\", className: \"rounded-[30px]\" },\n { variant: \"outline\", size: \"sm\", className: \"rounded-[30px]\" },\n { variant: \"outline\", size: \"default\", className: \"rounded-[30px]\" },\n { variant: \"ghost\", size: \"sm\", className: \"rounded-[30px]\" },\n { variant: \"ghost\", size: \"default\", className: \"rounded-[30px]\" },\n ],\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n loading = false,\n disabled,\n children,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n loading?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n const isDisabled = disabled || loading\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading && <IconLoading className=\"animate-spin\" />}\n {children}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants }\n","import { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"flex h-8 w-full rounded-lg border border-input bg-background px-2.5 py-2 text-sm ring-offset-background transition-colors\",\n \"file:border-0 file:bg-transparent file:text-sm file:font-medium\",\n \"placeholder:text-primary-secondary\",\n \"focus-visible:outline-none focus-visible:shadow-[0_1px_2px_0_hsl(var(--shadow-sm))]\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"aria-[invalid]:border-destructive aria-[invalid]:ring-destructive/20\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","import { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<\"label\">) {\n return (\n <label\n data-slot=\"label\"\n className={cn(\n \"text-xs font-medium leading-4 text-foreground\",\n \"peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n \"group-data-[disabled=true]:cursor-not-allowed group-data-[disabled=true]:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { IconConfirmCheck, IconRemoveMinus } from \"@/components/ui/icons\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst checkboxVariants = cva(\n [\n \"peer shrink-0 rounded border-[1.5px] border-border bg-background transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=checked]:text-primary-foreground\",\n \"data-[state=indeterminate]:border-border data-[state=indeterminate]:text-foreground\",\n ].join(\" \"),\n {\n variants: {\n size: {\n sm: \"h-5 w-5\",\n md: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n }\n)\n\nconst iconVariants = cva(\"\", {\n variants: {\n size: {\n sm: \"h-4 w-4\",\n md: \"h-[18px] w-[18px]\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n})\n\nfunction Checkbox({\n className,\n size = \"sm\",\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root> &\n VariantProps<typeof checkboxVariants>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\"group\", checkboxVariants({ size, className }))}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current\"\n >\n <IconConfirmCheck className={cn(iconVariants({ size }), \"group-data-[state=indeterminate]:hidden\")} />\n <IconRemoveMinus className={cn(iconVariants({ size }), \"hidden group-data-[state=indeterminate]:block\")} />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox, checkboxVariants }\n","import * as React from \"react\"\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst switchVariants = cva(\n [\n \"peer inline-flex shrink-0 cursor-pointer items-center rounded-full\",\n \"transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n \"disabled:cursor-not-allowed\",\n \"data-[state=checked]:bg-[hsl(var(--button-brand-default))]\",\n \"data-[state=unchecked]:bg-[hsl(var(--icon-secondary))]\",\n \"disabled:data-[state=checked]:bg-[hsl(var(--button-brand-secondary))]\",\n \"disabled:data-[state=unchecked]:bg-[hsl(var(--button-primary-bg-disabled))]\",\n ].join(\" \"),\n {\n variants: {\n size: {\n sm: \"h-5 w-9\",\n md: \"h-[22px] w-10\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n }\n)\n\nconst thumbVariants = cva(\n [\n \"pointer-events-none block rounded-full bg-background shadow-[0px_2px_4px_0px_rgba(39,39,39,0.1)]\",\n \"ring-0 transition-transform\",\n \"data-[state=unchecked]:translate-x-0.5\",\n ].join(\" \"),\n {\n variants: {\n size: {\n sm: \"h-4 w-4 data-[state=checked]:translate-x-[18px]\",\n md: \"h-[18px] w-[18px] data-[state=checked]:translate-x-5\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n }\n)\n\ntype SwitchProps = React.ComponentProps<typeof SwitchPrimitive.Root> &\n VariantProps<typeof switchVariants>\n\nfunction Switch({ className, size, ...props }: SwitchProps) {\n return (\n <SwitchPrimitive.Root\n data-slot=\"switch\"\n className={cn(switchVariants({ size, className }))}\n {...props}\n >\n <SwitchPrimitive.Thumb className={cn(thumbVariants({ size }))} />\n </SwitchPrimitive.Root>\n )\n}\n\nexport { Switch, switchVariants, thumbVariants }\nexport type { SwitchProps }\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-previous/src/use-previous.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\n return React.useMemo(() => {\n if (ref.current.value !== value) {\n ref.current.previous = ref.current.value;\n ref.current.value = value;\n }\n return ref.current.previous;\n }, [value]);\n}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = \"on\",\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...radioProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n RadioBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar RadioBubbleInput = React.forwardRef(\n ({\n __scopeRadio,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nRadioBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\n\n// src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange,\n caller: RADIO_GROUP_NAME\n });\n return /* @__PURE__ */ jsx2(\n RadioGroupProvider,\n {\n scope: __scopeRadioGroup,\n name,\n required,\n disabled,\n value,\n onValueChange: setValue,\n children: /* @__PURE__ */ jsx2(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx2(\n Primitive2.div,\n {\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : void 0,\n dir: direction,\n ...groupProps,\n ref: forwardedRef\n }\n )\n }\n )\n }\n );\n }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React2.useRef(false);\n React2.useEffect(() => {\n const handleKeyDown = (event) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"keyup\", handleKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, []);\n return /* @__PURE__ */ jsx2(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !isDisabled,\n active: checked,\n children: /* @__PURE__ */ jsx2(\n Radio,\n {\n disabled: isDisabled,\n required: context.required,\n checked,\n ...radioScope,\n ...itemProps,\n name: context.name,\n ref: composedRefs,\n onCheck: () => context.onValueChange(itemProps.value),\n onKeyDown: composeEventHandlers2((event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })\n }\n )\n }\n );\n }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n Indicator,\n Item2 as Item,\n RadioGroup,\n RadioGroupIndicator,\n RadioGroupItem,\n Root2 as Root,\n createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst radioGroupItemVariants = cva(\n [\n \"peer aspect-square shrink-0 rounded-full border-[1.5px] transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n \"border-border bg-background\",\n \"data-[state=checked]:border-primary data-[state=checked]:bg-primary\",\n ].join(\" \"),\n {\n variants: {\n size: {\n sm: \"h-5 w-5\",\n md: \"h-6 w-6\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n }\n)\n\nconst radioGroupIndicatorVariants = cva(\n \"block rounded-full bg-primary-foreground\",\n {\n variants: {\n size: {\n sm: \"h-2.5 w-2.5\",\n md: \"h-3 w-3\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n }\n)\n\nfunction RadioGroup({\n className,\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root\n data-slot=\"radio-group\"\n className={cn(\"grid gap-3\", className)}\n {...props}\n />\n )\n}\n\nfunction RadioGroupItem({\n className,\n size = \"sm\",\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> &\n VariantProps<typeof radioGroupItemVariants>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(radioGroupItemVariants({ size, className }))}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <span className={cn(radioGroupIndicatorVariants({ size }))} />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n}\n\nexport { RadioGroup, RadioGroupItem, radioGroupItemVariants }\n","import * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype SeparatorVariant = \"full\" | \"middle\" | \"inset\"\n\ntype SeparatorProps = React.ComponentProps<typeof SeparatorPrimitive.Root> & {\n variant?: SeparatorVariant\n label?: string\n}\n\nfunction Separator({\n className,\n orientation = \"horizontal\",\n variant = \"full\",\n label,\n decorative = true,\n ...props\n}: SeparatorProps) {\n const isHorizontal = orientation === \"horizontal\"\n\n return (\n <div\n className={cn(\n \"flex shrink-0\",\n isHorizontal ? \"flex-col items-stretch\" : \"flex-row items-stretch\",\n variant === \"middle\" && (isHorizontal ? \"px-4\" : \"py-4\"),\n variant === \"inset\" && (isHorizontal ? \"pl-4\" : \"pt-4\"),\n label && isHorizontal && \"gap-2.5\",\n !isHorizontal && \"h-full self-stretch\",\n className\n )}\n >\n <SeparatorPrimitive.Root\n data-slot=\"separator\"\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-input\",\n isHorizontal ? \"h-px w-full\" : \"h-full w-px\"\n )}\n {...props}\n />\n {label && isHorizontal && (\n <span className=\"text-lg leading-7 text-foreground\">{label}</span>\n )}\n </div>\n )\n}\n\nexport { Separator }\nexport type { SeparatorProps, SeparatorVariant }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { IconMoreKebabHorizontal } from \"@/components/ui/icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center justify-center rounded-full text-[12px] leading-[16px] whitespace-nowrap text-white\",\n {\n variants: {\n variant: {\n default: \"bg-foreground\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n error: \"bg-error\",\n info: \"bg-info\",\n },\n size: {\n sm: \"h-1.5 w-1.5\",\n md: \"h-4 min-w-4\",\n },\n content: {\n none: \"\",\n dot: \"p-1\",\n number: \"p-0\",\n \"multi-number\": \"p-1\",\n text: \"p-3\",\n },\n stroke: {\n true: \"border-[1.5px] border-background\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n size: \"sm\",\n content: \"none\",\n className: \"h-1.5 w-1.5 p-0\",\n },\n {\n size: \"md\",\n content: \"number\",\n className: \"h-4 w-4 p-0\",\n },\n ],\n defaultVariants: {\n variant: \"default\",\n size: \"sm\",\n content: \"none\",\n stroke: false,\n },\n }\n)\n\ntype BadgeContentType = \"dot\" | \"number\" | \"multi-number\" | \"text\" | \"none\"\n\ntype BadgeProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof badgeVariants> & {\n content?: BadgeContentType\n stroke?: boolean\n }\n\nfunction Badge({\n className,\n variant = \"default\",\n size = \"sm\",\n content = \"none\",\n stroke = false,\n children,\n ...props\n}: BadgeProps) {\n const isDot = size === \"sm\" && content === \"none\"\n const isNumeric = content === \"number\" || content === \"multi-number\"\n\n return (\n <div\n data-slot=\"badge\"\n data-variant={variant}\n data-size={size}\n className={cn(badgeVariants({ variant, size, content, stroke, className }))}\n {...props}\n >\n {isDot ? null : (\n <span className={cn(\"text-center text-[12px] leading-[16px]\", isNumeric && \"font-medium\")}>\n {content === \"dot\" ? (\n <IconMoreKebabHorizontal className=\"h-4 w-4\" aria-hidden=\"true\" />\n ) : (\n children\n )}\n </span>\n )}\n </div>\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { IconCancelClose } from \"@/components/ui/icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst tagVariants = cva(\n \"inline-flex items-center whitespace-nowrap rounded-full text-sm font-medium transition-colors [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n outline: \"border-[1.5px] border-border text-foreground\",\n filled: \"bg-background text-foreground\",\n primary: \"bg-primary/10 text-primary border border-primary/20\",\n destructive: \"bg-destructive/10 text-destructive border border-destructive/20\",\n success: \"bg-success/10 text-success border border-success/20\",\n warning: \"bg-warning/10 text-warning border border-warning/20\",\n info: \"bg-info/10 text-info border border-info/20\",\n },\n size: {\n sm: \"h-6 gap-1 px-2 text-xs\",\n default: \"h-8 gap-1 px-4 text-sm\",\n lg: \"h-9 gap-1.5 px-4 text-sm\",\n },\n },\n compoundVariants: [\n { variant: \"filled\", size: \"default\", className: \"pl-4 pr-3\" },\n { variant: \"filled\", size: \"lg\", className: \"pl-4 pr-3\" },\n ],\n defaultVariants: {\n variant: \"outline\",\n size: \"default\",\n },\n }\n)\n\ntype TagProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof tagVariants> & {\n onDismiss?: () => void\n }\n\nfunction Tag({\n className,\n variant,\n size,\n onDismiss,\n children,\n ...props\n}: TagProps) {\n return (\n <div\n data-slot=\"tag\"\n className={cn(\n tagVariants({ variant, size }),\n onDismiss && \"pr-2\",\n className\n )}\n {...props}\n >\n {children}\n {onDismiss && (\n <button\n type=\"button\"\n aria-label=\"Dismiss\"\n onClick={onDismiss}\n className={cn(\n \"inline-flex items-center justify-center rounded-full transition-colors\",\n \"hover:bg-foreground/10 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n size === \"sm\" ? \"h-3.5 w-3.5\" : \"h-4 w-4\"\n )}\n >\n <IconCancelClose className={size === \"sm\" ? \"h-2.5 w-2.5\" : \"h-3 w-3\"} />\n </button>\n )}\n </div>\n )\n}\n\nexport { Tag, tagVariants }\nexport type { TagProps }\n","import * as AvatarPrimitive from \"@radix-ui/react-avatar\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst avatarVariants = cva(\n \"relative inline-flex shrink-0 items-center justify-center overflow-hidden bg-muted\",\n {\n variants: {\n size: {\n xs: \"h-6 w-6 text-xs\",\n sm: \"h-8 w-8 text-xs\",\n md: \"h-10 w-10 text-lg\",\n lg: \"h-12 w-12 text-lg\",\n },\n shape: {\n circle: \"rounded-full\",\n square: \"rounded-lg\",\n },\n },\n defaultVariants: {\n size: \"md\",\n shape: \"circle\",\n },\n }\n)\n\nconst statusDotVariants = cva(\n \"absolute bottom-0 right-0 block rounded-full border border-background shadow-sm\",\n {\n variants: {\n size: {\n xs: \"h-[4.5px] w-[4.5px]\",\n sm: \"h-1.5 w-1.5\",\n md: \"h-1.5 w-1.5\",\n lg: \"h-2 w-2\",\n },\n status: {\n online: \"bg-success\",\n busy: \"bg-destructive\",\n offline: \"bg-info\",\n away: \"bg-muted-foreground\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\ntype AvatarStatus = \"online\" | \"busy\" | \"offline\" | \"away\" | \"none\"\n\nfunction Avatar({\n className,\n size = \"md\",\n shape = \"circle\",\n status = \"none\",\n children,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root> &\n VariantProps<typeof avatarVariants> & {\n status?: AvatarStatus\n }) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n data-size={size}\n data-shape={shape}\n className={cn(avatarVariants({ size, shape, className }))}\n {...props}\n >\n {children}\n {status !== \"none\" && (\n <span\n data-slot=\"avatar-status\"\n className={cn(statusDotVariants({ size, status }))}\n aria-label={status}\n />\n )}\n </AvatarPrimitive.Root>\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"h-full w-full object-cover\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"flex h-full w-full items-center justify-center bg-muted font-medium text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback, avatarVariants }\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { IconLoading } from \"@/components/ui/icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst iconButtonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground hover:bg-[hsl(var(--icon-button-hover))] disabled:bg-[hsl(var(--icon-button-disabled))] active:bg-primary active:ring-2 active:ring-primary active:ring-offset-2\",\n ghost:\n \"text-foreground hover:bg-accent hover:text-accent-foreground active:bg-accent\",\n danger:\n \"bg-[hsl(var(--icon-button-danger-bg))] text-destructive-foreground hover:bg-[hsl(var(--icon-button-danger-hover))] hover:text-destructive disabled:bg-[hsl(var(--icon-button-danger-disabled))] active:bg-destructive\",\n },\n size: {\n sm: \"h-8 w-8 rounded-[30px] [&_svg]:h-3.5 [&_svg]:w-3.5\",\n default: \"h-10 w-10 rounded-[30px] [&_svg]:h-5 [&_svg]:w-5\",\n lg: \"h-12 w-12 rounded-[30px] [&_svg]:h-6 [&_svg]:w-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction IconButton({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n loading = false,\n disabled,\n children,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof iconButtonVariants> & {\n asChild?: boolean\n loading?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n const isDisabled = disabled || loading\n\n return (\n <Comp\n data-slot=\"icon-button\"\n data-variant={variant}\n data-size={size}\n className={cn(iconButtonVariants({ variant, size, className }))}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n {...props}\n >\n {loading ? <IconLoading className=\"animate-spin\" /> : children}\n </Comp>\n )\n}\n\nexport { IconButton, iconButtonVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst progressTrackVariants = cva(\n \"relative w-full overflow-hidden rounded-full bg-surface-inset\",\n {\n variants: {\n size: {\n sm: \"h-1\",\n md: \"h-2\",\n },\n },\n defaultVariants: {\n size: \"sm\",\n },\n }\n)\n\nconst indicatorVariants = cva(\n \"h-full rounded-full transition-all duration-300 ease-in-out\",\n {\n variants: {\n status: {\n default: \"bg-foreground\",\n success: \"bg-success\",\n warning: \"bg-warning\",\n error: \"bg-destructive\",\n },\n },\n defaultVariants: {\n status: \"default\",\n },\n }\n)\n\nconst labelColorVariants = cva(\"text-base font-medium leading-6\", {\n variants: {\n status: {\n default: \"text-muted-foreground\",\n success: \"text-success\",\n warning: \"text-warning\",\n error: \"text-destructive\",\n },\n },\n defaultVariants: {\n status: \"default\",\n },\n})\n\ntype ProgressProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof progressTrackVariants> &\n VariantProps<typeof indicatorVariants> & {\n value?: number\n max?: number\n label?: string\n helperText?: string\n showLabel?: boolean\n indeterminate?: boolean\n statusText?: string\n }\n\nfunction Progress({\n className,\n value = 0,\n max = 100,\n size = \"sm\",\n status = \"default\",\n label,\n helperText,\n showLabel = false,\n indeterminate = false,\n statusText,\n ...props\n}: ProgressProps) {\n const clampedValue = Math.min(Math.max(value, 0), max)\n const percentage = max > 0 ? (clampedValue / max) * 100 : 0\n const resolvedStatus = status ?? \"default\"\n\n return (\n <div\n data-slot=\"progress\"\n className={cn(\"flex w-full flex-col gap-1\", className)}\n {...props}\n >\n {showLabel && (\n <div className=\"flex items-end justify-between\">\n <span className={cn(labelColorVariants({ status: resolvedStatus }))}>\n {indeterminate ? (label ?? \"Loading\") : (label ?? \"\")}\n </span>\n <div className=\"flex items-end gap-2\">\n <span className=\"text-lg font-bold leading-7 text-foreground\">\n {indeterminate ? \"Loading\" : `${Math.round(percentage)}%`}\n </span>\n {!indeterminate && statusText && (\n <span className=\"pb-0.5 text-[10px] font-medium leading-4 tracking-[0.5px] text-muted-foreground\">\n {statusText}\n </span>\n )}\n </div>\n </div>\n )}\n\n <div\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : clampedValue}\n aria-valuemin={0}\n aria-valuemax={max}\n className={cn(progressTrackVariants({ size }))}\n >\n <div\n data-slot=\"progress-indicator\"\n className={cn(\n indicatorVariants({ status }),\n indeterminate && \"animate-progress-indeterminate\"\n )}\n style={\n indeterminate\n ? { width: \"50%\" }\n : { width: `${percentage}%` }\n }\n />\n </div>\n\n {showLabel && helperText && (\n <span className=\"text-[10px] leading-4 text-muted-foreground\">\n {helperText}\n </span>\n )}\n </div>\n )\n}\n\nexport { Progress, progressTrackVariants, indicatorVariants }\n","import { useId } from \"react\"\nimport { IconCalendar, IconChevronDown, IconSearch, IconCancelClose } from \"@/components/ui/icons\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Input } from \"./input\"\nimport { Label } from \"./label\"\n\ntype InputType = \"text\" | \"select\" | \"search\" | \"number\" | \"calendar\"\n\ntype InputFieldProps = Omit<React.ComponentProps<\"input\">, \"type\"> & {\n label?: string\n required?: boolean\n helpText?: string\n errorMessage?: string\n inputType?: InputType\n clearable?: boolean\n onClear?: () => void\n prefixLabel?: string\n}\n\nfunction InputField({\n className,\n label,\n required = false,\n helpText,\n errorMessage,\n inputType = \"text\",\n clearable = false,\n onClear,\n prefixLabel,\n disabled,\n value,\n id,\n ...props\n}: InputFieldProps) {\n const generatedId = useId()\n const fieldId = id ?? generatedId\n\n const isError = !!errorMessage\n const helpId = helpText ? `${fieldId}-help` : undefined\n const errorId = isError ? `${fieldId}-error` : undefined\n const describedBy =\n [helpId, errorId].filter(Boolean).join(\" \") || undefined\n\n const labelElement = label ? (\n <Label data-slot=\"input-field-label\" htmlFor={fieldId}>\n {label}\n {required && <span className=\"text-destructive\">*</span>}\n </Label>\n ) : null\n\n const helpElement =\n helpText && !isError ? (\n <p\n data-slot=\"input-field-help\"\n id={helpId}\n className=\"text-xs font-medium leading-4 text-muted-foreground\"\n >\n {helpText}\n </p>\n ) : null\n\n const errorElement = isError ? (\n <p\n data-slot=\"input-field-error\"\n id={errorId}\n role=\"alert\"\n className=\"text-xs font-medium leading-4 text-destructive\"\n >\n {errorMessage}\n </p>\n ) : null\n\n const leftIcon = inputType === \"search\" ? <IconSearch /> : undefined\n const showChevron = inputType === \"select\"\n const showCalendar = inputType === \"calendar\"\n\n const nativeType =\n inputType === \"number\"\n ? \"tel\"\n : inputType === \"search\"\n ? \"search\"\n : \"text\"\n\n const inputWrapper =\n inputType === \"number\" && prefixLabel ? (\n <div\n data-slot=\"input-field-number-group\"\n className=\"flex items-start gap-2\"\n >\n <div\n data-slot=\"input-field-prefix\"\n data-disabled={disabled || undefined}\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-lg border border-input bg-background px-2.5 text-sm shadow-sm transition-colors\",\n \"focus-within:border-ring\",\n isError && \"border-destructive\",\n disabled && \"cursor-not-allowed opacity-50\"\n )}\n >\n <span className=\"text-muted-foreground\">{prefixLabel}</span>\n </div>\n <div\n data-slot=\"input-wrapper\"\n data-disabled={disabled || undefined}\n className={cn(\n \"flex h-8 w-full items-center gap-1.5 rounded-lg border border-input bg-background px-2.5 shadow-sm transition-colors\",\n \"focus-within:border-ring\",\n isError && \"border-destructive\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n >\n <Input\n id={fieldId}\n type=\"tel\"\n disabled={disabled}\n value={value}\n aria-invalid={isError || undefined}\n aria-describedby={describedBy}\n data-slot=\"input-field-input\"\n className=\"h-full border-0 bg-transparent px-0 shadow-none ring-0 ring-offset-0 focus-visible:ring-0 focus-visible:ring-offset-0\"\n {...props}\n />\n </div>\n </div>\n ) : (\n <div\n data-slot=\"input-wrapper\"\n data-disabled={disabled || undefined}\n className={cn(\n \"flex h-8 w-full items-center gap-1.5 rounded-lg border border-input bg-background px-2.5 transition-colors\",\n \"focus-within:border-ring\",\n isError && \"border-destructive\",\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n >\n {leftIcon && (\n <span\n data-slot=\"input-field-icon\"\n className=\"inline-flex shrink-0 text-muted-foreground [&_svg]:h-4 [&_svg]:w-4\"\n >\n {leftIcon}\n </span>\n )}\n\n <Input\n id={fieldId}\n type={nativeType}\n disabled={disabled}\n value={value}\n aria-invalid={isError || undefined}\n aria-describedby={describedBy}\n data-slot=\"input-field-input\"\n className=\"h-full border-0 bg-transparent px-0 shadow-none ring-0 ring-offset-0 focus-visible:ring-0 focus-visible:ring-offset-0\"\n {...props}\n />\n\n {clearable && value && !disabled && (\n <button\n type=\"button\"\n onClick={onClear}\n data-slot=\"input-field-clear\"\n className=\"inline-flex shrink-0 text-muted-foreground hover:text-foreground [&_svg]:h-4 [&_svg]:w-4\"\n aria-label=\"Clear input\"\n >\n <IconCancelClose />\n </button>\n )}\n\n {showChevron && (\n <span\n data-slot=\"input-field-chevron\"\n className=\"inline-flex shrink-0 text-muted-foreground [&_svg]:h-4 [&_svg]:w-4\"\n >\n <IconChevronDown />\n </span>\n )}\n\n {showCalendar && (\n <span\n data-slot=\"input-field-calendar\"\n className=\"inline-flex shrink-0 text-muted-foreground [&_svg]:h-4 [&_svg]:w-4\"\n >\n <IconCalendar />\n </span>\n )}\n </div>\n )\n\n if (!label && !helpText && !errorMessage) {\n return inputWrapper\n }\n\n return (\n <div data-slot=\"input-field\" className=\"flex flex-col gap-1\">\n {labelElement}\n {inputWrapper}\n {helpElement}\n {errorElement}\n </div>\n )\n}\n\nexport { InputField }\nexport type { InputFieldProps, InputType }\n","import * as React from \"react\"\nimport { IconSearch, IconCancelClose, IconLoading } from \"@/components/ui/icons\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Input } from \"./input\"\n\nfunction SearchInput({\n className,\n inputSize = \"sm\",\n clearable = true,\n onClear,\n loading = false,\n disabled,\n value,\n defaultValue,\n onChange,\n placeholder = \"Type to Search...\",\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"size\" | \"type\"> & {\n inputSize?: \"sm\" | \"default\"\n clearable?: boolean\n onClear?: () => void\n loading?: boolean\n}) {\n const [internalValue, setInternalValue] = React.useState(\n defaultValue ?? \"\"\n )\n\n const isControlled = value !== undefined\n const currentValue = isControlled ? value : internalValue\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(e.target.value)\n }\n onChange?.(e)\n }\n\n const handleClear = () => {\n if (!isControlled) {\n setInternalValue(\"\")\n }\n onClear?.()\n }\n\n const hasValue = String(currentValue).length > 0\n const showClear = clearable && hasValue && !disabled && !loading\n const showLoader = loading && !disabled\n\n return (\n <div\n data-slot=\"search-input\"\n className={cn(\n \"flex items-center gap-2 rounded-full border border-input bg-background px-3\",\n \"transition-colors\",\n inputSize === \"sm\" && \"h-8\",\n inputSize === \"default\" && \"h-10\",\n disabled && \"cursor-not-allowed bg-secondary opacity-60\",\n className\n )}\n >\n <span\n className={cn(\n \"inline-flex shrink-0 [&_svg]:h-[18px] [&_svg]:w-[18px]\",\n disabled ? \"text-muted-foreground/50\" : \"text-muted-foreground\"\n )}\n >\n <IconSearch />\n </span>\n\n <Input\n type=\"search\"\n disabled={disabled}\n value={currentValue}\n onChange={handleChange}\n placeholder={placeholder}\n className={cn(\n \"h-full border-0 bg-transparent px-0 text-[18px] leading-7 shadow-none ring-0 ring-offset-0\",\n \"focus-visible:ring-0 focus-visible:ring-offset-0\",\n \"placeholder:text-muted-foreground\",\n \"text-foreground\",\n \"[&::-webkit-search-cancel-button]:hidden [&::-webkit-search-decoration]:hidden\"\n )}\n {...props}\n />\n\n {showLoader && (\n <span className=\"inline-flex shrink-0 animate-spin text-muted-foreground [&_svg]:h-4 [&_svg]:w-4\">\n <IconLoading />\n </span>\n )}\n\n {showClear && (\n <button\n type=\"button\"\n onClick={handleClear}\n disabled={disabled}\n className={cn(\n \"inline-flex h-6 w-6 shrink-0 items-center justify-center rounded-full\",\n \"bg-foreground/5 text-muted-foreground transition-colors hover:bg-foreground/10 hover:text-foreground\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n )}\n aria-label=\"Clear search\"\n >\n <IconCancelClose className=\"h-3.5 w-3.5\" />\n </button>\n )}\n </div>\n )\n}\n\nexport { SearchInput }\n","import * as React from \"react\"\nimport { IconConfirmCheck } from \"@/components/ui/icons\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype StepStatus = \"completed\" | \"active\" | \"upcoming\" | \"inactive\"\n\ntype StepperContextValue = {\n activeStep: number\n orientation: \"horizontal\" | \"vertical\"\n totalSteps: number\n}\n\nconst StepperContext = React.createContext<StepperContextValue>({\n activeStep: 0,\n orientation: \"horizontal\",\n totalSteps: 0,\n})\n\nfunction useStepperContext() {\n return React.useContext(StepperContext)\n}\n\nfunction getStepStatus(index: number, activeStep: number): StepStatus {\n if (index < activeStep) return \"completed\"\n if (index === activeStep) return \"active\"\n return \"inactive\"\n}\n\nfunction StepIndicator({ status }: { status: StepStatus }) {\n return (\n <div\n data-slot=\"stepper-indicator\"\n className={cn(\n \"relative flex h-8 w-8 shrink-0 items-center justify-center rounded-full border-2 transition-colors duration-300\",\n status === \"completed\" &&\n \"border-primary bg-primary text-primary-foreground\",\n status === \"active\" && \"border-primary bg-background\",\n status === \"inactive\" && \"border-muted bg-background\"\n )}\n >\n {status === \"completed\" && <IconConfirmCheck className=\"h-4 w-4\" />}\n {status === \"active\" && (\n <div\n data-slot=\"stepper-dot\"\n className=\"h-2.5 w-2.5 rounded-full bg-primary\"\n />\n )}\n {status === \"inactive\" && (\n <div\n data-slot=\"stepper-dot\"\n className=\"h-2.5 w-2.5 rounded-full bg-muted\"\n />\n )}\n </div>\n )\n}\n\nfunction StepperSeparator({\n completed,\n orientation,\n}: {\n completed: boolean\n orientation: \"horizontal\" | \"vertical\"\n}) {\n return (\n <div\n data-slot=\"stepper-separator\"\n className={cn(\n \"transition-colors duration-300\",\n orientation === \"horizontal\"\n ? \"h-0.5 flex-1\"\n : \"h-20 w-0.5\",\n completed ? \"bg-primary\" : \"bg-surface-inset\"\n )}\n />\n )\n}\n\ntype StepperItemProps = {\n className?: string\n label?: string\n description?: string\n children?: React.ReactNode\n}\n\nfunction StepperItem({\n className,\n label,\n description,\n children,\n}: StepperItemProps) {\n return (\n <div data-slot=\"stepper-item\" className={className}>\n {children ?? (\n <>\n {label && (\n <span\n data-slot=\"stepper-item-label\"\n className=\"text-sm font-medium leading-5\"\n >\n {label}\n </span>\n )}\n {description && (\n <span\n data-slot=\"stepper-item-description\"\n className=\"text-xs text-muted-foreground\"\n >\n {description}\n </span>\n )}\n </>\n )}\n </div>\n )\n}\n\ntype StepperProps = Omit<React.ComponentProps<\"div\">, \"children\"> & {\n activeStep?: number\n orientation?: \"horizontal\" | \"vertical\"\n children?: React.ReactNode\n steps?: Array<{ label: string; description?: string }>\n}\n\nfunction Stepper({\n className,\n activeStep = 0,\n orientation = \"horizontal\",\n steps,\n children,\n ...props\n}: StepperProps) {\n const items = steps\n ? steps.map((s, i) => (\n <StepperItem key={i} label={s.label} description={s.description} />\n ))\n : React.Children.toArray(children)\n\n const totalSteps = items.length\n\n const contextValue: StepperContextValue = {\n activeStep,\n orientation,\n totalSteps,\n }\n\n const hasLabels = items.some(\n (child) =>\n React.isValidElement<StepperItemProps>(child) && child.props.label\n )\n\n if (orientation === \"horizontal\") {\n return (\n <StepperContext.Provider value={contextValue}>\n <div\n data-slot=\"stepper\"\n className={cn(\"flex flex-col gap-2\", className)}\n {...props}\n >\n {/* Row 1: indicators + separators */}\n <div className=\"flex flex-row items-center\">\n {items.map((_, index) => {\n const status = getStepStatus(index, activeStep)\n const isLast = index === totalSteps - 1\n return (\n <React.Fragment key={index}>\n <StepIndicator status={status} />\n {!isLast && (\n <StepperSeparator\n completed={index < activeStep}\n orientation=\"horizontal\"\n />\n )}\n </React.Fragment>\n )\n })}\n </div>\n {/* Row 2: labels (only if any step has a label) */}\n {hasLabels && (\n <div className=\"flex flex-row\">\n {items.map((child, index) => {\n const status = getStepStatus(index, activeStep)\n const isLast = index === totalSteps - 1\n return (\n <React.Fragment key={index}>\n <div\n data-slot=\"stepper-step-content\"\n className=\"flex flex-col items-center text-center\"\n style={{ width: 32 }}\n >\n {React.isValidElement<StepperItemProps>(child) && (\n <>\n {child.props.label && (\n <span\n data-slot=\"stepper-label\"\n className={cn(\n \"whitespace-nowrap text-sm leading-5\",\n status === \"active\"\n ? \"font-semibold text-foreground\"\n : status === \"completed\"\n ? \"font-normal text-foreground\"\n : \"font-normal text-info\"\n )}\n >\n {child.props.label}\n </span>\n )}\n {child.props.description && (\n <span\n data-slot=\"stepper-description\"\n className=\"whitespace-nowrap text-xs text-muted-foreground\"\n >\n {child.props.description}\n </span>\n )}\n </>\n )}\n </div>\n {!isLast && <div className=\"flex-1\" />}\n </React.Fragment>\n )\n })}\n </div>\n )}\n </div>\n </StepperContext.Provider>\n )\n }\n\n return (\n <StepperContext.Provider value={contextValue}>\n <div\n data-slot=\"stepper\"\n className={cn(\"flex flex-col items-start\", className)}\n {...props}\n >\n {items.map((child, index) => {\n const status = getStepStatus(index, activeStep)\n const isLast = index === totalSteps - 1\n return (\n <React.Fragment key={index}>\n <div\n data-slot=\"stepper-step\"\n className=\"flex flex-row items-start gap-4\"\n >\n <div\n data-slot=\"stepper-step-indicator-group\"\n className=\"flex flex-col items-center\"\n >\n <StepIndicator status={status} />\n {!isLast && (\n <StepperSeparator\n completed={index < activeStep}\n orientation=\"vertical\"\n />\n )}\n </div>\n {React.isValidElement<StepperItemProps>(child) && (\n <div\n data-slot=\"stepper-step-content\"\n className=\"flex flex-col pb-8\"\n >\n {child.props.label && (\n <span\n data-slot=\"stepper-label\"\n className={cn(\n \"text-sm leading-8\",\n status === \"active\"\n ? \"font-semibold text-foreground\"\n : status === \"completed\"\n ? \"font-normal text-foreground\"\n : \"font-normal text-muted-foreground\"\n )}\n >\n {child.props.label}\n </span>\n )}\n {child.props.description && (\n <span\n data-slot=\"stepper-description\"\n className=\"text-xs text-muted-foreground\"\n >\n {child.props.description}\n </span>\n )}\n </div>\n )}\n </div>\n </React.Fragment>\n )\n })}\n </div>\n </StepperContext.Provider>\n )\n}\n\nexport { Stepper, StepperItem, useStepperContext }\nexport type { StepperProps, StepperItemProps, StepStatus }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Card({\n className,\n variant = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & {\n variant?: \"default\" | \"outlined\" | \"elevated\"\n}) {\n return (\n <div\n data-slot=\"card\"\n className={cn(\n \"flex flex-col gap-4 rounded-lg bg-card px-6 py-5 text-card-foreground\",\n variant === \"outlined\" && \"border border-border\",\n variant === \"elevated\" &&\n \"shadow-[0px_4px_12px_0px_rgba(0,0,0,0.08)]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\"flex flex-col gap-4\", className)}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\"text-h4\", className)}\n {...props}\n />\n )\n}\n\nfunction CardDescription({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div data-slot=\"card-content\" className={cn(className)} {...props} />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\"flex items-center justify-end gap-3\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardTitle,\n CardDescription,\n CardContent,\n CardFooter,\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst tableDensityVariants = cva(\"\", {\n variants: {\n density: {\n default: \"\",\n compact: \"\",\n comfortable: \"\",\n },\n },\n defaultVariants: {\n density: \"default\",\n },\n})\n\ntype TableDensity = \"default\" | \"compact\" | \"comfortable\"\n\nconst TableDensityContext = React.createContext<TableDensity>(\"default\")\n\nfunction useTableDensity() {\n return React.useContext(TableDensityContext)\n}\n\nconst headHeightMap: Record<TableDensity, string> = {\n default: \"h-11\",\n compact: \"h-9\",\n comfortable: \"h-11\",\n}\n\nconst cellHeightMap: Record<TableDensity, string> = {\n default: \"h-11\",\n compact: \"h-8\",\n comfortable: \"h-14\",\n}\n\nfunction Table({\n className,\n density = \"default\",\n ...props\n}: React.ComponentProps<\"table\"> &\n VariantProps<typeof tableDensityVariants> & {\n density?: TableDensity\n }) {\n return (\n <TableDensityContext.Provider value={density}>\n <div data-slot=\"table-wrapper\" className=\"relative w-full overflow-auto\">\n <table\n data-slot=\"table\"\n data-density={density}\n className={cn(\n \"w-full caption-bottom border-collapse\",\n className\n )}\n {...props}\n />\n </div>\n </TableDensityContext.Provider>\n )\n}\n\nfunction TableHeader({\n className,\n ...props\n}: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b [&_tr]:border-border-strong\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({\n className,\n ...props\n}: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"border-b border-border-block transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n const density = useTableDensity()\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n headHeightMap[density],\n \"bg-interactive-active px-2 text-left align-middle text-sm font-medium leading-5 text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n const density = useTableDensity()\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n cellHeightMap[density],\n \"px-2 align-middle text-base text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableRow,\n TableHead,\n TableCell,\n TableCaption,\n}\nexport type { TableDensity }\n","import * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { IconCancelClose } from \"@/components/ui/icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />\n}\n\nfunction DialogTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return (\n <DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n className={className}\n {...props}\n />\n )\n}\n\nfunction DialogClose({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className={className}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content>) {\n return (\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"fixed inset-0 z-50 bg-black/80\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0\"\n )}\n />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border border-border bg-background p-6 shadow-lg duration-200\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n data-slot=\"dialog-close-button\"\n className=\"absolute top-4 right-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\"\n >\n <IconCancelClose className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\n \"flex flex-col gap-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription,\n DialogFooter,\n DialogClose,\n}\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n let top = firstRect.top;\n let right = firstRect.right;\n let bottom = firstRect.bottom;\n let left = firstRect.left;\n for (let i = 1; i < clippingAncestors.length; i++) {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n top = max(rect.top, top);\n right = min(rect.right, right);\n bottom = min(rect.bottom, bottom);\n left = max(rect.left, left);\n }\n return {\n width: right - left,\n height: bottom - top,\n x: left,\n y: top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n if (floating) {\n resizeObserver.observe(floating);\n }\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => {\n const result = offset$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => {\n const result = shift$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => {\n const result = limitShift$1(options);\n return {\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => {\n const result = flip$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => {\n const result = size$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => {\n const result = autoPlacement$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => {\n const result = hide$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => {\n const result = inline$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => {\n const result = arrow$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar VISUALLY_HIDDEN_STYLES = Object.freeze({\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n});\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VISUALLY_HIDDEN_STYLES,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const isOpenDelayedRef = React.useRef(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayedRef,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n isOpenDelayedRef.current = false;\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => isOpenDelayedRef.current = true,\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n },\n caller: TOOLTIP_NAME\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayedRef.current) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n if (context.open) {\n context.onClose();\n }\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar Slottable = createSlottable(\"TooltipContent\");\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 200,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider delayDuration={delayDuration} {...props} />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return <TooltipPrimitive.Root {...props} />\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 8,\n variant = \"dark\",\n showArrow = true,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content> & {\n variant?: \"dark\" | \"light\"\n showArrow?: boolean\n}) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip\"\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-lg p-3 text-xs leading-4 text-center\",\n \"animate-in fade-in-0 zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n variant === \"dark\"\n ? \"bg-primary text-primary-foreground\"\n : \"bg-popover text-popover-foreground shadow-md\",\n className\n )}\n {...props}\n >\n {children}\n {showArrow && (\n <TooltipPrimitive.Arrow\n className={cn(\n variant === \"dark\" ? \"fill-primary\" : \"fill-popover\"\n )}\n />\n )}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { TooltipProvider, Tooltip, TooltipTrigger, TooltipContent }\n","\"use client\";\n\n// src/focus-guards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nexport {\n FocusGuards,\n FocusGuards as Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide aria-live elements - https://github.com/theKashey/aria-hidden/issues/10\n // and script elements, as they have no impact on accessibility.\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live], script')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noRelative = props.noRelative, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noRelative\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noRelative: noRelative, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n if (!target) {\n break;\n }\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n var parent_1 = target.parentNode;\n // we will \"bubble\" from ShadowDom in case we are, or just to the parent in normal case\n // this is the same logic used in focus-lock\n target = (parent_1 && parent_1.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? parent_1.host : parent_1);\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n // allow drag selection (iOS); check if selection's anchorNode is the same as target or contains target\n var selection = window.getSelection();\n var anchorNode = selection && selection.anchorNode;\n var isTouchingSelection = anchorNode ? anchorNode === target || anchorNode.contains(target) : false;\n if (isTouchingSelection) {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { noRelative: props.noRelative, gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","\"use client\";\n\n// src/menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs, composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SELECTION_KEYS = [\"Enter\", \" \"];\nvar FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nvar LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nvar FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nvar SUB_OPEN_KEYS = {\n ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nvar SUB_CLOSE_KEYS = {\n ltr: [\"ArrowLeft\"],\n rtl: [\"ArrowRight\"]\n};\nvar MENU_NAME = \"Menu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(MENU_NAME);\nvar [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n createCollectionScope,\n createPopperScope,\n createRovingFocusGroupScope\n]);\nvar usePopperScope = createPopperScope();\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\nvar [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\nvar Menu = (props) => {\n const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n const popperScope = usePopperScope(__scopeMenu);\n const [content, setContent] = React.useState(null);\n const isUsingKeyboardRef = React.useRef(false);\n const handleOpenChange = useCallbackRef(onOpenChange);\n const direction = useDirection(dir);\n React.useEffect(() => {\n const handleKeyDown = () => {\n isUsingKeyboardRef.current = true;\n document.addEventListener(\"pointerdown\", handlePointer, { capture: true, once: true });\n document.addEventListener(\"pointermove\", handlePointer, { capture: true, once: true });\n };\n const handlePointer = () => isUsingKeyboardRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n document.removeEventListener(\"pointerdown\", handlePointer, { capture: true });\n document.removeEventListener(\"pointermove\", handlePointer, { capture: true });\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuRootProvider,\n {\n scope: __scopeMenu,\n onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n isUsingKeyboardRef,\n dir: direction,\n modal,\n children\n }\n )\n }\n ) });\n};\nMenu.displayName = MENU_NAME;\nvar ANCHOR_NAME = \"MenuAnchor\";\nvar MenuAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...anchorProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nMenuAnchor.displayName = ANCHOR_NAME;\nvar PORTAL_NAME = \"MenuPortal\";\nvar [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar MenuPortal = (props) => {\n const { __scopeMenu, forceMount, children, container } = props;\n const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"MenuContent\";\nvar [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);\nvar MenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });\n }\n);\nvar MenuRootContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const content = ref.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n disableOutsideScroll: true,\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n ),\n onDismiss: () => context.onOpenChange(false)\n }\n );\n }\n);\nvar MenuRootContentNonModal = React.forwardRef((props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n onDismiss: () => context.onOpenChange(false)\n }\n );\n});\nvar Slot = createSlot(\"MenuContent.ScrollLock\");\nvar MenuContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeMenu,\n loop = false,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEntryFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n disableOutsideScroll,\n ...contentProps\n } = props;\n const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const getItems = useCollection(__scopeMenu);\n const [currentItemId, setCurrentItemId] = React.useState(null);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);\n const timerRef = React.useRef(0);\n const searchRef = React.useRef(\"\");\n const pointerGraceTimerRef = React.useRef(0);\n const pointerGraceIntentRef = React.useRef(null);\n const pointerDirRef = React.useRef(\"right\");\n const lastPointerXRef = React.useRef(0);\n const ScrollLockWrapper = disableOutsideScroll ? RemoveScroll : React.Fragment;\n const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot, allowPinchZoom: true } : void 0;\n const handleTypeaheadSearch = (key) => {\n const search = searchRef.current + key;\n const items = getItems().filter((item) => !item.disabled);\n const currentItem = document.activeElement;\n const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;\n const values = items.map((item) => item.textValue);\n const nextMatch = getNextMatch(values, search, currentMatch);\n const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n if (newItem) {\n setTimeout(() => newItem.focus());\n }\n };\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n useFocusGuards();\n const isPointerMovingToSubmenu = React.useCallback((event) => {\n const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentProvider,\n {\n scope: __scopeMenu,\n searchRef,\n onItemEnter: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n onItemLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) return;\n contentRef.current?.focus();\n setCurrentItemId(null);\n },\n [isPointerMovingToSubmenu]\n ),\n onTriggerLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n pointerGraceTimerRef,\n onPointerGraceIntentChange: React.useCallback((intent) => {\n pointerGraceIntentRef.current = intent;\n }, []),\n children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: trapFocus,\n onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n event.preventDefault();\n contentRef.current?.focus({ preventScroll: true });\n }),\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n children: /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n dir: rootContext.dir,\n orientation: \"vertical\",\n loop,\n currentTabStopId: currentItemId,\n onCurrentTabStopIdChange: setCurrentItemId,\n onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {\n if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n }),\n preventScrollOnEntryFocus: true,\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n role: \"menu\",\n \"aria-orientation\": \"vertical\",\n \"data-state\": getOpenState(context.open),\n \"data-radix-menu-content\": \"\",\n dir: rootContext.dir,\n ...popperScope,\n ...contentProps,\n ref: composedRefs,\n style: { outline: \"none\", ...contentProps.style },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const target = event.target;\n const isKeyDownInside = target.closest(\"[data-radix-menu-content]\") === event.currentTarget;\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n if (isKeyDownInside) {\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n }\n const content = contentRef.current;\n if (event.target !== content) return;\n if (!FIRST_LAST_KEYS.includes(event.key)) return;\n event.preventDefault();\n const items = getItems().filter((item) => !item.disabled);\n const candidateNodes = items.map((item) => item.ref.current);\n if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n focusFirst(candidateNodes);\n }),\n onBlur: composeEventHandlers(props.onBlur, (event) => {\n if (!event.currentTarget.contains(event.target)) {\n window.clearTimeout(timerRef.current);\n searchRef.current = \"\";\n }\n }),\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n const target = event.target;\n const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n if (event.currentTarget.contains(target) && pointerXHasChanged) {\n const newDir = event.clientX > lastPointerXRef.current ? \"right\" : \"left\";\n pointerDirRef.current = newDir;\n lastPointerXRef.current = event.clientX;\n }\n })\n )\n }\n )\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"MenuGroup\";\nvar MenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...groupProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", ...groupProps, ref: forwardedRef });\n }\n);\nMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"MenuLabel\";\nvar MenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...labelProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });\n }\n);\nMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"MenuItem\";\nvar ITEM_SELECT = \"menu.itemSelect\";\nvar MenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { disabled = false, onSelect, ...itemProps } = props;\n const ref = React.useRef(null);\n const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const isPointerDownRef = React.useRef(false);\n const handleSelect = () => {\n const menuItem = ref.current;\n if (!disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });\n menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });\n dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented) {\n isPointerDownRef.current = false;\n } else {\n rootContext.onClose();\n }\n }\n };\n return /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n ...itemProps,\n ref: composedRefs,\n disabled,\n onClick: composeEventHandlers(props.onClick, handleSelect),\n onPointerDown: (event) => {\n props.onPointerDown?.(event);\n isPointerDownRef.current = true;\n },\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n if (!isPointerDownRef.current) event.currentTarget?.click();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (disabled || isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n event.preventDefault();\n }\n })\n }\n );\n }\n);\nMenuItem.displayName = ITEM_NAME;\nvar MenuItemImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [isFocused, setIsFocused] = React.useState(false);\n const [textContent, setTextContent] = React.useState(\"\");\n React.useEffect(() => {\n const menuItem = ref.current;\n if (menuItem) {\n setTextContent((menuItem.textContent ?? \"\").trim());\n }\n }, [itemProps.children]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeMenu,\n disabled,\n textValue: textValue ?? textContent,\n children: /* @__PURE__ */ jsx(RovingFocusGroup.Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"menuitem\",\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n ...itemProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n if (disabled) {\n contentContext.onItemLeave(event);\n } else {\n contentContext.onItemEnter(event);\n if (!event.defaultPrevented) {\n const item = event.currentTarget;\n item.focus({ preventScroll: true });\n }\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => contentContext.onItemLeave(event))\n ),\n onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n }\n ) })\n }\n );\n }\n);\nvar CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\nvar MenuCheckboxItem = React.forwardRef(\n (props, forwardedRef) => {\n const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemcheckbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n ...checkboxItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n checkboxItemProps.onSelect,\n () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"MenuRadioGroup\";\nvar [RadioGroupProvider, useRadioGroupContext] = createMenuContext(\n RADIO_GROUP_NAME,\n { value: void 0, onValueChange: () => {\n } }\n);\nvar MenuRadioGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { value, onValueChange, ...groupProps } = props;\n const handleValueChange = useCallbackRef(onValueChange);\n return /* @__PURE__ */ jsx(RadioGroupProvider, { scope: props.__scopeMenu, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(MenuGroup, { ...groupProps, ref: forwardedRef }) });\n }\n);\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"MenuRadioItem\";\nvar MenuRadioItem = React.forwardRef(\n (props, forwardedRef) => {\n const { value, ...radioItemProps } = props;\n const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n const checked = value === context.value;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemradio\",\n \"aria-checked\": checked,\n ...radioItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n radioItemProps.onSelect,\n () => context.onValueChange?.(value),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\nvar [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(\n ITEM_INDICATOR_NAME,\n { checked: false }\n);\nvar MenuItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(\n Presence,\n {\n present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...itemIndicatorProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(indicatorContext.checked)\n }\n )\n }\n );\n }\n);\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SEPARATOR_NAME = \"MenuSeparator\";\nvar MenuSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"separator\",\n \"aria-orientation\": \"horizontal\",\n ...separatorProps,\n ref: forwardedRef\n }\n );\n }\n);\nMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"MenuArrow\";\nvar MenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nMenuArrow.displayName = ARROW_NAME;\nvar SUB_NAME = \"MenuSub\";\nvar [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\nvar MenuSub = (props) => {\n const { __scopeMenu, children, open = false, onOpenChange } = props;\n const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const [trigger, setTrigger] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const handleOpenChange = useCallbackRef(onOpenChange);\n React.useEffect(() => {\n if (parentMenuContext.open === false) handleOpenChange(false);\n return () => handleOpenChange(false);\n }, [parentMenuContext.open, handleOpenChange]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuSubProvider,\n {\n scope: __scopeMenu,\n contentId: useId(),\n triggerId: useId(),\n trigger,\n onTriggerChange: setTrigger,\n children\n }\n )\n }\n ) });\n};\nMenuSub.displayName = SUB_NAME;\nvar SUB_TRIGGER_NAME = \"MenuSubTrigger\";\nvar MenuSubTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const openTimerRef = React.useRef(null);\n const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n const scope = { __scopeMenu: props.__scopeMenu };\n const clearOpenTimer = React.useCallback(() => {\n if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }, []);\n React.useEffect(() => clearOpenTimer, [clearOpenTimer]);\n React.useEffect(() => {\n const pointerGraceTimer = pointerGraceTimerRef.current;\n return () => {\n window.clearTimeout(pointerGraceTimer);\n onPointerGraceIntentChange(null);\n };\n }, [pointerGraceTimerRef, onPointerGraceIntentChange]);\n return /* @__PURE__ */ jsx(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n id: subContext.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": subContext.contentId,\n \"data-state\": getOpenState(context.open),\n ...props,\n ref: composeRefs(forwardedRef, subContext.onTriggerChange),\n onClick: (event) => {\n props.onClick?.(event);\n if (props.disabled || event.defaultPrevented) return;\n event.currentTarget.focus();\n if (!context.open) context.onOpenChange(true);\n },\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n contentContext.onItemEnter(event);\n if (event.defaultPrevented) return;\n if (!props.disabled && !context.open && !openTimerRef.current) {\n contentContext.onPointerGraceIntentChange(null);\n openTimerRef.current = window.setTimeout(() => {\n context.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => {\n clearOpenTimer();\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n const side = context.content?.dataset.side;\n const rightSide = side === \"right\";\n const bleed = rightSide ? -5 : 5;\n const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom }\n ],\n side\n });\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n } else {\n contentContext.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n contentContext.onPointerGraceIntentChange(null);\n }\n })\n ),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (props.disabled || isTypingAhead && event.key === \" \") return;\n if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n context.onOpenChange(true);\n context.content?.focus();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"MenuSubContent\";\nvar MenuSubContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n id: subContext.contentId,\n \"aria-labelledby\": subContext.triggerId,\n ...subContentProps,\n ref: composedRefs,\n align: \"start\",\n side: rootContext.dir === \"rtl\" ? \"left\" : \"right\",\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n trapFocus: false,\n onOpenAutoFocus: (event) => {\n if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n event.preventDefault();\n },\n onCloseAutoFocus: (event) => event.preventDefault(),\n onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n if (event.target !== subContext.trigger) context.onOpenChange(false);\n }),\n onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n rootContext.onClose();\n event.preventDefault();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isKeyDownInside = event.currentTarget.contains(event.target);\n const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n subContext.trigger?.focus();\n event.preventDefault();\n }\n })\n }\n ) }) }) });\n }\n);\nMenuSubContent.displayName = SUB_CONTENT_NAME;\nfunction getOpenState(open) {\n return open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nfunction getNextMatch(values, search, currentMatch) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n const excludeCurrentMatch = normalizedSearch.length === 1;\n if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n const nextMatch = wrappedValues.find(\n (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextMatch !== currentMatch ? nextMatch : void 0;\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const ii = polygon[i];\n const jj = polygon[j];\n const xi = ii.x;\n const yi = ii.y;\n const xj = jj.x;\n const yj = jj.y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction isPointerInGraceArea(event, area) {\n if (!area) return false;\n const cursorPos = { x: event.clientX, y: event.clientY };\n return isPointInPolygon(cursorPos, area);\n}\nfunction whenMouse(handler) {\n return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root3 = Menu;\nvar Anchor2 = MenuAnchor;\nvar Portal = MenuPortal;\nvar Content2 = MenuContent;\nvar Group = MenuGroup;\nvar Label = MenuLabel;\nvar Item2 = MenuItem;\nvar CheckboxItem = MenuCheckboxItem;\nvar RadioGroup = MenuRadioGroup;\nvar RadioItem = MenuRadioItem;\nvar ItemIndicator = MenuItemIndicator;\nvar Separator = MenuSeparator;\nvar Arrow2 = MenuArrow;\nvar Sub = MenuSub;\nvar SubTrigger = MenuSubTrigger;\nvar SubContent = MenuSubContent;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n CheckboxItem,\n Content2 as Content,\n Group,\n Item2 as Item,\n ItemIndicator,\n Label,\n Menu,\n MenuAnchor,\n MenuArrow,\n MenuCheckboxItem,\n MenuContent,\n MenuGroup,\n MenuItem,\n MenuItemIndicator,\n MenuLabel,\n MenuPortal,\n MenuRadioGroup,\n MenuRadioItem,\n MenuSeparator,\n MenuSub,\n MenuSubContent,\n MenuSubTrigger,\n Portal,\n RadioGroup,\n RadioItem,\n Root3 as Root,\n Separator,\n Sub,\n SubContent,\n SubTrigger,\n createMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/context-menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as MenuPrimitive from \"@radix-ui/react-menu\";\nimport { createMenuScope } from \"@radix-ui/react-menu\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar CONTEXT_MENU_NAME = \"ContextMenu\";\nvar [createContextMenuContext, createContextMenuScope] = createContextScope(CONTEXT_MENU_NAME, [\n createMenuScope\n]);\nvar useMenuScope = createMenuScope();\nvar [ContextMenuProvider, useContextMenuContext] = createContextMenuContext(CONTEXT_MENU_NAME);\nvar ContextMenu = (props) => {\n const { __scopeContextMenu, children, onOpenChange, dir, modal = true } = props;\n const [open, setOpen] = React.useState(false);\n const menuScope = useMenuScope(__scopeContextMenu);\n const handleOpenChangeProp = useCallbackRef(onOpenChange);\n const handleOpenChange = React.useCallback(\n (open2) => {\n setOpen(open2);\n handleOpenChangeProp(open2);\n },\n [handleOpenChangeProp]\n );\n return /* @__PURE__ */ jsx(\n ContextMenuProvider,\n {\n scope: __scopeContextMenu,\n open,\n onOpenChange: handleOpenChange,\n modal,\n children: /* @__PURE__ */ jsx(\n MenuPrimitive.Root,\n {\n ...menuScope,\n dir,\n open,\n onOpenChange: handleOpenChange,\n modal,\n children\n }\n )\n }\n );\n};\nContextMenu.displayName = CONTEXT_MENU_NAME;\nvar TRIGGER_NAME = \"ContextMenuTrigger\";\nvar ContextMenuTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeContextMenu, disabled = false, ...triggerProps } = props;\n const context = useContextMenuContext(TRIGGER_NAME, __scopeContextMenu);\n const menuScope = useMenuScope(__scopeContextMenu);\n const pointRef = React.useRef({ x: 0, y: 0 });\n const virtualRef = React.useRef({\n getBoundingClientRect: () => DOMRect.fromRect({ width: 0, height: 0, ...pointRef.current })\n });\n const longPressTimerRef = React.useRef(0);\n const clearLongPress = React.useCallback(\n () => window.clearTimeout(longPressTimerRef.current),\n []\n );\n const handleOpen = (event) => {\n pointRef.current = { x: event.clientX, y: event.clientY };\n context.onOpenChange(true);\n };\n React.useEffect(() => clearLongPress, [clearLongPress]);\n React.useEffect(() => void (disabled && clearLongPress()), [disabled, clearLongPress]);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(MenuPrimitive.Anchor, { ...menuScope, virtualRef }),\n /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": context.open ? \"open\" : \"closed\",\n \"data-disabled\": disabled ? \"\" : void 0,\n ...triggerProps,\n ref: forwardedRef,\n style: { WebkitTouchCallout: \"none\", ...props.style },\n onContextMenu: disabled ? props.onContextMenu : composeEventHandlers(props.onContextMenu, (event) => {\n clearLongPress();\n handleOpen(event);\n event.preventDefault();\n }),\n onPointerDown: disabled ? props.onPointerDown : composeEventHandlers(\n props.onPointerDown,\n whenTouchOrPen((event) => {\n clearLongPress();\n longPressTimerRef.current = window.setTimeout(() => handleOpen(event), 700);\n })\n ),\n onPointerMove: disabled ? props.onPointerMove : composeEventHandlers(props.onPointerMove, whenTouchOrPen(clearLongPress)),\n onPointerCancel: disabled ? props.onPointerCancel : composeEventHandlers(props.onPointerCancel, whenTouchOrPen(clearLongPress)),\n onPointerUp: disabled ? props.onPointerUp : composeEventHandlers(props.onPointerUp, whenTouchOrPen(clearLongPress))\n }\n )\n ] });\n }\n);\nContextMenuTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"ContextMenuPortal\";\nvar ContextMenuPortal = (props) => {\n const { __scopeContextMenu, ...portalProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Portal, { ...menuScope, ...portalProps });\n};\nContextMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"ContextMenuContent\";\nvar ContextMenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeContextMenu, ...contentProps } = props;\n const context = useContextMenuContext(CONTENT_NAME, __scopeContextMenu);\n const menuScope = useMenuScope(__scopeContextMenu);\n const hasInteractedOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.Content,\n {\n ...menuScope,\n ...contentProps,\n ref: forwardedRef,\n side: \"right\",\n sideOffset: 2,\n align: \"start\",\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented && hasInteractedOutsideRef.current) {\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented && !context.modal) hasInteractedOutsideRef.current = true;\n },\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-context-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-context-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-context-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-context-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-context-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n }\n);\nContextMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"ContextMenuGroup\";\nvar ContextMenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeContextMenu, ...groupProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Group, { ...menuScope, ...groupProps, ref: forwardedRef });\n }\n);\nContextMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"ContextMenuLabel\";\nvar ContextMenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeContextMenu, ...labelProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Label, { ...menuScope, ...labelProps, ref: forwardedRef });\n }\n);\nContextMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"ContextMenuItem\";\nvar ContextMenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeContextMenu, ...itemProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Item, { ...menuScope, ...itemProps, ref: forwardedRef });\n }\n);\nContextMenuItem.displayName = ITEM_NAME;\nvar CHECKBOX_ITEM_NAME = \"ContextMenuCheckboxItem\";\nvar ContextMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeContextMenu, ...checkboxItemProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });\n});\nContextMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"ContextMenuRadioGroup\";\nvar ContextMenuRadioGroup = React.forwardRef((props, forwardedRef) => {\n const { __scopeContextMenu, ...radioGroupProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });\n});\nContextMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"ContextMenuRadioItem\";\nvar ContextMenuRadioItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeContextMenu, ...radioItemProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });\n});\nContextMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar INDICATOR_NAME = \"ContextMenuItemIndicator\";\nvar ContextMenuItemIndicator = React.forwardRef((props, forwardedRef) => {\n const { __scopeContextMenu, ...itemIndicatorProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });\n});\nContextMenuItemIndicator.displayName = INDICATOR_NAME;\nvar SEPARATOR_NAME = \"ContextMenuSeparator\";\nvar ContextMenuSeparator = React.forwardRef((props, forwardedRef) => {\n const { __scopeContextMenu, ...separatorProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });\n});\nContextMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"ContextMenuArrow\";\nvar ContextMenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeContextMenu, ...arrowProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Arrow, { ...menuScope, ...arrowProps, ref: forwardedRef });\n }\n);\nContextMenuArrow.displayName = ARROW_NAME;\nvar SUB_NAME = \"ContextMenuSub\";\nvar ContextMenuSub = (props) => {\n const { __scopeContextMenu, children, onOpenChange, open: openProp, defaultOpen } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: SUB_NAME\n });\n return /* @__PURE__ */ jsx(MenuPrimitive.Sub, { ...menuScope, open, onOpenChange: setOpen, children });\n};\nContextMenuSub.displayName = SUB_NAME;\nvar SUB_TRIGGER_NAME = \"ContextMenuSubTrigger\";\nvar ContextMenuSubTrigger = React.forwardRef((props, forwardedRef) => {\n const { __scopeContextMenu, ...triggerItemProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.SubTrigger, { ...menuScope, ...triggerItemProps, ref: forwardedRef });\n});\nContextMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"ContextMenuSubContent\";\nvar ContextMenuSubContent = React.forwardRef((props, forwardedRef) => {\n const { __scopeContextMenu, ...subContentProps } = props;\n const menuScope = useMenuScope(__scopeContextMenu);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.SubContent,\n {\n ...menuScope,\n ...subContentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-context-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-context-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-context-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-context-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-context-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nContextMenuSubContent.displayName = SUB_CONTENT_NAME;\nfunction whenTouchOrPen(handler) {\n return (event) => event.pointerType !== \"mouse\" ? handler(event) : void 0;\n}\nvar Root2 = ContextMenu;\nvar Trigger = ContextMenuTrigger;\nvar Portal2 = ContextMenuPortal;\nvar Content2 = ContextMenuContent;\nvar Group2 = ContextMenuGroup;\nvar Label2 = ContextMenuLabel;\nvar Item2 = ContextMenuItem;\nvar CheckboxItem2 = ContextMenuCheckboxItem;\nvar RadioGroup2 = ContextMenuRadioGroup;\nvar RadioItem2 = ContextMenuRadioItem;\nvar ItemIndicator2 = ContextMenuItemIndicator;\nvar Separator2 = ContextMenuSeparator;\nvar Arrow2 = ContextMenuArrow;\nvar Sub2 = ContextMenuSub;\nvar SubTrigger2 = ContextMenuSubTrigger;\nvar SubContent2 = ContextMenuSubContent;\nexport {\n Arrow2 as Arrow,\n CheckboxItem2 as CheckboxItem,\n Content2 as Content,\n ContextMenu,\n ContextMenuArrow,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuItemIndicator,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n Group2 as Group,\n Item2 as Item,\n ItemIndicator2 as ItemIndicator,\n Label2 as Label,\n Portal2 as Portal,\n RadioGroup2 as RadioGroup,\n RadioItem2 as RadioItem,\n Root2 as Root,\n Separator2 as Separator,\n Sub2 as Sub,\n SubContent2 as SubContent,\n SubTrigger2 as SubTrigger,\n Trigger,\n createContextMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\"\nimport { IconConfirmCheck, IconChevronRight } from \"@/components/ui/icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />\n}\n\nfunction ContextMenuTrigger({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger\n data-slot=\"context-menu-trigger\"\n className={className}\n {...props}\n />\n )\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n )\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n )\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n className={cn(\n \"flex cursor-default select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[state=open]:bg-accent data-[state=open]:text-accent-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <IconChevronRight className=\"ml-auto h-4 w-4\" />\n </ContextMenuPrimitive.SubTrigger>\n )\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg border bg-popover p-1 text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg border bg-popover p-1 text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n )\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-md px-2 py-1.5 text-sm outline-none\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <IconConfirmCheck className=\"h-4 w-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n )\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-md py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <svg className=\"h-2 w-2 fill-current\" viewBox=\"0 0 8 8\"><circle cx=\"4\" cy=\"4\" r=\"4\" /></svg>\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n )\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold text-foreground\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-border\", className)}\n {...props}\n />\n )\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuRadioGroup,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuSub,\n ContextMenuSubTrigger,\n ContextMenuSubContent,\n}\n","// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/select.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { clamp } from \"@radix-ui/number\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { VISUALLY_HIDDEN_STYLES } from \"@radix-ui/react-visually-hidden\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar OPEN_KEYS = [\" \", \"Enter\", \"ArrowUp\", \"ArrowDown\"];\nvar SELECTION_KEYS = [\" \", \"Enter\"];\nvar SELECT_NAME = \"Select\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);\nvar [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [\n createCollectionScope,\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME);\nvar [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);\nvar Select = (props) => {\n const {\n __scopeSelect,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n dir,\n name,\n autoComplete,\n disabled,\n required,\n form\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const [trigger, setTrigger] = React.useState(null);\n const [valueNode, setValueNode] = React.useState(null);\n const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n const direction = useDirection(dir);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: SELECT_NAME\n });\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange,\n caller: SELECT_NAME\n });\n const triggerPointerDownPosRef = React.useRef(null);\n const isFormControl = trigger ? form || !!trigger.closest(\"form\") : true;\n const [nativeOptionsSet, setNativeOptionsSet] = React.useState(/* @__PURE__ */ new Set());\n const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(\";\");\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsxs(\n SelectProvider,\n {\n required,\n scope: __scopeSelect,\n trigger,\n onTriggerChange: setTrigger,\n valueNode,\n onValueNodeChange: setValueNode,\n valueNodeHasChildren,\n onValueNodeHasChildrenChange: setValueNodeHasChildren,\n contentId: useId(),\n value,\n onValueChange: setValue,\n open,\n onOpenChange: setOpen,\n dir: direction,\n triggerPointerDownPosRef,\n disabled,\n children: [\n /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n SelectNativeOptionsProvider,\n {\n scope: props.__scopeSelect,\n onNativeOptionAdd: React.useCallback((option) => {\n setNativeOptionsSet((prev) => new Set(prev).add(option));\n }, []),\n onNativeOptionRemove: React.useCallback((option) => {\n setNativeOptionsSet((prev) => {\n const optionsSet = new Set(prev);\n optionsSet.delete(option);\n return optionsSet;\n });\n }, []),\n children\n }\n ) }),\n isFormControl ? /* @__PURE__ */ jsxs(\n SelectBubbleInput,\n {\n \"aria-hidden\": true,\n required,\n tabIndex: -1,\n name,\n autoComplete,\n value,\n onChange: (event) => setValue(event.target.value),\n disabled,\n form,\n children: [\n value === void 0 ? /* @__PURE__ */ jsx(\"option\", { value: \"\" }) : null,\n Array.from(nativeOptionsSet)\n ]\n },\n nativeSelectKey\n ) : null\n ]\n }\n ) });\n};\nSelect.displayName = SELECT_NAME;\nvar TRIGGER_NAME = \"SelectTrigger\";\nvar SelectTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, disabled = false, ...triggerProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(TRIGGER_NAME, __scopeSelect);\n const isDisabled = context.disabled || disabled;\n const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);\n const getItems = useCollection(__scopeSelect);\n const pointerTypeRef = React.useRef(\"touch\");\n const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.value === context.value);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem !== void 0) {\n context.onValueChange(nextItem.value);\n }\n });\n const handleOpen = (pointerEvent) => {\n if (!isDisabled) {\n context.onOpenChange(true);\n resetTypeahead();\n }\n if (pointerEvent) {\n context.triggerPointerDownPosRef.current = {\n x: Math.round(pointerEvent.pageX),\n y: Math.round(pointerEvent.pageY)\n };\n }\n };\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"combobox\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open,\n \"aria-required\": context.required,\n \"aria-autocomplete\": \"none\",\n dir: context.dir,\n \"data-state\": context.open ? \"open\" : \"closed\",\n disabled: isDisabled,\n \"data-disabled\": isDisabled ? \"\" : void 0,\n \"data-placeholder\": shouldShowPlaceholder(context.value) ? \"\" : void 0,\n ...triggerProps,\n ref: composedRefs,\n onClick: composeEventHandlers(triggerProps.onClick, (event) => {\n event.currentTarget.focus();\n if (pointerTypeRef.current !== \"mouse\") {\n handleOpen(event);\n }\n }),\n onPointerDown: composeEventHandlers(triggerProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n if (event.button === 0 && event.ctrlKey === false && event.pointerType === \"mouse\") {\n handleOpen(event);\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (event) => {\n const isTypingAhead = searchRef.current !== \"\";\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if (isTypingAhead && event.key === \" \") return;\n if (OPEN_KEYS.includes(event.key)) {\n handleOpen();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nSelectTrigger.displayName = TRIGGER_NAME;\nvar VALUE_NAME = \"SelectValue\";\nvar SelectValue = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, children, placeholder = \"\", ...valueProps } = props;\n const context = useSelectContext(VALUE_NAME, __scopeSelect);\n const { onValueNodeHasChildrenChange } = context;\n const hasChildren = children !== void 0;\n const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n useLayoutEffect(() => {\n onValueNodeHasChildrenChange(hasChildren);\n }, [onValueNodeHasChildrenChange, hasChildren]);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...valueProps,\n ref: composedRefs,\n style: { pointerEvents: \"none\" },\n children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ jsx(Fragment, { children: placeholder }) : children\n }\n );\n }\n);\nSelectValue.displayName = VALUE_NAME;\nvar ICON_NAME = \"SelectIcon\";\nvar SelectIcon = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, children, ...iconProps } = props;\n return /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...iconProps, ref: forwardedRef, children: children || \"\\u25BC\" });\n }\n);\nSelectIcon.displayName = ICON_NAME;\nvar PORTAL_NAME = \"SelectPortal\";\nvar SelectPortal = (props) => {\n return /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...props });\n};\nSelectPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"SelectContent\";\nvar SelectContent = React.forwardRef(\n (props, forwardedRef) => {\n const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);\n const [fragment, setFragment] = React.useState();\n useLayoutEffect(() => {\n setFragment(new DocumentFragment());\n }, []);\n if (!context.open) {\n const frag = fragment;\n return frag ? ReactDOM.createPortal(\n /* @__PURE__ */ jsx(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(\"div\", { children: props.children }) }) }),\n frag\n ) : null;\n }\n return /* @__PURE__ */ jsx(SelectContentImpl, { ...props, ref: forwardedRef });\n }\n);\nSelectContent.displayName = CONTENT_NAME;\nvar CONTENT_MARGIN = 10;\nvar [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);\nvar CONTENT_IMPL_NAME = \"SelectContentImpl\";\nvar Slot = createSlot(\"SelectContent.RemoveScroll\");\nvar SelectContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n position = \"item-aligned\",\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n //\n // PopperContent props\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions,\n //\n ...contentProps\n } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const [content, setContent] = React.useState(null);\n const [viewport, setViewport] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [selectedItem, setSelectedItem] = React.useState(null);\n const [selectedItemText, setSelectedItemText] = React.useState(\n null\n );\n const getItems = useCollection(__scopeSelect);\n const [isPositioned, setIsPositioned] = React.useState(false);\n const firstValidItemFoundRef = React.useRef(false);\n React.useEffect(() => {\n if (content) return hideOthers(content);\n }, [content]);\n useFocusGuards();\n const focusFirst = React.useCallback(\n (candidates) => {\n const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);\n const [lastItem] = restItems.slice(-1);\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate?.scrollIntoView({ block: \"nearest\" });\n if (candidate === firstItem && viewport) viewport.scrollTop = 0;\n if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;\n candidate?.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n },\n [getItems, viewport]\n );\n const focusSelectedItem = React.useCallback(\n () => focusFirst([selectedItem, content]),\n [focusFirst, selectedItem, content]\n );\n React.useEffect(() => {\n if (isPositioned) {\n focusSelectedItem();\n }\n }, [isPositioned, focusSelectedItem]);\n const { onOpenChange, triggerPointerDownPosRef } = context;\n React.useEffect(() => {\n if (content) {\n let pointerMoveDelta = { x: 0, y: 0 };\n const handlePointerMove = (event) => {\n pointerMoveDelta = {\n x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),\n y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))\n };\n };\n const handlePointerUp = (event) => {\n if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n event.preventDefault();\n } else {\n if (!content.contains(event.target)) {\n onOpenChange(false);\n }\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n triggerPointerDownPosRef.current = null;\n };\n if (triggerPointerDownPosRef.current !== null) {\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp, { capture: true, once: true });\n }\n return () => {\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp, { capture: true });\n };\n }\n }, [content, onOpenChange, triggerPointerDownPosRef]);\n React.useEffect(() => {\n const close = () => onOpenChange(false);\n window.addEventListener(\"blur\", close);\n window.addEventListener(\"resize\", close);\n return () => {\n window.removeEventListener(\"blur\", close);\n window.removeEventListener(\"resize\", close);\n };\n }, [onOpenChange]);\n const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem) {\n setTimeout(() => nextItem.ref.current.focus());\n }\n });\n const itemRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItem(node);\n if (isFirstValidItem) firstValidItemFoundRef.current = true;\n }\n },\n [context.value]\n );\n const handleItemLeave = React.useCallback(() => content?.focus(), [content]);\n const itemTextRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItemText(node);\n }\n },\n [context.value]\n );\n const SelectPosition = position === \"popper\" ? SelectPopperPosition : SelectItemAlignedPosition;\n const popperContentProps = SelectPosition === SelectPopperPosition ? {\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions\n } : {};\n return /* @__PURE__ */ jsx(\n SelectContentProvider,\n {\n scope: __scopeSelect,\n content,\n viewport,\n onViewportChange: setViewport,\n itemRefCallback,\n selectedItem,\n onItemLeave: handleItemLeave,\n itemTextRefCallback,\n focusSelectedItem,\n selectedItemText,\n position,\n isPositioned,\n searchRef,\n children: /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: context.open,\n onMountAutoFocus: (event) => {\n event.preventDefault();\n },\n onUnmountAutoFocus: composeEventHandlers(onCloseAutoFocus, (event) => {\n context.trigger?.focus({ preventScroll: true });\n event.preventDefault();\n }),\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: true,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n SelectPosition,\n {\n role: \"listbox\",\n id: context.contentId,\n \"data-state\": context.open ? \"open\" : \"closed\",\n dir: context.dir,\n onContextMenu: (event) => event.preventDefault(),\n ...contentProps,\n ...popperContentProps,\n onPlaced: () => setIsPositioned(true),\n ref: composedRefs,\n style: {\n // flex layout so we can place the scroll buttons properly\n display: \"flex\",\n flexDirection: \"column\",\n // reset the outline by default as the content MAY get focused\n outline: \"none\",\n ...contentProps.style\n },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if ([\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) {\n const items = getItems().filter((item) => !item.disabled);\n let candidateNodes = items.map((item) => item.ref.current);\n if ([\"ArrowUp\", \"End\"].includes(event.key)) {\n candidateNodes = candidateNodes.slice().reverse();\n }\n if ([\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n const currentElement = event.target;\n const currentIndex = candidateNodes.indexOf(currentElement);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n })\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nSelectContentImpl.displayName = CONTENT_IMPL_NAME;\nvar ITEM_ALIGNED_POSITION_NAME = \"SelectItemAlignedPosition\";\nvar SelectItemAlignedPosition = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onPlaced, ...popperProps } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);\n const [contentWrapper, setContentWrapper] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const getItems = useCollection(__scopeSelect);\n const shouldExpandOnScrollRef = React.useRef(false);\n const shouldRepositionRef = React.useRef(true);\n const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n const position = React.useCallback(() => {\n if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {\n const triggerRect = context.trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const valueNodeRect = context.valueNode.getBoundingClientRect();\n const itemTextRect = selectedItemText.getBoundingClientRect();\n if (context.dir !== \"rtl\") {\n const itemTextOffset = itemTextRect.left - contentRect.left;\n const left = valueNodeRect.left - itemTextOffset;\n const leftDelta = triggerRect.left - left;\n const minContentWidth = triggerRect.width + leftDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const rightEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedLeft = clamp(left, [\n CONTENT_MARGIN,\n // Prevents the content from going off the starting edge of the\n // viewport. It may still go off the ending edge, but this can be\n // controlled by the user since they may want to manage overflow in a\n // specific way.\n // https://github.com/radix-ui/primitives/issues/2049\n Math.max(CONTENT_MARGIN, rightEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.left = clampedLeft + \"px\";\n } else {\n const itemTextOffset = contentRect.right - itemTextRect.right;\n const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n const rightDelta = window.innerWidth - triggerRect.right - right;\n const minContentWidth = triggerRect.width + rightDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const leftEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedRight = clamp(right, [\n CONTENT_MARGIN,\n Math.max(CONTENT_MARGIN, leftEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.right = clampedRight + \"px\";\n }\n const items = getItems();\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const itemsHeight = viewport.scrollHeight;\n const contentStyles = window.getComputedStyle(content);\n const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);\n const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);\n const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);\n const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);\n const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n const viewportStyles = window.getComputedStyle(viewport);\n const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);\n const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);\n const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n if (willAlignWithoutTopOverflow) {\n const isLastItem = items.length > 0 && selectedItem === items[items.length - 1].ref.current;\n contentWrapper.style.bottom = \"0px\";\n const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n const clampedTriggerMiddleToBottomEdge = Math.max(\n triggerMiddleToBottomEdge,\n selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport\n (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth\n );\n const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n contentWrapper.style.height = height + \"px\";\n } else {\n const isFirstItem = items.length > 0 && selectedItem === items[0].ref.current;\n contentWrapper.style.top = \"0px\";\n const clampedTopEdgeToTriggerMiddle = Math.max(\n topEdgeToTriggerMiddle,\n contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport\n (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight\n );\n const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n contentWrapper.style.height = height + \"px\";\n viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n }\n contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;\n contentWrapper.style.minHeight = minContentHeight + \"px\";\n contentWrapper.style.maxHeight = availableHeight + \"px\";\n onPlaced?.();\n requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);\n }\n }, [\n getItems,\n context.trigger,\n context.valueNode,\n contentWrapper,\n content,\n viewport,\n selectedItem,\n selectedItemText,\n context.dir,\n onPlaced\n ]);\n useLayoutEffect(() => position(), [position]);\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n const handleScrollButtonChange = React.useCallback(\n (node) => {\n if (node && shouldRepositionRef.current === true) {\n position();\n focusSelectedItem?.();\n shouldRepositionRef.current = false;\n }\n },\n [position, focusSelectedItem]\n );\n return /* @__PURE__ */ jsx(\n SelectViewportProvider,\n {\n scope: __scopeSelect,\n contentWrapper,\n shouldExpandOnScrollRef,\n onScrollButtonChange: handleScrollButtonChange,\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: setContentWrapper,\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"fixed\",\n zIndex: contentZIndex\n },\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...popperProps,\n ref: composedRefs,\n style: {\n // When we get the height of the content, it includes borders. If we were to set\n // the height without having `boxSizing: 'border-box'` it would be too big.\n boxSizing: \"border-box\",\n // We need to ensure the content doesn't get taller than the wrapper\n maxHeight: \"100%\",\n ...popperProps.style\n }\n }\n )\n }\n )\n }\n );\n});\nSelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;\nvar POPPER_POSITION_NAME = \"SelectPopperPosition\";\nvar SelectPopperPosition = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeSelect,\n align = \"start\",\n collisionPadding = CONTENT_MARGIN,\n ...popperProps\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n return /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n ...popperScope,\n ...popperProps,\n ref: forwardedRef,\n align,\n collisionPadding,\n style: {\n // Ensure border-box for floating-ui calculations\n boxSizing: \"border-box\",\n ...popperProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-select-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-select-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-select-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-select-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-select-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nSelectPopperPosition.displayName = POPPER_POSITION_NAME;\nvar [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});\nvar VIEWPORT_NAME = \"SelectViewport\";\nvar SelectViewport = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, nonce, ...viewportProps } = props;\n const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);\n const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);\n const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);\n const prevScrollTopRef = React.useRef(0);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }\n ),\n /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-select-viewport\": \"\",\n role: \"presentation\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n // we use position: 'relative' here on the `viewport` so that when we call\n // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n // (independent of the scrollUpButton).\n position: \"relative\",\n flex: 1,\n // Viewport should only be scrollable in the vertical direction.\n // This won't work in vertical writing modes, so we'll need to\n // revisit this if/when that is supported\n // https://developer.chrome.com/blog/vertical-form-controls\n overflow: \"hidden auto\",\n ...viewportProps.style\n },\n onScroll: composeEventHandlers(viewportProps.onScroll, (event) => {\n const viewport = event.currentTarget;\n const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;\n if (shouldExpandOnScrollRef?.current && contentWrapper) {\n const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);\n if (scrolledBy > 0) {\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const cssMinHeight = parseFloat(contentWrapper.style.minHeight);\n const cssHeight = parseFloat(contentWrapper.style.height);\n const prevHeight = Math.max(cssMinHeight, cssHeight);\n if (prevHeight < availableHeight) {\n const nextHeight = prevHeight + scrolledBy;\n const clampedNextHeight = Math.min(availableHeight, nextHeight);\n const heightDiff = nextHeight - clampedNextHeight;\n contentWrapper.style.height = clampedNextHeight + \"px\";\n if (contentWrapper.style.bottom === \"0px\") {\n viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n contentWrapper.style.justifyContent = \"flex-end\";\n }\n }\n }\n }\n prevScrollTopRef.current = viewport.scrollTop;\n })\n }\n ) })\n ] });\n }\n);\nSelectViewport.displayName = VIEWPORT_NAME;\nvar GROUP_NAME = \"SelectGroup\";\nvar [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);\nvar SelectGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...groupProps } = props;\n const groupId = useId();\n return /* @__PURE__ */ jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", \"aria-labelledby\": groupId, ...groupProps, ref: forwardedRef }) });\n }\n);\nSelectGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"SelectLabel\";\nvar SelectLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...labelProps } = props;\n const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);\n return /* @__PURE__ */ jsx(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });\n }\n);\nSelectLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"SelectItem\";\nvar [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);\nvar SelectItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n value,\n disabled = false,\n textValue: textValueProp,\n ...itemProps\n } = props;\n const context = useSelectContext(ITEM_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);\n const isSelected = context.value === value;\n const [textValue, setTextValue] = React.useState(textValueProp ?? \"\");\n const [isFocused, setIsFocused] = React.useState(false);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => contentContext.itemRefCallback?.(node, value, disabled)\n );\n const textId = useId();\n const pointerTypeRef = React.useRef(\"touch\");\n const handleSelect = () => {\n if (!disabled) {\n context.onValueChange(value);\n context.onOpenChange(false);\n }\n };\n if (value === \"\") {\n throw new Error(\n \"A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.\"\n );\n }\n return /* @__PURE__ */ jsx(\n SelectItemContextProvider,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: React.useCallback((node) => {\n setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? \"\").trim());\n }, []),\n children: /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textValue,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"option\",\n \"aria-labelledby\": textId,\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-selected\": isSelected && isFocused,\n \"data-state\": isSelected ? \"checked\" : \"unchecked\",\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n tabIndex: disabled ? void 0 : -1,\n ...itemProps,\n ref: composedRefs,\n onFocus: composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),\n onClick: composeEventHandlers(itemProps.onClick, () => {\n if (pointerTypeRef.current !== \"mouse\") handleSelect();\n }),\n onPointerUp: composeEventHandlers(itemProps.onPointerUp, () => {\n if (pointerTypeRef.current === \"mouse\") handleSelect();\n }),\n onPointerDown: composeEventHandlers(itemProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n }),\n onPointerMove: composeEventHandlers(itemProps.onPointerMove, (event) => {\n pointerTypeRef.current = event.pointerType;\n if (disabled) {\n contentContext.onItemLeave?.();\n } else if (pointerTypeRef.current === \"mouse\") {\n event.currentTarget.focus({ preventScroll: true });\n }\n }),\n onPointerLeave: composeEventHandlers(itemProps.onPointerLeave, (event) => {\n if (event.currentTarget === document.activeElement) {\n contentContext.onItemLeave?.();\n }\n }),\n onKeyDown: composeEventHandlers(itemProps.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef?.current !== \"\";\n if (isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) handleSelect();\n if (event.key === \" \") event.preventDefault();\n })\n }\n )\n }\n )\n }\n );\n }\n);\nSelectItem.displayName = ITEM_NAME;\nvar ITEM_TEXT_NAME = \"SelectItemText\";\nvar SelectItemText = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, ...itemTextProps } = props;\n const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);\n const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);\n const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);\n const [itemTextNode, setItemTextNode] = React.useState(null);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => setItemTextNode(node),\n itemContext.onItemTextChange,\n (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)\n );\n const textContent = itemTextNode?.textContent;\n const nativeOption = React.useMemo(\n () => /* @__PURE__ */ jsx(\"option\", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),\n [itemContext.disabled, itemContext.value, textContent]\n );\n const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;\n useLayoutEffect(() => {\n onNativeOptionAdd(nativeOption);\n return () => onNativeOptionRemove(nativeOption);\n }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),\n itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null\n ] });\n }\n);\nSelectItemText.displayName = ITEM_TEXT_NAME;\nvar ITEM_INDICATOR_NAME = \"SelectItemIndicator\";\nvar SelectItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...itemIndicatorProps } = props;\n const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);\n return itemContext.isSelected ? /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...itemIndicatorProps, ref: forwardedRef }) : null;\n }\n);\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SCROLL_UP_BUTTON_NAME = \"SelectScrollUpButton\";\nvar SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const [canScrollUp, setCanScrollUp] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const canScrollUp2 = viewport.scrollTop > 0;\n setCanScrollUp(canScrollUp2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollUp ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;\nvar SCROLL_DOWN_BUTTON_NAME = \"SelectScrollDownButton\";\nvar SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const [canScrollDown, setCanScrollDown] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;\n setCanScrollDown(canScrollDown2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollDown ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;\nvar SelectScrollButtonImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;\n const contentContext = useSelectContentContext(\"SelectScrollButton\", __scopeSelect);\n const autoScrollTimerRef = React.useRef(null);\n const getItems = useCollection(__scopeSelect);\n const clearAutoScrollTimer = React.useCallback(() => {\n if (autoScrollTimerRef.current !== null) {\n window.clearInterval(autoScrollTimerRef.current);\n autoScrollTimerRef.current = null;\n }\n }, []);\n React.useEffect(() => {\n return () => clearAutoScrollTimer();\n }, [clearAutoScrollTimer]);\n useLayoutEffect(() => {\n const activeItem = getItems().find((item) => item.ref.current === document.activeElement);\n activeItem?.ref.current?.scrollIntoView({ block: \"nearest\" });\n }, [getItems]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-hidden\": true,\n ...scrollIndicatorProps,\n ref: forwardedRef,\n style: { flexShrink: 0, ...scrollIndicatorProps.style },\n onPointerDown: composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerMove: composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n contentContext.onItemLeave?.();\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerLeave: composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n clearAutoScrollTimer();\n })\n }\n );\n});\nvar SEPARATOR_NAME = \"SelectSeparator\";\nvar SelectSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { \"aria-hidden\": true, ...separatorProps, ref: forwardedRef });\n }\n);\nSelectSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"SelectArrow\";\nvar SelectArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(ARROW_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);\n return context.open && contentContext.position === \"popper\" ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;\n }\n);\nSelectArrow.displayName = ARROW_NAME;\nvar BUBBLE_INPUT_NAME = \"SelectBubbleInput\";\nvar SelectBubbleInput = React.forwardRef(\n ({ __scopeSelect, value, ...props }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const prevValue = usePrevious(value);\n React.useEffect(() => {\n const select = ref.current;\n if (!select) return;\n const selectProto = window.HTMLSelectElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n selectProto,\n \"value\"\n );\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event(\"change\", { bubbles: true });\n setValue.call(select, value);\n select.dispatchEvent(event);\n }\n }, [prevValue, value]);\n return /* @__PURE__ */ jsx(\n Primitive.select,\n {\n ...props,\n style: { ...VISUALLY_HIDDEN_STYLES, ...props.style },\n ref: composedRefs,\n defaultValue: value\n }\n );\n }\n);\nSelectBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction shouldShowPlaceholder(value) {\n return value === \"\" || value === void 0;\n}\nfunction useTypeaheadSearch(onSearchChange) {\n const handleSearchChange = useCallbackRef(onSearchChange);\n const searchRef = React.useRef(\"\");\n const timerRef = React.useRef(0);\n const handleTypeaheadSearch = React.useCallback(\n (key) => {\n const search = searchRef.current + key;\n handleSearchChange(search);\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n },\n [handleSearchChange]\n );\n const resetTypeahead = React.useCallback(() => {\n searchRef.current = \"\";\n window.clearTimeout(timerRef.current);\n }, []);\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n return [searchRef, handleTypeaheadSearch, resetTypeahead];\n}\nfunction findNextItem(items, search, currentItem) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;\n let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));\n const excludeCurrentItem = normalizedSearch.length === 1;\n if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);\n const nextItem = wrappedItems.find(\n (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextItem !== currentItem ? nextItem : void 0;\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root2 = Select;\nvar Trigger = SelectTrigger;\nvar Value = SelectValue;\nvar Icon = SelectIcon;\nvar Portal = SelectPortal;\nvar Content2 = SelectContent;\nvar Viewport = SelectViewport;\nvar Group = SelectGroup;\nvar Label = SelectLabel;\nvar Item = SelectItem;\nvar ItemText = SelectItemText;\nvar ItemIndicator = SelectItemIndicator;\nvar ScrollUpButton = SelectScrollUpButton;\nvar ScrollDownButton = SelectScrollDownButton;\nvar Separator = SelectSeparator;\nvar Arrow2 = SelectArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Group,\n Icon,\n Item,\n ItemIndicator,\n ItemText,\n Label,\n Portal,\n Root2 as Root,\n ScrollDownButton,\n ScrollUpButton,\n Select,\n SelectArrow,\n SelectContent,\n SelectGroup,\n SelectIcon,\n SelectItem,\n SelectItemIndicator,\n SelectItemText,\n SelectLabel,\n SelectPortal,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n Separator,\n Trigger,\n Value,\n Viewport,\n createSelectScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { IconConfirmCheck, IconChevronDown, IconChevronUp } from \"@/components/ui/icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger>) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-lg border border-input bg-background px-3 py-2 text-sm text-foreground ring-offset-background\",\n \"placeholder:text-muted-foreground\",\n \"focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50\",\n \"[&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <IconChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <IconChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <IconChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"popper\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-lg border bg-popover text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n \"data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95\",\n \"data-[side=bottom]:slide-in-from-top-2\",\n \"data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2\",\n \"data-[side=top]:slide-in-from-bottom-2\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\n \"py-1.5 pl-8 pr-2 text-sm font-semibold text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none\",\n \"focus:bg-accent focus:text-accent-foreground\",\n \"data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <IconConfirmCheck className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { IconCancelClose } from \"@/components/ui/icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative flex w-full items-start gap-5 rounded-lg p-5 text-base leading-6 [&>svg]:h-6 [&>svg]:w-6 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"\",\n destructive: \"\",\n success: \"\",\n warning: \"\",\n },\n filled: {\n true: \"\",\n false: \"border bg-background\",\n },\n },\n compoundVariants: [\n {\n variant: \"default\",\n filled: false,\n className:\n \"border-border text-foreground [&>svg]:text-foreground\",\n },\n {\n variant: \"destructive\",\n filled: false,\n className:\n \"border-destructive text-destructive [&>svg]:text-destructive\",\n },\n {\n variant: \"success\",\n filled: false,\n className:\n \"border-success text-success [&>svg]:text-success\",\n },\n {\n variant: \"warning\",\n filled: false,\n className:\n \"border-warning text-warning [&>svg]:text-warning\",\n },\n {\n variant: \"default\",\n filled: true,\n className:\n \"bg-primary text-primary-foreground [&>svg]:text-primary-foreground\",\n },\n {\n variant: \"destructive\",\n filled: true,\n className:\n \"bg-destructive text-destructive-foreground [&>svg]:text-destructive-foreground\",\n },\n {\n variant: \"success\",\n filled: true,\n className:\n \"bg-success text-success-foreground [&>svg]:text-success-foreground\",\n },\n {\n variant: \"warning\",\n filled: true,\n className:\n \"bg-warning text-warning-foreground [&>svg]:text-warning-foreground\",\n },\n ],\n defaultVariants: {\n variant: \"default\",\n filled: false,\n },\n }\n)\n\nfunction Alert({\n className,\n variant = \"default\",\n filled = false,\n onDismiss,\n children,\n ...props\n}: React.ComponentProps<\"div\"> &\n VariantProps<typeof alertVariants> & {\n onDismiss?: () => void\n }) {\n return (\n <div\n data-slot=\"alert\"\n data-variant={variant}\n data-filled={filled || undefined}\n role=\"alert\"\n className={cn(alertVariants({ variant, filled, className }))}\n {...props}\n >\n <div\n data-slot=\"alert-content\"\n className=\"flex min-w-0 flex-1 items-center gap-2.5\"\n >\n {children}\n </div>\n {onDismiss ? (\n <button\n data-slot=\"alert-dismiss\"\n type=\"button\"\n onClick={onDismiss}\n className=\"shrink-0 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\"\n aria-label=\"Dismiss\"\n >\n <IconCancelClose className=\"h-6 w-6\" />\n </button>\n ) : null}\n </div>\n )\n}\n\nfunction AlertTitle({\n className,\n children,\n ...props\n}: React.ComponentProps<\"h5\">) {\n return (\n <h5\n data-slot=\"alert-title\"\n className={cn(\"text-h4\", className)}\n {...props}\n >\n {children}\n </h5>\n )\n}\n\nfunction AlertDescription({\n className,\n children,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-description\"\n className={cn(\"text-base leading-6 [&_p]:leading-6\", className)}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nexport { Alert, AlertTitle, AlertDescription, alertVariants }\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { IconCancelClose, IconSuccess, IconError, IconInfoCircle } from \"@/components/ui/icons\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst toastVariants = cva(\n \"relative flex w-full flex-col gap-4 rounded-lg border px-3 py-5\",\n {\n variants: {\n variant: {\n default: \"border-border bg-background text-foreground\",\n success: \"border-border bg-background text-foreground\",\n destructive: \"border-destructive bg-background text-destructive\",\n warning: \"border-border bg-background text-foreground\",\n info: \"border-border bg-background text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst toastIconMap = {\n default: IconSuccess,\n success: IconSuccess,\n destructive: IconError,\n warning: IconError,\n info: IconInfoCircle,\n} as const\n\nconst toastIconColorMap = {\n default: \"text-foreground\",\n success: \"text-success\",\n destructive: \"text-destructive\",\n warning: \"text-warning\",\n info: \"text-info\",\n} as const\n\ntype ToastVariant = NonNullable<VariantProps<typeof toastVariants>[\"variant\"]>\n\ntype ToastProps = React.ComponentProps<\"div\"> &\n VariantProps<typeof toastVariants> & {\n onClose?: () => void\n }\n\nfunction Toast({\n className,\n variant = \"default\",\n onClose,\n children,\n ...props\n}: ToastProps) {\n return (\n <div\n data-slot=\"toast\"\n data-variant={variant}\n role=\"alert\"\n className={cn(toastVariants({ variant, className }))}\n {...props}\n >\n {children}\n {onClose && (\n <button\n data-slot=\"toast-close\"\n type=\"button\"\n onClick={onClose}\n className={cn(\n \"absolute right-3 top-5 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n variant === \"destructive\" && \"text-destructive\"\n )}\n aria-label=\"Close\"\n >\n <IconCancelClose className=\"h-6 w-6\" />\n </button>\n )}\n </div>\n )\n}\n\nfunction ToastHeader({\n className,\n variant = \"default\",\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n variant?: ToastVariant\n}) {\n const IconComponent = toastIconMap[variant]\n const iconColor = toastIconColorMap[variant]\n\n return (\n <div\n data-slot=\"toast-header\"\n className={cn(\"flex items-center gap-4\", className)}\n {...props}\n >\n <IconComponent\n data-slot=\"toast-icon\"\n className={cn(\"h-6 w-6 shrink-0\", iconColor)}\n aria-hidden=\"true\"\n />\n <div\n data-slot=\"toast-header-content\"\n className=\"flex flex-1 flex-col\"\n >\n {children}\n </div>\n </div>\n )\n}\n\nfunction ToastTitle({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"toast-title\"\n className={cn(\"text-h4\", className)}\n {...props}\n />\n )\n}\n\nfunction ToastDescription({\n className,\n ...props\n}: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"toast-description\"\n className={cn(\n \"pl-8 text-sm leading-5 text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ToastAction({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"toast-action\"\n className={cn(\"flex items-start justify-end gap-3 pl-8\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Toast,\n ToastHeader,\n ToastTitle,\n ToastDescription,\n ToastAction,\n toastVariants,\n}\nexport type { ToastProps, ToastVariant }\n"],"x_google_ignoreList":[21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,49,50,51,52,53,54,55,56,57,58,59,60,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,88,89],"mappings":"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"}