@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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Radio.js","sources":["../../../src/components/ui/Radio.tsx"],"sourcesContent":["import React from \"react\";\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nexport interface RadioProps extends React.InputHTMLAttributes<HTMLInputElement> { }\r\n\r\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(\r\n ({ className, checked, ...props }, ref) => {\r\n return (\r\n <div className=\"relative flex items-center justify-center shrink-0\">\r\n <input\r\n type=\"radio\"\r\n className={cn(\"peer sr-only\", className)}\r\n ref={ref}\r\n checked={checked}\r\n {...props}\r\n />\r\n <div\r\n className={cn(\r\n \"w-4 h-4 rounded-full bg-white transition-all duration-200\",\r\n checked ? \"border border-primaryx-500\" : \"input-border\",\r\n \"peer-focus-visible:ring-2 peer-focus-visible:ring-primaryx-500 peer-focus-visible:ring-offset-2\"\r\n )}\r\n />\r\n {checked && (\r\n <div className=\"absolute w-1.5 h-1.5 rounded-full bg-primaryx-500 pointer-events-none\" />\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\nRadio.displayName = \"Radio\";\r\n\r\nexport { Radio };\r\n"],"names":["React"],"mappings":";;;AAKA,MAAM,QAAQA,eAAM;AAAA,EAChB,CAAC,EAAE,WAAW,SAAS,GAAG,MAAA,GAAS,QAAQ;AACvC,WACI,qBAAC,OAAA,EAAI,WAAU,sDACX,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,MAAK;AAAA,UACL,WAAW,GAAG,gBAAgB,SAAS;AAAA,UACvC;AAAA,UACA;AAAA,UACC,GAAG;AAAA,QAAA;AAAA,MAAA;AAAA,MAER;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,WAAW;AAAA,YACP;AAAA,YACA,UAAU,+BAA+B;AAAA,YACzC;AAAA,UAAA;AAAA,QACJ;AAAA,MAAA;AAAA,MAEH,WACG,oBAAC,OAAA,EAAI,WAAU,wEAAA,CAAwE;AAAA,IAAA,GAE/F;AAAA,EAER;AACJ;AACA,MAAM,cAAc;"}
|
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { memo, useEffect } from "react";
|
|
3
|
-
import { useEditor, EditorContent } from "../../node_modules/@tiptap/react/dist/index.js";
|
|
4
|
-
import index_default$1 from "../../node_modules/@tiptap/starter-kit/dist/index.js";
|
|
5
|
-
import index_default from "../../node_modules/@tiptap/extension-underline/dist/index.js";
|
|
6
|
-
import index_default$2 from "../../node_modules/@tiptap/extension-link/dist/index.js";
|
|
7
|
-
import index_default$3 from "../../node_modules/@tiptap/extension-placeholder/dist/index.js";
|
|
8
|
-
import { Type, Heading1, Bold, Italic, Underline, Strikethrough, List, ListOrdered, Eraser, Undo, Redo } from "lucide-react";
|
|
9
|
-
import { cn } from "../../lib/utils.js";
|
|
10
|
-
function RichTextEditor({ value, onChange, placeholder, onFocus, onBlur, error }) {
|
|
11
|
-
const editor = useEditor({
|
|
12
|
-
immediatelyRender: false,
|
|
13
|
-
extensions: [
|
|
14
|
-
index_default$1.configure({
|
|
15
|
-
bulletList: {
|
|
16
|
-
keepMarks: true,
|
|
17
|
-
keepAttributes: false
|
|
18
|
-
},
|
|
19
|
-
orderedList: {
|
|
20
|
-
keepMarks: true,
|
|
21
|
-
keepAttributes: false
|
|
22
|
-
}
|
|
23
|
-
}),
|
|
24
|
-
index_default,
|
|
25
|
-
index_default$2.configure({
|
|
26
|
-
openOnClick: false,
|
|
27
|
-
autolink: true
|
|
28
|
-
}),
|
|
29
|
-
index_default$3.configure({
|
|
30
|
-
placeholder: placeholder || "Write something..."
|
|
31
|
-
})
|
|
32
|
-
],
|
|
33
|
-
content: value,
|
|
34
|
-
editorProps: {
|
|
35
|
-
attributes: {
|
|
36
|
-
class: cn(
|
|
37
|
-
"prose prose-sm max-w-none focus:outline-none min-h-[150px] p-3 text-sm text-gray-900",
|
|
38
|
-
error ? "border-none" : ""
|
|
39
|
-
)
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
onUpdate: ({ editor: editor2 }) => {
|
|
43
|
-
onChange(editor2.getHTML());
|
|
44
|
-
},
|
|
45
|
-
onFocus: () => {
|
|
46
|
-
if (onFocus) onFocus();
|
|
47
|
-
},
|
|
48
|
-
onBlur: () => {
|
|
49
|
-
if (onBlur) onBlur();
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
useEffect(() => {
|
|
53
|
-
if (editor && value !== editor.getHTML()) {
|
|
54
|
-
editor.commands.setContent(value);
|
|
55
|
-
}
|
|
56
|
-
}, [value, editor]);
|
|
57
|
-
if (!editor) {
|
|
58
|
-
return null;
|
|
59
|
-
}
|
|
60
|
-
const getBtnClass = (isActive) => cn(
|
|
61
|
-
"p-1.5 rounded hover:bg-gray-100 text-gray-500 transition-colors",
|
|
62
|
-
isActive ? "bg-gray-200 text-primaryx-600" : ""
|
|
63
|
-
);
|
|
64
|
-
return /* @__PURE__ */ jsxs("div", { className: cn(
|
|
65
|
-
"relative border bg-white rounded-lg transition-all overflow-hidden flex flex-col",
|
|
66
|
-
error ? "border-error-500" : "border-gray-300 hover:border-gray-400 focus-within:!border-primaryx-500 focus-within:ring-2 focus-within:ring-primaryx-500/20"
|
|
67
|
-
), children: [
|
|
68
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-1 p-2 border-b border-gray-200", children: [
|
|
69
|
-
/* @__PURE__ */ jsx(
|
|
70
|
-
"button",
|
|
71
|
-
{
|
|
72
|
-
type: "button",
|
|
73
|
-
onClick: () => editor.chain().focus().setParagraph().run(),
|
|
74
|
-
className: getBtnClass(editor.isActive("paragraph")),
|
|
75
|
-
title: "Paragraph",
|
|
76
|
-
children: /* @__PURE__ */ jsx(Type, { className: "w-4 h-4" })
|
|
77
|
-
}
|
|
78
|
-
),
|
|
79
|
-
/* @__PURE__ */ jsx(
|
|
80
|
-
"button",
|
|
81
|
-
{
|
|
82
|
-
type: "button",
|
|
83
|
-
onClick: () => editor.chain().focus().toggleHeading({ level: 2 }).run(),
|
|
84
|
-
className: getBtnClass(editor.isActive("heading", { level: 2 })),
|
|
85
|
-
title: "Heading 2",
|
|
86
|
-
children: /* @__PURE__ */ jsx(Heading1, { className: "w-4 h-4" })
|
|
87
|
-
}
|
|
88
|
-
),
|
|
89
|
-
/* @__PURE__ */ jsx("div", { className: "w-px h-4 bg-gray-300 mx-1" }),
|
|
90
|
-
/* @__PURE__ */ jsx(
|
|
91
|
-
"button",
|
|
92
|
-
{
|
|
93
|
-
type: "button",
|
|
94
|
-
onClick: () => editor.chain().focus().toggleBold().run(),
|
|
95
|
-
className: getBtnClass(editor.isActive("bold")),
|
|
96
|
-
title: "Bold",
|
|
97
|
-
children: /* @__PURE__ */ jsx(Bold, { className: "w-4 h-4" })
|
|
98
|
-
}
|
|
99
|
-
),
|
|
100
|
-
/* @__PURE__ */ jsx(
|
|
101
|
-
"button",
|
|
102
|
-
{
|
|
103
|
-
type: "button",
|
|
104
|
-
onClick: () => editor.chain().focus().toggleItalic().run(),
|
|
105
|
-
className: getBtnClass(editor.isActive("italic")),
|
|
106
|
-
title: "Italic",
|
|
107
|
-
children: /* @__PURE__ */ jsx(Italic, { className: "w-4 h-4" })
|
|
108
|
-
}
|
|
109
|
-
),
|
|
110
|
-
/* @__PURE__ */ jsx(
|
|
111
|
-
"button",
|
|
112
|
-
{
|
|
113
|
-
type: "button",
|
|
114
|
-
onClick: () => editor.chain().focus().toggleUnderline().run(),
|
|
115
|
-
className: getBtnClass(editor.isActive("underline")),
|
|
116
|
-
title: "Underline",
|
|
117
|
-
children: /* @__PURE__ */ jsx(Underline, { className: "w-4 h-4" })
|
|
118
|
-
}
|
|
119
|
-
),
|
|
120
|
-
/* @__PURE__ */ jsx(
|
|
121
|
-
"button",
|
|
122
|
-
{
|
|
123
|
-
type: "button",
|
|
124
|
-
onClick: () => editor.chain().focus().toggleStrike().run(),
|
|
125
|
-
className: getBtnClass(editor.isActive("strike")),
|
|
126
|
-
title: "Strikethrough",
|
|
127
|
-
children: /* @__PURE__ */ jsx(Strikethrough, { className: "w-4 h-4" })
|
|
128
|
-
}
|
|
129
|
-
),
|
|
130
|
-
/* @__PURE__ */ jsx("div", { className: "w-px h-4 bg-gray-300 mx-1" }),
|
|
131
|
-
/* @__PURE__ */ jsx(
|
|
132
|
-
"button",
|
|
133
|
-
{
|
|
134
|
-
type: "button",
|
|
135
|
-
onClick: () => editor.chain().focus().toggleBulletList().run(),
|
|
136
|
-
className: getBtnClass(editor.isActive("bulletList")),
|
|
137
|
-
title: "Bullet List",
|
|
138
|
-
children: /* @__PURE__ */ jsx(List, { className: "w-4 h-4" })
|
|
139
|
-
}
|
|
140
|
-
),
|
|
141
|
-
/* @__PURE__ */ jsx(
|
|
142
|
-
"button",
|
|
143
|
-
{
|
|
144
|
-
type: "button",
|
|
145
|
-
onClick: () => editor.chain().focus().toggleOrderedList().run(),
|
|
146
|
-
className: getBtnClass(editor.isActive("orderedList")),
|
|
147
|
-
title: "Numbered List",
|
|
148
|
-
children: /* @__PURE__ */ jsx(ListOrdered, { className: "w-4 h-4" })
|
|
149
|
-
}
|
|
150
|
-
),
|
|
151
|
-
/* @__PURE__ */ jsx("div", { className: "w-px h-4 bg-gray-300 mx-1" }),
|
|
152
|
-
/* @__PURE__ */ jsx(
|
|
153
|
-
"button",
|
|
154
|
-
{
|
|
155
|
-
type: "button",
|
|
156
|
-
onClick: () => editor.chain().focus().unsetAllMarks().run(),
|
|
157
|
-
className: getBtnClass(false),
|
|
158
|
-
title: "Clear Formatting",
|
|
159
|
-
children: /* @__PURE__ */ jsx(Eraser, { className: "w-4 h-4" })
|
|
160
|
-
}
|
|
161
|
-
),
|
|
162
|
-
/* @__PURE__ */ jsx("div", { className: "w-px h-4 bg-gray-300 mx-1" }),
|
|
163
|
-
/* @__PURE__ */ jsx(
|
|
164
|
-
"button",
|
|
165
|
-
{
|
|
166
|
-
type: "button",
|
|
167
|
-
onClick: () => editor.chain().focus().undo().run(),
|
|
168
|
-
disabled: !editor.can().undo(),
|
|
169
|
-
className: cn(getBtnClass(false), !editor.can().undo() ? "opacity-50 cursor-not-allowed" : ""),
|
|
170
|
-
title: "Undo",
|
|
171
|
-
children: /* @__PURE__ */ jsx(Undo, { className: "w-4 h-4" })
|
|
172
|
-
}
|
|
173
|
-
),
|
|
174
|
-
/* @__PURE__ */ jsx(
|
|
175
|
-
"button",
|
|
176
|
-
{
|
|
177
|
-
type: "button",
|
|
178
|
-
onClick: () => editor.chain().focus().redo().run(),
|
|
179
|
-
disabled: !editor.can().redo(),
|
|
180
|
-
className: cn(getBtnClass(false), !editor.can().redo() ? "opacity-50 cursor-not-allowed" : ""),
|
|
181
|
-
title: "Redo",
|
|
182
|
-
children: /* @__PURE__ */ jsx(Redo, { className: "w-4 h-4" })
|
|
183
|
-
}
|
|
184
|
-
)
|
|
185
|
-
] }),
|
|
186
|
-
/* @__PURE__ */ jsx(EditorContent, { editor, className: "flex-grow cursor-text" }),
|
|
187
|
-
/* @__PURE__ */ jsx("style", { children: `
|
|
188
|
-
.ProseMirror p.is-editor-empty:first-child::before {
|
|
189
|
-
content: attr(data-placeholder);
|
|
190
|
-
float: left;
|
|
191
|
-
color: #9ca3af;
|
|
192
|
-
pointer-events: none;
|
|
193
|
-
height: 0;
|
|
194
|
-
}
|
|
195
|
-
.ProseMirror p {
|
|
196
|
-
margin: 0;
|
|
197
|
-
line-height: 1.5;
|
|
198
|
-
}
|
|
199
|
-
.ProseMirror ul {
|
|
200
|
-
list-style-type: disc;
|
|
201
|
-
padding-left: 1.5rem;
|
|
202
|
-
margin: 0;
|
|
203
|
-
line-height: 1.5;
|
|
204
|
-
}
|
|
205
|
-
.ProseMirror ol {
|
|
206
|
-
list-style-type: decimal;
|
|
207
|
-
padding-left: 1.5rem;
|
|
208
|
-
margin: 0;
|
|
209
|
-
line-height: 1.5;
|
|
210
|
-
}
|
|
211
|
-
.ProseMirror h1 {
|
|
212
|
-
font-size: 1.875rem;
|
|
213
|
-
font-weight: 700;
|
|
214
|
-
margin-bottom: 0.5rem;
|
|
215
|
-
}
|
|
216
|
-
.ProseMirror h2 {
|
|
217
|
-
font-size: 1.5rem;
|
|
218
|
-
font-weight: 600;
|
|
219
|
-
margin-bottom: 0.5rem;
|
|
220
|
-
}
|
|
221
|
-
.ProseMirror h3 {
|
|
222
|
-
font-size: 1.25rem;
|
|
223
|
-
font-weight: 600;
|
|
224
|
-
margin-bottom: 0.5rem;
|
|
225
|
-
}
|
|
226
|
-
.ProseMirror a {
|
|
227
|
-
color: #3b82f6;
|
|
228
|
-
text-decoration: underline;
|
|
229
|
-
cursor: pointer;
|
|
230
|
-
}
|
|
231
|
-
.ProseMirror {
|
|
232
|
-
max-height: 50vh;
|
|
233
|
-
overflow-y: auto;
|
|
234
|
-
}
|
|
235
|
-
` })
|
|
236
|
-
] });
|
|
237
|
-
}
|
|
238
|
-
const RichTextEditor$1 = memo(RichTextEditor);
|
|
239
|
-
export {
|
|
240
|
-
RichTextEditor$1 as default
|
|
241
|
-
};
|
|
242
|
-
//# sourceMappingURL=RichTextEditor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RichTextEditor.js","sources":["../../../src/components/ui/RichTextEditor.tsx"],"sourcesContent":["'use client'\r\n\r\nimport React, { memo, useEffect, useState, useRef } from 'react'\r\nimport { useEditor, EditorContent } from '@tiptap/react'\r\nimport StarterKit from '@tiptap/starter-kit'\r\nimport Underline from '@tiptap/extension-underline'\r\nimport Link from '@tiptap/extension-link'\r\nimport Placeholder from '@tiptap/extension-placeholder'\r\nimport { Bold, Italic, Underline as UnderlineIcon, Strikethrough, List, ListOrdered, Eraser, Undo, Redo, Heading1, Heading2, Heading3, Type } from 'lucide-react'\r\nimport { cn } from '../../lib/utils'\r\n\r\ninterface RichTextEditorProps {\r\n value: string;\r\n onChange: (value: string) => void;\r\n placeholder?: string;\r\n onFocus?: () => void;\r\n onBlur?: () => void;\r\n error?: boolean;\r\n}\r\n\r\nfunction RichTextEditor({ value, onChange, placeholder, onFocus, onBlur, error }: RichTextEditorProps) {\r\n const editor = useEditor({\r\n immediatelyRender: false,\r\n extensions: [\r\n StarterKit.configure({\r\n bulletList: {\r\n keepMarks: true,\r\n keepAttributes: false,\r\n },\r\n orderedList: {\r\n keepMarks: true,\r\n keepAttributes: false,\r\n },\r\n }),\r\n Underline,\r\n Link.configure({\r\n openOnClick: false,\r\n autolink: true,\r\n }),\r\n Placeholder.configure({\r\n placeholder: placeholder || 'Write something...',\r\n })\r\n ],\r\n content: value,\r\n editorProps: {\r\n attributes: {\r\n class: cn(\r\n 'prose prose-sm max-w-none focus:outline-none min-h-[150px] p-3 text-sm text-gray-900',\r\n error ? 'border-none' : ''\r\n ),\r\n },\r\n },\r\n onUpdate: ({ editor }) => {\r\n onChange(editor.getHTML())\r\n },\r\n onFocus: () => {\r\n if (onFocus) onFocus()\r\n },\r\n onBlur: () => {\r\n if (onBlur) onBlur()\r\n }\r\n })\r\n\r\n useEffect(() => {\r\n if (editor && value !== editor.getHTML()) {\r\n editor.commands.setContent(value)\r\n }\r\n }, [value, editor])\r\n\r\n if (!editor) {\r\n return null\r\n }\r\n\r\n const setLink = () => {\r\n const previousUrl = editor.getAttributes('link').href\r\n const url = window.prompt('URL', previousUrl)\r\n\r\n if (url === null) {\r\n return\r\n }\r\n\r\n if (url === '') {\r\n editor.chain().focus().extendMarkRange('link').unsetLink().run()\r\n return\r\n }\r\n\r\n editor.chain().focus().extendMarkRange('link').setLink({ href: url }).run()\r\n }\r\n const getBtnClass = (isActive: boolean) => cn(\r\n \"p-1.5 rounded hover:bg-gray-100 text-gray-500 transition-colors\",\r\n isActive ? 'bg-gray-200 text-primaryx-600' : ''\r\n )\r\n\r\n return (\r\n <div className={cn(\r\n \"relative border bg-white rounded-lg transition-all overflow-hidden flex flex-col\",\r\n error ? \"border-error-500\" : \"border-gray-300 hover:border-gray-400 focus-within:!border-primaryx-500 focus-within:ring-2 focus-within:ring-primaryx-500/20\"\r\n )}>\r\n <div className=\"flex flex-wrap items-center gap-1 p-2 border-b border-gray-200\">\r\n <button\r\n type=\"button\"\r\n onClick={() => editor.chain().focus().setParagraph().run()}\r\n className={getBtnClass(editor.isActive('paragraph'))}\r\n title=\"Paragraph\"\r\n >\r\n <Type className=\"w-4 h-4\" />\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => editor.chain().focus().toggleHeading({ level: 2 }).run()}\r\n className={getBtnClass(editor.isActive('heading', { level: 2 }))}\r\n title=\"Heading 2\"\r\n >\r\n <Heading1 className=\"w-4 h-4\" />\r\n </button>\r\n <div className=\"w-px h-4 bg-gray-300 mx-1\" />\r\n <button\r\n type=\"button\"\r\n onClick={() => editor.chain().focus().toggleBold().run()}\r\n className={getBtnClass(editor.isActive('bold'))}\r\n title=\"Bold\"\r\n >\r\n <Bold className=\"w-4 h-4\" />\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => editor.chain().focus().toggleItalic().run()}\r\n className={getBtnClass(editor.isActive('italic'))}\r\n title=\"Italic\"\r\n >\r\n <Italic className=\"w-4 h-4\" />\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => editor.chain().focus().toggleUnderline().run()}\r\n className={getBtnClass(editor.isActive('underline'))}\r\n title=\"Underline\"\r\n >\r\n <UnderlineIcon className=\"w-4 h-4\" />\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => editor.chain().focus().toggleStrike().run()}\r\n className={getBtnClass(editor.isActive('strike'))}\r\n title=\"Strikethrough\"\r\n >\r\n <Strikethrough className=\"w-4 h-4\" />\r\n </button>\r\n <div className=\"w-px h-4 bg-gray-300 mx-1\" />\r\n <button\r\n type=\"button\"\r\n onClick={() => editor.chain().focus().toggleBulletList().run()}\r\n className={getBtnClass(editor.isActive('bulletList'))}\r\n title=\"Bullet List\"\r\n >\r\n <List className=\"w-4 h-4\" />\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => editor.chain().focus().toggleOrderedList().run()}\r\n className={getBtnClass(editor.isActive('orderedList'))}\r\n title=\"Numbered List\"\r\n >\r\n <ListOrdered className=\"w-4 h-4\" />\r\n </button>\r\n <div className=\"w-px h-4 bg-gray-300 mx-1\" />\r\n <button\r\n type=\"button\"\r\n onClick={() => editor.chain().focus().unsetAllMarks().run()}\r\n className={getBtnClass(false)}\r\n title=\"Clear Formatting\"\r\n >\r\n <Eraser className=\"w-4 h-4\" />\r\n </button>\r\n <div className=\"w-px h-4 bg-gray-300 mx-1\" />\r\n <button\r\n type=\"button\"\r\n onClick={() => editor.chain().focus().undo().run()}\r\n disabled={!editor.can().undo()}\r\n className={cn(getBtnClass(false), !editor.can().undo() ? 'opacity-50 cursor-not-allowed' : '')}\r\n title=\"Undo\"\r\n >\r\n <Undo className=\"w-4 h-4\" />\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => editor.chain().focus().redo().run()}\r\n disabled={!editor.can().redo()}\r\n className={cn(getBtnClass(false), !editor.can().redo() ? 'opacity-50 cursor-not-allowed' : '')}\r\n title=\"Redo\"\r\n >\r\n <Redo className=\"w-4 h-4\" />\r\n </button>\r\n </div>\r\n <EditorContent editor={editor} className=\"flex-grow cursor-text\" />\r\n <style>{`\r\n .ProseMirror p.is-editor-empty:first-child::before {\r\n content: attr(data-placeholder);\r\n float: left;\r\n color: #9ca3af;\r\n pointer-events: none;\r\n height: 0;\r\n }\r\n .ProseMirror p {\r\n margin: 0;\r\n line-height: 1.5;\r\n }\r\n .ProseMirror ul {\r\n list-style-type: disc;\r\n padding-left: 1.5rem;\r\n margin: 0;\r\n line-height: 1.5;\r\n }\r\n .ProseMirror ol {\r\n list-style-type: decimal;\r\n padding-left: 1.5rem;\r\n margin: 0;\r\n line-height: 1.5;\r\n }\r\n .ProseMirror h1 {\r\n font-size: 1.875rem;\r\n font-weight: 700;\r\n margin-bottom: 0.5rem;\r\n }\r\n .ProseMirror h2 {\r\n font-size: 1.5rem;\r\n font-weight: 600;\r\n margin-bottom: 0.5rem;\r\n }\r\n .ProseMirror h3 {\r\n font-size: 1.25rem;\r\n font-weight: 600;\r\n margin-bottom: 0.5rem;\r\n }\r\n .ProseMirror a {\r\n color: #3b82f6;\r\n text-decoration: underline;\r\n cursor: pointer;\r\n }\r\n .ProseMirror {\r\n max-height: 50vh;\r\n overflow-y: auto;\r\n }\r\n `}</style>\r\n </div>\r\n )\r\n}\r\n\r\n\r\nexport default memo(RichTextEditor)\r\n"],"names":["StarterKit","Underline","Link","Placeholder","editor","UnderlineIcon"],"mappings":"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"}
|
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useState, useRef, useEffect } from "react";
|
|
3
|
-
import { createPortal } from "react-dom";
|
|
4
|
-
import { Clock } from "lucide-react";
|
|
5
|
-
import { AnimatePresence, motion } from "framer-motion";
|
|
6
|
-
import { IMaskInput, IMask } from "react-imask";
|
|
7
|
-
import dayjs from "../../../node_modules/dayjs/dayjs.min.js";
|
|
8
|
-
import customParseFormat from "../../../node_modules/dayjs/plugin/customParseFormat.js";
|
|
9
|
-
import TimeSelector from "../TimeSelector/index.js";
|
|
10
|
-
dayjs.extend(customParseFormat);
|
|
11
|
-
const TimePicker = ({
|
|
12
|
-
value,
|
|
13
|
-
onChange,
|
|
14
|
-
placeholder = "--:-- --",
|
|
15
|
-
minTime,
|
|
16
|
-
maxTime,
|
|
17
|
-
disabled = false,
|
|
18
|
-
error,
|
|
19
|
-
className = "",
|
|
20
|
-
inputClassName = "",
|
|
21
|
-
position = "auto",
|
|
22
|
-
renderExtra,
|
|
23
|
-
onBlur,
|
|
24
|
-
step = 30
|
|
25
|
-
}) => {
|
|
26
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
27
|
-
const [coords, setCoords] = useState({ top: 0, left: 0, position: "bottom" });
|
|
28
|
-
const containerRef = useRef(null);
|
|
29
|
-
const triggerRef = useRef(null);
|
|
30
|
-
const popoverRef = useRef(null);
|
|
31
|
-
useEffect(() => {
|
|
32
|
-
const handleClickOutside = (event) => {
|
|
33
|
-
var _a, _b;
|
|
34
|
-
const target = event.target;
|
|
35
|
-
const isClickInsideContainer = (_a = containerRef.current) == null ? void 0 : _a.contains(target);
|
|
36
|
-
const isClickInsidePopover = (_b = popoverRef.current) == null ? void 0 : _b.contains(target);
|
|
37
|
-
if (!isClickInsideContainer && !isClickInsidePopover) {
|
|
38
|
-
setIsOpen(false);
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
if (isOpen) {
|
|
42
|
-
document.addEventListener("mousedown", handleClickOutside);
|
|
43
|
-
window.addEventListener("scroll", updatePosition, true);
|
|
44
|
-
window.addEventListener("resize", updatePosition);
|
|
45
|
-
}
|
|
46
|
-
return () => {
|
|
47
|
-
document.removeEventListener("mousedown", handleClickOutside);
|
|
48
|
-
window.removeEventListener("scroll", updatePosition, true);
|
|
49
|
-
window.removeEventListener("resize", updatePosition);
|
|
50
|
-
};
|
|
51
|
-
}, [isOpen]);
|
|
52
|
-
const updatePosition = () => {
|
|
53
|
-
if (triggerRef.current) {
|
|
54
|
-
const rect = triggerRef.current.getBoundingClientRect();
|
|
55
|
-
const spaceBelow = window.innerHeight - rect.bottom;
|
|
56
|
-
const spaceAbove = rect.top;
|
|
57
|
-
let position2 = "bottom";
|
|
58
|
-
if (spaceBelow < 300 && spaceAbove > 300) {
|
|
59
|
-
position2 = "top";
|
|
60
|
-
}
|
|
61
|
-
setCoords({
|
|
62
|
-
top: position2 === "bottom" ? rect.bottom + 8 : rect.top - 8,
|
|
63
|
-
left: rect.left,
|
|
64
|
-
position: position2
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
useEffect(() => {
|
|
69
|
-
if (isOpen) {
|
|
70
|
-
updatePosition();
|
|
71
|
-
}
|
|
72
|
-
}, [isOpen, position]);
|
|
73
|
-
const handleTimeSelect = (time) => {
|
|
74
|
-
onChange(time);
|
|
75
|
-
onBlur == null ? void 0 : onBlur();
|
|
76
|
-
};
|
|
77
|
-
const [inputValue, setInputValue] = useState("");
|
|
78
|
-
useEffect(() => {
|
|
79
|
-
if (value) {
|
|
80
|
-
setInputValue(dayjs(`2000-01-01 ${value}`).format("hh:mm A"));
|
|
81
|
-
} else {
|
|
82
|
-
setInputValue("");
|
|
83
|
-
}
|
|
84
|
-
}, [value]);
|
|
85
|
-
const handleInputBlur = () => {
|
|
86
|
-
if (value) {
|
|
87
|
-
setInputValue(dayjs(`2000-01-01 ${value}`).format("hh:mm A"));
|
|
88
|
-
} else {
|
|
89
|
-
setInputValue("");
|
|
90
|
-
}
|
|
91
|
-
onBlur == null ? void 0 : onBlur();
|
|
92
|
-
};
|
|
93
|
-
const toggleOpen = () => {
|
|
94
|
-
if (!disabled) {
|
|
95
|
-
if (!isOpen) {
|
|
96
|
-
updatePosition();
|
|
97
|
-
}
|
|
98
|
-
setIsOpen(!isOpen);
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
return /* @__PURE__ */ jsxs("div", { ref: containerRef, className: `relative w-full ${className}`, children: [
|
|
102
|
-
/* @__PURE__ */ jsxs(
|
|
103
|
-
"div",
|
|
104
|
-
{
|
|
105
|
-
ref: triggerRef,
|
|
106
|
-
className: `w-full h-10 px-3 flex items-center justify-between bg-white rounded-lg ease-in-out focus-within:ring-2 focus-within:ring-primaryx-500/20 focus-within:border-primaryx-500 transition-all duration-200 ${disabled ? "bg-grey-50 cursor-not-allowed opacity-60" : ""} ${error ? "ring-1 ring-error-500 text-error-900" : "input-border text-grey-700"} ${inputClassName}`,
|
|
107
|
-
onClick: () => {
|
|
108
|
-
if (!isOpen && !disabled) toggleOpen();
|
|
109
|
-
},
|
|
110
|
-
children: [
|
|
111
|
-
/* @__PURE__ */ jsx(
|
|
112
|
-
IMaskInput,
|
|
113
|
-
{
|
|
114
|
-
mask: "h:m p",
|
|
115
|
-
blocks: {
|
|
116
|
-
h: {
|
|
117
|
-
mask: IMask.MaskedRange,
|
|
118
|
-
from: 1,
|
|
119
|
-
to: 12,
|
|
120
|
-
maxLength: 2
|
|
121
|
-
},
|
|
122
|
-
m: {
|
|
123
|
-
mask: IMask.MaskedRange,
|
|
124
|
-
from: 0,
|
|
125
|
-
to: 59,
|
|
126
|
-
maxLength: 2
|
|
127
|
-
},
|
|
128
|
-
p: {
|
|
129
|
-
mask: IMask.MaskedEnum,
|
|
130
|
-
enum: ["AM", "PM", "am", "pm"]
|
|
131
|
-
}
|
|
132
|
-
},
|
|
133
|
-
autofix: true,
|
|
134
|
-
lazy: false,
|
|
135
|
-
value: inputValue,
|
|
136
|
-
onAccept: (val) => {
|
|
137
|
-
setInputValue(val);
|
|
138
|
-
if (val.includes("_")) return;
|
|
139
|
-
let time = dayjs(val.toUpperCase(), "hh:mm A", true);
|
|
140
|
-
if (time.isValid()) {
|
|
141
|
-
if (step) {
|
|
142
|
-
const m = time.minute();
|
|
143
|
-
const roundedM = Math.round(m / step) * step;
|
|
144
|
-
if (roundedM === 60) {
|
|
145
|
-
time = time.add(1, "hour").minute(0);
|
|
146
|
-
} else {
|
|
147
|
-
time = time.minute(roundedM);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
let time24 = time.format("HH:mm");
|
|
151
|
-
if (minTime && time24 < minTime || maxTime && time24 > maxTime) {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
if (time24 !== value) {
|
|
155
|
-
onChange(time24);
|
|
156
|
-
}
|
|
157
|
-
} else if (!val && value) {
|
|
158
|
-
onChange("");
|
|
159
|
-
}
|
|
160
|
-
},
|
|
161
|
-
onBlur: handleInputBlur,
|
|
162
|
-
onFocus: () => {
|
|
163
|
-
if (!isOpen && !disabled) toggleOpen();
|
|
164
|
-
},
|
|
165
|
-
placeholder,
|
|
166
|
-
disabled,
|
|
167
|
-
className: "imask-input w-full h-full bg-transparent border-none outline-none focus:border-none focus:outline-none focus:border-none! focus:outline-none! focus:ring-0 focus:ring-0! ring-0 text-sm placeholder-grey-400 uppercase font-medium px-0"
|
|
168
|
-
}
|
|
169
|
-
),
|
|
170
|
-
/* @__PURE__ */ jsx("button", { type: "button", onClick: (e) => {
|
|
171
|
-
e.stopPropagation();
|
|
172
|
-
toggleOpen();
|
|
173
|
-
}, className: "focus:outline-none", children: /* @__PURE__ */ jsx(Clock, { className: `w-4 h-4 ${!value ? "text-grey-400" : "text-grey-600"}` }) })
|
|
174
|
-
]
|
|
175
|
-
}
|
|
176
|
-
),
|
|
177
|
-
typeof document !== "undefined" && createPortal(
|
|
178
|
-
/* @__PURE__ */ jsx(AnimatePresence, { children: isOpen && /* @__PURE__ */ jsx(
|
|
179
|
-
motion.div,
|
|
180
|
-
{
|
|
181
|
-
ref: popoverRef,
|
|
182
|
-
initial: { opacity: 0, y: coords.position === "bottom" ? -10 : 10, scale: 0.95 },
|
|
183
|
-
animate: { opacity: 1, y: 0, scale: 1 },
|
|
184
|
-
exit: { opacity: 0, y: coords.position === "bottom" ? -10 : 10, scale: 0.95 },
|
|
185
|
-
transition: { duration: 0.15 },
|
|
186
|
-
style: {
|
|
187
|
-
position: "fixed",
|
|
188
|
-
top: coords.top,
|
|
189
|
-
left: coords.left,
|
|
190
|
-
zIndex: 99999,
|
|
191
|
-
transformOrigin: coords.position === "bottom" ? "top left" : "bottom left"
|
|
192
|
-
},
|
|
193
|
-
className: `p-1 w-max ${coords.position === "top" ? "-translate-y-full" : ""}`,
|
|
194
|
-
children: /* @__PURE__ */ jsx(
|
|
195
|
-
TimeSelector,
|
|
196
|
-
{
|
|
197
|
-
value,
|
|
198
|
-
onChange: handleTimeSelect,
|
|
199
|
-
minTime,
|
|
200
|
-
maxTime,
|
|
201
|
-
renderExtra,
|
|
202
|
-
className: "shadow-xl",
|
|
203
|
-
step
|
|
204
|
-
}
|
|
205
|
-
)
|
|
206
|
-
}
|
|
207
|
-
) }),
|
|
208
|
-
document.body
|
|
209
|
-
)
|
|
210
|
-
] });
|
|
211
|
-
};
|
|
212
|
-
export {
|
|
213
|
-
TimePicker as default
|
|
214
|
-
};
|
|
215
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/components/ui/TimePicker/index.tsx"],"sourcesContent":["\"use client\";\r\n\r\nimport React, { useState, useRef, useEffect } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { Clock } from \"lucide-react\";\r\nimport { AnimatePresence, motion } from \"framer-motion\";\r\nimport { IMaskInput, IMask } from 'react-imask';\r\nimport dayjs from \"dayjs\";\r\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\r\nimport TimeSelector from \"@/components/ui/TimeSelector\";\r\nimport { cn } from \"@/lib/utils\";\r\n\r\ndayjs.extend(customParseFormat);\r\n\r\ninterface TimePickerProps {\r\n value?: string;\r\n onChange: (time: string) => void;\r\n placeholder?: string;\r\n minTime?: string;\r\n maxTime?: string;\r\n disabled?: boolean;\r\n error?: string;\r\n className?: string;\r\n inputClassName?: string;\r\n position?: 'top' | 'bottom' | 'auto';\r\n renderExtra?: (time: string) => React.ReactNode;\r\n onBlur?: () => void;\r\n step?: number;\r\n}\r\n\r\nconst TimePicker = ({\r\n value,\r\n onChange,\r\n placeholder = \"--:-- --\",\r\n minTime,\r\n maxTime,\r\n disabled = false,\r\n error,\r\n className = \"\",\r\n inputClassName = \"\",\r\n position = \"auto\",\r\n renderExtra,\r\n onBlur,\r\n step = 30\r\n}: TimePickerProps) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [coords, setCoords] = useState<{ top: number; left: number; position: 'top' | 'bottom' }>({ top: 0, left: 0, position: 'bottom' });\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const triggerRef = useRef<HTMLDivElement>(null);\r\n const popoverRef = useRef<HTMLDivElement>(null);\r\n\r\n // Close when clicking outside\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n const target = event.target as Node;\r\n const isClickInsideContainer = containerRef.current?.contains(target);\r\n const isClickInsidePopover = popoverRef.current?.contains(target);\r\n\r\n if (!isClickInsideContainer && !isClickInsidePopover) {\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 spaceBelow = window.innerHeight - rect.bottom;\r\n const spaceAbove = rect.top;\r\n\r\n // Prefer bottom, unless limited space\r\n let position: 'top' | 'bottom' = 'bottom';\r\n if (spaceBelow < 300 && spaceAbove > 300) {\r\n position = 'top';\r\n }\r\n\r\n setCoords({\r\n top: position === 'bottom' ? rect.bottom + 8 : rect.top - 8,\r\n left: rect.left,\r\n position\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (isOpen) {\r\n updatePosition();\r\n }\r\n }, [isOpen, position]);\r\n\r\n const handleTimeSelect = (time: string) => {\r\n onChange(time);\r\n // Popover stays open as per user request\r\n onBlur?.();\r\n };\r\n\r\n const [inputValue, setInputValue] = useState(\"\");\r\n\r\n useEffect(() => {\r\n if (value) {\r\n setInputValue(dayjs(`2000-01-01 ${value}`).format('hh:mm A'));\r\n } else {\r\n setInputValue(\"\");\r\n }\r\n }, [value]);\r\n\r\n const handleInputBlur = () => {\r\n if (value) {\r\n setInputValue(dayjs(`2000-01-01 ${value}`).format('hh:mm A'));\r\n } else {\r\n setInputValue(\"\");\r\n }\r\n onBlur?.();\r\n };\r\n\r\n const toggleOpen = () => {\r\n if (!disabled) {\r\n if (!isOpen) {\r\n updatePosition();\r\n }\r\n setIsOpen(!isOpen);\r\n }\r\n };\r\n\r\n return (\r\n <div ref={containerRef} className={`relative w-full ${className}`}>\r\n <div\r\n ref={triggerRef}\r\n className={`w-full h-10 px-3 flex items-center justify-between bg-white rounded-lg ease-in-out focus-within:ring-2 focus-within:ring-primaryx-500/20 focus-within:border-primaryx-500 transition-all duration-200 ${disabled ? 'bg-grey-50 cursor-not-allowed opacity-60' : ''\r\n } ${error\r\n ? 'ring-1 ring-error-500 text-error-900'\r\n : 'input-border text-grey-700'\r\n } ${inputClassName}`}\r\n onClick={() => {\r\n // Open on click (matches DatePicker behavior)\r\n if (!isOpen && !disabled) toggleOpen();\r\n }}\r\n >\r\n <IMaskInput\r\n mask=\"h:m p\"\r\n blocks={{\r\n h: {\r\n mask: IMask.MaskedRange,\r\n from: 1,\r\n to: 12,\r\n maxLength: 2,\r\n },\r\n m: {\r\n mask: IMask.MaskedRange,\r\n from: 0,\r\n to: 59,\r\n maxLength: 2,\r\n },\r\n p: {\r\n mask: IMask.MaskedEnum,\r\n enum: ['AM', 'PM', 'am', 'pm']\r\n }\r\n }}\r\n autofix={true}\r\n lazy={false} // Visible mask\r\n value={inputValue}\r\n onAccept={(val: string) => {\r\n setInputValue(val);\r\n // Don't try to parse if there are placeholders (not fully typed)\r\n if (val.includes('_')) return;\r\n\r\n // Parse normalized value (uppercase for AM/PM)\r\n let time = dayjs(val.toUpperCase(), \"hh:mm A\", true);\r\n\r\n if (time.isValid()) {\r\n // Strict Snapping\r\n if (step) {\r\n const m = time.minute();\r\n const roundedM = Math.round(m / step) * step;\r\n if (roundedM === 60) {\r\n time = time.add(1, 'hour').minute(0);\r\n } else {\r\n time = time.minute(roundedM);\r\n }\r\n }\r\n\r\n let time24 = time.format(\"HH:mm\");\r\n\r\n // If user typed a disabled time, DO NOT fire onChange.\r\n // The onBlur handler will revert the input back to the last valid selection.\r\n if ((minTime && time24 < minTime) || (maxTime && time24 > maxTime)) {\r\n return;\r\n }\r\n\r\n if (time24 !== value) {\r\n onChange(time24);\r\n }\r\n } else if (!val && value) {\r\n // Handle full deletion\r\n onChange(\"\");\r\n }\r\n }}\r\n onBlur={handleInputBlur}\r\n onFocus={() => {\r\n // Open on focus\r\n if (!isOpen && !disabled) toggleOpen();\r\n }}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n className=\"imask-input w-full h-full bg-transparent border-none outline-none focus:border-none focus:outline-none focus:border-none! focus:outline-none! focus:ring-0 focus:ring-0! ring-0 text-sm placeholder-grey-400 uppercase font-medium px-0\"\r\n />\r\n\r\n <button type=\"button\" onClick={(e) => { e.stopPropagation(); toggleOpen(); }} className=\"focus:outline-none\">\r\n <Clock className={`w-4 h-4 ${!value ? \"text-grey-400\" : \"text-grey-600\"}`} />\r\n </button>\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: coords.position === 'bottom' ? -10 : 10, scale: 0.95 }}\r\n animate={{ opacity: 1, y: 0, scale: 1 }}\r\n exit={{ opacity: 0, y: coords.position === 'bottom' ? -10 : 10, scale: 0.95 }}\r\n transition={{ duration: 0.15 }}\r\n style={{\r\n position: 'fixed',\r\n top: coords.top,\r\n left: coords.left,\r\n zIndex: 99999,\r\n transformOrigin: coords.position === 'bottom' ? 'top left' : 'bottom left'\r\n }}\r\n className={`p-1 w-max ${coords.position === 'top' ? '-translate-y-full' : ''}`}\r\n >\r\n <TimeSelector\r\n value={value}\r\n onChange={handleTimeSelect}\r\n minTime={minTime}\r\n maxTime={maxTime}\r\n renderExtra={renderExtra}\r\n className=\"shadow-xl\"\r\n step={step}\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 TimePicker;\r\n"],"names":["position"],"mappings":"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"}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { memo, useRef, useEffect } from "react";
|
|
3
|
-
import { cn } from "../../../lib/utils.js";
|
|
4
|
-
import Tooltip from "../Tooltip.js";
|
|
5
|
-
const formatTo12HourParts = (time) => {
|
|
6
|
-
if (typeof time !== "string" || time === "Invalid Date" || time.includes("undefined")) {
|
|
7
|
-
return { hour: "12", minute: "00", period: "AM" };
|
|
8
|
-
}
|
|
9
|
-
const parts = time.split(":");
|
|
10
|
-
const h = Number(parts[0]);
|
|
11
|
-
const m = parts.length > 1 ? Number(parts[1]) : 0;
|
|
12
|
-
const period = h >= 12 ? "PM" : "AM";
|
|
13
|
-
const hour12 = h % 12 || 12;
|
|
14
|
-
return {
|
|
15
|
-
hour: String(hour12),
|
|
16
|
-
minute: String(m || 0).padStart(2, "0"),
|
|
17
|
-
period
|
|
18
|
-
};
|
|
19
|
-
};
|
|
20
|
-
const TimeSelector = ({
|
|
21
|
-
value,
|
|
22
|
-
onChange,
|
|
23
|
-
minTime,
|
|
24
|
-
maxTime,
|
|
25
|
-
className,
|
|
26
|
-
renderExtra,
|
|
27
|
-
step = 30
|
|
28
|
-
}) => {
|
|
29
|
-
const parts = formatTo12HourParts(value || "12:00");
|
|
30
|
-
const hours = Array.from({ length: 12 }, (_, i) => String(i + 1));
|
|
31
|
-
const minutes = Array.from({ length: 60 / step }, (_, i) => String(i * step).padStart(2, "0"));
|
|
32
|
-
const periods = ["AM", "PM"];
|
|
33
|
-
const parentScrollRef = useRef(null);
|
|
34
|
-
useEffect(() => {
|
|
35
|
-
const scrollToSelected = () => {
|
|
36
|
-
const container = parentScrollRef.current;
|
|
37
|
-
if (!container) return;
|
|
38
|
-
const selectedElement = container.querySelector(`[data-type="hour"][data-value="${parts.hour}"]`);
|
|
39
|
-
if (selectedElement) {
|
|
40
|
-
const centerOffset = selectedElement.offsetTop - container.clientHeight / 2 + selectedElement.clientHeight / 2;
|
|
41
|
-
container.scrollTop = centerOffset;
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
const timer = setTimeout(scrollToSelected, 100);
|
|
45
|
-
return () => clearTimeout(timer);
|
|
46
|
-
}, [value, parts.hour]);
|
|
47
|
-
const handlePartChange = (type, newValue) => {
|
|
48
|
-
let { hour, minute, period } = parts;
|
|
49
|
-
if (type === "hour") hour = newValue;
|
|
50
|
-
if (type === "minute") minute = newValue;
|
|
51
|
-
if (type === "period") period = newValue;
|
|
52
|
-
let h = parseInt(hour);
|
|
53
|
-
if (period === "PM" && h !== 12) h += 12;
|
|
54
|
-
if (period === "AM" && h === 12) h = 0;
|
|
55
|
-
const time24 = `${String(h).padStart(2, "0")}:${minute}`;
|
|
56
|
-
onChange(time24);
|
|
57
|
-
};
|
|
58
|
-
const isSlotDisabled = (type, val) => {
|
|
59
|
-
if (!minTime && !maxTime) return false;
|
|
60
|
-
let { hour, minute, period } = parts;
|
|
61
|
-
if (type === "hour") hour = val;
|
|
62
|
-
if (type === "minute") minute = val;
|
|
63
|
-
if (type === "period") period = val;
|
|
64
|
-
let h = parseInt(hour);
|
|
65
|
-
if (period === "PM" && h !== 12) h += 12;
|
|
66
|
-
if (period === "AM" && h === 12) h = 0;
|
|
67
|
-
const time24 = `${String(h).padStart(2, "0")}:${minute}`;
|
|
68
|
-
if (minTime && time24 < minTime) return true;
|
|
69
|
-
if (maxTime && time24 > maxTime) return true;
|
|
70
|
-
return false;
|
|
71
|
-
};
|
|
72
|
-
const renderColumn = (title, items, currentVal, type, isSticky = false) => /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col flex-1 min-w-[70px]", isSticky && "sticky top-0 h-fit bg-white z-20 pb-2"), children: [
|
|
73
|
-
/* @__PURE__ */ jsx("div", { className: "text-[10px] uppercase font-bold text-grey-400 px-2 mb-2 text-center tracking-wider", children: title }),
|
|
74
|
-
/* @__PURE__ */ jsx(
|
|
75
|
-
"div",
|
|
76
|
-
{
|
|
77
|
-
className: "flex-1 p-1 space-y-1 relative",
|
|
78
|
-
children: items.map((item) => {
|
|
79
|
-
const isSelected = currentVal === item;
|
|
80
|
-
const disabled = isSlotDisabled(type, item);
|
|
81
|
-
const button = /* @__PURE__ */ jsx(
|
|
82
|
-
"button",
|
|
83
|
-
{
|
|
84
|
-
"data-value": item,
|
|
85
|
-
"data-type": type,
|
|
86
|
-
type: "button",
|
|
87
|
-
disabled,
|
|
88
|
-
onClick: () => !disabled && handlePartChange(type, item),
|
|
89
|
-
className: cn(
|
|
90
|
-
"w-full py-2 text-sm rounded-lg transition-all duration-200",
|
|
91
|
-
isSelected ? "bg-primaryx-500 text-white font-bold shadow-md" : disabled ? "text-grey-300 cursor-not-allowed opacity-40" : "text-grey-600 hover:bg-grey-100"
|
|
92
|
-
),
|
|
93
|
-
children: item
|
|
94
|
-
},
|
|
95
|
-
item
|
|
96
|
-
);
|
|
97
|
-
if (disabled) {
|
|
98
|
-
return /* @__PURE__ */ jsx(Tooltip, { content: type === "hour" ? "Hour is outside allowed range" : "Time slot unavailable", placement: "right", children: button }, item);
|
|
99
|
-
}
|
|
100
|
-
return button;
|
|
101
|
-
})
|
|
102
|
-
}
|
|
103
|
-
)
|
|
104
|
-
] });
|
|
105
|
-
const getFinalTime24 = () => {
|
|
106
|
-
let h = parseInt(parts.hour);
|
|
107
|
-
if (parts.period === "PM" && h !== 12) h += 12;
|
|
108
|
-
if (parts.period === "AM" && h === 12) h = 0;
|
|
109
|
-
return `${String(h).padStart(2, "0")}:${parts.minute}`;
|
|
110
|
-
};
|
|
111
|
-
return /* @__PURE__ */ jsxs("div", { className: cn("bg-white rounded-2xl shadow-2xl border border-grey-200 w-[260px] flex flex-col overflow-hidden z-50", className), children: [
|
|
112
|
-
/* @__PURE__ */ jsxs("div", { ref: parentScrollRef, className: "flex p-2 pr-3 border-b border-grey-100 max-h-[280px] overflow-y-auto overflow-x-hidden bg-white relative", children: [
|
|
113
|
-
renderColumn("Hour", hours, parts.hour, "hour", false),
|
|
114
|
-
/* @__PURE__ */ jsx("div", { className: "w-px bg-grey-100 my-4 shrink-0 mx-1" }),
|
|
115
|
-
renderColumn("Min", minutes, parts.minute, "minute", true),
|
|
116
|
-
/* @__PURE__ */ jsx("div", { className: "w-px bg-grey-100 my-4 shrink-0 mx-1" }),
|
|
117
|
-
renderColumn("Period", periods, parts.period, "period", true)
|
|
118
|
-
] }),
|
|
119
|
-
/* @__PURE__ */ jsxs("div", { className: "bg-grey-50 p-3 flex items-center justify-between border-t border-grey-100", children: [
|
|
120
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
|
|
121
|
-
/* @__PURE__ */ jsx("span", { className: "text-[10px] text-grey-400 font-bold uppercase tracking-tight", children: "Selection" }),
|
|
122
|
-
/* @__PURE__ */ jsxs("span", { className: "text-sm font-extrabold text-primaryx-600", children: [
|
|
123
|
-
parts.hour,
|
|
124
|
-
":",
|
|
125
|
-
parts.minute,
|
|
126
|
-
" ",
|
|
127
|
-
parts.period
|
|
128
|
-
] })
|
|
129
|
-
] }),
|
|
130
|
-
renderExtra && /* @__PURE__ */ jsx("div", { className: "text-[11px] font-bold text-grey-500 bg-white px-2.5 py-1.5 rounded-full border border-grey-200 shadow-sm animate-in fade-in zoom-in duration-300", children: renderExtra(getFinalTime24()) })
|
|
131
|
-
] })
|
|
132
|
-
] });
|
|
133
|
-
};
|
|
134
|
-
const TimeSelector$1 = memo(TimeSelector);
|
|
135
|
-
export {
|
|
136
|
-
TimeSelector$1 as default
|
|
137
|
-
};
|
|
138
|
-
//# sourceMappingURL=index.js.map
|