@xploreu/components 0.4.47 → 0.4.50
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.
- package/dist/{chunk-6QWQDSWL.js → chunk-3PHZ2D2L.js} +2 -2
- package/dist/{chunk-6QWQDSWL.js.map → chunk-3PHZ2D2L.js.map} +1 -1
- package/dist/{chunk-Y2HN4RSA.js → chunk-6WWKP7KX.js} +2 -2
- package/dist/{chunk-Y2HN4RSA.js.map → chunk-6WWKP7KX.js.map} +1 -1
- package/dist/{chunk-I7XV55MM.js → chunk-7ZY7ZMEK.js} +2 -2
- package/dist/{chunk-I7XV55MM.js.map → chunk-7ZY7ZMEK.js.map} +1 -1
- package/dist/{chunk-RH7BQGTL.js → chunk-BRWBF2EN.js} +2 -2
- package/dist/{chunk-RH7BQGTL.js.map → chunk-BRWBF2EN.js.map} +1 -1
- package/dist/{chunk-SVNG3RLD.js → chunk-C5UISTOE.js} +2 -2
- package/dist/{chunk-SVNG3RLD.js.map → chunk-C5UISTOE.js.map} +1 -1
- package/dist/{chunk-V2PW53KI.js → chunk-CE6QYHWL.js} +2 -2
- package/dist/{chunk-V2PW53KI.js.map → chunk-CE6QYHWL.js.map} +1 -1
- package/dist/chunk-GC36Q7SO.js +2 -0
- package/dist/chunk-GC36Q7SO.js.map +1 -0
- package/dist/{chunk-M63WCJ22.js → chunk-GDWTPI4H.js} +2 -2
- package/dist/{chunk-M63WCJ22.js.map → chunk-GDWTPI4H.js.map} +1 -1
- package/dist/{chunk-3733D5Y7.js → chunk-HG2N6L3T.js} +2 -2
- package/dist/{chunk-3733D5Y7.js.map → chunk-HG2N6L3T.js.map} +1 -1
- package/dist/{chunk-G2GFDTP5.js → chunk-LPH7XAEU.js} +2 -2
- package/dist/{chunk-G2GFDTP5.js.map → chunk-LPH7XAEU.js.map} +1 -1
- package/dist/{chunk-3SORJB7P.js → chunk-M3QZRGBX.js} +2 -2
- package/dist/{chunk-3SORJB7P.js.map → chunk-M3QZRGBX.js.map} +1 -1
- package/dist/{chunk-C5HZCXIB.js → chunk-MPT2GZBB.js} +2 -2
- package/dist/{chunk-C5HZCXIB.js.map → chunk-MPT2GZBB.js.map} +1 -1
- package/dist/chunk-MVKKGQNL.js +2 -0
- package/dist/chunk-MVKKGQNL.js.map +1 -0
- package/dist/chunk-RKSAOD4G.js +2 -0
- package/dist/chunk-RKSAOD4G.js.map +1 -0
- package/dist/{chunk-BES6JPWQ.js → chunk-Y5YFPTOQ.js} +2 -2
- package/dist/{chunk-BES6JPWQ.js.map → chunk-Y5YFPTOQ.js.map} +1 -1
- package/dist/composites/combobox-chip-outside.d.ts +44 -0
- package/dist/composites/combobox-chip-outside.js +1 -1
- package/dist/composites/combobox-chip.d.ts +47 -0
- package/dist/composites/combobox-chip.js +1 -1
- package/dist/composites/combobox-simple.d.ts +37 -0
- package/dist/composites/combobox-simple.js +1 -1
- package/dist/composites/filter-combobox.d.ts +36 -0
- package/dist/composites/filter-combobox.js +1 -1
- package/dist/composites/index.d.ts +50 -0
- package/dist/composites/index.js +1 -1
- package/dist/composites/index.js.map +1 -1
- package/dist/composites/phone-input.d.ts +14 -0
- package/dist/composites/phone-input.js +1 -1
- package/dist/composites/profile-avatar.d.ts +29 -0
- package/dist/composites/profile-avatar.js +1 -1
- package/dist/effects/auto-height.d.ts +13 -0
- package/dist/effects/highlight.d.ts +93 -0
- package/dist/effects/index.d.ts +5 -0
- package/dist/form/form-input.d.ts +19 -0
- package/dist/form/form-input.js +1 -1
- package/dist/form/form-textarea.d.ts +18 -0
- package/dist/form/form.d.ts +44 -0
- package/dist/form/index.d.ts +12 -0
- package/dist/form/index.js +1 -1
- package/dist/icons/about-me-icon.d.ts +6 -0
- package/dist/icons/academic-cap-dual-tone-icon.d.ts +6 -0
- package/dist/icons/academic-cap-icon.d.ts +6 -0
- package/dist/icons/activity-on-tab-profile-icon.d.ts +6 -0
- package/dist/icons/add-connect-icon.d.ts +6 -0
- package/dist/icons/alert-jobs-icon.d.ts +6 -0
- package/dist/icons/applicants-icon.d.ts +6 -0
- package/dist/icons/application-status-icon.d.ts +6 -0
- package/dist/icons/archive-message-icon.d.ts +6 -0
- package/dist/icons/arrow-go-to-location-icon.d.ts +6 -0
- package/dist/icons/bag-icon.d.ts +6 -0
- package/dist/icons/bag2-icon.d.ts +6 -0
- package/dist/icons/bag3-icon.d.ts +6 -0
- package/dist/icons/bell-icon.d.ts +6 -0
- package/dist/icons/birthday-date-icon.d.ts +6 -0
- package/dist/icons/book-dual-tone-icon.d.ts +6 -0
- package/dist/icons/book-open.d.ts +6 -0
- package/dist/icons/bookmark-filled-icon.d.ts +6 -0
- package/dist/icons/bookmark-icon.d.ts +6 -0
- package/dist/icons/brief-dual-tone-icon.d.ts +6 -0
- package/dist/icons/brief-minimalistic-dual-tone-icon.d.ts +6 -0
- package/dist/icons/brief-minimalistic-icon.d.ts +6 -0
- package/dist/icons/building-dual-tone-icon.d.ts +6 -0
- package/dist/icons/building-icon.d.ts +6 -0
- package/dist/icons/building-infrastructure-icon.d.ts +6 -0
- package/dist/icons/calendar-icon.d.ts +6 -0
- package/dist/icons/case-icon.d.ts +6 -0
- package/dist/icons/certificate-icon.d.ts +6 -0
- package/dist/icons/certificate-on-profile-icon.d.ts +6 -0
- package/dist/icons/chart-square-icon.d.ts +6 -0
- package/dist/icons/chat-round-dots-icon.d.ts +6 -0
- package/dist/icons/check-square-icon.d.ts +6 -0
- package/dist/icons/checkbox-base-icon.d.ts +6 -0
- package/dist/icons/checkbox-new-icon.d.ts +6 -0
- package/dist/icons/checkbox-select-icon.d.ts +6 -0
- package/dist/icons/checklist-icon.d.ts +6 -0
- package/dist/icons/checklist-minimalist-icon.d.ts +6 -0
- package/dist/icons/circle-quarter-icon.d.ts +6 -0
- package/dist/icons/city-icon.d.ts +6 -0
- package/dist/icons/clear-icon.d.ts +6 -0
- package/dist/icons/clipboard-icon.d.ts +6 -0
- package/dist/icons/clock-min.d.ts +6 -0
- package/dist/icons/clock-plus.d.ts +6 -0
- package/dist/icons/close-square-icon.d.ts +6 -0
- package/dist/icons/cloud-upload-icon.d.ts +6 -0
- package/dist/icons/comment-icon.d.ts +6 -0
- package/dist/icons/company-industry-icon.d.ts +6 -0
- package/dist/icons/company-on-job-description-icon.d.ts +6 -0
- package/dist/icons/company-on-job-preferences-icon.d.ts +6 -0
- package/dist/icons/company-post-icon.d.ts +6 -0
- package/dist/icons/connection-company-icon.d.ts +6 -0
- package/dist/icons/connections-icon.d.ts +6 -0
- package/dist/icons/contact-on-settings-icon.d.ts +6 -0
- package/dist/icons/copy-icon.d.ts +6 -0
- package/dist/icons/course-icon-search-icon.d.ts +6 -0
- package/dist/icons/create-free-jobs-with-ai-icon.d.ts +6 -0
- package/dist/icons/create-group-message-icon.d.ts +6 -0
- package/dist/icons/create-job-icon.d.ts +6 -0
- package/dist/icons/danger-triangle-icon.d.ts +6 -0
- package/dist/icons/delete-icon.d.ts +6 -0
- package/dist/icons/document-add-icon.d.ts +6 -0
- package/dist/icons/document-notes-icon.d.ts +6 -0
- package/dist/icons/dots-icon.d.ts +6 -0
- package/dist/icons/download-cv-icon.d.ts +6 -0
- package/dist/icons/download-minimalistic-icon.d.ts +6 -0
- package/dist/icons/drive-db.d.ts +6 -0
- package/dist/icons/duration-of-work-icon.d.ts +6 -0
- package/dist/icons/duration-open-to-offer-icon.d.ts +6 -0
- package/dist/icons/edit-icon.d.ts +6 -0
- package/dist/icons/edit-on-button-profile-icon.d.ts +6 -0
- package/dist/icons/edit-on-section-profile-icon.d.ts +6 -0
- package/dist/icons/education-icon.d.ts +6 -0
- package/dist/icons/education-on-card-icon.d.ts +6 -0
- package/dist/icons/employment-type-on-job-preferences-icon.d.ts +6 -0
- package/dist/icons/evaluation-icon.d.ts +6 -0
- package/dist/icons/expected-salary-on-job-preferences-icon.d.ts +6 -0
- package/dist/icons/experience-icon.d.ts +6 -0
- package/dist/icons/female-on-summary-profile-icon.d.ts +6 -0
- package/dist/icons/file-default-icon.d.ts +6 -0
- package/dist/icons/file-doc-icon.d.ts +6 -0
- package/dist/icons/file-docx-icon.d.ts +6 -0
- package/dist/icons/file-jpg-icon.d.ts +6 -0
- package/dist/icons/file-mkv-icon.d.ts +6 -0
- package/dist/icons/file-mov-icon.d.ts +6 -0
- package/dist/icons/file-mp4-icon.d.ts +6 -0
- package/dist/icons/file-pdf-icon.d.ts +6 -0
- package/dist/icons/file-png-icon.d.ts +6 -0
- package/dist/icons/file-ppt-icon.d.ts +6 -0
- package/dist/icons/file-text-icon.d.ts +6 -0
- package/dist/icons/file-video-icon.d.ts +6 -0
- package/dist/icons/fire-icon.d.ts +6 -0
- package/dist/icons/flag-icon.d.ts +6 -0
- package/dist/icons/folder-icon.d.ts +6 -0
- package/dist/icons/followers-on-connections-icon.d.ts +6 -0
- package/dist/icons/following-on-connections-icon.d.ts +6 -0
- package/dist/icons/forward-icon.d.ts +6 -0
- package/dist/icons/funnel-icon.d.ts +6 -0
- package/dist/icons/gallery-add-icon.d.ts +6 -0
- package/dist/icons/gallery-favorite-icon.d.ts +6 -0
- package/dist/icons/gallery-icon.d.ts +6 -0
- package/dist/icons/general-preference-on-settings-icon.d.ts +6 -0
- package/dist/icons/globe-dual-tone-icon.d.ts +6 -0
- package/dist/icons/hand-stars-icon.d.ts +6 -0
- package/dist/icons/hard-skill-on-profile-icon.d.ts +6 -0
- package/dist/icons/help-icon.d.ts +6 -0
- package/dist/icons/hidden-icon.d.ts +6 -0
- package/dist/icons/hide-passwords-icon.d.ts +6 -0
- package/dist/icons/hired-by-others-icon.d.ts +6 -0
- package/dist/icons/home-icon.d.ts +6 -0
- package/dist/icons/home-smile-icon.d.ts +6 -0
- package/dist/icons/home-table.d.ts +6 -0
- package/dist/icons/icon-component.d.ts +6 -0
- package/dist/icons/image-on-message-icon.d.ts +6 -0
- package/dist/icons/index.d.ts +282 -0
- package/dist/icons/index.js +1 -1
- package/dist/icons/info-icon.d.ts +6 -0
- package/dist/icons/info-square-icon.d.ts +6 -0
- package/dist/icons/interested-of-industry-icon.d.ts +6 -0
- package/dist/icons/invitations-on-connections-icon.d.ts +6 -0
- package/dist/icons/job-description-icon.d.ts +6 -0
- package/dist/icons/job-preference-icon.d.ts +6 -0
- package/dist/icons/jobs-category-icon.d.ts +6 -0
- package/dist/icons/jobseeker-status-on-job-preferences-icon.d.ts +6 -0
- package/dist/icons/key-icon.d.ts +6 -0
- package/dist/icons/language-on-profile-icon.d.ts +6 -0
- package/dist/icons/layers-icon.d.ts +6 -0
- package/dist/icons/layout-icon.d.ts +6 -0
- package/dist/icons/like-filled-icon.d.ts +6 -0
- package/dist/icons/like-icon.d.ts +6 -0
- package/dist/icons/link-copy.d.ts +6 -0
- package/dist/icons/list-icon.d.ts +6 -0
- package/dist/icons/list-option-feedback-icon.d.ts +6 -0
- package/dist/icons/living-on-summary-profile-icon.d.ts +6 -0
- package/dist/icons/location-company-on-card-icon.d.ts +6 -0
- package/dist/icons/location-on-search-icon.d.ts +6 -0
- package/dist/icons/lock-icon.d.ts +6 -0
- package/dist/icons/logo-icon.d.ts +6 -0
- package/dist/icons/logout-icon.d.ts +6 -0
- package/dist/icons/lonceng-z-icon.d.ts +6 -0
- package/dist/icons/mail-icon.d.ts +6 -0
- package/dist/icons/mailbox-icon.d.ts +6 -0
- package/dist/icons/male-on-summary-profile-icon.d.ts +6 -0
- package/dist/icons/map-cluster-marker-icon.d.ts +6 -0
- package/dist/icons/map-marker-icon.d.ts +6 -0
- package/dist/icons/map-pin-icon.d.ts +6 -0
- package/dist/icons/map-pin-icon2.d.ts +6 -0
- package/dist/icons/map-pin2-icon.d.ts +6 -0
- package/dist/icons/mark-as-read-icon.d.ts +6 -0
- package/dist/icons/media-icon.d.ts +6 -0
- package/dist/icons/message-on-card-icon.d.ts +6 -0
- package/dist/icons/messages-icon.d.ts +6 -0
- package/dist/icons/mic-record-icon.d.ts +6 -0
- package/dist/icons/mini-sidebar-icon.d.ts +6 -0
- package/dist/icons/money-bill-icon.d.ts +6 -0
- package/dist/icons/mute-message-icon.d.ts +6 -0
- package/dist/icons/my-connecions-icon.d.ts +6 -0
- package/dist/icons/my-connections-on-tab-profile-icon.d.ts +6 -0
- package/dist/icons/my-cover-letter-icon.d.ts +6 -0
- package/dist/icons/my-dashboard-icon.d.ts +6 -0
- package/dist/icons/my-dashboards-icon.d.ts +6 -0
- package/dist/icons/my-drive-icon.d.ts +6 -0
- package/dist/icons/my-portofolio-icon.d.ts +6 -0
- package/dist/icons/my-resume-icon.d.ts +6 -0
- package/dist/icons/new-message-icon.d.ts +6 -0
- package/dist/icons/new-post-icon.d.ts +6 -0
- package/dist/icons/news-icon.d.ts +6 -0
- package/dist/icons/notification-icon.d.ts +6 -0
- package/dist/icons/notification-on-settings-icon.d.ts +6 -0
- package/dist/icons/offered-by-others-icon.d.ts +6 -0
- package/dist/icons/office-open-to-offer-icon.d.ts +6 -0
- package/dist/icons/office-opent-to-offer-section-icon.d.ts +6 -0
- package/dist/icons/open-another-page-icon.d.ts +6 -0
- package/dist/icons/open-preview-my-profile-icon.d.ts +6 -0
- package/dist/icons/open-to-offer-section-icon.d.ts +6 -0
- package/dist/icons/open-to-opportunities-icon.d.ts +6 -0
- package/dist/icons/other-job-for-you-icon.d.ts +6 -0
- package/dist/icons/other-job-from-this-company-icon.d.ts +6 -0
- package/dist/icons/passwords-icon.d.ts +6 -0
- package/dist/icons/pdf-on-apply-job-icon.d.ts +6 -0
- package/dist/icons/pen-new-square-icon.d.ts +6 -0
- package/dist/icons/people-you-may-know-icon.d.ts +6 -0
- package/dist/icons/people-your-company-icon.d.ts +6 -0
- package/dist/icons/phone-dual-tone-icon.d.ts +6 -0
- package/dist/icons/phone-icon.d.ts +6 -0
- package/dist/icons/pin-location-new-icon.d.ts +6 -0
- package/dist/icons/pin-message-icon.d.ts +6 -0
- package/dist/icons/plain-icon.d.ts +6 -0
- package/dist/icons/plus-square-icon.d.ts +6 -0
- package/dist/icons/posts-icon-search-icon.d.ts +6 -0
- package/dist/icons/priority-by-icon.d.ts +6 -0
- package/dist/icons/private-post-icon.d.ts +6 -0
- package/dist/icons/profile-icon.d.ts +6 -0
- package/dist/icons/public-post-icon.d.ts +6 -0
- package/dist/icons/public-post-on-card-icon.d.ts +6 -0
- package/dist/icons/repeat-icon.d.ts +6 -0
- package/dist/icons/reply-icon.d.ts +6 -0
- package/dist/icons/report-icon.d.ts +6 -0
- package/dist/icons/repost-icon.d.ts +6 -0
- package/dist/icons/reposted-icon.d.ts +6 -0
- package/dist/icons/save-jobs-icon.d.ts +6 -0
- package/dist/icons/save-post-menu-icon.d.ts +6 -0
- package/dist/icons/search-bar-icon.d.ts +6 -0
- package/dist/icons/search-icon.d.ts +6 -0
- package/dist/icons/search-with-date-icon.d.ts +6 -0
- package/dist/icons/send-comment-icon.d.ts +6 -0
- package/dist/icons/settings-icon.d.ts +6 -0
- package/dist/icons/share-circle-icon.d.ts +6 -0
- package/dist/icons/share-icon.d.ts +6 -0
- package/dist/icons/share-link.d.ts +6 -0
- package/dist/icons/shield-dualtone.d.ts +6 -0
- package/dist/icons/show-passwords-icon.d.ts +6 -0
- package/dist/icons/size-company-icon.d.ts +6 -0
- package/dist/icons/skill-on-tab-profile-icon.d.ts +6 -0
- package/dist/icons/skills-icon.d.ts +6 -0
- package/dist/icons/smile-icon.d.ts +6 -0
- package/dist/icons/soft-skill-icon.d.ts +6 -0
- package/dist/icons/sort-ascending-icon.d.ts +6 -0
- package/dist/icons/sort-by-icon.d.ts +6 -0
- package/dist/icons/sort-default-icon.d.ts +6 -0
- package/dist/icons/sort-descending-icon.d.ts +6 -0
- package/dist/icons/sort-horizontal-icon.d.ts +6 -0
- package/dist/icons/sosial-media-section-icon.d.ts +6 -0
- package/dist/icons/sparkle-star-icon.d.ts +6 -0
- package/dist/icons/sparkles-icon.d.ts +6 -0
- package/dist/icons/speech-icon.d.ts +6 -0
- package/dist/icons/stacked-layout-dual-tone-icon.d.ts +6 -0
- package/dist/icons/star-icon.d.ts +6 -0
- package/dist/icons/stars-icon.d.ts +6 -0
- package/dist/icons/sugested-company-icon.d.ts +6 -0
- package/dist/icons/suitcase-icon.d.ts +6 -0
- package/dist/icons/technical-skill-icon.d.ts +6 -0
- package/dist/icons/theme-icon.d.ts +6 -0
- package/dist/icons/themes-icon.d.ts +6 -0
- package/dist/icons/translate-icon.d.ts +6 -0
- package/dist/icons/trash-icon.d.ts +6 -0
- package/dist/icons/unarchive-message-icon.d.ts +6 -0
- package/dist/icons/unfollow-icon.d.ts +6 -0
- package/dist/icons/unmute-message-icon.d.ts +6 -0
- package/dist/icons/unpin-message-icon.d.ts +6 -0
- package/dist/icons/unsave-job-icon.d.ts +6 -0
- package/dist/icons/upload-document-icon.d.ts +6 -0
- package/dist/icons/upload-document-new-icon.d.ts +6 -0
- package/dist/icons/upload-event-icon.d.ts +6 -0
- package/dist/icons/upload-file-placeholder-icon.d.ts +6 -0
- package/dist/icons/upload-generate-image-icon.d.ts +6 -0
- package/dist/icons/upload-generate-post-icon.d.ts +6 -0
- package/dist/icons/upload-media-icon.d.ts +6 -0
- package/dist/icons/upload-media-new-icon.d.ts +6 -0
- package/dist/icons/upload-pictures-on-profile-icon.d.ts +6 -0
- package/dist/icons/upload-pollingt-new-icon.d.ts +6 -0
- package/dist/icons/upload-pooling-icon.d.ts +6 -0
- package/dist/icons/upload-reels-icon.d.ts +6 -0
- package/dist/icons/user-check-icon.d.ts +6 -0
- package/dist/icons/user-connections.d.ts +6 -0
- package/dist/icons/user-dual-tone-icon.d.ts +6 -0
- package/dist/icons/user-hands-up.d.ts +6 -0
- package/dist/icons/user-heart-rounded.d.ts +6 -0
- package/dist/icons/user-icon.d.ts +6 -0
- package/dist/icons/user-unfollow.d.ts +6 -0
- package/dist/icons/users-dual-tone-icon.d.ts +6 -0
- package/dist/icons/users-group-icon.d.ts +6 -0
- package/dist/icons/users-group-rounded-icon.d.ts +6 -0
- package/dist/icons/users-group-two-rounded-icon.d.ts +6 -0
- package/dist/icons/verified-icon.d.ts +6 -0
- package/dist/icons/video-on-message-icon.d.ts +6 -0
- package/dist/icons/view-grid-row-icon.d.ts +6 -0
- package/dist/icons/view-grid1-icon.d.ts +6 -0
- package/dist/icons/view-grid2-icon.d.ts +6 -0
- package/dist/icons/view-grid3-icon.d.ts +6 -0
- package/dist/icons/view-grid4-icon.d.ts +6 -0
- package/dist/icons/volume-icon.d.ts +6 -0
- package/dist/icons/volume-off-icon.d.ts +6 -0
- package/dist/icons/widget-four-icon.d.ts +6 -0
- package/dist/icons/widget-icon.d.ts +6 -0
- package/dist/icons/working-at-summary-profile-icon.d.ts +6 -0
- package/dist/icons/workplace-on-job-preferences-icon.d.ts +6 -0
- package/dist/icons/workplace-open-to-offers-icon.d.ts +6 -0
- package/dist/icons/x-square-icon.d.ts +6 -0
- package/dist/icons/your-summary-profile-icon.d.ts +6 -0
- package/dist/primitives/accordion.d.ts +33 -0
- package/dist/primitives/alert-dialog.d.ts +34 -0
- package/dist/primitives/avatar.d.ts +11 -0
- package/dist/primitives/checkbox.d.ts +16 -0
- package/dist/primitives/collapsible.d.ts +22 -0
- package/dist/primitives/combobox.d.ts +79 -0
- package/dist/primitives/dialog.d.ts +34 -0
- package/dist/primitives/index.d.ts +47 -0
- package/dist/primitives/index.js +1 -1
- package/dist/primitives/menu.d.ts +61 -0
- package/dist/primitives/popover.d.ts +31 -0
- package/dist/primitives/sheet.d.ts +33 -0
- package/dist/primitives/slider.d.ts +18 -0
- package/dist/primitives/slot.d.ts +19 -0
- package/dist/primitives/tabs.d.ts +35 -0
- package/dist/primitives/toast.d.ts +27 -0
- package/dist/primitives/tooltip.d.ts +32 -0
- package/dist/types-BLgXHroz.d.ts +6 -0
- package/dist/ui/accordion.d.ts +20 -0
- package/dist/ui/alert-dialog.d.ts +39 -0
- package/dist/ui/alert.d.ts +19 -0
- package/dist/ui/alerter.d.ts +43 -0
- package/dist/ui/avatar.d.ts +17 -0
- package/dist/ui/avatar.js +1 -1
- package/dist/ui/badge.d.ts +30 -0
- package/dist/ui/button.d.ts +16 -0
- package/dist/ui/calendar.d.ts +40 -0
- package/dist/ui/carousel.d.ts +35 -0
- package/dist/ui/checkbox.d.ts +16 -0
- package/dist/ui/collapsible.d.ts +15 -0
- package/dist/ui/combobox.d.ts +105 -0
- package/dist/ui/combobox.js +1 -1
- package/dist/ui/date-multiple-picker.d.ts +26 -0
- package/dist/ui/date-multiple-picker.js +1 -1
- package/dist/ui/date-picker.d.ts +23 -0
- package/dist/ui/date-picker.js +1 -1
- package/dist/ui/date-range-picker.d.ts +23 -0
- package/dist/ui/date-range-picker.js +1 -1
- package/dist/ui/dialog.d.ts +40 -0
- package/dist/ui/dialog.js +1 -1
- package/dist/ui/index.d.ts +116 -0
- package/dist/ui/index.js +1 -1
- package/dist/ui/infinite-scroll.d.ts +15 -0
- package/dist/ui/input-group.d.ts +30 -0
- package/dist/ui/input-group.js +2 -0
- package/dist/ui/input-group.js.map +1 -0
- package/dist/ui/input-new.d.ts +12 -0
- package/dist/ui/input-new.js +2 -0
- package/dist/ui/input-new.js.map +1 -0
- package/dist/ui/input.d.ts +17 -0
- package/dist/ui/input.js +1 -1
- package/dist/ui/label.d.ts +13 -0
- package/dist/ui/menu.d.ts +50 -0
- package/dist/ui/pagination.d.ts +15 -0
- package/dist/ui/pagination.js +1 -1
- package/dist/ui/popover.d.ts +26 -0
- package/dist/ui/sheet.d.ts +31 -0
- package/dist/ui/slider.d.ts +14 -0
- package/dist/ui/switch.d.ts +15 -0
- package/dist/ui/switch.js +2 -0
- package/dist/ui/switch.js.map +1 -0
- package/dist/ui/table.d.ts +27 -0
- package/dist/ui/table.js +1 -1
- package/dist/ui/tabs.d.ts +26 -0
- package/dist/ui/textarea.d.ts +10 -0
- package/dist/ui/toast.d.ts +39 -0
- package/dist/ui/toast.js +1 -1
- package/dist/ui/tooltip.d.ts +17 -0
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a,b,m,e,q,s,w,x,H}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a,b,m,e,q,s,w,x,H}from'./chunk-C5UISTOE.js';import'react';import {ChevronDownIcon}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function X({multiple:m$1,items:s$1,placeholder:t="Select",icon:d,container:T,isPending:F,className:M,triggerClassName:k,contentClassName:A,disabled:R,infiniteScroll:x$1,filter:c,...o}){let r=m$1===true,L=o.showTitle??r,g=o.showSearch??r,[n,C]=useControlledState({value:o?.value,defaultValue:o?.defaultValue,onChange:o.onValueChange}),[$,q$1]=useControlledState({value:o?.inputValue?.toString(),defaultValue:o?.defaultInputValue?.toString(),onChange:o?.onInputValueChange}),u=Array.isArray(n)?n:n?[n]:[],a$1=u.length>0,z=u.length,B=a$1?r?`${t} (${z})`:u[0]?.label??t:r?`All ${t}`:t,D=()=>{C(null);};return jsxs(a,{items:s$1,multiple:m$1,value:n,onValueChange:C,inputValue:$,onInputValueChange:q$1,filter:c===null||!g?null:c,isItemEqualToValue:(l,p)=>l.value===p.value,disabled:R,...o,children:[jsxs(b,{className:cn("group flex h-8 w-fit max-w-[220px] items-center gap-2 rounded-xp-card-base border bg-bg-primary px-3 text-body-medium-3 transition-colors","border-border-primary text-text-secondary hover:bg-bg-primary-hover",a$1&&"border-border-brand bg-bg-brand-primary text-text-brand-secondary hover:bg-bg-brand-primary-hover-alt","disabled:pointer-events-none disabled:opacity-50","data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary",k,M),children:[d&&jsx("span",{className:cn("size-4 shrink-0 group-data-[popup-open]:text-fg-brand-primary",a$1?"text-fg-brand-primary":"text-fg-quaternary"),children:d}),jsx("span",{className:"truncate",children:B}),jsx(ChevronDownIcon,{className:cn("size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180 group-data-[popup-open]:text-fg-brand-primary",a$1?"text-fg-brand-primary":"text-fg-quaternary")})]}),jsx(m,{container:T,className:cn("w-72",A),align:"start",sideOffset:8,children:jsxs("div",{className:"flex flex-col",children:[L&&jsxs("div",{className:"flex items-center justify-between p-3 border-b border-border-primary",children:[jsx("span",{className:"text-label-semibold-3 text-text-primary",children:t}),jsx("button",{type:"button",disabled:!a$1,onClick:D,className:cn("text-label-semibold-3 transition-colors",a$1?"cursor-pointer text-text-error-primary hover:text-text-error-primary-hover":"cursor-not-allowed text-text-disabled"),children:"Clear All"})]}),g&&jsx(e,{placeholder:`Search ${t.toLowerCase()}...`}),jsx(q,{status:F||s$1===void 0?"pending":s$1?.length===0?"empty":null}),jsx(s,{children:(l,p,E)=>jsxs(Fragment,{children:[jsx(w,{indicator:r?"checkbox":void 0,value:l,children:jsx(x,{children:l.label})},l.value),p===E-1&&!!x$1&&jsx(H,{...x$1})]})})]})})]})}export{X as a};//# sourceMappingURL=chunk-3PHZ2D2L.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-3PHZ2D2L.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/composites/filter-combobox.tsx"],"names":["FilterCombobox","multiple","items","placeholder","icon","container","isPending","className","triggerClassName","contentClassName","disabled","infiniteScroll","filter","props","isMultiple","showTitle","showSearch","value","setValue","useControlledState","inputValue","setInputValue","valueArray","hasValue","count","triggerLabel","handleClear","jsxs","Combobox","a","b","ComboboxTrigger","cn","jsx","ChevronDownIcon","ComboboxPopup","ComboboxInput","ComboboxStatus","ComboboxList","item","index","length","Fragment","ComboboxItem","ComboboxItemTitle","ComboboxInfiniteScroll"],"mappings":"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","file":"chunk-6QWQDSWL.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { ChevronDownIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { ComboboxItem, ComboboxItemTitle, type ComboboxProps } from \"../ui/combobox\"\r\nimport {\r\n Combobox,\r\n ComboboxInfiniteScroll,\r\n ComboboxInput,\r\n ComboboxList,\r\n ComboboxPopup,\r\n ComboboxPortal,\r\n ComboboxStatus,\r\n ComboboxTrigger\r\n} from \"../ui/combobox\"\r\n\r\n// ─── Types ───\r\n\r\nexport type FilterComboboxItem = {\r\n label: string\r\n value: string\r\n}\r\n\r\ntype FilterComboboxValueType<Value extends FilterComboboxItem, Multiple extends boolean | undefined> = Multiple extends true ? Value[] : Value;\r\n\r\ntype BaseProps = {\r\n items: FilterComboboxItem[] | undefined\r\n placeholder?: string\r\n icon?: React.ReactNode\r\n container?: React.ComponentProps<typeof ComboboxPortal>[\"container\"]\r\n isPending?: boolean\r\n className?: string\r\n triggerClassName?: string\r\n contentClassName?: string\r\n disabled?: boolean\r\n infiniteScroll?: React.ComponentProps<typeof ComboboxInfiniteScroll>\r\n showTitle?: boolean\r\n showSearch?: boolean\r\n}\r\n\r\nexport type FilterComboboxProps<Value, Multiple extends boolean | undefined = false> = ComboboxProps<Value, Multiple> & BaseProps\r\n\r\n// ─── Component ───\r\n\r\nfunction FilterCombobox<Value extends FilterComboboxItem, Multiple extends boolean | undefined = false>({\r\n multiple,\r\n items,\r\n placeholder = \"Select\",\r\n icon,\r\n container,\r\n isPending,\r\n className,\r\n triggerClassName,\r\n contentClassName,\r\n disabled,\r\n infiniteScroll,\r\n filter,\r\n ...props\r\n}: FilterComboboxProps<Value, Multiple>) {\r\n const isMultiple = multiple === true\r\n const showTitle = props.showTitle ?? isMultiple\r\n const showSearch = props.showSearch ?? isMultiple\r\n\r\n const [value, setValue] = useControlledState<FilterComboboxValueType<Value, Multiple> | null>({\r\n value: props?.value,\r\n defaultValue: props?.defaultValue,\r\n onChange: props.onValueChange as (\r\n value: FilterComboboxValueType<Value, Multiple> | null\r\n ) => void\r\n })\r\n\r\n const [inputValue, setInputValue] = useControlledState({\r\n value: props?.inputValue?.toString(),\r\n defaultValue: props?.defaultInputValue?.toString(),\r\n onChange: props?.onInputValueChange,\r\n })\r\n\r\n // Normalize value to array for label & clear logic\r\n const valueArray = Array.isArray(value) ? value : value ? [value] : []\r\n const hasValue = valueArray.length > 0\r\n const count = valueArray.length\r\n\r\n const triggerLabel = !hasValue\r\n ? isMultiple\r\n ? `All ${placeholder}`\r\n : placeholder\r\n : isMultiple\r\n ? `${placeholder} (${count})`\r\n : valueArray[0]?.label ?? placeholder\r\n\r\n const handleClear = () => {\r\n setValue(null)\r\n }\r\n\r\n return (\r\n <Combobox\r\n items={items}\r\n multiple={multiple}\r\n value={value}\r\n onValueChange={setValue}\r\n inputValue={inputValue}\r\n onInputValueChange={setInputValue}\r\n filter={filter === null || !showSearch ? null : filter}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n disabled={disabled}\r\n {...props}\r\n >\r\n <ComboboxTrigger\r\n className={cn(\r\n \"group flex h-8 w-fit max-w-[220px] items-center gap-2 rounded-xp-card-base border bg-bg-primary px-3 text-body-medium-3 transition-colors\",\r\n \"border-border-primary text-text-secondary hover:bg-bg-primary-hover\",\r\n hasValue && \"border-border-brand bg-bg-brand-primary text-text-brand-secondary hover:bg-bg-brand-primary-hover-alt\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n \"data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary\",\r\n triggerClassName,\r\n className\r\n )}\r\n >\r\n {icon && (\r\n <span\r\n className={cn(\r\n \"size-4 shrink-0 group-data-[popup-open]:text-fg-brand-primary\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\"\r\n )}\r\n >\r\n {icon}\r\n </span>\r\n )}\r\n <span className=\"truncate\">{triggerLabel}</span>\r\n <ChevronDownIcon\r\n className={cn(\r\n \"size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180 group-data-[popup-open]:text-fg-brand-primary\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\"\r\n )}\r\n />\r\n </ComboboxTrigger>\r\n\r\n <ComboboxPopup\r\n container={container}\r\n className={cn(\"w-72\", contentClassName)}\r\n align=\"start\"\r\n sideOffset={8}\r\n >\r\n <div className=\"flex flex-col\">\r\n {showTitle && (\r\n <div className=\"flex items-center justify-between p-3 border-b border-border-primary\">\r\n <span className=\"text-label-semibold-3 text-text-primary\">{placeholder}</span>\r\n <button\r\n type=\"button\"\r\n disabled={!hasValue}\r\n onClick={handleClear}\r\n className={cn(\r\n \"text-label-semibold-3 transition-colors\",\r\n hasValue\r\n ? \"cursor-pointer text-text-error-primary hover:text-text-error-primary-hover\"\r\n : \"cursor-not-allowed text-text-disabled\"\r\n )}\r\n >\r\n Clear All\r\n </button>\r\n </div>\r\n )}\r\n\r\n {showSearch && (\r\n <ComboboxInput placeholder={`Search ${placeholder.toLowerCase()}...`} />\r\n )}\r\n\r\n <ComboboxStatus\r\n status={\r\n isPending || items === undefined\r\n ? \"pending\"\r\n : (items)?.length === 0\r\n ? \"empty\"\r\n : null\r\n }\r\n />\r\n <ComboboxList>\r\n {(item, index, length) => (\r\n <>\r\n <ComboboxItem\r\n indicator={isMultiple ? \"checkbox\" : undefined}\r\n key={item.value}\r\n value={item}\r\n >\r\n <ComboboxItemTitle>{item.label}</ComboboxItemTitle>\r\n </ComboboxItem>\r\n {index === length - 1 && !!infiniteScroll && (\r\n <ComboboxInfiniteScroll {...infiniteScroll} />\r\n )}\r\n </>\r\n )}\r\n </ComboboxList>\r\n </div>\r\n </ComboboxPopup>\r\n </Combobox>\r\n )\r\n}\r\n\r\nexport { FilterCombobox }\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/composites/filter-combobox.tsx"],"names":["FilterCombobox","multiple","items","placeholder","icon","container","isPending","className","triggerClassName","contentClassName","disabled","infiniteScroll","filter","props","isMultiple","showTitle","showSearch","value","setValue","useControlledState","inputValue","setInputValue","valueArray","hasValue","count","triggerLabel","handleClear","jsxs","Combobox","a","b","ComboboxTrigger","cn","jsx","ChevronDownIcon","ComboboxPopup","ComboboxInput","ComboboxStatus","ComboboxList","item","index","length","Fragment","ComboboxItem","ComboboxItemTitle","ComboboxInfiniteScroll"],"mappings":"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","file":"chunk-3PHZ2D2L.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { ChevronDownIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { ComboboxItem, ComboboxItemTitle, type ComboboxProps } from \"../ui/combobox\"\r\nimport {\r\n Combobox,\r\n ComboboxInfiniteScroll,\r\n ComboboxInput,\r\n ComboboxList,\r\n ComboboxPopup,\r\n ComboboxPortal,\r\n ComboboxStatus,\r\n ComboboxTrigger\r\n} from \"../ui/combobox\"\r\n\r\n// ─── Types ───\r\n\r\nexport type FilterComboboxItem = {\r\n label: string\r\n value: string\r\n}\r\n\r\ntype FilterComboboxValueType<Value extends FilterComboboxItem, Multiple extends boolean | undefined> = Multiple extends true ? Value[] : Value;\r\n\r\ntype BaseProps = {\r\n items: FilterComboboxItem[] | undefined\r\n placeholder?: string\r\n icon?: React.ReactNode\r\n container?: React.ComponentProps<typeof ComboboxPortal>[\"container\"]\r\n isPending?: boolean\r\n className?: string\r\n triggerClassName?: string\r\n contentClassName?: string\r\n disabled?: boolean\r\n infiniteScroll?: React.ComponentProps<typeof ComboboxInfiniteScroll>\r\n showTitle?: boolean\r\n showSearch?: boolean\r\n}\r\n\r\nexport type FilterComboboxProps<Value, Multiple extends boolean | undefined = false> = ComboboxProps<Value, Multiple> & BaseProps\r\n\r\n// ─── Component ───\r\n\r\nfunction FilterCombobox<Value extends FilterComboboxItem, Multiple extends boolean | undefined = false>({\r\n multiple,\r\n items,\r\n placeholder = \"Select\",\r\n icon,\r\n container,\r\n isPending,\r\n className,\r\n triggerClassName,\r\n contentClassName,\r\n disabled,\r\n infiniteScroll,\r\n filter,\r\n ...props\r\n}: FilterComboboxProps<Value, Multiple>) {\r\n const isMultiple = multiple === true\r\n const showTitle = props.showTitle ?? isMultiple\r\n const showSearch = props.showSearch ?? isMultiple\r\n\r\n const [value, setValue] = useControlledState<FilterComboboxValueType<Value, Multiple> | null>({\r\n value: props?.value,\r\n defaultValue: props?.defaultValue,\r\n onChange: props.onValueChange as (\r\n value: FilterComboboxValueType<Value, Multiple> | null\r\n ) => void\r\n })\r\n\r\n const [inputValue, setInputValue] = useControlledState({\r\n value: props?.inputValue?.toString(),\r\n defaultValue: props?.defaultInputValue?.toString(),\r\n onChange: props?.onInputValueChange,\r\n })\r\n\r\n // Normalize value to array for label & clear logic\r\n const valueArray = Array.isArray(value) ? value : value ? [value] : []\r\n const hasValue = valueArray.length > 0\r\n const count = valueArray.length\r\n\r\n const triggerLabel = !hasValue\r\n ? isMultiple\r\n ? `All ${placeholder}`\r\n : placeholder\r\n : isMultiple\r\n ? `${placeholder} (${count})`\r\n : valueArray[0]?.label ?? placeholder\r\n\r\n const handleClear = () => {\r\n setValue(null)\r\n }\r\n\r\n return (\r\n <Combobox\r\n items={items}\r\n multiple={multiple}\r\n value={value}\r\n onValueChange={setValue}\r\n inputValue={inputValue}\r\n onInputValueChange={setInputValue}\r\n filter={filter === null || !showSearch ? null : filter}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n disabled={disabled}\r\n {...props}\r\n >\r\n <ComboboxTrigger\r\n className={cn(\r\n \"group flex h-8 w-fit max-w-[220px] items-center gap-2 rounded-xp-card-base border bg-bg-primary px-3 text-body-medium-3 transition-colors\",\r\n \"border-border-primary text-text-secondary hover:bg-bg-primary-hover\",\r\n hasValue && \"border-border-brand bg-bg-brand-primary text-text-brand-secondary hover:bg-bg-brand-primary-hover-alt\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n \"data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary\",\r\n triggerClassName,\r\n className\r\n )}\r\n >\r\n {icon && (\r\n <span\r\n className={cn(\r\n \"size-4 shrink-0 group-data-[popup-open]:text-fg-brand-primary\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\"\r\n )}\r\n >\r\n {icon}\r\n </span>\r\n )}\r\n <span className=\"truncate\">{triggerLabel}</span>\r\n <ChevronDownIcon\r\n className={cn(\r\n \"size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180 group-data-[popup-open]:text-fg-brand-primary\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\"\r\n )}\r\n />\r\n </ComboboxTrigger>\r\n\r\n <ComboboxPopup\r\n container={container}\r\n className={cn(\"w-72\", contentClassName)}\r\n align=\"start\"\r\n sideOffset={8}\r\n >\r\n <div className=\"flex flex-col\">\r\n {showTitle && (\r\n <div className=\"flex items-center justify-between p-3 border-b border-border-primary\">\r\n <span className=\"text-label-semibold-3 text-text-primary\">{placeholder}</span>\r\n <button\r\n type=\"button\"\r\n disabled={!hasValue}\r\n onClick={handleClear}\r\n className={cn(\r\n \"text-label-semibold-3 transition-colors\",\r\n hasValue\r\n ? \"cursor-pointer text-text-error-primary hover:text-text-error-primary-hover\"\r\n : \"cursor-not-allowed text-text-disabled\"\r\n )}\r\n >\r\n Clear All\r\n </button>\r\n </div>\r\n )}\r\n\r\n {showSearch && (\r\n <ComboboxInput placeholder={`Search ${placeholder.toLowerCase()}...`} />\r\n )}\r\n\r\n <ComboboxStatus\r\n status={\r\n isPending || items === undefined\r\n ? \"pending\"\r\n : (items)?.length === 0\r\n ? \"empty\"\r\n : null\r\n }\r\n />\r\n <ComboboxList>\r\n {(item, index, length) => (\r\n <>\r\n <ComboboxItem\r\n indicator={isMultiple ? \"checkbox\" : undefined}\r\n key={item.value}\r\n value={item}\r\n >\r\n <ComboboxItemTitle>{item.label}</ComboboxItemTitle>\r\n </ComboboxItem>\r\n {index === length - 1 && !!infiniteScroll && (\r\n <ComboboxInfiniteScroll {...infiniteScroll} />\r\n )}\r\n </>\r\n )}\r\n </ComboboxList>\r\n </div>\r\n </ComboboxPopup>\r\n </Combobox>\r\n )\r\n}\r\n\r\nexport { FilterCombobox }\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a,j,i,k,l,m,q,s,w,A,x,H}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a,j,i,k,l,m,q,s,w,A,x,H}from'./chunk-C5UISTOE.js';import {f,g}from'./chunk-HHG7BSWN.js';import {a as a$1}from'./chunk-Y6TKCAAJ.js';import*as r from'react';import {cn}from'@xploreu/lib/cn';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function $({multiple:G=true,inputPlaceholder:j$1="Search...",container:q$1,items:s$1,infiniteScroll:z,isPending:B,taggable:C=false,maxVisible:b,...m$1}){let[O,F]=useControlledState({value:m$1?.inputValue?.toString(),defaultValue:m$1?.defaultInputValue?.toString(),onChange:m$1?.onInputValueChange}),[i$1,h]=useControlledState({value:m$1?.value??[],defaultValue:m$1?.defaultValue??[],onChange:m$1?.onValueChange}),[I,V]=r.useState([]),p=r.useRef(new Set);r.useEffect(()=>{let e=new Set(i$1.map(a=>a.value));V(a=>{let l=a.filter(o=>e.has(o.value));return l.length===a.length?a:(p.current=new Set(l.map(o=>o.value)),l)});},[i$1]);let t=O?.toString().trim()??"",v=r.useMemo(()=>t?i$1.some(e=>e.value.toLowerCase()===t.toLowerCase()):false,[t,i$1]),c=r.useMemo(()=>!C||!t?false:!s$1?.some(e=>e.label.toLowerCase()===t.toLowerCase()),[C,t,s$1]),H$1=r.useMemo(()=>{let e=[...s$1??[],...I];return c?[...e,{label:t,value:t,tag:true}]:e},[s$1,I,c,t]);return jsxs(a,{...m$1,behavior:"chip-outside",multiple:true,items:C?H$1:s$1,isItemEqualToValue:(e,a)=>e.value===a.value,onValueChange:(e,a)=>{if(C){let l=e.filter(o=>o?.tag===true&&!p.current.has(o.value));if(l.length>0){for(let o of l)p.current.add(o.value);V(o=>[...o,...l]);}}h(G?e:[e[e.length-1]],a);},onInputValueChange:F,children:[jsx(f,{className:cn(a$1(),"h-auto min-h-13 flex flex-wrap items-center gap-1.5 px-3 py-1.5 cursor-text"),children:jsxs(j,{className:cn("contents",b!==void 0&&"flex-nowrap overflow-hidden"),children:[jsx(i,{children:e=>{let a=b!==void 0?e.slice(0,b):e,l$1=b!==void 0?e.length-b:0;return jsxs(Fragment,{children:[a?.map(o=>jsxs(k,{className:cn(b!==void 0&&"min-w-0 shrink"),children:[o?.image&&jsx("img",{src:o.image,alt:o?.label||"",className:"size-4 rounded-full object-cover shrink-0 mr-1"}),b!==void 0?jsx("span",{className:"truncate",children:o?.label||""}):o?.label||"",jsx(l,{})]},o?.value||"")),l$1>0&&jsxs(k,{className:"shrink-0",children:["+",l$1]})]})}}),jsx(g,{render:jsx("input",{className:"flex-1 min-w-[80px] bg-transparent outline-none text-body-regular-1 text-text-primary placeholder:text-text-placeholder",placeholder:i$1.length===0?j$1:void 0})})]})}),jsxs(m,{container:q$1,children:[jsx(q,{status:B||s$1===void 0?"pending":s$1?.length===0&&!c?"empty":null}),jsxs(s,{children:[s$1?.map(e=>jsxs(w,{value:e,children:[e.image!==void 0&&jsx(A,{src:e.image,fallbackText:[e.label?.[0],e.label?.split(" ")?.[1]?.[0]].filter(Boolean).join(""),imageAlt:e.label}),jsx(x,{children:e.label})]},e.value)),c&&jsxs(w,{value:{label:t,value:t,tag:true},children:[!v&&jsxs("span",{className:"text-text-secondary text-body-medium-3 col-start-2",children:["Create: ",t]}),v&&jsx(x,{children:t})]}),jsx(H,{...z})]})]})]})}export{$ as a};//# sourceMappingURL=chunk-6WWKP7KX.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-6WWKP7KX.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/composites/combobox-chip.tsx"],"names":["ComboboxChip","multiple","inputPlaceholder","container","items","infiniteScroll","isPending","taggable","maxVisible","props","inputValue","setInputValue","useControlledState","value","setValue","createdItems","setCreatedItems","createdValuesRef","currentValues","v","prev","next","item","trimmedInput","isInputSelected","isCreatingItem","combinedItems","base","jsxs","Combobox","a","b","eventDetails","newTags","tag","jsx","ComboboxInputGroup","cn","inputVariants","ComboboxChips","ComboboxValue","visible","overflow","Fragment","ComboboxChipRemove","ComboboxInput","ComboboxPopup","ComboboxStatus","ComboboxList","ComboboxItem","ComboboxItemAvatar","ComboboxItemTitle","ComboboxInfiniteScroll"],"mappings":"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","file":"chunk-Y2HN4RSA.js","sourcesContent":["import * as React from \"react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport {\r\n ComboboxInput as ComboboxInputPrimitive,\r\n ComboboxInputGroup,\r\n} from \"../primitives/combobox\"\r\nimport {\r\n Combobox,\r\n ComboboxChip as ComboboxChipUI,\r\n ComboboxChipRemove,\r\n ComboboxChips,\r\n ComboboxInfiniteScroll,\r\n ComboboxItem,\r\n ComboboxList,\r\n ComboboxPortal,\r\n ComboboxPopup,\r\n ComboboxStatus,\r\n ComboboxValue,\r\n type ComboboxProps,\r\n ComboboxItemTitle,\r\n ComboboxItemAvatar\r\n} from \"../ui/combobox\"\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { inputVariants } from \"../ui/input\"\r\n\r\ntype ComboboxChipProps<Value extends { label: string; value: string; image?: string; tag?: true }> = Omit<ComboboxProps<Value, true>, \"multiple\" | \"items\"> & {\r\n multiple?: boolean\r\n inputPlaceholder?: string\r\n container?: React.ComponentProps<typeof ComboboxPortal>[\"container\"]\r\n items?: Value[] | undefined\r\n infiniteScroll?: React.ComponentProps<typeof ComboboxInfiniteScroll>\r\n isPending?: boolean\r\n /**\r\n * When true, enables creatable / taggable mode.\r\n * If the typed value has no exact match in the current item list,\r\n * a \"Create \\\"…\\\"\" option is shown at the top of the dropdown.\r\n * Created items are appended to the value with `{ label, value, tag: true }`.\r\n */\r\n taggable?: boolean\r\n /**\r\n * Maximum number of chips to show before collapsing the rest into a \"+N\" chip.\r\n * When undefined, all chips are shown.\r\n */\r\n maxVisible?: number\r\n}\r\n\r\nfunction ComboboxChip<Value extends { label: string; value: string; image?: string; tag?: true }>({\r\n multiple = true,\r\n inputPlaceholder = \"Search...\",\r\n container,\r\n items,\r\n infiniteScroll,\r\n isPending,\r\n taggable = false,\r\n maxVisible,\r\n ...props\r\n}: ComboboxChipProps<Value>) {\r\n const [inputValue, setInputValue] = useControlledState({\r\n value: props?.inputValue?.toString(),\r\n defaultValue: props?.defaultInputValue?.toString(),\r\n onChange: props?.onInputValueChange,\r\n })\r\n\r\n const [value, setValue] = useControlledState({\r\n value: props?.value ?? [],\r\n defaultValue: props?.defaultValue ?? [],\r\n onChange: props?.onValueChange,\r\n })\r\n\r\n // Track items created via taggable mode\r\n // Sync with value to avoid stale tags when controlled value is reset from outside\r\n const [createdItems, setCreatedItems] = React.useState<Value[]>([])\r\n const createdValuesRef = React.useRef<Set<string>>(new Set())\r\n\r\n React.useEffect(() => {\r\n const currentValues = new Set(value.map((v) => v.value))\r\n setCreatedItems((prev) => {\r\n const next = prev.filter((item) => currentValues.has(item.value))\r\n if (next.length === prev.length) return prev\r\n createdValuesRef.current = new Set(next.map((v) => v.value))\r\n return next\r\n })\r\n }, [value])\r\n\r\n const trimmedInput = inputValue?.toString().trim() ?? \"\"\r\n const isInputSelected = React.useMemo(() => {\r\n if (!trimmedInput) return false\r\n return value.some(\r\n (item) => item.value.toLowerCase() === trimmedInput.toLowerCase()\r\n )\r\n }, [trimmedInput, value])\r\n\r\n // true = show the taggable item in dropdown (either as \"Create:\" or as checked item)\r\n const isCreatingItem = React.useMemo(() => {\r\n if (!taggable || !trimmedInput) return false\r\n return !items?.some(\r\n (item) => item.label.toLowerCase() === trimmedInput.toLowerCase()\r\n )\r\n }, [taggable, trimmedInput, items])\r\n\r\n // Merge server items with locally created tags + the \"Create\" placeholder\r\n const combinedItems = React.useMemo(() => {\r\n const base: Value[] = [\r\n ...items ?? [],\r\n ...createdItems,\r\n ]\r\n\r\n if (isCreatingItem) {\r\n return [...base, { label: trimmedInput, value: trimmedInput, tag: true } as unknown as Value]\r\n }\r\n\r\n return base\r\n }, [items, createdItems, isCreatingItem, trimmedInput])\r\n\r\n const handleValueChange: ComboboxProps<Value, true>[\"onValueChange\"] = (value, eventDetails) => {\r\n if (taggable) {\r\n const newTags = value.filter(\r\n (v) => v?.tag === true && !createdValuesRef.current.has(v.value)\r\n )\r\n if (newTags.length > 0) {\r\n for (const tag of newTags) {\r\n createdValuesRef.current.add(tag.value)\r\n }\r\n setCreatedItems((prev) => [...prev, ...newTags])\r\n }\r\n }\r\n\r\n if (!multiple) {\r\n setValue([value[value.length - 1]], eventDetails)\r\n } else {\r\n setValue(value, eventDetails)\r\n }\r\n }\r\n\r\n return (\r\n <Combobox\r\n {...props}\r\n behavior=\"chip-outside\"\r\n multiple\r\n items={taggable ? combinedItems : items}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n onValueChange={handleValueChange}\r\n onInputValueChange={setInputValue}\r\n >\r\n {/* Input box with chips inside */}\r\n <ComboboxInputGroup\r\n className={cn(\r\n inputVariants(),\r\n \"h-auto min-h-13 flex flex-wrap items-center gap-1.5 px-3 py-1.5 cursor-text\"\r\n )}\r\n >\r\n {/* Chips inside the input box */}\r\n <ComboboxChips\r\n className={cn(\r\n \"contents\",\r\n maxVisible !== undefined && \"flex-nowrap overflow-hidden\"\r\n )}\r\n >\r\n <ComboboxValue>\r\n {(value: Value[]) => {\r\n const visible = maxVisible !== undefined ? value.slice(0, maxVisible) : value\r\n const overflow = maxVisible !== undefined ? value.length - maxVisible : 0\r\n return (\r\n <>\r\n {visible?.map((item) => (\r\n <ComboboxChipUI\r\n key={item?.value || \"\"}\r\n className={cn(maxVisible !== undefined && \"min-w-0 shrink\")}\r\n >\r\n {item?.image && (\r\n <img\r\n src={item.image}\r\n alt={item?.label || \"\"}\r\n className=\"size-4 rounded-full object-cover shrink-0 mr-1\"\r\n />\r\n )}\r\n {maxVisible !== undefined\r\n ? <span className=\"truncate\">{item?.label || \"\"}</span>\r\n : (item?.label || \"\")\r\n }\r\n <ComboboxChipRemove />\r\n </ComboboxChipUI>\r\n ))}\r\n {overflow > 0 && (\r\n <ComboboxChipUI className=\"shrink-0\">\r\n +{overflow}\r\n </ComboboxChipUI>\r\n )}\r\n </>\r\n )\r\n }}\r\n </ComboboxValue>\r\n {/* Text input — shrinks to fit remaining space (inside Chips so backspace works) */}\r\n <ComboboxInputPrimitive\r\n render={\r\n <input\r\n className=\"flex-1 min-w-[80px] bg-transparent outline-none text-body-regular-1 text-text-primary placeholder:text-text-placeholder\"\r\n placeholder={value.length === 0 ? inputPlaceholder : undefined}\r\n />\r\n }\r\n />\r\n </ComboboxChips>\r\n </ComboboxInputGroup>\r\n\r\n <ComboboxPopup container={container}>\r\n <ComboboxStatus\r\n status={\r\n isPending || items === undefined\r\n ? \"pending\"\r\n : items?.length === 0 && !isCreatingItem\r\n ? \"empty\"\r\n : null\r\n }\r\n />\r\n <ComboboxList>\r\n {items?.map((item) => (\r\n <ComboboxItem\r\n key={item.value}\r\n value={item as Value}\r\n >\r\n {(item.image !== undefined) && (\r\n <ComboboxItemAvatar\r\n src={item.image}\r\n fallbackText={[item.label?.[0], item.label?.split(\" \")?.[1]?.[0]].filter(Boolean).join(\"\")}\r\n imageAlt={item.label}\r\n />\r\n )}\r\n <ComboboxItemTitle>{item.label}</ComboboxItemTitle>\r\n </ComboboxItem>\r\n ))}\r\n {isCreatingItem && (\r\n <ComboboxItem\r\n value={{ label: trimmedInput, value: trimmedInput, tag: true }}\r\n >\r\n {!isInputSelected && (\r\n <span className=\"text-text-secondary text-body-medium-3 col-start-2\">Create: {trimmedInput}</span>\r\n )}\r\n {isInputSelected && (\r\n <ComboboxItemTitle>{trimmedInput}</ComboboxItemTitle>\r\n )}\r\n </ComboboxItem>\r\n )}\r\n <ComboboxInfiniteScroll {...infiniteScroll} />\r\n </ComboboxList>\r\n </ComboboxPopup>\r\n </Combobox>\r\n )\r\n}\r\n\r\nexport { ComboboxChip }\r\nexport type { ComboboxChipProps }\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/composites/combobox-chip.tsx"],"names":["ComboboxChip","multiple","inputPlaceholder","container","items","infiniteScroll","isPending","taggable","maxVisible","props","inputValue","setInputValue","useControlledState","value","setValue","createdItems","setCreatedItems","createdValuesRef","currentValues","v","prev","next","item","trimmedInput","isInputSelected","isCreatingItem","combinedItems","base","jsxs","Combobox","a","b","eventDetails","newTags","tag","jsx","ComboboxInputGroup","cn","inputVariants","ComboboxChips","ComboboxValue","visible","overflow","Fragment","ComboboxChipRemove","ComboboxInput","ComboboxPopup","ComboboxStatus","ComboboxList","ComboboxItem","ComboboxItemAvatar","ComboboxItemTitle","ComboboxInfiniteScroll"],"mappings":"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","file":"chunk-6WWKP7KX.js","sourcesContent":["import * as React from \"react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport {\r\n ComboboxInput as ComboboxInputPrimitive,\r\n ComboboxInputGroup,\r\n} from \"../primitives/combobox\"\r\nimport {\r\n Combobox,\r\n ComboboxChip as ComboboxChipUI,\r\n ComboboxChipRemove,\r\n ComboboxChips,\r\n ComboboxInfiniteScroll,\r\n ComboboxItem,\r\n ComboboxList,\r\n ComboboxPortal,\r\n ComboboxPopup,\r\n ComboboxStatus,\r\n ComboboxValue,\r\n type ComboboxProps,\r\n ComboboxItemTitle,\r\n ComboboxItemAvatar\r\n} from \"../ui/combobox\"\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { inputVariants } from \"../ui/input\"\r\n\r\ntype ComboboxChipProps<Value extends { label: string; value: string; image?: string; tag?: true }> = Omit<ComboboxProps<Value, true>, \"multiple\" | \"items\"> & {\r\n multiple?: boolean\r\n inputPlaceholder?: string\r\n container?: React.ComponentProps<typeof ComboboxPortal>[\"container\"]\r\n items?: Value[] | undefined\r\n infiniteScroll?: React.ComponentProps<typeof ComboboxInfiniteScroll>\r\n isPending?: boolean\r\n /**\r\n * When true, enables creatable / taggable mode.\r\n * If the typed value has no exact match in the current item list,\r\n * a \"Create \\\"…\\\"\" option is shown at the top of the dropdown.\r\n * Created items are appended to the value with `{ label, value, tag: true }`.\r\n */\r\n taggable?: boolean\r\n /**\r\n * Maximum number of chips to show before collapsing the rest into a \"+N\" chip.\r\n * When undefined, all chips are shown.\r\n */\r\n maxVisible?: number\r\n}\r\n\r\nfunction ComboboxChip<Value extends { label: string; value: string; image?: string; tag?: true }>({\r\n multiple = true,\r\n inputPlaceholder = \"Search...\",\r\n container,\r\n items,\r\n infiniteScroll,\r\n isPending,\r\n taggable = false,\r\n maxVisible,\r\n ...props\r\n}: ComboboxChipProps<Value>) {\r\n const [inputValue, setInputValue] = useControlledState({\r\n value: props?.inputValue?.toString(),\r\n defaultValue: props?.defaultInputValue?.toString(),\r\n onChange: props?.onInputValueChange,\r\n })\r\n\r\n const [value, setValue] = useControlledState({\r\n value: props?.value ?? [],\r\n defaultValue: props?.defaultValue ?? [],\r\n onChange: props?.onValueChange,\r\n })\r\n\r\n // Track items created via taggable mode\r\n // Sync with value to avoid stale tags when controlled value is reset from outside\r\n const [createdItems, setCreatedItems] = React.useState<Value[]>([])\r\n const createdValuesRef = React.useRef<Set<string>>(new Set())\r\n\r\n React.useEffect(() => {\r\n const currentValues = new Set(value.map((v) => v.value))\r\n setCreatedItems((prev) => {\r\n const next = prev.filter((item) => currentValues.has(item.value))\r\n if (next.length === prev.length) return prev\r\n createdValuesRef.current = new Set(next.map((v) => v.value))\r\n return next\r\n })\r\n }, [value])\r\n\r\n const trimmedInput = inputValue?.toString().trim() ?? \"\"\r\n const isInputSelected = React.useMemo(() => {\r\n if (!trimmedInput) return false\r\n return value.some(\r\n (item) => item.value.toLowerCase() === trimmedInput.toLowerCase()\r\n )\r\n }, [trimmedInput, value])\r\n\r\n // true = show the taggable item in dropdown (either as \"Create:\" or as checked item)\r\n const isCreatingItem = React.useMemo(() => {\r\n if (!taggable || !trimmedInput) return false\r\n return !items?.some(\r\n (item) => item.label.toLowerCase() === trimmedInput.toLowerCase()\r\n )\r\n }, [taggable, trimmedInput, items])\r\n\r\n // Merge server items with locally created tags + the \"Create\" placeholder\r\n const combinedItems = React.useMemo(() => {\r\n const base: Value[] = [\r\n ...items ?? [],\r\n ...createdItems,\r\n ]\r\n\r\n if (isCreatingItem) {\r\n return [...base, { label: trimmedInput, value: trimmedInput, tag: true } as unknown as Value]\r\n }\r\n\r\n return base\r\n }, [items, createdItems, isCreatingItem, trimmedInput])\r\n\r\n const handleValueChange: ComboboxProps<Value, true>[\"onValueChange\"] = (value, eventDetails) => {\r\n if (taggable) {\r\n const newTags = value.filter(\r\n (v) => v?.tag === true && !createdValuesRef.current.has(v.value)\r\n )\r\n if (newTags.length > 0) {\r\n for (const tag of newTags) {\r\n createdValuesRef.current.add(tag.value)\r\n }\r\n setCreatedItems((prev) => [...prev, ...newTags])\r\n }\r\n }\r\n\r\n if (!multiple) {\r\n setValue([value[value.length - 1]], eventDetails)\r\n } else {\r\n setValue(value, eventDetails)\r\n }\r\n }\r\n\r\n return (\r\n <Combobox\r\n {...props}\r\n behavior=\"chip-outside\"\r\n multiple\r\n items={taggable ? combinedItems : items}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n onValueChange={handleValueChange}\r\n onInputValueChange={setInputValue}\r\n >\r\n {/* Input box with chips inside */}\r\n <ComboboxInputGroup\r\n className={cn(\r\n inputVariants(),\r\n \"h-auto min-h-13 flex flex-wrap items-center gap-1.5 px-3 py-1.5 cursor-text\"\r\n )}\r\n >\r\n {/* Chips inside the input box */}\r\n <ComboboxChips\r\n className={cn(\r\n \"contents\",\r\n maxVisible !== undefined && \"flex-nowrap overflow-hidden\"\r\n )}\r\n >\r\n <ComboboxValue>\r\n {(value: Value[]) => {\r\n const visible = maxVisible !== undefined ? value.slice(0, maxVisible) : value\r\n const overflow = maxVisible !== undefined ? value.length - maxVisible : 0\r\n return (\r\n <>\r\n {visible?.map((item) => (\r\n <ComboboxChipUI\r\n key={item?.value || \"\"}\r\n className={cn(maxVisible !== undefined && \"min-w-0 shrink\")}\r\n >\r\n {item?.image && (\r\n <img\r\n src={item.image}\r\n alt={item?.label || \"\"}\r\n className=\"size-4 rounded-full object-cover shrink-0 mr-1\"\r\n />\r\n )}\r\n {maxVisible !== undefined\r\n ? <span className=\"truncate\">{item?.label || \"\"}</span>\r\n : (item?.label || \"\")\r\n }\r\n <ComboboxChipRemove />\r\n </ComboboxChipUI>\r\n ))}\r\n {overflow > 0 && (\r\n <ComboboxChipUI className=\"shrink-0\">\r\n +{overflow}\r\n </ComboboxChipUI>\r\n )}\r\n </>\r\n )\r\n }}\r\n </ComboboxValue>\r\n {/* Text input — shrinks to fit remaining space (inside Chips so backspace works) */}\r\n <ComboboxInputPrimitive\r\n render={\r\n <input\r\n className=\"flex-1 min-w-[80px] bg-transparent outline-none text-body-regular-1 text-text-primary placeholder:text-text-placeholder\"\r\n placeholder={value.length === 0 ? inputPlaceholder : undefined}\r\n />\r\n }\r\n />\r\n </ComboboxChips>\r\n </ComboboxInputGroup>\r\n\r\n <ComboboxPopup container={container}>\r\n <ComboboxStatus\r\n status={\r\n isPending || items === undefined\r\n ? \"pending\"\r\n : items?.length === 0 && !isCreatingItem\r\n ? \"empty\"\r\n : null\r\n }\r\n />\r\n <ComboboxList>\r\n {items?.map((item) => (\r\n <ComboboxItem\r\n key={item.value}\r\n value={item as Value}\r\n >\r\n {(item.image !== undefined) && (\r\n <ComboboxItemAvatar\r\n src={item.image}\r\n fallbackText={[item.label?.[0], item.label?.split(\" \")?.[1]?.[0]].filter(Boolean).join(\"\")}\r\n imageAlt={item.label}\r\n />\r\n )}\r\n <ComboboxItemTitle>{item.label}</ComboboxItemTitle>\r\n </ComboboxItem>\r\n ))}\r\n {isCreatingItem && (\r\n <ComboboxItem\r\n value={{ label: trimmedInput, value: trimmedInput, tag: true }}\r\n >\r\n {!isInputSelected && (\r\n <span className=\"text-text-secondary text-body-medium-3 col-start-2\">Create: {trimmedInput}</span>\r\n )}\r\n {isInputSelected && (\r\n <ComboboxItemTitle>{trimmedInput}</ComboboxItemTitle>\r\n )}\r\n </ComboboxItem>\r\n )}\r\n <ComboboxInfiniteScroll {...infiniteScroll} />\r\n </ComboboxList>\r\n </ComboboxPopup>\r\n </Combobox>\r\n )\r\n}\r\n\r\nexport { ComboboxChip }\r\nexport type { ComboboxChipProps }\r\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a as a$1,b as b$1,m,e,q,s,w}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a as a$1,b as b$1,m,e,q,s,w}from'./chunk-C5UISTOE.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-7ZY7ZMEK.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-7ZY7ZMEK.js.map
|
|
@@ -1 +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"]}
|
|
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":"2WA2BA,IAAMA,CAAAA,CAA0B,CAAA,CAAA,aAAA,CAAyC,CACvE,IAAA,CAAM,IACR,CAAC,CAAA,CAWKC,CAAAA,CAA8C,CAClD,KAAA,CAAO,WAAA,CACP,MAAO,WAAA,CACP,EAAA,CAAI,YACJ,EAAA,CAAI,SAAA,CACJ,GAAI,SAAA,CACJ,EAAA,CAAI,SAAA,CACJ,EAAA,CAAI,aACN,CAAA,CAEMC,CAAAA,CAAiD,CACrD,KAAA,CAAO,QAAA,CACP,MAAO,QAAA,CACP,EAAA,CAAI,WACJ,EAAA,CAAI,UAAA,CACJ,GAAI,UAAA,CACJ,EAAA,CAAI,SACJ,EAAA,CAAI,QACN,EAEMC,CAAAA,CAAqD,CACzD,MAAO,qBAAA,CACP,KAAA,CAAO,sBACP,EAAA,CAAI,oBAAA,CACJ,GAAI,oBAAA,CACJ,EAAA,CAAI,qBACJ,EAAA,CAAI,oBAAA,CACJ,GAAI,oBACN,CAAA,CAUMC,EAAgB,CAAC,CAAE,QAAAC,CAAAA,CAAS,WAAA,CAAAC,EAAa,SAAA,CAAAC,CAAU,CAAA,GAA0B,CACjF,IAAMC,CAAAA,CAAOH,CAAAA,CAAUI,EAAMJ,CAAO,CAAA,CAAI,OAExC,OACEK,GAAAA,CAAC,QACC,SAAA,CAAWC,EAAAA,CACT,+GACAJ,CACF,CAAA,CAEC,SAAAC,CAAAA,EAAQE,GAAAA,CAACF,EAAA,CAAK,KAAA,CAAOF,CAAAA,CAAa,CAAA,CACrC,CAEJ,CAAA,CASMM,CAAAA,CAAqB,GACrBC,CAAAA,CAAsB,GAAA,CACtBC,EAAmB,CAAA,CASzB,SAASC,EAAc,CACrB,QAAA,CAAAC,IACA,KAAA,CAAOC,CAAAA,CACP,QAASC,CAAAA,CACT,QAAA,CAAAC,CACF,CAAA,CAAuB,CACrB,GAAM,CAAE,KAAAC,CAAAA,CAAO,IAAK,EAAU,CAAA,CAAA,UAAA,CAAWpB,CAAiB,EACpD,CAACqB,CAAAA,CAAMC,CAAO,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,KAAK,CAAA,CACtC,CAACC,IAAYC,CAAa,CAAA,CAAU,WAAS,EAAE,CAAA,CAC/C,CAACC,CAAAA,CAAWC,CAAY,EAAU,CAAA,CAAA,QAAA,CAAS,CAAC,EAC5CC,CAAAA,CAAgB,CAAA,CAAA,MAAA,CAAuB,IAAI,CAAA,CAE3CC,CAAAA,CAAc,UAClB,IAAMV,CAAAA,CAAY,OAAQW,CAAAA,EAA8B,CAAA,CAAQA,EAAK,KAAM,CAAA,CAC3E,CAACX,CAAW,CACd,CAAA,CAEMY,CAAAA,CAAsB,UAAQ,IAAM,CACxC,IAAMC,CAAAA,CAASR,GAAAA,CAAW,MAAK,CAAE,WAAA,GAEjC,OAAKQ,CAAAA,CAEEH,EAAM,MAAA,CAAQC,CAAAA,EAAS,CAC5B,IAAMG,CAAAA,CAAuB,wBAAsBH,CAAAA,CAAK,KAAK,CAAA,CAE7D,OAAOA,EAAK,KAAA,CAAM,WAAA,GAAc,QAAA,CAASE,CAAM,GAC1CF,CAAAA,CAAK,KAAA,CAAM,aAAY,CAAE,QAAA,CAASE,CAAM,CAAA,EACxCC,CAAAA,CAAY,SAASD,CAAAA,CAAO,OAAA,CAAQ,MAAO,EAAE,CAAC,CACrD,CAAC,EARmBH,CAStB,CAAA,CAAG,CAACL,GAAAA,CAAYK,CAAK,CAAC,CAAA,CAEhBK,CAAAA,CAAc,UAClB,IAAML,CAAAA,CAAM,KAAMC,CAAAA,EAASA,CAAAA,CAAK,QAAUZ,CAAe,CAAA,EAAK,KAC9D,CAACW,CAAAA,CAAOX,CAAe,CACzB,CAAA,CAEM,YAAU,IAAM,CACpBS,EAAa,CAAC,CAAA,CACVC,EAAQ,OAAA,GAASA,CAAAA,CAAQ,QAAQ,SAAA,CAAY,CAAA,EACnD,EAAG,CAACJ,GAAU,CAAC,CAAA,CAEf,IAAMW,EAAa,IAAA,CAAK,GAAA,CACtBJ,CAAAA,CAAc,MAAA,CAASlB,EACvBC,CACF,CAAA,CAEMsB,EAAqB,CAAA,CAAA,OAAA,CAAQ,IAAM,CACvC,IAAMC,CAAAA,CAAoB,KAAK,KAAA,CAAMX,CAAAA,CAAYb,CAAkB,CAAA,CAC7DyB,CAAAA,CAAa,KAAK,GAAA,CACtB,CAAA,CACAD,EAAoBtB,CACtB,CAAA,CACMwB,EAAe,IAAA,CAAK,IAAA,CAAKzB,EAAsBD,CAAkB,CAAA,CACjE2B,EAAW,IAAA,CAAK,GAAA,CACpBT,EAAc,MAAA,CACdM,CAAAA,CAAoBE,EAAexB,CACrC,CAAA,CAEA,OAAO,CACL,UAAA,CAAAuB,EACA,QAAA,CAAAE,CAAAA,CACA,MAAOT,CAAAA,CAAc,KAAA,CAAMO,CAAAA,CAAYE,CAAQ,CACjD,CACF,CAAA,CAAG,CAACT,CAAAA,CAAeL,CAAS,CAAC,CAAA,CAEvBe,GAAAA,CAAaL,EAAa,UAAA,CAAavB,CAAAA,CACvC6B,EAAgB,IAAA,CAAK,GAAA,CACzB,GACCX,CAAAA,CAAc,MAAA,CAASK,EAAa,QAAA,EAAYvB,CACnD,EAEM8B,CAAAA,CAA0B,CAAA,CAAA,WAAA,CAC7Bb,GAA6B,CACvBA,CAAAA,EAAM,QAEXV,CAAAA,CAASU,CAAAA,CAAK,KAAK,CAAA,CACnBL,CAAAA,CAAc,EAAE,CAAA,CAChBF,CAAAA,CAAQ,KAAK,CAAA,EACf,CAAA,CACA,CAACH,CAAQ,CACX,EAEA,OACEwB,IAAAA,CAACC,GAAAA,CAAA,CACC,SAAS,SAAA,CACT,QAAA,CAAU5B,IACV,UAAA,CAAYO,GAAAA,CACZ,MAAOO,CAAAA,CACP,IAAA,CAAMT,EACN,KAAA,CAAOY,CAAAA,CACP,YAAW,IAAA,CACX,MAAA,CAAQ,KACR,kBAAA,CAAoB,CAACY,EAAGC,CAAAA,GAAMD,CAAAA,CAAE,KAAA,GAAUC,CAAAA,CAAE,MAC5C,gBAAA,CAAkB,KAAA,CAClB,cAAeJ,CAAAA,CACf,kBAAA,CAAoBlB,EACpB,YAAA,CAAeH,CAAAA,EAAS,CACtBC,CAAAA,CAAQD,CAAI,EACPA,CAAAA,EAAMG,CAAAA,CAAc,EAAE,EAC7B,CAAA,CAGA,UAAAd,GAAAA,CAACqC,GAAAA,CAAA,CACC,MAAA,CACEJ,KAAC,QAAA,CAAA,CACC,IAAA,CAAK,SACL,SAAA,CAAWhC,EAAAA,CACTqC,EAAc,CAAE,IAAA,CAAA5B,CAAK,CAAC,CAAA,CACtB,oEACA,iIAAA,CACA,kDACF,EACA,QAAA,CAAUJ,GAAAA,CAEV,UAAA2B,IAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,2CAAA,CACd,QAAA,CAAA,CAAAjC,IAACN,CAAAA,CAAA,CACC,QAASa,CAAAA,CACT,WAAA,CAAaA,EACb,SAAA,CAAWhB,CAAAA,CAAoBmB,GAAQ,IAAI,CAAA,CAC7C,EACCH,CAAAA,EACCP,GAAAA,CAAC,QACC,SAAA,CAAWC,EAAAA,CACT,oBACAR,CAAAA,CAA2BiB,CAAAA,EAAQ,IAAI,CAAA,EAAK,oBAC9C,CAAA,CAEC,QAAA,CAAAH,EACH,CAAA,CAAA,CAEJ,CAAA,CACAP,IAACuC,kBAAAA,CAAA,CACC,UAAWtC,EAAAA,CACT,6BAAA,CACAT,EAAuBkB,CAAAA,EAAQ,IAAI,GAAK,UAC1C,CAAA,CACF,GACF,CAAA,CAEJ,CAAA,CAGAuB,KAACO,CAAAA,CAAA,CAAc,UAAU,MAAA,CACvB,QAAA,CAAA,CAAAxC,IAACyC,CAAAA,CAAA,CACC,YAAY,mBAAA,CACZ,YAAA,CAAW,iBACb,CAAA,CACAzC,GAAAA,CAAC0C,EAAA,CAAe,MAAA,CAAQtB,EAAc,MAAA,GAAW,CAAA,CAAI,QAAU,IAAA,CAAM,CAAA,CACrEpB,GAAAA,CAAC2C,CAAAA,CAAA,CACC,GAAA,CAAK1B,CAAAA,CACL,UAAU,gBAAA,CACV,KAAA,CAAO,CAAE,MAAA,CAAQO,CAAW,EAC5B,QAAA,CAAWoB,CAAAA,EAAU5B,EAAa4B,CAAAA,CAAM,aAAA,CAAc,SAAS,CAAA,CAE/D,QAAA,CAAA5C,IAAC,KAAA,CAAA,CACC,SAAA,CAAU,gCACV,KAAA,CAAO,CAAE,WAAA8B,GAAAA,CAAY,aAAA,CAAAC,CAAc,CAAA,CAElC,QAAA,CAAAN,EAAa,KAAA,CAAM,GAAA,CAAI,CAACN,CAAAA,CAAM0B,CAAAA,GAAiB,CAC9C,IAAMC,CAAAA,CAAQrB,EAAa,UAAA,CAAaoB,CAAAA,CAExC,OACE7C,GAAAA,CAAC+C,CAAAA,CAAA,CAEC,KAAA,CAAOD,EACP,KAAA,CAAO3B,CAAAA,CAEP,SAAAc,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,wCAAA,CACb,QAAA,CAAA,CAAAjC,IAACN,CAAAA,CAAA,CAAc,QAASyB,CAAAA,CAAK,KAAA,CAAO,YAAaA,CAAAA,CAAK,KAAA,CAAO,EAC7DnB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,yBAAA,CAA2B,SAAAmB,CAAAA,CAAK,KAAA,CAAM,EACtDc,IAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,qCAAA,CAAsC,QAAA,CAAA,CAAA,GAAA,CACzC,wBAAsBd,CAAAA,CAAK,KAAK,GAC7C,CAAA,CAAA,CACF,CAAA,CAAA,CAVKA,EAAK,KAWZ,CAEJ,CAAC,CAAA,CACH,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ,CAMA,IAAM6B,EAAuB,CAAA,CAAA,UAAA,CAG3B,CAAC,CAAE,SAAA,CAAAnD,CAAAA,CAAW,SAAAY,CAAAA,CAAU,IAAA,CAAMwC,EAAU,GAAGC,CAAM,EAAGC,CAAAA,GAAQ,CAC5D,IAAMC,CAAAA,CAAgB,CAAA,CAAA,UAAA,CAAW9D,CAAiB,CAAA,CAC5CoB,CAAAA,CAAOuC,GAAYG,CAAAA,CAAQ,IAAA,EAAQ,KAEnCC,CAAAA,CAAqB,CAAA,CAAA,WAAA,CACxBT,GAA+C,CAC1CA,CAAAA,CAAM,cAAc,KAAA,GAAU,GAAA,GAChCA,EAAM,aAAA,CAAc,KAAA,CAAQ,IAG9BnC,CAAAA,GAAWmC,CAAK,EAClB,CAAA,CACA,CAACnC,CAAQ,CACX,EAEA,OACET,GAAAA,CAAC,SACC,SAAA,CAAWC,EAAAA,CACTqC,EAAc,CAAE,IAAA,CAAA5B,CAAK,CAAC,CAAA,CACtB,2CACAb,CACF,CAAA,CACA,IAAKsD,CAAAA,CACL,IAAA,CAAK,MACL,QAAA,CAAUE,CAAAA,CACT,GAAGH,CAAAA,CACN,CAEJ,CAAC,CAAA,CACDF,CAAAA,CAAe,YAAc,gBAAA,CAM7B,IAAMM,EACE,CAAA,CAAA,UAAA,CAGJ,CAAC,CACD,SAAA,CAAAzD,CAAAA,CACA,SAAAY,CAAAA,CACA,KAAA,CAAAc,EACA,IAAA,CAAAb,CAAAA,CAAO,KACP,GAAGwC,CACL,CAAA,CAAGC,CAAAA,GAECnD,IAACV,CAAAA,CAAkB,QAAA,CAAlB,CAA2B,KAAA,CAAO,CAAE,KAAAoB,CAAK,CAAA,CACxC,SAAAV,GAAAA,CAAU,CAAA,CAAA,OAAA,CAAT,CACC,GAAA,CAAKmD,CAAAA,CACL,UAAWlD,EAAAA,CACT,kCAAA,CACAJ,CACF,CAAA,CACA,aAAA,CAAeH,EACf,sBAAA,CAAwBW,CAAAA,CACxB,eAAgB2C,CAAAA,CAChB,UAAA,CAAY,MACZ,KAAA,CAAOzB,CAAAA,EAAS,OAChB,QAAA,CAAWA,CAAAA,EAAUd,IAAWc,CAAAA,EAAU,EAAqB,EAC9D,GAAG2B,CAAAA,CACN,EACF,CAEH,EACHI,EAAW,WAAA,CAAc,YAAA","file":"chunk-7ZY7ZMEK.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"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a as a$1,b,c}from'./chunk-2RHSXF3X.js';import {a}from'./chunk-7P4PFMCM.js';import {a as a$
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {a as a$1,b,c}from'./chunk-2RHSXF3X.js';import {a}from'./chunk-7P4PFMCM.js';import {a as a$4}from'./chunk-5ETIHFSE.js';import {a as a$3}from'./chunk-XJTOYNCA.js';import {a as a$2}from'./chunk-UCCQUPMT.js';import'react';import {InfoIcon}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs,Fragment}from'react/jsx-runtime';function E({className:t,containerClassName:a$1,...n}){return jsx(a,{className:cn("relative w-full rounded-xl border border-border-primary bg-bg-primary",a$1),"data-slot":"table-container",children:jsx("table",{className:cn("w-full caption-bottom text-body-regular-2",t),"data-slot":"table",...n})})}function j(t){return jsx("thead",{"data-slot":"table-header",...t})}function q({className:t,...a}){return jsx("tbody",{className:cn("[&_tr:last-child_td:after]:h-0",t),"data-slot":"table-body",...a})}function B({className:t,...a}){return jsx("tfoot",{className:cn("border-t border-border-primary bg-bg-secondary font-medium [&>tr]:last:border-b-0",t),"data-slot":"table-footer",...a})}function D({className:t,...a}){return jsx("tr",{className:cn("transition-colors hover:bg-bg-secondary data-[state=selected]:bg-bg-brand-primary/40",t),"data-slot":"table-row",...a})}function O({className:t,align:a,variant:n="string",tooltip:l,sortable:o,sortDirection:p,onSort:b$1,children:N,...C}){let i=a||(n==="number"?"end":"start"),c$1=!!(l||o),R=i==="end",m=l?jsxs(a$1,{children:[jsx(b,{render:jsx("button",{type:"button",className:"inline-flex items-center justify-center text-fg-quaternary hover:text-text-primary"}),children:jsx(InfoIcon,{className:"size-3.5"})}),jsx(c,{side:"top",children:l})]}):null,f=o?jsx("button",{type:"button",onClick:b$1,className:"inline-flex items-center text-fg-quaternary hover:text-text-primary focus:outline-none","aria-label":"Sort column",children:p==="asc"?jsx(a$2,{size:12}):p==="desc"?jsx(a$3,{size:12}):jsx(a$4,{size:12})}):null,d=jsx("span",{className:cn("truncate",o&&"cursor-pointer select-none"),onClick:o?b$1:void 0,children:N});return jsx("th",{className:cn("relative after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-border-tertiary bg-bg-tertiary text-label-bold-3 text-text-tertiary h-10 px-4 py-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",!c$1&&i==="end"&&"text-right",!c$1&&i==="start"&&"text-left",!c$1&&i==="center"&&"text-center",t),"data-slot":"table-head",...C,children:c$1?jsx("div",{className:"flex w-full items-center justify-between gap-2",children:R?jsxs(Fragment,{children:[jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[m,f]}),jsx("div",{className:"flex items-center shrink-0 justify-end",children:d})]}):jsxs(Fragment,{children:[d,jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[m,f]})]})}):d})}function _({className:t,align:a,variant:n="string",...l}){let o=a||(n==="number"?"end":"start");return jsx("td",{className:cn("relative after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-border-tertiary bg-bg-primary text-text-primary px-4 py-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",o==="end"&&"text-right",o==="start"&&"text-left",o==="center"&&"text-center",t),"data-slot":"table-cell",...l})}function F({className:t,...a}){return jsx("caption",{className:cn("text-text-secondary mt-4 text-body-regular-2",t),"data-slot":"table-caption",...a})}export{E as a,j as b,q as c,B as d,D as e,O as f,_ as g,F as h};//# sourceMappingURL=chunk-BRWBF2EN.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-BRWBF2EN.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui/table.tsx"],"names":["Table","className","containerClassName","props","jsx","ScrollArea","cn","TableHeader","TableBody","TableFooter","TableRow","TableHead","align","variant","tooltip","sortable","sortDirection","onSort","children","effectiveAlign","hasControls","isEnd","tooltipElement","jsxs","Tooltip","TooltipTrigger","InfoIcon","TooltipPopup","sortElement","sort_ascending_icon_default","sort_descending_icon_default","sort_default_icon_default","titleElement","Fragment","TableCell","TableCaption"],"mappings":"yVAgBA,SAASA,CAAAA,CAAM,CAAE,SAAA,CAAAC,CAAAA,CAAW,kBAAA,CAAAC,IAAoB,GAAGC,CAAM,EAAe,CACtE,OACEC,IAACC,CAAAA,CAAA,CACC,UAAWC,EAAAA,CACT,uEAAA,CACAJ,GACF,CAAA,CACA,WAAA,CAAU,kBAEV,QAAA,CAAAE,GAAAA,CAAC,SACC,SAAA,CAAWE,EAAAA,CAAG,2CAAA,CAA6CL,CAAS,CAAA,CACpE,WAAA,CAAU,QACT,GAAGE,CAAAA,CACN,EACF,CAEJ,CAEA,SAASI,CAAAA,CAAYJ,CAAAA,CAAsC,CACzD,OACEC,GAAAA,CAAC,SACC,WAAA,CAAU,cAAA,CACT,GAAGD,CAAAA,CACN,CAEJ,CAEA,SAASK,CAAAA,CAAU,CAAE,SAAA,CAAAP,CAAAA,CAAW,GAAGE,CAAM,CAAA,CAAkC,CACzE,OACEC,GAAAA,CAAC,OAAA,CAAA,CACC,UAAWE,EAAAA,CAAG,gCAAA,CAAkCL,CAAS,CAAA,CACzD,WAAA,CAAU,YAAA,CACT,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASM,CAAAA,CAAY,CAAE,SAAA,CAAAR,CAAAA,CAAW,GAAGE,CAAM,CAAA,CAAkC,CAC3E,OACEC,GAAAA,CAAC,OAAA,CAAA,CACC,UAAWE,EAAAA,CACT,mFAAA,CACAL,CACF,CAAA,CACA,WAAA,CAAU,eACT,GAAGE,CAAAA,CACN,CAEJ,CAEA,SAASO,EAAS,CAAE,SAAA,CAAAT,EAAW,GAAGE,CAAM,CAAA,CAA+B,CACrE,OACEC,GAAAA,CAAC,MACC,SAAA,CAAWE,EAAAA,CACT,uFACAL,CACF,CAAA,CACA,YAAU,WAAA,CACT,GAAGE,EACN,CAEJ,CAWA,SAASQ,CAAAA,CAAU,CACjB,UAAAV,CAAAA,CACA,KAAA,CAAAW,EACA,OAAA,CAAAC,CAAAA,CAAU,QAAA,CACV,OAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,aAAA,CAAAC,CAAAA,CACA,OAAAC,GAAAA,CACA,QAAA,CAAAC,EACA,GAAGf,CACL,EAAmB,CACjB,IAAMgB,EAAiBP,CAAAA,GAAUC,CAAAA,GAAY,SAAW,KAAA,CAAQ,OAAA,CAAA,CAC1DO,IAAc,CAAA,EAAQN,CAAAA,EAAWC,CAAAA,CAAAA,CACjCM,CAAAA,CAAQF,CAAAA,GAAmB,KAAA,CAE3BG,EAAiBR,CAAAA,CACrBS,IAAAA,CAACC,IAAA,CACC,QAAA,CAAA,CAAApB,IAACqB,CAAAA,CAAA,CACC,MAAA,CACErB,GAAAA,CAAC,QAAA,CAAA,CACC,IAAA,CAAK,SACL,SAAA,CAAU,oFAAA,CACZ,EAGF,QAAA,CAAAA,GAAAA,CAACsB,SAAA,CAAS,SAAA,CAAU,UAAA,CAAW,CAAA,CACjC,CAAA,CACAtB,GAAAA,CAACuB,EAAA,CAAa,IAAA,CAAK,MAAO,QAAA,CAAAb,CAAAA,CAAQ,GACpC,CAAA,CACE,IAAA,CAEEc,EAAcb,CAAAA,CAClBX,GAAAA,CAAC,UACC,IAAA,CAAK,QAAA,CACL,QAASa,GAAAA,CACT,SAAA,CAAU,yFACV,YAAA,CAAW,aAAA,CAEV,QAAA,CAAAD,CAAAA,GAAkB,KAAA,CACjBZ,GAAAA,CAACyB,IAAA,CAAkB,IAAA,CAAM,GAAI,CAAA,CAC3Bb,CAAAA,GAAkB,OACpBZ,GAAAA,CAAC0B,GAAAA,CAAA,CAAmB,IAAA,CAAM,EAAA,CAAI,EAE9B1B,GAAAA,CAAC2B,GAAAA,CAAA,CAAgB,IAAA,CAAM,EAAA,CAAI,EAE/B,CAAA,CACE,IAAA,CAEEC,CAAAA,CACJ5B,GAAAA,CAAC,MAAA,CAAA,CACC,SAAA,CAAWE,GAAG,UAAA,CAAYS,CAAAA,EAAY,4BAA4B,CAAA,CAClE,OAAA,CAASA,EAAWE,GAAAA,CAAS,MAAA,CAE5B,SAAAC,CAAAA,CACH,CAAA,CAGF,OACEd,GAAAA,CAAC,IAAA,CAAA,CACC,UAAWE,EAAAA,CACT,4NAAA,CACA,CAACc,GAAAA,EAAeD,CAAAA,GAAmB,KAAA,EAAS,YAAA,CAC5C,CAACC,GAAAA,EAAeD,IAAmB,OAAA,EAAW,WAAA,CAC9C,CAACC,GAAAA,EAAeD,CAAAA,GAAmB,UAAY,aAAA,CAC/ClB,CACF,CAAA,CACA,WAAA,CAAU,YAAA,CACT,GAAGE,EAEH,QAAA,CAAAiB,GAAAA,CACChB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iDACZ,QAAA,CAAAiB,CAAAA,CACCE,IAAAA,CAAAU,QAAAA,CAAA,CACE,QAAA,CAAA,CAAAV,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qCACZ,QAAA,CAAA,CAAAD,CAAAA,CACAM,GACH,CAAA,CACAxB,GAAAA,CAAC,OAAI,SAAA,CAAU,wCAAA,CACZ,SAAA4B,CAAAA,CACH,CAAA,CAAA,CACF,EAEAT,IAAAA,CAAAU,QAAAA,CAAA,CACG,QAAA,CAAA,CAAAD,CAAAA,CACDT,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oCAAA,CACZ,UAAAD,CAAAA,CACAM,CAAAA,CAAAA,CACH,GACF,CAAA,CAEJ,CAAA,CAEAI,EAEJ,CAEJ,CAOA,SAASE,CAAAA,CAAU,CACjB,UAAAjC,CAAAA,CACA,KAAA,CAAAW,EACA,OAAA,CAAAC,CAAAA,CAAU,SACV,GAAGV,CACL,CAAA,CAAmB,CACjB,IAAMgB,CAAAA,CAAiBP,IAAUC,CAAAA,GAAY,QAAA,CAAW,MAAQ,OAAA,CAAA,CAEhE,OACET,IAAC,IAAA,CAAA,CACC,SAAA,CAAWE,GACT,mMAAA,CACAa,CAAAA,GAAmB,OAAS,YAAA,CAC5BA,CAAAA,GAAmB,SAAW,WAAA,CAC9BA,CAAAA,GAAmB,UAAY,aAAA,CAC/BlB,CACF,CAAA,CACA,WAAA,CAAU,YAAA,CACT,GAAGE,EACN,CAEJ,CAEA,SAASgC,CAAAA,CAAa,CACpB,UAAAlC,CAAAA,CACA,GAAGE,CACL,CAAA,CAAoC,CAClC,OACEC,IAAC,SAAA,CAAA,CACC,SAAA,CAAWE,GAAG,8CAAA,CAAgDL,CAAS,EACvE,WAAA,CAAU,eAAA,CACT,GAAGE,CAAAA,CACN,CAEJ","file":"chunk-RH7BQGTL.js","sourcesContent":["import * as React from \"react\"\r\nimport { InfoIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport { SortAscendingIcon, SortDefaultIcon, SortDescendingIcon } from \"../icons\"\r\nimport {\r\n Tooltip,\r\n TooltipPopup,\r\n TooltipTrigger,\r\n} from \"./tooltip\"\r\nimport { ScrollArea } from \"./scroll-area\"\r\n\r\ninterface TableProps extends React.ComponentProps<\"table\"> {\r\n containerClassName?: string\r\n}\r\n\r\nfunction Table({ className, containerClassName, ...props }: TableProps) {\r\n return (\r\n <ScrollArea\r\n className={cn(\r\n \"relative w-full rounded-xl border border-border-primary bg-bg-primary\",\r\n containerClassName\r\n )}\r\n data-slot=\"table-container\"\r\n >\r\n <table\r\n className={cn(\"w-full caption-bottom text-body-regular-2\", className)}\r\n data-slot=\"table\"\r\n {...props}\r\n />\r\n </ScrollArea>\r\n )\r\n}\r\n\r\nfunction TableHeader(props: React.ComponentProps<\"thead\">) {\r\n return (\r\n <thead\r\n data-slot=\"table-header\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\r\n return (\r\n <tbody\r\n className={cn(\"[&_tr:last-child_td:after]:h-0\", className)}\r\n data-slot=\"table-body\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\r\n return (\r\n <tfoot\r\n className={cn(\r\n \"border-t border-border-primary bg-bg-secondary font-medium [&>tr]:last:border-b-0\",\r\n className\r\n )}\r\n data-slot=\"table-footer\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\r\n return (\r\n <tr\r\n className={cn(\r\n \"transition-colors hover:bg-bg-secondary data-[state=selected]:bg-bg-brand-primary/40\",\r\n className\r\n )}\r\n data-slot=\"table-row\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ninterface TableHeadProps extends Omit<React.ComponentProps<\"th\">, \"align\"> {\r\n align?: \"start\" | \"end\" | \"center\"\r\n variant?: \"string\" | \"number\"\r\n tooltip?: React.ReactNode\r\n sortable?: boolean\r\n sortDirection?: \"asc\" | \"desc\" | false | null\r\n onSort?: () => void\r\n}\r\n\r\nfunction TableHead({\r\n className,\r\n align,\r\n variant = \"string\",\r\n tooltip,\r\n sortable,\r\n sortDirection,\r\n onSort,\r\n children,\r\n ...props\r\n}: TableHeadProps) {\r\n const effectiveAlign = align || (variant === \"number\" ? \"end\" : \"start\")\r\n const hasControls = Boolean(tooltip || sortable)\r\n const isEnd = effectiveAlign === \"end\"\r\n\r\n const tooltipElement = tooltip ? (\r\n <Tooltip>\r\n <TooltipTrigger\r\n render={\r\n <button\r\n type=\"button\"\r\n className=\"inline-flex items-center justify-center text-fg-quaternary hover:text-text-primary\"\r\n />\r\n }\r\n >\r\n <InfoIcon className=\"size-3.5\" />\r\n </TooltipTrigger>\r\n <TooltipPopup side=\"top\">{tooltip}</TooltipPopup>\r\n </Tooltip>\r\n ) : null\r\n\r\n const sortElement = sortable ? (\r\n <button\r\n type=\"button\"\r\n onClick={onSort}\r\n className=\"inline-flex items-center text-fg-quaternary hover:text-text-primary focus:outline-none\"\r\n aria-label=\"Sort column\"\r\n >\r\n {sortDirection === \"asc\" ? (\r\n <SortAscendingIcon size={12} />\r\n ) : sortDirection === \"desc\" ? (\r\n <SortDescendingIcon size={12} />\r\n ) : (\r\n <SortDefaultIcon size={12} />\r\n )}\r\n </button>\r\n ) : null\r\n\r\n const titleElement = (\r\n <span\r\n className={cn(\"truncate\", sortable && \"cursor-pointer select-none\")}\r\n onClick={sortable ? onSort : undefined}\r\n >\r\n {children}\r\n </span>\r\n )\r\n\r\n return (\r\n <th\r\n className={cn(\r\n \"relative after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-border-tertiary bg-bg-tertiary text-label-bold-3 text-text-tertiary h-10 px-4 py-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\r\n !hasControls && effectiveAlign === \"end\" && \"text-right\",\r\n !hasControls && effectiveAlign === \"start\" && \"text-left\",\r\n !hasControls && effectiveAlign === \"center\" && \"text-center\",\r\n className\r\n )}\r\n data-slot=\"table-head\"\r\n {...props}\r\n >\r\n {hasControls ? (\r\n <div className=\"flex w-full items-center justify-between gap-2\">\r\n {isEnd ? (\r\n <>\r\n <div className=\"flex items-center gap-1.5 shrink-0\">\r\n {tooltipElement}\r\n {sortElement}\r\n </div>\r\n <div className=\"flex items-center shrink-0 justify-end\">\r\n {titleElement}\r\n </div>\r\n </>\r\n ) : (\r\n <>\r\n {titleElement}\r\n <div className=\"flex items-center gap-1.5 shrink-0\">\r\n {tooltipElement}\r\n {sortElement}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n ) : (\r\n titleElement\r\n )}\r\n </th>\r\n )\r\n}\r\n\r\ninterface TableCellProps extends Omit<React.ComponentProps<\"td\">, \"align\"> {\r\n align?: \"start\" | \"end\" | \"center\"\r\n variant?: \"string\" | \"number\"\r\n}\r\n\r\nfunction TableCell({\r\n className,\r\n align,\r\n variant = \"string\",\r\n ...props\r\n}: TableCellProps) {\r\n const effectiveAlign = align || (variant === \"number\" ? \"end\" : \"start\")\r\n\r\n return (\r\n <td\r\n className={cn(\r\n \"relative after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-border-tertiary bg-bg-primary text-text-primary px-4 py-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\r\n effectiveAlign === \"end\" && \"text-right\",\r\n effectiveAlign === \"start\" && \"text-left\",\r\n effectiveAlign === \"center\" && \"text-center\",\r\n className\r\n )}\r\n data-slot=\"table-cell\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction TableCaption({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"caption\">) {\r\n return (\r\n <caption\r\n className={cn(\"text-text-secondary mt-4 text-body-regular-2\", className)}\r\n data-slot=\"table-caption\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport {\r\n Table,\r\n TableBody,\r\n TableCaption,\r\n TableCell,\r\n TableFooter,\r\n TableHead,\r\n TableHeader,\r\n TableRow,\r\n type TableCellProps,\r\n type TableHeadProps,\r\n type TableProps,\r\n}"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui/table.tsx"],"names":["Table","className","containerClassName","props","jsx","ScrollArea","cn","TableHeader","TableBody","TableFooter","TableRow","TableHead","align","variant","tooltip","sortable","sortDirection","onSort","children","effectiveAlign","hasControls","isEnd","tooltipElement","jsxs","Tooltip","TooltipTrigger","InfoIcon","TooltipPopup","sortElement","sort_ascending_icon_default","sort_descending_icon_default","sort_default_icon_default","titleElement","Fragment","TableCell","TableCaption"],"mappings":"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","file":"chunk-BRWBF2EN.js","sourcesContent":["import * as React from \"react\"\r\nimport { InfoIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport { SortAscendingIcon, SortDefaultIcon, SortDescendingIcon } from \"../icons\"\r\nimport {\r\n Tooltip,\r\n TooltipPopup,\r\n TooltipTrigger,\r\n} from \"./tooltip\"\r\nimport { ScrollArea } from \"./scroll-area\"\r\n\r\ninterface TableProps extends React.ComponentProps<\"table\"> {\r\n containerClassName?: string\r\n}\r\n\r\nfunction Table({ className, containerClassName, ...props }: TableProps) {\r\n return (\r\n <ScrollArea\r\n className={cn(\r\n \"relative w-full rounded-xl border border-border-primary bg-bg-primary\",\r\n containerClassName\r\n )}\r\n data-slot=\"table-container\"\r\n >\r\n <table\r\n className={cn(\"w-full caption-bottom text-body-regular-2\", className)}\r\n data-slot=\"table\"\r\n {...props}\r\n />\r\n </ScrollArea>\r\n )\r\n}\r\n\r\nfunction TableHeader(props: React.ComponentProps<\"thead\">) {\r\n return (\r\n <thead\r\n data-slot=\"table-header\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\r\n return (\r\n <tbody\r\n className={cn(\"[&_tr:last-child_td:after]:h-0\", className)}\r\n data-slot=\"table-body\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\r\n return (\r\n <tfoot\r\n className={cn(\r\n \"border-t border-border-primary bg-bg-secondary font-medium [&>tr]:last:border-b-0\",\r\n className\r\n )}\r\n data-slot=\"table-footer\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\r\n return (\r\n <tr\r\n className={cn(\r\n \"transition-colors hover:bg-bg-secondary data-[state=selected]:bg-bg-brand-primary/40\",\r\n className\r\n )}\r\n data-slot=\"table-row\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ninterface TableHeadProps extends Omit<React.ComponentProps<\"th\">, \"align\"> {\r\n align?: \"start\" | \"end\" | \"center\"\r\n variant?: \"string\" | \"number\"\r\n tooltip?: React.ReactNode\r\n sortable?: boolean\r\n sortDirection?: \"asc\" | \"desc\" | false | null\r\n onSort?: () => void\r\n}\r\n\r\nfunction TableHead({\r\n className,\r\n align,\r\n variant = \"string\",\r\n tooltip,\r\n sortable,\r\n sortDirection,\r\n onSort,\r\n children,\r\n ...props\r\n}: TableHeadProps) {\r\n const effectiveAlign = align || (variant === \"number\" ? \"end\" : \"start\")\r\n const hasControls = Boolean(tooltip || sortable)\r\n const isEnd = effectiveAlign === \"end\"\r\n\r\n const tooltipElement = tooltip ? (\r\n <Tooltip>\r\n <TooltipTrigger\r\n render={\r\n <button\r\n type=\"button\"\r\n className=\"inline-flex items-center justify-center text-fg-quaternary hover:text-text-primary\"\r\n />\r\n }\r\n >\r\n <InfoIcon className=\"size-3.5\" />\r\n </TooltipTrigger>\r\n <TooltipPopup side=\"top\">{tooltip}</TooltipPopup>\r\n </Tooltip>\r\n ) : null\r\n\r\n const sortElement = sortable ? (\r\n <button\r\n type=\"button\"\r\n onClick={onSort}\r\n className=\"inline-flex items-center text-fg-quaternary hover:text-text-primary focus:outline-none\"\r\n aria-label=\"Sort column\"\r\n >\r\n {sortDirection === \"asc\" ? (\r\n <SortAscendingIcon size={12} />\r\n ) : sortDirection === \"desc\" ? (\r\n <SortDescendingIcon size={12} />\r\n ) : (\r\n <SortDefaultIcon size={12} />\r\n )}\r\n </button>\r\n ) : null\r\n\r\n const titleElement = (\r\n <span\r\n className={cn(\"truncate\", sortable && \"cursor-pointer select-none\")}\r\n onClick={sortable ? onSort : undefined}\r\n >\r\n {children}\r\n </span>\r\n )\r\n\r\n return (\r\n <th\r\n className={cn(\r\n \"relative after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-border-tertiary bg-bg-tertiary text-label-bold-3 text-text-tertiary h-10 px-4 py-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\r\n !hasControls && effectiveAlign === \"end\" && \"text-right\",\r\n !hasControls && effectiveAlign === \"start\" && \"text-left\",\r\n !hasControls && effectiveAlign === \"center\" && \"text-center\",\r\n className\r\n )}\r\n data-slot=\"table-head\"\r\n {...props}\r\n >\r\n {hasControls ? (\r\n <div className=\"flex w-full items-center justify-between gap-2\">\r\n {isEnd ? (\r\n <>\r\n <div className=\"flex items-center gap-1.5 shrink-0\">\r\n {tooltipElement}\r\n {sortElement}\r\n </div>\r\n <div className=\"flex items-center shrink-0 justify-end\">\r\n {titleElement}\r\n </div>\r\n </>\r\n ) : (\r\n <>\r\n {titleElement}\r\n <div className=\"flex items-center gap-1.5 shrink-0\">\r\n {tooltipElement}\r\n {sortElement}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n ) : (\r\n titleElement\r\n )}\r\n </th>\r\n )\r\n}\r\n\r\ninterface TableCellProps extends Omit<React.ComponentProps<\"td\">, \"align\"> {\r\n align?: \"start\" | \"end\" | \"center\"\r\n variant?: \"string\" | \"number\"\r\n}\r\n\r\nfunction TableCell({\r\n className,\r\n align,\r\n variant = \"string\",\r\n ...props\r\n}: TableCellProps) {\r\n const effectiveAlign = align || (variant === \"number\" ? \"end\" : \"start\")\r\n\r\n return (\r\n <td\r\n className={cn(\r\n \"relative after:absolute after:inset-x-0 after:bottom-0 after:h-px after:bg-border-tertiary bg-bg-primary text-text-primary px-4 py-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\r\n effectiveAlign === \"end\" && \"text-right\",\r\n effectiveAlign === \"start\" && \"text-left\",\r\n effectiveAlign === \"center\" && \"text-center\",\r\n className\r\n )}\r\n data-slot=\"table-cell\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction TableCaption({\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"caption\">) {\r\n return (\r\n <caption\r\n className={cn(\"text-text-secondary mt-4 text-body-regular-2\", className)}\r\n data-slot=\"table-caption\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nexport {\r\n Table,\r\n TableBody,\r\n TableCaption,\r\n TableCell,\r\n TableFooter,\r\n TableHead,\r\n TableHeader,\r\n TableRow,\r\n type TableCellProps,\r\n type TableHeadProps,\r\n type TableProps,\r\n}"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {c,d,e,f,g,a,h,i,j,k,l,m,n,o,p,q,r,s,E,t,u,v,w,x,y,z,A,B,C,D}from'./chunk-HHG7BSWN.js';import {a as a$3}from'./chunk-TED2PUK6.js';import {b}from'./chunk-Y6TKCAAJ.js';import {a as a$1}from'./chunk-7P4PFMCM.js';import {a as a$2}from'./chunk-XG3W7QMP.js';import {b as b$2,c as c$1,d as d$1}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {c,d,e,f,g,a,h,i,j,k,l,m,n,o,p,q,r,s,E,t,u,v,w,x,y,z,A,B,C,D}from'./chunk-HHG7BSWN.js';import {a as a$3}from'./chunk-TED2PUK6.js';import {b}from'./chunk-Y6TKCAAJ.js';import {a as a$1}from'./chunk-7P4PFMCM.js';import {a as a$2}from'./chunk-XG3W7QMP.js';import {b as b$2,c as c$1,d as d$1}from'./chunk-Y5YFPTOQ.js';import {b as b$1,e as e$1}from'./chunk-JLZNZFOO.js';import'react';import {SearchIcon,XIcon,Loader2Icon,CheckCircle2Icon}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs,Fragment}from'react/jsx-runtime';function wo(o){return jsx(c,{...o})}function io(o){let{className:t,...r}=o;return jsx(d,{className:cn("group/combobox-trigger flex items-center gap-2",t),...r})}function ko(o){let{className:t,...r}=o;return jsx(e,{className:cn("text-label-semibold-2 text-text-secondary",t),...r})}function Lo(o){let{className:t,...r}=o;return jsx(f,{className:cn("flex w-full items-center gap-2",t),...r})}function Ro({className:o,wrapperClassName:t,size:r="xs",...i}){return jsx("div",{className:cn("p-3 border-b border-border-primary",t),children:jsx(g,{className:o,render:jsx(b,{size:r,startContent:jsx(SearchIcon,{})}),...i})})}function So({className:o,displayValueKey:t={label:"label",value:"value"},placeholder:r="Search and Select Company",inputProps:i,size:m,...s}){let{inputValue:p,setInputValue:n}=a(),{className:x,startContent:to,...ro}=i||{};return jsx("div",{className:cn("flex flex-col gap-2",o),children:jsxs(so,{onMouseDown:C=>C.preventBaseUIHandler(),className:"flex-col",children:[jsx(g,{render:jsx(b,{className:cn("h-9 text-body-regular-3 pl-9 pr-7",x),endContent:jsx(io,{nativeButton:false,render:jsx(XIcon,{className:"!size-5 !right-1.5 data-[hidden=true]:opacity-0 opacity-100 transition-opacity duration-300 cursor-pointer","data-hidden":!p,"data-slot":"combobox-clear-input",onClick:C=>{n("",{reason:"none",event:C.nativeEvent,cancel:()=>{},allowPropagation:()=>{},isCanceled:false,isPropagationAllowed:true,trigger:void 0});}})}),placeholder:r,startContent:to??jsx(SearchIcon,{className:"!size-4 !text-fg-tertiary-hover"}),...ro}),...s}),jsx(mo,{children:C=>C?.map(y=>jsxs(po,{children:[y?.[t.label]||"",jsx(ao,{})]},y?.[t.value]||""))})]})})}function Go(o){let{className:t,...r}=o;return jsx(h,{className:cn("text-text-secondary",t),...r})}function Ao(o){return jsx(i,{render:jsx(XIcon,{}),...o})}function mo(o){return jsx(j,{...o})}function so({className:o,...t}){return jsx(k,{className:cn("flex flex-wrap gap-2",o),...t})}function po({className:o,...t}){return jsx(b$1,{className:cn("ring-1 ring-border-brand text-body-medium-3",o),color:"brand",render:jsx(l,{...t}),size:"lg"})}function ao({className:o,...t}){return jsx(e$1,{className:cn("text-fg-quaternary",o),render:jsx(m,{...t})})}function Ho({className:o$1,align:t="start",sideOffset:r=4,container:i,initialFocus:m,finalFocus:s,style:p$1,children:n$1,...x}){return jsx(n,{container:i,children:jsx(o,{align:t,className:"isolate z-50",sideOffset:r,...x,children:jsx(p,{className:cn("group/combobox-popup bg-bg-primary text-text-primary max-h-(--available-height) w-72 max-w-(--available-width) origin-(--transform-origin) rounded-md border border-border-primary shadow-md outline-hidden",o$1),finalFocus:s,initialFocus:m,style:p$1,children:jsx(no,{children:n$1})})})})}function zo(o){return jsx(n,{...o})}function Vo(o$1){return jsx(o,{...o$1})}function To(o){let{className:t,...r}=o;return jsx(q,{className:cn("bg-black/30",t),...r})}function Bo({className:o,status:t,...r$1}){let{inputValue:i}=a(),m=i?.toString().trim(),p=t==="empty"&&m?`No matches for "${m}".`:t==="empty"&&!m?"No results.":t==="pending"?jsxs(Fragment,{children:[jsx(Loader2Icon,{className:"animate-spin size-4"}),jsx("span",{children:"Searching..."})]}):null;return jsx(r,{className:cn("px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2",!p&&"hidden",o),...r$1,children:p})}function Eo({className:o,...t}){return jsx(s,{className:cn("px-3 py-2 text-body-regular-2 text-text-secondary",o),...t})}function Fo({className:o,children:t$1,...r}){let i=E();return jsx(a$1,{size:"sm",viewportRender:jsx(t,{className:cn("max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] flex flex-col p-1 focus-visible:outline-none data-[empty]:hidden",o),...r,children:typeof t$1=="function"?(m,s)=>t$1(m,s,i.length):t$1})})}function no(o){let{className:t,...r}=o;return jsx(u,{className:cn("absolute inset-0 bg-bg-primary-hover",t),...r})}function xo(o){return jsx(v,{...o})}function Mo(o){let{className:t,...r}=o;return jsx(w,{className:cn("group/combobox-row",t),...r})}function Do({className:o,children:t,indicator:r="check-circle",...i}){let{disabled:m}=i;return jsx(xo,{activeClassName:"bg-bg-primary-hover rounded-md",disabled:m,children:jsxs(x,{"data-indicator":r,className:cn("group/combobox-item relative grid grid-cols-[auto_1fr] items-center gap-x-2 my-px p-xp-md cursor-default outline-none select-none [[data-indicator=check-circle][data-selected]]:pr-8 data-[indicator=checkbox]:pl-8",o),...i,children:[t,jsx(Co,{className:"absolute group-data-[indicator=check-circle]/combobox-item:right-2 group-data-[indicator=checkbox]/combobox-item:left-2",keepMounted:r==="checkbox",render:(s,p)=>jsxs("span",{...s,children:[r==="check-circle"&&jsx(CheckCircle2Icon,{className:"size-4 text-fg-brand-primary shrink-0"}),r==="checkbox"&&jsx(a$2,{checked:p.selected})]})})]})})}function Oo({className:o,...t}){return jsx("span",{"data-slot":"combobox-item-title",className:cn("col-start-2 text-body-medium-3 text-text-primary truncate row-span-2 group-has-[[data-slot=combobox-item-description]]/combobox-item:row-span-1",o),...t})}function qo({className:o,...t}){return jsx("span",{"data-slot":"combobox-item-description",className:cn("col-start-2 text-body-regular-3 text-text-secondary truncate",o),...t})}function _o({className:o,...t}){return jsx("div",{"data-slot":"combobox-item-icon",className:cn("row-span-2 col-start-1 flex items-center justify-center size-6 rounded-md bg-bg-brand-solid text-fg-white shrink-0 [&_svg]:size-3.5",o),...t})}function jo({src:o,imageSrc:t,className:r,avatarClassName:i,imageAlt:m,fallbackText:s,children:p,...n}){let x=o??t;return jsx("div",{"data-slot":"combobox-item-avatar",className:cn("row-span-2 col-start-1 size-6 rounded-full overflow-hidden shrink-0",r),children:jsxs(b$2,{className:cn("size-full shrink-0",i),...n,children:[jsx(c$1,{alt:m,src:x}),jsx(d$1,{className:"flex aspect-square size-full items-center justify-center bg-bg-tertiary text-label-semibold-2 text-text-quaternary",children:s??p})]})})}function Co(o){return jsx(y,{...o})}function Uo(o){let{className:t,...r}=o;return jsx(z,{className:cn("my-1 h-px bg-border-primary",t),...r})}function Xo(o){let{className:t,...r}=o;return jsx(A,{className:cn("py-1",t),...r})}function $o(o){let{className:t,...r}=o;return jsx(B,{className:cn("px-3 py-1 text-body-semibold-sm text-text-secondary",t),...r})}function Jo(o){return jsx(C,{...o})}function Ko(o){let{className:t,...r}=o;return jsx(D,{className:cn("fill-bg-primary",t),...r})}function Qo({hasMore:o,threshold:t=.5,...r}){return jsx(a$3,{hasMore:o,threshold:t,...r,children:o&&jsxs("div",{className:"px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2",children:[jsx(Loader2Icon,{className:"animate-spin size-4"}),jsx("span",{children:"Loading more..."})]})})}export{jo as A,Co as B,Uo as C,Xo as D,$o as E,Jo as F,Ko as G,Qo as H,wo as a,io as b,ko as c,Lo as d,Ro as e,So as f,Go as g,Ao as h,mo as i,so as j,po as k,ao as l,Ho as m,zo as n,Vo as o,To as p,Bo as q,Eo as r,Fo as s,no as t,xo as u,Mo as v,Do as w,Oo as x,qo as y,_o as z};//# sourceMappingURL=chunk-C5UISTOE.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-C5UISTOE.js.map
|