@xploreu/components 0.4.45 → 0.4.47

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 (382) hide show
  1. package/dist/chunk-7EXEQDMX.js +2 -0
  2. package/dist/chunk-7EXEQDMX.js.map +1 -0
  3. package/dist/{chunk-KUOFW7JO.js → chunk-B5LYJTBB.js} +2 -2
  4. package/dist/{chunk-KUOFW7JO.js.map → chunk-B5LYJTBB.js.map} +1 -1
  5. package/dist/chunk-DQGZIFNP.js +2 -0
  6. package/dist/chunk-DQGZIFNP.js.map +1 -0
  7. package/dist/{chunk-F77XVICY.js → chunk-FIDOWSDH.js} +2 -2
  8. package/dist/{chunk-F77XVICY.js.map → chunk-FIDOWSDH.js.map} +1 -1
  9. package/dist/chunk-I7XV55MM.js +2 -0
  10. package/dist/chunk-I7XV55MM.js.map +1 -0
  11. package/dist/{chunk-5VZ6QNBI.js → chunk-IFBRARGK.js} +2 -2
  12. package/dist/{chunk-5VZ6QNBI.js.map → chunk-IFBRARGK.js.map} +1 -1
  13. package/dist/{chunk-NFLQZ5NB.js → chunk-NBM4LIT4.js} +2 -2
  14. package/dist/{chunk-NFLQZ5NB.js.map → chunk-NBM4LIT4.js.map} +1 -1
  15. package/dist/{chunk-ZK7MHZFG.js → chunk-OBS7TDVV.js} +2 -2
  16. package/dist/{chunk-ZK7MHZFG.js.map → chunk-OBS7TDVV.js.map} +1 -1
  17. package/dist/{chunk-C675EWZW.js → chunk-QIP6KFG2.js} +2 -2
  18. package/dist/{chunk-C675EWZW.js.map → chunk-QIP6KFG2.js.map} +1 -1
  19. package/dist/{chunk-YPV6XEV4.js → chunk-S4L5WILL.js} +2 -2
  20. package/dist/{chunk-YPV6XEV4.js.map → chunk-S4L5WILL.js.map} +1 -1
  21. package/dist/{chunk-XIZN73T3.js → chunk-YHY3VXCO.js} +2 -2
  22. package/dist/{chunk-XIZN73T3.js.map → chunk-YHY3VXCO.js.map} +1 -1
  23. package/dist/composites/combobox-chip-outside.js +1 -1
  24. package/dist/composites/index.js +1 -1
  25. package/dist/composites/phone-input.js +1 -1
  26. package/dist/ui/alert-dialog.js +1 -1
  27. package/dist/ui/alerter.js +1 -1
  28. package/dist/ui/button.js +1 -1
  29. package/dist/ui/calendar.js +1 -1
  30. package/dist/ui/carousel.js +1 -1
  31. package/dist/ui/date-multiple-picker.js +1 -1
  32. package/dist/ui/date-picker.js +1 -1
  33. package/dist/ui/date-range-picker.js +1 -1
  34. package/dist/ui/index.js +1 -1
  35. package/dist/ui/tabs.js +1 -1
  36. package/dist/ui/toast.js +1 -1
  37. package/package.json +1 -1
  38. package/dist/chunk-G4DP36RY.js +0 -2
  39. package/dist/chunk-G4DP36RY.js.map +0 -1
  40. package/dist/chunk-UINS73U7.js +0 -2
  41. package/dist/chunk-UINS73U7.js.map +0 -1
  42. package/dist/chunk-XZN4XT6V.js +0 -2
  43. package/dist/chunk-XZN4XT6V.js.map +0 -1
  44. package/dist/composites/combobox-chip-outside.d.ts +0 -44
  45. package/dist/composites/combobox-chip.d.ts +0 -47
  46. package/dist/composites/combobox-simple.d.ts +0 -37
  47. package/dist/composites/filter-combobox.d.ts +0 -36
  48. package/dist/composites/index.d.ts +0 -50
  49. package/dist/composites/phone-input.d.ts +0 -9
  50. package/dist/composites/profile-avatar.d.ts +0 -29
  51. package/dist/effects/auto-height.d.ts +0 -13
  52. package/dist/effects/highlight.d.ts +0 -93
  53. package/dist/effects/index.d.ts +0 -5
  54. package/dist/form/form-input.d.ts +0 -19
  55. package/dist/form/form-textarea.d.ts +0 -18
  56. package/dist/form/form.d.ts +0 -44
  57. package/dist/form/index.d.ts +0 -12
  58. package/dist/icons/about-me-icon.d.ts +0 -6
  59. package/dist/icons/academic-cap-dual-tone-icon.d.ts +0 -6
  60. package/dist/icons/academic-cap-icon.d.ts +0 -6
  61. package/dist/icons/activity-on-tab-profile-icon.d.ts +0 -6
  62. package/dist/icons/add-connect-icon.d.ts +0 -6
  63. package/dist/icons/alert-jobs-icon.d.ts +0 -6
  64. package/dist/icons/applicants-icon.d.ts +0 -6
  65. package/dist/icons/application-status-icon.d.ts +0 -6
  66. package/dist/icons/archive-message-icon.d.ts +0 -6
  67. package/dist/icons/arrow-go-to-location-icon.d.ts +0 -6
  68. package/dist/icons/bag-icon.d.ts +0 -6
  69. package/dist/icons/bag2-icon.d.ts +0 -6
  70. package/dist/icons/bag3-icon.d.ts +0 -6
  71. package/dist/icons/bell-icon.d.ts +0 -6
  72. package/dist/icons/birthday-date-icon.d.ts +0 -6
  73. package/dist/icons/book-dual-tone-icon.d.ts +0 -6
  74. package/dist/icons/book-open.d.ts +0 -6
  75. package/dist/icons/bookmark-filled-icon.d.ts +0 -6
  76. package/dist/icons/bookmark-icon.d.ts +0 -6
  77. package/dist/icons/brief-dual-tone-icon.d.ts +0 -6
  78. package/dist/icons/brief-minimalistic-dual-tone-icon.d.ts +0 -6
  79. package/dist/icons/brief-minimalistic-icon.d.ts +0 -6
  80. package/dist/icons/building-dual-tone-icon.d.ts +0 -6
  81. package/dist/icons/building-icon.d.ts +0 -6
  82. package/dist/icons/building-infrastructure-icon.d.ts +0 -6
  83. package/dist/icons/calendar-icon.d.ts +0 -6
  84. package/dist/icons/case-icon.d.ts +0 -6
  85. package/dist/icons/certificate-icon.d.ts +0 -6
  86. package/dist/icons/certificate-on-profile-icon.d.ts +0 -6
  87. package/dist/icons/chart-square-icon.d.ts +0 -6
  88. package/dist/icons/chat-round-dots-icon.d.ts +0 -6
  89. package/dist/icons/check-square-icon.d.ts +0 -6
  90. package/dist/icons/checkbox-base-icon.d.ts +0 -6
  91. package/dist/icons/checkbox-new-icon.d.ts +0 -6
  92. package/dist/icons/checkbox-select-icon.d.ts +0 -6
  93. package/dist/icons/checklist-icon.d.ts +0 -6
  94. package/dist/icons/checklist-minimalist-icon.d.ts +0 -6
  95. package/dist/icons/circle-quarter-icon.d.ts +0 -6
  96. package/dist/icons/city-icon.d.ts +0 -6
  97. package/dist/icons/clear-icon.d.ts +0 -6
  98. package/dist/icons/clipboard-icon.d.ts +0 -6
  99. package/dist/icons/clock-min.d.ts +0 -6
  100. package/dist/icons/clock-plus.d.ts +0 -6
  101. package/dist/icons/close-square-icon.d.ts +0 -6
  102. package/dist/icons/cloud-upload-icon.d.ts +0 -6
  103. package/dist/icons/comment-icon.d.ts +0 -6
  104. package/dist/icons/company-industry-icon.d.ts +0 -6
  105. package/dist/icons/company-on-job-description-icon.d.ts +0 -6
  106. package/dist/icons/company-on-job-preferences-icon.d.ts +0 -6
  107. package/dist/icons/company-post-icon.d.ts +0 -6
  108. package/dist/icons/connection-company-icon.d.ts +0 -6
  109. package/dist/icons/connections-icon.d.ts +0 -6
  110. package/dist/icons/contact-on-settings-icon.d.ts +0 -6
  111. package/dist/icons/copy-icon.d.ts +0 -6
  112. package/dist/icons/course-icon-search-icon.d.ts +0 -6
  113. package/dist/icons/create-free-jobs-with-ai-icon.d.ts +0 -6
  114. package/dist/icons/create-group-message-icon.d.ts +0 -6
  115. package/dist/icons/create-job-icon.d.ts +0 -6
  116. package/dist/icons/danger-triangle-icon.d.ts +0 -6
  117. package/dist/icons/delete-icon.d.ts +0 -6
  118. package/dist/icons/document-add-icon.d.ts +0 -6
  119. package/dist/icons/document-notes-icon.d.ts +0 -6
  120. package/dist/icons/dots-icon.d.ts +0 -6
  121. package/dist/icons/download-cv-icon.d.ts +0 -6
  122. package/dist/icons/download-minimalistic-icon.d.ts +0 -6
  123. package/dist/icons/drive-db.d.ts +0 -6
  124. package/dist/icons/duration-of-work-icon.d.ts +0 -6
  125. package/dist/icons/duration-open-to-offer-icon.d.ts +0 -6
  126. package/dist/icons/edit-icon.d.ts +0 -6
  127. package/dist/icons/edit-on-button-profile-icon.d.ts +0 -6
  128. package/dist/icons/edit-on-section-profile-icon.d.ts +0 -6
  129. package/dist/icons/education-icon.d.ts +0 -6
  130. package/dist/icons/education-on-card-icon.d.ts +0 -6
  131. package/dist/icons/employment-type-on-job-preferences-icon.d.ts +0 -6
  132. package/dist/icons/evaluation-icon.d.ts +0 -6
  133. package/dist/icons/expected-salary-on-job-preferences-icon.d.ts +0 -6
  134. package/dist/icons/experience-icon.d.ts +0 -6
  135. package/dist/icons/female-on-summary-profile-icon.d.ts +0 -6
  136. package/dist/icons/file-default-icon.d.ts +0 -6
  137. package/dist/icons/file-doc-icon.d.ts +0 -6
  138. package/dist/icons/file-docx-icon.d.ts +0 -6
  139. package/dist/icons/file-jpg-icon.d.ts +0 -6
  140. package/dist/icons/file-mkv-icon.d.ts +0 -6
  141. package/dist/icons/file-mov-icon.d.ts +0 -6
  142. package/dist/icons/file-mp4-icon.d.ts +0 -6
  143. package/dist/icons/file-pdf-icon.d.ts +0 -6
  144. package/dist/icons/file-png-icon.d.ts +0 -6
  145. package/dist/icons/file-ppt-icon.d.ts +0 -6
  146. package/dist/icons/file-text-icon.d.ts +0 -6
  147. package/dist/icons/file-video-icon.d.ts +0 -6
  148. package/dist/icons/fire-icon.d.ts +0 -6
  149. package/dist/icons/flag-icon.d.ts +0 -6
  150. package/dist/icons/folder-icon.d.ts +0 -6
  151. package/dist/icons/followers-on-connections-icon.d.ts +0 -6
  152. package/dist/icons/following-on-connections-icon.d.ts +0 -6
  153. package/dist/icons/forward-icon.d.ts +0 -6
  154. package/dist/icons/funnel-icon.d.ts +0 -6
  155. package/dist/icons/gallery-add-icon.d.ts +0 -6
  156. package/dist/icons/gallery-favorite-icon.d.ts +0 -6
  157. package/dist/icons/gallery-icon.d.ts +0 -6
  158. package/dist/icons/general-preference-on-settings-icon.d.ts +0 -6
  159. package/dist/icons/globe-dual-tone-icon.d.ts +0 -6
  160. package/dist/icons/hand-stars-icon.d.ts +0 -6
  161. package/dist/icons/hard-skill-on-profile-icon.d.ts +0 -6
  162. package/dist/icons/help-icon.d.ts +0 -6
  163. package/dist/icons/hidden-icon.d.ts +0 -6
  164. package/dist/icons/hide-passwords-icon.d.ts +0 -6
  165. package/dist/icons/hired-by-others-icon.d.ts +0 -6
  166. package/dist/icons/home-icon.d.ts +0 -6
  167. package/dist/icons/home-smile-icon.d.ts +0 -6
  168. package/dist/icons/home-table.d.ts +0 -6
  169. package/dist/icons/icon-component.d.ts +0 -6
  170. package/dist/icons/image-on-message-icon.d.ts +0 -6
  171. package/dist/icons/index.d.ts +0 -282
  172. package/dist/icons/info-icon.d.ts +0 -6
  173. package/dist/icons/info-square-icon.d.ts +0 -6
  174. package/dist/icons/interested-of-industry-icon.d.ts +0 -6
  175. package/dist/icons/invitations-on-connections-icon.d.ts +0 -6
  176. package/dist/icons/job-description-icon.d.ts +0 -6
  177. package/dist/icons/job-preference-icon.d.ts +0 -6
  178. package/dist/icons/jobs-category-icon.d.ts +0 -6
  179. package/dist/icons/jobseeker-status-on-job-preferences-icon.d.ts +0 -6
  180. package/dist/icons/key-icon.d.ts +0 -6
  181. package/dist/icons/language-on-profile-icon.d.ts +0 -6
  182. package/dist/icons/layers-icon.d.ts +0 -6
  183. package/dist/icons/layout-icon.d.ts +0 -6
  184. package/dist/icons/like-filled-icon.d.ts +0 -6
  185. package/dist/icons/like-icon.d.ts +0 -6
  186. package/dist/icons/link-copy.d.ts +0 -6
  187. package/dist/icons/list-icon.d.ts +0 -6
  188. package/dist/icons/list-option-feedback-icon.d.ts +0 -6
  189. package/dist/icons/living-on-summary-profile-icon.d.ts +0 -6
  190. package/dist/icons/location-company-on-card-icon.d.ts +0 -6
  191. package/dist/icons/location-on-search-icon.d.ts +0 -6
  192. package/dist/icons/lock-icon.d.ts +0 -6
  193. package/dist/icons/logo-icon.d.ts +0 -6
  194. package/dist/icons/logout-icon.d.ts +0 -6
  195. package/dist/icons/lonceng-z-icon.d.ts +0 -6
  196. package/dist/icons/mail-icon.d.ts +0 -6
  197. package/dist/icons/mailbox-icon.d.ts +0 -6
  198. package/dist/icons/male-on-summary-profile-icon.d.ts +0 -6
  199. package/dist/icons/map-cluster-marker-icon.d.ts +0 -6
  200. package/dist/icons/map-marker-icon.d.ts +0 -6
  201. package/dist/icons/map-pin-icon.d.ts +0 -6
  202. package/dist/icons/map-pin-icon2.d.ts +0 -6
  203. package/dist/icons/map-pin2-icon.d.ts +0 -6
  204. package/dist/icons/mark-as-read-icon.d.ts +0 -6
  205. package/dist/icons/media-icon.d.ts +0 -6
  206. package/dist/icons/message-on-card-icon.d.ts +0 -6
  207. package/dist/icons/messages-icon.d.ts +0 -6
  208. package/dist/icons/mic-record-icon.d.ts +0 -6
  209. package/dist/icons/mini-sidebar-icon.d.ts +0 -6
  210. package/dist/icons/money-bill-icon.d.ts +0 -6
  211. package/dist/icons/mute-message-icon.d.ts +0 -6
  212. package/dist/icons/my-connecions-icon.d.ts +0 -6
  213. package/dist/icons/my-connections-on-tab-profile-icon.d.ts +0 -6
  214. package/dist/icons/my-cover-letter-icon.d.ts +0 -6
  215. package/dist/icons/my-dashboard-icon.d.ts +0 -6
  216. package/dist/icons/my-dashboards-icon.d.ts +0 -6
  217. package/dist/icons/my-drive-icon.d.ts +0 -6
  218. package/dist/icons/my-portofolio-icon.d.ts +0 -6
  219. package/dist/icons/my-resume-icon.d.ts +0 -6
  220. package/dist/icons/new-message-icon.d.ts +0 -6
  221. package/dist/icons/new-post-icon.d.ts +0 -6
  222. package/dist/icons/news-icon.d.ts +0 -6
  223. package/dist/icons/notification-icon.d.ts +0 -6
  224. package/dist/icons/notification-on-settings-icon.d.ts +0 -6
  225. package/dist/icons/offered-by-others-icon.d.ts +0 -6
  226. package/dist/icons/office-open-to-offer-icon.d.ts +0 -6
  227. package/dist/icons/office-opent-to-offer-section-icon.d.ts +0 -6
  228. package/dist/icons/open-another-page-icon.d.ts +0 -6
  229. package/dist/icons/open-preview-my-profile-icon.d.ts +0 -6
  230. package/dist/icons/open-to-offer-section-icon.d.ts +0 -6
  231. package/dist/icons/open-to-opportunities-icon.d.ts +0 -6
  232. package/dist/icons/other-job-for-you-icon.d.ts +0 -6
  233. package/dist/icons/other-job-from-this-company-icon.d.ts +0 -6
  234. package/dist/icons/passwords-icon.d.ts +0 -6
  235. package/dist/icons/pdf-on-apply-job-icon.d.ts +0 -6
  236. package/dist/icons/pen-new-square-icon.d.ts +0 -6
  237. package/dist/icons/people-you-may-know-icon.d.ts +0 -6
  238. package/dist/icons/people-your-company-icon.d.ts +0 -6
  239. package/dist/icons/phone-dual-tone-icon.d.ts +0 -6
  240. package/dist/icons/phone-icon.d.ts +0 -6
  241. package/dist/icons/pin-location-new-icon.d.ts +0 -6
  242. package/dist/icons/pin-message-icon.d.ts +0 -6
  243. package/dist/icons/plain-icon.d.ts +0 -6
  244. package/dist/icons/plus-square-icon.d.ts +0 -6
  245. package/dist/icons/posts-icon-search-icon.d.ts +0 -6
  246. package/dist/icons/priority-by-icon.d.ts +0 -6
  247. package/dist/icons/private-post-icon.d.ts +0 -6
  248. package/dist/icons/profile-icon.d.ts +0 -6
  249. package/dist/icons/public-post-icon.d.ts +0 -6
  250. package/dist/icons/public-post-on-card-icon.d.ts +0 -6
  251. package/dist/icons/repeat-icon.d.ts +0 -6
  252. package/dist/icons/reply-icon.d.ts +0 -6
  253. package/dist/icons/report-icon.d.ts +0 -6
  254. package/dist/icons/repost-icon.d.ts +0 -6
  255. package/dist/icons/reposted-icon.d.ts +0 -6
  256. package/dist/icons/save-jobs-icon.d.ts +0 -6
  257. package/dist/icons/save-post-menu-icon.d.ts +0 -6
  258. package/dist/icons/search-bar-icon.d.ts +0 -6
  259. package/dist/icons/search-icon.d.ts +0 -6
  260. package/dist/icons/search-with-date-icon.d.ts +0 -6
  261. package/dist/icons/send-comment-icon.d.ts +0 -6
  262. package/dist/icons/settings-icon.d.ts +0 -6
  263. package/dist/icons/share-circle-icon.d.ts +0 -6
  264. package/dist/icons/share-icon.d.ts +0 -6
  265. package/dist/icons/share-link.d.ts +0 -6
  266. package/dist/icons/shield-dualtone.d.ts +0 -6
  267. package/dist/icons/show-passwords-icon.d.ts +0 -6
  268. package/dist/icons/size-company-icon.d.ts +0 -6
  269. package/dist/icons/skill-on-tab-profile-icon.d.ts +0 -6
  270. package/dist/icons/skills-icon.d.ts +0 -6
  271. package/dist/icons/smile-icon.d.ts +0 -6
  272. package/dist/icons/soft-skill-icon.d.ts +0 -6
  273. package/dist/icons/sort-ascending-icon.d.ts +0 -6
  274. package/dist/icons/sort-by-icon.d.ts +0 -6
  275. package/dist/icons/sort-default-icon.d.ts +0 -6
  276. package/dist/icons/sort-descending-icon.d.ts +0 -6
  277. package/dist/icons/sort-horizontal-icon.d.ts +0 -6
  278. package/dist/icons/sosial-media-section-icon.d.ts +0 -6
  279. package/dist/icons/sparkle-star-icon.d.ts +0 -6
  280. package/dist/icons/sparkles-icon.d.ts +0 -6
  281. package/dist/icons/speech-icon.d.ts +0 -6
  282. package/dist/icons/stacked-layout-dual-tone-icon.d.ts +0 -6
  283. package/dist/icons/star-icon.d.ts +0 -6
  284. package/dist/icons/stars-icon.d.ts +0 -6
  285. package/dist/icons/sugested-company-icon.d.ts +0 -6
  286. package/dist/icons/suitcase-icon.d.ts +0 -6
  287. package/dist/icons/technical-skill-icon.d.ts +0 -6
  288. package/dist/icons/theme-icon.d.ts +0 -6
  289. package/dist/icons/themes-icon.d.ts +0 -6
  290. package/dist/icons/translate-icon.d.ts +0 -6
  291. package/dist/icons/trash-icon.d.ts +0 -6
  292. package/dist/icons/unarchive-message-icon.d.ts +0 -6
  293. package/dist/icons/unfollow-icon.d.ts +0 -6
  294. package/dist/icons/unmute-message-icon.d.ts +0 -6
  295. package/dist/icons/unpin-message-icon.d.ts +0 -6
  296. package/dist/icons/unsave-job-icon.d.ts +0 -6
  297. package/dist/icons/upload-document-icon.d.ts +0 -6
  298. package/dist/icons/upload-document-new-icon.d.ts +0 -6
  299. package/dist/icons/upload-event-icon.d.ts +0 -6
  300. package/dist/icons/upload-file-placeholder-icon.d.ts +0 -6
  301. package/dist/icons/upload-generate-image-icon.d.ts +0 -6
  302. package/dist/icons/upload-generate-post-icon.d.ts +0 -6
  303. package/dist/icons/upload-media-icon.d.ts +0 -6
  304. package/dist/icons/upload-media-new-icon.d.ts +0 -6
  305. package/dist/icons/upload-pictures-on-profile-icon.d.ts +0 -6
  306. package/dist/icons/upload-pollingt-new-icon.d.ts +0 -6
  307. package/dist/icons/upload-pooling-icon.d.ts +0 -6
  308. package/dist/icons/upload-reels-icon.d.ts +0 -6
  309. package/dist/icons/user-check-icon.d.ts +0 -6
  310. package/dist/icons/user-connections.d.ts +0 -6
  311. package/dist/icons/user-dual-tone-icon.d.ts +0 -6
  312. package/dist/icons/user-hands-up.d.ts +0 -6
  313. package/dist/icons/user-heart-rounded.d.ts +0 -6
  314. package/dist/icons/user-icon.d.ts +0 -6
  315. package/dist/icons/user-unfollow.d.ts +0 -6
  316. package/dist/icons/users-dual-tone-icon.d.ts +0 -6
  317. package/dist/icons/users-group-icon.d.ts +0 -6
  318. package/dist/icons/users-group-rounded-icon.d.ts +0 -6
  319. package/dist/icons/users-group-two-rounded-icon.d.ts +0 -6
  320. package/dist/icons/verified-icon.d.ts +0 -6
  321. package/dist/icons/video-on-message-icon.d.ts +0 -6
  322. package/dist/icons/view-grid-row-icon.d.ts +0 -6
  323. package/dist/icons/view-grid1-icon.d.ts +0 -6
  324. package/dist/icons/view-grid2-icon.d.ts +0 -6
  325. package/dist/icons/view-grid3-icon.d.ts +0 -6
  326. package/dist/icons/view-grid4-icon.d.ts +0 -6
  327. package/dist/icons/volume-icon.d.ts +0 -6
  328. package/dist/icons/volume-off-icon.d.ts +0 -6
  329. package/dist/icons/widget-four-icon.d.ts +0 -6
  330. package/dist/icons/widget-icon.d.ts +0 -6
  331. package/dist/icons/working-at-summary-profile-icon.d.ts +0 -6
  332. package/dist/icons/workplace-on-job-preferences-icon.d.ts +0 -6
  333. package/dist/icons/workplace-open-to-offers-icon.d.ts +0 -6
  334. package/dist/icons/x-square-icon.d.ts +0 -6
  335. package/dist/icons/your-summary-profile-icon.d.ts +0 -6
  336. package/dist/primitives/accordion.d.ts +0 -33
  337. package/dist/primitives/alert-dialog.d.ts +0 -34
  338. package/dist/primitives/avatar.d.ts +0 -11
  339. package/dist/primitives/checkbox.d.ts +0 -16
  340. package/dist/primitives/collapsible.d.ts +0 -22
  341. package/dist/primitives/combobox.d.ts +0 -79
  342. package/dist/primitives/dialog.d.ts +0 -34
  343. package/dist/primitives/index.d.ts +0 -47
  344. package/dist/primitives/menu.d.ts +0 -61
  345. package/dist/primitives/popover.d.ts +0 -31
  346. package/dist/primitives/sheet.d.ts +0 -33
  347. package/dist/primitives/slider.d.ts +0 -18
  348. package/dist/primitives/slot.d.ts +0 -19
  349. package/dist/primitives/tabs.d.ts +0 -35
  350. package/dist/primitives/toast.d.ts +0 -27
  351. package/dist/primitives/tooltip.d.ts +0 -32
  352. package/dist/types-BLgXHroz.d.ts +0 -6
  353. package/dist/ui/accordion.d.ts +0 -20
  354. package/dist/ui/alert-dialog.d.ts +0 -39
  355. package/dist/ui/alert.d.ts +0 -19
  356. package/dist/ui/alerter.d.ts +0 -43
  357. package/dist/ui/avatar.d.ts +0 -17
  358. package/dist/ui/badge.d.ts +0 -30
  359. package/dist/ui/button.d.ts +0 -16
  360. package/dist/ui/calendar.d.ts +0 -40
  361. package/dist/ui/carousel.d.ts +0 -35
  362. package/dist/ui/checkbox.d.ts +0 -16
  363. package/dist/ui/collapsible.d.ts +0 -15
  364. package/dist/ui/combobox.d.ts +0 -105
  365. package/dist/ui/date-multiple-picker.d.ts +0 -26
  366. package/dist/ui/date-picker.d.ts +0 -23
  367. package/dist/ui/date-range-picker.d.ts +0 -23
  368. package/dist/ui/dialog.d.ts +0 -40
  369. package/dist/ui/index.d.ts +0 -112
  370. package/dist/ui/infinite-scroll.d.ts +0 -15
  371. package/dist/ui/input.d.ts +0 -17
  372. package/dist/ui/label.d.ts +0 -13
  373. package/dist/ui/menu.d.ts +0 -50
  374. package/dist/ui/pagination.d.ts +0 -15
  375. package/dist/ui/popover.d.ts +0 -26
  376. package/dist/ui/sheet.d.ts +0 -31
  377. package/dist/ui/slider.d.ts +0 -14
  378. package/dist/ui/table.d.ts +0 -27
  379. package/dist/ui/tabs.d.ts +0 -26
  380. package/dist/ui/textarea.d.ts +0 -10
  381. package/dist/ui/toast.d.ts +0 -39
  382. package/dist/ui/tooltip.d.ts +0 -17
