@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,209 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { zodResolver } from "@hookform/resolvers/zod";
|
|
4
|
+
import { addReview, deleteReview, editReview, getReviewsById } from "@myrjfa/state/dist/lib/actions/actions";
|
|
5
|
+
import { reviewBasicSchema } from "@myrjfa/state/dist/lib/models/review";
|
|
6
|
+
import { userAtom, userLoadingAtom } from "@myrjfa/state/dist/lib/userAtom";
|
|
7
|
+
import { formatDate } from "@myrjfa/state/dist/lib/utils";
|
|
8
|
+
import { useAtomValue } from "jotai";
|
|
9
|
+
import { StarIcon } from "lucide-react";
|
|
10
|
+
import { useEffect, useState } from "react";
|
|
11
|
+
import { useForm } from "react-hook-form";
|
|
12
|
+
import { deleteActions, showAlert } from "../misc/alertdialogclaude";
|
|
13
|
+
import { Avatar, AvatarFallback, AvatarImage } from "../misc/avatar";
|
|
14
|
+
import ImageUploader from "../components/create-flow/ImageUploader";
|
|
15
|
+
import { Button } from "../misc/button";
|
|
16
|
+
import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "../misc/card";
|
|
17
|
+
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "../misc/form";
|
|
18
|
+
import { Separator } from "../misc/separator";
|
|
19
|
+
import { Textarea } from "../misc/textarea";
|
|
20
|
+
const StarRating = ({ value, onChange, onHover, size = 8, interactive = false }) => {
|
|
21
|
+
return (_jsx("div", { className: "flex space-x-1", children: [1, 2, 3, 4, 5].map((star) => (_jsx("button", { type: "button", onClick: () => interactive && (onChange === null || onChange === void 0 ? void 0 : onChange(star)), onMouseEnter: () => interactive && (onHover === null || onHover === void 0 ? void 0 : onHover(star)), onMouseLeave: () => interactive && (onHover === null || onHover === void 0 ? void 0 : onHover(null)), className: `focus:outline-none text-${size}xl`, children: _jsx(StarIcon, { className: `h-${size} w-${size} ${star <= value ? 'text-yellow-400 fill-yellow-400' : 'text-gray-300'}` }) }, star))) }));
|
|
22
|
+
};
|
|
23
|
+
export function ReviewPage({ title, subtitle, targetId, targetType = "opportunity", editable = false, initialReviews = [], reviewCategory = "review", hideWhenEmpty = false, }) {
|
|
24
|
+
var _a;
|
|
25
|
+
const user = useAtomValue(userAtom);
|
|
26
|
+
const loading = useAtomValue(userLoadingAtom);
|
|
27
|
+
const [review, setReview] = useState(Array.isArray(initialReviews) ? ((_a = initialReviews.find((r) => r.reviewerUsername === (user === null || user === void 0 ? void 0 : user.username))) !== null && _a !== void 0 ? _a : null) : null);
|
|
28
|
+
const [reviews, setReviews] = useState(initialReviews);
|
|
29
|
+
const [displayReviews, setDisplayReviews] = useState([]);
|
|
30
|
+
const [page, setPage] = useState(1);
|
|
31
|
+
const [hasMore, setHasMore] = useState(false);
|
|
32
|
+
const [totalCount, setTotalCount] = useState(Array.isArray(initialReviews) ? initialReviews.length : 0);
|
|
33
|
+
const [hoveredRating, setHoveredRating] = useState(null);
|
|
34
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
35
|
+
const [isDeleting, setIsDeleting] = useState(false);
|
|
36
|
+
const [isFormInitialized, setIsFormInitialized] = useState(false);
|
|
37
|
+
const [isLoadingMore, setIsLoadingMore] = useState(false);
|
|
38
|
+
// Image state
|
|
39
|
+
const [previewImages, setPreviewImages] = useState([]);
|
|
40
|
+
const [images, setImages] = useState([]);
|
|
41
|
+
const form = useForm({
|
|
42
|
+
resolver: zodResolver(reviewBasicSchema),
|
|
43
|
+
defaultValues: {
|
|
44
|
+
rating: reviewCategory === "comment" ? 1 : ((review === null || review === void 0 ? void 0 : review.rating) || 0),
|
|
45
|
+
comment: (review === null || review === void 0 ? void 0 : review.comment) || "",
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
const ratingValue = hoveredRating !== null && hoveredRating !== void 0 ? hoveredRating : form.watch("rating");
|
|
49
|
+
useEffect(() => {
|
|
50
|
+
if (loading)
|
|
51
|
+
return;
|
|
52
|
+
const fetchData = async () => {
|
|
53
|
+
// Cast to any to bypass stale type definitions in @myrjfa/state/dist
|
|
54
|
+
const response = await getReviewsById(targetId, targetType, { page: 1, limit: 10 });
|
|
55
|
+
if (response === null || response === void 0 ? void 0 : response.error) {
|
|
56
|
+
console.error("Error: " + response.error);
|
|
57
|
+
}
|
|
58
|
+
else if (Array.isArray(response.reviews)) {
|
|
59
|
+
setReviews(response.reviews);
|
|
60
|
+
setTotalCount(response.totalCount);
|
|
61
|
+
setHasMore(response.hasMore);
|
|
62
|
+
setPage(1);
|
|
63
|
+
const myReview = response.reviews.find((r) => r.reviewerUsername === (user === null || user === void 0 ? void 0 : user.username));
|
|
64
|
+
setReview(myReview !== null && myReview !== void 0 ? myReview : null);
|
|
65
|
+
form.reset({ rating: reviewCategory === "comment" ? 1 : ((myReview === null || myReview === void 0 ? void 0 : myReview.rating) || 0), comment: (myReview === null || myReview === void 0 ? void 0 : myReview.comment) || "" });
|
|
66
|
+
setIsFormInitialized(true);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
setReviews([]);
|
|
70
|
+
setIsFormInitialized(true);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
if (!initialReviews || initialReviews.length === 0) {
|
|
74
|
+
fetchData();
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
setIsFormInitialized(true); // Initialize immediately if already present
|
|
78
|
+
}
|
|
79
|
+
}, [targetId, targetType, user, loading]);
|
|
80
|
+
const handleLoadMore = async () => {
|
|
81
|
+
if (isLoadingMore || !hasMore)
|
|
82
|
+
return;
|
|
83
|
+
setIsLoadingMore(true);
|
|
84
|
+
try {
|
|
85
|
+
const nextPage = page + 1;
|
|
86
|
+
// Cast to any to bypass stale type definitions in @myrjfa/state/dist
|
|
87
|
+
const response = await getReviewsById(targetId, targetType, { page: nextPage, limit: 10 });
|
|
88
|
+
if (response === null || response === void 0 ? void 0 : response.error) {
|
|
89
|
+
console.error("Error: " + response.error);
|
|
90
|
+
}
|
|
91
|
+
else if (Array.isArray(response.reviews)) {
|
|
92
|
+
setReviews([...reviews, ...response.reviews]);
|
|
93
|
+
setPage(nextPage);
|
|
94
|
+
setHasMore(response.hasMore);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
setIsLoadingMore(false);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
useEffect(() => {
|
|
102
|
+
if (review) {
|
|
103
|
+
form.reset({
|
|
104
|
+
rating: reviewCategory === "comment" ? 1 : review.rating,
|
|
105
|
+
comment: review.comment || "",
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
setIsFormInitialized(true);
|
|
109
|
+
}, [review]);
|
|
110
|
+
useEffect(() => {
|
|
111
|
+
if (Array.isArray(reviews)) {
|
|
112
|
+
setDisplayReviews(reviews.filter((r) => r.comment));
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
setDisplayReviews([]);
|
|
116
|
+
}
|
|
117
|
+
}, [reviews]);
|
|
118
|
+
const onSubmit = async (data) => {
|
|
119
|
+
setIsSubmitting(true);
|
|
120
|
+
try {
|
|
121
|
+
let response;
|
|
122
|
+
const submitData = { ...data, images: images };
|
|
123
|
+
if (review) {
|
|
124
|
+
response = await editReview(review._id, submitData);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
response = await addReview(targetId, targetType, submitData);
|
|
128
|
+
}
|
|
129
|
+
if (response === null || response === void 0 ? void 0 : response.error) {
|
|
130
|
+
await showAlert(response.error, `Error reviewing ${targetType}`);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const newReview = response.review;
|
|
134
|
+
if (newReview) {
|
|
135
|
+
setReviews([newReview, ...reviews.filter((r) => r._id !== newReview._id)]);
|
|
136
|
+
setReview(newReview);
|
|
137
|
+
setTotalCount(prev => review ? prev : prev + 1);
|
|
138
|
+
form.reset({ rating: reviewCategory === "comment" ? 1 : newReview.rating, comment: newReview.comment || "" });
|
|
139
|
+
setImages([]);
|
|
140
|
+
setPreviewImages([]);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
console.error("Failed to submit review:", error);
|
|
146
|
+
form.setError("root", { message: "Failed to submit review. Please try again." });
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
setIsSubmitting(false);
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
const handleDeleteReview = async () => {
|
|
153
|
+
if (!review)
|
|
154
|
+
return;
|
|
155
|
+
let confirmed = true;
|
|
156
|
+
await showAlert("Are you sure you want to delete your review?", undefined, deleteActions(() => {
|
|
157
|
+
confirmed = false;
|
|
158
|
+
}));
|
|
159
|
+
if (!confirmed)
|
|
160
|
+
return;
|
|
161
|
+
setIsDeleting(true);
|
|
162
|
+
try {
|
|
163
|
+
const response = await deleteReview(review._id);
|
|
164
|
+
if (response === null || response === void 0 ? void 0 : response.error) {
|
|
165
|
+
await showAlert(response.error, "Error deleting review:");
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
setReviews(reviews.filter((r) => r._id !== review._id));
|
|
169
|
+
setReview(null);
|
|
170
|
+
setTotalCount(prev => Math.max(0, prev - 1));
|
|
171
|
+
form.reset({ rating: reviewCategory === "comment" ? 1 : 0, comment: "" });
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (err) {
|
|
175
|
+
console.error("Failed to delete review:", err);
|
|
176
|
+
await showAlert("Something went wrong while deleting. Please try again.");
|
|
177
|
+
}
|
|
178
|
+
finally {
|
|
179
|
+
setIsDeleting(false);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
const handleImageUpload = async (e) => {
|
|
183
|
+
const files = Array.from(e.target.files || []);
|
|
184
|
+
if (!files || files.length === 0)
|
|
185
|
+
return;
|
|
186
|
+
const MAX_IMAGE_SIZE_MB = 5;
|
|
187
|
+
const validFiles = [];
|
|
188
|
+
for (const file of files) {
|
|
189
|
+
if (file.size > MAX_IMAGE_SIZE_MB * 1024 * 1024) {
|
|
190
|
+
await showAlert(`${file.name} is too large. Max allowed size is ${MAX_IMAGE_SIZE_MB}MB.`);
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
validFiles.push(file);
|
|
194
|
+
}
|
|
195
|
+
const fileUrls = validFiles.map((file) => URL.createObjectURL(file));
|
|
196
|
+
setPreviewImages((prevImages) => [...prevImages, ...fileUrls]);
|
|
197
|
+
setImages((prev) => [...prev, ...validFiles]);
|
|
198
|
+
};
|
|
199
|
+
const handleRemoveImage = (index) => {
|
|
200
|
+
setImages((prev) => prev.filter((_, i) => i !== index));
|
|
201
|
+
setPreviewImages((prev) => prev.filter((_, i) => i !== index));
|
|
202
|
+
};
|
|
203
|
+
if (loading || !isFormInitialized)
|
|
204
|
+
return _jsx(Card, { className: "w-full h-50 flex items-center justify-center", children: "Loading Reviews..." });
|
|
205
|
+
if (hideWhenEmpty && !editable && displayReviews.length === 0)
|
|
206
|
+
return null;
|
|
207
|
+
const averageRating = reviews.length ? reviews.reduce((acc, r) => acc + r.rating, 0) / reviews.length : 0;
|
|
208
|
+
return (_jsxs(Card, { className: "w-full mb-10", children: [(title || subtitle) && _jsxs(CardHeader, { children: [title && _jsx(CardTitle, { children: title }), subtitle && _jsx(CardDescription, { children: subtitle })] }), _jsxs(CardContent, { children: [editable && _jsx(Form, { ...form, children: _jsxs("form", { onSubmit: form.handleSubmit(onSubmit), className: "space-y-6 pb-4", children: [_jsx(FormField, { control: form.control, name: "rating", render: ({ field }) => (_jsxs(FormItem, { className: reviewCategory === "comment" ? "hidden" : "", children: [_jsx(FormLabel, { children: "Your Rating" }), _jsx(FormControl, { children: _jsx(StarRating, { value: ratingValue, onChange: (val) => field.onChange(val), onHover: setHoveredRating, interactive: true }) }), _jsx(FormMessage, {})] })) }), _jsx(FormField, { control: form.control, name: "comment", render: ({ field }) => (_jsxs(FormItem, { children: [_jsxs(FormLabel, { children: ["Your ", reviewCategory == "review" ? "Review" : "Comment"] }), _jsx(FormControl, { children: _jsx(Textarea, { placeholder: `Share your ${reviewCategory == "review" ? "experience" : "thoughts"}...`, className: "resize-none", rows: 4, ...field }) }), _jsx(FormMessage, {})] })) }), reviewCategory === "review" && (_jsx("div", { className: "pt-2", children: _jsx(ImageUploader, { previews: previewImages, onUploadEvent: handleImageUpload, onRemove: handleRemoveImage, title: "Add Review Photos", message: "Add up to 5 photos to your review (Optional)", maxImages: 5 }) })), form.formState.errors.root && (_jsx("p", { className: "text-sm font-medium text-destructive", children: form.formState.errors.root.message })), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsx(Button, { type: "submit", disabled: isSubmitting, className: "w-full sm:w-auto", children: isSubmitting ? (reviewCategory == "review" ? "Submitting... Review" : "Posting... Comment") : (reviewCategory == "review" ? "Submit Review" : "Post Comment") }), review && _jsx(Button, { type: "button", variant: "destructive", className: "w-full sm:w-auto", disabled: isDeleting, onClick: handleDeleteReview, children: isDeleting ? "Deleting..." : reviewCategory == "review" ? "Delete Review" : "Delete Comment" })] })] }) }), displayReviews.length > 0 ? (_jsxs("div", { className: "mt-4", children: [_jsxs("div", { className: "flex justify-between items-center mb-4", children: [_jsxs("h3", { className: "text-lg font-medium", children: [reviewCategory == "review" ? "Reviews" : "Comments", " (", totalCount || displayReviews.length, ")"] }), reviewCategory == "review" && _jsxs("div", { className: "flex items-center", children: [_jsx("span", { className: "font-medium mr-2", children: averageRating.toFixed(1) }), _jsx(StarRating, { value: Math.round(averageRating), size: 5 })] })] }), _jsx(Separator, { className: "my-4" }), _jsx("div", { className: "space-y-6", children: displayReviews.map((review) => (_jsxs("div", { className: "pb-4", children: [_jsxs("div", { className: "flex items-start justify-between", children: [_jsxs("div", { className: "flex items-center", children: [_jsxs(Avatar, { className: "h-10 w-10 mr-3", children: [_jsx(AvatarImage, { src: review.reviewerPic || "/images/profile_placeholder.webp", alt: review.reviewerUsername }), _jsx(AvatarFallback, { children: review.reviewerUsername.charAt(0) })] }), _jsxs("div", { children: [_jsx("h4", { className: "font-medium", children: review.reviewerUsername }), _jsx("p", { className: "text-sm text-gray-500", children: formatDate(review.createdAt) })] })] }), reviewCategory == "review" && _jsx(StarRating, { value: review.rating, size: 4 })] }), _jsx("p", { className: "mt-2 text-gray-600 whitespace-pre-line", children: review.comment }), review.images && review.images.length > 0 && (_jsx("div", { className: "mt-3 flex flex-wrap gap-2", children: review.images.map((img, idx) => (_jsx("div", { className: "relative w-20 h-20 rounded-md overflow-hidden border border-slate-200", children: _jsx("img", { src: img, alt: `Review photo ${idx + 1}`, className: "object-cover w-full h-full" }) }, idx))) })), _jsx(Separator, { className: "mt-4" })] }, review._id))) }), hasMore && (_jsx("div", { className: "flex justify-center mt-6", children: _jsx(Button, { variant: "outline", onClick: handleLoadMore, disabled: isLoadingMore, className: "w-full sm:w-auto", children: isLoadingMore ? "Loading more..." : "View More" }) }))] })) : (_jsxs("div", { className: "text-center justify-center p-5", children: ["No ", reviewCategory == "comment" ? "comments" : "reviews", " yet"] }))] }), displayReviews.length > 0 && _jsx(CardFooter, { children: _jsx("p", { className: "text-sm text-gray-500", children: "Thank you for sharing your feedback. All reviews are moderated and typically appear within 24-48 hours." }) })] }));
|
|
209
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* #12 — iPhone PWA Navigation Bar
|
|
3
|
+
* Shows a fixed bottom bar only when running as a standalone PWA on iOS.
|
|
4
|
+
* iOS Safari in standalone mode has no browser chrome (no back/forward/reload buttons),
|
|
5
|
+
* so users have no way to navigate. This provides that functionality.
|
|
6
|
+
*/
|
|
7
|
+
export default function IosPwaNavBar(): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
//# sourceMappingURL=IosPwaNavBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IosPwaNavBar.d.ts","sourceRoot":"","sources":["../../src/misc/IosPwaNavBar.tsx"],"names":[],"mappings":"AAOA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,mDAiDnC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useState } from 'react';
|
|
4
|
+
import { ChevronLeft, ChevronRight, RefreshCw } from 'lucide-react';
|
|
5
|
+
import { Button } from './button';
|
|
6
|
+
import { useRouter } from 'next/navigation';
|
|
7
|
+
/**
|
|
8
|
+
* #12 — iPhone PWA Navigation Bar
|
|
9
|
+
* Shows a fixed bottom bar only when running as a standalone PWA on iOS.
|
|
10
|
+
* iOS Safari in standalone mode has no browser chrome (no back/forward/reload buttons),
|
|
11
|
+
* so users have no way to navigate. This provides that functionality.
|
|
12
|
+
*/
|
|
13
|
+
export default function IosPwaNavBar() {
|
|
14
|
+
const [isIosPwa, setIsIosPwa] = useState(false);
|
|
15
|
+
const router = useRouter();
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
const isStandalone = ('standalone' in window.navigator && window.navigator.standalone === true) ||
|
|
18
|
+
window.matchMedia('(display-mode: standalone)').matches;
|
|
19
|
+
const isIos = /iPhone|iPad|iPod/i.test(window.navigator.userAgent);
|
|
20
|
+
setIsIosPwa(isStandalone && isIos);
|
|
21
|
+
}, []);
|
|
22
|
+
if (!isIosPwa)
|
|
23
|
+
return null;
|
|
24
|
+
return (_jsxs("nav", { style: { paddingBottom: 'env(safe-area-inset-bottom)' }, className: "fixed bottom-0 left-0 right-0 z-50 bg-white/90 backdrop-blur border-t border-gray-200 flex items-center justify-around h-14", children: [_jsx(Button, { onClick: () => router.back(), "aria-label": "Go back", variant: "ghost", size: "icon", children: _jsx(ChevronLeft, { className: "h-6 w-6" }) }), _jsx(Button, { onClick: () => router.refresh(), "aria-label": "Reload page", variant: "ghost", size: "icon", children: _jsx(RefreshCw, { className: "h-5 w-5" }) }), _jsx(Button, { onClick: () => router.forward(), "aria-label": "Go forward", variant: "ghost", size: "icon", children: _jsx(ChevronRight, { className: "h-6 w-6" }) })] }));
|
|
25
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
2
|
+
declare function Accordion({ ...props }: React.ComponentProps<typeof AccordionPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
declare function AccordionItem({ className, ...props }: React.ComponentProps<typeof AccordionPrimitive.Item>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function AccordionTrigger({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function AccordionContent({ className, children, ...props }: React.ComponentProps<typeof AccordionPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
7
|
+
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../src/misc/accordion.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAA;AAK/D,iBAAS,SAAS,CAAC,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,2CAEtD;AAED,iBAAS,aAAa,CAAC,EACrB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,2CAQtD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,2CAgBzD;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,OAAO,CAAC,2CAUzD;AAED,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as AccordionPrimitive from "@radix-ui/react-accordion";
|
|
4
|
+
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
5
|
+
import { ChevronDownIcon } from "lucide-react";
|
|
6
|
+
function Accordion({ ...props }) {
|
|
7
|
+
return _jsx(AccordionPrimitive.Root, { "data-slot": "accordion", ...props });
|
|
8
|
+
}
|
|
9
|
+
function AccordionItem({ className, ...props }) {
|
|
10
|
+
return (_jsx(AccordionPrimitive.Item, { "data-slot": "accordion-item", className: cn("border-b last:border-b-0", className), ...props }));
|
|
11
|
+
}
|
|
12
|
+
function AccordionTrigger({ className, children, ...props }) {
|
|
13
|
+
return (_jsx(AccordionPrimitive.Header, { className: "flex", children: _jsxs(AccordionPrimitive.Trigger, { "data-slot": "accordion-trigger", className: cn("focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180", className), ...props, children: [children, _jsx(ChevronDownIcon, { className: "text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" })] }) }));
|
|
14
|
+
}
|
|
15
|
+
function AccordionContent({ className, children, ...props }) {
|
|
16
|
+
return (_jsx(AccordionPrimitive.Content, { "data-slot": "accordion-content", className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm", ...props, children: _jsx("div", { className: cn("pt-0 pb-4", className), children: children }) }));
|
|
17
|
+
}
|
|
18
|
+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
2
|
+
declare function AlertDialog({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
declare function AlertDialogTrigger({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function AlertDialogPortal({ ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Portal>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
declare function AlertDialogOverlay({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Overlay>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function AlertDialogContent({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Content>): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function AlertDialogHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
declare function AlertDialogFooter({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
declare function AlertDialogTitle({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Title>): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
declare function AlertDialogDescription({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Description>): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
declare function AlertDialogAction({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Action>): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
declare function AlertDialogCancel({ className, ...props }: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
|
|
14
|
+
//# sourceMappingURL=alert-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../src/misc/alert-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAA;AAIpE,iBAAS,WAAW,CAAC,EACnB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,IAAI,CAAC,2CAExD;AAED,iBAAS,kBAAkB,CAAC,EAC1B,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,2CAI3D;AAED,iBAAS,iBAAiB,CAAC,EACzB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,2CAI1D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,2CAW3D;AAED,iBAAS,kBAAkB,CAAC,EAC1B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,2CAc3D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQ7B;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAW7B;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,KAAK,CAAC,2CAQzD;AAED,iBAAS,sBAAsB,CAAC,EAC9B,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,WAAW,CAAC,2CAQ/D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,2CAO1D;AAED,iBAAS,iBAAiB,CAAC,EACzB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,oBAAoB,CAAC,MAAM,CAAC,2CAO1D;AAED,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GAClB,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
|
|
4
|
+
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
5
|
+
import { buttonVariants } from "./button";
|
|
6
|
+
function AlertDialog({ ...props }) {
|
|
7
|
+
return _jsx(AlertDialogPrimitive.Root, { "data-slot": "alert-dialog", ...props });
|
|
8
|
+
}
|
|
9
|
+
function AlertDialogTrigger({ ...props }) {
|
|
10
|
+
return (_jsx(AlertDialogPrimitive.Trigger, { "data-slot": "alert-dialog-trigger", ...props }));
|
|
11
|
+
}
|
|
12
|
+
function AlertDialogPortal({ ...props }) {
|
|
13
|
+
return (_jsx(AlertDialogPrimitive.Portal, { "data-slot": "alert-dialog-portal", ...props }));
|
|
14
|
+
}
|
|
15
|
+
function AlertDialogOverlay({ className, ...props }) {
|
|
16
|
+
return (_jsx(AlertDialogPrimitive.Overlay, { "data-slot": "alert-dialog-overlay", className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50", className), ...props }));
|
|
17
|
+
}
|
|
18
|
+
function AlertDialogContent({ className, ...props }) {
|
|
19
|
+
return (_jsxs(AlertDialogPortal, { children: [_jsx(AlertDialogOverlay, {}), _jsx(AlertDialogPrimitive.Content, { "data-slot": "alert-dialog-content", className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className), ...props })] }));
|
|
20
|
+
}
|
|
21
|
+
function AlertDialogHeader({ className, ...props }) {
|
|
22
|
+
return (_jsx("div", { "data-slot": "alert-dialog-header", className: cn("flex flex-col gap-2 text-center sm:text-left", className), ...props }));
|
|
23
|
+
}
|
|
24
|
+
function AlertDialogFooter({ className, ...props }) {
|
|
25
|
+
return (_jsx("div", { "data-slot": "alert-dialog-footer", className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className), ...props }));
|
|
26
|
+
}
|
|
27
|
+
function AlertDialogTitle({ className, ...props }) {
|
|
28
|
+
return (_jsx(AlertDialogPrimitive.Title, { "data-slot": "alert-dialog-title", className: cn("text-lg font-semibold", className), ...props }));
|
|
29
|
+
}
|
|
30
|
+
function AlertDialogDescription({ className, ...props }) {
|
|
31
|
+
return (_jsx(AlertDialogPrimitive.Description, { "data-slot": "alert-dialog-description", className: cn("text-muted-foreground text-sm", className), ...props }));
|
|
32
|
+
}
|
|
33
|
+
function AlertDialogAction({ className, ...props }) {
|
|
34
|
+
return (_jsx(AlertDialogPrimitive.Action, { className: cn(buttonVariants(), className), ...props }));
|
|
35
|
+
}
|
|
36
|
+
function AlertDialogCancel({ className, ...props }) {
|
|
37
|
+
return (_jsx(AlertDialogPrimitive.Cancel, { className: cn(buttonVariants({ variant: "outline" }), className), ...props }));
|
|
38
|
+
}
|
|
39
|
+
export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
declare const alertVariants: (props?: ({
|
|
3
|
+
variant?: "default" | "destructive" | null | undefined;
|
|
4
|
+
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
5
|
+
declare function Alert({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
declare function AlertTitle({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
declare function AlertDescription({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export { Alert, AlertTitle, AlertDescription };
|
|
9
|
+
//# sourceMappingURL=alert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert.d.ts","sourceRoot":"","sources":["../../src/misc/alert.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEjE,QAAA,MAAM,aAAa;;mFAclB,CAAA;AAED,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,aAAa,CAAC,2CASlE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAWvE;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAW7B;AAED,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAA"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
const alertVariants = cva("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", {
|
|
5
|
+
variants: {
|
|
6
|
+
variant: {
|
|
7
|
+
default: "bg-card text-card-foreground",
|
|
8
|
+
destructive: "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90",
|
|
9
|
+
},
|
|
10
|
+
},
|
|
11
|
+
defaultVariants: {
|
|
12
|
+
variant: "default",
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
function Alert({ className, variant, ...props }) {
|
|
16
|
+
return (_jsx("div", { role: "alert", className: cn(alertVariants({ variant }), className), ...props }, "alert"));
|
|
17
|
+
}
|
|
18
|
+
function AlertTitle({ className, ...props }) {
|
|
19
|
+
return (_jsx("div", { className: cn("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className), ...props }, "alert-title"));
|
|
20
|
+
}
|
|
21
|
+
function AlertDescription({ className, ...props }) {
|
|
22
|
+
return (_jsx("div", { className: cn("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed", className), ...props }, "alert-description"));
|
|
23
|
+
}
|
|
24
|
+
export { Alert, AlertTitle, AlertDescription };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ActionButton } from '../dashboard/action-buttons';
|
|
2
|
+
interface AlertDialogProps {
|
|
3
|
+
message: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
actions?: Array<ActionButton>;
|
|
6
|
+
isOpen: boolean;
|
|
7
|
+
onOpenChange: (open: boolean) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const deleteActions: (cancel: any) => ActionButton[];
|
|
10
|
+
export declare const confirmActions: (cancel: any) => ActionButton[];
|
|
11
|
+
export declare function showAlert(message: string, title?: string, actions?: Array<ActionButton>): Promise<void>;
|
|
12
|
+
export declare function AlertDialog({ message, title, actions, isOpen, onOpenChange, }: AlertDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function AlertDialogDemo(): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=alertdialogclaude.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alertdialogclaude.d.ts","sourceRoot":"","sources":["../../src/misc/alertdialogclaude.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,UAAU,gBAAgB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC9B,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACzC;AAED,eAAO,MAAM,aAAa,GAAI,QAAQ,GAAG,KAapC,YAAY,EAAE,CAAC;AAEpB,eAAO,MAAM,cAAc,GAAI,QAAQ,GAAG,KAarC,YAAY,EAAE,CAAC;AAEpB,wBAAgB,SAAS,CACrB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAiCf;AAED,wBAAgB,WAAW,CAAC,EACxB,OAAO,EACP,KAAK,EACL,OAAY,EACZ,MAAM,EACN,YAAY,GACf,EAAE,gBAAgB,2CA8DlB;AAyBD,wBAAgB,eAAe,4CA2I9B"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// AlertDialog.tsx
|
|
2
|
+
'use client';
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
+
import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
|
|
5
|
+
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
6
|
+
import { Forward, Save, X } from 'lucide-react';
|
|
7
|
+
import { useEffect, useState } from 'react';
|
|
8
|
+
import { createRoot } from 'react-dom/client';
|
|
9
|
+
import { FaDumpster, FaHandPointer } from 'react-icons/fa6';
|
|
10
|
+
import { Button } from './button';
|
|
11
|
+
export const deleteActions = (cancel) => [
|
|
12
|
+
{
|
|
13
|
+
label: "Cancel",
|
|
14
|
+
variant: "outline",
|
|
15
|
+
icon: _jsx(X, {}),
|
|
16
|
+
action: () => cancel()
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
label: "Delete",
|
|
20
|
+
variant: "destructive",
|
|
21
|
+
icon: _jsx(FaDumpster, {}),
|
|
22
|
+
action: () => console.log("deleting")
|
|
23
|
+
}
|
|
24
|
+
];
|
|
25
|
+
export const confirmActions = (cancel) => [
|
|
26
|
+
{
|
|
27
|
+
label: "Cancel",
|
|
28
|
+
variant: "outline",
|
|
29
|
+
icon: _jsx(X, {}),
|
|
30
|
+
action: () => cancel()
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
label: "Proceed",
|
|
34
|
+
variant: "default",
|
|
35
|
+
icon: _jsx(FaHandPointer, {}),
|
|
36
|
+
action: () => console.log("proceeding")
|
|
37
|
+
}
|
|
38
|
+
];
|
|
39
|
+
export function showAlert(message, title, actions) {
|
|
40
|
+
return new Promise((resolve) => {
|
|
41
|
+
const alertRoot = document.createElement('div');
|
|
42
|
+
alertRoot.id = 'alert-root';
|
|
43
|
+
document.body.appendChild(alertRoot);
|
|
44
|
+
const cleanup = () => {
|
|
45
|
+
document.body.removeChild(alertRoot);
|
|
46
|
+
resolve();
|
|
47
|
+
};
|
|
48
|
+
const AlertComponent = () => {
|
|
49
|
+
const [open, setOpen] = useState(true);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (!open) {
|
|
52
|
+
setTimeout(cleanup, 300); // Allow time for close animation
|
|
53
|
+
}
|
|
54
|
+
}, [open]);
|
|
55
|
+
return (_jsx(AlertDialog, { message: message, title: title, actions: actions, isOpen: open, onOpenChange: setOpen }));
|
|
56
|
+
};
|
|
57
|
+
const root = createRoot(alertRoot);
|
|
58
|
+
root.render(_jsx(AlertComponent, {}));
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
export function AlertDialog({ message, title, actions = [], isOpen, onOpenChange, }) {
|
|
62
|
+
return (_jsx(AlertDialogPrimitive.Root, { open: isOpen, onOpenChange: onOpenChange, children: _jsxs(AlertDialogPrimitive.Portal, { children: [_jsx(AlertDialogPrimitive.Overlay, { className: "fixed inset-0 z-50 bg-black/50 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0" }), _jsxs(AlertDialogPrimitive.Content, { className: "fixed left-1/2 top-1/2 z-50 max-h-[85vh] w-full max-w-md -translate-x-1/2 -translate-y-1/2 rounded-lg border border-neutral-200 bg-white p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-top-[2%] data-[state=open]:slide-in-from-top-[2%] dark:border-neutral-800 dark:bg-neutral-950 sm:rounded-lg md:w-full", children: [_jsxs("div", { className: "flex flex-col space-y-2", children: [title ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx(AlertDialogPrimitive.Title, { className: "text-lg font-semibold text-neutral-900 dark:text-neutral-50 flex-grow text-center", children: title }), _jsx(Button, { variant: "ghost", onClick: () => onOpenChange(false), children: _jsx(X, {}) })] })) : (_jsx(AlertDialogPrimitive.Title, { className: "sr-only", children: "Alert" })), _jsx(AlertDialogPrimitive.Description, { className: "text-sm text-neutral-700 dark:text-neutral-300 text-center", children: message })] }), _jsx("div", { className: cn("mt-6 flex flex-col-reverse gap-2 sm:flex-row", actions.length > 0 ? "sm:justify-end" : "justify-center"), children: actions.length > 0 ? (actions.map((action, index) => (_jsx(AlertDialogButton, { variant: action.variant || 'default', onClick: () => {
|
|
63
|
+
action.action();
|
|
64
|
+
onOpenChange(false);
|
|
65
|
+
}, children: action.label }, index)))) : (_jsx(AlertDialogButton, { onClick: () => onOpenChange(false), children: "OK" })) })] })] }) }));
|
|
66
|
+
}
|
|
67
|
+
function AlertDialogButton({ variant = 'default', children, className, ...props }) {
|
|
68
|
+
return (_jsx(Button, { className: className, variant: variant, ...props, children: children }));
|
|
69
|
+
}
|
|
70
|
+
// Example usage component
|
|
71
|
+
export function AlertDialogDemo() {
|
|
72
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
73
|
+
const [alertConfig, setAlertConfig] = useState({
|
|
74
|
+
message: "This is a sample alert message",
|
|
75
|
+
title: "Alert",
|
|
76
|
+
actions: []
|
|
77
|
+
});
|
|
78
|
+
const showSimpleAlert = () => {
|
|
79
|
+
setAlertConfig({
|
|
80
|
+
message: "This is a simple alert with only an OK button",
|
|
81
|
+
title: "",
|
|
82
|
+
actions: []
|
|
83
|
+
});
|
|
84
|
+
setIsOpen(true);
|
|
85
|
+
};
|
|
86
|
+
const showFullAlert = () => {
|
|
87
|
+
setAlertConfig({
|
|
88
|
+
message: "Would you like to proceed with this action?",
|
|
89
|
+
title: "Confirmation Required",
|
|
90
|
+
actions: [
|
|
91
|
+
{
|
|
92
|
+
label: "Cancel",
|
|
93
|
+
variant: "outline",
|
|
94
|
+
icon: _jsx(X, {}),
|
|
95
|
+
action: () => console.log("Action cancelled")
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
label: "Proceed",
|
|
99
|
+
variant: "default",
|
|
100
|
+
icon: _jsx(Forward, {}),
|
|
101
|
+
action: () => console.log("Action confirmed")
|
|
102
|
+
}
|
|
103
|
+
]
|
|
104
|
+
});
|
|
105
|
+
setIsOpen(true);
|
|
106
|
+
};
|
|
107
|
+
const showDestructiveAlert = () => {
|
|
108
|
+
setAlertConfig({
|
|
109
|
+
message: "This action cannot be undone. Are you sure you want to delete this item?",
|
|
110
|
+
title: "Warning",
|
|
111
|
+
actions: [
|
|
112
|
+
{
|
|
113
|
+
label: "Cancel",
|
|
114
|
+
variant: "outline",
|
|
115
|
+
icon: _jsx(X, {}),
|
|
116
|
+
action: () => console.log("Delete cancelled")
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
label: "Delete",
|
|
120
|
+
variant: "destructive",
|
|
121
|
+
icon: _jsx(FaDumpster, {}),
|
|
122
|
+
action: () => console.log("Delete confirmed")
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
});
|
|
126
|
+
setIsOpen(true);
|
|
127
|
+
};
|
|
128
|
+
// Programmatic usage example
|
|
129
|
+
const handleProgrammaticAlert = async () => {
|
|
130
|
+
await showAlert("This is a programmatically shown alert");
|
|
131
|
+
console.log("Alert was closed");
|
|
132
|
+
};
|
|
133
|
+
const handleProgrammaticAlertWithActions = async () => {
|
|
134
|
+
await showAlert("Do you want to save your changes?", "Save Changes", [
|
|
135
|
+
{
|
|
136
|
+
label: "Cancel",
|
|
137
|
+
variant: "outline",
|
|
138
|
+
icon: _jsx(X, {}),
|
|
139
|
+
action: () => console.log("Save cancelled")
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
label: "Save",
|
|
143
|
+
variant: "default",
|
|
144
|
+
icon: _jsx(Save, {}),
|
|
145
|
+
action: () => console.log("Save confirmed")
|
|
146
|
+
}
|
|
147
|
+
]);
|
|
148
|
+
console.log("Action completed");
|
|
149
|
+
};
|
|
150
|
+
return (_jsxs("div", { className: "flex flex-col space-y-4 p-6", children: [_jsx("h2", { className: "text-2xl font-bold", children: "Alert Dialog Examples" }), _jsxs("div", { className: "flex flex-wrap gap-4", children: [_jsx(Button, { onClick: showSimpleAlert, children: "Simple Alert" }), _jsx(Button, { onClick: showFullAlert, children: "Confirmation Alert" }), _jsx(Button, { variant: "destructive", onClick: showDestructiveAlert, children: "Destructive Alert" }), _jsx(Button, { onClick: handleProgrammaticAlert, children: "Programmatic Alert" }), _jsx(Button, { onClick: handleProgrammaticAlertWithActions, children: "Programmatic Alert with Actions" })] }), _jsx(AlertDialog, { message: alertConfig.message, title: alertConfig.title, actions: alertConfig.actions, isOpen: isOpen, onOpenChange: setIsOpen })] }));
|
|
151
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
2
|
+
declare function Avatar({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
declare function AvatarImage({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Image>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
declare function AvatarFallback({ className, ...props }: React.ComponentProps<typeof AvatarPrimitive.Fallback>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export { Avatar, AvatarImage, AvatarFallback };
|
|
6
|
+
//# sourceMappingURL=avatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/misc/avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AAGzD,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,2CAWnD;AAED,iBAAS,WAAW,CAAC,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,KAAK,CAAC,2CAQpD;AAED,iBAAS,cAAc,CAAC,EACtB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,eAAe,CAAC,QAAQ,CAAC,2CAWvD;AAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
4
|
+
import { cn } from "@myrjfa/state/dist/lib/utils";
|
|
5
|
+
function Avatar({ className, ...props }) {
|
|
6
|
+
return (_jsx(AvatarPrimitive.Root, { "data-slot": "avatar", className: cn("relative flex size-8 shrink-0 overflow-hidden rounded-full", className), ...props }));
|
|
7
|
+
}
|
|
8
|
+
function AvatarImage({ className, ...props }) {
|
|
9
|
+
return (_jsx(AvatarPrimitive.Image, { "data-slot": "avatar-image", className: cn("aspect-square size-full", className), ...props }));
|
|
10
|
+
}
|
|
11
|
+
function AvatarFallback({ className, ...props }) {
|
|
12
|
+
return (_jsx(AvatarPrimitive.Fallback, { "data-slot": "avatar-fallback", className: cn("bg-muted flex size-full items-center justify-center rounded-full", className), ...props }));
|
|
13
|
+
}
|
|
14
|
+
export { Avatar, AvatarImage, AvatarFallback };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type VariantProps } from "class-variance-authority";
|
|
2
|
+
declare const badgeVariants: (props?: ({
|
|
3
|
+
variant?: "default" | "destructive" | "outline" | "secondary" | null | undefined;
|
|
4
|
+
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
5
|
+
declare function Badge({ className, variant, asChild, ...props }: React.ComponentProps<"span"> & VariantProps<typeof badgeVariants> & {
|
|
6
|
+
asChild?: boolean;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export { Badge, badgeVariants };
|
|
9
|
+
//# sourceMappingURL=badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../src/misc/badge.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGjE,QAAA,MAAM,aAAa;;mFAmBlB,CAAA;AAED,iBAAS,KAAK,CAAC,EACb,SAAS,EACT,OAAO,EACP,OAAe,EACf,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,GAC7B,YAAY,CAAC,OAAO,aAAa,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,2CAU3D;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAA"}
|