@123usmanhaider321/ui 0.1.6 → 1.0.0
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/README.md +416 -31
- package/dist/images/icon/1LINK.svg +50 -0
- package/dist/images/icon/CreditCard.svg +83 -0
- package/dist/images/icon/Easypaisa.png +0 -0
- package/dist/images/icon/MobileWallet.png +0 -0
- package/dist/images/icon/Raast-Logo.png +0 -0
- package/dist/images/icon/VISA.png +0 -0
- package/dist/images/icon/add-circle-1.svg +5 -0
- package/dist/images/icon/check-circle-broken.svg +3 -0
- package/dist/images/icon/close-circle.svg +5 -0
- package/dist/images/icon/jazzcash.png +0 -0
- package/dist/images/icon/loading_icon.json +3347 -0
- package/dist/images/icon/mastercard-logo.webp +0 -0
- package/dist/images/icon/paymo.jpeg +0 -0
- package/dist/images/icon/preview-svgrepo-com.svg +36 -0
- package/dist/images/icon/trash.svg +7 -0
- package/dist/images/icon/unionpay-logo.svg +9 -0
- package/dist/index-87FQZHOs.js +11119 -0
- package/dist/index-87FQZHOs.js.map +1 -0
- package/dist/index-Tl9g213f.js +60475 -0
- package/dist/index-Tl9g213f.js.map +1 -0
- package/dist/index.d.ts +1 -10
- package/dist/index.es-CpgTaa1Y.js +16734 -0
- package/dist/index.es-CpgTaa1Y.js.map +1 -0
- package/dist/index.js +40 -12
- package/dist/index.js.map +1 -1
- package/dist/loading_icon-n5H5dQBl.js +3375 -0
- package/dist/loading_icon-n5H5dQBl.js.map +1 -0
- package/dist/src/components/Alert/ErrorAlert.d.ts +6 -0
- package/dist/src/components/Alert/SuccessAlert.d.ts +6 -0
- package/dist/{components → src/components}/FormBuilder/DiscountInput.d.ts +3 -6
- package/dist/{components → src/components}/FormBuilder/FormBuilder.d.ts +2 -11
- package/dist/{components → src/components}/FormBuilder/QuestionCard.d.ts +0 -5
- package/dist/{components → src/components}/FormBuilder/QuestionEditor.d.ts +0 -5
- package/dist/{components → src/components}/FormBuilder/SortableQuestionList.d.ts +0 -5
- package/dist/src/components/FormBuilder/questionIcons.d.ts +5 -0
- package/dist/{components/EventAddForm → src/components/NewAddEvent}/AddEventLayout.d.ts +2 -1
- package/dist/{components/EventAddForm → src/components/NewAddEvent}/AddEventStepper.d.ts +2 -2
- package/dist/{components/EventAddForm → src/components/NewAddEvent}/common/ConfirmationModal.d.ts +1 -1
- package/dist/src/components/NewAddEvent/components/EventSubmissionConfirmationModal.d.ts +14 -0
- package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/StepTwo/TicketTierSection.d.ts +1 -1
- package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/TicketTierForm.d.ts +1 -1
- package/dist/{components/EventAddForm → src/components/NewAddEvent}/hooks/useStepperForm.d.ts +22 -22
- package/dist/{components/EventAddForm → src/components/NewAddEvent}/hooks/useTicketTierForm.d.ts +63 -15
- package/dist/src/components/NewAddEvent/schemas/step1.d.ts +211 -0
- package/dist/src/components/NewAddEvent/schemas/step2.d.ts +411 -0
- package/dist/{components/EventAddForm → src/components/NewAddEvent}/schemas/utils.d.ts +8 -2
- package/dist/{components/EventAddForm → src/components/NewAddEvent}/steps/IndividualFormStep.d.ts +1 -1
- package/dist/{components/EventAddForm → src/components/NewAddEvent}/steps/SocialProfilesStep.d.ts +1 -1
- package/dist/{components/EventAddForm → src/components/NewAddEvent}/steps/TeamFormStep.d.ts +1 -1
- package/dist/src/components/Spinner/spinner.d.ts +4 -0
- package/dist/src/components/TicketlyUIProvider.d.ts +35 -0
- package/dist/src/components/common/Loader/index.d.ts +8 -0
- package/dist/src/components/common/Modals/ConfirmationModal.d.ts +7 -0
- package/dist/{components/FormInput → src/components/ui}/FormInput.d.ts +1 -1
- package/dist/src/components/ui/Loader.d.ts +4 -0
- package/dist/{components/Button/Button.d.ts → src/components/ui/button.d.ts} +1 -1
- package/dist/src/index.d.ts +10 -0
- package/dist/{lib → src/lib}/actions.d.ts +0 -126
- package/dist/src/lib/dom-utils.d.ts +2 -0
- package/dist/src/lib/storage-utils.d.ts +5 -0
- package/dist/src/lib/types.d.ts +258 -0
- package/dist/src/redux/baseQuery.d.ts +16 -0
- package/dist/{services → src/redux/features}/eventApi.d.ts +1053 -1745
- package/dist/src/redux/features/globalSlice.d.ts +17 -0
- package/dist/{services → src/redux/features/single-event}/single-event-api.d.ts +856 -1190
- package/dist/src/redux/types.d.ts +2 -0
- package/dist/src/services/library-services.d.ts +15 -0
- package/dist/src/services/remote-config.d.ts +27 -0
- package/dist/{services → src/services}/utils.d.ts +1 -1
- package/dist/src/theme/colors.d.ts +127 -0
- package/dist/src/theme/typography.d.ts +13 -0
- package/dist/src/types/api.d.ts +18 -0
- package/dist/style.css +2984 -0
- package/dist/styles.css +3758 -3636
- package/package.json +78 -68
- package/dist/_virtual/_commonjsHelpers.js +0 -9
- package/dist/_virtual/_commonjsHelpers.js.map +0 -1
- package/dist/_virtual/customParseFormat.js +0 -5
- package/dist/_virtual/customParseFormat.js.map +0 -1
- package/dist/_virtual/dayjs.min.js +0 -5
- package/dist/_virtual/dayjs.min.js.map +0 -1
- package/dist/_virtual/duration.js +0 -5
- package/dist/_virtual/duration.js.map +0 -1
- package/dist/_virtual/index.js +0 -5
- package/dist/_virtual/index.js.map +0 -1
- package/dist/_virtual/isBetween.js +0 -5
- package/dist/_virtual/isBetween.js.map +0 -1
- package/dist/_virtual/relativeTime.js +0 -5
- package/dist/_virtual/relativeTime.js.map +0 -1
- package/dist/_virtual/use-sync-external-store-shim.development.js +0 -5
- package/dist/_virtual/use-sync-external-store-shim.development.js.map +0 -1
- package/dist/_virtual/use-sync-external-store-shim.production.js +0 -5
- package/dist/_virtual/use-sync-external-store-shim.production.js.map +0 -1
- package/dist/_virtual/with-selector.development.js +0 -5
- package/dist/_virtual/with-selector.development.js.map +0 -1
- package/dist/_virtual/with-selector.js +0 -5
- package/dist/_virtual/with-selector.js.map +0 -1
- package/dist/_virtual/with-selector.production.js +0 -5
- package/dist/_virtual/with-selector.production.js.map +0 -1
- package/dist/components/Alert/Alert.js +0 -51
- package/dist/components/Alert/Alert.js.map +0 -1
- package/dist/components/Button/Button.js +0 -52
- package/dist/components/Button/Button.js.map +0 -1
- package/dist/components/Button/Button.test.d.ts +0 -1
- package/dist/components/Button/index.d.ts +0 -1
- package/dist/components/Checkbox/Checkbox.js +0 -50
- package/dist/components/Checkbox/Checkbox.js.map +0 -1
- package/dist/components/Checkbox/Checkbox.test.d.ts +0 -1
- package/dist/components/Checkbox/index.d.ts +0 -1
- package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +0 -25
- package/dist/components/CheckboxGroup/CheckboxGroup.js +0 -99
- package/dist/components/CheckboxGroup/CheckboxGroup.js.map +0 -1
- package/dist/components/ConfirmationModal/ConfirmationModal.d.ts +0 -15
- package/dist/components/ConfirmationModal/ConfirmationModal.js +0 -136
- package/dist/components/ConfirmationModal/ConfirmationModal.js.map +0 -1
- package/dist/components/ConfirmationModal/index.d.ts +0 -2
- package/dist/components/CustomSelect/CustomSelect.js +0 -259
- package/dist/components/CustomSelect/CustomSelect.js.map +0 -1
- package/dist/components/EventAddForm/AddEventLayout.js +0 -227
- package/dist/components/EventAddForm/AddEventLayout.js.map +0 -1
- package/dist/components/EventAddForm/AddEventStepper.js +0 -719
- package/dist/components/EventAddForm/AddEventStepper.js.map +0 -1
- package/dist/components/EventAddForm/common/ConfirmationModal.js +0 -136
- package/dist/components/EventAddForm/common/ConfirmationModal.js.map +0 -1
- package/dist/components/EventAddForm/common/DescriptionModal.js +0 -70
- package/dist/components/EventAddForm/common/DescriptionModal.js.map +0 -1
- package/dist/components/EventAddForm/components/AnimatedBackground.d.ts +0 -8
- package/dist/components/EventAddForm/components/ApprovalConfirmationModal.d.ts +0 -7
- package/dist/components/EventAddForm/components/CheckboxGroup.js +0 -92
- package/dist/components/EventAddForm/components/CheckboxGroup.js.map +0 -1
- package/dist/components/EventAddForm/components/CustomMeetingForm.js +0 -237
- package/dist/components/EventAddForm/components/CustomMeetingForm.js.map +0 -1
- package/dist/components/EventAddForm/components/DateTimeField.js +0 -173
- package/dist/components/EventAddForm/components/DateTimeField.js.map +0 -1
- package/dist/components/EventAddForm/components/EventSubmissionConfirmationModal.d.ts +0 -33
- package/dist/components/EventAddForm/components/EventSubmissionConfirmationModal.js +0 -366
- package/dist/components/EventAddForm/components/EventSubmissionConfirmationModal.js.map +0 -1
- package/dist/components/EventAddForm/components/FileUpload.js +0 -412
- package/dist/components/EventAddForm/components/FileUpload.js.map +0 -1
- package/dist/components/EventAddForm/components/FormBuilderProceedModal.js +0 -197
- package/dist/components/EventAddForm/components/FormBuilderProceedModal.js.map +0 -1
- package/dist/components/EventAddForm/components/GoogleMapsAutocompleteInput.js +0 -1179
- package/dist/components/EventAddForm/components/GoogleMapsAutocompleteInput.js.map +0 -1
- package/dist/components/EventAddForm/components/InputField.d.ts +0 -15
- package/dist/components/EventAddForm/components/RadioGroupButton.d.ts +0 -14
- package/dist/components/EventAddForm/components/SelectField.d.ts +0 -19
- package/dist/components/EventAddForm/components/SingleDateTimeInput.js +0 -102
- package/dist/components/EventAddForm/components/SingleDateTimeInput.js.map +0 -1
- package/dist/components/EventAddForm/components/StepTwo/CustomFormSection.js +0 -277
- package/dist/components/EventAddForm/components/StepTwo/CustomFormSection.js.map +0 -1
- package/dist/components/EventAddForm/components/StepTwo/TicketTierSection.js +0 -148
- package/dist/components/EventAddForm/components/StepTwo/TicketTierSection.js.map +0 -1
- package/dist/components/EventAddForm/components/TicketTierForm.js +0 -418
- package/dist/components/EventAddForm/components/TicketTierForm.js.map +0 -1
- package/dist/components/EventAddForm/components/TicketTypeSelection.js +0 -93
- package/dist/components/EventAddForm/components/TicketTypeSelection.js.map +0 -1
- package/dist/components/EventAddForm/hooks/useStepperForm.js +0 -371
- package/dist/components/EventAddForm/hooks/useStepperForm.js.map +0 -1
- package/dist/components/EventAddForm/hooks/useTicketTierForm.js +0 -237
- package/dist/components/EventAddForm/hooks/useTicketTierForm.js.map +0 -1
- package/dist/components/EventAddForm/index.d.ts +0 -3
- package/dist/components/EventAddForm/index.js +0 -41
- package/dist/components/EventAddForm/index.js.map +0 -1
- package/dist/components/EventAddForm/schemas/index.d.ts +0 -2
- package/dist/components/EventAddForm/schemas/step1.d.ts +0 -47
- package/dist/components/EventAddForm/schemas/step1.js +0 -135
- package/dist/components/EventAddForm/schemas/step1.js.map +0 -1
- package/dist/components/EventAddForm/schemas/step2.d.ts +0 -138
- package/dist/components/EventAddForm/schemas/step2.js +0 -94
- package/dist/components/EventAddForm/schemas/step2.js.map +0 -1
- package/dist/components/EventAddForm/schemas/utils.js +0 -28
- package/dist/components/EventAddForm/schemas/utils.js.map +0 -1
- package/dist/components/EventAddForm/steps/IndividualFormStep.js +0 -85
- package/dist/components/EventAddForm/steps/IndividualFormStep.js.map +0 -1
- package/dist/components/EventAddForm/steps/SocialProfilesStep.js +0 -123
- package/dist/components/EventAddForm/steps/SocialProfilesStep.js.map +0 -1
- package/dist/components/EventAddForm/steps/StepOne.js +0 -462
- package/dist/components/EventAddForm/steps/StepOne.js.map +0 -1
- package/dist/components/EventAddForm/steps/StepTwo.js +0 -173
- package/dist/components/EventAddForm/steps/StepTwo.js.map +0 -1
- package/dist/components/EventAddForm/steps/TeamFormStep.js +0 -13
- package/dist/components/EventAddForm/steps/TeamFormStep.js.map +0 -1
- package/dist/components/FormBuilder/CategoryList.js +0 -242
- package/dist/components/FormBuilder/CategoryList.js.map +0 -1
- package/dist/components/FormBuilder/DiscountInput.js +0 -366
- package/dist/components/FormBuilder/DiscountInput.js.map +0 -1
- package/dist/components/FormBuilder/FormBuilder.js +0 -918
- package/dist/components/FormBuilder/FormBuilder.js.map +0 -1
- package/dist/components/FormBuilder/OptionList.js +0 -120
- package/dist/components/FormBuilder/OptionList.js.map +0 -1
- package/dist/components/FormBuilder/PaymentPreview.d.ts +0 -12
- package/dist/components/FormBuilder/PaymentPreview.js +0 -70
- package/dist/components/FormBuilder/PaymentPreview.js.map +0 -1
- package/dist/components/FormBuilder/PreviewInput.d.ts +0 -10
- package/dist/components/FormBuilder/PreviewInput.js +0 -143
- package/dist/components/FormBuilder/PreviewInput.js.map +0 -1
- package/dist/components/FormBuilder/QuestionCard.js +0 -252
- package/dist/components/FormBuilder/QuestionCard.js.map +0 -1
- package/dist/components/FormBuilder/QuestionEditor.js +0 -166
- package/dist/components/FormBuilder/QuestionEditor.js.map +0 -1
- package/dist/components/FormBuilder/RequiredToggle.js +0 -43
- package/dist/components/FormBuilder/RequiredToggle.js.map +0 -1
- package/dist/components/FormBuilder/SortableQuestionList.js +0 -137
- package/dist/components/FormBuilder/SortableQuestionList.js.map +0 -1
- package/dist/components/FormBuilder/index.d.ts +0 -4
- package/dist/components/FormBuilder/utils.js +0 -229
- package/dist/components/FormBuilder/utils.js.map +0 -1
- package/dist/components/FormInput/FormInput.js +0 -126
- package/dist/components/FormInput/FormInput.js.map +0 -1
- package/dist/components/FormInput/FormInput.test.d.ts +0 -1
- package/dist/components/FormInput/index.d.ts +0 -2
- package/dist/components/ImageCropModal/index.js +0 -464
- package/dist/components/ImageCropModal/index.js.map +0 -1
- package/dist/components/InformationPopover/InformationPopover.d.ts +0 -7
- package/dist/components/InformationPopover/InformationPopover.js +0 -19
- package/dist/components/InformationPopover/InformationPopover.js.map +0 -1
- package/dist/components/InformationPopover.js +0 -19
- package/dist/components/InformationPopover.js.map +0 -1
- package/dist/components/InputErrorMessage/InputErrorMessage.js +0 -21
- package/dist/components/InputErrorMessage/InputErrorMessage.js.map +0 -1
- package/dist/components/Modal/Modal.d.ts +0 -15
- package/dist/components/Modal/Modal.js +0 -73
- package/dist/components/Modal/Modal.js.map +0 -1
- package/dist/components/Radio/Radio.js +0 -35
- package/dist/components/Radio/Radio.js.map +0 -1
- package/dist/components/Spinner/spinner.d.ts +0 -2
- package/dist/components/Spinner/spinner.js +0 -22
- package/dist/components/Spinner/spinner.js.map +0 -1
- package/dist/components/Toggle/Toggle.d.ts +0 -16
- package/dist/components/Toggle/index.d.ts +0 -2
- package/dist/components/Tooltip/Tooltip.d.ts +0 -12
- package/dist/components/Tooltip/Tooltip.js +0 -134
- package/dist/components/Tooltip/Tooltip.js.map +0 -1
- package/dist/components/common/FallbackImage.js +0 -47
- package/dist/components/common/FallbackImage.js.map +0 -1
- package/dist/components/ui/Calendar/calendar-utils.js +0 -51
- package/dist/components/ui/Calendar/calendar-utils.js.map +0 -1
- package/dist/components/ui/Calendar/index.js +0 -142
- package/dist/components/ui/Calendar/index.js.map +0 -1
- package/dist/components/ui/Checkbox.d.ts +0 -9
- package/dist/components/ui/Checkbox.js +0 -50
- package/dist/components/ui/Checkbox.js.map +0 -1
- package/dist/components/ui/DatePicker/index.js +0 -188
- package/dist/components/ui/DatePicker/index.js.map +0 -1
- package/dist/components/ui/FormInput.js +0 -129
- package/dist/components/ui/FormInput.js.map +0 -1
- package/dist/components/ui/InputErrorMessage.d.ts +0 -7
- package/dist/components/ui/InputErrorMessage.js +0 -21
- package/dist/components/ui/InputErrorMessage.js.map +0 -1
- package/dist/components/ui/Modal/index.js +0 -73
- package/dist/components/ui/Modal/index.js.map +0 -1
- package/dist/components/ui/Radio.d.ts +0 -6
- package/dist/components/ui/Radio.js +0 -35
- package/dist/components/ui/Radio.js.map +0 -1
- package/dist/components/ui/RichTextEditor.js +0 -242
- package/dist/components/ui/RichTextEditor.js.map +0 -1
- package/dist/components/ui/TimePicker/index.js +0 -215
- package/dist/components/ui/TimePicker/index.js.map +0 -1
- package/dist/components/ui/TimeSelector/index.js +0 -138
- package/dist/components/ui/TimeSelector/index.js.map +0 -1
- package/dist/components/ui/Tooltip.d.ts +0 -12
- package/dist/components/ui/Tooltip.js +0 -136
- package/dist/components/ui/Tooltip.js.map +0 -1
- package/dist/hooks/useDropdownPosition.d.ts +0 -11
- package/dist/hooks/useFirebaseAuthState.d.ts +0 -6
- package/dist/hooks/useFirebaseAuthState.js +0 -23
- package/dist/hooks/useFirebaseAuthState.js.map +0 -1
- package/dist/hooks/useTicketTierForm.d.ts +0 -61
- package/dist/lib/actions.js +0 -32
- package/dist/lib/actions.js.map +0 -1
- package/dist/lib/cropImage.js +0 -113
- package/dist/lib/cropImage.js.map +0 -1
- package/dist/lib/imageAnalysis.js +0 -58
- package/dist/lib/imageAnalysis.js.map +0 -1
- package/dist/lib/utils.js +0 -9
- package/dist/lib/utils.js.map +0 -1
- package/dist/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js +0 -60
- package/dist/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js.map +0 -1
- package/dist/node_modules/@dnd-kit/core/dist/core.esm.js +0 -3458
- package/dist/node_modules/@dnd-kit/core/dist/core.esm.js.map +0 -1
- package/dist/node_modules/@dnd-kit/sortable/dist/sortable.esm.js +0 -593
- package/dist/node_modules/@dnd-kit/sortable/dist/sortable.esm.js.map +0 -1
- package/dist/node_modules/@dnd-kit/utilities/dist/utilities.esm.js +0 -302
- package/dist/node_modules/@dnd-kit/utilities/dist/utilities.esm.js.map +0 -1
- package/dist/node_modules/@firebase/app/dist/esm/index.esm.js +0 -768
- package/dist/node_modules/@firebase/app/dist/esm/index.esm.js.map +0 -1
- package/dist/node_modules/@firebase/component/dist/esm/index.esm.js +0 -340
- package/dist/node_modules/@firebase/component/dist/esm/index.esm.js.map +0 -1
- package/dist/node_modules/@firebase/logger/dist/esm/index.esm.js +0 -123
- package/dist/node_modules/@firebase/logger/dist/esm/index.esm.js.map +0 -1
- package/dist/node_modules/@firebase/storage/dist/index.esm.js +0 -2623
- package/dist/node_modules/@firebase/storage/dist/index.esm.js.map +0 -1
- package/dist/node_modules/@firebase/util/dist/index.esm.js +0 -658
- package/dist/node_modules/@firebase/util/dist/index.esm.js.map +0 -1
- package/dist/node_modules/@firebase/util/dist/postinstall.js +0 -5
- package/dist/node_modules/@firebase/util/dist/postinstall.js.map +0 -1
- package/dist/node_modules/@fortawesome/fontawesome-svg-core/index.js +0 -3179
- package/dist/node_modules/@fortawesome/fontawesome-svg-core/index.js.map +0 -1
- package/dist/node_modules/@fortawesome/free-solid-svg-icons/index.js +0 -60
- package/dist/node_modules/@fortawesome/free-solid-svg-icons/index.js.map +0 -1
- package/dist/node_modules/@fortawesome/react-fontawesome/dist/index.js +0 -400
- package/dist/node_modules/@fortawesome/react-fontawesome/dist/index.js.map +0 -1
- package/dist/node_modules/@heroicons/react/20/solid/esm/CheckIcon.js +0 -27
- package/dist/node_modules/@heroicons/react/20/solid/esm/CheckIcon.js.map +0 -1
- package/dist/node_modules/@heroicons/react/20/solid/esm/ChevronDownIcon.js +0 -27
- package/dist/node_modules/@heroicons/react/20/solid/esm/ChevronDownIcon.js.map +0 -1
- package/dist/node_modules/@heroicons/react/24/outline/esm/ArrowRightIcon.js +0 -29
- package/dist/node_modules/@heroicons/react/24/outline/esm/ArrowRightIcon.js.map +0 -1
- package/dist/node_modules/@heroicons/react/24/outline/esm/ClockIcon.js +0 -29
- package/dist/node_modules/@heroicons/react/24/outline/esm/ClockIcon.js.map +0 -1
- package/dist/node_modules/@heroicons/react/24/outline/esm/DocumentDuplicateIcon.js +0 -29
- package/dist/node_modules/@heroicons/react/24/outline/esm/DocumentDuplicateIcon.js.map +0 -1
- package/dist/node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js +0 -29
- package/dist/node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js.map +0 -1
- package/dist/node_modules/@heroicons/react/24/outline/esm/LinkIcon.js +0 -29
- package/dist/node_modules/@heroicons/react/24/outline/esm/LinkIcon.js.map +0 -1
- package/dist/node_modules/@heroicons/react/24/outline/esm/MagnifyingGlassIcon.js +0 -29
- package/dist/node_modules/@heroicons/react/24/outline/esm/MagnifyingGlassIcon.js.map +0 -1
- package/dist/node_modules/@heroicons/react/24/outline/esm/MapPinIcon.js +0 -33
- package/dist/node_modules/@heroicons/react/24/outline/esm/MapPinIcon.js.map +0 -1
- package/dist/node_modules/@heroicons/react/24/outline/esm/VideoCameraIcon.js +0 -29
- package/dist/node_modules/@heroicons/react/24/outline/esm/VideoCameraIcon.js.map +0 -1
- package/dist/node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js +0 -29
- package/dist/node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js.map +0 -1
- package/dist/node_modules/@tiptap/core/dist/index.js +0 -5446
- package/dist/node_modules/@tiptap/core/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js +0 -21
- package/dist/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-blockquote/dist/index.js +0 -78
- package/dist/node_modules/@tiptap/extension-blockquote/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-bold/dist/index.js +0 -100
- package/dist/node_modules/@tiptap/extension-bold/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-code/dist/index.js +0 -70
- package/dist/node_modules/@tiptap/extension-code/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-code-block/dist/index.js +0 -317
- package/dist/node_modules/@tiptap/extension-code-block/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-document/dist/index.js +0 -16
- package/dist/node_modules/@tiptap/extension-document/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-hard-break/dist/index.js +0 -66
- package/dist/node_modules/@tiptap/extension-hard-break/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-heading/dist/index.js +0 -86
- package/dist/node_modules/@tiptap/extension-heading/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-horizontal-rule/dist/index.js +0 -80
- package/dist/node_modules/@tiptap/extension-horizontal-rule/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-italic/dist/index.js +0 -98
- package/dist/node_modules/@tiptap/extension-italic/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-link/dist/index.js +0 -423
- package/dist/node_modules/@tiptap/extension-link/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-list/dist/index.js +0 -1039
- package/dist/node_modules/@tiptap/extension-list/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-paragraph/dist/index.js +0 -61
- package/dist/node_modules/@tiptap/extension-paragraph/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-placeholder/dist/index.js +0 -7
- package/dist/node_modules/@tiptap/extension-placeholder/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-strike/dist/index.js +0 -79
- package/dist/node_modules/@tiptap/extension-strike/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-text/dist/index.js +0 -16
- package/dist/node_modules/@tiptap/extension-text/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extension-underline/dist/index.js +0 -76
- package/dist/node_modules/@tiptap/extension-underline/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/extensions/dist/index.js +0 -376
- package/dist/node_modules/@tiptap/extensions/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/react/dist/index.js +0 -650
- package/dist/node_modules/@tiptap/react/dist/index.js.map +0 -1
- package/dist/node_modules/@tiptap/starter-kit/dist/index.js +0 -97
- package/dist/node_modules/@tiptap/starter-kit/dist/index.js.map +0 -1
- package/dist/node_modules/dayjs/dayjs.min.js +0 -283
- package/dist/node_modules/dayjs/dayjs.min.js.map +0 -1
- package/dist/node_modules/dayjs/plugin/customParseFormat.js +0 -130
- package/dist/node_modules/dayjs/plugin/customParseFormat.js.map +0 -1
- package/dist/node_modules/dayjs/plugin/duration.js +0 -137
- package/dist/node_modules/dayjs/plugin/duration.js.map +0 -1
- package/dist/node_modules/dayjs/plugin/isBetween.js +0 -20
- package/dist/node_modules/dayjs/plugin/isBetween.js.map +0 -1
- package/dist/node_modules/dayjs/plugin/relativeTime.js +0 -49
- package/dist/node_modules/dayjs/plugin/relativeTime.js.map +0 -1
- package/dist/node_modules/fast-equals/dist/es/index.js +0 -442
- package/dist/node_modules/fast-equals/dist/es/index.js.map +0 -1
- package/dist/node_modules/idb/build/index.js +0 -70
- package/dist/node_modules/idb/build/index.js.map +0 -1
- package/dist/node_modules/idb/build/wrap-idb-value.js +0 -149
- package/dist/node_modules/idb/build/wrap-idb-value.js.map +0 -1
- package/dist/node_modules/linkifyjs/dist/linkify.js +0 -1159
- package/dist/node_modules/linkifyjs/dist/linkify.js.map +0 -1
- package/dist/node_modules/orderedmap/dist/index.js +0 -120
- package/dist/node_modules/orderedmap/dist/index.js.map +0 -1
- package/dist/node_modules/prosemirror-commands/dist/index.js +0 -527
- package/dist/node_modules/prosemirror-commands/dist/index.js.map +0 -1
- package/dist/node_modules/prosemirror-dropcursor/dist/index.js +0 -137
- package/dist/node_modules/prosemirror-dropcursor/dist/index.js.map +0 -1
- package/dist/node_modules/prosemirror-gapcursor/dist/index.js +0 -221
- package/dist/node_modules/prosemirror-gapcursor/dist/index.js.map +0 -1
- package/dist/node_modules/prosemirror-history/dist/index.js +0 -357
- package/dist/node_modules/prosemirror-history/dist/index.js.map +0 -1
- package/dist/node_modules/prosemirror-keymap/dist/index.js +0 -84
- package/dist/node_modules/prosemirror-keymap/dist/index.js.map +0 -1
- package/dist/node_modules/prosemirror-model/dist/index.js +0 -3209
- package/dist/node_modules/prosemirror-model/dist/index.js.map +0 -1
- package/dist/node_modules/prosemirror-schema-list/dist/index.js +0 -131
- package/dist/node_modules/prosemirror-schema-list/dist/index.js.map +0 -1
- package/dist/node_modules/prosemirror-state/dist/index.js +0 -936
- package/dist/node_modules/prosemirror-state/dist/index.js.map +0 -1
- package/dist/node_modules/prosemirror-transform/dist/index.js +0 -1881
- package/dist/node_modules/prosemirror-transform/dist/index.js.map +0 -1
- package/dist/node_modules/prosemirror-view/dist/index.js +0 -5232
- package/dist/node_modules/prosemirror-view/dist/index.js.map +0 -1
- package/dist/node_modules/rope-sequence/dist/index.js +0 -184
- package/dist/node_modules/rope-sequence/dist/index.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +0 -82
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +0 -78
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -78
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +0 -63
- package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/shim/index.js +0 -13
- package/dist/node_modules/use-sync-external-store/shim/index.js.map +0 -1
- package/dist/node_modules/use-sync-external-store/shim/with-selector.js +0 -13
- package/dist/node_modules/use-sync-external-store/shim/with-selector.js.map +0 -1
- package/dist/node_modules/w3c-keyname/index.js +0 -106
- package/dist/node_modules/w3c-keyname/index.js.map +0 -1
- package/dist/node_modules/zod/v4/classic/coerce.js +0 -10
- package/dist/node_modules/zod/v4/classic/coerce.js.map +0 -1
- package/dist/node_modules/zod/v4/classic/compat.js +0 -8
- package/dist/node_modules/zod/v4/classic/compat.js.map +0 -1
- package/dist/node_modules/zod/v4/classic/errors.js +0 -45
- package/dist/node_modules/zod/v4/classic/errors.js.map +0 -1
- package/dist/node_modules/zod/v4/classic/iso.js +0 -44
- package/dist/node_modules/zod/v4/classic/iso.js.map +0 -1
- package/dist/node_modules/zod/v4/classic/parse.js +0 -30
- package/dist/node_modules/zod/v4/classic/parse.js.map +0 -1
- package/dist/node_modules/zod/v4/classic/schemas.js +0 -711
- package/dist/node_modules/zod/v4/classic/schemas.js.map +0 -1
- package/dist/node_modules/zod/v4/core/api.js +0 -588
- package/dist/node_modules/zod/v4/core/api.js.map +0 -1
- package/dist/node_modules/zod/v4/core/checks.js +0 -411
- package/dist/node_modules/zod/v4/core/checks.js.map +0 -1
- package/dist/node_modules/zod/v4/core/core.js +0 -75
- package/dist/node_modules/zod/v4/core/core.js.map +0 -1
- package/dist/node_modules/zod/v4/core/doc.js +0 -38
- package/dist/node_modules/zod/v4/core/doc.js.map +0 -1
- package/dist/node_modules/zod/v4/core/errors.js +0 -73
- package/dist/node_modules/zod/v4/core/errors.js.map +0 -1
- package/dist/node_modules/zod/v4/core/json-schema-processors.js +0 -359
- package/dist/node_modules/zod/v4/core/json-schema-processors.js.map +0 -1
- package/dist/node_modules/zod/v4/core/parse.js +0 -96
- package/dist/node_modules/zod/v4/core/parse.js.map +0 -1
- package/dist/node_modules/zod/v4/core/regexes.js +0 -84
- package/dist/node_modules/zod/v4/core/regexes.js.map +0 -1
- package/dist/node_modules/zod/v4/core/registries.js +0 -52
- package/dist/node_modules/zod/v4/core/registries.js.map +0 -1
- package/dist/node_modules/zod/v4/core/schemas.js +0 -1391
- package/dist/node_modules/zod/v4/core/schemas.js.map +0 -1
- package/dist/node_modules/zod/v4/core/to-json-schema.js +0 -363
- package/dist/node_modules/zod/v4/core/to-json-schema.js.map +0 -1
- package/dist/node_modules/zod/v4/core/util.js +0 -431
- package/dist/node_modules/zod/v4/core/util.js.map +0 -1
- package/dist/node_modules/zod/v4/core/versions.js +0 -9
- package/dist/node_modules/zod/v4/core/versions.js.map +0 -1
- package/dist/redux/baseQuery.d.ts +0 -1
- package/dist/redux/baseQuery.js +0 -24
- package/dist/redux/baseQuery.js.map +0 -1
- package/dist/services/eventApi.js +0 -411
- package/dist/services/eventApi.js.map +0 -1
- package/dist/services/helpers.js +0 -115
- package/dist/services/helpers.js.map +0 -1
- package/dist/services/initialize-firebase.d.ts +0 -2
- package/dist/services/initialize-firebase.js +0 -20
- package/dist/services/initialize-firebase.js.map +0 -1
- package/dist/services/process-image-on-server.js +0 -30
- package/dist/services/process-image-on-server.js.map +0 -1
- package/dist/services/remote-config.d.ts +0 -5
- package/dist/services/remote-config.js +0 -9
- package/dist/services/remote-config.js.map +0 -1
- package/dist/services/single-event-api.js +0 -301
- package/dist/services/single-event-api.js.map +0 -1
- package/dist/services/utils.js +0 -107
- package/dist/services/utils.js.map +0 -1
- package/dist/setupTests.d.ts +0 -1
- package/dist/stories/Alert.stories.d.ts +0 -10
- package/dist/stories/Button.stories.d.ts +0 -13
- package/dist/types/redux-types.d.ts +0 -15
- package/dist/types/types.d.ts +0 -60
- package/dist/types/types.js +0 -10
- package/dist/types/types.js.map +0 -1
- package/dist/utils/cn.d.ts +0 -6
- package/dist/utils/cn.js +0 -9
- package/dist/utils/cn.js.map +0 -1
- package/dist/utils/date-range.d.ts +0 -4
- package/dist/utils/date-range.js +0 -13
- package/dist/utils/date-range.js.map +0 -1
- package/dist/utils/single-event-helpers.d.ts +0 -50
- package/dist/utils/single-event-helpers.js +0 -18
- package/dist/utils/single-event-helpers.js.map +0 -1
- package/dist/utils/social-validation.js +0 -42
- package/dist/utils/social-validation.js.map +0 -1
- package/dist/utils/utils.js +0 -20
- package/dist/utils/utils.js.map +0 -1
- /package/dist/{components/Alert/Alert.d.ts → src/components/Alert/index.d.ts} +0 -0
- /package/dist/{components → src/components}/FormBuilder/CategoryList.d.ts +0 -0
- /package/dist/{components → src/components}/FormBuilder/OptionList.d.ts +0 -0
- /package/dist/{components → src/components}/FormBuilder/RequiredToggle.d.ts +0 -0
- /package/dist/{components → src/components}/FormBuilder/types.d.ts +0 -0
- /package/dist/{components → src/components}/FormBuilder/utils.d.ts +0 -0
- /package/dist/{components → src/components}/ImageCropModal/index.d.ts +0 -0
- /package/dist/{components → src/components}/InformationPopover.d.ts +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/common/DescriptionModal.d.ts +0 -0
- /package/dist/{components/ui/FormInput.d.ts → src/components/NewAddEvent/components/AddEventFormInput.d.ts} +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/CheckboxGroup.d.ts +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/CustomMeetingForm.d.ts +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/DateTimeField.d.ts +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/FileUpload.d.ts +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/FormBuilderProceedModal.d.ts +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/GoogleMapsAutocompleteInput.d.ts +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/SingleDateTimeInput.d.ts +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/StepTwo/CustomFormSection.d.ts +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/TicketTypeSelection.d.ts +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/steps/StepOne.d.ts +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/steps/StepTwo.d.ts +0 -0
- /package/dist/{components/EventAddForm → src/components/NewAddEvent}/types.d.ts +0 -0
- /package/dist/{components → src/components}/common/FallbackImage.d.ts +0 -0
- /package/dist/{components → src/components}/ui/Calendar/calendar-utils.d.ts +0 -0
- /package/dist/{components → src/components}/ui/Calendar/index.d.ts +0 -0
- /package/dist/{components/Checkbox → src/components/ui}/Checkbox.d.ts +0 -0
- /package/dist/{components/CustomSelect → src/components/ui}/CustomSelect.d.ts +0 -0
- /package/dist/{components → src/components}/ui/DatePicker/index.d.ts +0 -0
- /package/dist/{components/InputErrorMessage → src/components/ui}/InputErrorMessage.d.ts +0 -0
- /package/dist/{components → src/components}/ui/Modal/index.d.ts +0 -0
- /package/dist/{components/Radio → src/components/ui}/Radio.d.ts +0 -0
- /package/dist/{components → src/components}/ui/RichTextEditor.d.ts +0 -0
- /package/dist/{components → src/components}/ui/TimePicker/index.d.ts +0 -0
- /package/dist/{components → src/components}/ui/TimeSelector/index.d.ts +0 -0
- /package/dist/{components → src/components}/ui/Tooltip/index.d.ts +0 -0
- /package/dist/{lib → src/lib}/constants.d.ts +0 -0
- /package/dist/{lib → src/lib}/cropImage.d.ts +0 -0
- /package/dist/{lib → src/lib}/imageAnalysis.d.ts +0 -0
- /package/dist/{utils → src/lib}/social-validation.d.ts +0 -0
- /package/dist/{lib/utils.d.ts → src/lib/tailwind-merge.d.ts} +0 -0
- /package/dist/{utils → src/lib}/utils.d.ts +0 -0
- /package/dist/{services → src/redux/features/single-event}/helpers.d.ts +0 -0
- /package/dist/{services → src/services}/process-image-on-server.d.ts +0 -0
- /package/dist/{types → src/types}/events.d.ts +0 -0
- /package/dist/{types → src/types}/question.d.ts +0 -0
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import InformationPopover from "../InformationPopover/InformationPopover.js";
|
|
3
|
-
import { Checkbox } from "../Checkbox/Checkbox.js";
|
|
4
|
-
import InputErrorMessage from "../InputErrorMessage/InputErrorMessage.js";
|
|
5
|
-
import { Radio } from "../Radio/Radio.js";
|
|
6
|
-
import { cn } from "../../utils/cn.js";
|
|
7
|
-
const CheckboxGroup = ({
|
|
8
|
-
label,
|
|
9
|
-
options,
|
|
10
|
-
formData,
|
|
11
|
-
setFormData,
|
|
12
|
-
field,
|
|
13
|
-
classname,
|
|
14
|
-
formErrors,
|
|
15
|
-
validation,
|
|
16
|
-
tooltip,
|
|
17
|
-
inputType = "checkbox",
|
|
18
|
-
filled = true
|
|
19
|
-
}) => {
|
|
20
|
-
const handleChanges = (value) => {
|
|
21
|
-
const currentValues = formData[field] || [];
|
|
22
|
-
let newValues;
|
|
23
|
-
if (inputType === "radio") {
|
|
24
|
-
newValues = [value];
|
|
25
|
-
} else {
|
|
26
|
-
if (currentValues.includes(value)) {
|
|
27
|
-
newValues = currentValues.filter((item) => item !== value);
|
|
28
|
-
} else {
|
|
29
|
-
newValues = [...currentValues, value];
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
setFormData((prev) => ({
|
|
33
|
-
...prev,
|
|
34
|
-
[field]: newValues
|
|
35
|
-
}));
|
|
36
|
-
if (validation) {
|
|
37
|
-
validation();
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
return /* @__PURE__ */ jsxs("div", { className: "ui-transition-all ui-duration-300 ui-ease-in-out", children: [
|
|
41
|
-
/* @__PURE__ */ jsx("div", { className: "ui-flex ui-justify-between ui-items-center ui-mb-3", children: /* @__PURE__ */ jsxs("div", { className: "ui-w-full ui-flex ui-items-center ui-gap-x-2", children: [
|
|
42
|
-
/* @__PURE__ */ jsxs("label", { className: "ui-block ui-text-sm ui-text-gray-700 ui-font-medium ui-whitespace-nowrap", children: [
|
|
43
|
-
label,
|
|
44
|
-
" ",
|
|
45
|
-
/* @__PURE__ */ jsx("span", { className: "ui-text-red-500", children: "*" })
|
|
46
|
-
] }),
|
|
47
|
-
tooltip && /* @__PURE__ */ jsx(InformationPopover, { text: tooltip })
|
|
48
|
-
] }) }),
|
|
49
|
-
/* @__PURE__ */ jsx("div", { className: cn(
|
|
50
|
-
"ui-grid ui-grid-cols-1 ui-gap-3",
|
|
51
|
-
classname
|
|
52
|
-
), children: options.map((option, index) => {
|
|
53
|
-
var _a, _b;
|
|
54
|
-
return /* @__PURE__ */ jsx(
|
|
55
|
-
"div",
|
|
56
|
-
{
|
|
57
|
-
title: (option == null ? void 0 : option.title) || void 0,
|
|
58
|
-
className: option.disabled ? "ui-cursor-not-allowed ui-opacity-60" : "ui-group",
|
|
59
|
-
children: /* @__PURE__ */ jsxs("label", { className: "ui-relative ui-flex ui-items-center ui-cursor-pointer ui-select-none ui-pr-5 ui-space-x-2", children: [
|
|
60
|
-
inputType === "radio" ? /* @__PURE__ */ jsx(
|
|
61
|
-
Radio,
|
|
62
|
-
{
|
|
63
|
-
name: field,
|
|
64
|
-
value: option.value,
|
|
65
|
-
checked: (_a = formData[field]) == null ? void 0 : _a.includes(option.value),
|
|
66
|
-
onChange: () => handleChanges(option.value),
|
|
67
|
-
disabled: option.disabled,
|
|
68
|
-
className: "ui-mr-3"
|
|
69
|
-
}
|
|
70
|
-
) : /* @__PURE__ */ jsx(
|
|
71
|
-
Checkbox,
|
|
72
|
-
{
|
|
73
|
-
checked: (_b = formData[field]) == null ? void 0 : _b.includes(option.value),
|
|
74
|
-
onCheckedChange: () => handleChanges(option.value),
|
|
75
|
-
disabled: option.disabled,
|
|
76
|
-
className: "ui-mr-3",
|
|
77
|
-
filled
|
|
78
|
-
}
|
|
79
|
-
),
|
|
80
|
-
/* @__PURE__ */ jsxs("div", { className: "ui-relative ui-flex ui-gap-2", children: [
|
|
81
|
-
/* @__PURE__ */ jsx("span", { className: cn(
|
|
82
|
-
"ui-text-sm ui-transition-colors ui-duration-200",
|
|
83
|
-
option.disabled ? "ui-text-gray-400" : "ui-text-gray-700 hover:ui-text-gray-900"
|
|
84
|
-
), children: (option == null ? void 0 : option.label) || option.value }),
|
|
85
|
-
option.description && /* @__PURE__ */ jsx(InformationPopover, { text: option.description, className: option.disabled ? "ui-text-gray-400" : "ui-text-gray-900" }),
|
|
86
|
-
option.tooltip && /* @__PURE__ */ jsx(InformationPopover, { text: option.tooltip, className: option.disabled ? "ui-text-gray-400" : "ui-text-gray-900" })
|
|
87
|
-
] })
|
|
88
|
-
] })
|
|
89
|
-
},
|
|
90
|
-
index
|
|
91
|
-
);
|
|
92
|
-
}) }),
|
|
93
|
-
/* @__PURE__ */ jsx(InputErrorMessage, { error: (formErrors == null ? void 0 : formErrors[field]) || "", className: "ui-mt-2" })
|
|
94
|
-
] });
|
|
95
|
-
};
|
|
96
|
-
export {
|
|
97
|
-
CheckboxGroup
|
|
98
|
-
};
|
|
99
|
-
//# sourceMappingURL=CheckboxGroup.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CheckboxGroup.js","sources":["../../../src/components/CheckboxGroup/CheckboxGroup.tsx"],"sourcesContent":["import React from 'react';\r\nimport InformationPopover from \"../InformationPopover/InformationPopover\";\r\nimport { Checkbox } from \"../Checkbox/Checkbox\";\r\nimport InputErrorMessage from \"../InputErrorMessage/InputErrorMessage\";\r\nimport { Radio } from \"../Radio/Radio\";\r\nimport { cn } from \"../../utils/cn\";\r\n\r\ninterface CheckboxGroupProps {\r\n label: string;\r\n options: { value: string, label?: string; disabled: boolean, title?: string, description?: string; tooltip?: string; }[];\r\n formData: any;\r\n setFormData: any;\r\n field: string;\r\n classname?: string;\r\n description?: string;\r\n formErrors?: any;\r\n validation?: any;\r\n tooltip?: string;\r\n inputType?: 'checkbox' | 'radio';\r\n filled?: boolean;\r\n}\r\n\r\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\r\n label,\r\n options,\r\n formData,\r\n setFormData,\r\n field,\r\n classname,\r\n formErrors,\r\n validation,\r\n tooltip,\r\n inputType = 'checkbox',\r\n filled = true,\r\n}) => {\r\n\r\n const handleChanges = (value: string) => {\r\n const currentValues = formData[field] || [];\r\n let newValues: any;\r\n\r\n if (inputType === 'radio') {\r\n newValues = [value];\r\n } else {\r\n if (currentValues.includes(value)) {\r\n newValues = currentValues.filter((item: string) => item !== value);\r\n } else {\r\n newValues = [...currentValues, value];\r\n }\r\n }\r\n\r\n setFormData((prev: any) => ({\r\n ...prev,\r\n [field]: newValues\r\n }));\r\n\r\n if (validation) {\r\n validation();\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"ui-transition-all ui-duration-300 ui-ease-in-out\">\r\n <div className=\"ui-flex ui-justify-between ui-items-center ui-mb-3\">\r\n <div className=\"ui-w-full ui-flex ui-items-center ui-gap-x-2\">\r\n <label className=\"ui-block ui-text-sm ui-text-gray-700 ui-font-medium ui-whitespace-nowrap\">\r\n {label} <span className=\"ui-text-red-500\">*</span>\r\n </label>\r\n {tooltip && <InformationPopover text={tooltip} />}\r\n </div>\r\n </div>\r\n\r\n <div className={cn(\r\n \"ui-grid ui-grid-cols-1 ui-gap-3\",\r\n classname\r\n )}>\r\n {options.map((option, index) => (\r\n <div\r\n key={index}\r\n title={option?.title || undefined}\r\n className={option.disabled ? \"ui-cursor-not-allowed ui-opacity-60\" : \"ui-group\"}\r\n >\r\n <label className=\"ui-relative ui-flex ui-items-center ui-cursor-pointer ui-select-none ui-pr-5 ui-space-x-2\">\r\n {inputType === 'radio' ? (\r\n <Radio\r\n name={field}\r\n value={option.value}\r\n checked={formData[field]?.includes(option.value)}\r\n onChange={() => handleChanges(option.value)}\r\n disabled={option.disabled}\r\n className=\"ui-mr-3\"\r\n />\r\n ) : (\r\n <Checkbox\r\n checked={formData[field]?.includes(option.value)}\r\n onCheckedChange={() => handleChanges(option.value)}\r\n disabled={option.disabled}\r\n className=\"ui-mr-3\"\r\n filled={filled}\r\n />\r\n )}\r\n <div className=\"ui-relative ui-flex ui-gap-2\">\r\n <span className={cn(\r\n \"ui-text-sm ui-transition-colors ui-duration-200\",\r\n option.disabled ? \"ui-text-gray-400\" : \"ui-text-gray-700 hover:ui-text-gray-900\"\r\n )}>\r\n {option?.label || option.value}\r\n </span>\r\n {option.description && <InformationPopover text={option.description} className={option.disabled ? \"ui-text-gray-400\" : \"ui-text-gray-900\"} />}\r\n {option.tooltip && <InformationPopover text={option.tooltip} className={option.disabled ? \"ui-text-gray-400\" : \"ui-text-gray-900\"} />}\r\n </div>\r\n </label>\r\n </div>\r\n ))}\r\n </div>\r\n <InputErrorMessage error={formErrors?.[field] || \"\"} className=\"ui-mt-2\" />\r\n </div>\r\n );\r\n};\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ReactNode } from 'react';
|
|
2
|
-
|
|
3
|
-
export interface ConfirmationModalProps {
|
|
4
|
-
open: boolean;
|
|
5
|
-
title: string;
|
|
6
|
-
description?: string;
|
|
7
|
-
onClose: () => void;
|
|
8
|
-
onConfirm: () => Promise<void> | void;
|
|
9
|
-
confirmText?: string;
|
|
10
|
-
cancelText?: string;
|
|
11
|
-
children?: ReactNode;
|
|
12
|
-
isLoading?: boolean;
|
|
13
|
-
confirmationKeyword?: string;
|
|
14
|
-
}
|
|
15
|
-
export default function ConfirmationModal({ open, title, description, onClose, onConfirm, confirmText, cancelText, children, isLoading, confirmationKeyword }: ConfirmationModalProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Transition, Dialog } from "@headlessui/react";
|
|
3
|
-
import { AlertTriangle, X } from "lucide-react";
|
|
4
|
-
import { useState, Fragment } from "react";
|
|
5
|
-
import { FaCircleNotch } from "react-icons/fa";
|
|
6
|
-
import Modal from "../Modal/Modal.js";
|
|
7
|
-
import { Button } from "../Button/Button.js";
|
|
8
|
-
function ConfirmationModal({
|
|
9
|
-
open,
|
|
10
|
-
title,
|
|
11
|
-
description,
|
|
12
|
-
onClose,
|
|
13
|
-
onConfirm,
|
|
14
|
-
confirmText = "Confirm",
|
|
15
|
-
cancelText = "Cancel",
|
|
16
|
-
children,
|
|
17
|
-
isLoading,
|
|
18
|
-
confirmationKeyword
|
|
19
|
-
}) {
|
|
20
|
-
const [internalLoading, setInternalLoading] = useState(false);
|
|
21
|
-
const [confirmInput, setConfirmInput] = useState("");
|
|
22
|
-
const loading = isLoading ?? internalLoading;
|
|
23
|
-
const handleSubmit = async (e) => {
|
|
24
|
-
e.preventDefault();
|
|
25
|
-
e.stopPropagation();
|
|
26
|
-
if (!loading) {
|
|
27
|
-
if (confirmationKeyword && confirmInput !== confirmationKeyword) {
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
try {
|
|
31
|
-
setInternalLoading(true);
|
|
32
|
-
await onConfirm();
|
|
33
|
-
} finally {
|
|
34
|
-
setInternalLoading(false);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
const handleClose = () => {
|
|
39
|
-
if (!loading) {
|
|
40
|
-
onClose();
|
|
41
|
-
setConfirmInput("");
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
const isSubmitDisabled = loading || (confirmationKeyword ? confirmInput !== confirmationKeyword : false);
|
|
45
|
-
return /* @__PURE__ */ jsx(
|
|
46
|
-
Modal,
|
|
47
|
-
{
|
|
48
|
-
open,
|
|
49
|
-
handleClose,
|
|
50
|
-
closeOnEscape: false,
|
|
51
|
-
closeOnOutsideClick: false,
|
|
52
|
-
children: /* @__PURE__ */ jsx("div", { className: "ui-fixed ui-inset-0 ui-z-10 ui-overflow-y-auto", children: /* @__PURE__ */ jsx("div", { className: "ui-flex ui-min-h-full ui-items-center ui-justify-center ui-p-4 ui-text-center sm:ui-p-0", children: /* @__PURE__ */ jsx(
|
|
53
|
-
Transition.Child,
|
|
54
|
-
{
|
|
55
|
-
as: Fragment,
|
|
56
|
-
enter: "ui-ease-out ui-duration-300",
|
|
57
|
-
enterFrom: "ui-opacity-0 ui-translate-y-4 sm:ui-translate-y-0 sm:ui-scale-95",
|
|
58
|
-
enterTo: "ui-opacity-100 ui-translate-y-0 sm:ui-scale-100",
|
|
59
|
-
leave: "ui-ease-in ui-duration-200",
|
|
60
|
-
leaveFrom: "ui-opacity-100 ui-translate-y-0 sm:ui-scale-100",
|
|
61
|
-
leaveTo: "ui-opacity-0 ui-translate-y-4 sm:ui-translate-y-0 sm:ui-scale-95",
|
|
62
|
-
children: /* @__PURE__ */ jsxs(Dialog.Panel, { className: "ui-flex ui-flex-col ui-gap-6 ui-relative ui-transform ui-overflow-hidden ui-rounded-xl ui-bg-white ui-text-left ui-shadow-xl ui-transition-all ui-mx-auto ui-px-4 sm:ui-px-6 ui-py-4 sm:ui-py-6 ui-w-full ui-max-w-lg", children: [
|
|
63
|
-
/* @__PURE__ */ jsx("div", { className: "ui-shrink-0", children: /* @__PURE__ */ jsx("div", { className: "ui-text-start", children: /* @__PURE__ */ jsxs("div", { className: "ui-flex ui-justify-between ui-items-start", children: [
|
|
64
|
-
/* @__PURE__ */ jsxs("div", { className: "ui-flex ui-items-center ui-gap-3", children: [
|
|
65
|
-
/* @__PURE__ */ jsx("div", { className: "ui-shrink-0 ui-flex ui-items-center ui-justify-center ui-h-10 ui-w-10 ui-rounded-full ui-bg-red-100", children: /* @__PURE__ */ jsx(AlertTriangle, { className: "ui-h-5 ui-w-5 ui-text-red-600", "aria-hidden": "true" }) }),
|
|
66
|
-
/* @__PURE__ */ jsx(Dialog.Title, { as: "h3", className: "ui-text-lg ui-font-semibold ui-leading-6 ui-text-gray-900 ui-pt-2", id: "modal-title", children: title })
|
|
67
|
-
] }),
|
|
68
|
-
/* @__PURE__ */ jsxs(
|
|
69
|
-
"button",
|
|
70
|
-
{
|
|
71
|
-
type: "button",
|
|
72
|
-
className: "ui-text-gray-400 hover:ui-text-gray-500 ui-transition-colors ui-bg-transparent ui-rounded-md ui-p-1 hover:ui-bg-gray-100",
|
|
73
|
-
onClick: handleClose,
|
|
74
|
-
"aria-label": "Close modal",
|
|
75
|
-
children: [
|
|
76
|
-
/* @__PURE__ */ jsx("span", { className: "ui-sr-only", children: "Close" }),
|
|
77
|
-
/* @__PURE__ */ jsx(X, { height: 20, width: 20 })
|
|
78
|
-
]
|
|
79
|
-
}
|
|
80
|
-
)
|
|
81
|
-
] }) }) }),
|
|
82
|
-
/* @__PURE__ */ jsxs("div", { className: "ui-text-sm ui-text-gray-600", children: [
|
|
83
|
-
description && /* @__PURE__ */ jsx("p", { children: description }),
|
|
84
|
-
children && /* @__PURE__ */ jsx("div", { className: "ui-mt-4", children }),
|
|
85
|
-
confirmationKeyword && /* @__PURE__ */ jsxs("div", { className: "ui-mt-4", children: [
|
|
86
|
-
/* @__PURE__ */ jsxs("label", { className: "ui-block ui-text-sm ui-font-medium ui-text-gray-700 ui-mb-2", children: [
|
|
87
|
-
"Type ",
|
|
88
|
-
/* @__PURE__ */ jsx("span", { className: "ui-font-bold ui-select-all", children: confirmationKeyword }),
|
|
89
|
-
" to confirm"
|
|
90
|
-
] }),
|
|
91
|
-
/* @__PURE__ */ jsx(
|
|
92
|
-
"input",
|
|
93
|
-
{
|
|
94
|
-
type: "text",
|
|
95
|
-
className: "ui-w-full ui-rounded-lg ui-border-gray-300 ui-shadow-sm focus:ui-border-red-500 focus:ui-ring-red-500 sm:ui-text-sm ui-px-3 ui-py-2 ui-border",
|
|
96
|
-
placeholder: `Type "${confirmationKeyword}"`,
|
|
97
|
-
value: confirmInput,
|
|
98
|
-
onChange: (e) => setConfirmInput(e.target.value),
|
|
99
|
-
onPaste: (e) => e.preventDefault(),
|
|
100
|
-
autoComplete: "off"
|
|
101
|
-
}
|
|
102
|
-
)
|
|
103
|
-
] })
|
|
104
|
-
] }),
|
|
105
|
-
/* @__PURE__ */ jsxs("form", { onSubmit: handleSubmit, className: "ui-flex ui-flex-col sm:ui-flex-row sm:ui-gap-3 ui-justify-end ui-bg-gray-50", children: [
|
|
106
|
-
/* @__PURE__ */ jsx(
|
|
107
|
-
Button,
|
|
108
|
-
{
|
|
109
|
-
type: "button",
|
|
110
|
-
variant: "outline",
|
|
111
|
-
className: "ui-flex-1 ui-h-11",
|
|
112
|
-
onClick: handleClose,
|
|
113
|
-
disabled: loading,
|
|
114
|
-
children: cancelText
|
|
115
|
-
}
|
|
116
|
-
),
|
|
117
|
-
/* @__PURE__ */ jsx(
|
|
118
|
-
Button,
|
|
119
|
-
{
|
|
120
|
-
type: "submit",
|
|
121
|
-
className: "ui-flex-1 ui-h-11",
|
|
122
|
-
disabled: isSubmitDisabled,
|
|
123
|
-
children: loading ? /* @__PURE__ */ jsx(FaCircleNotch, { size: 18, className: "ui-animate-spin" }) : confirmText
|
|
124
|
-
}
|
|
125
|
-
)
|
|
126
|
-
] })
|
|
127
|
-
] })
|
|
128
|
-
}
|
|
129
|
-
) }) })
|
|
130
|
-
}
|
|
131
|
-
);
|
|
132
|
-
}
|
|
133
|
-
export {
|
|
134
|
-
ConfirmationModal as default
|
|
135
|
-
};
|
|
136
|
-
//# sourceMappingURL=ConfirmationModal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConfirmationModal.js","sources":["../../../src/components/ConfirmationModal/ConfirmationModal.tsx"],"sourcesContent":["import { Dialog, Transition } from '@headlessui/react'\r\nimport { X, AlertTriangle } from 'lucide-react';\r\nimport { FormEvent, Fragment, ReactNode, useState } from 'react';\r\nimport { FaCircleNotch } from 'react-icons/fa';\r\n\r\nimport { Button } from '../Button';\r\nimport Modal from '../Modal/Modal';\r\nimport { cn } from '../../utils/cn';\r\n\r\nexport interface ConfirmationModalProps {\r\n open: boolean;\r\n title: string;\r\n description?: string;\r\n onClose: () => void;\r\n onConfirm: () => Promise<void> | void;\r\n confirmText?: string;\r\n cancelText?: string;\r\n children?: ReactNode;\r\n isLoading?: boolean;\r\n confirmationKeyword?: string;\r\n}\r\n\r\nexport default function ConfirmationModal({\r\n open,\r\n title,\r\n description,\r\n onClose,\r\n onConfirm,\r\n confirmText = \"Confirm\",\r\n cancelText = \"Cancel\",\r\n children,\r\n isLoading,\r\n confirmationKeyword\r\n}: ConfirmationModalProps) {\r\n const [internalLoading, setInternalLoading] = useState(false);\r\n const [confirmInput, setConfirmInput] = useState(\"\");\r\n\r\n const loading = isLoading ?? internalLoading;\r\n\r\n const handleSubmit = async (e: FormEvent<HTMLFormElement>) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (!loading) {\r\n if (confirmationKeyword && confirmInput !== confirmationKeyword) {\r\n return;\r\n }\r\n try {\r\n setInternalLoading(true);\r\n await onConfirm();\r\n }\r\n finally {\r\n setInternalLoading(false);\r\n }\r\n }\r\n }\r\n\r\n const handleClose = () => {\r\n if (!loading) {\r\n onClose();\r\n setConfirmInput(\"\");\r\n }\r\n }\r\n\r\n const isSubmitDisabled = loading || (confirmationKeyword ? confirmInput !== confirmationKeyword : false);\r\n\r\n return (\r\n <Modal\r\n open={open}\r\n handleClose={handleClose}\r\n closeOnEscape={false}\r\n closeOnOutsideClick={false}\r\n >\r\n <div className=\"ui-fixed ui-inset-0 ui-z-10 ui-overflow-y-auto\">\r\n <div className=\"ui-flex ui-min-h-full ui-items-center ui-justify-center ui-p-4 ui-text-center sm:ui-p-0\">\r\n <Transition.Child\r\n as={Fragment}\r\n enter=\"ui-ease-out ui-duration-300\"\r\n enterFrom=\"ui-opacity-0 ui-translate-y-4 sm:ui-translate-y-0 sm:ui-scale-95\"\r\n enterTo=\"ui-opacity-100 ui-translate-y-0 sm:ui-scale-100\"\r\n leave=\"ui-ease-in ui-duration-200\"\r\n leaveFrom=\"ui-opacity-100 ui-translate-y-0 sm:ui-scale-100\"\r\n leaveTo=\"ui-opacity-0 ui-translate-y-4 sm:ui-translate-y-0 sm:ui-scale-95\"\r\n >\r\n <Dialog.Panel className=\"ui-flex ui-flex-col ui-gap-6 ui-relative ui-transform ui-overflow-hidden ui-rounded-xl ui-bg-white ui-text-left ui-shadow-xl ui-transition-all ui-mx-auto ui-px-4 sm:ui-px-6 ui-py-4 sm:ui-py-6 ui-w-full ui-max-w-lg\">\r\n <div className=\"ui-shrink-0\">\r\n <div className=\"ui-text-start\">\r\n <div className=\"ui-flex ui-justify-between ui-items-start\">\r\n <div className=\"ui-flex ui-items-center ui-gap-3\">\r\n <div className=\"ui-shrink-0 ui-flex ui-items-center ui-justify-center ui-h-10 ui-w-10 ui-rounded-full ui-bg-red-100\">\r\n <AlertTriangle className=\"ui-h-5 ui-w-5 ui-text-red-600\" aria-hidden=\"true\" />\r\n </div>\r\n <Dialog.Title as=\"h3\" className=\"ui-text-lg ui-font-semibold ui-leading-6 ui-text-gray-900 ui-pt-2\" id=\"modal-title\">\r\n {title}\r\n </Dialog.Title>\r\n </div>\r\n <button\r\n type=\"button\"\r\n className=\"ui-text-gray-400 hover:ui-text-gray-500 ui-transition-colors ui-bg-transparent ui-rounded-md ui-p-1 hover:ui-bg-gray-100\"\r\n onClick={handleClose}\r\n aria-label=\"Close modal\"\r\n >\r\n <span className=\"ui-sr-only\">Close</span>\r\n <X height={20} width={20} />\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"ui-text-sm ui-text-gray-600\">\r\n {description && <p>{description}</p>}\r\n {children && <div className=\"ui-mt-4\">{children}</div>}\r\n\r\n {confirmationKeyword && (\r\n <div className=\"ui-mt-4\">\r\n <label className=\"ui-block ui-text-sm ui-font-medium ui-text-gray-700 ui-mb-2\">\r\n Type <span className=\"ui-font-bold ui-select-all\">{confirmationKeyword}</span> to confirm\r\n </label>\r\n <input\r\n type=\"text\"\r\n className=\"ui-w-full ui-rounded-lg ui-border-gray-300 ui-shadow-sm focus:ui-border-red-500 focus:ui-ring-red-500 sm:ui-text-sm ui-px-3 ui-py-2 ui-border\"\r\n placeholder={`Type \"${confirmationKeyword}\"`}\r\n value={confirmInput}\r\n onChange={(e) => setConfirmInput(e.target.value)}\r\n onPaste={(e) => e.preventDefault()}\r\n autoComplete='off'\r\n />\r\n </div>\r\n )}\r\n </div>\r\n\r\n\r\n <form onSubmit={handleSubmit} className=\"ui-flex ui-flex-col sm:ui-flex-row sm:ui-gap-3 ui-justify-end ui-bg-gray-50\">\r\n <Button\r\n type=\"button\"\r\n variant=\"outline\"\r\n className=\"ui-flex-1 ui-h-11\"\r\n onClick={handleClose}\r\n disabled={loading}\r\n >\r\n {cancelText}\r\n </Button>\r\n <Button\r\n type=\"submit\"\r\n className=\"ui-flex-1 ui-h-11\"\r\n disabled={isSubmitDisabled}\r\n >\r\n {\r\n loading ? <FaCircleNotch size={18} className=\"ui-animate-spin\" /> : confirmText\r\n }\r\n </Button>\r\n </form>\r\n </Dialog.Panel>\r\n </Transition.Child>\r\n </div>\r\n </div>\r\n </Modal>\r\n )\r\n}\r\n"],"names":[],"mappings":"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"}
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { memo, useState, useRef, useEffect } from "react";
|
|
3
|
-
import { createPortal } from "react-dom";
|
|
4
|
-
import { ChevronDown, Check } from "lucide-react";
|
|
5
|
-
import { AnimatePresence, motion } from "framer-motion";
|
|
6
|
-
import { cn } from "../../utils/cn.js";
|
|
7
|
-
import FormInput from "../FormInput/FormInput.js";
|
|
8
|
-
import { Tooltip } from "../Tooltip/Tooltip.js";
|
|
9
|
-
import { Checkbox } from "../Checkbox/Checkbox.js";
|
|
10
|
-
const CustomSelect = ({
|
|
11
|
-
value,
|
|
12
|
-
onChange,
|
|
13
|
-
options,
|
|
14
|
-
placeholder = "Select...",
|
|
15
|
-
disabled = false,
|
|
16
|
-
className,
|
|
17
|
-
error,
|
|
18
|
-
enableSearch = false,
|
|
19
|
-
multiple = false,
|
|
20
|
-
triggerButton,
|
|
21
|
-
onClear,
|
|
22
|
-
showCheckbox = false,
|
|
23
|
-
triggerClassName,
|
|
24
|
-
tooltipContent,
|
|
25
|
-
enableTooltip = false,
|
|
26
|
-
tooltipPlacement = "top",
|
|
27
|
-
tooltipTriggerClassName
|
|
28
|
-
}) => {
|
|
29
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
30
|
-
const [searchQuery, setSearchQuery] = useState("");
|
|
31
|
-
const [coords, setCoords] = useState({ top: 0, left: 0, width: 0, maxHeight: 300 });
|
|
32
|
-
const containerRef = useRef(null);
|
|
33
|
-
const triggerRef = useRef(null);
|
|
34
|
-
const popoverRef = useRef(null);
|
|
35
|
-
const selectedOption = !multiple ? options.find((opt) => opt.value === value) : null;
|
|
36
|
-
const filteredOptions = enableSearch ? options.filter((opt) => opt.label.toLowerCase().includes(searchQuery.toLowerCase())) : options;
|
|
37
|
-
useEffect(() => {
|
|
38
|
-
if (isOpen && enableSearch) {
|
|
39
|
-
setSearchQuery("");
|
|
40
|
-
}
|
|
41
|
-
}, [isOpen, enableSearch]);
|
|
42
|
-
useEffect(() => {
|
|
43
|
-
const handleClickOutside = (event) => {
|
|
44
|
-
const target = event.target;
|
|
45
|
-
if (containerRef.current && !containerRef.current.contains(target) && popoverRef.current && !popoverRef.current.contains(target)) {
|
|
46
|
-
setIsOpen(false);
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
if (isOpen) {
|
|
50
|
-
document.addEventListener("mousedown", handleClickOutside);
|
|
51
|
-
window.addEventListener("scroll", updatePosition, true);
|
|
52
|
-
window.addEventListener("resize", updatePosition);
|
|
53
|
-
}
|
|
54
|
-
return () => {
|
|
55
|
-
document.removeEventListener("mousedown", handleClickOutside);
|
|
56
|
-
window.removeEventListener("scroll", updatePosition, true);
|
|
57
|
-
window.removeEventListener("resize", updatePosition);
|
|
58
|
-
};
|
|
59
|
-
}, [isOpen]);
|
|
60
|
-
const updatePosition = () => {
|
|
61
|
-
if (triggerRef.current) {
|
|
62
|
-
const rect = triggerRef.current.getBoundingClientRect();
|
|
63
|
-
const viewportHeight = window.innerHeight;
|
|
64
|
-
const buffer = 8;
|
|
65
|
-
const spaceBelow = viewportHeight - rect.bottom - buffer - 16;
|
|
66
|
-
const spaceAbove = rect.top - buffer - 16;
|
|
67
|
-
let topPosition;
|
|
68
|
-
let maxHeightValue;
|
|
69
|
-
if (spaceBelow >= 200 || spaceBelow > spaceAbove) {
|
|
70
|
-
topPosition = rect.bottom + buffer;
|
|
71
|
-
maxHeightValue = Math.min(spaceBelow, 400);
|
|
72
|
-
} else {
|
|
73
|
-
topPosition = rect.bottom + buffer;
|
|
74
|
-
maxHeightValue = Math.min(spaceBelow, 400);
|
|
75
|
-
}
|
|
76
|
-
setCoords({
|
|
77
|
-
top: topPosition,
|
|
78
|
-
left: rect.left,
|
|
79
|
-
width: rect.width,
|
|
80
|
-
maxHeight: Math.max(100, maxHeightValue)
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
useEffect(() => {
|
|
85
|
-
if (isOpen) {
|
|
86
|
-
updatePosition();
|
|
87
|
-
const handleScroll = () => {
|
|
88
|
-
if (isOpen) updatePosition();
|
|
89
|
-
};
|
|
90
|
-
window.addEventListener("scroll", handleScroll, true);
|
|
91
|
-
window.addEventListener("resize", handleScroll);
|
|
92
|
-
return () => {
|
|
93
|
-
window.removeEventListener("scroll", handleScroll, true);
|
|
94
|
-
window.removeEventListener("resize", handleScroll);
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
}, [isOpen]);
|
|
98
|
-
const toggleOpen = () => {
|
|
99
|
-
if (!disabled) {
|
|
100
|
-
if (!isOpen) updatePosition();
|
|
101
|
-
setIsOpen(!isOpen);
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
const handleSelect = (val) => {
|
|
105
|
-
if (multiple) {
|
|
106
|
-
const currentValues = Array.isArray(value) ? value : [];
|
|
107
|
-
const isSelected = currentValues.includes(val);
|
|
108
|
-
let newValues;
|
|
109
|
-
if (isSelected) {
|
|
110
|
-
newValues = currentValues.filter((v) => v !== val);
|
|
111
|
-
} else {
|
|
112
|
-
newValues = [...currentValues, val];
|
|
113
|
-
}
|
|
114
|
-
onChange(newValues);
|
|
115
|
-
} else {
|
|
116
|
-
onChange(val);
|
|
117
|
-
setIsOpen(false);
|
|
118
|
-
}
|
|
119
|
-
};
|
|
120
|
-
const TriggerContent = /* @__PURE__ */ jsxs(
|
|
121
|
-
"button",
|
|
122
|
-
{
|
|
123
|
-
type: "button",
|
|
124
|
-
disabled,
|
|
125
|
-
className: cn(
|
|
126
|
-
"ui-w-full ui-text-md ui-flex ui-items-center ui-justify-between ui-rounded-lg ui-bg-white ui-px-2 ui-py-2 ui-text-sm ui-text-left ui-transition-all ui-duration-200 ui-outline-none",
|
|
127
|
-
"focus:ui-ring-1 focus:ui-ring-primaryx-500 focus:ui-border-primaryx-500",
|
|
128
|
-
error ? "ui-border-red-500 ui-text-red-900" : "ui-border ui-border-gray-200 ui-text-gray-900",
|
|
129
|
-
disabled ? "ui-bg-gray-50 ui-cursor-not-allowed ui-opacity-60" : "ui-cursor-pointer",
|
|
130
|
-
isOpen && "ui-border-primaryx-500 ui-ring-1 ui-ring-primaryx-500",
|
|
131
|
-
triggerClassName
|
|
132
|
-
),
|
|
133
|
-
children: [
|
|
134
|
-
/* @__PURE__ */ jsxs("div", { className: "ui-flex ui-items-center ui-gap-2 ui-truncate", children: [
|
|
135
|
-
(selectedOption == null ? void 0 : selectedOption.icon) ? /* @__PURE__ */ jsx("span", { className: "ui-text-gray-500", children: selectedOption.icon }) : (selectedOption == null ? void 0 : selectedOption.src) ? /* @__PURE__ */ jsx("img", { src: selectedOption.src, alt: selectedOption.label, className: "ui-w-4 ui-h-4" }) : null,
|
|
136
|
-
/* @__PURE__ */ jsx("span", { className: cn("ui-truncate", !selectedOption && "ui-text-gray-400"), children: selectedOption ? selectedOption.label : placeholder })
|
|
137
|
-
] }),
|
|
138
|
-
/* @__PURE__ */ jsx(ChevronDown, { className: cn("ui-h-4 ui-w-4 ui-text-gray-500 ui-transition-transform ui-duration-200", isOpen && "ui-rotate-180") })
|
|
139
|
-
]
|
|
140
|
-
}
|
|
141
|
-
);
|
|
142
|
-
return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: cn("ui-relative ui-w-full", className), children: [
|
|
143
|
-
/* @__PURE__ */ jsx("div", { onClick: toggleOpen, ref: triggerRef, className: "ui-w-full", children: triggerButton ? triggerButton({ isOpen }) : enableTooltip ? /* @__PURE__ */ jsx(
|
|
144
|
-
Tooltip,
|
|
145
|
-
{
|
|
146
|
-
placement: tooltipPlacement,
|
|
147
|
-
content: tooltipContent,
|
|
148
|
-
children: TriggerContent
|
|
149
|
-
}
|
|
150
|
-
) : TriggerContent }),
|
|
151
|
-
typeof document !== "undefined" && createPortal(
|
|
152
|
-
/* @__PURE__ */ jsx(AnimatePresence, { children: isOpen && /* @__PURE__ */ jsxs(
|
|
153
|
-
motion.div,
|
|
154
|
-
{
|
|
155
|
-
ref: popoverRef,
|
|
156
|
-
initial: { opacity: 0, y: -10, scale: 0.98 },
|
|
157
|
-
animate: { opacity: 1, y: 0, scale: 1 },
|
|
158
|
-
exit: { opacity: 0, y: -10, scale: 0.98 },
|
|
159
|
-
transition: { duration: 0.15, ease: "easeOut" },
|
|
160
|
-
style: {
|
|
161
|
-
position: "fixed",
|
|
162
|
-
top: coords.top,
|
|
163
|
-
left: coords.left,
|
|
164
|
-
width: Math.max(coords.width, 220),
|
|
165
|
-
zIndex: 99999,
|
|
166
|
-
transformOrigin: "top left"
|
|
167
|
-
},
|
|
168
|
-
className: "ui-rounded-xl ui-bg-white ui-shadow-2xl ui-border ui-border-gray-200 hover:ui-border-primaryx-700 ui-flex ui-flex-col ui-p-1.5",
|
|
169
|
-
children: [
|
|
170
|
-
/* @__PURE__ */ jsxs(
|
|
171
|
-
"div",
|
|
172
|
-
{
|
|
173
|
-
style: { maxHeight: coords.maxHeight },
|
|
174
|
-
className: "ui-w-full ui-overflow-y-auto ui-flex ui-flex-col ui-gap-0.5 ui-px-0.5",
|
|
175
|
-
children: [
|
|
176
|
-
enableSearch && /* @__PURE__ */ jsx("div", { className: "ui-sticky ui-text-sm ui-w-full ui-top-0 ui-z-10 ui-bg-white ui-pb-4 ui-pt-1 ui-px-1", children: /* @__PURE__ */ jsx(
|
|
177
|
-
FormInput,
|
|
178
|
-
{
|
|
179
|
-
type: "text",
|
|
180
|
-
value: searchQuery,
|
|
181
|
-
onChange: (e) => setSearchQuery(typeof e === "string" ? e : e.target.value),
|
|
182
|
-
placeholder,
|
|
183
|
-
inputClassName: "ui-h-9"
|
|
184
|
-
}
|
|
185
|
-
) }),
|
|
186
|
-
filteredOptions.length > 0 ? filteredOptions.map((option) => {
|
|
187
|
-
if (option.isLabel) {
|
|
188
|
-
return /* @__PURE__ */ jsx(
|
|
189
|
-
"div",
|
|
190
|
-
{
|
|
191
|
-
className: "ui-text-sm ui-font-semibold ui-text-gray-400 ui-mt-2 ui-pl-2",
|
|
192
|
-
children: option.label
|
|
193
|
-
},
|
|
194
|
-
option.value
|
|
195
|
-
);
|
|
196
|
-
}
|
|
197
|
-
const isSelected = multiple ? Array.isArray(value) && value.includes(option.value) : value === option.value;
|
|
198
|
-
return /* @__PURE__ */ jsxs(
|
|
199
|
-
"div",
|
|
200
|
-
{
|
|
201
|
-
role: "button",
|
|
202
|
-
tabIndex: 0,
|
|
203
|
-
onClick: () => handleSelect(option.value),
|
|
204
|
-
onKeyDown: (e) => {
|
|
205
|
-
if (e.key === "Enter" || e.key === " ") {
|
|
206
|
-
e.preventDefault();
|
|
207
|
-
handleSelect(option.value);
|
|
208
|
-
}
|
|
209
|
-
},
|
|
210
|
-
className: cn(
|
|
211
|
-
"ui-flex ui-items-center ui-justify-between ui-w-full ui-px-3 ui-py-2.5 ui-text-sm ui-rounded-lg ui-transition-all ui-duration-200 ui-text-gray-600 hover:ui-text-gray-900 ui-cursor-pointer",
|
|
212
|
-
isSelected ? "ui-bg-gray-100" : "hover:ui-bg-gray-50"
|
|
213
|
-
),
|
|
214
|
-
children: [
|
|
215
|
-
/* @__PURE__ */ jsxs("div", { className: "ui-flex ui-items-center ui-space-x-3 ui-text-left ui-pointer-events-none", children: [
|
|
216
|
-
showCheckbox && /* @__PURE__ */ jsx(
|
|
217
|
-
Checkbox,
|
|
218
|
-
{
|
|
219
|
-
checked: isSelected,
|
|
220
|
-
readOnly: true,
|
|
221
|
-
className: "ui-mr-1"
|
|
222
|
-
}
|
|
223
|
-
),
|
|
224
|
-
option.icon ? /* @__PURE__ */ jsx("span", { className: cn("ui-w-4 ui-h-4", isSelected ? "ui-text-primaryx-600" : "ui-text-gray-400"), children: option.icon }) : option.src ? /* @__PURE__ */ jsx("img", { src: option.src, alt: option.label, className: "ui-w-4 ui-h-4" }) : null,
|
|
225
|
-
/* @__PURE__ */ jsx("span", { children: option.label })
|
|
226
|
-
] }),
|
|
227
|
-
!showCheckbox && isSelected && /* @__PURE__ */ jsx(Check, { className: "ui-h-4 ui-w-4 ui-text-primaryx-600" })
|
|
228
|
-
]
|
|
229
|
-
},
|
|
230
|
-
option.value
|
|
231
|
-
);
|
|
232
|
-
}) : /* @__PURE__ */ jsx("div", { className: "ui-min-h-20 ui-flex ui-justify-center ui-items-center ui-text-center ui-text-sm ui-text-gray-500 ui-py-4", children: "No results found" })
|
|
233
|
-
]
|
|
234
|
-
}
|
|
235
|
-
),
|
|
236
|
-
onClear && /* @__PURE__ */ jsx("div", { className: "ui-mt-2 ui-pt-2 ui-border-t ui-border-gray-100", children: /* @__PURE__ */ jsx(
|
|
237
|
-
"button",
|
|
238
|
-
{
|
|
239
|
-
type: "button",
|
|
240
|
-
onClick: () => {
|
|
241
|
-
onClear();
|
|
242
|
-
setIsOpen(false);
|
|
243
|
-
},
|
|
244
|
-
className: "ui-w-full ui-px-3 ui-py-2 ui-text-xs ui-font-semibold ui-text-center ui-text-red-500 hover:ui-text-red-600 hover:ui-bg-red-50 ui-rounded-lg ui-transition-colors ui-uppercase ui-tracking-wide",
|
|
245
|
-
children: "Clear Filters"
|
|
246
|
-
}
|
|
247
|
-
) })
|
|
248
|
-
]
|
|
249
|
-
}
|
|
250
|
-
) }),
|
|
251
|
-
document.body
|
|
252
|
-
)
|
|
253
|
-
] });
|
|
254
|
-
};
|
|
255
|
-
const CustomSelect$1 = memo(CustomSelect);
|
|
256
|
-
export {
|
|
257
|
-
CustomSelect$1 as default
|
|
258
|
-
};
|
|
259
|
-
//# sourceMappingURL=CustomSelect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CustomSelect.js","sources":["../../../src/components/CustomSelect/CustomSelect.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect, memo, ReactNode } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { ChevronDown, Check } from \"lucide-react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport FormInput from \"../FormInput/FormInput\";\r\nimport { Tooltip } from \"../Tooltip/Tooltip\";\r\nimport { Checkbox } from \"../Checkbox/Checkbox\";\r\n\r\nexport interface CustomSelectOption {\r\n label: string;\r\n value: string;\r\n icon?: React.ReactNode;\r\n src?: string;\r\n isLabel?: boolean;\r\n}\r\n\r\ninterface CustomSelectProps {\r\n value?: string | string[];\r\n onChange: (value: any) => void;\r\n options: CustomSelectOption[];\r\n placeholder?: string;\r\n disabled?: boolean;\r\n className?: string;\r\n triggerClassName?: string;\r\n error?: string;\r\n enableSearch?: boolean;\r\n multiple?: boolean;\r\n triggerButton?: ({ isOpen }: { isOpen?: boolean; }) => React.ReactNode;\r\n onClear?: () => void;\r\n showCheckbox?: boolean;\r\n tooltipContent?: ReactNode;\r\n enableTooltip?: boolean;\r\n tooltipPlacement?: \"top\" | \"bottom\" | \"left\" | \"right\";\r\n tooltipTriggerClassName?: string;\r\n}\r\n\r\nconst CustomSelect = ({\r\n value,\r\n onChange,\r\n options,\r\n placeholder = \"Select...\",\r\n disabled = false,\r\n className,\r\n error,\r\n enableSearch = false,\r\n multiple = false,\r\n triggerButton,\r\n onClear,\r\n showCheckbox = false,\r\n triggerClassName,\r\n tooltipContent,\r\n enableTooltip = false,\r\n tooltipPlacement = \"top\",\r\n tooltipTriggerClassName\r\n}: CustomSelectProps) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [searchQuery, setSearchQuery] = useState(\"\");\r\n const [coords, setCoords] = useState<{ top: number; left: number; width: number; maxHeight: number }>({ top: 0, left: 0, width: 0, maxHeight: 300 });\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const triggerRef = useRef<HTMLElement>(null);\r\n const popoverRef = useRef<HTMLDivElement>(null);\r\n\r\n const selectedOption = !multiple ? options.find((opt) => opt.value === value) : null;\r\n\r\n const filteredOptions = enableSearch\r\n ? options.filter((opt) => opt.label.toLowerCase().includes(searchQuery.toLowerCase()))\r\n : options;\r\n\r\n useEffect(() => {\r\n if (isOpen && enableSearch) {\r\n setSearchQuery(\"\");\r\n }\r\n }, [isOpen, enableSearch]);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n const target = event.target as Node;\r\n if (\r\n containerRef.current &&\r\n !containerRef.current.contains(target) &&\r\n popoverRef.current &&\r\n !popoverRef.current.contains(target)\r\n ) {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n if (isOpen) {\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n window.addEventListener(\"scroll\", updatePosition, true);\r\n window.addEventListener(\"resize\", updatePosition);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n window.removeEventListener(\"scroll\", updatePosition, true);\r\n window.removeEventListener(\"resize\", updatePosition);\r\n };\r\n }, [isOpen]);\r\n\r\n const updatePosition = () => {\r\n if (triggerRef.current) {\r\n const rect = triggerRef.current.getBoundingClientRect();\r\n const viewportHeight = window.innerHeight;\r\n const buffer = 8;\r\n\r\n const spaceBelow = viewportHeight - rect.bottom - buffer - 16;\r\n const spaceAbove = rect.top - buffer - 16;\r\n\r\n let topPosition: number;\r\n let maxHeightValue: number;\r\n\r\n if (spaceBelow >= 200 || spaceBelow > spaceAbove) {\r\n topPosition = rect.bottom + buffer;\r\n maxHeightValue = Math.min(spaceBelow, 400);\r\n } else {\r\n topPosition = rect.bottom + buffer;\r\n maxHeightValue = Math.min(spaceBelow, 400);\r\n }\r\n\r\n setCoords({\r\n top: topPosition,\r\n left: rect.left,\r\n width: rect.width,\r\n maxHeight: Math.max(100, maxHeightValue)\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n updatePosition();\r\n const handleScroll = () => {\r\n if (isOpen) updatePosition();\r\n };\r\n window.addEventListener(\"scroll\", handleScroll, true);\r\n window.addEventListener(\"resize\", handleScroll);\r\n return () => {\r\n window.removeEventListener(\"scroll\", handleScroll, true);\r\n window.removeEventListener(\"resize\", handleScroll);\r\n };\r\n }\r\n }, [isOpen]);\r\n\r\n const toggleOpen = () => {\r\n if (!disabled) {\r\n if (!isOpen) updatePosition();\r\n setIsOpen(!isOpen);\r\n }\r\n };\r\n\r\n const handleSelect = (val: string) => {\r\n if (multiple) {\r\n const currentValues = Array.isArray(value) ? value : [];\r\n const isSelected = currentValues.includes(val);\r\n let newValues;\r\n if (isSelected) {\r\n newValues = currentValues.filter(v => v !== val);\r\n } else {\r\n newValues = [...currentValues, val];\r\n }\r\n onChange(newValues);\r\n } else {\r\n onChange(val);\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n const TriggerContent = (\r\n <button\r\n type=\"button\"\r\n disabled={disabled}\r\n className={cn(\r\n \"ui-w-full ui-text-md ui-flex ui-items-center ui-justify-between ui-rounded-lg ui-bg-white ui-px-2 ui-py-2 ui-text-sm ui-text-left ui-transition-all ui-duration-200 ui-outline-none\",\r\n \"focus:ui-ring-1 focus:ui-ring-primaryx-500 focus:ui-border-primaryx-500\",\r\n error ? \"ui-border-red-500 ui-text-red-900\" : \"ui-border ui-border-gray-200 ui-text-gray-900\",\r\n disabled ? \"ui-bg-gray-50 ui-cursor-not-allowed ui-opacity-60\" : \"ui-cursor-pointer\",\r\n isOpen && \"ui-border-primaryx-500 ui-ring-1 ui-ring-primaryx-500\",\r\n triggerClassName\r\n )}\r\n >\r\n <div className=\"ui-flex ui-items-center ui-gap-2 ui-truncate\">\r\n {selectedOption?.icon ? (\r\n <span className=\"ui-text-gray-500\">{selectedOption.icon}</span>\r\n ) : selectedOption?.src ? (\r\n <img src={selectedOption.src} alt={selectedOption.label} className=\"ui-w-4 ui-h-4\" />\r\n ) : null}\r\n <span className={cn(\"ui-truncate\", !selectedOption && \"ui-text-gray-400\")}>\r\n {selectedOption ? selectedOption.label : placeholder}\r\n </span>\r\n </div>\r\n <ChevronDown className={cn(\"ui-h-4 ui-w-4 ui-text-gray-500 ui-transition-transform ui-duration-200\", isOpen && \"ui-rotate-180\")} />\r\n </button>\r\n );\r\n\r\n return (\r\n <div ref={containerRef} className={cn(\"ui-relative ui-w-full\", className)}>\r\n <div onClick={toggleOpen} ref={triggerRef as any} className=\"ui-w-full\">\r\n {triggerButton ? (\r\n triggerButton({ isOpen })\r\n ) : (\r\n enableTooltip ? (\r\n <Tooltip\r\n placement={tooltipPlacement}\r\n content={tooltipContent}\r\n >\r\n {TriggerContent}\r\n </Tooltip>\r\n ) : (\r\n TriggerContent\r\n )\r\n )}\r\n </div>\r\n\r\n {typeof document !== \"undefined\" && createPortal(\r\n <AnimatePresence>\r\n {isOpen && (\r\n <motion.div\r\n ref={popoverRef}\r\n initial={{ opacity: 0, y: -10, scale: 0.98 }}\r\n animate={{ opacity: 1, y: 0, scale: 1 }}\r\n exit={{ opacity: 0, y: -10, scale: 0.98 }}\r\n transition={{ duration: 0.15, ease: \"easeOut\" }}\r\n style={{\r\n position: \"fixed\",\r\n top: coords.top,\r\n left: coords.left,\r\n width: Math.max(coords.width, 220),\r\n zIndex: 99999,\r\n transformOrigin: 'top left'\r\n }}\r\n className=\"ui-rounded-xl ui-bg-white ui-shadow-2xl ui-border ui-border-gray-200 hover:ui-border-primaryx-700 ui-flex ui-flex-col ui-p-1.5\"\r\n >\r\n <div\r\n style={{ maxHeight: coords.maxHeight }}\r\n className=\"ui-w-full ui-overflow-y-auto ui-flex ui-flex-col ui-gap-0.5 ui-px-0.5\"\r\n >\r\n {enableSearch && (\r\n <div className=\"ui-sticky ui-text-sm ui-w-full ui-top-0 ui-z-10 ui-bg-white ui-pb-4 ui-pt-1 ui-px-1\">\r\n <FormInput\r\n type=\"text\"\r\n value={searchQuery}\r\n onChange={(e: any) => setSearchQuery(typeof e === 'string' ? e : e.target.value)}\r\n placeholder={placeholder}\r\n inputClassName=\"ui-h-9\"\r\n />\r\n </div>\r\n )}\r\n {filteredOptions.length > 0 ? (\r\n filteredOptions.map((option) => {\r\n if (option.isLabel) {\r\n return (\r\n <div\r\n key={option.value}\r\n className=\"ui-text-sm ui-font-semibold ui-text-gray-400 ui-mt-2 ui-pl-2\"\r\n >\r\n {option.label}\r\n </div>\r\n );\r\n }\r\n\r\n const isSelected = multiple\r\n ? (Array.isArray(value) && value.includes(option.value))\r\n : value === option.value;\r\n\r\n return (\r\n <div\r\n key={option.value}\r\n role=\"button\"\r\n tabIndex={0}\r\n onClick={() => handleSelect(option.value)}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n handleSelect(option.value);\r\n }\r\n }}\r\n className={cn(\r\n \"ui-flex ui-items-center ui-justify-between ui-w-full ui-px-3 ui-py-2.5 ui-text-sm ui-rounded-lg ui-transition-all ui-duration-200 ui-text-gray-600 hover:ui-text-gray-900 ui-cursor-pointer\",\r\n isSelected ? \"ui-bg-gray-100\" : \"hover:ui-bg-gray-50\"\r\n )}\r\n >\r\n <div className=\"ui-flex ui-items-center ui-space-x-3 ui-text-left ui-pointer-events-none\">\r\n {showCheckbox && (\r\n <Checkbox\r\n checked={isSelected}\r\n readOnly\r\n className=\"ui-mr-1\"\r\n />\r\n )}\r\n {option.icon ? (\r\n <span className={cn(\"ui-w-4 ui-h-4\", isSelected ? \"ui-text-primaryx-600\" : \"ui-text-gray-400\")}>\r\n {option.icon}\r\n </span>\r\n ) : option.src ? (\r\n <img src={option.src} alt={option.label} className=\"ui-w-4 ui-h-4\" />\r\n ) : null}\r\n <span>{option.label}</span>\r\n </div>\r\n {!showCheckbox && isSelected && <Check className=\"ui-h-4 ui-w-4 ui-text-primaryx-600\" />}\r\n </div>\r\n );\r\n })\r\n ) : (\r\n <div className=\"ui-min-h-20 ui-flex ui-justify-center ui-items-center ui-text-center ui-text-sm ui-text-gray-500 ui-py-4\">No results found</div>\r\n )}\r\n </div>\r\n\r\n {onClear && (\r\n <div className=\"ui-mt-2 ui-pt-2 ui-border-t ui-border-gray-100\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n onClear();\r\n setIsOpen(false);\r\n }}\r\n className=\"ui-w-full ui-px-3 ui-py-2 ui-text-xs ui-font-semibold ui-text-center ui-text-red-500 hover:ui-text-red-600 hover:ui-bg-red-50 ui-rounded-lg ui-transition-colors ui-uppercase ui-tracking-wide\"\r\n >\r\n Clear Filters\r\n </button>\r\n </div>\r\n )}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>,\r\n document.body\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\nexport default memo(CustomSelect);\r\n"],"names":[],"mappings":"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"}
|