@@ -0,0 +1,2 @@
1
+ import {a,b,c as c$1,d,e,g,f as f$1}from'./chunk-6OC5NZB6.js';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs}from'react/jsx-runtime';function m({className:t,variant:a$1="default",...i}){return jsx(a,{className:cn("group/tabs flex flex-col gap-2",t),"data-variant":a$1,...i})}function c({className:t,highlightClassName:a,...i}){return jsx(b,{className:cn("absolute z-0","group-data-[variant=default]/tabs:inset-0 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:bg-bg-primary-solid","group-data-[variant=underline]/tabs:bottom-0 group-data-[variant=underline]/tabs:h-0.5 group-data-[variant=underline]/tabs:w-full group-data-[variant=underline]/tabs:rounded-none group-data-[variant=underline]/tabs:bg-fg-brand-secondary","group-data-[variant=attract]/tabs:bottom-0 group-data-[variant=attract]/tabs:h-[3px] group-data-[variant=attract]/tabs:w-full group-data-[variant=attract]/tabs:rounded-t-full group-data-[variant=attract]/tabs:bg-gradient-to-r group-data-[variant=attract]/tabs:from-[var(--color-brand-light-500)] group-data-[variant=attract]/tabs:to-[var(--color-brand-light-700)]","group-data-[variant=topbar]/tabs:bottom-0 group-data-[variant=topbar]/tabs:h-[3px] group-data-[variant=topbar]/tabs:w-full group-data-[variant=topbar]/tabs:rounded-t-full group-data-[variant=topbar]/tabs:bg-[linear-gradient(90deg,#2F7EF0_0%,#FA0805_100%)]","group-data-[variant=segment]/tabs:inset-0 group-data-[variant=segment]/tabs:rounded-lg group-data-[variant=segment]/tabs:bg-bg-brand-primary group-data-[variant=segment]/tabs:data-[value=declined]:bg-bg-error-primary group-data-[variant=segment]/tabs:data-[value=rejected]:bg-bg-error-primary","group-data-[variant=solid]/tabs:inset-0 group-data-[variant=solid]/tabs:rounded-lg group-data-[variant=solid]/tabs:bg-gradient-buttons-gradient-blue group-data-[variant=solid]/tabs:shadow-xp-md","group-data-[variant=filter]/tabs:inset-0 group-data-[variant=filter]/tabs:rounded-xp-card-base group-data-[variant=filter]/tabs:border group-data-[variant=filter]/tabs:border-border-brand group-data-[variant=filter]/tabs:bg-bg-brand-primary",a),children:jsx(c$1,{className:cn("inline-flex w-fit items-center justify-center","group-data-[variant=default]/tabs:bg-bg-tertiary group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:p-0.5 group-data-[variant=default]/tabs:gap-1 group-data-[variant=default]/tabs:border group-data-[variant=default]/tabs:border-border-primary","group-data-[variant=underline]/tabs:gap-7","group-data-[variant=attract]/tabs:w-full group-data-[variant=attract]/tabs:justify-start group-data-[variant=attract]/tabs:gap-6 group-data-[variant=attract]/tabs:border-b group-data-[variant=attract]/tabs:border-border-secondary group-data-[variant=attract]/tabs:px-6","group-data-[variant=topbar]/tabs:w-full group-data-[variant=topbar]/tabs:justify-start group-data-[variant=topbar]/tabs:gap-6 group-data-[variant=topbar]/tabs:border-b group-data-[variant=topbar]/tabs:border-border-secondary group-data-[variant=topbar]/tabs:px-6","group-data-[variant=segment]/tabs:bg-bg-primary group-data-[variant=segment]/tabs:rounded-[10px] group-data-[variant=segment]/tabs:p-0.5 group-data-[variant=segment]/tabs:gap-1 group-data-[variant=segment]/tabs:border group-data-[variant=segment]/tabs:border-border-primary group-data-[variant=segment]/tabs:shadow-xp-xs","group-data-[variant=solid]/tabs:bg-bg-primary group-data-[variant=solid]/tabs:rounded-[10px] group-data-[variant=solid]/tabs:p-0.5 group-data-[variant=solid]/tabs:gap-0.5 group-data-[variant=solid]/tabs:border group-data-[variant=solid]/tabs:border-border-primary","group-data-[variant=filter]/tabs:gap-2",t),...i})})}function f({className:t,count:a,children:i,...s}){return jsx(d,{value:s.value,className:"flex-1 group-data-[variant=attract]/tabs:flex-none group-data-[variant=topbar]/tabs:flex-none group-data-[variant=segment]/tabs:flex-none group-data-[variant=solid]/tabs:flex-none group-data-[variant=filter]/tabs:flex-none",children:jsxs(e,{className:cn("group/tabs-trigger data-[active=true]:text-text-brand-tertiary focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-text-primary inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md w-full text-label-semibold-2 whitespace-nowrap transition-colors duration-300 ease-in-out focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=default]/tabs:px-3 group-data-[variant=default]/tabs:py-2 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:text-text-quaternary hover:group-data-[variant=default]/tabs:text-text-secondary group-data-[variant=default]/tabs:data-[active=true]:text-text-white","group-data-[variant=underline]/tabs:h-8.5 group-data-[variant=underline]/tabs:px-3 hover:group-data-[variant=underline]/tabs:text-text-brand-secondary","group-data-[variant=attract]/tabs:h-9 group-data-[variant=attract]/tabs:px-0 group-data-[variant=attract]/tabs:gap-2 group-data-[variant=attract]/tabs:rounded-none group-data-[variant=attract]/tabs:text-label-medium-3 group-data-[variant=attract]/tabs:text-text-quaternary hover:group-data-[variant=attract]/tabs:text-text-secondary group-data-[variant=attract]/tabs:data-[active=true]:text-text-brand-tertiary group-data-[variant=attract]/tabs:data-[active=true]:text-label-semibold-3","group-data-[variant=topbar]/tabs:h-9 group-data-[variant=topbar]/tabs:px-0 group-data-[variant=topbar]/tabs:gap-2 group-data-[variant=topbar]/tabs:rounded-none group-data-[variant=topbar]/tabs:text-body-regular-3 group-data-[variant=topbar]/tabs:text-text-quaternary hover:group-data-[variant=topbar]/tabs:text-text-secondary group-data-[variant=topbar]/tabs:data-[active=true]:text-text-primary group-data-[variant=topbar]/tabs:data-[active=true]:text-label-semibold-3","group-data-[variant=segment]/tabs:h-9 group-data-[variant=segment]/tabs:px-3 group-data-[variant=segment]/tabs:py-2 group-data-[variant=segment]/tabs:gap-1 group-data-[variant=segment]/tabs:rounded-lg group-data-[variant=segment]/tabs:text-label-semibold-3 group-data-[variant=segment]/tabs:text-text-quaternary hover:group-data-[variant=segment]/tabs:text-text-secondary group-data-[variant=segment]/tabs:data-[active=true]:text-text-brand-secondary-alt group-data-[variant=segment]/tabs:data-[active=true]:data-[value=declined]:text-text-error-primary group-data-[variant=segment]/tabs:data-[active=true]:data-[value=rejected]:text-text-error-primary","group-data-[variant=solid]/tabs:h-8 group-data-[variant=solid]/tabs:px-2.5 group-data-[variant=solid]/tabs:rounded-xp-buttons group-data-[variant=solid]/tabs:text-label-semibold-3 group-data-[variant=solid]/tabs:text-text-tertiary hover:group-data-[variant=solid]/tabs:text-text-secondary group-data-[variant=solid]/tabs:data-[active=true]:text-text-primary-on-brand","group-data-[variant=filter]/tabs:h-8 group-data-[variant=filter]/tabs:px-3 group-data-[variant=filter]/tabs:gap-2 group-data-[variant=filter]/tabs:rounded-xp-card-base group-data-[variant=filter]/tabs:border group-data-[variant=filter]/tabs:border-border-primary group-data-[variant=filter]/tabs:bg-transparent group-data-[variant=filter]/tabs:text-body-medium-3 group-data-[variant=filter]/tabs:text-text-secondary group-data-[variant=filter]/tabs:shadow-xp-xs hover:group-data-[variant=filter]/tabs:bg-bg-primary-hover group-data-[variant=filter]/tabs:data-[active=true]:border-transparent group-data-[variant=filter]/tabs:data-[active=true]:text-text-brand-secondary hover:group-data-[variant=filter]/tabs:data-[active=true]:bg-transparent group-data-[variant=filter]/tabs:[&_svg]:size-3.5 group-data-[variant=filter]/tabs:[&_svg]:text-fg-tertiary group-data-[variant=filter]/tabs:data-[active=true]:[&_svg]:text-fg-brand-primary",t),...s,children:[i,a!==void 0&&a!==0&&a!=="0"&&jsx("span",{className:cn("inline-flex items-center justify-center rounded-xp-card-base-xs px-0.5 py-px min-w-4 text-label-medium-4 transition-colors duration-300","group-data-[variant=default]/tabs:bg-bg-quaternary group-data-[variant=default]/tabs:text-text-quaternary group-data-[variant=default]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-secondary-solid group-data-[variant=default]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=underline]/tabs:bg-bg-quaternary group-data-[variant=underline]/tabs:text-text-quaternary group-data-[variant=underline]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=underline]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=attract]/tabs:bg-bg-quaternary group-data-[variant=attract]/tabs:text-text-quaternary group-data-[variant=attract]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=attract]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=topbar]/tabs:bg-bg-quaternary group-data-[variant=topbar]/tabs:text-text-quaternary group-data-[variant=topbar]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=topbar]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=segment]/tabs:bg-bg-quaternary group-data-[variant=segment]/tabs:text-text-quaternary group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:text-text-white group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:group-data-[value=declined]/tabs-trigger:bg-bg-error-solid group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:group-data-[value=rejected]/tabs-trigger:bg-bg-error-solid","group-data-[variant=solid]/tabs:bg-bg-quaternary group-data-[variant=solid]/tabs:text-text-quaternary group-data-[variant=solid]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-secondary-solid group-data-[variant=solid]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=filter]/tabs:bg-bg-brand-solid group-data-[variant=filter]/tabs:text-text-primary-on-brand"),children:a})]})})}function y(t){return jsx(g,{...t})}function P({className:t,...a}){return jsx(f$1,{className:cn("flex-1 outline-none",t),...a})}export{m as a,c as b,f as c,y as d,P as e};//# sourceMappingURL=chunk-7EXEQDMX.js.map
2
+ //# sourceMappingURL=chunk-7EXEQDMX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/tabs.tsx"],"names":["Tabs","className","variant","props","jsx","cn","TabsList","highlightClassName","TabsHighlight","TabsTab","count","children","TabsHighlightItem","jsxs","TabsPanels","TabsPanel"],"mappings":"wIAoBA,SAASA,EAAK,CAAE,SAAA,CAAAC,EAAW,OAAA,CAAAC,GAAAA,CAAU,UAAW,GAAGC,CAAM,EAAc,CACrE,OACEC,GAAAA,CAACJ,CAAAA,CAAA,CACC,SAAA,CAAWK,EAAAA,CAAG,iCAAkCJ,CAAS,CAAA,CACzD,eAAcC,GAAAA,CACb,GAAGC,EACN,CAEJ,CAMA,SAASG,CAAAA,CAAS,CAAE,UAAAL,CAAAA,CAAW,kBAAA,CAAAM,EAAoB,GAAGJ,CAAM,CAAA,CAAkB,CAC5E,OACEC,GAAAA,CAACI,CAAAA,CAAA,CACC,SAAA,CAAWH,EAAAA,CACT,eACA,8IAAA,CACA,8OAAA,CACA,8WACA,iQAAA,CACA,sSAAA,CACA,oMACA,kPAAA,CACAE,CACF,EAEA,QAAA,CAAAH,GAAAA,CAACE,IAAA,CACC,SAAA,CAAWD,GACT,+CAAA,CACA,gRAAA,CACA,4CACA,8QAAA,CACA,wQAAA,CACA,mUACA,yQAAA,CACA,wCAAA,CACAJ,CACF,CAAA,CACC,GAAGE,EACN,CAAA,CACF,CAEJ,CAMA,SAASM,CAAAA,CAAQ,CAAE,SAAA,CAAAR,CAAAA,CAAW,MAAAS,CAAAA,CAAO,QAAA,CAAAC,CAAAA,CAAU,GAAGR,CAAM,CAAA,CAAiB,CACvE,OACEC,GAAAA,CAACQ,CAAAA,CAAA,CAA2B,KAAA,CAAOT,CAAAA,CAAM,MAAO,SAAA,CAAU,gOAAA,CACxD,SAAAU,IAAAA,CAACJ,CAAAA,CAAA,CACC,SAAA,CAAWJ,EAAAA,CACT,sgBAEA,oTAAA,CAEA,wJAAA,CAEA,ueAAA,CAEA,udAAA,CAEA,+oBAEA,gXAAA,CAEA,s6BAAA,CACAJ,CACF,CAAA,CACC,GAAGE,EAEH,QAAA,CAAA,CAAAQ,CAAAA,CACAD,IAAU,MAAA,EAAaA,CAAAA,GAAU,GAAKA,CAAAA,GAAU,GAAA,EAC/CN,IAAC,MAAA,CAAA,CACC,SAAA,CAAWC,GACT,yIAAA,CAEA,4SAAA,CAEA,gTAAA,CAEA,wSAAA,CAEA,qSAEA,miBAAA,CAEA,oSAAA,CAEA,gHACF,CAAA,CAEC,QAAA,CAAAK,EACH,CAAA,CAAA,CAEJ,CAAA,CACF,CAEJ,CAIA,SAASI,EAAWX,CAAAA,CAAwB,CAC1C,OAAOC,GAAAA,CAACU,CAAAA,CAAA,CAAqB,GAAGX,CAAAA,CAAO,CACzC,CAIA,SAASY,EAAU,CAAE,SAAA,CAAAd,EAAW,GAAGE,CAAM,EAAmB,CAC1D,OACEC,IAACW,GAAAA,CAAA,CACC,UAAWV,EAAAA,CAAG,qBAAA,CAAuBJ,CAAS,CAAA,CAC7C,GAAGE,EACN,CAEJ","file":"chunk-7EXEQDMX.js","sourcesContent":["import {\r\n Tabs as TabsPrimitive,\r\n TabsList as TabsListPrimitive,\r\n TabsTab as TabsTabPrimitive,\r\n TabsPanel as TabsPanelPrimitive,\r\n TabsPanels as TabsPanelsPrimitive,\r\n TabsHighlight as TabsHighlightPrimitive,\r\n TabsHighlightItem as TabsHighlightItemPrimitive,\r\n type TabsProps as TabsPrimitiveProps,\r\n type TabsListProps as TabsListPrimitiveProps,\r\n type TabsTabProps as TabsTabPrimitiveProps,\r\n type TabsPanelProps as TabsPanelPrimitiveProps,\r\n type TabsPanelsProps as TabsPanelsPrimitiveProps,\r\n} from '../primitives/tabs';\r\nimport { cn } from '@xploreu/lib/cn';\r\n\r\ntype TabsProps = TabsPrimitiveProps & {\r\n variant?: \"default\" | \"underline\" | \"attract\" | \"topbar\" | \"segment\" | \"solid\" | \"filter\";\r\n};\r\n\r\nfunction Tabs({ className, variant = \"default\", ...props }: TabsProps) {\r\n return (\r\n <TabsPrimitive\r\n className={cn('group/tabs flex flex-col gap-2', className)}\r\n data-variant={variant}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype TabsListProps = TabsListPrimitiveProps & {\r\n highlightClassName?: string;\r\n};\r\n\r\nfunction TabsList({ className, highlightClassName, ...props }: TabsListProps) {\r\n return (\r\n <TabsHighlightPrimitive\r\n className={cn(\r\n \"absolute z-0\",\r\n \"group-data-[variant=default]/tabs:inset-0 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:bg-bg-primary-solid\",\r\n \"group-data-[variant=underline]/tabs:bottom-0 group-data-[variant=underline]/tabs:h-0.5 group-data-[variant=underline]/tabs:w-full group-data-[variant=underline]/tabs:rounded-none group-data-[variant=underline]/tabs:bg-fg-brand-secondary\",\r\n \"group-data-[variant=attract]/tabs:bottom-0 group-data-[variant=attract]/tabs:h-[3px] group-data-[variant=attract]/tabs:w-full group-data-[variant=attract]/tabs:rounded-t-full group-data-[variant=attract]/tabs:bg-gradient-to-r group-data-[variant=attract]/tabs:from-[var(--color-brand-light-500)] group-data-[variant=attract]/tabs:to-[var(--color-brand-light-700)]\",\r\n \"group-data-[variant=topbar]/tabs:bottom-0 group-data-[variant=topbar]/tabs:h-[3px] group-data-[variant=topbar]/tabs:w-full group-data-[variant=topbar]/tabs:rounded-t-full group-data-[variant=topbar]/tabs:bg-[linear-gradient(90deg,#2F7EF0_0%,#FA0805_100%)]\",\r\n \"group-data-[variant=segment]/tabs:inset-0 group-data-[variant=segment]/tabs:rounded-lg group-data-[variant=segment]/tabs:bg-bg-brand-primary group-data-[variant=segment]/tabs:data-[value=declined]:bg-bg-error-primary group-data-[variant=segment]/tabs:data-[value=rejected]:bg-bg-error-primary\",\r\n \"group-data-[variant=solid]/tabs:inset-0 group-data-[variant=solid]/tabs:rounded-lg group-data-[variant=solid]/tabs:bg-gradient-buttons-gradient-blue group-data-[variant=solid]/tabs:shadow-xp-md\",\r\n \"group-data-[variant=filter]/tabs:inset-0 group-data-[variant=filter]/tabs:rounded-xp-card-base group-data-[variant=filter]/tabs:border group-data-[variant=filter]/tabs:border-border-brand group-data-[variant=filter]/tabs:bg-bg-brand-primary\",\r\n highlightClassName\r\n )}\r\n >\r\n <TabsListPrimitive\r\n className={cn(\r\n \"inline-flex w-fit items-center justify-center\",\r\n \"group-data-[variant=default]/tabs:bg-bg-tertiary group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:p-0.5 group-data-[variant=default]/tabs:gap-1 group-data-[variant=default]/tabs:border group-data-[variant=default]/tabs:border-border-primary\",\r\n \"group-data-[variant=underline]/tabs:gap-7\",\r\n \"group-data-[variant=attract]/tabs:w-full group-data-[variant=attract]/tabs:justify-start group-data-[variant=attract]/tabs:gap-6 group-data-[variant=attract]/tabs:border-b group-data-[variant=attract]/tabs:border-border-secondary group-data-[variant=attract]/tabs:px-6\",\r\n \"group-data-[variant=topbar]/tabs:w-full group-data-[variant=topbar]/tabs:justify-start group-data-[variant=topbar]/tabs:gap-6 group-data-[variant=topbar]/tabs:border-b group-data-[variant=topbar]/tabs:border-border-secondary group-data-[variant=topbar]/tabs:px-6\",\r\n \"group-data-[variant=segment]/tabs:bg-bg-primary group-data-[variant=segment]/tabs:rounded-[10px] group-data-[variant=segment]/tabs:p-0.5 group-data-[variant=segment]/tabs:gap-1 group-data-[variant=segment]/tabs:border group-data-[variant=segment]/tabs:border-border-primary group-data-[variant=segment]/tabs:shadow-xp-xs\",\r\n \"group-data-[variant=solid]/tabs:bg-bg-primary group-data-[variant=solid]/tabs:rounded-[10px] group-data-[variant=solid]/tabs:p-0.5 group-data-[variant=solid]/tabs:gap-0.5 group-data-[variant=solid]/tabs:border group-data-[variant=solid]/tabs:border-border-primary\",\r\n \"group-data-[variant=filter]/tabs:gap-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </TabsHighlightPrimitive>\r\n );\r\n}\r\n\r\ntype TabsTabProps = TabsTabPrimitiveProps & {\r\n count?: number | string;\r\n};\r\n\r\nfunction TabsTab({ className, count, children, ...props }: TabsTabProps) {\r\n return (\r\n <TabsHighlightItemPrimitive value={props.value} className=\"flex-1 group-data-[variant=attract]/tabs:flex-none group-data-[variant=topbar]/tabs:flex-none group-data-[variant=segment]/tabs:flex-none group-data-[variant=solid]/tabs:flex-none group-data-[variant=filter]/tabs:flex-none\">\r\n <TabsTabPrimitive\r\n className={cn(\r\n \"group/tabs-trigger data-[active=true]:text-text-brand-tertiary focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-text-primary inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md w-full text-label-semibold-2 whitespace-nowrap transition-colors duration-300 ease-in-out focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\r\n // default variant\r\n \"group-data-[variant=default]/tabs:px-3 group-data-[variant=default]/tabs:py-2 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:text-text-quaternary hover:group-data-[variant=default]/tabs:text-text-secondary group-data-[variant=default]/tabs:data-[active=true]:text-text-white\",\r\n // underline variant\r\n \"group-data-[variant=underline]/tabs:h-8.5 group-data-[variant=underline]/tabs:px-3 hover:group-data-[variant=underline]/tabs:text-text-brand-secondary\",\r\n // attract variant\r\n \"group-data-[variant=attract]/tabs:h-9 group-data-[variant=attract]/tabs:px-0 group-data-[variant=attract]/tabs:gap-2 group-data-[variant=attract]/tabs:rounded-none group-data-[variant=attract]/tabs:text-label-medium-3 group-data-[variant=attract]/tabs:text-text-quaternary hover:group-data-[variant=attract]/tabs:text-text-secondary group-data-[variant=attract]/tabs:data-[active=true]:text-text-brand-tertiary group-data-[variant=attract]/tabs:data-[active=true]:text-label-semibold-3\",\r\n // topbar variant\r\n \"group-data-[variant=topbar]/tabs:h-9 group-data-[variant=topbar]/tabs:px-0 group-data-[variant=topbar]/tabs:gap-2 group-data-[variant=topbar]/tabs:rounded-none group-data-[variant=topbar]/tabs:text-body-regular-3 group-data-[variant=topbar]/tabs:text-text-quaternary hover:group-data-[variant=topbar]/tabs:text-text-secondary group-data-[variant=topbar]/tabs:data-[active=true]:text-text-primary group-data-[variant=topbar]/tabs:data-[active=true]:text-label-semibold-3\",\r\n // segment variant\r\n \"group-data-[variant=segment]/tabs:h-9 group-data-[variant=segment]/tabs:px-3 group-data-[variant=segment]/tabs:py-2 group-data-[variant=segment]/tabs:gap-1 group-data-[variant=segment]/tabs:rounded-lg group-data-[variant=segment]/tabs:text-label-semibold-3 group-data-[variant=segment]/tabs:text-text-quaternary hover:group-data-[variant=segment]/tabs:text-text-secondary group-data-[variant=segment]/tabs:data-[active=true]:text-text-brand-secondary-alt group-data-[variant=segment]/tabs:data-[active=true]:data-[value=declined]:text-text-error-primary group-data-[variant=segment]/tabs:data-[active=true]:data-[value=rejected]:text-text-error-primary\",\r\n // solid variant\r\n \"group-data-[variant=solid]/tabs:h-8 group-data-[variant=solid]/tabs:px-2.5 group-data-[variant=solid]/tabs:rounded-xp-buttons group-data-[variant=solid]/tabs:text-label-semibold-3 group-data-[variant=solid]/tabs:text-text-tertiary hover:group-data-[variant=solid]/tabs:text-text-secondary group-data-[variant=solid]/tabs:data-[active=true]:text-text-primary-on-brand\",\r\n // filter variant\r\n \"group-data-[variant=filter]/tabs:h-8 group-data-[variant=filter]/tabs:px-3 group-data-[variant=filter]/tabs:gap-2 group-data-[variant=filter]/tabs:rounded-xp-card-base group-data-[variant=filter]/tabs:border group-data-[variant=filter]/tabs:border-border-primary group-data-[variant=filter]/tabs:bg-transparent group-data-[variant=filter]/tabs:text-body-medium-3 group-data-[variant=filter]/tabs:text-text-secondary group-data-[variant=filter]/tabs:shadow-xp-xs hover:group-data-[variant=filter]/tabs:bg-bg-primary-hover group-data-[variant=filter]/tabs:data-[active=true]:border-transparent group-data-[variant=filter]/tabs:data-[active=true]:text-text-brand-secondary hover:group-data-[variant=filter]/tabs:data-[active=true]:bg-transparent group-data-[variant=filter]/tabs:[&_svg]:size-3.5 group-data-[variant=filter]/tabs:[&_svg]:text-fg-tertiary group-data-[variant=filter]/tabs:data-[active=true]:[&_svg]:text-fg-brand-primary\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n {count !== undefined && count !== 0 && count !== \"0\" && (\r\n <span\r\n className={cn(\r\n \"inline-flex items-center justify-center rounded-xp-card-base-xs px-0.5 py-px min-w-4 text-label-medium-4 transition-colors duration-300\",\r\n // default variant\r\n \"group-data-[variant=default]/tabs:bg-bg-quaternary group-data-[variant=default]/tabs:text-text-quaternary group-data-[variant=default]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-secondary-solid group-data-[variant=default]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // underline & other variants\r\n \"group-data-[variant=underline]/tabs:bg-bg-quaternary group-data-[variant=underline]/tabs:text-text-quaternary group-data-[variant=underline]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=underline]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // attract variant\r\n \"group-data-[variant=attract]/tabs:bg-bg-quaternary group-data-[variant=attract]/tabs:text-text-quaternary group-data-[variant=attract]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=attract]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // topbar variant\r\n \"group-data-[variant=topbar]/tabs:bg-bg-quaternary group-data-[variant=topbar]/tabs:text-text-quaternary group-data-[variant=topbar]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=topbar]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // segment variant\r\n \"group-data-[variant=segment]/tabs:bg-bg-quaternary group-data-[variant=segment]/tabs:text-text-quaternary group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:text-text-white group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:group-data-[value=declined]/tabs-trigger:bg-bg-error-solid group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:group-data-[value=rejected]/tabs-trigger:bg-bg-error-solid\",\r\n // solid variant\r\n \"group-data-[variant=solid]/tabs:bg-bg-quaternary group-data-[variant=solid]/tabs:text-text-quaternary group-data-[variant=solid]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-secondary-solid group-data-[variant=solid]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // filter variant\r\n \"group-data-[variant=filter]/tabs:bg-bg-brand-solid group-data-[variant=filter]/tabs:text-text-primary-on-brand\",\r\n )}\r\n >\r\n {count}\r\n </span>\r\n )}\r\n </TabsTabPrimitive>\r\n </TabsHighlightItemPrimitive>\r\n );\r\n}\r\n\r\ntype TabsPanelsProps = TabsPanelsPrimitiveProps;\r\n\r\nfunction TabsPanels(props: TabsPanelsProps) {\r\n return <TabsPanelsPrimitive {...props} />;\r\n}\r\n\r\ntype TabsPanelProps = TabsPanelPrimitiveProps;\r\n\r\nfunction TabsPanel({ className, ...props }: TabsPanelProps) {\r\n return (\r\n <TabsPanelPrimitive\r\n className={cn('flex-1 outline-none', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport {\r\n Tabs,\r\n TabsList,\r\n TabsTab,\r\n TabsPanels,\r\n TabsPanel,\r\n type TabsProps,\r\n type TabsListProps,\r\n type TabsTabProps,\r\n type TabsPanelsProps,\r\n type TabsPanelProps,\r\n};"]}
@@ -1,2 +1,2 @@
1
- import {b}from'./chunk-UINS73U7.js';import*as o from'react';import w from'embla-carousel-react';import {ArrowLeft,ArrowRight}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var R=o.createContext(null);function m(){let r=o.useContext(R);if(!r)throw new Error("useCarousel must be used within a <Carousel />");return r}function T({orientation:r="horizontal",opts:a,setApi:t,plugins:l,className:i,children:n,...v}){let[C,e]=w({...a,axis:r==="horizontal"?"x":"y"},l),[c,p]=o.useState(false),[S,h]=o.useState(false),f=o.useCallback(u=>{u&&(p(u.canScrollPrev()),h(u.canScrollNext()));},[]),y=o.useCallback(()=>{e?.scrollPrev();},[e]),P=o.useCallback(()=>{e?.scrollNext();},[e]),g=o.useCallback(u=>{u.key==="ArrowLeft"?(u.preventDefault(),y()):u.key==="ArrowRight"&&(u.preventDefault(),P());},[y,P]);return o.useEffect(()=>{!e||!t||t(e);},[e,t]),o.useEffect(()=>{if(e)return f(e),e.on("reInit",f),e.on("select",f),()=>{e?.off("select",f);}},[e,f]),jsx(R.Provider,{value:{carouselRef:C,api:e,opts:a,orientation:r||(a?.axis==="y"?"vertical":"horizontal"),scrollPrev:y,scrollNext:P,canScrollPrev:c,canScrollNext:S},children:jsx("div",{"aria-roledescription":"carousel",className:cn("relative",i),"data-slot":"carousel",role:"region",onKeyDownCapture:g,...v,children:n})})}function B({className:r,...a}){let{carouselRef:t}=m();return jsx("div",{ref:t,className:"overflow-hidden","data-slot":"carousel-content",children:jsx("div",{className:cn("flex",r),...a})})}function U({className:r,...a}){return jsx("div",{"aria-roledescription":"slide",className:cn("min-w-0 shrink-0 grow-0 basis-full",r),"data-slot":"carousel-item",role:"group",...a})}function L({className:r,children:a,...t}){let{orientation:l,scrollPrev:i,canScrollPrev:n}=m();return jsx(b,{"aria-label":"Previous slide",className:cn("absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4","transition-all duration-200 hover:scale-105","disabled:cursor-not-allowed disabled:hover:scale-100",l==="horizontal"?"top-1/2 left-6 -translate-y-1/2":"top-6 left-1/2 -translate-x-1/2 rotate-90",r),"data-slot":"carousel-previous",disabled:!n,icon:true,onClick:i,size:"md",variant:"secondary",...t,children:a||jsxs(Fragment,{children:[jsx(ArrowLeft,{}),jsx("span",{className:"sr-only",children:"Previous slide"})]})})}function K({className:r,children:a,...t}){let{orientation:l,scrollNext:i,canScrollNext:n}=m();return jsx(b,{"aria-label":"Next slide",className:cn("absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4","transition-all duration-200 hover:scale-105","disabled:cursor-not-allowed disabled:hover:scale-100",l==="horizontal"?"top-1/2 right-6 -translate-y-1/2":"bottom-6 left-1/2 -translate-x-1/2 rotate-90",r),"data-slot":"carousel-next",disabled:!n,icon:true,onClick:i,size:"md",variant:"secondary",...t,children:a||jsxs(Fragment,{children:[jsx(ArrowRight,{}),jsx("span",{className:"sr-only",children:"Next slide"})]})})}function _({className:r,...a}){let{api:t}=m(),[l,i]=o.useState(0),[n,v]=o.useState([]),C=o.useCallback(c=>{c&&v(c.scrollSnapList());},[]),e=o.useCallback(c=>{c&&i(c.selectedScrollSnap());},[]);return o.useEffect(()=>{if(t)return C(t),e(t),t.on("reInit",C),t.on("reInit",e),t.on("select",e),()=>{t?.off("select",e);}},[t,C,e]),n.length<=1?null:jsx("div",{className:cn("flex items-center justify-center gap-1.5",r),...a,children:n.map((c,p)=>jsx("button",{"aria-label":`Go to slide ${p+1}`,className:cn("h-1 rounded-full transition-all duration-300",p===l?"w-4 bg-fg-primary":"w-2 bg-fg-tertiary hover:bg-fg-secondary"),"data-selected":p===l,"data-slot":"carousel-dot",onClick:()=>t?.scrollTo(p)},p))})}export{T as a,B as b,U as c,L as d,K as e,_ as f};//# sourceMappingURL=chunk-KUOFW7JO.js.map
2
- //# sourceMappingURL=chunk-KUOFW7JO.js.map
1
+ import {b}from'./chunk-DQGZIFNP.js';import*as o from'react';import w from'embla-carousel-react';import {ArrowLeft,ArrowRight}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var R=o.createContext(null);function m(){let r=o.useContext(R);if(!r)throw new Error("useCarousel must be used within a <Carousel />");return r}function T({orientation:r="horizontal",opts:a,setApi:t,plugins:l,className:i,children:n,...v}){let[C,e]=w({...a,axis:r==="horizontal"?"x":"y"},l),[c,p]=o.useState(false),[S,h]=o.useState(false),f=o.useCallback(u=>{u&&(p(u.canScrollPrev()),h(u.canScrollNext()));},[]),y=o.useCallback(()=>{e?.scrollPrev();},[e]),P=o.useCallback(()=>{e?.scrollNext();},[e]),g=o.useCallback(u=>{u.key==="ArrowLeft"?(u.preventDefault(),y()):u.key==="ArrowRight"&&(u.preventDefault(),P());},[y,P]);return o.useEffect(()=>{!e||!t||t(e);},[e,t]),o.useEffect(()=>{if(e)return f(e),e.on("reInit",f),e.on("select",f),()=>{e?.off("select",f);}},[e,f]),jsx(R.Provider,{value:{carouselRef:C,api:e,opts:a,orientation:r||(a?.axis==="y"?"vertical":"horizontal"),scrollPrev:y,scrollNext:P,canScrollPrev:c,canScrollNext:S},children:jsx("div",{"aria-roledescription":"carousel",className:cn("relative",i),"data-slot":"carousel",role:"region",onKeyDownCapture:g,...v,children:n})})}function B({className:r,...a}){let{carouselRef:t}=m();return jsx("div",{ref:t,className:"overflow-hidden","data-slot":"carousel-content",children:jsx("div",{className:cn("flex",r),...a})})}function U({className:r,...a}){return jsx("div",{"aria-roledescription":"slide",className:cn("min-w-0 shrink-0 grow-0 basis-full",r),"data-slot":"carousel-item",role:"group",...a})}function L({className:r,children:a,...t}){let{orientation:l,scrollPrev:i,canScrollPrev:n}=m();return jsx(b,{"aria-label":"Previous slide",className:cn("absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4","transition-all duration-200 hover:scale-105","disabled:cursor-not-allowed disabled:hover:scale-100",l==="horizontal"?"top-1/2 left-6 -translate-y-1/2":"top-6 left-1/2 -translate-x-1/2 rotate-90",r),"data-slot":"carousel-previous",disabled:!n,icon:true,onClick:i,size:"md",variant:"secondary",...t,children:a||jsxs(Fragment,{children:[jsx(ArrowLeft,{}),jsx("span",{className:"sr-only",children:"Previous slide"})]})})}function K({className:r,children:a,...t}){let{orientation:l,scrollNext:i,canScrollNext:n}=m();return jsx(b,{"aria-label":"Next slide",className:cn("absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4","transition-all duration-200 hover:scale-105","disabled:cursor-not-allowed disabled:hover:scale-100",l==="horizontal"?"top-1/2 right-6 -translate-y-1/2":"bottom-6 left-1/2 -translate-x-1/2 rotate-90",r),"data-slot":"carousel-next",disabled:!n,icon:true,onClick:i,size:"md",variant:"secondary",...t,children:a||jsxs(Fragment,{children:[jsx(ArrowRight,{}),jsx("span",{className:"sr-only",children:"Next slide"})]})})}function _({className:r,...a}){let{api:t}=m(),[l,i]=o.useState(0),[n,v]=o.useState([]),C=o.useCallback(c=>{c&&v(c.scrollSnapList());},[]),e=o.useCallback(c=>{c&&i(c.selectedScrollSnap());},[]);return o.useEffect(()=>{if(t)return C(t),e(t),t.on("reInit",C),t.on("reInit",e),t.on("select",e),()=>{t?.off("select",e);}},[t,C,e]),n.length<=1?null:jsx("div",{className:cn("flex items-center justify-center gap-1.5",r),...a,children:n.map((c,p)=>jsx("button",{"aria-label":`Go to slide ${p+1}`,className:cn("h-1 rounded-full transition-all duration-300",p===l?"w-4 bg-fg-primary":"w-2 bg-fg-tertiary hover:bg-fg-secondary"),"data-selected":p===l,"data-slot":"carousel-dot",onClick:()=>t?.scrollTo(p)},p))})}export{T as a,B as b,U as c,L as d,K as e,_ as f};//# sourceMappingURL=chunk-B5LYJTBB.js.map
2
+ //# sourceMappingURL=chunk-B5LYJTBB.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/carousel.tsx"],"names":["CarouselContext","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","props","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","jsx","cn","CarouselContent","CarouselItem","CarouselPrevious","Button","jsxs","Fragment","ArrowLeft","CarouselNext","ArrowRight","CarouselDots","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","onInit","_","index"],"mappings":"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","file":"chunk-KUOFW7JO.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport useEmblaCarousel, { type UseEmblaCarouselType } from \"embla-carousel-react\"\r\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\r\n\r\nimport { Button } from \"./button\"\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1]\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\r\ntype CarouselOptions = UseCarouselParameters[0]\r\ntype CarouselPlugin = UseCarouselParameters[1]\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions\r\n plugins?: CarouselPlugin\r\n orientation?: \"horizontal\" | \"vertical\"\r\n setApi?: (api: CarouselApi) => void\r\n}\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\r\n api: ReturnType<typeof useEmblaCarousel>[1]\r\n scrollPrev: () => void\r\n scrollNext: () => void\r\n canScrollPrev: boolean\r\n canScrollNext: boolean\r\n} & CarouselProps\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext)\r\n\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\")\r\n }\r\n\r\n return context\r\n}\r\n\r\nfunction Carousel({\r\n orientation = \"horizontal\",\r\n opts,\r\n setApi,\r\n plugins,\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & CarouselProps) {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins\r\n )\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\r\n const [canScrollNext, setCanScrollNext] = React.useState(false)\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setCanScrollPrev(api.canScrollPrev())\r\n setCanScrollNext(api.canScrollNext())\r\n }, [])\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev()\r\n }, [api])\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext()\r\n }, [api])\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault()\r\n scrollPrev()\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault()\r\n scrollNext()\r\n }\r\n },\r\n [scrollPrev, scrollNext]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) return\r\n setApi(api)\r\n }, [api, setApi])\r\n\r\n React.useEffect(() => {\r\n if (!api) return\r\n onSelect(api)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onSelect])\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api,\r\n opts,\r\n orientation:\r\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n }}\r\n >\r\n <div\r\n aria-roledescription=\"carousel\"\r\n className={cn(\"relative\", className)}\r\n data-slot=\"carousel\"\r\n role=\"region\"\r\n onKeyDownCapture={handleKeyDown}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n )\r\n}\r\n\r\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\r\n const { carouselRef } = useCarousel()\r\n\r\n return (\r\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\r\n <div className={cn(\"flex\", className)} {...props} />\r\n </div>\r\n )\r\n}\r\n\r\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n aria-roledescription=\"slide\"\r\n className={cn(\"min-w-0 shrink-0 grow-0 basis-full\", className)}\r\n data-slot=\"carousel-item\"\r\n role=\"group\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype CarouselPreviousProps = React.ComponentProps<typeof Button>\r\n\r\nfunction CarouselPrevious({\r\n className,\r\n children,\r\n ...props\r\n}: CarouselPreviousProps) {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\r\n\r\n return (\r\n <Button\r\n aria-label=\"Previous slide\"\r\n className={cn(\r\n \"absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4\",\r\n \"transition-all duration-200 hover:scale-105\",\r\n \"disabled:cursor-not-allowed disabled:hover:scale-100\",\r\n orientation === \"horizontal\"\r\n ? \"top-1/2 left-6 -translate-y-1/2\"\r\n : \"top-6 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n data-slot=\"carousel-previous\"\r\n disabled={!canScrollPrev}\r\n icon\r\n onClick={scrollPrev}\r\n size=\"md\"\r\n variant=\"secondary\"\r\n {...props}\r\n >\r\n {children || (\r\n <>\r\n <ArrowLeft />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </>\r\n )}\r\n </Button>\r\n )\r\n}\r\n\r\ntype CarouselNextProps = React.ComponentProps<typeof Button>\r\n\r\nfunction CarouselNext({\r\n className,\r\n children,\r\n ...props\r\n}: CarouselNextProps) {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel()\r\n\r\n return (\r\n <Button\r\n aria-label=\"Next slide\"\r\n className={cn(\r\n \"absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4\",\r\n \"transition-all duration-200 hover:scale-105\",\r\n \"disabled:cursor-not-allowed disabled:hover:scale-100\",\r\n orientation === \"horizontal\"\r\n ? \"top-1/2 right-6 -translate-y-1/2\"\r\n : \"bottom-6 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n data-slot=\"carousel-next\"\r\n disabled={!canScrollNext}\r\n icon\r\n onClick={scrollNext}\r\n size=\"md\"\r\n variant=\"secondary\"\r\n {...props}\r\n >\r\n {children || (\r\n <>\r\n <ArrowRight />\r\n <span className=\"sr-only\">Next slide</span>\r\n </>\r\n )}\r\n </Button>\r\n )\r\n}\r\n\r\nfunction CarouselDots({ className, ...props }: React.ComponentProps<\"div\">) {\r\n const { api } = useCarousel()\r\n const [selectedIndex, setSelectedIndex] = React.useState(0)\r\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([])\r\n\r\n const onInit = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setScrollSnaps(api.scrollSnapList())\r\n }, [])\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setSelectedIndex(api.selectedScrollSnap())\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (!api) return\r\n\r\n onInit(api)\r\n onSelect(api)\r\n\r\n api.on(\"reInit\", onInit)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onInit, onSelect])\r\n\r\n if (scrollSnaps.length <= 1) return null\r\n\r\n return (\r\n <div\r\n className={cn(\"flex items-center justify-center gap-1.5\", className)}\r\n {...props}\r\n >\r\n {scrollSnaps.map((_, index) => (\r\n <button\r\n key={index}\r\n aria-label={`Go to slide ${index + 1}`}\r\n className={cn(\r\n \"h-1 rounded-full transition-all duration-300\",\r\n index === selectedIndex\r\n ? \"w-4 bg-fg-primary\"\r\n : \"w-2 bg-fg-tertiary hover:bg-fg-secondary\",\r\n )}\r\n data-selected={index === selectedIndex}\r\n data-slot=\"carousel-dot\"\r\n onClick={() => api?.scrollTo(index)}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nexport {\r\n Carousel,\r\n CarouselContent,\r\n CarouselDots,\r\n CarouselItem,\r\n CarouselNext,\r\n CarouselPrevious,\r\n type CarouselApi,\r\n type CarouselProps,\r\n type CarouselContextProps,\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/ui/carousel.tsx"],"names":["CarouselContext","useCarousel","context","Carousel","orientation","opts","setApi","plugins","className","children","props","carouselRef","api","useEmblaCarousel","canScrollPrev","setCanScrollPrev","canScrollNext","setCanScrollNext","onSelect","scrollPrev","scrollNext","handleKeyDown","event","jsx","cn","CarouselContent","CarouselItem","CarouselPrevious","Button","jsxs","Fragment","ArrowLeft","CarouselNext","ArrowRight","CarouselDots","selectedIndex","setSelectedIndex","scrollSnaps","setScrollSnaps","onInit","_","index"],"mappings":"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","file":"chunk-B5LYJTBB.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport useEmblaCarousel, { type UseEmblaCarouselType } from \"embla-carousel-react\"\r\nimport { ArrowLeft, ArrowRight } from \"lucide-react\"\r\n\r\nimport { Button } from \"./button\"\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\ntype CarouselApi = UseEmblaCarouselType[1]\r\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>\r\ntype CarouselOptions = UseCarouselParameters[0]\r\ntype CarouselPlugin = UseCarouselParameters[1]\r\n\r\ntype CarouselProps = {\r\n opts?: CarouselOptions\r\n plugins?: CarouselPlugin\r\n orientation?: \"horizontal\" | \"vertical\"\r\n setApi?: (api: CarouselApi) => void\r\n}\r\n\r\ntype CarouselContextProps = {\r\n carouselRef: ReturnType<typeof useEmblaCarousel>[0]\r\n api: ReturnType<typeof useEmblaCarousel>[1]\r\n scrollPrev: () => void\r\n scrollNext: () => void\r\n canScrollPrev: boolean\r\n canScrollNext: boolean\r\n} & CarouselProps\r\n\r\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null)\r\n\r\nfunction useCarousel() {\r\n const context = React.useContext(CarouselContext)\r\n\r\n if (!context) {\r\n throw new Error(\"useCarousel must be used within a <Carousel />\")\r\n }\r\n\r\n return context\r\n}\r\n\r\nfunction Carousel({\r\n orientation = \"horizontal\",\r\n opts,\r\n setApi,\r\n plugins,\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & CarouselProps) {\r\n const [carouselRef, api] = useEmblaCarousel(\r\n {\r\n ...opts,\r\n axis: orientation === \"horizontal\" ? \"x\" : \"y\",\r\n },\r\n plugins\r\n )\r\n const [canScrollPrev, setCanScrollPrev] = React.useState(false)\r\n const [canScrollNext, setCanScrollNext] = React.useState(false)\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setCanScrollPrev(api.canScrollPrev())\r\n setCanScrollNext(api.canScrollNext())\r\n }, [])\r\n\r\n const scrollPrev = React.useCallback(() => {\r\n api?.scrollPrev()\r\n }, [api])\r\n\r\n const scrollNext = React.useCallback(() => {\r\n api?.scrollNext()\r\n }, [api])\r\n\r\n const handleKeyDown = React.useCallback(\r\n (event: React.KeyboardEvent<HTMLDivElement>) => {\r\n if (event.key === \"ArrowLeft\") {\r\n event.preventDefault()\r\n scrollPrev()\r\n } else if (event.key === \"ArrowRight\") {\r\n event.preventDefault()\r\n scrollNext()\r\n }\r\n },\r\n [scrollPrev, scrollNext]\r\n )\r\n\r\n React.useEffect(() => {\r\n if (!api || !setApi) return\r\n setApi(api)\r\n }, [api, setApi])\r\n\r\n React.useEffect(() => {\r\n if (!api) return\r\n onSelect(api)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onSelect])\r\n\r\n return (\r\n <CarouselContext.Provider\r\n value={{\r\n carouselRef,\r\n api,\r\n opts,\r\n orientation:\r\n orientation || (opts?.axis === \"y\" ? \"vertical\" : \"horizontal\"),\r\n scrollPrev,\r\n scrollNext,\r\n canScrollPrev,\r\n canScrollNext,\r\n }}\r\n >\r\n <div\r\n aria-roledescription=\"carousel\"\r\n className={cn(\"relative\", className)}\r\n data-slot=\"carousel\"\r\n role=\"region\"\r\n onKeyDownCapture={handleKeyDown}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n </CarouselContext.Provider>\r\n )\r\n}\r\n\r\nfunction CarouselContent({ className, ...props }: React.ComponentProps<\"div\">) {\r\n const { carouselRef } = useCarousel()\r\n\r\n return (\r\n <div ref={carouselRef} className=\"overflow-hidden\" data-slot=\"carousel-content\">\r\n <div className={cn(\"flex\", className)} {...props} />\r\n </div>\r\n )\r\n}\r\n\r\nfunction CarouselItem({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n aria-roledescription=\"slide\"\r\n className={cn(\"min-w-0 shrink-0 grow-0 basis-full\", className)}\r\n data-slot=\"carousel-item\"\r\n role=\"group\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype CarouselPreviousProps = React.ComponentProps<typeof Button>\r\n\r\nfunction CarouselPrevious({\r\n className,\r\n children,\r\n ...props\r\n}: CarouselPreviousProps) {\r\n const { orientation, scrollPrev, canScrollPrev } = useCarousel()\r\n\r\n return (\r\n <Button\r\n aria-label=\"Previous slide\"\r\n className={cn(\r\n \"absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4\",\r\n \"transition-all duration-200 hover:scale-105\",\r\n \"disabled:cursor-not-allowed disabled:hover:scale-100\",\r\n orientation === \"horizontal\"\r\n ? \"top-1/2 left-6 -translate-y-1/2\"\r\n : \"top-6 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n data-slot=\"carousel-previous\"\r\n disabled={!canScrollPrev}\r\n icon\r\n onClick={scrollPrev}\r\n size=\"md\"\r\n variant=\"secondary\"\r\n {...props}\r\n >\r\n {children || (\r\n <>\r\n <ArrowLeft />\r\n <span className=\"sr-only\">Previous slide</span>\r\n </>\r\n )}\r\n </Button>\r\n )\r\n}\r\n\r\ntype CarouselNextProps = React.ComponentProps<typeof Button>\r\n\r\nfunction CarouselNext({\r\n className,\r\n children,\r\n ...props\r\n}: CarouselNextProps) {\r\n const { orientation, scrollNext, canScrollNext } = useCarousel()\r\n\r\n return (\r\n <Button\r\n aria-label=\"Next slide\"\r\n className={cn(\r\n \"absolute size-9 rounded-full p-0 data-[icon]:size-9 [&_svg]:size-4\",\r\n \"transition-all duration-200 hover:scale-105\",\r\n \"disabled:cursor-not-allowed disabled:hover:scale-100\",\r\n orientation === \"horizontal\"\r\n ? \"top-1/2 right-6 -translate-y-1/2\"\r\n : \"bottom-6 left-1/2 -translate-x-1/2 rotate-90\",\r\n className,\r\n )}\r\n data-slot=\"carousel-next\"\r\n disabled={!canScrollNext}\r\n icon\r\n onClick={scrollNext}\r\n size=\"md\"\r\n variant=\"secondary\"\r\n {...props}\r\n >\r\n {children || (\r\n <>\r\n <ArrowRight />\r\n <span className=\"sr-only\">Next slide</span>\r\n </>\r\n )}\r\n </Button>\r\n )\r\n}\r\n\r\nfunction CarouselDots({ className, ...props }: React.ComponentProps<\"div\">) {\r\n const { api } = useCarousel()\r\n const [selectedIndex, setSelectedIndex] = React.useState(0)\r\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([])\r\n\r\n const onInit = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setScrollSnaps(api.scrollSnapList())\r\n }, [])\r\n\r\n const onSelect = React.useCallback((api: CarouselApi) => {\r\n if (!api) return\r\n setSelectedIndex(api.selectedScrollSnap())\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (!api) return\r\n\r\n onInit(api)\r\n onSelect(api)\r\n\r\n api.on(\"reInit\", onInit)\r\n api.on(\"reInit\", onSelect)\r\n api.on(\"select\", onSelect)\r\n\r\n return () => {\r\n api?.off(\"select\", onSelect)\r\n }\r\n }, [api, onInit, onSelect])\r\n\r\n if (scrollSnaps.length <= 1) return null\r\n\r\n return (\r\n <div\r\n className={cn(\"flex items-center justify-center gap-1.5\", className)}\r\n {...props}\r\n >\r\n {scrollSnaps.map((_, index) => (\r\n <button\r\n key={index}\r\n aria-label={`Go to slide ${index + 1}`}\r\n className={cn(\r\n \"h-1 rounded-full transition-all duration-300\",\r\n index === selectedIndex\r\n ? \"w-4 bg-fg-primary\"\r\n : \"w-2 bg-fg-tertiary hover:bg-fg-secondary\",\r\n )}\r\n data-selected={index === selectedIndex}\r\n data-slot=\"carousel-dot\"\r\n onClick={() => api?.scrollTo(index)}\r\n />\r\n ))}\r\n </div>\r\n )\r\n}\r\n\r\nexport {\r\n Carousel,\r\n CarouselContent,\r\n CarouselDots,\r\n CarouselItem,\r\n CarouselNext,\r\n CarouselPrevious,\r\n type CarouselApi,\r\n type CarouselProps,\r\n type CarouselContextProps,\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {cva}from'class-variance-authority';import {Loader2}from'lucide-react';import {Button}from'@base-ui/react/button';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var m=cva(cn("group relative inline-flex h-max w-fit cursor-pointer items-center justify-center whitespace-nowrap outline-brand transition duration-100 ease-linear before:absolute focus-visible:outline-2 focus-visible:outline-offset-2 rounded-xp-buttons [&_svg]:shrink-0","disabled:cursor-not-allowed"),{variants:{color:{default:"focus-visible:outline-focus-ring",destructive:"focus-visible:outline-focus-ring-error","gradient-ai":"focus-visible:outline-focus-ring","linear-green":"focus-visible:outline-focus-ring-success","linear-overlay":"focus-visible:outline-focus-ring","linear-destructive":"focus-visible:outline-focus-ring-error"},variant:{primary:"before:rounded-lg before:absolute before:inset-0 before:border-1 before:border-white/12 before:mask-b-from-0% after:absolute after:inset-0 after:rounded-xp-buttons hover:after:bg-alpha-gray-20 after:bg-transparent after:transition-colors disabled:text-fg-disabled disabled:bg-none disabled:bg-bg-disabled disabled:hover:after:bg-transparent disabled:before:border-border-disabled disabled:before:mask-none disabled:before:border-1 shadow-xp-md hover:shadow-xp-brand ",secondary:"border-1 shadow-xp-md hover:shadow-xp-brand disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:border-border-disabled disabled:hover:text-fg-disabled disabled:hover:[&_svg]:text-fg-disabled-subtle","secondary-accent":"disabled:border-border-disabled disabled:bg-bg-disabled disabled:text-fg-disabled",tertiary:"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-bg-disabled","tertiary-accent":"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle",link:"underline decoration-transparent hover:decoration-inherit transition-colors disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:hover:no-underline"},icon:{true:void 0,false:void 0},size:{"3xs":"text-label-semibold-4 px-xp-sm gap-xp-xs h-6 data-[icon]:size-6 data-[variant=link]:h-4 data-[variant=link]:px-0 [&_svg]:size-3.5","2xs":"text-label-semibold-4 px-xp-md gap-xp-xs h-7 data-[icon]:size-7 data-[variant=link]:h-4 data-[variant=link]:px-0 [&_svg]:size-4",xs:"text-label-semibold-3 px-xp-lg gap-xp-sm h-8 data-[icon]:size-8 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-4",sm:"text-label-semibold-3 px-xp-lg gap-xp-sm h-9 data-[icon]:size-9 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5",md:"text-label-semibold-3 px-3.5 gap-xp-sm h-10 data-[icon]:size-10 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5",lg:"text-label-semibold-2 px-xp-xl gap-xp-md h-11 data-[icon]:size-11 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5",xl:"text-label-semibold-2 px-4.5 gap-xp-md h-12 data-[icon]:size-12 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5"}},compoundVariants:[{variant:"primary",color:"default",className:"bg-gradient-buttons-gradient-blue text-text-primary-on-brand"},{variant:"secondary",color:"default",className:"bg-bg-primary text-text-secondary [&_svg]:text-fg-secondary border-border-primary-icon hover:bg-bg-brand-solid hover:border-border-white hover:text-text-primary-on-brand hover:[&_svg]:text-fg-white"},{variant:"secondary-accent",color:"default",className:"border-1 border-border-primary-icon text-fg-primary hover:bg-bg-brand-primary"},{variant:"tertiary",color:"default",className:"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover hover:[&_svg]:text-fg-quaternary-hover"},{variant:"tertiary-accent",color:"default",className:"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"link",color:"default",className:"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"primary",color:"destructive",className:"bg-bg-error-solid text-text-primary-on-brand"},{variant:"secondary",color:"destructive",className:"bg-bg-primary text-text-error-primary [&_svg]:text-fg-error-secondary border-border-error hover:bg-bg-error-primary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-secondary"},{variant:"secondary-accent",color:"destructive",className:"border-1 border-border-error text-fg-error-primary hover:bg-bg-error-primary"},{variant:"tertiary",color:"destructive",className:"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-primary"},{variant:"tertiary-accent",color:"destructive",className:"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover"},{variant:"link",color:"destructive",className:"text-text-error-secondary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-primary"},{variant:"primary",color:"gradient-ai",className:"bg-gradient-buttons-button-ai text-text-primary-on-brand"},{variant:"secondary",color:"gradient-ai",className:"relative shadow-transparent border-transparent hover:bg-bg-primary bg-[linear-gradient(90deg,var(--color-bg-primary),var(--color-bg-primary)),var(--gradient-buttons-button-ai)] [background-clip:padding-box,border-box] [background-origin:padding-box,border-box] [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled"},{variant:"secondary-accent",color:"gradient-ai",className:"border-1 border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"},{variant:"tertiary",color:"gradient-ai",className:"relative [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled"},{variant:"tertiary-accent",color:"gradient-ai",className:"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"link",color:"gradient-ai",className:"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"primary",color:"linear-green",className:"bg-gradient-buttons-gradient-green text-text-primary-on-brand"},{variant:"secondary",color:"linear-green",className:"bg-bg-primary text-text-secondary [&_svg]:text-green-500 border-border-primary hover:text-text-secondary-hover hover:[&_svg]:text-green-900"},{variant:"secondary-accent",color:"linear-green",className:"border-1 border-border-primary text-fg-primary hover:bg-bg-primary"},{variant:"tertiary",color:"linear-green",className:"text-text-success-primary [&_svg]:text-green-500 hover:bg-bg-success-primary hover:[&_svg]:text-green-900"},{variant:"tertiary-accent",color:"linear-green",className:"bg-bg-success-primary text-text-success-tertiary [&_svg]:text-fg-success-secondary hover:bg-bg-success-secondary hover:text-text-success-tertiary hover:[&_svg]:text-fg-success-secondary-hover"},{variant:"link",color:"linear-green",className:"text-text-success-secondary [&_svg]:text-fg-success-secondary hover:text-text-success-primary-hover hover:[&_svg]:text-fg-success-primary"},{variant:"primary",color:"linear-overlay",className:"relative bg-bg-brand-solid text-text-primary-on-brand [&_svg]:text-button-primary-icon hover:[&_svg]:text-button-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border"},{variant:"secondary",color:"linear-overlay",className:"bg-bg-brand-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover hover:[&_svg]:text-text-quaternary-hover"},{variant:"secondary-accent",color:"linear-overlay",className:"border-1 border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary"},{variant:"tertiary",color:"linear-overlay",className:"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover hover:[&_svg]:text-fg-quaternary-hover"},{variant:"tertiary-accent",color:"linear-overlay",className:"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"link",color:"linear-overlay",className:"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover hover:[&_svg]:text-fg-brand-secondary-hover"},{variant:"primary",color:"linear-destructive",className:"relative bg-bg-error-solid text-text-primary-on-brand [&_svg]:text-button-destructive-primary-icon hover:[&_svg]:text-button-destructive-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border"},{variant:"secondary",color:"linear-destructive",className:"bg-bg-error-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover hover:[&_svg]:text-text-quaternary-hover"},{variant:"secondary-accent",color:"linear-destructive",className:"border-1 border-border-error text-fg-error-primary hover:bg-bg-error-primary"},{variant:"tertiary",color:"linear-destructive",className:"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-tertiary-hover hover:[&_svg]:text-fg-error-secondary"},{variant:"tertiary-accent",color:"linear-destructive",className:"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover"},{variant:"link",color:"linear-destructive",className:"text-text-error-primary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-primary"}],defaultVariants:{variant:"primary",color:"default",size:"sm"}});function z({className:i,color:s,variant:e,size:n,loading:t=false,children:d,disabled:b,icon:g,nativeButton:l,render:a,...v}){let c=a!=null?false:l;return jsx(Button,{className:cn(m({color:s,variant:e,size:n,className:i})),"data-icon":g?"":void 0,"data-variant":e,disabled:b||t,nativeButton:c,render:a,...v,children:t?jsxs(Fragment,{children:[jsx(Loader2,{className:"size-4 animate-spin"}),jsx("span",{children:"Loading..."})]}):d})}export{m as a,z as b};//# sourceMappingURL=chunk-DQGZIFNP.js.map
2
+ //# sourceMappingURL=chunk-DQGZIFNP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/button.tsx"],"names":["buttonVariants","cva","cn","Button","className","color","variant","size","loading","children","disabled","icon","nativeButton","render","props","resolvedNativeButton","jsx","ButtonPrimitive","jsxs","Fragment","Loader2"],"mappings":"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","file":"chunk-DQGZIFNP.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\r\nimport { Loader2 } from \"lucide-react\"\r\n\r\nimport { Button as ButtonPrimitive } from \"@base-ui/react/button\"\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nconst buttonVariants = cva(\r\n cn(\r\n \"group relative inline-flex h-max w-fit cursor-pointer items-center justify-center whitespace-nowrap outline-brand transition duration-100 ease-linear before:absolute focus-visible:outline-2 focus-visible:outline-offset-2 rounded-xp-buttons [&_svg]:shrink-0\",\r\n \"disabled:cursor-not-allowed\",\r\n ),\r\n {\r\n variants: {\r\n color: {\r\n default: \"focus-visible:outline-focus-ring\",\r\n destructive: \"focus-visible:outline-focus-ring-error\",\r\n \"gradient-ai\": \"focus-visible:outline-focus-ring\",\r\n \"linear-green\": \"focus-visible:outline-focus-ring-success\",\r\n \"linear-overlay\": \"focus-visible:outline-focus-ring\",\r\n \"linear-destructive\": \"focus-visible:outline-focus-ring-error\",\r\n },\r\n variant: {\r\n primary: \"before:rounded-lg before:absolute before:inset-0 before:border-1 before:border-white/12 before:mask-b-from-0% after:absolute after:inset-0 after:rounded-xp-buttons hover:after:bg-alpha-gray-20 after:bg-transparent after:transition-colors disabled:text-fg-disabled disabled:bg-none disabled:bg-bg-disabled disabled:hover:after:bg-transparent disabled:before:border-border-disabled disabled:before:mask-none disabled:before:border-1 shadow-xp-md hover:shadow-xp-brand \",\r\n secondary: \"border-1 shadow-xp-md hover:shadow-xp-brand disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:border-border-disabled disabled:hover:text-fg-disabled disabled:hover:[&_svg]:text-fg-disabled-subtle\",\r\n \"secondary-accent\": \"disabled:border-border-disabled disabled:bg-bg-disabled disabled:text-fg-disabled\",\r\n tertiary: \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-bg-disabled\",\r\n \"tertiary-accent\": \"disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle\",\r\n link: \"underline decoration-transparent hover:decoration-inherit transition-colors disabled:bg-bg-disabled disabled:text-fg-disabled disabled:[&_svg]:text-fg-disabled-subtle disabled:hover:no-underline\",\r\n },\r\n icon: {\r\n true: undefined,\r\n false: undefined\r\n },\r\n size: {\r\n \"3xs\": \"text-label-semibold-4 px-xp-sm gap-xp-xs h-6 data-[icon]:size-6 data-[variant=link]:h-4 data-[variant=link]:px-0 [&_svg]:size-3.5\",\r\n \"2xs\": \"text-label-semibold-4 px-xp-md gap-xp-xs h-7 data-[icon]:size-7 data-[variant=link]:h-4 data-[variant=link]:px-0 [&_svg]:size-4\",\r\n xs: \"text-label-semibold-3 px-xp-lg gap-xp-sm h-8 data-[icon]:size-8 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-4\",\r\n sm: \"text-label-semibold-3 px-xp-lg gap-xp-sm h-9 data-[icon]:size-9 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5\",\r\n md: \"text-label-semibold-3 px-3.5 gap-xp-sm h-10 data-[icon]:size-10 data-[variant=link]:h-5 data-[variant=link]:px-0 [&_svg]:size-5\",\r\n lg: \"text-label-semibold-2 px-xp-xl gap-xp-md h-11 data-[icon]:size-11 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5\",\r\n xl: \"text-label-semibold-2 px-4.5 gap-xp-md h-12 data-[icon]:size-12 data-[variant=link]:h-[22px] data-[variant=link]:px-0 [&_svg]:size-5\",\r\n }\r\n },\r\n compoundVariants: [\r\n // Default Color Variants\r\n {\r\n variant: \"primary\",\r\n color: \"default\",\r\n className: \"bg-gradient-buttons-gradient-blue text-text-primary-on-brand\"\r\n },\r\n {\r\n variant: \"secondary\",\r\n color: \"default\",\r\n className: \"bg-bg-primary text-text-secondary [&_svg]:text-fg-secondary border-border-primary-icon hover:bg-bg-brand-solid hover:border-border-white hover:text-text-primary-on-brand hover:[&_svg]:text-fg-white\"\r\n },\r\n {\r\n variant: \"secondary-accent\",\r\n color: \"default\",\r\n className: \"border-1 border-border-primary-icon text-fg-primary hover:bg-bg-brand-primary\"\r\n },\r\n {\r\n variant: \"tertiary\",\r\n color: \"default\",\r\n className: \"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover hover:[&_svg]:text-fg-quaternary-hover\"\r\n },\r\n {\r\n variant: \"tertiary-accent\",\r\n color: \"default\",\r\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\r\n },\r\n {\r\n variant: \"link\",\r\n color: \"default\",\r\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover hover:[&_svg]:text-fg-brand-secondary-hover\"\r\n },\r\n\r\n // Destructive Color Variants\r\n {\r\n variant: \"primary\",\r\n color: \"destructive\",\r\n className: \"bg-bg-error-solid text-text-primary-on-brand\"\r\n },\r\n {\r\n variant: \"secondary\",\r\n color: \"destructive\",\r\n className: \"bg-bg-primary text-text-error-primary [&_svg]:text-fg-error-secondary border-border-error hover:bg-bg-error-primary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-secondary\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"secondary-accent\",\r\n color: \"destructive\",\r\n className: \"border-1 border-border-error text-fg-error-primary hover:bg-bg-error-primary\"\r\n },\r\n {\r\n variant: \"tertiary\",\r\n color: \"destructive\",\r\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-primary\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"tertiary-accent\",\r\n color: \"destructive\",\r\n className: \"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover\"\r\n },\r\n {\r\n variant: \"link\",\r\n color: \"destructive\",\r\n className: \"text-text-error-secondary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-primary\"\r\n },\r\n\r\n // Gradient AI\r\n {\r\n variant: \"primary\",\r\n color: \"gradient-ai\",\r\n className: \"bg-gradient-buttons-button-ai text-text-primary-on-brand\"\r\n },\r\n {\r\n variant: \"secondary\",\r\n color: \"gradient-ai\",\r\n className: \"relative shadow-transparent border-transparent hover:bg-bg-primary bg-[linear-gradient(90deg,var(--color-bg-primary),var(--color-bg-primary)),var(--gradient-buttons-button-ai)] [background-clip:padding-box,border-box] [background-origin:padding-box,border-box] [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"secondary-accent\",\r\n color: \"gradient-ai\",\r\n className: \"border-1 border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\r\n },\r\n {\r\n variant: \"tertiary\",\r\n color: \"gradient-ai\",\r\n className: \"relative [&>span]:bg-gradient-buttons-button-ai [&>span]:bg-clip-text [&>span]:text-transparent after:absolute after:inset-0 after:rounded-md hover:after:bg-gradient-buttons-button-ai hover:after:opacity-10 disabled:hover:after:bg-transparent disabled:after:opacity-0 disabled:[&>span]:bg-none disabled:[&>span]:text-fg-disabled\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"tertiary-accent\",\r\n color: \"gradient-ai\",\r\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"link\",\r\n color: \"gradient-ai\",\r\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover hover:[&_svg]:text-fg-brand-secondary-hover\"\r\n },\r\n\r\n // Linear Green Color Variants\r\n {\r\n variant: \"primary\",\r\n color: \"linear-green\",\r\n className: \"bg-gradient-buttons-gradient-green text-text-primary-on-brand\"\r\n },\r\n {\r\n variant: \"secondary\",\r\n color: \"linear-green\",\r\n className: \"bg-bg-primary text-text-secondary [&_svg]:text-green-500 border-border-primary hover:text-text-secondary-hover hover:[&_svg]:text-green-900\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"secondary-accent\",\r\n color: \"linear-green\",\r\n className: \"border-1 border-border-primary text-fg-primary hover:bg-bg-primary\"\r\n },\r\n {\r\n variant: \"tertiary\",\r\n color: \"linear-green\",\r\n className: \"text-text-success-primary [&_svg]:text-green-500 hover:bg-bg-success-primary hover:[&_svg]:text-green-900\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"tertiary-accent\",\r\n color: \"linear-green\",\r\n className: \"bg-bg-success-primary text-text-success-tertiary [&_svg]:text-fg-success-secondary hover:bg-bg-success-secondary hover:text-text-success-tertiary hover:[&_svg]:text-fg-success-secondary-hover\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"link\",\r\n color: \"linear-green\",\r\n className: \"text-text-success-secondary [&_svg]:text-fg-success-secondary hover:text-text-success-primary-hover hover:[&_svg]:text-fg-success-primary\"\r\n },\r\n\r\n // Linear Overlay Color Variants\r\n {\r\n variant: \"primary\",\r\n color: \"linear-overlay\",\r\n className: \"relative bg-bg-brand-solid text-text-primary-on-brand [&_svg]:text-button-primary-icon hover:[&_svg]:text-button-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border\"\r\n },\r\n {\r\n variant: \"secondary\",\r\n color: \"linear-overlay\",\r\n className: \"bg-bg-brand-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover hover:[&_svg]:text-text-quaternary-hover\"\r\n },\r\n {\r\n variant: \"secondary-accent\",\r\n color: \"linear-overlay\",\r\n className: \"border-1 border-border-brand text-fg-brand-primary hover:bg-bg-brand-primary\"\r\n },\r\n {\r\n variant: \"tertiary\",\r\n color: \"linear-overlay\",\r\n className: \"text-text-tertiary [&_svg]:text-fg-quaternary hover:bg-bg-primary-hover hover:text-text-tertiary-hover hover:[&_svg]:text-fg-quaternary-hover\"\r\n },\r\n {\r\n variant: \"tertiary-accent\",\r\n color: \"linear-overlay\",\r\n className: \"bg-bg-brand-primary text-text-brand-tertiary [&_svg]:text-fg-brand-secondary hover:bg-bg-brand-secondary hover:text-text-brand-tertiary hover:[&_svg]:text-fg-brand-secondary-hover\"\r\n },\r\n {\r\n variant: \"link\",\r\n color: \"linear-overlay\",\r\n className: \"text-text-brand-secondary [&_svg]:text-fg-brand-secondary-alt hover:text-text-brand-secondary-hover hover:[&_svg]:text-fg-brand-secondary-hover\"\r\n },\r\n\r\n // Linear Destructive Color Variants\r\n {\r\n variant: \"primary\",\r\n color: \"linear-destructive\",\r\n className: \"relative bg-bg-error-solid text-text-primary-on-brand [&_svg]:text-button-destructive-primary-icon hover:[&_svg]:text-button-destructive-primary-icon-hover after:absolute after:inset-0 after:rounded-xp-buttons after:bg-gradient-skuemorphic-gradient-border after:hover:bg-gradient-skuemorphic-gradient-border\"\r\n },\r\n {\r\n variant: \"secondary\",\r\n color: \"linear-destructive\",\r\n className: \"bg-bg-error-solid-hover text-text-secondary [&_svg]:text-fg-quaternary border-border-primary hover:bg-bg-primary-hover hover:text-text-secondary-hover hover:[&_svg]:text-text-quaternary-hover\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"secondary-accent\",\r\n color: \"linear-destructive\",\r\n className: \"border-1 border-border-error text-fg-error-primary hover:bg-bg-error-primary\"\r\n },\r\n {\r\n variant: \"tertiary\",\r\n color: \"linear-destructive\",\r\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:bg-bg-error-primary hover:text-text-tertiary-hover hover:[&_svg]:text-fg-error-secondary\"\r\n },\r\n {\r\n // Not existing in design system yet\r\n variant: \"tertiary-accent\",\r\n color: \"linear-destructive\",\r\n className: \"bg-bg-error-primary text-text-error-tertiary [&_svg]:text-fg-error-secondary hover:bg-bg-error-secondary hover:text-text-error-tertiary hover:[&_svg]:text-fg-error-secondary-hover\"\r\n },\r\n {\r\n variant: \"link\",\r\n color: \"linear-destructive\",\r\n className: \"text-text-error-primary [&_svg]:text-fg-error-secondary hover:text-text-error-primary-hover hover:[&_svg]:text-fg-error-primary\"\r\n },\r\n ],\r\n defaultVariants: {\r\n variant: \"primary\",\r\n color: \"default\",\r\n size: \"sm\",\r\n },\r\n }\r\n)\r\n\r\nfunction Button({\r\n className,\r\n color,\r\n variant,\r\n size,\r\n loading = false,\r\n children,\r\n disabled,\r\n icon,\r\n nativeButton,\r\n render,\r\n ...props\r\n}: ButtonPrimitive.Props &\r\n VariantProps<typeof buttonVariants> & {\r\n loading?: boolean\r\n }) {\r\n // ponytail: auto-detect nativeButton when render is provided\r\n const resolvedNativeButton = render != null ? false : nativeButton\r\n\r\n return (\r\n <ButtonPrimitive\r\n className={cn(buttonVariants({ color, variant, size, className }))}\r\n data-icon={icon ? \"\" : undefined}\r\n data-variant={variant}\r\n disabled={disabled || loading}\r\n nativeButton={resolvedNativeButton}\r\n render={render}\r\n {...props}\r\n >\r\n {loading ? (\r\n <>\r\n <Loader2 className=\"size-4 animate-spin\" />\r\n <span>Loading...</span>\r\n </>\r\n ) : (\r\n children\r\n )}\r\n </ButtonPrimitive>\r\n )\r\n}\r\n\r\nexport { Button, buttonVariants }"]}
@@ -1,2 +1,2 @@
1
- import {a,b}from'./chunk-UINS73U7.js';import*as D from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {differenceInCalendarDays}from'date-fns';import {ChevronLeftIcon,ChevronRightIcon,ChevronLeft,ChevronRight}from'lucide-react';import {DayPicker,DayButton,useDayPicker,labelPrevious,labelNext}from'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs}from'react/jsx-runtime';function ce({className:r,showOutsideDays:e=true,showViewSwitcher:t=true,yearRange:a$1=12,numberOfMonths:s,components:l,navView:f,defaultNavView:u,onNavViewChange:g,minNavView:b="days",weekStartsOn:N=0,...n}){let[c,h]=useControlledState({value:f,defaultValue:u??"days",onChange:g});D.useEffect(()=>{b==="months"&&h("months"),b==="years"&&h("years");},[b,h]);let[C,d]=D.useState({year:new Date().getFullYear()}),[y,m]=D.useState(D.useMemo(()=>{let w=new Date().getFullYear();return {from:w-Math.floor(a$1/2-1),to:w+Math.ceil(a$1/2)}},[a$1])),{onNextClick:_,onPrevClick:V,startMonth:x,endMonth:p}=n,F=c==="years"||c==="months"?1:s,M=cn("relative flex [&>div:not(:last-of-type)]:mr-3",n.monthsClassName),R=cn("relative flex items-center justify-center",n.monthCaptionClassName),A=cn("flex flex-row",n.weekdaysClassName),G=cn("size-9 first:text-text-error-primary text-label-semibold-3 text-text-primary flex items-center justify-center",n.weekdayClassName),Y=cn("flex flex-col gap-2",n.monthClassName),E=cn("relative flex items-center justify-center pt-xp-xs",n.captionClassName),L=cn("truncate text-body-regular-3 font-medium",n.captionLabelClassName),B=a({variant:"secondary-accent",className:"absolute h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"}),T=cn(B,"right-0",n.buttonNextClassName),j=cn(B,"left-0",n.buttonPreviousClassName),O=cn("flex items-start",n.navClassName),J=cn("flex flex-col p-3 bg-bg-primary text-text-primary rounded-lg",n.monthGridClassName),$=cn("flex w-max items-start",n.weekClassName),I=cn("flex size-9 flex-1 items-center justify-center p-0 text-label-semibold-3",n.dayClassName),q=cn(a({variant:null,size:"sm"}),"p-0",n.dayButtonClassName),H="[&>button]:bg-gradient-buttons-gradient-blue [&>button]:text-fg-white",K=cn("day-range-start [&:not(.day-range-end)>button]:rounded-e-none",n.rangeStartClassName),Q=cn("day-range-end [&:not(.day-range-start)>button]:rounded-s-none",n.rangeEndClassName),U=cn("[&>button]:bg-none [&>button]:bg-bg-primary-hover [&>button]:text-text-primary [&>button]:rounded-none [&[aria-selected=true][data-today=true]>button]:after:bg-utility-brand-500 [&[aria-selected=true][data-today=true]>button]:after:ring-utility-brand-100",n.rangeMiddleClassName),W=cn(" [&>button]:relative","[&>button]:after:content-[''] [&>button]:after:absolute [&>button]:after:bottom-1","[&>button]:after:left-1/2 [&>button]:after:-translate-x-1/2","[&>button]:after:size-1 [&>button]:after:rounded-full [&>button]:after:ring-2 [&>button]:after:ring-utility-brand-100 [&>button]:after:bg-utility-brand-500","[&[aria-selected=true]>button]:after:bg-fg-white [&[aria-selected=true]>button]:after:ring-alpha-alpha-white-30",n.todayClassName),X=cn("opacity-50",n.outsideClassName),Z=cn("opacity-50",n.disabledClassName),ee=cn("invisible flex-1",n.hiddenClassName);return jsx(DayPicker,{className:cn("p-xp-xl rounded-xl bg-bg-tertiary h-max",r),classNames:{months:M,month_caption:R,weekdays:A,weekday:G,month:Y,caption:E,caption_label:L,button_next:T,button_previous:j,nav:O,month_grid:J,week:$,day:I,day_button:q,selected:H,range_start:K,range_middle:U,range_end:Q,today:W,outside:X,disabled:Z,hidden:ee},components:{Chevron:({orientation:w})=>jsx(w==="left"?ChevronLeftIcon:ChevronRightIcon,{className:"h-4 w-4"}),Nav:({className:w})=>jsx(de,{className:w,displayMonths:C,displayYears:y,endMonth:p,navView:c,setDisplayMonths:d,setDisplayYears:m,startMonth:x,onNextClick:_,onPrevClick:V}),CaptionLabel:w=>jsx(fe,{displayMonths:C,displayYears:y,navView:c,setNavView:h,showViewSwitcher:t,...w}),DayButton:w=>jsx(DayButton,{"data-icon":true,...w}),MonthGrid:({className:w,children:z,...te})=>jsx(be,{className:w,displayMonths:C,displayYears:y,endMonth:p,minNavView:b,navView:c,setDisplayMonths:d,setNavView:h,startMonth:x,...te,children:z}),...l},numberOfMonths:F,showOutsideDays:e,weekStartsOn:N,...n})}ce.displayName="Calendar";function de({className:r,navView:e,startMonth:t,endMonth:a,displayYears:s,displayMonths:l,setDisplayYears:f,setDisplayMonths:u,onPrevClick:g,onNextClick:b$1}){let{nextMonth:N,previousMonth:n,goToMonth:c}=useDayPicker(),h=e==="years"?t&&differenceInCalendarDays(new Date(s.from-1,0,1),t)<0||a&&differenceInCalendarDays(new Date(s.from-1,0,1),a)>0:e==="months"?t&&differenceInCalendarDays(new Date(l.year-1,0,1),t)<0||a&&differenceInCalendarDays(new Date(l.year-1,0,1),a)>0:!n,C=e==="years"?t&&differenceInCalendarDays(new Date(s.to+1,0,1),t)<0||a&&differenceInCalendarDays(new Date(s.to+1,0,1),a)>0:e==="months"?t&&differenceInCalendarDays(new Date(l.year+1,0,1),t)<0||a&&differenceInCalendarDays(new Date(l.year+1,0,1),a)>0:!N,d=D.useCallback(()=>{if(n){if(e==="years"){f(m=>({from:m.from-(m.to-m.from+1),to:m.to-(m.to-m.from+1)})),g?.(new Date(s.from-(s.to-s.from),0,1));return}if(e==="months"){u(m=>({year:m.year-1})),g?.(new Date(l.year-1,0,1));return}c(n),g?.(n);}},[n,c,s.from,s.to,l.year,e,g,f,u]),y=D.useCallback(()=>{if(N){if(e==="years"){f(m=>({from:m.from+(m.to-m.from+1),to:m.to+(m.to-m.from+1)})),b$1?.(new Date(s.from+(s.to-s.from),0,1));return}if(e==="months"){u(m=>({year:m.year+1})),b$1?.(new Date(l.year+1,0,1));return}c(N),b$1?.(N);}},[c,N,s.from,s.to,l.year,e,b$1,f,u]);return jsxs("nav",{className:cn("flex items-center",r),children:[jsx(b,{"aria-label":e==="years"?`Go to the previous ${s.to-s.from+1} years`:e==="months"?"Go to the previous year":labelPrevious(n),className:"absolute left-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10",disabled:h,size:"sm",icon:true,tabIndex:h?void 0:-1,type:"button",variant:null,onClick:d,children:jsx(ChevronLeft,{})}),jsx(b,{"aria-label":e==="years"?`Go to the next ${s.to-s.from+1} years`:e==="months"?"Go to the next year":labelNext(N),className:"absolute right-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10",disabled:C,size:"sm",icon:true,tabIndex:C?void 0:-1,type:"button",variant:null,onClick:y,children:jsx(ChevronRight,{})})]})}function fe({children:r,showViewSwitcher:e,navView:t,setNavView:a,displayYears:s,displayMonths:l,...f}){return e?jsx(b,{disabled:t==="years",size:"sm",type:"button",variant:null,onClick:()=>{t==="days"?a("months"):t==="months"&&a("years");},children:t==="days"?r:t==="months"?l.year:s.from+" - "+s.to}):jsx("span",{...f,children:r})}function be({className:r,children:e,displayYears:t,displayMonths:a,setDisplayMonths:s,startMonth:l,endMonth:f,navView:u,setNavView:g,minNavView:b="days",...N}){return u==="years"?jsx(ge,{className:r,displayYears:t,endMonth:f,minNavView:b,navView:u,setDisplayMonths:s,setNavView:g,startMonth:l,...N}):u==="months"?jsx(Ce,{className:r,displayMonths:a,endMonth:f,minNavView:b,navView:u,setNavView:g,startMonth:l,...N}):jsx("table",{className:cn("flex-1",r),...N,children:e})}function Ne(r,e){if(!r)return false;if(Array.isArray(r))return r.some(t=>t.getFullYear()===e);if(typeof r=="object"&&"from"in r){let t=r;return t.from&&t.to?e>=t.from.getFullYear()&&e<=t.to.getFullYear():t.from?t.from.getFullYear()===e:false}return r.getFullYear()===e}function ye(r,e,t){if(!r)return false;if(Array.isArray(r))return r.some(a=>a.getMonth()===t&&a.getFullYear()===e);if(typeof r=="object"&&"from"in r){let a=r;if(a.from&&a.to){let s=a.from.getMonth(),l=a.from.getFullYear(),f=a.to.getMonth(),u=a.to.getFullYear();return e===l&&e===u?t>=s&&t<=f:e===l?t>=s:e===u?t<=f:e>l&&e<u}return a.from?a.from.getMonth()===t&&a.from.getFullYear()===e:false}return r.getMonth()===t&&r.getFullYear()===e}function ge({className:r,displayYears:e,startMonth:t,endMonth:a,setNavView:s,navView:l,setDisplayMonths:f,minNavView:u="days",...g}){let {selected:b$1,select:N}=useDayPicker();new Date().getFullYear();let c=e.to-e.from+1,h=(C,d)=>{u==="years"?N?.(new Date(d,0,1),{},C):(s("months"),f({year:d}));};return jsx("table",{className:cn("w-[312px]",r),...g,children:jsx("tbody",{children:jsx("tr",{className:"grid grid-cols-3 gap-xp-md",children:Array.from({length:c},(C,d)=>{let y=e.from+d,m=new Date(y,0,1),_=new Date(y,11,31),V=t&&differenceInCalendarDays(_,t)<0,x=a&&differenceInCalendarDays(m,a)>0,p=V||x,M=Ne(b$1,y);return jsx("td",{children:jsx(b,{className:"w-full",disabled:l==="years"?p:void 0,type:"button",variant:M?"primary":"tertiary-accent",onClick:R=>h(R,y),children:y})},y)})})})})}function Ce({className:r,displayMonths:e,startMonth:t,endMonth:a,setNavView:s,navView:l,minNavView:f="days",...u}){let{goToMonth:g,selected:b$1,select:N}=useDayPicker(),n=["January","February","March","April","May","June","July","August","September","October","November","December"],c=e.year,h=(C,d)=>{f==="months"?N?.(new Date(c,d,1),{},C):(s("days"),g(new Date(c,d)));};return jsx("table",{className:cn("w-[312px]",r),...u,children:jsx("tbody",{children:jsx("tr",{className:"grid grid-cols-3 gap-xp-md",children:n.map((C,d)=>{let y=t&&differenceInCalendarDays(new Date(c,d,31),t)<0,m=a&&differenceInCalendarDays(new Date(c,d,1),a)>0,_=y||m;c===new Date().getFullYear()&&d===new Date().getMonth();let x=ye(b$1,c,d);return jsx("td",{children:jsx(b,{className:"w-full",disabled:l==="months"?_:void 0,type:"button",variant:x?"primary":"tertiary-accent",onClick:p=>h(p,d),children:C.substring(0,3)})},d)})})})})}export{ce as a};//# sourceMappingURL=chunk-F77XVICY.js.map
2
- //# sourceMappingURL=chunk-F77XVICY.js.map
1
+ import {a,b}from'./chunk-DQGZIFNP.js';import*as D from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {differenceInCalendarDays}from'date-fns';import {ChevronLeftIcon,ChevronRightIcon,ChevronLeft,ChevronRight}from'lucide-react';import {DayPicker,DayButton,useDayPicker,labelPrevious,labelNext}from'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs}from'react/jsx-runtime';function ce({className:r,showOutsideDays:e=true,showViewSwitcher:t=true,yearRange:a$1=12,numberOfMonths:s,components:l,navView:f,defaultNavView:u,onNavViewChange:g,minNavView:b="days",weekStartsOn:N=0,...n}){let[c,h]=useControlledState({value:f,defaultValue:u??"days",onChange:g});D.useEffect(()=>{b==="months"&&h("months"),b==="years"&&h("years");},[b,h]);let[C,d]=D.useState({year:new Date().getFullYear()}),[y,m]=D.useState(D.useMemo(()=>{let w=new Date().getFullYear();return {from:w-Math.floor(a$1/2-1),to:w+Math.ceil(a$1/2)}},[a$1])),{onNextClick:_,onPrevClick:V,startMonth:x,endMonth:p}=n,F=c==="years"||c==="months"?1:s,M=cn("relative flex [&>div:not(:last-of-type)]:mr-3",n.monthsClassName),R=cn("relative flex items-center justify-center",n.monthCaptionClassName),A=cn("flex flex-row",n.weekdaysClassName),G=cn("size-9 first:text-text-error-primary text-label-semibold-3 text-text-primary flex items-center justify-center",n.weekdayClassName),Y=cn("flex flex-col gap-2",n.monthClassName),E=cn("relative flex items-center justify-center pt-xp-xs",n.captionClassName),L=cn("truncate text-body-regular-3 font-medium",n.captionLabelClassName),B=a({variant:"secondary-accent",className:"absolute h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"}),T=cn(B,"right-0",n.buttonNextClassName),j=cn(B,"left-0",n.buttonPreviousClassName),O=cn("flex items-start",n.navClassName),J=cn("flex flex-col p-3 bg-bg-primary text-text-primary rounded-lg",n.monthGridClassName),$=cn("flex w-max items-start",n.weekClassName),I=cn("flex size-9 flex-1 items-center justify-center p-0 text-label-semibold-3",n.dayClassName),q=cn(a({variant:null,size:"sm"}),"p-0",n.dayButtonClassName),H="[&>button]:bg-gradient-buttons-gradient-blue [&>button]:text-fg-white",K=cn("day-range-start [&:not(.day-range-end)>button]:rounded-e-none",n.rangeStartClassName),Q=cn("day-range-end [&:not(.day-range-start)>button]:rounded-s-none",n.rangeEndClassName),U=cn("[&>button]:bg-none [&>button]:bg-bg-primary-hover [&>button]:text-text-primary [&>button]:rounded-none [&[aria-selected=true][data-today=true]>button]:after:bg-utility-brand-500 [&[aria-selected=true][data-today=true]>button]:after:ring-utility-brand-100",n.rangeMiddleClassName),W=cn(" [&>button]:relative","[&>button]:after:content-[''] [&>button]:after:absolute [&>button]:after:bottom-1","[&>button]:after:left-1/2 [&>button]:after:-translate-x-1/2","[&>button]:after:size-1 [&>button]:after:rounded-full [&>button]:after:ring-2 [&>button]:after:ring-utility-brand-100 [&>button]:after:bg-utility-brand-500","[&[aria-selected=true]>button]:after:bg-fg-white [&[aria-selected=true]>button]:after:ring-alpha-alpha-white-30",n.todayClassName),X=cn("opacity-50",n.outsideClassName),Z=cn("opacity-50",n.disabledClassName),ee=cn("invisible flex-1",n.hiddenClassName);return jsx(DayPicker,{className:cn("p-xp-xl rounded-xl bg-bg-tertiary h-max",r),classNames:{months:M,month_caption:R,weekdays:A,weekday:G,month:Y,caption:E,caption_label:L,button_next:T,button_previous:j,nav:O,month_grid:J,week:$,day:I,day_button:q,selected:H,range_start:K,range_middle:U,range_end:Q,today:W,outside:X,disabled:Z,hidden:ee},components:{Chevron:({orientation:w})=>jsx(w==="left"?ChevronLeftIcon:ChevronRightIcon,{className:"h-4 w-4"}),Nav:({className:w})=>jsx(de,{className:w,displayMonths:C,displayYears:y,endMonth:p,navView:c,setDisplayMonths:d,setDisplayYears:m,startMonth:x,onNextClick:_,onPrevClick:V}),CaptionLabel:w=>jsx(fe,{displayMonths:C,displayYears:y,navView:c,setNavView:h,showViewSwitcher:t,...w}),DayButton:w=>jsx(DayButton,{"data-icon":true,...w}),MonthGrid:({className:w,children:z,...te})=>jsx(be,{className:w,displayMonths:C,displayYears:y,endMonth:p,minNavView:b,navView:c,setDisplayMonths:d,setNavView:h,startMonth:x,...te,children:z}),...l},numberOfMonths:F,showOutsideDays:e,weekStartsOn:N,...n})}ce.displayName="Calendar";function de({className:r,navView:e,startMonth:t,endMonth:a,displayYears:s,displayMonths:l,setDisplayYears:f,setDisplayMonths:u,onPrevClick:g,onNextClick:b$1}){let{nextMonth:N,previousMonth:n,goToMonth:c}=useDayPicker(),h=e==="years"?t&&differenceInCalendarDays(new Date(s.from-1,0,1),t)<0||a&&differenceInCalendarDays(new Date(s.from-1,0,1),a)>0:e==="months"?t&&differenceInCalendarDays(new Date(l.year-1,0,1),t)<0||a&&differenceInCalendarDays(new Date(l.year-1,0,1),a)>0:!n,C=e==="years"?t&&differenceInCalendarDays(new Date(s.to+1,0,1),t)<0||a&&differenceInCalendarDays(new Date(s.to+1,0,1),a)>0:e==="months"?t&&differenceInCalendarDays(new Date(l.year+1,0,1),t)<0||a&&differenceInCalendarDays(new Date(l.year+1,0,1),a)>0:!N,d=D.useCallback(()=>{if(n){if(e==="years"){f(m=>({from:m.from-(m.to-m.from+1),to:m.to-(m.to-m.from+1)})),g?.(new Date(s.from-(s.to-s.from),0,1));return}if(e==="months"){u(m=>({year:m.year-1})),g?.(new Date(l.year-1,0,1));return}c(n),g?.(n);}},[n,c,s.from,s.to,l.year,e,g,f,u]),y=D.useCallback(()=>{if(N){if(e==="years"){f(m=>({from:m.from+(m.to-m.from+1),to:m.to+(m.to-m.from+1)})),b$1?.(new Date(s.from+(s.to-s.from),0,1));return}if(e==="months"){u(m=>({year:m.year+1})),b$1?.(new Date(l.year+1,0,1));return}c(N),b$1?.(N);}},[c,N,s.from,s.to,l.year,e,b$1,f,u]);return jsxs("nav",{className:cn("flex items-center",r),children:[jsx(b,{"aria-label":e==="years"?`Go to the previous ${s.to-s.from+1} years`:e==="months"?"Go to the previous year":labelPrevious(n),className:"absolute left-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10",disabled:h,size:"sm",icon:true,tabIndex:h?void 0:-1,type:"button",variant:null,onClick:d,children:jsx(ChevronLeft,{})}),jsx(b,{"aria-label":e==="years"?`Go to the next ${s.to-s.from+1} years`:e==="months"?"Go to the next year":labelNext(N),className:"absolute right-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10",disabled:C,size:"sm",icon:true,tabIndex:C?void 0:-1,type:"button",variant:null,onClick:y,children:jsx(ChevronRight,{})})]})}function fe({children:r,showViewSwitcher:e,navView:t,setNavView:a,displayYears:s,displayMonths:l,...f}){return e?jsx(b,{disabled:t==="years",size:"sm",type:"button",variant:null,onClick:()=>{t==="days"?a("months"):t==="months"&&a("years");},children:t==="days"?r:t==="months"?l.year:s.from+" - "+s.to}):jsx("span",{...f,children:r})}function be({className:r,children:e,displayYears:t,displayMonths:a,setDisplayMonths:s,startMonth:l,endMonth:f,navView:u,setNavView:g,minNavView:b="days",...N}){return u==="years"?jsx(ge,{className:r,displayYears:t,endMonth:f,minNavView:b,navView:u,setDisplayMonths:s,setNavView:g,startMonth:l,...N}):u==="months"?jsx(Ce,{className:r,displayMonths:a,endMonth:f,minNavView:b,navView:u,setNavView:g,startMonth:l,...N}):jsx("table",{className:cn("flex-1",r),...N,children:e})}function Ne(r,e){if(!r)return false;if(Array.isArray(r))return r.some(t=>t.getFullYear()===e);if(typeof r=="object"&&"from"in r){let t=r;return t.from&&t.to?e>=t.from.getFullYear()&&e<=t.to.getFullYear():t.from?t.from.getFullYear()===e:false}return r.getFullYear()===e}function ye(r,e,t){if(!r)return false;if(Array.isArray(r))return r.some(a=>a.getMonth()===t&&a.getFullYear()===e);if(typeof r=="object"&&"from"in r){let a=r;if(a.from&&a.to){let s=a.from.getMonth(),l=a.from.getFullYear(),f=a.to.getMonth(),u=a.to.getFullYear();return e===l&&e===u?t>=s&&t<=f:e===l?t>=s:e===u?t<=f:e>l&&e<u}return a.from?a.from.getMonth()===t&&a.from.getFullYear()===e:false}return r.getMonth()===t&&r.getFullYear()===e}function ge({className:r,displayYears:e,startMonth:t,endMonth:a,setNavView:s,navView:l,setDisplayMonths:f,minNavView:u="days",...g}){let {selected:b$1,select:N}=useDayPicker();new Date().getFullYear();let c=e.to-e.from+1,h=(C,d)=>{u==="years"?N?.(new Date(d,0,1),{},C):(s("months"),f({year:d}));};return jsx("table",{className:cn("w-[312px]",r),...g,children:jsx("tbody",{children:jsx("tr",{className:"grid grid-cols-3 gap-xp-md",children:Array.from({length:c},(C,d)=>{let y=e.from+d,m=new Date(y,0,1),_=new Date(y,11,31),V=t&&differenceInCalendarDays(_,t)<0,x=a&&differenceInCalendarDays(m,a)>0,p=V||x,M=Ne(b$1,y);return jsx("td",{children:jsx(b,{className:"w-full",disabled:l==="years"?p:void 0,type:"button",variant:M?"primary":"tertiary-accent",onClick:R=>h(R,y),children:y})},y)})})})})}function Ce({className:r,displayMonths:e,startMonth:t,endMonth:a,setNavView:s,navView:l,minNavView:f="days",...u}){let{goToMonth:g,selected:b$1,select:N}=useDayPicker(),n=["January","February","March","April","May","June","July","August","September","October","November","December"],c=e.year,h=(C,d)=>{f==="months"?N?.(new Date(c,d,1),{},C):(s("days"),g(new Date(c,d)));};return jsx("table",{className:cn("w-[312px]",r),...u,children:jsx("tbody",{children:jsx("tr",{className:"grid grid-cols-3 gap-xp-md",children:n.map((C,d)=>{let y=t&&differenceInCalendarDays(new Date(c,d,31),t)<0,m=a&&differenceInCalendarDays(new Date(c,d,1),a)>0,_=y||m;c===new Date().getFullYear()&&d===new Date().getMonth();let x=ye(b$1,c,d);return jsx("td",{children:jsx(b,{className:"w-full",disabled:l==="months"?_:void 0,type:"button",variant:x?"primary":"tertiary-accent",onClick:p=>h(p,d),children:C.substring(0,3)})},d)})})})})}export{ce as a};//# sourceMappingURL=chunk-FIDOWSDH.js.map
2
+ //# sourceMappingURL=chunk-FIDOWSDH.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/calendar.tsx"],"names":["Calendar","className","showOutsideDays","showViewSwitcher","yearRange","numberOfMonths","components","navViewProp","defaultNavView","onNavViewChange","minNavView","weekStartsOn","props","navView","setNavView","useControlledState","displayMonths","setDisplayMonths","displayYears","setDisplayYears","currentYear","onNextClick","onPrevClick","startMonth","endMonth","columnsDisplayed","_monthsClassName","cn","_monthCaptionClassName","_weekdaysClassName","_weekdayClassName","_monthClassName","_captionClassName","_captionLabelClassName","buttonNavClassName","buttonVariants","_buttonNextClassName","_buttonPreviousClassName","_navClassName","_monthGridClassName","_weekClassName","_dayClassName","_dayButtonClassName","_dayButtonSelectedClassName","_rangeStartClassName","_rangeEndClassName","_rangeMiddleClassName","_todayClassName","_outsideClassName","_disabledClassName","_hiddenClassName","jsx","DayPicker","orientation","ChevronLeftIcon","ChevronRightIcon","navClassName","Nav","clProps","CaptionLabel","dayProps","DayButton","mgClassName","children","mgProps","CalendarGrid","nextMonth","previousMonth","goToMonth","useDayPicker","isPreviousDisabled","differenceInCalendarDays","isNextDisabled","handlePreviousClick","prev","handleNextClick","jsxs","Button","labelPrevious","ChevronLeft","labelNext","ChevronRight","YearGrid","MonthGrid","isYearSelected","selected","year","d","range","isMonthSelected","monthIdx","fromMonth","fromYear","toMonth","toYear","select","totalYears","handleClick","e","_","i","yearStart","yearEnd","isBeforeStart","isAfterEnd","isDisabled","isSelected","months","month","isBefore","isAfter"],"mappings":"0aA2DA,SAASA,EAAAA,CAAS,CAChB,SAAA,CAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CAAkB,IAAA,CAClB,gBAAA,CAAAC,EAAmB,IAAA,CACnB,SAAA,CAAAC,IAAY,EAAA,CACZ,cAAA,CAAAC,EACA,UAAA,CAAAC,CAAAA,CACA,OAAA,CAASC,CAAAA,CACT,cAAA,CAAAC,CAAAA,CACA,gBAAAC,CAAAA,CACA,UAAA,CAAAC,EAAa,MAAA,CACb,YAAA,CAAAC,EAAe,CAAA,CACf,GAAGC,CACL,CAAA,CAAkB,CAChB,GAAM,CAACC,CAAAA,CAASC,CAAU,EAAIC,kBAAAA,CAAmB,CAC/C,MAAOR,CAAAA,CACP,YAAA,CAAcC,CAAAA,EAAkB,MAAA,CAChC,QAAA,CAAUC,CACZ,CAAC,CAAA,CAEK,CAAA,CAAA,SAAA,CAAU,IAAM,CAChBC,CAAAA,GAAe,UAAUI,CAAAA,CAAW,QAAQ,CAAA,CAC5CJ,CAAAA,GAAe,OAAA,EAASI,CAAAA,CAAW,OAAO,EAChD,CAAA,CAAG,CAACJ,CAAAA,CAAYI,CAAU,CAAC,CAAA,CAE3B,GAAM,CAACE,CAAAA,CAAeC,CAAgB,CAAA,CAAU,WAA2B,CACzE,IAAA,CAAM,IAAI,IAAA,EAAK,CAAE,aACnB,CAAC,CAAA,CAEK,CAACC,CAAAA,CAAcC,CAAe,EAAU,CAAA,CAAA,QAAA,CACtC,CAAA,CAAA,OAAA,CAAQ,IAAM,CAClB,IAAMC,EAAc,IAAI,IAAA,EAAK,CAAE,WAAA,EAAY,CAC3C,OAAO,CACL,IAAA,CAAMA,CAAAA,CAAc,KAAK,KAAA,CAAMhB,GAAAA,CAAY,EAAI,CAAC,CAAA,CAChD,EAAA,CAAIgB,CAAAA,CAAc,IAAA,CAAK,IAAA,CAAKhB,IAAY,CAAC,CAC3C,CACF,CAAA,CAAG,CAACA,GAAS,CAAC,CAChB,CAAA,CAEM,CAAE,WAAA,CAAAiB,CAAAA,CAAa,YAAAC,CAAAA,CAAa,UAAA,CAAAC,EAAY,QAAA,CAAAC,CAAS,EAAIZ,CAAAA,CAErDa,CAAAA,CAAmBZ,CAAAA,GAAY,OAAA,EAAWA,CAAAA,GAAY,QAAA,CAAW,EAAIR,CAAAA,CAErEqB,CAAAA,CAAmBC,GAAG,+CAAA,CAAiDf,CAAAA,CAAM,eAAe,CAAA,CAC5FgB,CAAAA,CAAyBD,EAAAA,CAAG,2CAAA,CAA6Cf,CAAAA,CAAM,qBAAqB,EACpGiB,CAAAA,CAAqBF,EAAAA,CAAG,gBAAiBf,CAAAA,CAAM,iBAAiB,EAChEkB,CAAAA,CAAoBH,EAAAA,CAAG,+GAAA,CAAiHf,CAAAA,CAAM,gBAAgB,CAAA,CAC9JmB,EAAkBJ,EAAAA,CAAG,qBAAA,CAAuBf,EAAM,cAAc,CAAA,CAChEoB,EAAoBL,EAAAA,CAAG,oDAAA,CAAsDf,CAAAA,CAAM,gBAAgB,CAAA,CACnGqB,CAAAA,CAAyBN,GAAG,0CAAA,CAA4Cf,CAAAA,CAAM,qBAAqB,CAAA,CACnGsB,CAAAA,CAAqBC,EAAe,CACxC,OAAA,CAAS,kBAAA,CACT,SAAA,CAAW,kEACb,CAAC,EACKC,CAAAA,CAAuBT,EAAAA,CAAGO,EAAoB,SAAA,CAAWtB,CAAAA,CAAM,mBAAmB,CAAA,CAClFyB,CAAAA,CAA2BV,EAAAA,CAAGO,CAAAA,CAAoB,QAAA,CAAUtB,CAAAA,CAAM,uBAAuB,CAAA,CACzF0B,CAAAA,CAAgBX,GAAG,kBAAA,CAAoBf,CAAAA,CAAM,YAAY,CAAA,CACzD2B,CAAAA,CAAsBZ,EAAAA,CAAG,8DAAA,CAAgEf,CAAAA,CAAM,kBAAkB,EACjH4B,CAAAA,CAAiBb,EAAAA,CAAG,yBAA0Bf,CAAAA,CAAM,aAAa,EACjE6B,CAAAA,CAAgBd,EAAAA,CAAG,0EAAA,CAA4Ef,CAAAA,CAAM,YAAY,CAAA,CACjH8B,EAAsBf,EAAAA,CAC1BQ,CAAAA,CAAe,CAAE,OAAA,CAAS,IAAA,CAAM,KAAM,IAAK,CAAC,CAAA,CAC5C,KAAA,CACAvB,CAAAA,CAAM,kBACR,EACM+B,CAAAA,CAA8B,uEAAA,CAC9BC,EAAuBjB,EAAAA,CAAG,+DAAA,CAAiEf,EAAM,mBAAmB,CAAA,CACpHiC,CAAAA,CAAqBlB,EAAAA,CAAG,+DAAA,CAAiEf,CAAAA,CAAM,iBAAiB,CAAA,CAChHkC,CAAAA,CAAwBnB,GAC5B,gQAAA,CACAf,CAAAA,CAAM,oBACR,CAAA,CACMmC,CAAAA,CAAkBpB,EAAAA,CACtB,sBAAA,CACA,mFAAA,CACA,6DAAA,CACA,8JACA,iHAAA,CACAf,CAAAA,CAAM,cACR,CAAA,CACMoC,CAAAA,CAAoBrB,GAAG,YAAA,CAAcf,CAAAA,CAAM,gBAAgB,CAAA,CAC3DqC,CAAAA,CAAqBtB,EAAAA,CAAG,aAAcf,CAAAA,CAAM,iBAAiB,EAC7DsC,EAAAA,CAAmBvB,EAAAA,CAAG,mBAAoBf,CAAAA,CAAM,eAAe,CAAA,CAErE,OACEuC,GAAAA,CAACC,SAAAA,CAAA,CACC,SAAA,CAAWzB,EAAAA,CAAG,0CAA2C1B,CAAS,CAAA,CAClE,WAAY,CACV,MAAA,CAAQyB,CAAAA,CACR,aAAA,CAAeE,CAAAA,CACf,QAAA,CAAUC,EACV,OAAA,CAASC,CAAAA,CACT,MAAOC,CAAAA,CACP,OAAA,CAASC,EACT,aAAA,CAAeC,CAAAA,CACf,WAAA,CAAaG,CAAAA,CACb,eAAA,CAAiBC,CAAAA,CACjB,IAAKC,CAAAA,CACL,UAAA,CAAYC,EACZ,IAAA,CAAMC,CAAAA,CACN,IAAKC,CAAAA,CACL,UAAA,CAAYC,CAAAA,CACZ,QAAA,CAAUC,CAAAA,CACV,WAAA,CAAaC,EACb,YAAA,CAAcE,CAAAA,CACd,UAAWD,CAAAA,CACX,KAAA,CAAOE,EACP,OAAA,CAASC,CAAAA,CACT,QAAA,CAAUC,CAAAA,CACV,MAAA,CAAQC,EACV,EACA,UAAA,CAAY,CACV,QAAS,CAAC,CAAE,YAAAG,CAAY,CAAA,GAEfF,GAAAA,CADME,CAAAA,GAAgB,MAAA,CAASC,eAAAA,CAAkBC,iBAChD,CAAK,SAAA,CAAU,UAAU,CAAA,CAEnC,GAAA,CAAK,CAAC,CAAE,SAAA,CAAWC,CAAa,CAAA,GAC9BL,GAAAA,CAACM,EAAAA,CAAA,CACC,SAAA,CAAWD,CAAAA,CACX,cAAexC,CAAAA,CACf,YAAA,CAAcE,EACd,QAAA,CAAUM,CAAAA,CACV,OAAA,CAASX,CAAAA,CACT,gBAAA,CAAkBI,CAAAA,CAClB,gBAAiBE,CAAAA,CACjB,UAAA,CAAYI,EACZ,WAAA,CAAaF,CAAAA,CACb,YAAaC,CAAAA,CACf,CAAA,CAEF,YAAA,CAAeoC,CAAAA,EACbP,GAAAA,CAACQ,EAAAA,CAAA,CACC,aAAA,CAAe3C,CAAAA,CACf,aAAcE,CAAAA,CACd,OAAA,CAASL,EACT,UAAA,CAAYC,CAAAA,CACZ,gBAAA,CAAkBX,CAAAA,CACjB,GAAGuD,CAAAA,CACN,EAEF,SAAA,CAAYE,CAAAA,EACVT,IAACU,SAAAA,CAAA,CACC,YAAS,IAAA,CACR,GAAGD,CAAAA,CACN,CAAA,CAEF,SAAA,CAAW,CAAC,CAAE,SAAA,CAAWE,CAAAA,CAAa,SAAAC,CAAAA,CAAU,GAAGC,EAAQ,CAAA,GACzDb,GAAAA,CAACc,EAAAA,CAAA,CACC,SAAA,CAAWH,CAAAA,CACX,cAAe9C,CAAAA,CACf,YAAA,CAAcE,EACd,QAAA,CAAUM,CAAAA,CACV,WAAYd,CAAAA,CACZ,OAAA,CAASG,CAAAA,CACT,gBAAA,CAAkBI,CAAAA,CAClB,UAAA,CAAYH,EACZ,UAAA,CAAYS,CAAAA,CACX,GAAGyC,EAAAA,CAEH,QAAA,CAAAD,EACH,CAAA,CAEF,GAAGzD,CACL,CAAA,CACA,cAAA,CAAgBmB,CAAAA,CAChB,gBAAiBvB,CAAAA,CACjB,YAAA,CAAcS,EACb,GAAGC,CAAAA,CACN,CAEJ,CACAZ,EAAAA,CAAS,WAAA,CAAc,UAAA,CAEvB,SAASyD,EAAAA,CAAI,CACX,SAAA,CAAAxD,CAAAA,CACA,QAAAY,CAAAA,CACA,UAAA,CAAAU,EACA,QAAA,CAAAC,CAAAA,CACA,YAAA,CAAAN,CAAAA,CACA,aAAA,CAAAF,CAAAA,CACA,gBAAAG,CAAAA,CACA,gBAAA,CAAAF,EACA,WAAA,CAAAK,CAAAA,CACA,YAAAD,GACF,CAAA,CAWG,CACD,GAAM,CAAE,SAAA,CAAA6C,EAAW,aAAA,CAAAC,CAAAA,CAAe,UAAAC,CAAU,CAAA,CAAIC,cAAa,CAEvDC,CAAAA,CACAzD,CAAAA,GAAY,OAAA,CAEXU,CAAAA,EAAcgD,wBAAAA,CAAyB,IAAI,IAAA,CAAKrD,CAAAA,CAAa,KAAO,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAGK,CAAU,CAAA,CAAI,CAAA,EAC5FC,CAAAA,EAAY+C,wBAAAA,CAAyB,IAAI,IAAA,CAAKrD,CAAAA,CAAa,KAAO,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAGM,CAAQ,CAAA,CAAI,CAAA,CAGzFX,CAAAA,GAAY,QAAA,CAEXU,GAAcgD,wBAAAA,CAAyB,IAAI,KAAKvD,CAAAA,CAAc,IAAA,CAAO,EAAG,CAAA,CAAG,CAAC,CAAA,CAAGO,CAAU,CAAA,CAAI,CAAA,EAC7FC,GAAY+C,wBAAAA,CAAyB,IAAI,KAAKvD,CAAAA,CAAc,IAAA,CAAO,EAAG,CAAA,CAAG,CAAC,CAAA,CAAGQ,CAAQ,CAAA,CAAI,CAAA,CAGvF,CAAC2C,CAAAA,CAGJK,CAAAA,CACA3D,IAAY,OAAA,CAEXU,CAAAA,EAAcgD,yBAAyB,IAAI,IAAA,CAAKrD,CAAAA,CAAa,EAAA,CAAK,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAGK,CAAU,EAAI,CAAA,EAC1FC,CAAAA,EAAY+C,yBAAyB,IAAI,IAAA,CAAKrD,CAAAA,CAAa,EAAA,CAAK,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAGM,CAAQ,EAAI,CAAA,CAGvFX,CAAAA,GAAY,SAEXU,CAAAA,EAAcgD,wBAAAA,CAAyB,IAAI,IAAA,CAAKvD,CAAAA,CAAc,IAAA,CAAO,EAAG,CAAA,CAAG,CAAC,EAAGO,CAAU,CAAA,CAAI,GAC7FC,CAAAA,EAAY+C,wBAAAA,CAAyB,IAAI,IAAA,CAAKvD,CAAAA,CAAc,IAAA,CAAO,EAAG,CAAA,CAAG,CAAC,EAAGQ,CAAQ,CAAA,CAAI,EAGvF,CAAC0C,CAAAA,CAGJO,CAAAA,CAA4B,CAAA,CAAA,WAAA,CAAY,IAAM,CAClD,GAAKN,CAAAA,CACL,CAAA,GAAItD,IAAY,OAAA,CAAS,CACvBM,EAAiBuD,CAAAA,GAAU,CACzB,IAAA,CAAMA,CAAAA,CAAK,IAAA,EAAQA,CAAAA,CAAK,GAAKA,CAAAA,CAAK,IAAA,CAAO,GACzC,EAAA,CAAIA,CAAAA,CAAK,IAAMA,CAAAA,CAAK,EAAA,CAAKA,CAAAA,CAAK,IAAA,CAAO,CAAA,CACvC,CAAA,CAAE,EACFpD,CAAAA,GAAc,IAAI,KAAKJ,CAAAA,CAAa,IAAA,EAAQA,EAAa,EAAA,CAAKA,CAAAA,CAAa,IAAA,CAAA,CAAO,CAAA,CAAG,CAAC,CAAC,EACvF,MACF,CACA,GAAIL,CAAAA,GAAY,QAAA,CAAU,CACxBI,CAAAA,CAAkByD,CAAAA,GAAU,CAAE,IAAA,CAAMA,CAAAA,CAAK,IAAA,CAAO,CAAE,CAAA,CAAE,CAAA,CACpDpD,IAAc,IAAI,IAAA,CAAKN,EAAc,IAAA,CAAO,CAAA,CAAG,CAAA,CAAG,CAAC,CAAC,CAAA,CACpD,MACF,CACAoD,CAAAA,CAAUD,CAAa,CAAA,CACvB7C,CAAAA,GAAc6C,CAAa,EAAA,CAC7B,CAAA,CAAG,CAACA,CAAAA,CAAeC,CAAAA,CAAWlD,CAAAA,CAAa,KAAMA,CAAAA,CAAa,EAAA,CAAIF,EAAc,IAAA,CAAMH,CAAAA,CAASS,EAAaH,CAAAA,CAAiBF,CAAgB,CAAC,CAAA,CAExI0D,CAAAA,CAAwB,CAAA,CAAA,WAAA,CAAY,IAAM,CAC9C,GAAKT,EACL,CAAA,GAAIrD,CAAAA,GAAY,QAAS,CACvBM,CAAAA,CAAiBuD,CAAAA,GAAU,CACzB,IAAA,CAAMA,CAAAA,CAAK,MAAQA,CAAAA,CAAK,EAAA,CAAKA,EAAK,IAAA,CAAO,CAAA,CAAA,CACzC,GAAIA,CAAAA,CAAK,EAAA,EAAMA,CAAAA,CAAK,EAAA,CAAKA,CAAAA,CAAK,IAAA,CAAO,EACvC,CAAA,CAAE,CAAA,CACFrD,MAAc,IAAI,IAAA,CAAKH,EAAa,IAAA,EAAQA,CAAAA,CAAa,EAAA,CAAKA,CAAAA,CAAa,IAAA,CAAA,CAAO,CAAA,CAAG,CAAC,CAAC,CAAA,CACvF,MACF,CACA,GAAIL,IAAY,QAAA,CAAU,CACxBI,CAAAA,CAAkByD,CAAAA,GAAU,CAAE,IAAA,CAAMA,EAAK,IAAA,CAAO,CAAE,EAAE,CAAA,CACpDrD,GAAAA,GAAc,IAAI,IAAA,CAAKL,CAAAA,CAAc,IAAA,CAAO,CAAA,CAAG,CAAA,CAAG,CAAC,CAAC,CAAA,CACpD,MACF,CACAoD,CAAAA,CAAUF,CAAS,EACnB7C,GAAAA,GAAc6C,CAAS,EAAA,CACzB,CAAA,CAAG,CAACE,CAAAA,CAAWF,EAAWhD,CAAAA,CAAa,IAAA,CAAMA,EAAa,EAAA,CAAIF,CAAAA,CAAc,KAAMH,CAAAA,CAASQ,GAAAA,CAAaF,CAAAA,CAAiBF,CAAgB,CAAC,CAAA,CAE1I,OACE2D,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAWjD,EAAAA,CAAG,mBAAA,CAAqB1B,CAAS,CAAA,CAC/C,QAAA,CAAA,CAAAkD,GAAAA,CAAC0B,CAAAA,CAAA,CACC,YAAA,CACEhE,IAAY,OAAA,CACR,CAAA,mBAAA,EAAsBK,EAAa,EAAA,CAAKA,CAAAA,CAAa,KAAO,CAAC,CAAA,MAAA,CAAA,CAC7DL,CAAAA,GAAY,QAAA,CACV,yBAAA,CACAiE,aAAAA,CAAcX,CAAa,CAAA,CAEnC,SAAA,CAAU,sEACV,QAAA,CAAUG,CAAAA,CACV,KAAK,IAAA,CACL,IAAA,CAAI,IAAA,CACJ,QAAA,CAAUA,CAAAA,CAAqB,MAAA,CAAY,GAC3C,IAAA,CAAK,QAAA,CACL,QAAS,IAAA,CACT,OAAA,CAASG,EAET,QAAA,CAAAtB,GAAAA,CAAC4B,WAAAA,CAAA,EAAY,CAAA,CACf,CAAA,CAEA5B,IAAC0B,CAAAA,CAAA,CACC,aACEhE,CAAAA,GAAY,OAAA,CACR,kBAAkBK,CAAAA,CAAa,EAAA,CAAKA,CAAAA,CAAa,IAAA,CAAO,CAAC,CAAA,MAAA,CAAA,CACzDL,IAAY,QAAA,CACV,qBAAA,CACAmE,UAAUd,CAAS,CAAA,CAE3B,UAAU,sEAAA,CACV,QAAA,CAAUM,CAAAA,CACV,IAAA,CAAK,IAAA,CACL,IAAA,CAAI,KACJ,QAAA,CAAUA,CAAAA,CAAiB,OAAY,EAAA,CACvC,IAAA,CAAK,SACL,OAAA,CAAS,IAAA,CACT,OAAA,CAASG,CAAAA,CAET,QAAA,CAAAxB,GAAAA,CAAC8B,aAAA,EAAa,CAAA,CAChB,GACF,CAEJ,CAEA,SAAStB,EAAAA,CAAa,CACpB,QAAA,CAAAI,CAAAA,CACA,gBAAA,CAAA5D,CAAAA,CACA,QAAAU,CAAAA,CACA,UAAA,CAAAC,EACA,YAAA,CAAAI,CAAAA,CACA,cAAAF,CAAAA,CACA,GAAGJ,CACL,CAAA,CAMkC,CAChC,OAAKT,EAEHgD,GAAAA,CAAC0B,CAAAA,CAAA,CACC,QAAA,CAAUhE,CAAAA,GAAY,QACtB,IAAA,CAAK,IAAA,CACL,IAAA,CAAK,QAAA,CACL,OAAA,CAAS,IAAA,CACT,QAAS,IAAM,CACTA,IAAY,MAAA,CAAQC,CAAAA,CAAW,QAAQ,CAAA,CAClCD,CAAAA,GAAY,QAAA,EAAUC,CAAAA,CAAW,OAAO,EACnD,EAEC,QAAA,CAAAD,CAAAA,GAAY,OACTkD,CAAAA,CACAlD,CAAAA,GAAY,SACVG,CAAAA,CAAc,IAAA,CACdE,CAAAA,CAAa,IAAA,CAAO,KAAA,CAAQA,CAAAA,CAAa,GACjD,CAAA,CAjB4BiC,GAAAA,CAAC,QAAM,GAAGvC,CAAAA,CAAQ,SAAAmD,CAAAA,CAAS,CAmB3D,CAEA,SAASE,EAAAA,CAAa,CACpB,UAAAhE,CAAAA,CACA,QAAA,CAAA8D,EACA,YAAA,CAAA7C,CAAAA,CACA,cAAAF,CAAAA,CACA,gBAAA,CAAAC,CAAAA,CACA,UAAA,CAAAM,CAAAA,CACA,QAAA,CAAAC,EACA,OAAA,CAAAX,CAAAA,CACA,WAAAC,CAAAA,CACA,UAAA,CAAAJ,EAAa,MAAA,CACb,GAAGE,CACL,CAAA,CAWmC,CACjC,OAAIC,IAAY,OAAA,CAEZsC,GAAAA,CAAC+B,GAAA,CACC,SAAA,CAAWjF,EACX,YAAA,CAAciB,CAAAA,CACd,QAAA,CAAUM,CAAAA,CACV,UAAA,CAAYd,CAAAA,CACZ,QAASG,CAAAA,CACT,gBAAA,CAAkBI,EAClB,UAAA,CAAYH,CAAAA,CACZ,WAAYS,CAAAA,CACX,GAAGX,CAAAA,CACN,CAAA,CAGAC,CAAAA,GAAY,QAAA,CAEZsC,IAACgC,EAAAA,CAAA,CACC,UAAWlF,CAAAA,CACX,aAAA,CAAee,EACf,QAAA,CAAUQ,CAAAA,CACV,UAAA,CAAYd,CAAAA,CACZ,OAAA,CAASG,CAAAA,CACT,WAAYC,CAAAA,CACZ,UAAA,CAAYS,EACX,GAAGX,CAAAA,CACN,EAIFuC,GAAAA,CAAC,OAAA,CAAA,CAAM,SAAA,CAAWxB,EAAAA,CAAG,QAAA,CAAU1B,CAAS,EAAI,GAAGW,CAAAA,CAC5C,SAAAmD,CAAAA,CACH,CAEJ,CAEA,SAASqB,EAAAA,CAAeC,CAAAA,CAAmBC,CAAAA,CAAuB,CAChE,GAAI,CAACD,CAAAA,CAAU,OAAO,OACtB,GAAI,KAAA,CAAM,QAAQA,CAAQ,CAAA,CAAG,OAAQA,CAAAA,CAAoB,IAAA,CAAME,CAAAA,EAAMA,EAAE,WAAA,EAAY,GAAMD,CAAI,CAAA,CAC7F,GAAI,OAAOD,CAAAA,EAAa,QAAA,EAAY,MAAA,GAAUA,CAAAA,CAAU,CACtD,IAAMG,EAAQH,CAAAA,CACd,OAAIG,EAAM,IAAA,EAAQA,CAAAA,CAAM,GAAWF,CAAAA,EAAQE,CAAAA,CAAM,IAAA,CAAK,WAAA,EAAY,EAAKF,CAAAA,EAAQE,EAAM,EAAA,CAAG,WAAA,GACpFA,CAAAA,CAAM,IAAA,CAAaA,EAAM,IAAA,CAAK,WAAA,EAAY,GAAMF,CAAAA,CAC7C,KACT,CACA,OAAQD,CAAAA,CAAkB,WAAA,KAAkBC,CAC9C,CAEA,SAASG,EAAAA,CAAgBJ,CAAAA,CAAmBC,CAAAA,CAAcI,CAAAA,CAA2B,CACnF,GAAI,CAACL,CAAAA,CAAU,OAAO,OACtB,GAAI,KAAA,CAAM,QAAQA,CAAQ,CAAA,CACxB,OAAQA,CAAAA,CAAoB,IAAA,CAAME,CAAAA,EAAMA,EAAE,QAAA,EAAS,GAAMG,GAAYH,CAAAA,CAAE,WAAA,KAAkBD,CAAI,CAAA,CAE/F,GAAI,OAAOD,CAAAA,EAAa,QAAA,EAAY,SAAUA,CAAAA,CAAU,CACtD,IAAMG,CAAAA,CAAQH,CAAAA,CACd,GAAIG,CAAAA,CAAM,IAAA,EAAQA,CAAAA,CAAM,EAAA,CAAI,CAC1B,IAAMG,EAAYH,CAAAA,CAAM,IAAA,CAAK,UAAS,CAAGI,CAAAA,CAAWJ,EAAM,IAAA,CAAK,WAAA,EAAY,CACrEK,CAAAA,CAAUL,CAAAA,CAAM,EAAA,CAAG,UAAS,CAAGM,CAAAA,CAASN,EAAM,EAAA,CAAG,WAAA,GACvD,OAAIF,CAAAA,GAASM,CAAAA,EAAYN,CAAAA,GAASQ,CAAAA,CAAeJ,CAAAA,EAAYC,GAAaD,CAAAA,EAAYG,CAAAA,CAClFP,IAASM,CAAAA,CAAiBF,CAAAA,EAAYC,EACtCL,CAAAA,GAASQ,CAAAA,CAAeJ,CAAAA,EAAYG,CAAAA,CACjCP,CAAAA,CAAOM,CAAAA,EAAYN,EAAOQ,CACnC,CACA,OAAIN,CAAAA,CAAM,IAAA,CAAaA,EAAM,IAAA,CAAK,QAAA,EAAS,GAAME,CAAAA,EAAYF,CAAAA,CAAM,IAAA,CAAK,aAAY,GAAMF,CAAAA,CACnF,KACT,CACA,OAAQD,EAAkB,QAAA,EAAS,GAAMK,CAAAA,EAAaL,CAAAA,CAAkB,WAAA,EAAY,GAAMC,CAC5F,CAEA,SAASJ,GAAmC,CAC1C,SAAA,CAAAjF,EACA,YAAA,CAAAiB,CAAAA,CACA,UAAA,CAAAK,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,WAAAV,CAAAA,CACA,OAAA,CAAAD,EACA,gBAAA,CAAAI,CAAAA,CACA,WAAAP,CAAAA,CAAa,MAAA,CACb,GAAGE,CACL,CAAA,CASmC,KAC3B,CAAE,QAAA,CAAAyE,IAAU,MAAA,CAAAU,CAAO,EAAI1B,YAAAA,EAAgB,CACzB,IAAI,IAAA,EAAK,CAAE,aAAY,KACrC2B,CAAAA,CAAa9E,EAAa,EAAA,CAAKA,CAAAA,CAAa,KAAO,CAAA,CAEnD+E,CAAAA,CAAc,CAACC,CAAAA,CAAqBZ,CAAAA,GAAiB,CACrD5E,IAAe,OAAA,CACjBqF,CAAAA,GAAS,IAAI,IAAA,CAAKT,CAAAA,CAAM,EAAG,CAAC,CAAA,CAAG,EAAC,CAAGY,CAAC,CAAA,EAEpCpF,EAAW,QAAQ,CAAA,CACnBG,EAAiB,CAAE,IAAA,CAAAqE,CAAK,CAAC,CAAA,EAE7B,EAEA,OACEnC,GAAAA,CAAC,OAAA,CAAA,CAAM,UAAWxB,EAAAA,CAAG,WAAA,CAAa1B,CAAS,CAAA,CAAI,GAAGW,EAChD,QAAA,CAAAuC,GAAAA,CAAC,OAAA,CAAA,CACC,QAAA,CAAAA,GAAAA,CAAC,IAAA,CAAA,CAAG,UAAU,4BAAA,CACX,QAAA,CAAA,KAAA,CAAM,KAAK,CAAE,MAAA,CAAQ6C,CAAW,CAAA,CAAG,CAACG,CAAAA,CAAGC,CAAAA,GAAM,CAC5C,IAAMd,EAAOpE,CAAAA,CAAa,IAAA,CAAOkF,EAC3BC,CAAAA,CAAY,IAAI,KAAKf,CAAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAC/BgB,CAAAA,CAAU,IAAI,KAAKhB,CAAAA,CAAM,EAAA,CAAI,EAAE,CAAA,CAC/BiB,CAAAA,CAAgBhF,GAAcgD,wBAAAA,CAAyB+B,CAAAA,CAAS/E,CAAU,CAAA,CAAI,CAAA,CAC9EiF,CAAAA,CAAahF,GAAY+C,wBAAAA,CAAyB8B,CAAAA,CAAW7E,CAAQ,CAAA,CAAI,CAAA,CACzEiF,EAAaF,CAAAA,EAAiBC,CAAAA,CAE9BE,CAAAA,CAAatB,GAAeC,GAAAA,CAAUC,CAAI,EAChD,OACEnC,GAAAA,CAAC,MACC,QAAA,CAAAA,GAAAA,CAAC0B,CAAAA,CAAA,CACC,SAAA,CAAU,QAAA,CACV,SAAUhE,CAAAA,GAAY,OAAA,CAAU4F,EAAa,MAAA,CAC7C,IAAA,CAAK,SACL,OAAA,CAASC,CAAAA,CAAa,SAAA,CAAY,iBAAA,CAClC,OAAA,CAAUR,CAAAA,EAAMD,EAAYC,CAAAA,CAAGZ,CAAI,EAElC,QAAA,CAAAA,CAAAA,CACH,GATOA,CAUT,CAEJ,CAAC,CAAA,CACH,CAAA,CACF,CAAA,CACF,CAEJ,CAEA,SAASH,GAAoC,CAC3C,SAAA,CAAAlF,EACA,aAAA,CAAAe,CAAAA,CACA,UAAA,CAAAO,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,WAAAV,CAAAA,CACA,OAAA,CAAAD,EACA,UAAA,CAAAH,CAAAA,CAAa,OACb,GAAGE,CACL,CAAA,CAQmC,CACjC,GAAM,CAAE,UAAAwD,CAAAA,CAAW,QAAA,CAAAiB,IAAU,MAAA,CAAAU,CAAO,EAAI1B,YAAAA,EAAgB,CAClDsC,CAAAA,CAAS,CAAC,SAAA,CAAW,UAAA,CAAY,QAAS,OAAA,CAAS,KAAA,CAAO,OAAQ,MAAA,CAAQ,QAAA,CAAU,YAAa,SAAA,CAAW,UAAA,CAAY,UAAU,CAAA,CAClIrB,CAAAA,CAAOtE,CAAAA,CAAc,KAErBiF,CAAAA,CAAc,CAACC,EAAqBE,CAAAA,GAAc,CAClD1F,IAAe,QAAA,CACjBqF,CAAAA,GAAS,IAAI,IAAA,CAAKT,CAAAA,CAAMc,CAAAA,CAAG,CAAC,CAAA,CAAG,GAAIF,CAAC,CAAA,EAEpCpF,EAAW,MAAM,CAAA,CACjBsD,CAAAA,CAAU,IAAI,IAAA,CAAKkB,CAAAA,CAAMc,CAAC,CAAC,CAAA,EAE/B,EAEA,OACEjD,GAAAA,CAAC,SAAM,SAAA,CAAWxB,EAAAA,CAAG,WAAA,CAAa1B,CAAS,CAAA,CAAI,GAAGW,EAChD,QAAA,CAAAuC,GAAAA,CAAC,SACC,QAAA,CAAAA,GAAAA,CAAC,MAAG,SAAA,CAAU,4BAAA,CACX,QAAA,CAAAwD,CAAAA,CAAO,GAAA,CAAI,CAACC,EAAOR,CAAAA,GAAM,KAClBS,CAAAA,CAAWtF,CAAAA,EAAcgD,yBAAyB,IAAI,IAAA,CAAKe,CAAAA,CAAMc,CAAAA,CAAG,EAAE,CAAA,CAAG7E,CAAU,CAAA,CAAI,CAAA,CACvFuF,EAAUtF,CAAAA,EAAY+C,wBAAAA,CAAyB,IAAI,IAAA,CAAKe,CAAAA,CAAMc,CAAAA,CAAG,CAAC,CAAA,CAAG5E,CAAQ,EAAI,CAAA,CACjFiF,CAAAA,CAAaI,GAAYC,CAAAA,CACRxB,IAAS,IAAI,IAAA,EAAK,CAAE,WAAA,EAAY,EAAKc,CAAAA,GAAM,IAAI,IAAA,EAAK,CAAE,UAAS,KAChFM,CAAAA,CAAajB,GAAgBJ,GAAAA,CAAUC,CAAAA,CAAMc,CAAC,EACpD,OACEjD,GAAAA,CAAC,MACC,QAAA,CAAAA,GAAAA,CAAC0B,EAAA,CACC,SAAA,CAAU,SACV,QAAA,CAAUhE,CAAAA,GAAY,QAAA,CAAW4F,CAAAA,CAAa,MAAA,CAC9C,IAAA,CAAK,SACL,OAAA,CAASC,CAAAA,CAAa,UAAY,iBAAA,CAClC,OAAA,CAAUR,GAAMD,CAAAA,CAAYC,CAAAA,CAAGE,CAAC,CAAA,CAE/B,QAAA,CAAAQ,CAAAA,CAAM,UAAU,CAAA,CAAG,CAAC,EACvB,CAAA,CAAA,CATOR,CAUT,CAEJ,CAAC,CAAA,CACH,CAAA,CACF,CAAA,CACF,CAEJ","file":"chunk-F77XVICY.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { differenceInCalendarDays } from \"date-fns\"\r\nimport {\r\n ChevronLeft,\r\n ChevronLeftIcon,\r\n ChevronRight,\r\n ChevronRightIcon,\r\n} from \"lucide-react\"\r\nimport {\r\n type DateRange,\r\n DayButton,\r\n DayPicker,\r\n type DayPickerProps,\r\n labelNext,\r\n labelPrevious,\r\n useDayPicker,\r\n} from \"react-day-picker\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { Button, buttonVariants } from \"./button\"\r\n\r\nexport type CalendarProps = DayPickerProps & {\r\n yearRange?: number\r\n showViewSwitcher?: boolean\r\n navView?: NavView\r\n defaultNavView?: NavView\r\n onNavViewChange?: (navView: NavView) => void\r\n minNavView?: NavView\r\n monthsClassName?: string\r\n monthCaptionClassName?: string\r\n weekdaysClassName?: string\r\n weekdayClassName?: string\r\n monthClassName?: string\r\n captionClassName?: string\r\n captionLabelClassName?: string\r\n buttonNextClassName?: string\r\n buttonPreviousClassName?: string\r\n navClassName?: string\r\n monthGridClassName?: string\r\n weekClassName?: string\r\n dayClassName?: string\r\n dayButtonClassName?: string\r\n rangeStartClassName?: string\r\n rangeEndClassName?: string\r\n selectedClassName?: string\r\n todayClassName?: string\r\n outsideClassName?: string\r\n disabledClassName?: string\r\n rangeMiddleClassName?: string\r\n hiddenClassName?: string\r\n}\r\n\r\nexport type NavView = \"days\" | \"months\" | \"years\"\r\n\r\nfunction Calendar({\r\n className,\r\n showOutsideDays = true,\r\n showViewSwitcher = true,\r\n yearRange = 12,\r\n numberOfMonths,\r\n components,\r\n navView: navViewProp,\r\n defaultNavView,\r\n onNavViewChange,\r\n minNavView = \"days\",\r\n weekStartsOn = 0,\r\n ...props\r\n}: CalendarProps) {\r\n const [navView, setNavView] = useControlledState({\r\n value: navViewProp,\r\n defaultValue: defaultNavView ?? \"days\",\r\n onChange: onNavViewChange,\r\n })\r\n\r\n React.useEffect(() => {\r\n if (minNavView === \"months\") setNavView(\"months\")\r\n if (minNavView === \"years\") setNavView(\"years\")\r\n }, [minNavView, setNavView])\r\n\r\n const [displayMonths, setDisplayMonths] = React.useState<{ year: number }>({\r\n year: new Date().getFullYear(),\r\n })\r\n\r\n const [displayYears, setDisplayYears] = React.useState<{ from: number; to: number }>(\r\n React.useMemo(() => {\r\n const currentYear = new Date().getFullYear()\r\n return {\r\n from: currentYear - Math.floor(yearRange / 2 - 1),\r\n to: currentYear + Math.ceil(yearRange / 2),\r\n }\r\n }, [yearRange]),\r\n )\r\n\r\n const { onNextClick, onPrevClick, startMonth, endMonth } = props\r\n\r\n const columnsDisplayed = navView === \"years\" || navView === \"months\" ? 1 : numberOfMonths\r\n\r\n const _monthsClassName = cn(\"relative flex [&>div:not(:last-of-type)]:mr-3\", props.monthsClassName)\r\n const _monthCaptionClassName = cn(\"relative flex items-center justify-center\", props.monthCaptionClassName)\r\n const _weekdaysClassName = cn(\"flex flex-row\", props.weekdaysClassName)\r\n const _weekdayClassName = cn(\"size-9 first:text-text-error-primary text-label-semibold-3 text-text-primary flex items-center justify-center\", props.weekdayClassName)\r\n const _monthClassName = cn(\"flex flex-col gap-2\", props.monthClassName)\r\n const _captionClassName = cn(\"relative flex items-center justify-center pt-xp-xs\", props.captionClassName)\r\n const _captionLabelClassName = cn(\"truncate text-body-regular-3 font-medium\", props.captionLabelClassName)\r\n const buttonNavClassName = buttonVariants({\r\n variant: \"secondary-accent\",\r\n className: \"absolute h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\r\n })\r\n const _buttonNextClassName = cn(buttonNavClassName, \"right-0\", props.buttonNextClassName)\r\n const _buttonPreviousClassName = cn(buttonNavClassName, \"left-0\", props.buttonPreviousClassName)\r\n const _navClassName = cn(\"flex items-start\", props.navClassName)\r\n const _monthGridClassName = cn(\"flex flex-col p-3 bg-bg-primary text-text-primary rounded-lg\", props.monthGridClassName)\r\n const _weekClassName = cn(\"flex w-max items-start\", props.weekClassName)\r\n const _dayClassName = cn(\"flex size-9 flex-1 items-center justify-center p-0 text-label-semibold-3\", props.dayClassName)\r\n const _dayButtonClassName = cn(\r\n buttonVariants({ variant: null, size: \"sm\" }),\r\n \"p-0\",\r\n props.dayButtonClassName,\r\n )\r\n const _dayButtonSelectedClassName = \"[&>button]:bg-gradient-buttons-gradient-blue [&>button]:text-fg-white\"\r\n const _rangeStartClassName = cn(\"day-range-start [&:not(.day-range-end)>button]:rounded-e-none\", props.rangeStartClassName)\r\n const _rangeEndClassName = cn(\"day-range-end [&:not(.day-range-start)>button]:rounded-s-none\", props.rangeEndClassName)\r\n const _rangeMiddleClassName = cn(\r\n \"[&>button]:bg-none [&>button]:bg-bg-primary-hover [&>button]:text-text-primary [&>button]:rounded-none [&[aria-selected=true][data-today=true]>button]:after:bg-utility-brand-500 [&[aria-selected=true][data-today=true]>button]:after:ring-utility-brand-100\",\r\n props.rangeMiddleClassName,\r\n )\r\n const _todayClassName = cn(\r\n \" [&>button]:relative\",\r\n \"[&>button]:after:content-[''] [&>button]:after:absolute [&>button]:after:bottom-1\",\r\n \"[&>button]:after:left-1/2 [&>button]:after:-translate-x-1/2\",\r\n \"[&>button]:after:size-1 [&>button]:after:rounded-full [&>button]:after:ring-2 [&>button]:after:ring-utility-brand-100 [&>button]:after:bg-utility-brand-500\",\r\n \"[&[aria-selected=true]>button]:after:bg-fg-white [&[aria-selected=true]>button]:after:ring-alpha-alpha-white-30\",\r\n props.todayClassName,\r\n )\r\n const _outsideClassName = cn(\"opacity-50\", props.outsideClassName)\r\n const _disabledClassName = cn(\"opacity-50\", props.disabledClassName)\r\n const _hiddenClassName = cn(\"invisible flex-1\", props.hiddenClassName)\r\n\r\n return (\r\n <DayPicker\r\n className={cn(\"p-xp-xl rounded-xl bg-bg-tertiary h-max\", className)}\r\n classNames={{\r\n months: _monthsClassName,\r\n month_caption: _monthCaptionClassName,\r\n weekdays: _weekdaysClassName,\r\n weekday: _weekdayClassName,\r\n month: _monthClassName,\r\n caption: _captionClassName,\r\n caption_label: _captionLabelClassName,\r\n button_next: _buttonNextClassName,\r\n button_previous: _buttonPreviousClassName,\r\n nav: _navClassName,\r\n month_grid: _monthGridClassName,\r\n week: _weekClassName,\r\n day: _dayClassName,\r\n day_button: _dayButtonClassName,\r\n selected: _dayButtonSelectedClassName,\r\n range_start: _rangeStartClassName,\r\n range_middle: _rangeMiddleClassName,\r\n range_end: _rangeEndClassName,\r\n today: _todayClassName,\r\n outside: _outsideClassName,\r\n disabled: _disabledClassName,\r\n hidden: _hiddenClassName,\r\n }}\r\n components={{\r\n Chevron: ({ orientation }) => {\r\n const Icon = orientation === \"left\" ? ChevronLeftIcon : ChevronRightIcon\r\n return <Icon className=\"h-4 w-4\" />\r\n },\r\n Nav: ({ className: navClassName }) => (\r\n <Nav\r\n className={navClassName}\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setDisplayYears={setDisplayYears}\r\n startMonth={startMonth}\r\n onNextClick={onNextClick}\r\n onPrevClick={onPrevClick}\r\n />\r\n ),\r\n CaptionLabel: (clProps) => (\r\n <CaptionLabel\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n navView={navView}\r\n setNavView={setNavView}\r\n showViewSwitcher={showViewSwitcher}\r\n {...clProps}\r\n />\r\n ),\r\n DayButton: (dayProps) => (\r\n <DayButton\r\n data-icon\r\n {...dayProps}\r\n />\r\n ),\r\n MonthGrid: ({ className: mgClassName, children, ...mgProps }) => (\r\n <CalendarGrid\r\n className={mgClassName}\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...mgProps}\r\n >\r\n {children}\r\n </CalendarGrid>\r\n ),\r\n ...components,\r\n }}\r\n numberOfMonths={columnsDisplayed}\r\n showOutsideDays={showOutsideDays}\r\n weekStartsOn={weekStartsOn}\r\n {...props}\r\n />\r\n )\r\n}\r\nCalendar.displayName = \"Calendar\"\r\n\r\nfunction Nav({\r\n className,\r\n navView,\r\n startMonth,\r\n endMonth,\r\n displayYears,\r\n displayMonths,\r\n setDisplayYears,\r\n setDisplayMonths,\r\n onPrevClick,\r\n onNextClick,\r\n}: {\r\n className?: string\r\n navView: NavView\r\n startMonth?: Date\r\n endMonth?: Date\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n setDisplayYears: React.Dispatch<React.SetStateAction<{ from: number; to: number }>>\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n onPrevClick?: (date: Date) => void\r\n onNextClick?: (date: Date) => void\r\n}) {\r\n const { nextMonth, previousMonth, goToMonth } = useDayPicker()\r\n\r\n const isPreviousDisabled = (() => {\r\n if (navView === \"years\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayMonths.year - 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayMonths.year - 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n return !previousMonth\r\n })()\r\n\r\n const isNextDisabled = (() => {\r\n if (navView === \"years\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayYears.to + 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayYears.to + 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayMonths.year + 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayMonths.year + 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n return !nextMonth\r\n })()\r\n\r\n const handlePreviousClick = React.useCallback(() => {\r\n if (!previousMonth) return\r\n if (navView === \"years\") {\r\n setDisplayYears((prev) => ({\r\n from: prev.from - (prev.to - prev.from + 1),\r\n to: prev.to - (prev.to - prev.from + 1),\r\n }))\r\n onPrevClick?.(new Date(displayYears.from - (displayYears.to - displayYears.from), 0, 1))\r\n return\r\n }\r\n if (navView === \"months\") {\r\n setDisplayMonths((prev) => ({ year: prev.year - 1 }))\r\n onPrevClick?.(new Date(displayMonths.year - 1, 0, 1))\r\n return\r\n }\r\n goToMonth(previousMonth)\r\n onPrevClick?.(previousMonth)\r\n }, [previousMonth, goToMonth, displayYears.from, displayYears.to, displayMonths.year, navView, onPrevClick, setDisplayYears, setDisplayMonths])\r\n\r\n const handleNextClick = React.useCallback(() => {\r\n if (!nextMonth) return\r\n if (navView === \"years\") {\r\n setDisplayYears((prev) => ({\r\n from: prev.from + (prev.to - prev.from + 1),\r\n to: prev.to + (prev.to - prev.from + 1),\r\n }))\r\n onNextClick?.(new Date(displayYears.from + (displayYears.to - displayYears.from), 0, 1))\r\n return\r\n }\r\n if (navView === \"months\") {\r\n setDisplayMonths((prev) => ({ year: prev.year + 1 }))\r\n onNextClick?.(new Date(displayMonths.year + 1, 0, 1))\r\n return\r\n }\r\n goToMonth(nextMonth)\r\n onNextClick?.(nextMonth)\r\n }, [goToMonth, nextMonth, displayYears.from, displayYears.to, displayMonths.year, navView, onNextClick, setDisplayYears, setDisplayMonths])\r\n\r\n return (\r\n <nav className={cn(\"flex items-center\", className)}>\r\n <Button\r\n aria-label={\r\n navView === \"years\"\r\n ? `Go to the previous ${displayYears.to - displayYears.from + 1} years`\r\n : navView === \"months\"\r\n ? \"Go to the previous year\"\r\n : labelPrevious(previousMonth)\r\n }\r\n className=\"absolute left-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10\"\r\n disabled={isPreviousDisabled}\r\n size=\"sm\"\r\n icon\r\n tabIndex={isPreviousDisabled ? undefined : -1}\r\n type=\"button\"\r\n variant={null}\r\n onClick={handlePreviousClick}\r\n >\r\n <ChevronLeft />\r\n </Button>\r\n\r\n <Button\r\n aria-label={\r\n navView === \"years\"\r\n ? `Go to the next ${displayYears.to - displayYears.from + 1} years`\r\n : navView === \"months\"\r\n ? \"Go to the next year\"\r\n : labelNext(nextMonth)\r\n }\r\n className=\"absolute right-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10\"\r\n disabled={isNextDisabled}\r\n size=\"sm\"\r\n icon\r\n tabIndex={isNextDisabled ? undefined : -1}\r\n type=\"button\"\r\n variant={null}\r\n onClick={handleNextClick}\r\n >\r\n <ChevronRight />\r\n </Button>\r\n </nav>\r\n )\r\n}\r\n\r\nfunction CaptionLabel({\r\n children,\r\n showViewSwitcher,\r\n navView,\r\n setNavView,\r\n displayYears,\r\n displayMonths,\r\n ...props\r\n}: {\r\n showViewSwitcher?: boolean\r\n navView: NavView\r\n setNavView: (navView: NavView) => void\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n} & React.ComponentProps<\"span\">) {\r\n if (!showViewSwitcher) return <span {...props}>{children}</span>\r\n return (\r\n <Button\r\n disabled={navView === \"years\"}\r\n size=\"sm\"\r\n type=\"button\"\r\n variant={null}\r\n onClick={() => {\r\n if (navView === \"days\") setNavView(\"months\")\r\n else if (navView === \"months\") setNavView(\"years\")\r\n }}\r\n >\r\n {navView === \"days\"\r\n ? children\r\n : navView === \"months\"\r\n ? displayMonths.year\r\n : displayYears.from + \" - \" + displayYears.to}\r\n </Button>\r\n )\r\n}\r\n\r\nfunction CalendarGrid({\r\n className,\r\n children,\r\n displayYears,\r\n displayMonths,\r\n setDisplayMonths,\r\n startMonth,\r\n endMonth,\r\n navView,\r\n setNavView,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n children: React.ReactNode\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n startMonth?: Date\r\n endMonth?: Date\r\n navView: NavView\r\n setNavView: (navView: NavView) => void\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n if (navView === \"years\") {\r\n return (\r\n <YearGrid\r\n className={className}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...props}\r\n />\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n <MonthGrid\r\n className={className}\r\n displayMonths={displayMonths}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...props}\r\n />\r\n )\r\n }\r\n return (\r\n <table className={cn(\"flex-1\", className)} {...props}>\r\n {children}\r\n </table>\r\n )\r\n}\r\n\r\nfunction isYearSelected(selected: unknown, year: number): boolean {\r\n if (!selected) return false\r\n if (Array.isArray(selected)) return (selected as Date[]).some((d) => d.getFullYear() === year)\r\n if (typeof selected === \"object\" && \"from\" in selected) {\r\n const range = selected as DateRange\r\n if (range.from && range.to) return year >= range.from.getFullYear() && year <= range.to.getFullYear()\r\n if (range.from) return range.from.getFullYear() === year\r\n return false\r\n }\r\n return (selected as Date).getFullYear() === year\r\n}\r\n\r\nfunction isMonthSelected(selected: unknown, year: number, monthIdx: number): boolean {\r\n if (!selected) return false\r\n if (Array.isArray(selected)) {\r\n return (selected as Date[]).some((d) => d.getMonth() === monthIdx && d.getFullYear() === year)\r\n }\r\n if (typeof selected === \"object\" && \"from\" in selected) {\r\n const range = selected as DateRange\r\n if (range.from && range.to) {\r\n const fromMonth = range.from.getMonth(), fromYear = range.from.getFullYear()\r\n const toMonth = range.to.getMonth(), toYear = range.to.getFullYear()\r\n if (year === fromYear && year === toYear) return monthIdx >= fromMonth && monthIdx <= toMonth\r\n if (year === fromYear) return monthIdx >= fromMonth\r\n if (year === toYear) return monthIdx <= toMonth\r\n return year > fromYear && year < toYear\r\n }\r\n if (range.from) return range.from.getMonth() === monthIdx && range.from.getFullYear() === year\r\n return false\r\n }\r\n return (selected as Date).getMonth() === monthIdx && (selected as Date).getFullYear() === year\r\n}\r\n\r\nfunction YearGrid<T extends DayPickerProps>({\r\n className,\r\n displayYears,\r\n startMonth,\r\n endMonth,\r\n setNavView,\r\n navView,\r\n setDisplayMonths,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n displayYears: { from: number; to: number }\r\n startMonth?: Date\r\n endMonth?: Date\r\n setNavView: (navView: NavView) => void\r\n navView: NavView\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n const { selected, select } = useDayPicker<T>()\r\n const currentYear = new Date().getFullYear()\r\n const totalYears = displayYears.to - displayYears.from + 1\r\n\r\n const handleClick = (e: React.MouseEvent, year: number) => {\r\n if (minNavView === \"years\") {\r\n select?.(new Date(year, 0, 1), {}, e)\r\n } else {\r\n setNavView(\"months\")\r\n setDisplayMonths({ year })\r\n }\r\n }\r\n\r\n return (\r\n <table className={cn(\"w-[312px]\", className)} {...props}>\r\n <tbody>\r\n <tr className=\"grid grid-cols-3 gap-xp-md\">\r\n {Array.from({ length: totalYears }, (_, i) => {\r\n const year = displayYears.from + i\r\n const yearStart = new Date(year, 0, 1)\r\n const yearEnd = new Date(year, 11, 31)\r\n const isBeforeStart = startMonth && differenceInCalendarDays(yearEnd, startMonth) < 0\r\n const isAfterEnd = endMonth && differenceInCalendarDays(yearStart, endMonth) > 0\r\n const isDisabled = isBeforeStart || isAfterEnd\r\n const isCurrentYear = year === currentYear\r\n const isSelected = isYearSelected(selected, year)\r\n return (\r\n <td key={year}>\r\n <Button\r\n className=\"w-full\"\r\n disabled={navView === \"years\" ? isDisabled : undefined}\r\n type=\"button\"\r\n variant={isSelected ? \"primary\" : \"tertiary-accent\"}\r\n onClick={(e) => handleClick(e, year)}\r\n >\r\n {year}\r\n </Button>\r\n </td>\r\n )\r\n })}\r\n </tr>\r\n </tbody>\r\n </table>\r\n )\r\n}\r\n\r\nfunction MonthGrid<T extends DayPickerProps>({\r\n className,\r\n displayMonths,\r\n startMonth,\r\n endMonth,\r\n setNavView,\r\n navView,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n displayMonths: { year: number }\r\n startMonth?: Date\r\n endMonth?: Date\r\n setNavView: (navView: NavView) => void\r\n navView: NavView\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n const { goToMonth, selected, select } = useDayPicker<T>()\r\n const months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\r\n const year = displayMonths.year\r\n\r\n const handleClick = (e: React.MouseEvent, i: number) => {\r\n if (minNavView === \"months\") {\r\n select?.(new Date(year, i, 1), {}, e)\r\n } else {\r\n setNavView(\"days\")\r\n goToMonth(new Date(year, i))\r\n }\r\n }\r\n\r\n return (\r\n <table className={cn(\"w-[312px]\", className)} {...props}>\r\n <tbody>\r\n <tr className=\"grid grid-cols-3 gap-xp-md\">\r\n {months.map((month, i) => {\r\n const isBefore = startMonth && differenceInCalendarDays(new Date(year, i, 31), startMonth) < 0\r\n const isAfter = endMonth && differenceInCalendarDays(new Date(year, i, 1), endMonth) > 0\r\n const isDisabled = isBefore || isAfter\r\n const isCurrentMonth = year === new Date().getFullYear() && i === new Date().getMonth()\r\n const isSelected = isMonthSelected(selected, year, i)\r\n return (\r\n <td key={i}>\r\n <Button\r\n className=\"w-full\"\r\n disabled={navView === \"months\" ? isDisabled : undefined}\r\n type=\"button\"\r\n variant={isSelected ? \"primary\" : \"tertiary-accent\"}\r\n onClick={(e) => handleClick(e, i)}\r\n >\r\n {month.substring(0, 3)}\r\n </Button>\r\n </td>\r\n )\r\n })}\r\n </tr>\r\n </tbody>\r\n </table>\r\n )\r\n}\r\n\r\nexport { Calendar }\r\n"]}
1
+ {"version":3,"sources":["../src/ui/calendar.tsx"],"names":["Calendar","className","showOutsideDays","showViewSwitcher","yearRange","numberOfMonths","components","navViewProp","defaultNavView","onNavViewChange","minNavView","weekStartsOn","props","navView","setNavView","useControlledState","displayMonths","setDisplayMonths","displayYears","setDisplayYears","currentYear","onNextClick","onPrevClick","startMonth","endMonth","columnsDisplayed","_monthsClassName","cn","_monthCaptionClassName","_weekdaysClassName","_weekdayClassName","_monthClassName","_captionClassName","_captionLabelClassName","buttonNavClassName","buttonVariants","_buttonNextClassName","_buttonPreviousClassName","_navClassName","_monthGridClassName","_weekClassName","_dayClassName","_dayButtonClassName","_dayButtonSelectedClassName","_rangeStartClassName","_rangeEndClassName","_rangeMiddleClassName","_todayClassName","_outsideClassName","_disabledClassName","_hiddenClassName","jsx","DayPicker","orientation","ChevronLeftIcon","ChevronRightIcon","navClassName","Nav","clProps","CaptionLabel","dayProps","DayButton","mgClassName","children","mgProps","CalendarGrid","nextMonth","previousMonth","goToMonth","useDayPicker","isPreviousDisabled","differenceInCalendarDays","isNextDisabled","handlePreviousClick","prev","handleNextClick","jsxs","Button","labelPrevious","ChevronLeft","labelNext","ChevronRight","YearGrid","MonthGrid","isYearSelected","selected","year","d","range","isMonthSelected","monthIdx","fromMonth","fromYear","toMonth","toYear","select","totalYears","handleClick","e","_","i","yearStart","yearEnd","isBeforeStart","isAfterEnd","isDisabled","isSelected","months","month","isBefore","isAfter"],"mappings":"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","file":"chunk-FIDOWSDH.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { differenceInCalendarDays } from \"date-fns\"\r\nimport {\r\n ChevronLeft,\r\n ChevronLeftIcon,\r\n ChevronRight,\r\n ChevronRightIcon,\r\n} from \"lucide-react\"\r\nimport {\r\n type DateRange,\r\n DayButton,\r\n DayPicker,\r\n type DayPickerProps,\r\n labelNext,\r\n labelPrevious,\r\n useDayPicker,\r\n} from \"react-day-picker\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { Button, buttonVariants } from \"./button\"\r\n\r\nexport type CalendarProps = DayPickerProps & {\r\n yearRange?: number\r\n showViewSwitcher?: boolean\r\n navView?: NavView\r\n defaultNavView?: NavView\r\n onNavViewChange?: (navView: NavView) => void\r\n minNavView?: NavView\r\n monthsClassName?: string\r\n monthCaptionClassName?: string\r\n weekdaysClassName?: string\r\n weekdayClassName?: string\r\n monthClassName?: string\r\n captionClassName?: string\r\n captionLabelClassName?: string\r\n buttonNextClassName?: string\r\n buttonPreviousClassName?: string\r\n navClassName?: string\r\n monthGridClassName?: string\r\n weekClassName?: string\r\n dayClassName?: string\r\n dayButtonClassName?: string\r\n rangeStartClassName?: string\r\n rangeEndClassName?: string\r\n selectedClassName?: string\r\n todayClassName?: string\r\n outsideClassName?: string\r\n disabledClassName?: string\r\n rangeMiddleClassName?: string\r\n hiddenClassName?: string\r\n}\r\n\r\nexport type NavView = \"days\" | \"months\" | \"years\"\r\n\r\nfunction Calendar({\r\n className,\r\n showOutsideDays = true,\r\n showViewSwitcher = true,\r\n yearRange = 12,\r\n numberOfMonths,\r\n components,\r\n navView: navViewProp,\r\n defaultNavView,\r\n onNavViewChange,\r\n minNavView = \"days\",\r\n weekStartsOn = 0,\r\n ...props\r\n}: CalendarProps) {\r\n const [navView, setNavView] = useControlledState({\r\n value: navViewProp,\r\n defaultValue: defaultNavView ?? \"days\",\r\n onChange: onNavViewChange,\r\n })\r\n\r\n React.useEffect(() => {\r\n if (minNavView === \"months\") setNavView(\"months\")\r\n if (minNavView === \"years\") setNavView(\"years\")\r\n }, [minNavView, setNavView])\r\n\r\n const [displayMonths, setDisplayMonths] = React.useState<{ year: number }>({\r\n year: new Date().getFullYear(),\r\n })\r\n\r\n const [displayYears, setDisplayYears] = React.useState<{ from: number; to: number }>(\r\n React.useMemo(() => {\r\n const currentYear = new Date().getFullYear()\r\n return {\r\n from: currentYear - Math.floor(yearRange / 2 - 1),\r\n to: currentYear + Math.ceil(yearRange / 2),\r\n }\r\n }, [yearRange]),\r\n )\r\n\r\n const { onNextClick, onPrevClick, startMonth, endMonth } = props\r\n\r\n const columnsDisplayed = navView === \"years\" || navView === \"months\" ? 1 : numberOfMonths\r\n\r\n const _monthsClassName = cn(\"relative flex [&>div:not(:last-of-type)]:mr-3\", props.monthsClassName)\r\n const _monthCaptionClassName = cn(\"relative flex items-center justify-center\", props.monthCaptionClassName)\r\n const _weekdaysClassName = cn(\"flex flex-row\", props.weekdaysClassName)\r\n const _weekdayClassName = cn(\"size-9 first:text-text-error-primary text-label-semibold-3 text-text-primary flex items-center justify-center\", props.weekdayClassName)\r\n const _monthClassName = cn(\"flex flex-col gap-2\", props.monthClassName)\r\n const _captionClassName = cn(\"relative flex items-center justify-center pt-xp-xs\", props.captionClassName)\r\n const _captionLabelClassName = cn(\"truncate text-body-regular-3 font-medium\", props.captionLabelClassName)\r\n const buttonNavClassName = buttonVariants({\r\n variant: \"secondary-accent\",\r\n className: \"absolute h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\",\r\n })\r\n const _buttonNextClassName = cn(buttonNavClassName, \"right-0\", props.buttonNextClassName)\r\n const _buttonPreviousClassName = cn(buttonNavClassName, \"left-0\", props.buttonPreviousClassName)\r\n const _navClassName = cn(\"flex items-start\", props.navClassName)\r\n const _monthGridClassName = cn(\"flex flex-col p-3 bg-bg-primary text-text-primary rounded-lg\", props.monthGridClassName)\r\n const _weekClassName = cn(\"flex w-max items-start\", props.weekClassName)\r\n const _dayClassName = cn(\"flex size-9 flex-1 items-center justify-center p-0 text-label-semibold-3\", props.dayClassName)\r\n const _dayButtonClassName = cn(\r\n buttonVariants({ variant: null, size: \"sm\" }),\r\n \"p-0\",\r\n props.dayButtonClassName,\r\n )\r\n const _dayButtonSelectedClassName = \"[&>button]:bg-gradient-buttons-gradient-blue [&>button]:text-fg-white\"\r\n const _rangeStartClassName = cn(\"day-range-start [&:not(.day-range-end)>button]:rounded-e-none\", props.rangeStartClassName)\r\n const _rangeEndClassName = cn(\"day-range-end [&:not(.day-range-start)>button]:rounded-s-none\", props.rangeEndClassName)\r\n const _rangeMiddleClassName = cn(\r\n \"[&>button]:bg-none [&>button]:bg-bg-primary-hover [&>button]:text-text-primary [&>button]:rounded-none [&[aria-selected=true][data-today=true]>button]:after:bg-utility-brand-500 [&[aria-selected=true][data-today=true]>button]:after:ring-utility-brand-100\",\r\n props.rangeMiddleClassName,\r\n )\r\n const _todayClassName = cn(\r\n \" [&>button]:relative\",\r\n \"[&>button]:after:content-[''] [&>button]:after:absolute [&>button]:after:bottom-1\",\r\n \"[&>button]:after:left-1/2 [&>button]:after:-translate-x-1/2\",\r\n \"[&>button]:after:size-1 [&>button]:after:rounded-full [&>button]:after:ring-2 [&>button]:after:ring-utility-brand-100 [&>button]:after:bg-utility-brand-500\",\r\n \"[&[aria-selected=true]>button]:after:bg-fg-white [&[aria-selected=true]>button]:after:ring-alpha-alpha-white-30\",\r\n props.todayClassName,\r\n )\r\n const _outsideClassName = cn(\"opacity-50\", props.outsideClassName)\r\n const _disabledClassName = cn(\"opacity-50\", props.disabledClassName)\r\n const _hiddenClassName = cn(\"invisible flex-1\", props.hiddenClassName)\r\n\r\n return (\r\n <DayPicker\r\n className={cn(\"p-xp-xl rounded-xl bg-bg-tertiary h-max\", className)}\r\n classNames={{\r\n months: _monthsClassName,\r\n month_caption: _monthCaptionClassName,\r\n weekdays: _weekdaysClassName,\r\n weekday: _weekdayClassName,\r\n month: _monthClassName,\r\n caption: _captionClassName,\r\n caption_label: _captionLabelClassName,\r\n button_next: _buttonNextClassName,\r\n button_previous: _buttonPreviousClassName,\r\n nav: _navClassName,\r\n month_grid: _monthGridClassName,\r\n week: _weekClassName,\r\n day: _dayClassName,\r\n day_button: _dayButtonClassName,\r\n selected: _dayButtonSelectedClassName,\r\n range_start: _rangeStartClassName,\r\n range_middle: _rangeMiddleClassName,\r\n range_end: _rangeEndClassName,\r\n today: _todayClassName,\r\n outside: _outsideClassName,\r\n disabled: _disabledClassName,\r\n hidden: _hiddenClassName,\r\n }}\r\n components={{\r\n Chevron: ({ orientation }) => {\r\n const Icon = orientation === \"left\" ? ChevronLeftIcon : ChevronRightIcon\r\n return <Icon className=\"h-4 w-4\" />\r\n },\r\n Nav: ({ className: navClassName }) => (\r\n <Nav\r\n className={navClassName}\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setDisplayYears={setDisplayYears}\r\n startMonth={startMonth}\r\n onNextClick={onNextClick}\r\n onPrevClick={onPrevClick}\r\n />\r\n ),\r\n CaptionLabel: (clProps) => (\r\n <CaptionLabel\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n navView={navView}\r\n setNavView={setNavView}\r\n showViewSwitcher={showViewSwitcher}\r\n {...clProps}\r\n />\r\n ),\r\n DayButton: (dayProps) => (\r\n <DayButton\r\n data-icon\r\n {...dayProps}\r\n />\r\n ),\r\n MonthGrid: ({ className: mgClassName, children, ...mgProps }) => (\r\n <CalendarGrid\r\n className={mgClassName}\r\n displayMonths={displayMonths}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...mgProps}\r\n >\r\n {children}\r\n </CalendarGrid>\r\n ),\r\n ...components,\r\n }}\r\n numberOfMonths={columnsDisplayed}\r\n showOutsideDays={showOutsideDays}\r\n weekStartsOn={weekStartsOn}\r\n {...props}\r\n />\r\n )\r\n}\r\nCalendar.displayName = \"Calendar\"\r\n\r\nfunction Nav({\r\n className,\r\n navView,\r\n startMonth,\r\n endMonth,\r\n displayYears,\r\n displayMonths,\r\n setDisplayYears,\r\n setDisplayMonths,\r\n onPrevClick,\r\n onNextClick,\r\n}: {\r\n className?: string\r\n navView: NavView\r\n startMonth?: Date\r\n endMonth?: Date\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n setDisplayYears: React.Dispatch<React.SetStateAction<{ from: number; to: number }>>\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n onPrevClick?: (date: Date) => void\r\n onNextClick?: (date: Date) => void\r\n}) {\r\n const { nextMonth, previousMonth, goToMonth } = useDayPicker()\r\n\r\n const isPreviousDisabled = (() => {\r\n if (navView === \"years\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayYears.from - 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayMonths.year - 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayMonths.year - 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n return !previousMonth\r\n })()\r\n\r\n const isNextDisabled = (() => {\r\n if (navView === \"years\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayYears.to + 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayYears.to + 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n (startMonth && differenceInCalendarDays(new Date(displayMonths.year + 1, 0, 1), startMonth) < 0) ||\r\n (endMonth && differenceInCalendarDays(new Date(displayMonths.year + 1, 0, 1), endMonth) > 0)\r\n )\r\n }\r\n return !nextMonth\r\n })()\r\n\r\n const handlePreviousClick = React.useCallback(() => {\r\n if (!previousMonth) return\r\n if (navView === \"years\") {\r\n setDisplayYears((prev) => ({\r\n from: prev.from - (prev.to - prev.from + 1),\r\n to: prev.to - (prev.to - prev.from + 1),\r\n }))\r\n onPrevClick?.(new Date(displayYears.from - (displayYears.to - displayYears.from), 0, 1))\r\n return\r\n }\r\n if (navView === \"months\") {\r\n setDisplayMonths((prev) => ({ year: prev.year - 1 }))\r\n onPrevClick?.(new Date(displayMonths.year - 1, 0, 1))\r\n return\r\n }\r\n goToMonth(previousMonth)\r\n onPrevClick?.(previousMonth)\r\n }, [previousMonth, goToMonth, displayYears.from, displayYears.to, displayMonths.year, navView, onPrevClick, setDisplayYears, setDisplayMonths])\r\n\r\n const handleNextClick = React.useCallback(() => {\r\n if (!nextMonth) return\r\n if (navView === \"years\") {\r\n setDisplayYears((prev) => ({\r\n from: prev.from + (prev.to - prev.from + 1),\r\n to: prev.to + (prev.to - prev.from + 1),\r\n }))\r\n onNextClick?.(new Date(displayYears.from + (displayYears.to - displayYears.from), 0, 1))\r\n return\r\n }\r\n if (navView === \"months\") {\r\n setDisplayMonths((prev) => ({ year: prev.year + 1 }))\r\n onNextClick?.(new Date(displayMonths.year + 1, 0, 1))\r\n return\r\n }\r\n goToMonth(nextMonth)\r\n onNextClick?.(nextMonth)\r\n }, [goToMonth, nextMonth, displayYears.from, displayYears.to, displayMonths.year, navView, onNextClick, setDisplayYears, setDisplayMonths])\r\n\r\n return (\r\n <nav className={cn(\"flex items-center\", className)}>\r\n <Button\r\n aria-label={\r\n navView === \"years\"\r\n ? `Go to the previous ${displayYears.to - displayYears.from + 1} years`\r\n : navView === \"months\"\r\n ? \"Go to the previous year\"\r\n : labelPrevious(previousMonth)\r\n }\r\n className=\"absolute left-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10\"\r\n disabled={isPreviousDisabled}\r\n size=\"sm\"\r\n icon\r\n tabIndex={isPreviousDisabled ? undefined : -1}\r\n type=\"button\"\r\n variant={null}\r\n onClick={handlePreviousClick}\r\n >\r\n <ChevronLeft />\r\n </Button>\r\n\r\n <Button\r\n aria-label={\r\n navView === \"years\"\r\n ? `Go to the next ${displayYears.to - displayYears.from + 1} years`\r\n : navView === \"months\"\r\n ? \"Go to the next year\"\r\n : labelNext(nextMonth)\r\n }\r\n className=\"absolute right-3 top-2.5 data-[icon]:size-4 [&_svg]:size-4 px-0 z-10\"\r\n disabled={isNextDisabled}\r\n size=\"sm\"\r\n icon\r\n tabIndex={isNextDisabled ? undefined : -1}\r\n type=\"button\"\r\n variant={null}\r\n onClick={handleNextClick}\r\n >\r\n <ChevronRight />\r\n </Button>\r\n </nav>\r\n )\r\n}\r\n\r\nfunction CaptionLabel({\r\n children,\r\n showViewSwitcher,\r\n navView,\r\n setNavView,\r\n displayYears,\r\n displayMonths,\r\n ...props\r\n}: {\r\n showViewSwitcher?: boolean\r\n navView: NavView\r\n setNavView: (navView: NavView) => void\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n} & React.ComponentProps<\"span\">) {\r\n if (!showViewSwitcher) return <span {...props}>{children}</span>\r\n return (\r\n <Button\r\n disabled={navView === \"years\"}\r\n size=\"sm\"\r\n type=\"button\"\r\n variant={null}\r\n onClick={() => {\r\n if (navView === \"days\") setNavView(\"months\")\r\n else if (navView === \"months\") setNavView(\"years\")\r\n }}\r\n >\r\n {navView === \"days\"\r\n ? children\r\n : navView === \"months\"\r\n ? displayMonths.year\r\n : displayYears.from + \" - \" + displayYears.to}\r\n </Button>\r\n )\r\n}\r\n\r\nfunction CalendarGrid({\r\n className,\r\n children,\r\n displayYears,\r\n displayMonths,\r\n setDisplayMonths,\r\n startMonth,\r\n endMonth,\r\n navView,\r\n setNavView,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n children: React.ReactNode\r\n displayYears: { from: number; to: number }\r\n displayMonths: { year: number }\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n startMonth?: Date\r\n endMonth?: Date\r\n navView: NavView\r\n setNavView: (navView: NavView) => void\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n if (navView === \"years\") {\r\n return (\r\n <YearGrid\r\n className={className}\r\n displayYears={displayYears}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setDisplayMonths={setDisplayMonths}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...props}\r\n />\r\n )\r\n }\r\n if (navView === \"months\") {\r\n return (\r\n <MonthGrid\r\n className={className}\r\n displayMonths={displayMonths}\r\n endMonth={endMonth}\r\n minNavView={minNavView}\r\n navView={navView}\r\n setNavView={setNavView}\r\n startMonth={startMonth}\r\n {...props}\r\n />\r\n )\r\n }\r\n return (\r\n <table className={cn(\"flex-1\", className)} {...props}>\r\n {children}\r\n </table>\r\n )\r\n}\r\n\r\nfunction isYearSelected(selected: unknown, year: number): boolean {\r\n if (!selected) return false\r\n if (Array.isArray(selected)) return (selected as Date[]).some((d) => d.getFullYear() === year)\r\n if (typeof selected === \"object\" && \"from\" in selected) {\r\n const range = selected as DateRange\r\n if (range.from && range.to) return year >= range.from.getFullYear() && year <= range.to.getFullYear()\r\n if (range.from) return range.from.getFullYear() === year\r\n return false\r\n }\r\n return (selected as Date).getFullYear() === year\r\n}\r\n\r\nfunction isMonthSelected(selected: unknown, year: number, monthIdx: number): boolean {\r\n if (!selected) return false\r\n if (Array.isArray(selected)) {\r\n return (selected as Date[]).some((d) => d.getMonth() === monthIdx && d.getFullYear() === year)\r\n }\r\n if (typeof selected === \"object\" && \"from\" in selected) {\r\n const range = selected as DateRange\r\n if (range.from && range.to) {\r\n const fromMonth = range.from.getMonth(), fromYear = range.from.getFullYear()\r\n const toMonth = range.to.getMonth(), toYear = range.to.getFullYear()\r\n if (year === fromYear && year === toYear) return monthIdx >= fromMonth && monthIdx <= toMonth\r\n if (year === fromYear) return monthIdx >= fromMonth\r\n if (year === toYear) return monthIdx <= toMonth\r\n return year > fromYear && year < toYear\r\n }\r\n if (range.from) return range.from.getMonth() === monthIdx && range.from.getFullYear() === year\r\n return false\r\n }\r\n return (selected as Date).getMonth() === monthIdx && (selected as Date).getFullYear() === year\r\n}\r\n\r\nfunction YearGrid<T extends DayPickerProps>({\r\n className,\r\n displayYears,\r\n startMonth,\r\n endMonth,\r\n setNavView,\r\n navView,\r\n setDisplayMonths,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n displayYears: { from: number; to: number }\r\n startMonth?: Date\r\n endMonth?: Date\r\n setNavView: (navView: NavView) => void\r\n navView: NavView\r\n setDisplayMonths: React.Dispatch<React.SetStateAction<{ year: number }>>\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n const { selected, select } = useDayPicker<T>()\r\n const currentYear = new Date().getFullYear()\r\n const totalYears = displayYears.to - displayYears.from + 1\r\n\r\n const handleClick = (e: React.MouseEvent, year: number) => {\r\n if (minNavView === \"years\") {\r\n select?.(new Date(year, 0, 1), {}, e)\r\n } else {\r\n setNavView(\"months\")\r\n setDisplayMonths({ year })\r\n }\r\n }\r\n\r\n return (\r\n <table className={cn(\"w-[312px]\", className)} {...props}>\r\n <tbody>\r\n <tr className=\"grid grid-cols-3 gap-xp-md\">\r\n {Array.from({ length: totalYears }, (_, i) => {\r\n const year = displayYears.from + i\r\n const yearStart = new Date(year, 0, 1)\r\n const yearEnd = new Date(year, 11, 31)\r\n const isBeforeStart = startMonth && differenceInCalendarDays(yearEnd, startMonth) < 0\r\n const isAfterEnd = endMonth && differenceInCalendarDays(yearStart, endMonth) > 0\r\n const isDisabled = isBeforeStart || isAfterEnd\r\n const isCurrentYear = year === currentYear\r\n const isSelected = isYearSelected(selected, year)\r\n return (\r\n <td key={year}>\r\n <Button\r\n className=\"w-full\"\r\n disabled={navView === \"years\" ? isDisabled : undefined}\r\n type=\"button\"\r\n variant={isSelected ? \"primary\" : \"tertiary-accent\"}\r\n onClick={(e) => handleClick(e, year)}\r\n >\r\n {year}\r\n </Button>\r\n </td>\r\n )\r\n })}\r\n </tr>\r\n </tbody>\r\n </table>\r\n )\r\n}\r\n\r\nfunction MonthGrid<T extends DayPickerProps>({\r\n className,\r\n displayMonths,\r\n startMonth,\r\n endMonth,\r\n setNavView,\r\n navView,\r\n minNavView = \"days\",\r\n ...props\r\n}: {\r\n className?: string\r\n displayMonths: { year: number }\r\n startMonth?: Date\r\n endMonth?: Date\r\n setNavView: (navView: NavView) => void\r\n navView: NavView\r\n minNavView?: NavView\r\n} & React.ComponentProps<\"table\">) {\r\n const { goToMonth, selected, select } = useDayPicker<T>()\r\n const months = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"]\r\n const year = displayMonths.year\r\n\r\n const handleClick = (e: React.MouseEvent, i: number) => {\r\n if (minNavView === \"months\") {\r\n select?.(new Date(year, i, 1), {}, e)\r\n } else {\r\n setNavView(\"days\")\r\n goToMonth(new Date(year, i))\r\n }\r\n }\r\n\r\n return (\r\n <table className={cn(\"w-[312px]\", className)} {...props}>\r\n <tbody>\r\n <tr className=\"grid grid-cols-3 gap-xp-md\">\r\n {months.map((month, i) => {\r\n const isBefore = startMonth && differenceInCalendarDays(new Date(year, i, 31), startMonth) < 0\r\n const isAfter = endMonth && differenceInCalendarDays(new Date(year, i, 1), endMonth) > 0\r\n const isDisabled = isBefore || isAfter\r\n const isCurrentMonth = year === new Date().getFullYear() && i === new Date().getMonth()\r\n const isSelected = isMonthSelected(selected, year, i)\r\n return (\r\n <td key={i}>\r\n <Button\r\n className=\"w-full\"\r\n disabled={navView === \"months\" ? isDisabled : undefined}\r\n type=\"button\"\r\n variant={isSelected ? \"primary\" : \"tertiary-accent\"}\r\n onClick={(e) => handleClick(e, i)}\r\n >\r\n {month.substring(0, 3)}\r\n </Button>\r\n </td>\r\n )\r\n })}\r\n </tr>\r\n </tbody>\r\n </table>\r\n )\r\n}\r\n\r\nexport { Calendar }\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {a as a$1,b as b$1,m,e,q,s,w}from'./chunk-SVNG3RLD.js';import {a}from'./chunk-Y6TKCAAJ.js';import*as t from'react';import*as g from'react-phone-number-input';import D from'react-phone-number-input/flags';import {cn}from'@xploreu/lib/cn';import'@base-ui/react/combobox';import {ChevronsUpDownIcon}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';var P=t.createContext({size:"md"}),A={"3xs":"h-3 w-4.5","2xs":"h-3.5 w-5",xs:"h-3.5 w-5",sm:"h-4 w-6",md:"h-4 w-6",lg:"h-4 w-6",xl:"h-4.5 w-6.5"},W={"3xs":"size-3","2xs":"size-3",xs:"size-3.5",sm:"size-3.5",md:"size-3.5",lg:"size-4",xl:"size-4"},j={"3xs":"text-label-medium-4","2xs":"text-label-medium-4",xs:"text-body-medium-3",sm:"text-body-medium-3",md:"text-body-medium-3",lg:"text-body-medium-2",xl:"text-body-medium-2"},R=({country:s,countryName:o,className:r})=>{let l=s?D[s]:void 0;return jsx("span",{className:cn("flex h-4 w-6 shrink-0 overflow-hidden rounded-sm bg-fg-quaternary/20 [&_svg:not([class*='size-'])]:size-full",r),children:l&&jsx(l,{title:o})})},b=44,H=288,L=6;function J({disabled:s$1,value:o,options:r,onChange:l}){let{size:u="md"}=t.useContext(P),[C,c]=t.useState(false),[m$1,i]=t.useState(""),[N,z]=t.useState(0),v=t.useRef(null),h=t.useMemo(()=>r.filter(e=>!!e.value),[r]),p=t.useMemo(()=>{let e=m$1.trim().toLowerCase();return e?h.filter(a=>{let x=g.getCountryCallingCode(a.value);return a.label.toLowerCase().includes(e)||a.value.toLowerCase().includes(e)||x.includes(e.replace(/^\+/,""))}):h},[m$1,h]),_=t.useMemo(()=>h.find(e=>e.value===o)??null,[h,o]);t.useEffect(()=>{z(0),v.current&&(v.current.scrollTop=0);},[m$1]);let U=Math.min(p.length*b,H),I=t.useMemo(()=>{let e=Math.floor(N/b),a=Math.max(0,e-L),x=Math.ceil(H/b),w=Math.min(p.length,e+x+L);return {startIndex:a,endIndex:w,items:p.slice(a,w)}},[p,N]),q$1=I.startIndex*b,Y=Math.max(0,(p.length-I.endIndex)*b),B=t.useCallback(e=>{e?.value&&(l(e.value),i(""),c(false));},[l]);return jsxs(a$1,{behavior:"default",disabled:s$1,inputValue:m$1,items:p,open:C,value:_,virtualized:true,filter:null,isItemEqualToValue:(e,a)=>e.value===a.value,openOnInputClick:false,onValueChange:B,onInputValueChange:i,onOpenChange:e=>{c(e),e||i("");},children:[jsx(b$1,{render:jsxs("button",{type:"button",className:cn(a({size:u}),"w-auto shrink-0 justify-between gap-1.5 rounded-r-none border-r-0","hover:bg-bg-primary-hover focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand","disabled:pointer-events-none disabled:opacity-50"),disabled:s$1,children:[jsxs("span",{className:"flex items-center gap-1.5 overflow-hidden",children:[jsx(R,{country:o,countryName:o,className:A[u??"md"]}),o&&jsx("span",{className:cn("text-text-primary",j[u??"md"]??"text-body-medium-3"),children:o})]}),jsx(ChevronsUpDownIcon,{className:cn("shrink-0 text-fg-quaternary",W[u??"md"]??"size-3.5")})]})}),jsxs(m,{className:"w-72",children:[jsx(e,{placeholder:"Search country...","aria-label":"Search country"}),jsx(q,{status:p.length===0?"empty":null}),jsx(s,{ref:v,className:"relative gap-0",style:{height:U},onScroll:e=>z(e.currentTarget.scrollTop),children:jsx("div",{className:"flex w-full shrink-0 flex-col",style:{paddingTop:q$1,paddingBottom:Y},children:I.items.map((e,a)=>{let x=I.startIndex+a;return jsx(w,{index:x,value:e,children:jsxs("div",{className:"flex items-center gap-2 w-full min-w-0",children:[jsx(R,{country:e.value,countryName:e.label}),jsx("span",{className:"flex-1 text-sm truncate",children:e.label}),jsxs("span",{className:"text-sm text-text-tertiary shrink-0",children:["+",g.getCountryCallingCode(e.value)]})]})},e.value)})})})]})]})}var F=t.forwardRef(({className:s,onChange:o,size:r,...l},u)=>{let C=t.useContext(P),c=r??C.size??"md",m=t.useCallback(i=>{i.currentTarget.value==="+"&&(i.currentTarget.value=""),o?.(i);},[o]);return jsx("input",{className:cn(a({size:c}),"flex-1 rounded-l-none focus-visible:z-10",s),ref:u,type:"tel",onChange:m,...l})});F.displayName="InputComponent";var K=t.forwardRef(({className:s,onChange:o,value:r,size:l="md",...u},C)=>jsx(P.Provider,{value:{size:l},children:jsx(g.default,{ref:C,className:cn("flex w-full min-w-0 items-center",s),flagComponent:R,countrySelectComponent:J,inputComponent:F,smartCaret:false,value:r||void 0,onChange:c=>o?.(c||""),...u})}));K.displayName="PhoneInput";export{K as a};//# sourceMappingURL=chunk-I7XV55MM.js.map
2
+ //# sourceMappingURL=chunk-I7XV55MM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/composites/phone-input.tsx"],"names":["PhoneInputContext","phoneInputFlagSizes","phoneInputChevronSizes","phoneInputCountryCodeSizes","FlagComponent","country","countryName","className","Flag","flags","jsx","cn","COUNTRY_ROW_HEIGHT","COUNTRY_LIST_HEIGHT","COUNTRY_OVERSCAN","CountrySelect","disabled","selectedCountry","countryList","onChange","size","open","setOpen","inputValue","setInputValue","scrollTop","setScrollTop","listRef","items","item","filteredItems","search","callingCode","value","listHeight","virtualRange","visibleStartIndex","startIndex","visibleCount","endIndex","paddingTop","paddingBottom","handleValueChange","jsxs","Combobox","a","b","ComboboxTrigger","inputVariants","ChevronsUpDownIcon","ComboboxPopup","ComboboxInput","ComboboxStatus","ComboboxList","event","virtualIndex","index","ComboboxItem","InputComponent","sizeProp","props","ref","context","handleChange","PhoneInput"],"mappings":"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","file":"chunk-I7XV55MM.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport * as RPNInput from \"react-phone-number-input\"\r\nimport flags from \"react-phone-number-input/flags\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react/combobox\"\r\nimport {\r\n Combobox,\r\n ComboboxInput,\r\n ComboboxItem,\r\n ComboboxList,\r\n ComboboxPopup,\r\n ComboboxStatus,\r\n ComboboxTrigger,\r\n} from \"../ui/combobox\"\r\nimport { inputVariants } from \"../ui/input\"\r\nimport { ChevronsUpDownIcon } from \"lucide-react\"\r\nimport type { VariantProps } from \"class-variance-authority\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// Types & Context\r\n// ---------------------------------------------------------------------------\r\n\r\ntype PhoneInputSize = VariantProps<typeof inputVariants>[\"size\"]\r\n\r\nconst PhoneInputContext = React.createContext<{ size?: PhoneInputSize }>({\r\n size: \"md\",\r\n})\r\n\r\ntype PhoneInputProps = Omit<\r\n React.ComponentProps<\"input\">,\r\n \"onChange\" | \"value\" | \"ref\" | \"size\"\r\n> &\r\n Omit<RPNInput.Props<typeof RPNInput.default>, \"onChange\" | \"size\"> & {\r\n onChange?: (value: RPNInput.Value) => void\r\n size?: PhoneInputSize\r\n }\r\n\r\nconst phoneInputFlagSizes: Record<string, string> = {\r\n \"3xs\": \"h-3 w-4.5\",\r\n \"2xs\": \"h-3.5 w-5\",\r\n xs: \"h-3.5 w-5\",\r\n sm: \"h-4 w-6\",\r\n md: \"h-4 w-6\",\r\n lg: \"h-4 w-6\",\r\n xl: \"h-4.5 w-6.5\",\r\n}\r\n\r\nconst phoneInputChevronSizes: Record<string, string> = {\r\n \"3xs\": \"size-3\",\r\n \"2xs\": \"size-3\",\r\n xs: \"size-3.5\",\r\n sm: \"size-3.5\",\r\n md: \"size-3.5\",\r\n lg: \"size-4\",\r\n xl: \"size-4\",\r\n}\r\n\r\nconst phoneInputCountryCodeSizes: Record<string, string> = {\r\n \"3xs\": \"text-label-medium-4\",\r\n \"2xs\": \"text-label-medium-4\",\r\n xs: \"text-body-medium-3\",\r\n sm: \"text-body-medium-3\",\r\n md: \"text-body-medium-3\",\r\n lg: \"text-body-medium-2\",\r\n xl: \"text-body-medium-2\",\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Flag\r\n// ---------------------------------------------------------------------------\r\n\r\ntype FlagComponentProps = RPNInput.FlagProps & {\r\n className?: string\r\n}\r\n\r\nconst FlagComponent = ({ country, countryName, className }: FlagComponentProps) => {\r\n const Flag = country ? flags[country] : undefined\r\n\r\n return (\r\n <span\r\n className={cn(\r\n \"flex h-4 w-6 shrink-0 overflow-hidden rounded-sm bg-fg-quaternary/20 [&_svg:not([class*='size-'])]:size-full\",\r\n className\r\n )}\r\n >\r\n {Flag && <Flag title={countryName} />}\r\n </span>\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Country Select — uses base-ui Combobox\r\n// ---------------------------------------------------------------------------\r\n\r\ntype CountryEntry = { label: string; value: RPNInput.Country | undefined }\r\ntype CountryItem = { label: string; value: RPNInput.Country }\r\n\r\nconst COUNTRY_ROW_HEIGHT = 44\r\nconst COUNTRY_LIST_HEIGHT = 288\r\nconst COUNTRY_OVERSCAN = 6\r\n\r\ntype CountrySelectProps = {\r\n disabled?: boolean\r\n value: RPNInput.Country\r\n options: CountryEntry[]\r\n onChange: (country: RPNInput.Country) => void\r\n}\r\n\r\nfunction CountrySelect({\r\n disabled,\r\n value: selectedCountry,\r\n options: countryList,\r\n onChange,\r\n}: CountrySelectProps) {\r\n const { size = \"md\" } = React.useContext(PhoneInputContext)\r\n const [open, setOpen] = React.useState(false)\r\n const [inputValue, setInputValue] = React.useState(\"\")\r\n const [scrollTop, setScrollTop] = React.useState(0)\r\n const listRef = React.useRef<HTMLDivElement>(null)\r\n\r\n const items = React.useMemo(\r\n () => countryList.filter((item): item is CountryItem => Boolean(item.value)),\r\n [countryList]\r\n )\r\n\r\n const filteredItems = React.useMemo(() => {\r\n const search = inputValue.trim().toLowerCase()\r\n\r\n if (!search) return items\r\n\r\n return items.filter((item) => {\r\n const callingCode = RPNInput.getCountryCallingCode(item.value)\r\n\r\n return item.label.toLowerCase().includes(search)\r\n || item.value.toLowerCase().includes(search)\r\n || callingCode.includes(search.replace(/^\\+/, \"\"))\r\n })\r\n }, [inputValue, items])\r\n\r\n const value = React.useMemo(\r\n () => items.find((item) => item.value === selectedCountry) ?? null,\r\n [items, selectedCountry]\r\n )\r\n\r\n React.useEffect(() => {\r\n setScrollTop(0)\r\n if (listRef.current) listRef.current.scrollTop = 0\r\n }, [inputValue])\r\n\r\n const listHeight = Math.min(\r\n filteredItems.length * COUNTRY_ROW_HEIGHT,\r\n COUNTRY_LIST_HEIGHT\r\n )\r\n\r\n const virtualRange = React.useMemo(() => {\r\n const visibleStartIndex = Math.floor(scrollTop / COUNTRY_ROW_HEIGHT)\r\n const startIndex = Math.max(\r\n 0,\r\n visibleStartIndex - COUNTRY_OVERSCAN\r\n )\r\n const visibleCount = Math.ceil(COUNTRY_LIST_HEIGHT / COUNTRY_ROW_HEIGHT)\r\n const endIndex = Math.min(\r\n filteredItems.length,\r\n visibleStartIndex + visibleCount + COUNTRY_OVERSCAN\r\n )\r\n\r\n return {\r\n startIndex,\r\n endIndex,\r\n items: filteredItems.slice(startIndex, endIndex),\r\n }\r\n }, [filteredItems, scrollTop])\r\n\r\n const paddingTop = virtualRange.startIndex * COUNTRY_ROW_HEIGHT\r\n const paddingBottom = Math.max(\r\n 0,\r\n (filteredItems.length - virtualRange.endIndex) * COUNTRY_ROW_HEIGHT\r\n )\r\n\r\n const handleValueChange = React.useCallback(\r\n (item: CountryItem | null) => {\r\n if (!item?.value) return\r\n\r\n onChange(item.value)\r\n setInputValue(\"\")\r\n setOpen(false)\r\n },\r\n [onChange]\r\n )\r\n\r\n return (\r\n <Combobox\r\n behavior=\"default\"\r\n disabled={disabled}\r\n inputValue={inputValue}\r\n items={filteredItems}\r\n open={open}\r\n value={value}\r\n virtualized\r\n filter={null}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n openOnInputClick={false}\r\n onValueChange={handleValueChange}\r\n onInputValueChange={setInputValue}\r\n onOpenChange={(open) => {\r\n setOpen(open)\r\n if (!open) setInputValue(\"\")\r\n }}\r\n >\r\n {/* Visible trigger button styled as part of the input */}\r\n <ComboboxTrigger\r\n render={\r\n <button\r\n type=\"button\"\r\n className={cn(\r\n inputVariants({ size }),\r\n \"w-auto shrink-0 justify-between gap-1.5 rounded-r-none border-r-0\",\r\n \"hover:bg-bg-primary-hover focus-visible:z-10 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand\",\r\n \"disabled:pointer-events-none disabled:opacity-50\"\r\n )}\r\n disabled={disabled}\r\n >\r\n <span className=\"flex items-center gap-1.5 overflow-hidden\">\r\n <FlagComponent\r\n country={selectedCountry}\r\n countryName={selectedCountry}\r\n className={phoneInputFlagSizes[size ?? \"md\"]}\r\n />\r\n {selectedCountry && (\r\n <span\r\n className={cn(\r\n \"text-text-primary\",\r\n phoneInputCountryCodeSizes[size ?? \"md\"] ?? \"text-body-medium-3\"\r\n )}\r\n >\r\n {selectedCountry}\r\n </span>\r\n )}\r\n </span>\r\n <ChevronsUpDownIcon\r\n className={cn(\r\n \"shrink-0 text-fg-quaternary\",\r\n phoneInputChevronSizes[size ?? \"md\"] ?? \"size-3.5\"\r\n )}\r\n />\r\n </button>\r\n }\r\n />\r\n\r\n {/* Dropdown content */}\r\n <ComboboxPopup className=\"w-72\">\r\n <ComboboxInput\r\n placeholder=\"Search country...\"\r\n aria-label=\"Search country\"\r\n />\r\n <ComboboxStatus status={filteredItems.length === 0 ? \"empty\" : null} />\r\n <ComboboxList\r\n ref={listRef}\r\n className=\"relative gap-0\"\r\n style={{ height: listHeight }}\r\n onScroll={(event) => setScrollTop(event.currentTarget.scrollTop)}\r\n >\r\n <div\r\n className=\"flex w-full shrink-0 flex-col\"\r\n style={{ paddingTop, paddingBottom }}\r\n >\r\n {virtualRange.items.map((item, virtualIndex) => {\r\n const index = virtualRange.startIndex + virtualIndex\r\n\r\n return (\r\n <ComboboxItem\r\n key={item.value}\r\n index={index}\r\n value={item}\r\n >\r\n <div className=\"flex items-center gap-2 w-full min-w-0\">\r\n <FlagComponent country={item.value} countryName={item.label} />\r\n <span className=\"flex-1 text-sm truncate\">{item.label}</span>\r\n <span className=\"text-sm text-text-tertiary shrink-0\">\r\n +{RPNInput.getCountryCallingCode(item.value)}\r\n </span>\r\n </div>\r\n </ComboboxItem>\r\n )\r\n })}\r\n </div>\r\n </ComboboxList>\r\n </ComboboxPopup>\r\n </Combobox >\r\n )\r\n}\r\n\r\n// ---------------------------------------------------------------------------\r\n// Input Component\r\n// ---------------------------------------------------------------------------\r\n\r\nconst InputComponent = React.forwardRef<\r\n HTMLInputElement,\r\n React.ComponentProps<\"input\"> & { size?: PhoneInputSize }\r\n>(({ className, onChange, size: sizeProp, ...props }, ref) => {\r\n const context = React.useContext(PhoneInputContext)\r\n const size = sizeProp ?? context.size ?? \"md\"\r\n\r\n const handleChange = React.useCallback(\r\n (event: React.ChangeEvent<HTMLInputElement>) => {\r\n if (event.currentTarget.value === \"+\") {\r\n event.currentTarget.value = \"\"\r\n }\r\n\r\n onChange?.(event)\r\n },\r\n [onChange]\r\n )\r\n\r\n return (\r\n <input\r\n className={cn(\r\n inputVariants({ size }),\r\n \"flex-1 rounded-l-none focus-visible:z-10\",\r\n className\r\n )}\r\n ref={ref}\r\n type=\"tel\"\r\n onChange={handleChange}\r\n {...props}\r\n />\r\n )\r\n})\r\nInputComponent.displayName = \"InputComponent\"\r\n\r\n// ---------------------------------------------------------------------------\r\n// Phone Input\r\n// ---------------------------------------------------------------------------\r\n\r\nconst PhoneInput: React.ForwardRefExoticComponent<PhoneInputProps> =\r\n React.forwardRef<\r\n React.ElementRef<typeof RPNInput.default>,\r\n PhoneInputProps\r\n >(({\r\n className,\r\n onChange,\r\n value,\r\n size = \"md\",\r\n ...props\r\n }, ref) => {\r\n return (\r\n <PhoneInputContext.Provider value={{ size }}>\r\n <RPNInput.default\r\n ref={ref}\r\n className={cn(\r\n \"flex w-full min-w-0 items-center\",\r\n className\r\n )}\r\n flagComponent={FlagComponent}\r\n countrySelectComponent={CountrySelect}\r\n inputComponent={InputComponent}\r\n smartCaret={false}\r\n value={value || undefined}\r\n onChange={(value) => onChange?.(value || (\"\" as RPNInput.Value))}\r\n {...props}\r\n />\r\n </PhoneInputContext.Provider>\r\n )\r\n })\r\nPhoneInput.displayName = \"PhoneInput\"\r\n\r\nexport { PhoneInput, type PhoneInputProps }\r\n"]}