@myrjfa/ui 0.3.1
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/LICENSE +201 -0
- package/README.md +19 -0
- package/dist/chat/ChatMain.d.ts +12 -0
- package/dist/chat/ChatMain.d.ts.map +1 -0
- package/dist/chat/ChatMain.js +390 -0
- package/dist/chat/ChatSidebar.d.ts +15 -0
- package/dist/chat/ChatSidebar.d.ts.map +1 -0
- package/dist/chat/ChatSidebar.js +32 -0
- package/dist/chat/ConversationList.d.ts +20 -0
- package/dist/chat/ConversationList.d.ts.map +1 -0
- package/dist/chat/ConversationList.js +95 -0
- package/dist/chat/EventPanel.d.ts +11 -0
- package/dist/chat/EventPanel.d.ts.map +1 -0
- package/dist/chat/EventPanel.js +76 -0
- package/dist/chat/ExpensePanel.d.ts +14 -0
- package/dist/chat/ExpensePanel.d.ts.map +1 -0
- package/dist/chat/ExpensePanel.js +282 -0
- package/dist/chat/MessageBubble.d.ts +29 -0
- package/dist/chat/MessageBubble.d.ts.map +1 -0
- package/dist/chat/MessageBubble.js +425 -0
- package/dist/chat/MessageInput.d.ts +34 -0
- package/dist/chat/MessageInput.d.ts.map +1 -0
- package/dist/chat/MessageInput.js +330 -0
- package/dist/chat/MilestonePanel.d.ts +14 -0
- package/dist/chat/MilestonePanel.d.ts.map +1 -0
- package/dist/chat/MilestonePanel.js +209 -0
- package/dist/chat/components/ParticipantSelector.d.ts +11 -0
- package/dist/chat/components/ParticipantSelector.d.ts.map +1 -0
- package/dist/chat/components/ParticipantSelector.js +26 -0
- package/dist/chat/components/SplitInputs.d.ts +12 -0
- package/dist/chat/components/SplitInputs.d.ts.map +1 -0
- package/dist/chat/components/SplitInputs.js +84 -0
- package/dist/chat/components/SplitTypeSelector.d.ts +8 -0
- package/dist/chat/components/SplitTypeSelector.d.ts.map +1 -0
- package/dist/chat/components/SplitTypeSelector.js +13 -0
- package/dist/chat/dialogs/AddMemberDialog.d.ts +15 -0
- package/dist/chat/dialogs/AddMemberDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/AddMemberDialog.js +43 -0
- package/dist/chat/dialogs/CameraDialog.d.ts +8 -0
- package/dist/chat/dialogs/CameraDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/CameraDialog.js +81 -0
- package/dist/chat/dialogs/ChatInfoDialog.d.ts +10 -0
- package/dist/chat/dialogs/ChatInfoDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/ChatInfoDialog.js +75 -0
- package/dist/chat/dialogs/ConversationSearchDialog.d.ts +8 -0
- package/dist/chat/dialogs/ConversationSearchDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/ConversationSearchDialog.js +53 -0
- package/dist/chat/dialogs/CreateEventDialog.d.ts +22 -0
- package/dist/chat/dialogs/CreateEventDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/CreateEventDialog.js +51 -0
- package/dist/chat/dialogs/CreatePollDialog.d.ts +8 -0
- package/dist/chat/dialogs/CreatePollDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/CreatePollDialog.js +38 -0
- package/dist/chat/dialogs/EditPollDialog.d.ts +14 -0
- package/dist/chat/dialogs/EditPollDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/EditPollDialog.js +33 -0
- package/dist/chat/dialogs/ExpenseAnalyticsDialog.d.ts +20 -0
- package/dist/chat/dialogs/ExpenseAnalyticsDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/ExpenseAnalyticsDialog.js +58 -0
- package/dist/chat/dialogs/GroupInfoDialog.d.ts +10 -0
- package/dist/chat/dialogs/GroupInfoDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/GroupInfoDialog.js +81 -0
- package/dist/chat/dialogs/GroupInfoViewDialog.d.ts +9 -0
- package/dist/chat/dialogs/GroupInfoViewDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/GroupInfoViewDialog.js +15 -0
- package/dist/chat/dialogs/HostWorkspaceDialog.d.ts +9 -0
- package/dist/chat/dialogs/HostWorkspaceDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/HostWorkspaceDialog.js +90 -0
- package/dist/chat/dialogs/MediaComposerDialog.d.ts +9 -0
- package/dist/chat/dialogs/MediaComposerDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/MediaComposerDialog.js +41 -0
- package/dist/chat/dialogs/NewChatDialog.d.ts +2 -0
- package/dist/chat/dialogs/NewChatDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/NewChatDialog.js +48 -0
- package/dist/chat/dialogs/NewGroupDialog.d.ts +2 -0
- package/dist/chat/dialogs/NewGroupDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/NewGroupDialog.js +44 -0
- package/dist/chat/dialogs/ParticipantsDialog.d.ts +12 -0
- package/dist/chat/dialogs/ParticipantsDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/ParticipantsDialog.js +134 -0
- package/dist/chat/dialogs/PayAndSplitDialog.d.ts +12 -0
- package/dist/chat/dialogs/PayAndSplitDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/PayAndSplitDialog.js +124 -0
- package/dist/chat/dialogs/PaymentProfileDialog.d.ts +5 -0
- package/dist/chat/dialogs/PaymentProfileDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/PaymentProfileDialog.js +45 -0
- package/dist/chat/dialogs/PollVotersDialog.d.ts +10 -0
- package/dist/chat/dialogs/PollVotersDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/PollVotersDialog.js +11 -0
- package/dist/chat/dialogs/ShareLocationDialog.d.ts +8 -0
- package/dist/chat/dialogs/ShareLocationDialog.d.ts.map +1 -0
- package/dist/chat/dialogs/ShareLocationDialog.js +47 -0
- package/dist/chat/index.d.ts +8 -0
- package/dist/chat/index.d.ts.map +1 -0
- package/dist/chat/index.js +7 -0
- package/dist/components/CityAutocomplete.d.ts +5 -0
- package/dist/components/CityAutocomplete.d.ts.map +1 -0
- package/dist/components/CityAutocomplete.js +112 -0
- package/dist/components/CreateListingDropdown.d.ts +5 -0
- package/dist/components/CreateListingDropdown.d.ts.map +1 -0
- package/dist/components/CreateListingDropdown.js +21 -0
- package/dist/components/DestinationAutocomplete.d.ts +11 -0
- package/dist/components/DestinationAutocomplete.d.ts.map +1 -0
- package/dist/components/DestinationAutocomplete.js +24 -0
- package/dist/components/StateAutocomplete.d.ts +10 -0
- package/dist/components/StateAutocomplete.d.ts.map +1 -0
- package/dist/components/StateAutocomplete.js +34 -0
- package/dist/components/admin/AdminBookingRegistrationsList.d.ts +5 -0
- package/dist/components/admin/AdminBookingRegistrationsList.d.ts.map +1 -0
- package/dist/components/admin/AdminBookingRegistrationsList.js +69 -0
- package/dist/components/admin/AdminListingActionsWrapper.d.ts +9 -0
- package/dist/components/admin/AdminListingActionsWrapper.d.ts.map +1 -0
- package/dist/components/admin/AdminListingActionsWrapper.js +200 -0
- package/dist/components/ads/ActivateAdPlacementButton.d.ts +6 -0
- package/dist/components/ads/ActivateAdPlacementButton.d.ts.map +1 -0
- package/dist/components/ads/ActivateAdPlacementButton.js +27 -0
- package/dist/components/ads/AdOfferCard.d.ts +6 -0
- package/dist/components/ads/AdOfferCard.d.ts.map +1 -0
- package/dist/components/ads/AdOfferCard.js +15 -0
- package/dist/components/adventure/AdventureAvailabilityPlanner.d.ts +17 -0
- package/dist/components/adventure/AdventureAvailabilityPlanner.d.ts.map +1 -0
- package/dist/components/adventure/AdventureAvailabilityPlanner.js +106 -0
- package/dist/components/adventure/AdventureQueryCard.d.ts +5 -0
- package/dist/components/adventure/AdventureQueryCard.d.ts.map +1 -0
- package/dist/components/adventure/AdventureQueryCard.js +65 -0
- package/dist/components/adventure/AdventureSlotBuilder.d.ts +41 -0
- package/dist/components/adventure/AdventureSlotBuilder.d.ts.map +1 -0
- package/dist/components/adventure/AdventureSlotBuilder.js +146 -0
- package/dist/components/booking/booking-form.d.ts +39 -0
- package/dist/components/booking/booking-form.d.ts.map +1 -0
- package/dist/components/booking/booking-form.js +847 -0
- package/dist/components/brand/BrandPageView.d.ts +8 -0
- package/dist/components/brand/BrandPageView.d.ts.map +1 -0
- package/dist/components/brand/BrandPageView.js +97 -0
- package/dist/components/companion/AnonymousChat.d.ts +22 -0
- package/dist/components/companion/AnonymousChat.d.ts.map +1 -0
- package/dist/components/companion/AnonymousChat.js +24 -0
- package/dist/components/companion/SwipeCard.d.ts +25 -0
- package/dist/components/companion/SwipeCard.d.ts.map +1 -0
- package/dist/components/companion/SwipeCard.js +58 -0
- package/dist/components/create-flow/ConfirmDiscardDialog.d.ts +11 -0
- package/dist/components/create-flow/ConfirmDiscardDialog.d.ts.map +1 -0
- package/dist/components/create-flow/ConfirmDiscardDialog.js +14 -0
- package/dist/components/create-flow/EntityEditLoadingState.d.ts +2 -0
- package/dist/components/create-flow/EntityEditLoadingState.d.ts.map +1 -0
- package/dist/components/create-flow/EntityEditLoadingState.js +6 -0
- package/dist/components/create-flow/EntityFormCompletionState.d.ts +12 -0
- package/dist/components/create-flow/EntityFormCompletionState.d.ts.map +1 -0
- package/dist/components/create-flow/EntityFormCompletionState.js +10 -0
- package/dist/components/create-flow/EntityFormHeader.d.ts +9 -0
- package/dist/components/create-flow/EntityFormHeader.d.ts.map +1 -0
- package/dist/components/create-flow/EntityFormHeader.js +7 -0
- package/dist/components/create-flow/EntityFormPageFrame.d.ts +10 -0
- package/dist/components/create-flow/EntityFormPageFrame.d.ts.map +1 -0
- package/dist/components/create-flow/EntityFormPageFrame.js +10 -0
- package/dist/components/create-flow/ImageUploader.d.ts +30 -0
- package/dist/components/create-flow/ImageUploader.d.ts.map +1 -0
- package/dist/components/create-flow/ImageUploader.js +193 -0
- package/dist/components/create-flow/MultiStepWizard.d.ts +25 -0
- package/dist/components/create-flow/MultiStepWizard.d.ts.map +1 -0
- package/dist/components/create-flow/MultiStepWizard.js +31 -0
- package/dist/components/create-flow/ReviewConfirmationCard.d.ts +8 -0
- package/dist/components/create-flow/ReviewConfirmationCard.d.ts.map +1 -0
- package/dist/components/create-flow/ReviewConfirmationCard.js +5 -0
- package/dist/components/create-flow/ReviewMetricGrid.d.ts +15 -0
- package/dist/components/create-flow/ReviewMetricGrid.d.ts.map +1 -0
- package/dist/components/create-flow/ReviewMetricGrid.js +8 -0
- package/dist/components/create-flow/TemplateSelectionDialog.d.ts +17 -0
- package/dist/components/create-flow/TemplateSelectionDialog.d.ts.map +1 -0
- package/dist/components/create-flow/TemplateSelectionDialog.js +7 -0
- package/dist/components/discounts/OffersAndCouponsSheet.d.ts +13 -0
- package/dist/components/discounts/OffersAndCouponsSheet.d.ts.map +1 -0
- package/dist/components/discounts/OffersAndCouponsSheet.js +81 -0
- package/dist/components/enquiry/EnquiryFormParts.d.ts +40 -0
- package/dist/components/enquiry/EnquiryFormParts.d.ts.map +1 -0
- package/dist/components/enquiry/EnquiryFormParts.js +29 -0
- package/dist/components/form-sections/FaqSection.d.ts +24 -0
- package/dist/components/form-sections/FaqSection.d.ts.map +1 -0
- package/dist/components/form-sections/FaqSection.js +17 -0
- package/dist/components/form-sections/OpportunityBasicsSection.d.ts +8 -0
- package/dist/components/form-sections/OpportunityBasicsSection.d.ts.map +1 -0
- package/dist/components/form-sections/OpportunityBasicsSection.js +26 -0
- package/dist/components/form-sections/OpportunityDetailsSection.d.ts +18 -0
- package/dist/components/form-sections/OpportunityDetailsSection.d.ts.map +1 -0
- package/dist/components/form-sections/OpportunityDetailsSection.js +10 -0
- package/dist/components/form-sections/OpportunityTypeSection.d.ts +7 -0
- package/dist/components/form-sections/OpportunityTypeSection.d.ts.map +1 -0
- package/dist/components/form-sections/OpportunityTypeSection.js +15 -0
- package/dist/components/form-sections/PackageDetailsSection.d.ts +22 -0
- package/dist/components/form-sections/PackageDetailsSection.d.ts.map +1 -0
- package/dist/components/form-sections/PackageDetailsSection.js +20 -0
- package/dist/components/form-sections/PackageItinerarySection.d.ts +21 -0
- package/dist/components/form-sections/PackageItinerarySection.d.ts.map +1 -0
- package/dist/components/form-sections/PackageItinerarySection.js +112 -0
- package/dist/components/form-sections/PackagePricingSection.d.ts +8 -0
- package/dist/components/form-sections/PackagePricingSection.d.ts.map +1 -0
- package/dist/components/form-sections/PackagePricingSection.js +11 -0
- package/dist/components/form-sections/PackageReviewSection.d.ts +12 -0
- package/dist/components/form-sections/PackageReviewSection.d.ts.map +1 -0
- package/dist/components/form-sections/PackageReviewSection.js +26 -0
- package/dist/components/form-sections/RentalBasicsSection.d.ts +12 -0
- package/dist/components/form-sections/RentalBasicsSection.d.ts.map +1 -0
- package/dist/components/form-sections/RentalBasicsSection.js +91 -0
- package/dist/components/form-sections/RentalCapacitySection.d.ts +9 -0
- package/dist/components/form-sections/RentalCapacitySection.d.ts.map +1 -0
- package/dist/components/form-sections/RentalCapacitySection.js +23 -0
- package/dist/components/form-sections/RentalLocationSection.d.ts +10 -0
- package/dist/components/form-sections/RentalLocationSection.d.ts.map +1 -0
- package/dist/components/form-sections/RentalLocationSection.js +41 -0
- package/dist/components/form-sections/RentalReviewSection.d.ts +10 -0
- package/dist/components/form-sections/RentalReviewSection.d.ts.map +1 -0
- package/dist/components/form-sections/RentalReviewSection.js +27 -0
- package/dist/components/form-sections/RentalRulesSection.d.ts +7 -0
- package/dist/components/form-sections/RentalRulesSection.d.ts.map +1 -0
- package/dist/components/form-sections/RentalRulesSection.js +10 -0
- package/dist/components/form-sections/RentalSpecsSection.d.ts +7 -0
- package/dist/components/form-sections/RentalSpecsSection.d.ts.map +1 -0
- package/dist/components/form-sections/RentalSpecsSection.js +10 -0
- package/dist/components/host-dashboard/HostCalendar.d.ts +8 -0
- package/dist/components/host-dashboard/HostCalendar.d.ts.map +1 -0
- package/dist/components/host-dashboard/HostCalendar.js +43 -0
- package/dist/components/host-dashboard/HostCalendarGrid.d.ts +34 -0
- package/dist/components/host-dashboard/HostCalendarGrid.d.ts.map +1 -0
- package/dist/components/host-dashboard/HostCalendarGrid.js +30 -0
- package/dist/components/host-dashboard/HostListingMultiSelect.d.ts +12 -0
- package/dist/components/host-dashboard/HostListingMultiSelect.d.ts.map +1 -0
- package/dist/components/host-dashboard/HostListingMultiSelect.js +24 -0
- package/dist/components/host-dashboard/HostManageCalendarShell.d.ts +17 -0
- package/dist/components/host-dashboard/HostManageCalendarShell.d.ts.map +1 -0
- package/dist/components/host-dashboard/HostManageCalendarShell.js +5 -0
- package/dist/components/host-dashboard/HostSidebarNavigation.d.ts +2 -0
- package/dist/components/host-dashboard/HostSidebarNavigation.d.ts.map +1 -0
- package/dist/components/host-dashboard/HostSidebarNavigation.js +299 -0
- package/dist/components/host-dashboard/ManageFeatureSwitcher.d.ts +15 -0
- package/dist/components/host-dashboard/ManageFeatureSwitcher.d.ts.map +1 -0
- package/dist/components/host-dashboard/ManageFeatureSwitcher.js +43 -0
- package/dist/components/host-dashboard/PageHeader.d.ts +14 -0
- package/dist/components/host-dashboard/PageHeader.d.ts.map +1 -0
- package/dist/components/host-dashboard/PageHeader.js +8 -0
- package/dist/components/host-dashboard/PlaceholderPage.d.ts +4 -0
- package/dist/components/host-dashboard/PlaceholderPage.d.ts.map +1 -0
- package/dist/components/host-dashboard/PlaceholderPage.js +9 -0
- package/dist/components/host-dashboard/StatCard.d.ts +15 -0
- package/dist/components/host-dashboard/StatCard.d.ts.map +1 -0
- package/dist/components/host-dashboard/StatCard.js +38 -0
- package/dist/components/layout/AppProviders.d.ts +5 -0
- package/dist/components/layout/AppProviders.d.ts.map +1 -0
- package/dist/components/layout/AppProviders.js +11 -0
- package/dist/components/layout/PublicRouteLayout.d.ts +5 -0
- package/dist/components/layout/PublicRouteLayout.d.ts.map +1 -0
- package/dist/components/layout/PublicRouteLayout.js +5 -0
- package/dist/components/layout/PublicShell.d.ts +5 -0
- package/dist/components/layout/PublicShell.d.ts.map +1 -0
- package/dist/components/layout/PublicShell.js +5 -0
- package/dist/components/location/LocationPicker.d.ts +27 -0
- package/dist/components/location/LocationPicker.d.ts.map +1 -0
- package/dist/components/location/LocationPicker.js +415 -0
- package/dist/components/location/LocationPreview.d.ts +11 -0
- package/dist/components/location/LocationPreview.d.ts.map +1 -0
- package/dist/components/location/LocationPreview.js +12 -0
- package/dist/components/location/MapPicker.d.ts +9 -0
- package/dist/components/location/MapPicker.d.ts.map +1 -0
- package/dist/components/location/MapPicker.js +40 -0
- package/dist/components/location/MapPreview.d.ts +8 -0
- package/dist/components/location/MapPreview.d.ts.map +1 -0
- package/dist/components/location/MapPreview.js +17 -0
- package/dist/components/location/PlaceLinkInline.d.ts +14 -0
- package/dist/components/location/PlaceLinkInline.d.ts.map +1 -0
- package/dist/components/location/PlaceLinkInline.js +30 -0
- package/dist/components/location/leafletMap.d.ts +8 -0
- package/dist/components/location/leafletMap.d.ts.map +1 -0
- package/dist/components/location/leafletMap.js +74 -0
- package/dist/components/ui/GuestOrLoginDialog.d.ts +11 -0
- package/dist/components/ui/GuestOrLoginDialog.d.ts.map +1 -0
- package/dist/components/ui/GuestOrLoginDialog.js +19 -0
- package/dist/components/ui/ImageGalleryViewer.d.ts +10 -0
- package/dist/components/ui/ImageGalleryViewer.d.ts.map +1 -0
- package/dist/components/ui/ImageGalleryViewer.js +59 -0
- package/dist/components/ui/LocationInput.d.ts +12 -0
- package/dist/components/ui/LocationInput.d.ts.map +1 -0
- package/dist/components/ui/LocationInput.js +39 -0
- package/dist/components/ui/PropertyGalleryClient.d.ts +8 -0
- package/dist/components/ui/PropertyGalleryClient.d.ts.map +1 -0
- package/dist/components/ui/PropertyGalleryClient.js +22 -0
- package/dist/components/ui/calendar.d.ts +9 -0
- package/dist/components/ui/calendar.d.ts.map +1 -0
- package/dist/components/ui/calendar.js +75 -0
- package/dist/components/ui/dashboard/admin-adventures-table.d.ts +12 -0
- package/dist/components/ui/dashboard/admin-adventures-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/admin-adventures-table.js +94 -0
- package/dist/components/ui/dashboard/admin-blogs-table.d.ts +11 -0
- package/dist/components/ui/dashboard/admin-blogs-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/admin-blogs-table.js +58 -0
- package/dist/components/ui/dashboard/admin-opportunities-table.d.ts +20 -0
- package/dist/components/ui/dashboard/admin-opportunities-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/admin-opportunities-table.js +139 -0
- package/dist/components/ui/dashboard/admin-rentals-table.d.ts +12 -0
- package/dist/components/ui/dashboard/admin-rentals-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/admin-rentals-table.js +85 -0
- package/dist/components/ui/dashboard/admin-travel-package-table.d.ts +16 -0
- package/dist/components/ui/dashboard/admin-travel-package-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/admin-travel-package-table.js +103 -0
- package/dist/components/ui/dashboard/adventures-table.d.ts +16 -0
- package/dist/components/ui/dashboard/adventures-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/adventures-table.js +151 -0
- package/dist/components/ui/dashboard/approver-applications-table.d.ts +13 -0
- package/dist/components/ui/dashboard/approver-applications-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/approver-applications-table.js +85 -0
- package/dist/components/ui/dashboard/approver-package-enquiries-table.d.ts +11 -0
- package/dist/components/ui/dashboard/approver-package-enquiries-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/approver-package-enquiries-table.js +102 -0
- package/dist/components/ui/dashboard/archive-confirm-modal.d.ts +9 -0
- package/dist/components/ui/dashboard/archive-confirm-modal.d.ts.map +1 -0
- package/dist/components/ui/dashboard/archive-confirm-modal.js +6 -0
- package/dist/components/ui/dashboard/blogs-table.d.ts +10 -0
- package/dist/components/ui/dashboard/blogs-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/blogs-table.js +62 -0
- package/dist/components/ui/dashboard/bookings-table.d.ts +13 -0
- package/dist/components/ui/dashboard/bookings-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/bookings-table.js +165 -0
- package/dist/components/ui/dashboard/dashboard-page-shell.d.ts +7 -0
- package/dist/components/ui/dashboard/dashboard-page-shell.d.ts.map +1 -0
- package/dist/components/ui/dashboard/dashboard-page-shell.js +5 -0
- package/dist/components/ui/dashboard/data-table-shell.d.ts +18 -0
- package/dist/components/ui/dashboard/data-table-shell.d.ts.map +1 -0
- package/dist/components/ui/dashboard/data-table-shell.js +6 -0
- package/dist/components/ui/dashboard/delete-confirm-modal.d.ts +9 -0
- package/dist/components/ui/dashboard/delete-confirm-modal.d.ts.map +1 -0
- package/dist/components/ui/dashboard/delete-confirm-modal.js +6 -0
- package/dist/components/ui/dashboard/entity-list-page-state.d.ts +25 -0
- package/dist/components/ui/dashboard/entity-list-page-state.d.ts.map +1 -0
- package/dist/components/ui/dashboard/entity-list-page-state.js +17 -0
- package/dist/components/ui/dashboard/generic-entity-table.d.ts +36 -0
- package/dist/components/ui/dashboard/generic-entity-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/generic-entity-table.js +203 -0
- package/dist/components/ui/dashboard/opportunities-table.d.ts +17 -0
- package/dist/components/ui/dashboard/opportunities-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/opportunities-table.js +143 -0
- package/dist/components/ui/dashboard/rentals-table.d.ts +17 -0
- package/dist/components/ui/dashboard/rentals-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/rentals-table.js +155 -0
- package/dist/components/ui/dashboard/restore-confirm-modal.d.ts +9 -0
- package/dist/components/ui/dashboard/restore-confirm-modal.d.ts.map +1 -0
- package/dist/components/ui/dashboard/restore-confirm-modal.js +6 -0
- package/dist/components/ui/dashboard/stats-card.d.ts +6 -0
- package/dist/components/ui/dashboard/stats-card.d.ts.map +1 -0
- package/dist/components/ui/dashboard/stats-card.js +5 -0
- package/dist/components/ui/dashboard/travel-packages-table.d.ts +16 -0
- package/dist/components/ui/dashboard/travel-packages-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/travel-packages-table.js +134 -0
- package/dist/components/ui/dashboard/user-applications-table.d.ts +12 -0
- package/dist/components/ui/dashboard/user-applications-table.d.ts.map +1 -0
- package/dist/components/ui/dashboard/user-applications-table.js +79 -0
- package/dist/components/ui/loading-skeleton.d.ts +10 -0
- package/dist/components/ui/loading-skeleton.d.ts.map +1 -0
- package/dist/components/ui/loading-skeleton.js +49 -0
- package/dist/components/ui/misc/IosPwaNavBar.d.ts +8 -0
- package/dist/components/ui/misc/IosPwaNavBar.d.ts.map +1 -0
- package/dist/components/ui/misc/IosPwaNavBar.js +25 -0
- package/dist/components/ui/misc/document-upload-button.d.ts +10 -0
- package/dist/components/ui/misc/document-upload-button.d.ts.map +1 -0
- package/dist/components/ui/misc/document-upload-button.js +12 -0
- package/dist/components/ui/misc/empty-state.d.ts +9 -0
- package/dist/components/ui/misc/empty-state.d.ts.map +1 -0
- package/dist/components/ui/misc/empty-state.js +4 -0
- package/dist/components/ui/misc/image-cropper.d.ts +9 -0
- package/dist/components/ui/misc/image-cropper.d.ts.map +1 -0
- package/dist/components/ui/misc/image-cropper.js +28 -0
- package/dist/components/ui/misc/pwa-install-button.d.ts +2 -0
- package/dist/components/ui/misc/pwa-install-button.d.ts.map +1 -0
- package/dist/components/ui/misc/pwa-install-button.js +17 -0
- package/dist/components/ui/misc/rental-tile.d.ts +6 -0
- package/dist/components/ui/misc/rental-tile.d.ts.map +1 -0
- package/dist/components/ui/misc/rental-tile.js +56 -0
- package/dist/components/ui/misc/skeleton-extras.d.ts +32 -0
- package/dist/components/ui/misc/skeleton-extras.d.ts.map +1 -0
- package/dist/components/ui/misc/skeleton-extras.js +58 -0
- package/dist/components/ui/misc/tile.d.ts +4 -0
- package/dist/components/ui/misc/tile.d.ts.map +1 -0
- package/dist/components/ui/misc/tile.js +45 -0
- package/dist/components/ui/misc/whatsapp-help.d.ts +7 -0
- package/dist/components/ui/misc/whatsapp-help.d.ts.map +1 -0
- package/dist/components/ui/misc/whatsapp-help.js +6 -0
- package/dist/components/ui/motion.d.ts +14 -0
- package/dist/components/ui/motion.d.ts.map +1 -0
- package/dist/components/ui/motion.js +17 -0
- package/dist/components/ui/trippeaze/breadcrumb-trail.d.ts +10 -0
- package/dist/components/ui/trippeaze/breadcrumb-trail.d.ts.map +1 -0
- package/dist/components/ui/trippeaze/breadcrumb-trail.js +15 -0
- package/dist/components/ui/trippeaze/chip-tabs.d.ts +13 -0
- package/dist/components/ui/trippeaze/chip-tabs.d.ts.map +1 -0
- package/dist/components/ui/trippeaze/chip-tabs.js +6 -0
- package/dist/components/ui/trippeaze/page-shell.d.ts +22 -0
- package/dist/components/ui/trippeaze/page-shell.d.ts.map +1 -0
- package/dist/components/ui/trippeaze/page-shell.js +15 -0
- package/dist/components/ui/trippeaze/search-input.d.ts +5 -0
- package/dist/components/ui/trippeaze/search-input.d.ts.map +1 -0
- package/dist/components/ui/trippeaze/search-input.js +7 -0
- package/dist/components/user-dashboard/UserDashboardShellSidebar.d.ts +2 -0
- package/dist/components/user-dashboard/UserDashboardShellSidebar.d.ts.map +1 -0
- package/dist/components/user-dashboard/UserDashboardShellSidebar.js +17 -0
- package/dist/components/user-dashboard/UserSidebarNav.d.ts +2 -0
- package/dist/components/user-dashboard/UserSidebarNav.d.ts.map +1 -0
- package/dist/components/user-dashboard/UserSidebarNav.js +68 -0
- package/dist/dashboard/action-buttons.d.ts +17 -0
- package/dist/dashboard/action-buttons.d.ts.map +1 -0
- package/dist/dashboard/action-buttons.js +22 -0
- package/dist/dashboard/app-sidebar.d.ts +3 -0
- package/dist/dashboard/app-sidebar.d.ts.map +1 -0
- package/dist/dashboard/app-sidebar.js +61 -0
- package/dist/dashboard/card-header.d.ts +11 -0
- package/dist/dashboard/card-header.d.ts.map +1 -0
- package/dist/dashboard/card-header.js +7 -0
- package/dist/dashboard/dashboard-components.d.ts +13 -0
- package/dist/dashboard/dashboard-components.d.ts.map +1 -0
- package/dist/dashboard/dashboard-components.js +10 -0
- package/dist/dashboard/data-table.d.ts +24 -0
- package/dist/dashboard/data-table.d.ts.map +1 -0
- package/dist/dashboard/data-table.js +88 -0
- package/dist/dashboard/nav-main.d.ts +9 -0
- package/dist/dashboard/nav-main.d.ts.map +1 -0
- package/dist/dashboard/nav-main.js +9 -0
- package/dist/dashboard/nav-secondary.d.ts +10 -0
- package/dist/dashboard/nav-secondary.d.ts.map +1 -0
- package/dist/dashboard/nav-secondary.js +6 -0
- package/dist/dashboard/stats-card.d.ts +6 -0
- package/dist/dashboard/stats-card.d.ts.map +1 -0
- package/dist/dashboard/stats-card.js +5 -0
- package/dist/dashboard/table.d.ts +11 -0
- package/dist/dashboard/table.d.ts.map +1 -0
- package/dist/dashboard/table.js +21 -0
- package/dist/header/mobile-nav-item.d.ts +9 -0
- package/dist/header/mobile-nav-item.d.ts.map +1 -0
- package/dist/header/mobile-nav-item.js +6 -0
- package/dist/header/mobile-navbar.d.ts +5 -0
- package/dist/header/mobile-navbar.d.ts.map +1 -0
- package/dist/header/mobile-navbar.js +30 -0
- package/dist/header/nav-item.d.ts +10 -0
- package/dist/header/nav-item.d.ts.map +1 -0
- package/dist/header/nav-item.js +6 -0
- package/dist/index.d.ts +85 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +85 -0
- package/dist/layout/AppProviders.d.ts +5 -0
- package/dist/layout/AppProviders.d.ts.map +1 -0
- package/dist/layout/AppProviders.js +11 -0
- package/dist/layout/PublicShell.d.ts +5 -0
- package/dist/layout/PublicShell.d.ts.map +1 -0
- package/dist/layout/PublicShell.js +5 -0
- package/dist/main/footer.d.ts +6 -0
- package/dist/main/footer.d.ts.map +1 -0
- package/dist/main/footer.js +58 -0
- package/dist/main/navbar.d.ts +6 -0
- package/dist/main/navbar.d.ts.map +1 -0
- package/dist/main/navbar.js +130 -0
- package/dist/main/paginationBar.d.ts +5 -0
- package/dist/main/paginationBar.d.ts.map +1 -0
- package/dist/main/paginationBar.js +28 -0
- package/dist/main/portfolio/portfolioItem.d.ts +7 -0
- package/dist/main/portfolio/portfolioItem.d.ts.map +1 -0
- package/dist/main/portfolio/portfolioItem.js +7 -0
- package/dist/main/portfolio/portfolioPopup.d.ts +8 -0
- package/dist/main/portfolio/portfolioPopup.d.ts.map +1 -0
- package/dist/main/portfolio/portfolioPopup.js +71 -0
- package/dist/main/review-page.d.ts +14 -0
- package/dist/main/review-page.d.ts.map +1 -0
- package/dist/main/review-page.js +209 -0
- package/dist/misc/IosPwaNavBar.d.ts +8 -0
- package/dist/misc/IosPwaNavBar.d.ts.map +1 -0
- package/dist/misc/IosPwaNavBar.js +25 -0
- package/dist/misc/accordion.d.ts +7 -0
- package/dist/misc/accordion.d.ts.map +1 -0
- package/dist/misc/accordion.js +18 -0
- package/dist/misc/alert-dialog.d.ts +14 -0
- package/dist/misc/alert-dialog.d.ts.map +1 -0
- package/dist/misc/alert-dialog.js +39 -0
- package/dist/misc/alert.d.ts +9 -0
- package/dist/misc/alert.d.ts.map +1 -0
- package/dist/misc/alert.js +24 -0
- package/dist/misc/alertdialogclaude.d.ts +15 -0
- package/dist/misc/alertdialogclaude.d.ts.map +1 -0
- package/dist/misc/alertdialogclaude.js +151 -0
- package/dist/misc/avatar.d.ts +6 -0
- package/dist/misc/avatar.d.ts.map +1 -0
- package/dist/misc/avatar.js +14 -0
- package/dist/misc/badge.d.ts +9 -0
- package/dist/misc/badge.d.ts.map +1 -0
- package/dist/misc/badge.js +22 -0
- package/dist/misc/button.d.ts +13 -0
- package/dist/misc/button.d.ts.map +1 -0
- package/dist/misc/button.js +59 -0
- package/dist/misc/card.d.ts +9 -0
- package/dist/misc/card.d.ts.map +1 -0
- package/dist/misc/card.js +21 -0
- package/dist/misc/carousel.d.ts +20 -0
- package/dist/misc/carousel.d.ts.map +1 -0
- package/dist/misc/carousel.js +99 -0
- package/dist/misc/checkbox.d.ts +4 -0
- package/dist/misc/checkbox.d.ts.map +1 -0
- package/dist/misc/checkbox.js +9 -0
- package/dist/misc/command.d.ts +18 -0
- package/dist/misc/command.d.ts.map +1 -0
- package/dist/misc/command.js +34 -0
- package/dist/misc/datepicker.d.ts +15 -0
- package/dist/misc/datepicker.d.ts.map +1 -0
- package/dist/misc/datepicker.js +221 -0
- package/dist/misc/dialog.d.ts +13 -0
- package/dist/misc/dialog.d.ts.map +1 -0
- package/dist/misc/dialog.js +36 -0
- package/dist/misc/discount-strategy-editor.d.ts +22 -0
- package/dist/misc/discount-strategy-editor.d.ts.map +1 -0
- package/dist/misc/discount-strategy-editor.js +61 -0
- package/dist/misc/document-upload-button.d.ts +12 -0
- package/dist/misc/document-upload-button.d.ts.map +1 -0
- package/dist/misc/document-upload-button.js +27 -0
- package/dist/misc/dropdown-menu.d.ts +25 -0
- package/dist/misc/dropdown-menu.d.ts.map +1 -0
- package/dist/misc/dropdown-menu.js +51 -0
- package/dist/misc/empty-state.d.ts +10 -0
- package/dist/misc/empty-state.d.ts.map +1 -0
- package/dist/misc/empty-state.js +5 -0
- package/dist/misc/faq.d.ts +5 -0
- package/dist/misc/faq.d.ts.map +1 -0
- package/dist/misc/faq.js +5 -0
- package/dist/misc/file-preview.d.ts +9 -0
- package/dist/misc/file-preview.d.ts.map +1 -0
- package/dist/misc/file-preview.js +76 -0
- package/dist/misc/filter.d.ts +12 -0
- package/dist/misc/filter.d.ts.map +1 -0
- package/dist/misc/filter.js +44 -0
- package/dist/misc/filterBar.d.ts +39 -0
- package/dist/misc/filterBar.d.ts.map +1 -0
- package/dist/misc/filterBar.js +384 -0
- package/dist/misc/form.d.ts +25 -0
- package/dist/misc/form.d.ts.map +1 -0
- package/dist/misc/form.js +60 -0
- package/dist/misc/image-compressor.d.ts +29 -0
- package/dist/misc/image-compressor.d.ts.map +1 -0
- package/dist/misc/image-compressor.js +70 -0
- package/dist/misc/image-cropper.d.ts +10 -0
- package/dist/misc/image-cropper.d.ts.map +1 -0
- package/dist/misc/image-cropper.js +44 -0
- package/dist/misc/input.d.ts +7 -0
- package/dist/misc/input.d.ts.map +1 -0
- package/dist/misc/input.js +11 -0
- package/dist/misc/label.d.ts +4 -0
- package/dist/misc/label.d.ts.map +1 -0
- package/dist/misc/label.js +8 -0
- package/dist/misc/line-carousel.d.ts +9 -0
- package/dist/misc/line-carousel.d.ts.map +1 -0
- package/dist/misc/line-carousel.js +5 -0
- package/dist/misc/listing-wishlist-button.d.ts +13 -0
- package/dist/misc/listing-wishlist-button.d.ts.map +1 -0
- package/dist/misc/listing-wishlist-button.js +42 -0
- package/dist/misc/location/leafletMap.d.ts +8 -0
- package/dist/misc/location/leafletMap.d.ts.map +1 -0
- package/dist/misc/location/leafletMap.js +62 -0
- package/dist/misc/location/locationPicker.d.ts +5 -0
- package/dist/misc/location/locationPicker.d.ts.map +1 -0
- package/dist/misc/location/locationPicker.js +95 -0
- package/dist/misc/location-autocomplete.d.ts +28 -0
- package/dist/misc/location-autocomplete.d.ts.map +1 -0
- package/dist/misc/location-autocomplete.js +121 -0
- package/dist/misc/newsLetter.d.ts +3 -0
- package/dist/misc/newsLetter.d.ts.map +1 -0
- package/dist/misc/newsLetter.js +41 -0
- package/dist/misc/non-modal-multi-select.d.ts +21 -0
- package/dist/misc/non-modal-multi-select.d.ts.map +1 -0
- package/dist/misc/non-modal-multi-select.js +25 -0
- package/dist/misc/non-modal-select.d.ts +22 -0
- package/dist/misc/non-modal-select.d.ts.map +1 -0
- package/dist/misc/non-modal-select.js +23 -0
- package/dist/misc/notification.d.ts +7 -0
- package/dist/misc/notification.d.ts.map +1 -0
- package/dist/misc/notification.js +157 -0
- package/dist/misc/pagination.d.ts +15 -0
- package/dist/misc/pagination.d.ts.map +1 -0
- package/dist/misc/pagination.js +30 -0
- package/dist/misc/password-eye.d.ts +7 -0
- package/dist/misc/password-eye.d.ts.map +1 -0
- package/dist/misc/password-eye.js +7 -0
- package/dist/misc/popover.d.ts +7 -0
- package/dist/misc/popover.d.ts.map +1 -0
- package/dist/misc/popover.js +17 -0
- package/dist/misc/pricing-strategy-editor.d.ts +17 -0
- package/dist/misc/pricing-strategy-editor.d.ts.map +1 -0
- package/dist/misc/pricing-strategy-editor.js +80 -0
- package/dist/misc/progress.d.ts +4 -0
- package/dist/misc/progress.d.ts.map +1 -0
- package/dist/misc/progress.js +8 -0
- package/dist/misc/pwa-install-button.d.ts +9 -0
- package/dist/misc/pwa-install-button.d.ts.map +1 -0
- package/dist/misc/pwa-install-button.js +160 -0
- package/dist/misc/rental-tile.d.ts +6 -0
- package/dist/misc/rental-tile.d.ts.map +1 -0
- package/dist/misc/rental-tile.js +33 -0
- package/dist/misc/scroll-area.d.ts +5 -0
- package/dist/misc/scroll-area.d.ts.map +1 -0
- package/dist/misc/scroll-area.js +13 -0
- package/dist/misc/searchBar.d.ts +6 -0
- package/dist/misc/searchBar.d.ts.map +1 -0
- package/dist/misc/searchBar.js +89 -0
- package/dist/misc/searchBox.d.ts +13 -0
- package/dist/misc/searchBox.d.ts.map +1 -0
- package/dist/misc/searchBox.js +63 -0
- package/dist/misc/select.d.ts +13 -0
- package/dist/misc/select.d.ts.map +1 -0
- package/dist/misc/select.js +38 -0
- package/dist/misc/separator.d.ts +4 -0
- package/dist/misc/separator.d.ts.map +1 -0
- package/dist/misc/separator.js +8 -0
- package/dist/misc/share.d.ts +5 -0
- package/dist/misc/share.d.ts.map +1 -0
- package/dist/misc/share.js +157 -0
- package/dist/misc/sheet.d.ts +13 -0
- package/dist/misc/sheet.d.ts.map +1 -0
- package/dist/misc/sheet.js +40 -0
- package/dist/misc/sidebar.d.ts +70 -0
- package/dist/misc/sidebar.d.ts.map +1 -0
- package/dist/misc/sidebar.js +212 -0
- package/dist/misc/skeleton.d.ts +38 -0
- package/dist/misc/skeleton.d.ts.map +1 -0
- package/dist/misc/skeleton.js +43 -0
- package/dist/misc/slider.d.ts +5 -0
- package/dist/misc/slider.d.ts.map +1 -0
- package/dist/misc/slider.js +11 -0
- package/dist/misc/starRating.d.ts +4 -0
- package/dist/misc/starRating.d.ts.map +1 -0
- package/dist/misc/starRating.js +11 -0
- package/dist/misc/stateCard.d.ts +7 -0
- package/dist/misc/stateCard.d.ts.map +1 -0
- package/dist/misc/stateCard.js +21 -0
- package/dist/misc/step-progress.d.ts +16 -0
- package/dist/misc/step-progress.d.ts.map +1 -0
- package/dist/misc/step-progress.js +40 -0
- package/dist/misc/switch.d.ts +5 -0
- package/dist/misc/switch.d.ts.map +1 -0
- package/dist/misc/switch.js +8 -0
- package/dist/misc/tabs.d.ts +8 -0
- package/dist/misc/tabs.d.ts.map +1 -0
- package/dist/misc/tabs.js +17 -0
- package/dist/misc/tag-filter-input.d.ts +16 -0
- package/dist/misc/tag-filter-input.d.ts.map +1 -0
- package/dist/misc/tag-filter-input.js +26 -0
- package/dist/misc/textarea.d.ts +4 -0
- package/dist/misc/textarea.d.ts.map +1 -0
- package/dist/misc/textarea.js +6 -0
- package/dist/misc/tile.d.ts +4 -0
- package/dist/misc/tile.d.ts.map +1 -0
- package/dist/misc/tile.js +45 -0
- package/dist/misc/time-select.d.ts +14 -0
- package/dist/misc/time-select.d.ts.map +1 -0
- package/dist/misc/time-select.js +13 -0
- package/dist/misc/tooltip.d.ts +8 -0
- package/dist/misc/tooltip.d.ts.map +1 -0
- package/dist/misc/tooltip.js +17 -0
- package/dist/misc/whatsapp-help.d.ts +9 -0
- package/dist/misc/whatsapp-help.d.ts.map +1 -0
- package/dist/misc/whatsapp-help.js +13 -0
- package/dist/misc/wizard-footer.d.ts +18 -0
- package/dist/misc/wizard-footer.d.ts.map +1 -0
- package/dist/misc/wizard-footer.js +11 -0
- package/dist/profile/socialLink.d.ts +10 -0
- package/dist/profile/socialLink.d.ts.map +1 -0
- package/dist/profile/socialLink.js +66 -0
- package/dist/utils/permissions.d.ts +7 -0
- package/dist/utils/permissions.d.ts.map +1 -0
- package/dist/utils/permissions.js +38 -0
- package/package.json +93 -0
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { retrieveCity, retrieveState } from "@myrjfa/state/dist/lib/utils";
|
|
4
|
+
import { INDIAN_CITIES } from "@myrjfa/state/dist/lib/models/props";
|
|
5
|
+
import { Search, SearchIcon, SlidersHorizontal, X } from "lucide-react";
|
|
6
|
+
import { usePathname, useRouter, useSearchParams } from "next/navigation";
|
|
7
|
+
import { Suspense, useEffect, useState } from "react";
|
|
8
|
+
import { Button } from "./button";
|
|
9
|
+
import { Filter } from "./filter";
|
|
10
|
+
import { Input } from "./input";
|
|
11
|
+
import { Sheet, SheetContent, SheetTitle, SheetTrigger } from "./sheet";
|
|
12
|
+
import { Slider } from "./slider";
|
|
13
|
+
// Default filter options (backward compatible)
|
|
14
|
+
const defaultFilterOptions = [
|
|
15
|
+
{ label: "destination", type: "autoComplete", datatype: "string[]", displayName: "Destination", deriveFromTiles: 'location', visibility: 'bar' },
|
|
16
|
+
{ label: "skill", type: "autoComplete", datatype: "string[]", displayName: "Skills", deriveFromTiles: 'skills', visibility: 'bar' },
|
|
17
|
+
{ label: "rating", type: "select", datatype: "number", displayName: "Rating", visibility: 'expanded' },
|
|
18
|
+
];
|
|
19
|
+
const INDIAN_CITY_SET = new Set(INDIAN_CITIES.map((city) => city.trim().toLowerCase()));
|
|
20
|
+
function retrieveScopedCity(location) {
|
|
21
|
+
var _a;
|
|
22
|
+
const parts = location.split(",").map((part) => part.trim()).filter(Boolean);
|
|
23
|
+
if (parts.length > 1) {
|
|
24
|
+
const lastPart = ((_a = parts[parts.length - 1]) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || "";
|
|
25
|
+
if (INDIAN_CITY_SET.has(lastPart))
|
|
26
|
+
return lastPart;
|
|
27
|
+
}
|
|
28
|
+
return retrieveCity(location);
|
|
29
|
+
}
|
|
30
|
+
function FilterBarComponent({ tiles, filterConfig = defaultFilterOptions, hero }) {
|
|
31
|
+
const searchParams = useSearchParams();
|
|
32
|
+
const pathname = usePathname();
|
|
33
|
+
const router = useRouter();
|
|
34
|
+
// Initialize filter state from config
|
|
35
|
+
const getInitialFilterState = () => {
|
|
36
|
+
const state = {};
|
|
37
|
+
filterConfig.forEach(opt => {
|
|
38
|
+
if (opt.datatype === 'string[]') {
|
|
39
|
+
state[opt.label] = opt.defaultValue || [];
|
|
40
|
+
}
|
|
41
|
+
else if (opt.datatype === 'number') {
|
|
42
|
+
state[opt.label] = opt.defaultValue || 0;
|
|
43
|
+
}
|
|
44
|
+
else if (opt.datatype === 'range') {
|
|
45
|
+
state[opt.label] = opt.defaultValue || { min: 0, max: 100 };
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
state[opt.label] = opt.defaultValue || '';
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return state;
|
|
52
|
+
};
|
|
53
|
+
const [filterParam, setFilterParam] = useState(getInitialFilterState);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
const newState = {};
|
|
56
|
+
filterConfig.forEach(opt => {
|
|
57
|
+
const param = searchParams.get(opt.label);
|
|
58
|
+
if (opt.datatype === 'string[]') {
|
|
59
|
+
newState[opt.label] = (param === null || param === void 0 ? void 0 : param.split(',').filter(Boolean)) || opt.defaultValue || [];
|
|
60
|
+
}
|
|
61
|
+
else if (opt.datatype === 'number') {
|
|
62
|
+
newState[opt.label] = parseInt(param || "0", 10) || opt.defaultValue || 0;
|
|
63
|
+
}
|
|
64
|
+
else if (opt.datatype === 'range') {
|
|
65
|
+
const minParam = searchParams.get(`${opt.label}Min`);
|
|
66
|
+
const maxParam = searchParams.get(`${opt.label}Max`);
|
|
67
|
+
const defaultRange = opt.defaultValue || { min: 0, max: 100 };
|
|
68
|
+
newState[opt.label] = {
|
|
69
|
+
min: minParam ? parseInt(minParam, 10) : defaultRange.min,
|
|
70
|
+
max: maxParam ? parseInt(maxParam, 10) : defaultRange.max
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
newState[opt.label] = param || opt.defaultValue || '';
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
setFilterParam(newState);
|
|
78
|
+
}, [searchParams, filterConfig]);
|
|
79
|
+
const getFiltersFromSearchParams = () => {
|
|
80
|
+
const state = {};
|
|
81
|
+
filterConfig.forEach(opt => {
|
|
82
|
+
const param = searchParams.get(opt.label);
|
|
83
|
+
if (opt.datatype === 'string[]') {
|
|
84
|
+
state[opt.label] = (param === null || param === void 0 ? void 0 : param.split(',').filter(Boolean)) || opt.defaultValue || [];
|
|
85
|
+
}
|
|
86
|
+
else if (opt.datatype === 'number') {
|
|
87
|
+
state[opt.label] = parseInt(param || "0", 10) || opt.defaultValue || 0;
|
|
88
|
+
}
|
|
89
|
+
else if (opt.datatype === 'range') {
|
|
90
|
+
const minParam = searchParams.get(`${opt.label}Min`);
|
|
91
|
+
const maxParam = searchParams.get(`${opt.label}Max`);
|
|
92
|
+
const defaultRange = opt.defaultValue || { min: 0, max: 100 };
|
|
93
|
+
state[opt.label] = {
|
|
94
|
+
min: minParam ? parseInt(minParam, 10) : defaultRange.min,
|
|
95
|
+
max: maxParam ? parseInt(maxParam, 10) : defaultRange.max
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
state[opt.label] = param || opt.defaultValue || '';
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
return state;
|
|
103
|
+
};
|
|
104
|
+
const changeMultiParams = (params, options) => {
|
|
105
|
+
const newParams = new URLSearchParams(searchParams);
|
|
106
|
+
newParams.set('page', '1');
|
|
107
|
+
Object.entries(params).forEach(([key, value]) => {
|
|
108
|
+
if (typeof value === 'object' && 'min' in value && 'max' in value) {
|
|
109
|
+
// Range type - only set if different from default
|
|
110
|
+
const config = filterConfig.find(f => f.label === key);
|
|
111
|
+
const defaultRange = (config === null || config === void 0 ? void 0 : config.defaultValue) || { min: 0, max: 100 };
|
|
112
|
+
if (value.min !== defaultRange.min || value.max !== defaultRange.max) {
|
|
113
|
+
newParams.set(`${key}Min`, value.min.toString());
|
|
114
|
+
newParams.set(`${key}Max`, value.max.toString());
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
newParams.delete(`${key}Min`);
|
|
118
|
+
newParams.delete(`${key}Max`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
else if (Array.isArray(value) && value.length > 0) {
|
|
122
|
+
newParams.set(key, value.join(','));
|
|
123
|
+
}
|
|
124
|
+
else if (value !== undefined && value !== null && value !== '' && value !== 0 && !Array.isArray(value)) {
|
|
125
|
+
newParams.set(key, value.toString());
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
newParams.delete(key);
|
|
129
|
+
newParams.delete(`${key}Min`);
|
|
130
|
+
newParams.delete(`${key}Max`);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
router.replace(`${pathname}?${newParams.toString()}`);
|
|
134
|
+
};
|
|
135
|
+
// Get filter values based on config
|
|
136
|
+
const getFilterValues = (opt) => {
|
|
137
|
+
if (opt.deriveFromTiles === 'opportunityType' && opt.options) {
|
|
138
|
+
// For opportunityType, dynamically filter options based on what types exist in tiles
|
|
139
|
+
const availableTypes = new Set((tiles !== null && tiles !== void 0 ? tiles : []).map(tile => tile.opportunityType || 'volunteer'));
|
|
140
|
+
return opt.options
|
|
141
|
+
.filter(o => availableTypes.has(o.value))
|
|
142
|
+
.map(o => o.label);
|
|
143
|
+
}
|
|
144
|
+
if (opt.options) {
|
|
145
|
+
return opt.options.map(o => o.label);
|
|
146
|
+
}
|
|
147
|
+
if (opt.deriveFromTiles === 'location') {
|
|
148
|
+
const tileLocations = (tiles !== null && tiles !== void 0 ? tiles : [])
|
|
149
|
+
.map(tile => opt.locationScope === 'city'
|
|
150
|
+
? retrieveScopedCity((tile === null || tile === void 0 ? void 0 : tile.location) || '')
|
|
151
|
+
: [retrieveState((tile === null || tile === void 0 ? void 0 : tile.location) || ''), retrieveCity((tile === null || tile === void 0 ? void 0 : tile.location) || '')])
|
|
152
|
+
.flat()
|
|
153
|
+
.filter(Boolean);
|
|
154
|
+
return Array.from(new Set([...tileLocations, ...INDIAN_CITIES]));
|
|
155
|
+
}
|
|
156
|
+
if (opt.deriveFromTiles === 'skills') {
|
|
157
|
+
return Array.from(new Set((tiles !== null && tiles !== void 0 ? tiles : []).flatMap(tile => tile.skills || [])));
|
|
158
|
+
}
|
|
159
|
+
if (opt.label === 'rating') {
|
|
160
|
+
return ["1 star and above", "2 star and above", "3 star and above", "4 star and above", "5 star only"];
|
|
161
|
+
}
|
|
162
|
+
return tiles.map(tile => tile[`${opt.deriveFromTiles}`]);
|
|
163
|
+
};
|
|
164
|
+
const handleFilterChange = (label, value, datatype, options) => {
|
|
165
|
+
if (value === null || value === "clear") {
|
|
166
|
+
const config = filterConfig.find(f => f.label === label);
|
|
167
|
+
setFilterParam(prev => ({
|
|
168
|
+
...prev,
|
|
169
|
+
[label]: datatype.includes('[]') ? [] : (datatype === 'number' ? 0 : ((config === null || config === void 0 ? void 0 : config.defaultValue) || ''))
|
|
170
|
+
}));
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
// For select with options, convert label to value
|
|
174
|
+
let actualValue = value;
|
|
175
|
+
if (options) {
|
|
176
|
+
const opt = options.find(o => decodeURIComponent(o.label.trim().toLowerCase()) === value);
|
|
177
|
+
if (opt)
|
|
178
|
+
actualValue = decodeURIComponent(opt.value.trim().toLowerCase());
|
|
179
|
+
}
|
|
180
|
+
setFilterParam(prev => {
|
|
181
|
+
const currentValues = prev[label];
|
|
182
|
+
const newValue = datatype === 'number' ? Number(value[0]) : actualValue;
|
|
183
|
+
if (currentValues == newValue || (Array.isArray(currentValues) && currentValues.includes(newValue))) {
|
|
184
|
+
return prev;
|
|
185
|
+
}
|
|
186
|
+
else if (Array.isArray(currentValues)) {
|
|
187
|
+
return { ...prev, [label]: [...currentValues, newValue] };
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
return { ...prev, [label]: newValue };
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
const handleRangeChange = (label, field, value) => {
|
|
195
|
+
setFilterParam(prev => {
|
|
196
|
+
const current = prev[label];
|
|
197
|
+
return {
|
|
198
|
+
...prev,
|
|
199
|
+
[label]: { ...current, [field]: value }
|
|
200
|
+
};
|
|
201
|
+
});
|
|
202
|
+
};
|
|
203
|
+
const [sheetOpen, setSheetOpen] = useState(false);
|
|
204
|
+
const [isApplying, setIsApplying] = useState(false);
|
|
205
|
+
// Get current opportunity type for conditional filters
|
|
206
|
+
const currentType = filterParam['type'] || 'volunteer';
|
|
207
|
+
// Filter configs based on showForTypes
|
|
208
|
+
const getVisibleConfigs = (configs) => {
|
|
209
|
+
return configs.filter(opt => {
|
|
210
|
+
if (!opt.showForTypes || opt.showForTypes.length === 0)
|
|
211
|
+
return true;
|
|
212
|
+
return opt.showForTypes.includes(currentType);
|
|
213
|
+
});
|
|
214
|
+
};
|
|
215
|
+
const getActiveFilters = (state) => {
|
|
216
|
+
const filters = [];
|
|
217
|
+
Object.entries(state).forEach(([key, values]) => {
|
|
218
|
+
const opt = filterConfig.find(o => o.label === key);
|
|
219
|
+
if (!opt)
|
|
220
|
+
return;
|
|
221
|
+
if (typeof values === 'object' && 'min' in values && 'max' in values) {
|
|
222
|
+
// Range filter
|
|
223
|
+
const defaultRange = opt.defaultValue || { min: 0, max: 100 };
|
|
224
|
+
if (values.min !== defaultRange.min || values.max !== defaultRange.max) {
|
|
225
|
+
filters.push({
|
|
226
|
+
label: key,
|
|
227
|
+
value: `${values.min}-${values.max} ${opt.rangeUnit || ''}`,
|
|
228
|
+
displayName: opt.displayName,
|
|
229
|
+
isRange: true
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
else if (Array.isArray(values) && values.length > 0) {
|
|
234
|
+
values.forEach(value => {
|
|
235
|
+
filters.push({ label: key, value, displayName: opt.displayName });
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
else if (!Array.isArray(values) && values !== 0 && values !== '' && values !== opt.defaultValue) {
|
|
239
|
+
// For select with options, show label not value
|
|
240
|
+
let displayValue = values;
|
|
241
|
+
if (opt.options) {
|
|
242
|
+
const found = opt.options.find(o => o.value === values);
|
|
243
|
+
if (found)
|
|
244
|
+
displayValue = found.label;
|
|
245
|
+
}
|
|
246
|
+
filters.push({ label: key, value: displayValue, displayName: opt.displayName });
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
return filters;
|
|
250
|
+
};
|
|
251
|
+
const appliedFilterState = getFiltersFromSearchParams();
|
|
252
|
+
const activeFilters = getActiveFilters(appliedFilterState);
|
|
253
|
+
const visibleActiveFilters = activeFilters.filter((filter) => {
|
|
254
|
+
const config = filterConfig.find((opt) => opt.label === filter.label);
|
|
255
|
+
return !(config === null || config === void 0 ? void 0 : config.hideActiveBadge);
|
|
256
|
+
});
|
|
257
|
+
const hasActiveFilters = activeFilters.length > 0;
|
|
258
|
+
const themeStyles = {
|
|
259
|
+
sand: "border-[#e8dccb] bg-[linear-gradient(135deg,#f7efe3_0%,#efe2cd_52%,#e6d4bc_100%)]",
|
|
260
|
+
emerald: "border-emerald-200/70 bg-[linear-gradient(135deg,#ecfdf5_0%,#d1fae5_55%,#ecfeff_100%)]",
|
|
261
|
+
sunset: "border-orange-200/70 bg-[linear-gradient(135deg,#fff7ed_0%,#ffedd5_50%,#fef3c7_100%)]",
|
|
262
|
+
slate: "border-slate-700/70 bg-[linear-gradient(135deg,#0f172a_0%,#111827_55%,#1e293b_100%)]",
|
|
263
|
+
ocean: "border-sky-200/70 bg-[linear-gradient(135deg,#eff6ff_0%,#dbeafe_52%,#ecfeff_100%)]",
|
|
264
|
+
};
|
|
265
|
+
const currentTheme = themeStyles[(hero === null || hero === void 0 ? void 0 : hero.theme) || 'emerald'];
|
|
266
|
+
const expandedSectionClasses = {
|
|
267
|
+
sand: "border-b border-[#e8dccb] bg-[linear-gradient(135deg,#f7efe3_0%,#efe2cd_52%,#e6d4bc_100%)]",
|
|
268
|
+
emerald: "border-b border-emerald-100 bg-[linear-gradient(135deg,#effcf5_0%,#dcfce7_48%,#ecfeff_100%)]",
|
|
269
|
+
sunset: "border-b border-orange-100 bg-[linear-gradient(135deg,#fff7ed_0%,#ffedd5_50%,#fef3c7_100%)]",
|
|
270
|
+
slate: "border-b border-slate-800 bg-[linear-gradient(135deg,#0f172a_0%,#172554_52%,#1e1b4b_100%)]",
|
|
271
|
+
ocean: "border-b border-sky-100 bg-[linear-gradient(135deg,#f0f9ff_0%,#dbeafe_50%,#ecfeff_100%)]",
|
|
272
|
+
};
|
|
273
|
+
const applyFilters = () => {
|
|
274
|
+
setIsApplying(true);
|
|
275
|
+
changeMultiParams(filterParam);
|
|
276
|
+
setSheetOpen(false);
|
|
277
|
+
setTimeout(() => setIsApplying(false), 420);
|
|
278
|
+
};
|
|
279
|
+
const clearAllFilters = () => {
|
|
280
|
+
const clearedParams = getInitialFilterState();
|
|
281
|
+
setFilterParam(clearedParams);
|
|
282
|
+
changeMultiParams(clearedParams);
|
|
283
|
+
setSheetOpen(false);
|
|
284
|
+
};
|
|
285
|
+
const renderFilterInput = (opt) => {
|
|
286
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
287
|
+
if (opt.type === 'text') {
|
|
288
|
+
const value = filterParam[opt.label] || '';
|
|
289
|
+
return (_jsx(Input, { value: value, onChange: (e) => setFilterParam(prev => ({ ...prev, [opt.label]: e.target.value })), placeholder: `Search ${opt.displayName.toLowerCase()}...`, className: "w-full bg-transparent border-none shadow-none px-0 focus-visible:ring-0" }));
|
|
290
|
+
}
|
|
291
|
+
if (opt.type === 'range') {
|
|
292
|
+
const rangeValue = filterParam[opt.label];
|
|
293
|
+
const defaultRange = opt.defaultValue || { min: 0, max: 100 };
|
|
294
|
+
const minVal = (_a = opt.rangeMin) !== null && _a !== void 0 ? _a : defaultRange.min;
|
|
295
|
+
const maxVal = (_b = opt.rangeMax) !== null && _b !== void 0 ? _b : defaultRange.max;
|
|
296
|
+
const step = (_c = opt.rangeStep) !== null && _c !== void 0 ? _c : 1;
|
|
297
|
+
// Number inputs mode
|
|
298
|
+
if (opt.rangeInputType === 'number') {
|
|
299
|
+
// Inline style to hide number input spinners
|
|
300
|
+
const noSpinnerStyle = {
|
|
301
|
+
MozAppearance: 'textfield',
|
|
302
|
+
WebkitAppearance: 'none',
|
|
303
|
+
appearance: 'textfield'
|
|
304
|
+
};
|
|
305
|
+
return (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { type: "number", placeholder: "Min", value: (rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.min) === undefined || (rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.min) === null || Number.isNaN(rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.min) ? '' : rangeValue.min, min: minVal, max: maxVal, onChange: (e) => {
|
|
306
|
+
const inputVal = e.target.value;
|
|
307
|
+
const val = inputVal === '' ? NaN : parseInt(inputVal);
|
|
308
|
+
setFilterParam(prev => ({
|
|
309
|
+
...prev,
|
|
310
|
+
[opt.label]: { ...prev[opt.label], min: val }
|
|
311
|
+
}));
|
|
312
|
+
}, onWheel: (e) => e.currentTarget.blur(), style: noSpinnerStyle, className: "w-20 px-2 py-1 border rounded text-sm [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none" }), _jsx("span", { className: "text-gray-500", children: "to" }), _jsx("input", { type: "number", placeholder: "Max", value: (rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.max) === undefined || (rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.max) === null || Number.isNaN(rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.max) ? '' : rangeValue.max, min: minVal, max: maxVal, onChange: (e) => {
|
|
313
|
+
const inputVal = e.target.value;
|
|
314
|
+
const val = inputVal === '' ? NaN : parseInt(inputVal);
|
|
315
|
+
setFilterParam(prev => ({
|
|
316
|
+
...prev,
|
|
317
|
+
[opt.label]: { ...prev[opt.label], max: val }
|
|
318
|
+
}));
|
|
319
|
+
}, onWheel: (e) => e.currentTarget.blur(), style: noSpinnerStyle, className: "w-20 px-2 py-1 border rounded text-sm [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none" }), opt.rangeUnit && _jsx("span", { className: "text-sm text-gray-500", children: opt.rangeUnit })] }));
|
|
320
|
+
}
|
|
321
|
+
// Slider mode (default)
|
|
322
|
+
return (_jsxs("div", { className: "flex flex-col gap-2 w-full", children: [_jsxs("div", { className: "flex justify-between text-sm text-gray-600", children: [_jsxs("span", { children: [(_d = rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.min) !== null && _d !== void 0 ? _d : minVal, " ", opt.rangeUnit] }), _jsxs("span", { children: [(_e = rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.max) !== null && _e !== void 0 ? _e : maxVal, " ", opt.rangeUnit] })] }), _jsx(Slider, { min: minVal, max: maxVal, step: step, value: [(_f = rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.min) !== null && _f !== void 0 ? _f : minVal, (_g = rangeValue === null || rangeValue === void 0 ? void 0 : rangeValue.max) !== null && _g !== void 0 ? _g : maxVal], onValueChange: (values) => {
|
|
323
|
+
setFilterParam(prev => {
|
|
324
|
+
var _a, _b;
|
|
325
|
+
return ({
|
|
326
|
+
...prev,
|
|
327
|
+
[opt.label]: { min: (_a = values[0]) !== null && _a !== void 0 ? _a : minVal, max: (_b = values[1]) !== null && _b !== void 0 ? _b : maxVal }
|
|
328
|
+
});
|
|
329
|
+
});
|
|
330
|
+
}, className: "w-full" })] }));
|
|
331
|
+
}
|
|
332
|
+
const selectedValue = (() => {
|
|
333
|
+
const val = filterParam[opt.label];
|
|
334
|
+
if (opt.datatype.includes('[]')) {
|
|
335
|
+
const arr = val;
|
|
336
|
+
return arr.length > 0 ? `${arr.length} selected` : '';
|
|
337
|
+
}
|
|
338
|
+
if (opt.datatype === 'number') {
|
|
339
|
+
return val ? `${val} star or more` : '';
|
|
340
|
+
}
|
|
341
|
+
// For select type, show label not value
|
|
342
|
+
if (opt.options && val) {
|
|
343
|
+
const found = opt.options.find(o => o.value === val);
|
|
344
|
+
return (found === null || found === void 0 ? void 0 : found.label) || val.toString();
|
|
345
|
+
}
|
|
346
|
+
return (val === null || val === void 0 ? void 0 : val.toString()) || '';
|
|
347
|
+
})();
|
|
348
|
+
return (_jsx(Filter, { label: opt.label, formType: opt.type === 'select' ? 'select' : 'autoComplete', selectedValue: selectedValue, values: getFilterValues(opt), onChange: (value) => handleFilterChange(opt.label, value, opt.datatype, opt.options) }));
|
|
349
|
+
};
|
|
350
|
+
// Separate bar filters from expanded filters
|
|
351
|
+
const visibleConfigs = getVisibleConfigs(filterConfig);
|
|
352
|
+
const barFilters = visibleConfigs.filter(f => f.visibility !== 'expanded');
|
|
353
|
+
const expandedFilters = visibleConfigs.filter(f => f.visibility === 'expanded');
|
|
354
|
+
const filtersCard = (_jsx("div", { className: `rounded-[1.75rem] border border-white/70 bg-white/92 shadow-lg backdrop-blur transition-all duration-500 ${hasActiveFilters ? 'p-3 sm:p-3' : 'p-4'}`, children: _jsxs("div", { className: "flex w-full flex-col gap-3 md:flex-row md:items-center", children: [barFilters.slice(0, 3).map((opt, index) => (_jsxs("div", { className: "hidden md:flex min-w-0 flex-1 items-center", children: [_jsx("div", { className: "w-full", children: renderFilterInput(opt) }), index < Math.min(barFilters.length, 3) - 1 ? (_jsx("div", { className: "mx-4 hidden h-10 w-px bg-slate-200 md:block" })) : null] }, opt.label))), _jsxs(Sheet, { open: sheetOpen, onOpenChange: setSheetOpen, children: [_jsx(SheetTrigger, { asChild: true, children: _jsxs("button", { className: "flex h-12 items-center justify-center gap-2 rounded-2xl border border-slate-200 bg-slate-50 px-4 text-sm font-semibold text-slate-600 transition hover:border-slate-300 hover:bg-slate-100 md:min-w-[10rem]", children: [_jsx(SlidersHorizontal, { size: 16, className: "hidden md:block" }), _jsx(SearchIcon, { size: 16, className: "md:hidden" }), _jsx("span", { className: "md:hidden", children: "Start search..." }), _jsx("span", { className: "hidden md:inline", children: expandedFilters.length > 0 ? `+${expandedFilters.length} more` : 'More filters' })] }) }), _jsxs(SheetContent, { side: "bottom", className: "z-[200] max-h-[88vh] overflow-hidden rounded-t-[2rem] border-t border-slate-200 bg-white p-0 shadow-2xl md:inset-x-1/2 md:bottom-auto md:top-1/2 md:h-[min(86vh,820px)] md:w-[min(960px,calc(100vw-3rem))] md:-translate-x-1/2 md:-translate-y-1/2 md:rounded-[2rem] md:border", children: [_jsx("div", { className: "flex items-center justify-center border-b border-slate-200 px-5 py-4 md:px-8", children: _jsx(SheetTitle, { className: "text-lg font-black tracking-tight text-slate-950", children: "Filters" }) }), _jsx("div", { className: "flex-1 overflow-y-auto px-5 py-5 md:px-10 md:py-7", children: _jsx("div", { className: "mx-auto max-w-3xl divide-y divide-slate-100", children: visibleConfigs
|
|
355
|
+
.filter(opt => !opt.groupWith)
|
|
356
|
+
.map((opt) => {
|
|
357
|
+
const groupedFilter = visibleConfigs.find(f => f.groupWith === opt.label);
|
|
358
|
+
if (groupedFilter) {
|
|
359
|
+
return (_jsxs("section", { className: "space-y-4 py-6 first:pt-0", children: [_jsxs("label", { className: "block text-base font-black text-slate-900", children: [groupedFilter.displayName, " & ", opt.displayName] }), _jsxs("div", { className: "grid gap-3 rounded-3xl border border-slate-200 bg-slate-50/70 p-3 sm:grid-cols-[8rem_minmax(0,1fr)]", children: [_jsx("div", { children: renderFilterInput(groupedFilter) }), _jsx("div", { children: renderFilterInput(opt) })] })] }, opt.label));
|
|
360
|
+
}
|
|
361
|
+
return (_jsxs("section", { className: "space-y-4 py-6 first:pt-0", children: [_jsx("label", { className: "block text-base font-black text-slate-900", children: opt.displayName }), _jsx("div", { className: "rounded-3xl border border-slate-200 bg-slate-50/70 p-3", children: renderFilterInput(opt) })] }, opt.label));
|
|
362
|
+
}) }) }), _jsxs("div", { className: "sticky bottom-0 flex gap-3 border-t border-slate-200 bg-white/95 px-5 py-4 shadow-[0_-18px_45px_-30px_rgba(15,23,42,0.45)] backdrop-blur md:px-10", children: [_jsx(Button, { variant: "outline", onClick: clearAllFilters, className: "h-12 flex-1 rounded-2xl border-slate-300 font-black", children: "Clear All" }), _jsx(Button, { onClick: applyFilters, className: "h-12 flex-1 rounded-2xl font-black shadow-lg shadow-primary/20", children: "Apply Filters" })] })] })] }), _jsxs(Button, { variant: "default", onClick: applyFilters, className: `h-12 rounded-2xl px-5 text-sm font-black transition duration-300 md:min-w-[8.5rem] ${isApplying ? 'scale-95 shadow-[0_0_0_10px_rgba(16,185,129,0.14)]' : 'hover:scale-[1.02] shadow-lg shadow-primary/25'}`, children: [_jsx(Search, { size: 18, className: "mr-2" }), "Search"] })] }) }));
|
|
363
|
+
return hasActiveFilters ? (_jsx("div", { className: "sticky top-16 z-30 mb-10 mt-2 w-full px-4 transition-all duration-500", children: _jsx("div", { className: `mx-auto w-full max-w-6xl overflow-hidden rounded-[2rem] border py-3 shadow-[0_28px_70px_-34px_rgba(15,23,42,0.28)] transition-all duration-500 ${currentTheme}`, children: _jsxs("div", { className: "mx-auto w-full max-w-5xl px-4 sm:px-6", children: [filtersCard, visibleActiveFilters.length > 0 && (_jsx("div", { className: "mt-4", children: _jsxs("div", { className: "flex flex-wrap gap-2", children: [visibleActiveFilters.map((filter, index) => (_jsxs("div", { className: "inline-flex items-center gap-1 rounded-full border border-white/70 bg-white/88 px-3 py-1 text-sm text-slate-700 shadow-sm", children: [_jsxs("span", { className: "font-medium", children: [filter.displayName, ":"] }), _jsx("span", { children: typeof filter.value === 'number' && !filter.isRange
|
|
364
|
+
? `${filter.value} star or more`
|
|
365
|
+
: filter.value }), _jsx("button", { onClick: () => {
|
|
366
|
+
const newState = { ...filterParam };
|
|
367
|
+
if (filter.isRange) {
|
|
368
|
+
const config = filterConfig.find(f => f.label === filter.label);
|
|
369
|
+
newState[filter.label] = (config === null || config === void 0 ? void 0 : config.defaultValue) || { min: 0, max: 100 };
|
|
370
|
+
}
|
|
371
|
+
else if (Array.isArray(filterParam[filter.label])) {
|
|
372
|
+
newState[filter.label] = filterParam[filter.label].filter(v => v !== filter.value);
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
const config = filterConfig.find(f => f.label === filter.label);
|
|
376
|
+
newState[filter.label] = (config === null || config === void 0 ? void 0 : config.defaultValue) || 0;
|
|
377
|
+
}
|
|
378
|
+
setFilterParam(newState);
|
|
379
|
+
changeMultiParams(newState);
|
|
380
|
+
}, className: "ml-1 rounded-full p-1 transition-colors hover:bg-slate-100", children: _jsx(X, { size: 12 }) })] }, `${filter.label}-${filter.value}-${index}`))), _jsx("button", { onClick: clearAllFilters, className: "inline-flex items-center gap-1 rounded-full border border-red-600 bg-white/88 px-3 py-1 text-sm text-slate-600 shadow-sm transition-colors hover:bg-red-200", children: "Clear All" })] }) }))] }) }) })) : (_jsxs("div", { className: `relative w-full overflow-hidden px-4 pb-10 pt-20 transition-all duration-500 ${expandedSectionClasses[(hero === null || hero === void 0 ? void 0 : hero.theme) || 'emerald']}`, children: [_jsxs("div", { className: "pointer-events-none absolute inset-0", children: [_jsx("div", { className: "absolute -left-20 top-8 h-56 w-56 rounded-full bg-white/35 blur-3xl" }), _jsx("div", { className: "absolute right-0 top-0 h-72 w-72 rounded-full bg-white/15 blur-3xl" }), _jsx("div", { className: "absolute bottom-0 left-1/3 h-40 w-40 rounded-full bg-white/15 blur-2xl" })] }), _jsxs("div", { className: "container relative z-10 mx-auto max-w-5xl", children: [hero ? (_jsxs("div", { className: "mb-8 text-center", children: [hero.eyebrow ? (_jsx("span", { className: `inline-flex rounded-full px-3 py-1 text-xs font-black uppercase tracking-[0.2em] shadow-sm ${hero.theme === 'slate' ? 'border border-white/20 bg-white/10 text-white/88' : 'border border-black/10 bg-white/70 text-slate-700'}`, children: hero.eyebrow })) : null, _jsx("h2", { className: `mt-4 text-4xl font-black leading-tight tracking-tight md:text-5xl ${hero.theme === 'slate' ? 'text-white' : 'text-inherit'}`, children: hero.title }), hero.description ? (_jsx("p", { className: `mx-auto mt-2 max-w-3xl text-base font-medium ${hero.theme === 'slate' ? 'text-white/78' : 'text-slate-600'}`, children: hero.description })) : null] })) : null, filtersCard] })] }));
|
|
381
|
+
}
|
|
382
|
+
export function FilterBar({ tiles, filterConfig, hero }) {
|
|
383
|
+
return (_jsx(Suspense, { fallback: _jsx("div", { className: "w-full h-screen flex items-center justify-center", children: "Loading..." }), children: _jsx(FilterBarComponent, { tiles: tiles, filterConfig: filterConfig, hero: hero }) }));
|
|
384
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
2
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { type ControllerProps, type FieldPath, type FieldValues } from "react-hook-form";
|
|
5
|
+
declare const Form: React.FC<any>;
|
|
6
|
+
declare const FormField: <TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>({ ...props }: ControllerProps<TFieldValues, TName>) => import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare const useFormField: () => {
|
|
8
|
+
invalid: boolean;
|
|
9
|
+
isDirty: boolean;
|
|
10
|
+
isTouched: boolean;
|
|
11
|
+
isValidating: boolean;
|
|
12
|
+
error?: import("react-hook-form").FieldError;
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
formItemId: string;
|
|
16
|
+
formDescriptionId: string;
|
|
17
|
+
formMessageId: string;
|
|
18
|
+
};
|
|
19
|
+
declare function FormItem({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
declare function FormLabel({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
declare function FormControl({ ...props }: React.ComponentProps<typeof Slot>): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
declare function FormDescription({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
declare function FormMessage({ className, ...props }: React.ComponentProps<"p">): import("react/jsx-runtime").JSX.Element | null;
|
|
24
|
+
export { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField, };
|
|
25
|
+
//# sourceMappingURL=form.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/misc/form.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAE3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EAIjB,MAAM,iBAAiB,CAAA;AAIxB,QAAA,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,CAAgB,CAAA;AAaxC,QAAA,MAAM,SAAS,GACb,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,KAAK,SAAS,SAAS,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAC/D,cAEC,eAAe,CAAC,YAAY,EAAE,KAAK,CAAC,4CAMtC,CAAA;AAED,QAAA,MAAM,YAAY;;;;;;;;;;;CAqBjB,CAAA;AAUD,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAYrE;AAED,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAYlD;AAED,iBAAS,WAAW,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,2CAgBnE;AAED,iBAAS,eAAe,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,2CAW1E;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,kDAkBtE;AAED,OAAO,EACL,YAAY,EACZ,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,WAAW,EACX,eAAe,EACf,WAAW,EACX,SAAS,GACV,CAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
4
|
+
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { Controller, FormProvider, useFormContext, useFormState, } from "react-hook-form";
|
|
7
|
+
import { Label } from "./label";
|
|
8
|
+
const Form = FormProvider;
|
|
9
|
+
const FormFieldContext = React.createContext({});
|
|
10
|
+
const FormField = ({ ...props }) => {
|
|
11
|
+
return (_jsx(FormFieldContext.Provider, { value: { name: props.name }, children: _jsx(Controller, { ...props }) }));
|
|
12
|
+
};
|
|
13
|
+
const useFormField = () => {
|
|
14
|
+
const fieldContext = React.useContext(FormFieldContext);
|
|
15
|
+
const itemContext = React.useContext(FormItemContext);
|
|
16
|
+
const { getFieldState } = useFormContext();
|
|
17
|
+
const formState = useFormState({ name: fieldContext.name });
|
|
18
|
+
const fieldState = getFieldState(fieldContext.name, formState);
|
|
19
|
+
if (!fieldContext) {
|
|
20
|
+
throw new Error("useFormField should be used within <FormField>");
|
|
21
|
+
}
|
|
22
|
+
const { id } = itemContext;
|
|
23
|
+
return {
|
|
24
|
+
id,
|
|
25
|
+
name: fieldContext.name,
|
|
26
|
+
formItemId: `${id}-form-item`,
|
|
27
|
+
formDescriptionId: `${id}-form-item-description`,
|
|
28
|
+
formMessageId: `${id}-form-item-message`,
|
|
29
|
+
...fieldState,
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
const FormItemContext = React.createContext({});
|
|
33
|
+
function FormItem({ className, ...props }) {
|
|
34
|
+
const id = React.useId();
|
|
35
|
+
return (_jsx(FormItemContext.Provider, { value: { id }, children: _jsx("div", { "data-slot": "form-item", className: cn("grid gap-2", className), ...props }) }));
|
|
36
|
+
}
|
|
37
|
+
function FormLabel({ className, ...props }) {
|
|
38
|
+
const { error, formItemId } = useFormField();
|
|
39
|
+
return (_jsx(Label, { "data-slot": "form-label", "data-error": !!error, className: cn("data-[error=true]:text-destructive-foreground", className), htmlFor: formItemId, ...props }));
|
|
40
|
+
}
|
|
41
|
+
function FormControl({ ...props }) {
|
|
42
|
+
const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
|
|
43
|
+
return (_jsx(Slot, { "data-slot": "form-control", id: formItemId, "aria-describedby": !error
|
|
44
|
+
? `${formDescriptionId}`
|
|
45
|
+
: `${formDescriptionId} ${formMessageId}`, "aria-invalid": !!error, ...props }));
|
|
46
|
+
}
|
|
47
|
+
function FormDescription({ className, ...props }) {
|
|
48
|
+
const { formDescriptionId } = useFormField();
|
|
49
|
+
return (_jsx("p", { "data-slot": "form-description", id: formDescriptionId, className: cn("text-muted-foreground text-sm", className), ...props }));
|
|
50
|
+
}
|
|
51
|
+
function FormMessage({ className, ...props }) {
|
|
52
|
+
var _a;
|
|
53
|
+
const { error, formMessageId } = useFormField();
|
|
54
|
+
const body = error ? String((_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : "") : props.children;
|
|
55
|
+
if (!body) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return (_jsx("p", { "data-slot": "form-message", id: formMessageId, className: cn("text-destructive-foreground text-sm", className), ...props, children: body }));
|
|
59
|
+
}
|
|
60
|
+
export { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField, };
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export interface CompressOptions {
|
|
2
|
+
quality?: number;
|
|
3
|
+
maxWidth?: number;
|
|
4
|
+
maxHeight?: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Compress an image File using Canvas API.
|
|
8
|
+
* Returns a new File object with the same name but compressed content.
|
|
9
|
+
*/
|
|
10
|
+
export declare function compressImage(file: File, options?: CompressOptions): Promise<File>;
|
|
11
|
+
export interface ImageCompressorProps {
|
|
12
|
+
enableCompression?: boolean;
|
|
13
|
+
quality?: number;
|
|
14
|
+
maxWidth?: number;
|
|
15
|
+
maxHeight?: number;
|
|
16
|
+
accept?: string;
|
|
17
|
+
multiple?: boolean;
|
|
18
|
+
onChange: (files: File[]) => void;
|
|
19
|
+
children?: React.ReactNode;
|
|
20
|
+
className?: string;
|
|
21
|
+
id?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* #26 — Image Compressor Input Component
|
|
25
|
+
* Drop-in replacement for a file input that optionally compresses images
|
|
26
|
+
* before passing them to the onChange handler.
|
|
27
|
+
*/
|
|
28
|
+
export declare function ImageCompressorInput({ enableCompression, quality, maxWidth, maxHeight, accept, multiple, onChange, children, className, id, }: ImageCompressorProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
//# sourceMappingURL=image-compressor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-compressor.d.ts","sourceRoot":"","sources":["../../src/misc/image-compressor.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAC/B,IAAI,EAAE,IAAI,EACV,OAAO,GAAE,eAAoB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAkDf;AAED,MAAM,WAAW,oBAAoB;IACjC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EACjC,iBAAwB,EACxB,OAAa,EACb,QAAe,EACf,SAAgB,EAChB,MAAoD,EACpD,QAAgB,EAChB,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,EAAE,GACL,EAAE,oBAAoB,2CAmCtB"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useRef, useCallback } from 'react';
|
|
4
|
+
/**
|
|
5
|
+
* Compress an image File using Canvas API.
|
|
6
|
+
* Returns a new File object with the same name but compressed content.
|
|
7
|
+
*/
|
|
8
|
+
export async function compressImage(file, options = {}) {
|
|
9
|
+
const { quality = 0.8, maxWidth = 1920, maxHeight = 1920 } = options;
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
const img = new Image();
|
|
12
|
+
const url = URL.createObjectURL(file);
|
|
13
|
+
img.onload = () => {
|
|
14
|
+
URL.revokeObjectURL(url);
|
|
15
|
+
let { width, height } = img;
|
|
16
|
+
if (width > maxWidth) {
|
|
17
|
+
height = Math.round((height * maxWidth) / width);
|
|
18
|
+
width = maxWidth;
|
|
19
|
+
}
|
|
20
|
+
if (height > maxHeight) {
|
|
21
|
+
width = Math.round((width * maxHeight) / height);
|
|
22
|
+
height = maxHeight;
|
|
23
|
+
}
|
|
24
|
+
const canvas = document.createElement('canvas');
|
|
25
|
+
canvas.width = width;
|
|
26
|
+
canvas.height = height;
|
|
27
|
+
const ctx = canvas.getContext('2d');
|
|
28
|
+
if (!ctx) {
|
|
29
|
+
resolve(file); // fallback: return original
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
ctx.drawImage(img, 0, 0, width, height);
|
|
33
|
+
canvas.toBlob((blob) => {
|
|
34
|
+
if (!blob) {
|
|
35
|
+
resolve(file); // fallback
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
resolve(new File([blob], file.name, { type: 'image/webp', lastModified: Date.now() }));
|
|
39
|
+
}, 'image/webp', quality);
|
|
40
|
+
};
|
|
41
|
+
img.onerror = () => {
|
|
42
|
+
URL.revokeObjectURL(url);
|
|
43
|
+
reject(new Error(`Failed to load image: ${file.name}`));
|
|
44
|
+
};
|
|
45
|
+
img.src = url;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* #26 — Image Compressor Input Component
|
|
50
|
+
* Drop-in replacement for a file input that optionally compresses images
|
|
51
|
+
* before passing them to the onChange handler.
|
|
52
|
+
*/
|
|
53
|
+
export function ImageCompressorInput({ enableCompression = true, quality = 0.8, maxWidth = 1920, maxHeight = 1920, accept = 'image/jpeg,image/jpg,image/png,image/webp', multiple = false, onChange, children, className, id, }) {
|
|
54
|
+
const inputRef = useRef(null);
|
|
55
|
+
const handleChange = useCallback(async (e) => {
|
|
56
|
+
const rawFiles = Array.from(e.target.files || []);
|
|
57
|
+
if (!rawFiles.length)
|
|
58
|
+
return;
|
|
59
|
+
if (!enableCompression) {
|
|
60
|
+
onChange(rawFiles);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const compressed = await Promise.all(rawFiles.map(f => compressImage(f, { quality, maxWidth, maxHeight }).catch(() => f)));
|
|
64
|
+
onChange(compressed);
|
|
65
|
+
// Reset input so the same file can be re-selected
|
|
66
|
+
if (inputRef.current)
|
|
67
|
+
inputRef.current.value = '';
|
|
68
|
+
}, [enableCompression, quality, maxWidth, maxHeight, onChange]);
|
|
69
|
+
return (_jsxs("label", { className: className, style: { cursor: 'pointer' }, children: [children, _jsx("input", { ref: inputRef, id: id, type: "file", accept: accept, multiple: multiple, onChange: handleChange, style: { display: 'none' } })] }));
|
|
70
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface ImageCropperProps {
|
|
3
|
+
image: string;
|
|
4
|
+
onCancel: () => void;
|
|
5
|
+
onCropComplete: (croppedImage: Blob) => void;
|
|
6
|
+
open: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare const ImageCropper: React.FC<ImageCropperProps>;
|
|
9
|
+
export default ImageCropper;
|
|
10
|
+
//# sourceMappingURL=image-cropper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-cropper.d.ts","sourceRoot":"","sources":["../../src/misc/image-cropper.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAMrD,UAAU,iBAAiB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,EAAE,CAAC,YAAY,EAAE,IAAI,KAAK,IAAI,CAAC;IAC7C,IAAI,EAAE,OAAO,CAAC;CACjB;AAED,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAgG7C,CAAC;AAEF,eAAe,YAAY,CAAC"}
|