@123usmanhaider321/ui 0.1.8 → 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.
Files changed (545) hide show
  1. package/README.md +416 -31
  2. package/dist/images/icon/1LINK.svg +50 -0
  3. package/dist/images/icon/CreditCard.svg +83 -0
  4. package/dist/images/icon/Easypaisa.png +0 -0
  5. package/dist/images/icon/MobileWallet.png +0 -0
  6. package/dist/images/icon/Raast-Logo.png +0 -0
  7. package/dist/images/icon/VISA.png +0 -0
  8. package/dist/images/icon/add-circle-1.svg +5 -0
  9. package/dist/images/icon/check-circle-broken.svg +3 -0
  10. package/dist/images/icon/close-circle.svg +5 -0
  11. package/dist/images/icon/jazzcash.png +0 -0
  12. package/dist/images/icon/loading_icon.json +3347 -0
  13. package/dist/images/icon/mastercard-logo.webp +0 -0
  14. package/dist/images/icon/paymo.jpeg +0 -0
  15. package/dist/images/icon/preview-svgrepo-com.svg +36 -0
  16. package/dist/images/icon/trash.svg +7 -0
  17. package/dist/images/icon/unionpay-logo.svg +9 -0
  18. package/dist/index-87FQZHOs.js +11119 -0
  19. package/dist/index-87FQZHOs.js.map +1 -0
  20. package/dist/index-Tl9g213f.js +60475 -0
  21. package/dist/index-Tl9g213f.js.map +1 -0
  22. package/dist/index.d.ts +1 -10
  23. package/dist/index.es-CpgTaa1Y.js +16734 -0
  24. package/dist/index.es-CpgTaa1Y.js.map +1 -0
  25. package/dist/index.js +40 -12
  26. package/dist/index.js.map +1 -1
  27. package/dist/loading_icon-n5H5dQBl.js +3375 -0
  28. package/dist/loading_icon-n5H5dQBl.js.map +1 -0
  29. package/dist/src/components/Alert/ErrorAlert.d.ts +6 -0
  30. package/dist/src/components/Alert/SuccessAlert.d.ts +6 -0
  31. package/dist/{components → src/components}/FormBuilder/DiscountInput.d.ts +3 -6
  32. package/dist/{components → src/components}/FormBuilder/FormBuilder.d.ts +2 -11
  33. package/dist/{components → src/components}/FormBuilder/QuestionCard.d.ts +0 -5
  34. package/dist/{components → src/components}/FormBuilder/QuestionEditor.d.ts +0 -5
  35. package/dist/{components → src/components}/FormBuilder/SortableQuestionList.d.ts +0 -5
  36. package/dist/src/components/FormBuilder/questionIcons.d.ts +5 -0
  37. package/dist/{components/EventAddForm → src/components/NewAddEvent}/AddEventLayout.d.ts +2 -1
  38. package/dist/{components/EventAddForm → src/components/NewAddEvent}/AddEventStepper.d.ts +2 -2
  39. package/dist/{components/EventAddForm → src/components/NewAddEvent}/common/ConfirmationModal.d.ts +1 -1
  40. package/dist/src/components/NewAddEvent/components/EventSubmissionConfirmationModal.d.ts +14 -0
  41. package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/StepTwo/TicketTierSection.d.ts +1 -1
  42. package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/TicketTierForm.d.ts +1 -1
  43. package/dist/{components/EventAddForm → src/components/NewAddEvent}/hooks/useStepperForm.d.ts +22 -22
  44. package/dist/{components/EventAddForm → src/components/NewAddEvent}/hooks/useTicketTierForm.d.ts +63 -15
  45. package/dist/src/components/NewAddEvent/schemas/step1.d.ts +211 -0
  46. package/dist/src/components/NewAddEvent/schemas/step2.d.ts +411 -0
  47. package/dist/{components/EventAddForm → src/components/NewAddEvent}/schemas/utils.d.ts +8 -2
  48. package/dist/{components/EventAddForm → src/components/NewAddEvent}/steps/IndividualFormStep.d.ts +1 -1
  49. package/dist/{components/EventAddForm → src/components/NewAddEvent}/steps/SocialProfilesStep.d.ts +1 -1
  50. package/dist/{components/EventAddForm → src/components/NewAddEvent}/steps/TeamFormStep.d.ts +1 -1
  51. package/dist/src/components/Spinner/spinner.d.ts +4 -0
  52. package/dist/src/components/TicketlyUIProvider.d.ts +35 -0
  53. package/dist/src/components/common/Loader/index.d.ts +8 -0
  54. package/dist/src/components/common/Modals/ConfirmationModal.d.ts +7 -0
  55. package/dist/{components/FormInput → src/components/ui}/FormInput.d.ts +1 -1
  56. package/dist/src/components/ui/Loader.d.ts +4 -0
  57. package/dist/{components/Button/Button.d.ts → src/components/ui/button.d.ts} +1 -1
  58. package/dist/src/index.d.ts +10 -0
  59. package/dist/{lib → src/lib}/actions.d.ts +0 -126
  60. package/dist/src/lib/dom-utils.d.ts +2 -0
  61. package/dist/src/lib/storage-utils.d.ts +5 -0
  62. package/dist/src/lib/types.d.ts +258 -0
  63. package/dist/src/redux/baseQuery.d.ts +16 -0
  64. package/dist/{services → src/redux/features}/eventApi.d.ts +1053 -1745
  65. package/dist/src/redux/features/globalSlice.d.ts +17 -0
  66. package/dist/{services → src/redux/features/single-event}/single-event-api.d.ts +856 -1190
  67. package/dist/src/redux/types.d.ts +2 -0
  68. package/dist/src/services/library-services.d.ts +15 -0
  69. package/dist/src/services/remote-config.d.ts +27 -0
  70. package/dist/{services → src/services}/utils.d.ts +1 -1
  71. package/dist/src/theme/colors.d.ts +127 -0
  72. package/dist/src/theme/typography.d.ts +13 -0
  73. package/dist/src/types/api.d.ts +18 -0
  74. package/dist/style.css +2984 -0
  75. package/dist/styles.css +3758 -4012
  76. package/package.json +78 -68
  77. package/dist/_virtual/_commonjsHelpers.js +0 -9
  78. package/dist/_virtual/_commonjsHelpers.js.map +0 -1
  79. package/dist/_virtual/customParseFormat.js +0 -5
  80. package/dist/_virtual/customParseFormat.js.map +0 -1
  81. package/dist/_virtual/dayjs.min.js +0 -5
  82. package/dist/_virtual/dayjs.min.js.map +0 -1
  83. package/dist/_virtual/duration.js +0 -5
  84. package/dist/_virtual/duration.js.map +0 -1
  85. package/dist/_virtual/index.js +0 -5
  86. package/dist/_virtual/index.js.map +0 -1
  87. package/dist/_virtual/isBetween.js +0 -5
  88. package/dist/_virtual/isBetween.js.map +0 -1
  89. package/dist/_virtual/relativeTime.js +0 -5
  90. package/dist/_virtual/relativeTime.js.map +0 -1
  91. package/dist/_virtual/use-sync-external-store-shim.development.js +0 -5
  92. package/dist/_virtual/use-sync-external-store-shim.development.js.map +0 -1
  93. package/dist/_virtual/use-sync-external-store-shim.production.js +0 -5
  94. package/dist/_virtual/use-sync-external-store-shim.production.js.map +0 -1
  95. package/dist/_virtual/with-selector.development.js +0 -5
  96. package/dist/_virtual/with-selector.development.js.map +0 -1
  97. package/dist/_virtual/with-selector.js +0 -5
  98. package/dist/_virtual/with-selector.js.map +0 -1
  99. package/dist/_virtual/with-selector.production.js +0 -5
  100. package/dist/_virtual/with-selector.production.js.map +0 -1
  101. package/dist/components/Alert/Alert.js +0 -51
  102. package/dist/components/Alert/Alert.js.map +0 -1
  103. package/dist/components/Button/Button.js +0 -52
  104. package/dist/components/Button/Button.js.map +0 -1
  105. package/dist/components/Button/Button.test.d.ts +0 -1
  106. package/dist/components/Button/index.d.ts +0 -1
  107. package/dist/components/Checkbox/Checkbox.js +0 -50
  108. package/dist/components/Checkbox/Checkbox.js.map +0 -1
  109. package/dist/components/Checkbox/Checkbox.test.d.ts +0 -1
  110. package/dist/components/Checkbox/index.d.ts +0 -1
  111. package/dist/components/CheckboxGroup/CheckboxGroup.d.ts +0 -25
  112. package/dist/components/CheckboxGroup/CheckboxGroup.js +0 -99
  113. package/dist/components/CheckboxGroup/CheckboxGroup.js.map +0 -1
  114. package/dist/components/ConfirmationModal/ConfirmationModal.d.ts +0 -15
  115. package/dist/components/ConfirmationModal/ConfirmationModal.js +0 -136
  116. package/dist/components/ConfirmationModal/ConfirmationModal.js.map +0 -1
  117. package/dist/components/ConfirmationModal/index.d.ts +0 -2
  118. package/dist/components/CustomSelect/CustomSelect.js +0 -259
  119. package/dist/components/CustomSelect/CustomSelect.js.map +0 -1
  120. package/dist/components/EventAddForm/AddEventLayout.js +0 -227
  121. package/dist/components/EventAddForm/AddEventLayout.js.map +0 -1
  122. package/dist/components/EventAddForm/AddEventStepper.js +0 -719
  123. package/dist/components/EventAddForm/AddEventStepper.js.map +0 -1
  124. package/dist/components/EventAddForm/common/ConfirmationModal.js +0 -136
  125. package/dist/components/EventAddForm/common/ConfirmationModal.js.map +0 -1
  126. package/dist/components/EventAddForm/common/DescriptionModal.js +0 -70
  127. package/dist/components/EventAddForm/common/DescriptionModal.js.map +0 -1
  128. package/dist/components/EventAddForm/components/AnimatedBackground.d.ts +0 -8
  129. package/dist/components/EventAddForm/components/ApprovalConfirmationModal.d.ts +0 -7
  130. package/dist/components/EventAddForm/components/CheckboxGroup.js +0 -92
  131. package/dist/components/EventAddForm/components/CheckboxGroup.js.map +0 -1
  132. package/dist/components/EventAddForm/components/CustomMeetingForm.js +0 -237
  133. package/dist/components/EventAddForm/components/CustomMeetingForm.js.map +0 -1
  134. package/dist/components/EventAddForm/components/DateTimeField.js +0 -173
  135. package/dist/components/EventAddForm/components/DateTimeField.js.map +0 -1
  136. package/dist/components/EventAddForm/components/EventSubmissionConfirmationModal.d.ts +0 -33
  137. package/dist/components/EventAddForm/components/EventSubmissionConfirmationModal.js +0 -366
  138. package/dist/components/EventAddForm/components/EventSubmissionConfirmationModal.js.map +0 -1
  139. package/dist/components/EventAddForm/components/FileUpload.js +0 -412
  140. package/dist/components/EventAddForm/components/FileUpload.js.map +0 -1
  141. package/dist/components/EventAddForm/components/FormBuilderProceedModal.js +0 -197
  142. package/dist/components/EventAddForm/components/FormBuilderProceedModal.js.map +0 -1
  143. package/dist/components/EventAddForm/components/GoogleMapsAutocompleteInput.js +0 -1179
  144. package/dist/components/EventAddForm/components/GoogleMapsAutocompleteInput.js.map +0 -1
  145. package/dist/components/EventAddForm/components/InputField.d.ts +0 -15
  146. package/dist/components/EventAddForm/components/RadioGroupButton.d.ts +0 -14
  147. package/dist/components/EventAddForm/components/SelectField.d.ts +0 -19
  148. package/dist/components/EventAddForm/components/SingleDateTimeInput.js +0 -102
  149. package/dist/components/EventAddForm/components/SingleDateTimeInput.js.map +0 -1
  150. package/dist/components/EventAddForm/components/StepTwo/CustomFormSection.js +0 -277
  151. package/dist/components/EventAddForm/components/StepTwo/CustomFormSection.js.map +0 -1
  152. package/dist/components/EventAddForm/components/StepTwo/TicketTierSection.js +0 -148
  153. package/dist/components/EventAddForm/components/StepTwo/TicketTierSection.js.map +0 -1
  154. package/dist/components/EventAddForm/components/TicketTierForm.js +0 -418
  155. package/dist/components/EventAddForm/components/TicketTierForm.js.map +0 -1
  156. package/dist/components/EventAddForm/components/TicketTypeSelection.js +0 -93
  157. package/dist/components/EventAddForm/components/TicketTypeSelection.js.map +0 -1
  158. package/dist/components/EventAddForm/hooks/useStepperForm.js +0 -371
  159. package/dist/components/EventAddForm/hooks/useStepperForm.js.map +0 -1
  160. package/dist/components/EventAddForm/hooks/useTicketTierForm.js +0 -237
  161. package/dist/components/EventAddForm/hooks/useTicketTierForm.js.map +0 -1
  162. package/dist/components/EventAddForm/index.d.ts +0 -3
  163. package/dist/components/EventAddForm/index.js +0 -41
  164. package/dist/components/EventAddForm/index.js.map +0 -1
  165. package/dist/components/EventAddForm/schemas/index.d.ts +0 -2
  166. package/dist/components/EventAddForm/schemas/step1.d.ts +0 -47
  167. package/dist/components/EventAddForm/schemas/step1.js +0 -135
  168. package/dist/components/EventAddForm/schemas/step1.js.map +0 -1
  169. package/dist/components/EventAddForm/schemas/step2.d.ts +0 -138
  170. package/dist/components/EventAddForm/schemas/step2.js +0 -94
  171. package/dist/components/EventAddForm/schemas/step2.js.map +0 -1
  172. package/dist/components/EventAddForm/schemas/utils.js +0 -28
  173. package/dist/components/EventAddForm/schemas/utils.js.map +0 -1
  174. package/dist/components/EventAddForm/steps/IndividualFormStep.js +0 -85
  175. package/dist/components/EventAddForm/steps/IndividualFormStep.js.map +0 -1
  176. package/dist/components/EventAddForm/steps/SocialProfilesStep.js +0 -123
  177. package/dist/components/EventAddForm/steps/SocialProfilesStep.js.map +0 -1
  178. package/dist/components/EventAddForm/steps/StepOne.js +0 -462
  179. package/dist/components/EventAddForm/steps/StepOne.js.map +0 -1
  180. package/dist/components/EventAddForm/steps/StepTwo.js +0 -173
  181. package/dist/components/EventAddForm/steps/StepTwo.js.map +0 -1
  182. package/dist/components/EventAddForm/steps/TeamFormStep.js +0 -13
  183. package/dist/components/EventAddForm/steps/TeamFormStep.js.map +0 -1
  184. package/dist/components/FormBuilder/CategoryList.js +0 -242
  185. package/dist/components/FormBuilder/CategoryList.js.map +0 -1
  186. package/dist/components/FormBuilder/DiscountInput.js +0 -366
  187. package/dist/components/FormBuilder/DiscountInput.js.map +0 -1
  188. package/dist/components/FormBuilder/FormBuilder.js +0 -918
  189. package/dist/components/FormBuilder/FormBuilder.js.map +0 -1
  190. package/dist/components/FormBuilder/OptionList.js +0 -120
  191. package/dist/components/FormBuilder/OptionList.js.map +0 -1
  192. package/dist/components/FormBuilder/PaymentPreview.d.ts +0 -12
  193. package/dist/components/FormBuilder/PaymentPreview.js +0 -70
  194. package/dist/components/FormBuilder/PaymentPreview.js.map +0 -1
  195. package/dist/components/FormBuilder/PreviewInput.d.ts +0 -10
  196. package/dist/components/FormBuilder/PreviewInput.js +0 -143
  197. package/dist/components/FormBuilder/PreviewInput.js.map +0 -1
  198. package/dist/components/FormBuilder/QuestionCard.js +0 -252
  199. package/dist/components/FormBuilder/QuestionCard.js.map +0 -1
  200. package/dist/components/FormBuilder/QuestionEditor.js +0 -166
  201. package/dist/components/FormBuilder/QuestionEditor.js.map +0 -1
  202. package/dist/components/FormBuilder/RequiredToggle.js +0 -43
  203. package/dist/components/FormBuilder/RequiredToggle.js.map +0 -1
  204. package/dist/components/FormBuilder/SortableQuestionList.js +0 -137
  205. package/dist/components/FormBuilder/SortableQuestionList.js.map +0 -1
  206. package/dist/components/FormBuilder/index.d.ts +0 -4
  207. package/dist/components/FormBuilder/utils.js +0 -229
  208. package/dist/components/FormBuilder/utils.js.map +0 -1
  209. package/dist/components/FormInput/FormInput.js +0 -126
  210. package/dist/components/FormInput/FormInput.js.map +0 -1
  211. package/dist/components/FormInput/FormInput.test.d.ts +0 -1
  212. package/dist/components/FormInput/index.d.ts +0 -2
  213. package/dist/components/ImageCropModal/index.js +0 -464
  214. package/dist/components/ImageCropModal/index.js.map +0 -1
  215. package/dist/components/InformationPopover/InformationPopover.d.ts +0 -7
  216. package/dist/components/InformationPopover/InformationPopover.js +0 -19
  217. package/dist/components/InformationPopover/InformationPopover.js.map +0 -1
  218. package/dist/components/InformationPopover.js +0 -19
  219. package/dist/components/InformationPopover.js.map +0 -1
  220. package/dist/components/InputErrorMessage/InputErrorMessage.js +0 -21
  221. package/dist/components/InputErrorMessage/InputErrorMessage.js.map +0 -1
  222. package/dist/components/Modal/Modal.d.ts +0 -15
  223. package/dist/components/Modal/Modal.js +0 -73
  224. package/dist/components/Modal/Modal.js.map +0 -1
  225. package/dist/components/Radio/Radio.js +0 -35
  226. package/dist/components/Radio/Radio.js.map +0 -1
  227. package/dist/components/Spinner/spinner.d.ts +0 -2
  228. package/dist/components/Spinner/spinner.js +0 -22
  229. package/dist/components/Spinner/spinner.js.map +0 -1
  230. package/dist/components/Toggle/Toggle.d.ts +0 -16
  231. package/dist/components/Toggle/index.d.ts +0 -2
  232. package/dist/components/Tooltip/Tooltip.d.ts +0 -12
  233. package/dist/components/Tooltip/Tooltip.js +0 -134
  234. package/dist/components/Tooltip/Tooltip.js.map +0 -1
  235. package/dist/components/common/FallbackImage.js +0 -47
  236. package/dist/components/common/FallbackImage.js.map +0 -1
  237. package/dist/components/ui/Calendar/calendar-utils.js +0 -51
  238. package/dist/components/ui/Calendar/calendar-utils.js.map +0 -1
  239. package/dist/components/ui/Calendar/index.js +0 -142
  240. package/dist/components/ui/Calendar/index.js.map +0 -1
  241. package/dist/components/ui/Checkbox.d.ts +0 -9
  242. package/dist/components/ui/Checkbox.js +0 -50
  243. package/dist/components/ui/Checkbox.js.map +0 -1
  244. package/dist/components/ui/DatePicker/index.js +0 -188
  245. package/dist/components/ui/DatePicker/index.js.map +0 -1
  246. package/dist/components/ui/FormInput.js +0 -129
  247. package/dist/components/ui/FormInput.js.map +0 -1
  248. package/dist/components/ui/InputErrorMessage.d.ts +0 -7
  249. package/dist/components/ui/InputErrorMessage.js +0 -21
  250. package/dist/components/ui/InputErrorMessage.js.map +0 -1
  251. package/dist/components/ui/Modal/index.js +0 -73
  252. package/dist/components/ui/Modal/index.js.map +0 -1
  253. package/dist/components/ui/Radio.d.ts +0 -6
  254. package/dist/components/ui/Radio.js +0 -35
  255. package/dist/components/ui/Radio.js.map +0 -1
  256. package/dist/components/ui/RichTextEditor.js +0 -242
  257. package/dist/components/ui/RichTextEditor.js.map +0 -1
  258. package/dist/components/ui/TimePicker/index.js +0 -215
  259. package/dist/components/ui/TimePicker/index.js.map +0 -1
  260. package/dist/components/ui/TimeSelector/index.js +0 -138
  261. package/dist/components/ui/TimeSelector/index.js.map +0 -1
  262. package/dist/components/ui/Tooltip.d.ts +0 -12
  263. package/dist/components/ui/Tooltip.js +0 -136
  264. package/dist/components/ui/Tooltip.js.map +0 -1
  265. package/dist/hooks/useDropdownPosition.d.ts +0 -11
  266. package/dist/hooks/useFirebaseAuthState.d.ts +0 -6
  267. package/dist/hooks/useFirebaseAuthState.js +0 -23
  268. package/dist/hooks/useFirebaseAuthState.js.map +0 -1
  269. package/dist/hooks/useTicketTierForm.d.ts +0 -61
  270. package/dist/lib/actions.js +0 -32
  271. package/dist/lib/actions.js.map +0 -1
  272. package/dist/lib/cropImage.js +0 -113
  273. package/dist/lib/cropImage.js.map +0 -1
  274. package/dist/lib/imageAnalysis.js +0 -58
  275. package/dist/lib/imageAnalysis.js.map +0 -1
  276. package/dist/lib/utils.js +0 -9
  277. package/dist/lib/utils.js.map +0 -1
  278. package/dist/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js +0 -60
  279. package/dist/node_modules/@dnd-kit/accessibility/dist/accessibility.esm.js.map +0 -1
  280. package/dist/node_modules/@dnd-kit/core/dist/core.esm.js +0 -3458
  281. package/dist/node_modules/@dnd-kit/core/dist/core.esm.js.map +0 -1
  282. package/dist/node_modules/@dnd-kit/sortable/dist/sortable.esm.js +0 -593
  283. package/dist/node_modules/@dnd-kit/sortable/dist/sortable.esm.js.map +0 -1
  284. package/dist/node_modules/@dnd-kit/utilities/dist/utilities.esm.js +0 -302
  285. package/dist/node_modules/@dnd-kit/utilities/dist/utilities.esm.js.map +0 -1
  286. package/dist/node_modules/@firebase/app/dist/esm/index.esm.js +0 -768
  287. package/dist/node_modules/@firebase/app/dist/esm/index.esm.js.map +0 -1
  288. package/dist/node_modules/@firebase/component/dist/esm/index.esm.js +0 -340
  289. package/dist/node_modules/@firebase/component/dist/esm/index.esm.js.map +0 -1
  290. package/dist/node_modules/@firebase/logger/dist/esm/index.esm.js +0 -123
  291. package/dist/node_modules/@firebase/logger/dist/esm/index.esm.js.map +0 -1
  292. package/dist/node_modules/@firebase/storage/dist/index.esm.js +0 -2623
  293. package/dist/node_modules/@firebase/storage/dist/index.esm.js.map +0 -1
  294. package/dist/node_modules/@firebase/util/dist/index.esm.js +0 -658
  295. package/dist/node_modules/@firebase/util/dist/index.esm.js.map +0 -1
  296. package/dist/node_modules/@firebase/util/dist/postinstall.js +0 -5
  297. package/dist/node_modules/@firebase/util/dist/postinstall.js.map +0 -1
  298. package/dist/node_modules/@fortawesome/fontawesome-svg-core/index.js +0 -3179
  299. package/dist/node_modules/@fortawesome/fontawesome-svg-core/index.js.map +0 -1
  300. package/dist/node_modules/@fortawesome/free-solid-svg-icons/index.js +0 -60
  301. package/dist/node_modules/@fortawesome/free-solid-svg-icons/index.js.map +0 -1
  302. package/dist/node_modules/@fortawesome/react-fontawesome/dist/index.js +0 -400
  303. package/dist/node_modules/@fortawesome/react-fontawesome/dist/index.js.map +0 -1
  304. package/dist/node_modules/@heroicons/react/20/solid/esm/CheckIcon.js +0 -27
  305. package/dist/node_modules/@heroicons/react/20/solid/esm/CheckIcon.js.map +0 -1
  306. package/dist/node_modules/@heroicons/react/20/solid/esm/ChevronDownIcon.js +0 -27
  307. package/dist/node_modules/@heroicons/react/20/solid/esm/ChevronDownIcon.js.map +0 -1
  308. package/dist/node_modules/@heroicons/react/24/outline/esm/ArrowRightIcon.js +0 -29
  309. package/dist/node_modules/@heroicons/react/24/outline/esm/ArrowRightIcon.js.map +0 -1
  310. package/dist/node_modules/@heroicons/react/24/outline/esm/ClockIcon.js +0 -29
  311. package/dist/node_modules/@heroicons/react/24/outline/esm/ClockIcon.js.map +0 -1
  312. package/dist/node_modules/@heroicons/react/24/outline/esm/DocumentDuplicateIcon.js +0 -29
  313. package/dist/node_modules/@heroicons/react/24/outline/esm/DocumentDuplicateIcon.js.map +0 -1
  314. package/dist/node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js +0 -29
  315. package/dist/node_modules/@heroicons/react/24/outline/esm/InformationCircleIcon.js.map +0 -1
  316. package/dist/node_modules/@heroicons/react/24/outline/esm/LinkIcon.js +0 -29
  317. package/dist/node_modules/@heroicons/react/24/outline/esm/LinkIcon.js.map +0 -1
  318. package/dist/node_modules/@heroicons/react/24/outline/esm/MagnifyingGlassIcon.js +0 -29
  319. package/dist/node_modules/@heroicons/react/24/outline/esm/MagnifyingGlassIcon.js.map +0 -1
  320. package/dist/node_modules/@heroicons/react/24/outline/esm/MapPinIcon.js +0 -33
  321. package/dist/node_modules/@heroicons/react/24/outline/esm/MapPinIcon.js.map +0 -1
  322. package/dist/node_modules/@heroicons/react/24/outline/esm/VideoCameraIcon.js +0 -29
  323. package/dist/node_modules/@heroicons/react/24/outline/esm/VideoCameraIcon.js.map +0 -1
  324. package/dist/node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js +0 -29
  325. package/dist/node_modules/@heroicons/react/24/outline/esm/XMarkIcon.js.map +0 -1
  326. package/dist/node_modules/@tiptap/core/dist/index.js +0 -5446
  327. package/dist/node_modules/@tiptap/core/dist/index.js.map +0 -1
  328. package/dist/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js +0 -21
  329. package/dist/node_modules/@tiptap/core/dist/jsx-runtime/jsx-runtime.js.map +0 -1
  330. package/dist/node_modules/@tiptap/extension-blockquote/dist/index.js +0 -78
  331. package/dist/node_modules/@tiptap/extension-blockquote/dist/index.js.map +0 -1
  332. package/dist/node_modules/@tiptap/extension-bold/dist/index.js +0 -100
  333. package/dist/node_modules/@tiptap/extension-bold/dist/index.js.map +0 -1
  334. package/dist/node_modules/@tiptap/extension-code/dist/index.js +0 -70
  335. package/dist/node_modules/@tiptap/extension-code/dist/index.js.map +0 -1
  336. package/dist/node_modules/@tiptap/extension-code-block/dist/index.js +0 -317
  337. package/dist/node_modules/@tiptap/extension-code-block/dist/index.js.map +0 -1
  338. package/dist/node_modules/@tiptap/extension-document/dist/index.js +0 -16
  339. package/dist/node_modules/@tiptap/extension-document/dist/index.js.map +0 -1
  340. package/dist/node_modules/@tiptap/extension-hard-break/dist/index.js +0 -66
  341. package/dist/node_modules/@tiptap/extension-hard-break/dist/index.js.map +0 -1
  342. package/dist/node_modules/@tiptap/extension-heading/dist/index.js +0 -86
  343. package/dist/node_modules/@tiptap/extension-heading/dist/index.js.map +0 -1
  344. package/dist/node_modules/@tiptap/extension-horizontal-rule/dist/index.js +0 -80
  345. package/dist/node_modules/@tiptap/extension-horizontal-rule/dist/index.js.map +0 -1
  346. package/dist/node_modules/@tiptap/extension-italic/dist/index.js +0 -98
  347. package/dist/node_modules/@tiptap/extension-italic/dist/index.js.map +0 -1
  348. package/dist/node_modules/@tiptap/extension-link/dist/index.js +0 -423
  349. package/dist/node_modules/@tiptap/extension-link/dist/index.js.map +0 -1
  350. package/dist/node_modules/@tiptap/extension-list/dist/index.js +0 -1039
  351. package/dist/node_modules/@tiptap/extension-list/dist/index.js.map +0 -1
  352. package/dist/node_modules/@tiptap/extension-paragraph/dist/index.js +0 -61
  353. package/dist/node_modules/@tiptap/extension-paragraph/dist/index.js.map +0 -1
  354. package/dist/node_modules/@tiptap/extension-placeholder/dist/index.js +0 -7
  355. package/dist/node_modules/@tiptap/extension-placeholder/dist/index.js.map +0 -1
  356. package/dist/node_modules/@tiptap/extension-strike/dist/index.js +0 -79
  357. package/dist/node_modules/@tiptap/extension-strike/dist/index.js.map +0 -1
  358. package/dist/node_modules/@tiptap/extension-text/dist/index.js +0 -16
  359. package/dist/node_modules/@tiptap/extension-text/dist/index.js.map +0 -1
  360. package/dist/node_modules/@tiptap/extension-underline/dist/index.js +0 -76
  361. package/dist/node_modules/@tiptap/extension-underline/dist/index.js.map +0 -1
  362. package/dist/node_modules/@tiptap/extensions/dist/index.js +0 -376
  363. package/dist/node_modules/@tiptap/extensions/dist/index.js.map +0 -1
  364. package/dist/node_modules/@tiptap/react/dist/index.js +0 -650
  365. package/dist/node_modules/@tiptap/react/dist/index.js.map +0 -1
  366. package/dist/node_modules/@tiptap/starter-kit/dist/index.js +0 -97
  367. package/dist/node_modules/@tiptap/starter-kit/dist/index.js.map +0 -1
  368. package/dist/node_modules/dayjs/dayjs.min.js +0 -283
  369. package/dist/node_modules/dayjs/dayjs.min.js.map +0 -1
  370. package/dist/node_modules/dayjs/plugin/customParseFormat.js +0 -130
  371. package/dist/node_modules/dayjs/plugin/customParseFormat.js.map +0 -1
  372. package/dist/node_modules/dayjs/plugin/duration.js +0 -137
  373. package/dist/node_modules/dayjs/plugin/duration.js.map +0 -1
  374. package/dist/node_modules/dayjs/plugin/isBetween.js +0 -20
  375. package/dist/node_modules/dayjs/plugin/isBetween.js.map +0 -1
  376. package/dist/node_modules/dayjs/plugin/relativeTime.js +0 -49
  377. package/dist/node_modules/dayjs/plugin/relativeTime.js.map +0 -1
  378. package/dist/node_modules/fast-equals/dist/es/index.js +0 -442
  379. package/dist/node_modules/fast-equals/dist/es/index.js.map +0 -1
  380. package/dist/node_modules/idb/build/index.js +0 -70
  381. package/dist/node_modules/idb/build/index.js.map +0 -1
  382. package/dist/node_modules/idb/build/wrap-idb-value.js +0 -149
  383. package/dist/node_modules/idb/build/wrap-idb-value.js.map +0 -1
  384. package/dist/node_modules/linkifyjs/dist/linkify.js +0 -1159
  385. package/dist/node_modules/linkifyjs/dist/linkify.js.map +0 -1
  386. package/dist/node_modules/orderedmap/dist/index.js +0 -120
  387. package/dist/node_modules/orderedmap/dist/index.js.map +0 -1
  388. package/dist/node_modules/prosemirror-commands/dist/index.js +0 -527
  389. package/dist/node_modules/prosemirror-commands/dist/index.js.map +0 -1
  390. package/dist/node_modules/prosemirror-dropcursor/dist/index.js +0 -137
  391. package/dist/node_modules/prosemirror-dropcursor/dist/index.js.map +0 -1
  392. package/dist/node_modules/prosemirror-gapcursor/dist/index.js +0 -221
  393. package/dist/node_modules/prosemirror-gapcursor/dist/index.js.map +0 -1
  394. package/dist/node_modules/prosemirror-history/dist/index.js +0 -357
  395. package/dist/node_modules/prosemirror-history/dist/index.js.map +0 -1
  396. package/dist/node_modules/prosemirror-keymap/dist/index.js +0 -84
  397. package/dist/node_modules/prosemirror-keymap/dist/index.js.map +0 -1
  398. package/dist/node_modules/prosemirror-model/dist/index.js +0 -3209
  399. package/dist/node_modules/prosemirror-model/dist/index.js.map +0 -1
  400. package/dist/node_modules/prosemirror-schema-list/dist/index.js +0 -131
  401. package/dist/node_modules/prosemirror-schema-list/dist/index.js.map +0 -1
  402. package/dist/node_modules/prosemirror-state/dist/index.js +0 -936
  403. package/dist/node_modules/prosemirror-state/dist/index.js.map +0 -1
  404. package/dist/node_modules/prosemirror-transform/dist/index.js +0 -1881
  405. package/dist/node_modules/prosemirror-transform/dist/index.js.map +0 -1
  406. package/dist/node_modules/prosemirror-view/dist/index.js +0 -5232
  407. package/dist/node_modules/prosemirror-view/dist/index.js.map +0 -1
  408. package/dist/node_modules/rope-sequence/dist/index.js +0 -184
  409. package/dist/node_modules/rope-sequence/dist/index.js.map +0 -1
  410. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +0 -82
  411. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +0 -1
  412. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js +0 -78
  413. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js.map +0 -1
  414. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -78
  415. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +0 -1
  416. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +0 -63
  417. package/dist/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js.map +0 -1
  418. package/dist/node_modules/use-sync-external-store/shim/index.js +0 -13
  419. package/dist/node_modules/use-sync-external-store/shim/index.js.map +0 -1
  420. package/dist/node_modules/use-sync-external-store/shim/with-selector.js +0 -13
  421. package/dist/node_modules/use-sync-external-store/shim/with-selector.js.map +0 -1
  422. package/dist/node_modules/w3c-keyname/index.js +0 -106
  423. package/dist/node_modules/w3c-keyname/index.js.map +0 -1
  424. package/dist/node_modules/zod/v4/classic/coerce.js +0 -10
  425. package/dist/node_modules/zod/v4/classic/coerce.js.map +0 -1
  426. package/dist/node_modules/zod/v4/classic/compat.js +0 -8
  427. package/dist/node_modules/zod/v4/classic/compat.js.map +0 -1
  428. package/dist/node_modules/zod/v4/classic/errors.js +0 -45
  429. package/dist/node_modules/zod/v4/classic/errors.js.map +0 -1
  430. package/dist/node_modules/zod/v4/classic/iso.js +0 -44
  431. package/dist/node_modules/zod/v4/classic/iso.js.map +0 -1
  432. package/dist/node_modules/zod/v4/classic/parse.js +0 -30
  433. package/dist/node_modules/zod/v4/classic/parse.js.map +0 -1
  434. package/dist/node_modules/zod/v4/classic/schemas.js +0 -711
  435. package/dist/node_modules/zod/v4/classic/schemas.js.map +0 -1
  436. package/dist/node_modules/zod/v4/core/api.js +0 -588
  437. package/dist/node_modules/zod/v4/core/api.js.map +0 -1
  438. package/dist/node_modules/zod/v4/core/checks.js +0 -411
  439. package/dist/node_modules/zod/v4/core/checks.js.map +0 -1
  440. package/dist/node_modules/zod/v4/core/core.js +0 -75
  441. package/dist/node_modules/zod/v4/core/core.js.map +0 -1
  442. package/dist/node_modules/zod/v4/core/doc.js +0 -38
  443. package/dist/node_modules/zod/v4/core/doc.js.map +0 -1
  444. package/dist/node_modules/zod/v4/core/errors.js +0 -73
  445. package/dist/node_modules/zod/v4/core/errors.js.map +0 -1
  446. package/dist/node_modules/zod/v4/core/json-schema-processors.js +0 -359
  447. package/dist/node_modules/zod/v4/core/json-schema-processors.js.map +0 -1
  448. package/dist/node_modules/zod/v4/core/parse.js +0 -96
  449. package/dist/node_modules/zod/v4/core/parse.js.map +0 -1
  450. package/dist/node_modules/zod/v4/core/regexes.js +0 -84
  451. package/dist/node_modules/zod/v4/core/regexes.js.map +0 -1
  452. package/dist/node_modules/zod/v4/core/registries.js +0 -52
  453. package/dist/node_modules/zod/v4/core/registries.js.map +0 -1
  454. package/dist/node_modules/zod/v4/core/schemas.js +0 -1391
  455. package/dist/node_modules/zod/v4/core/schemas.js.map +0 -1
  456. package/dist/node_modules/zod/v4/core/to-json-schema.js +0 -363
  457. package/dist/node_modules/zod/v4/core/to-json-schema.js.map +0 -1
  458. package/dist/node_modules/zod/v4/core/util.js +0 -431
  459. package/dist/node_modules/zod/v4/core/util.js.map +0 -1
  460. package/dist/node_modules/zod/v4/core/versions.js +0 -9
  461. package/dist/node_modules/zod/v4/core/versions.js.map +0 -1
  462. package/dist/redux/baseQuery.d.ts +0 -1
  463. package/dist/redux/baseQuery.js +0 -24
  464. package/dist/redux/baseQuery.js.map +0 -1
  465. package/dist/services/eventApi.js +0 -411
  466. package/dist/services/eventApi.js.map +0 -1
  467. package/dist/services/helpers.js +0 -115
  468. package/dist/services/helpers.js.map +0 -1
  469. package/dist/services/initialize-firebase.d.ts +0 -2
  470. package/dist/services/initialize-firebase.js +0 -20
  471. package/dist/services/initialize-firebase.js.map +0 -1
  472. package/dist/services/process-image-on-server.js +0 -30
  473. package/dist/services/process-image-on-server.js.map +0 -1
  474. package/dist/services/remote-config.d.ts +0 -5
  475. package/dist/services/remote-config.js +0 -9
  476. package/dist/services/remote-config.js.map +0 -1
  477. package/dist/services/single-event-api.js +0 -301
  478. package/dist/services/single-event-api.js.map +0 -1
  479. package/dist/services/utils.js +0 -107
  480. package/dist/services/utils.js.map +0 -1
  481. package/dist/setupTests.d.ts +0 -1
  482. package/dist/stories/Alert.stories.d.ts +0 -10
  483. package/dist/stories/Button.stories.d.ts +0 -13
  484. package/dist/types/redux-types.d.ts +0 -15
  485. package/dist/types/types.d.ts +0 -60
  486. package/dist/types/types.js +0 -10
  487. package/dist/types/types.js.map +0 -1
  488. package/dist/utils/cn.d.ts +0 -6
  489. package/dist/utils/cn.js +0 -9
  490. package/dist/utils/cn.js.map +0 -1
  491. package/dist/utils/date-range.d.ts +0 -4
  492. package/dist/utils/date-range.js +0 -13
  493. package/dist/utils/date-range.js.map +0 -1
  494. package/dist/utils/single-event-helpers.d.ts +0 -50
  495. package/dist/utils/single-event-helpers.js +0 -18
  496. package/dist/utils/single-event-helpers.js.map +0 -1
  497. package/dist/utils/social-validation.js +0 -42
  498. package/dist/utils/social-validation.js.map +0 -1
  499. package/dist/utils/utils.js +0 -20
  500. package/dist/utils/utils.js.map +0 -1
  501. /package/dist/{components/Alert/Alert.d.ts → src/components/Alert/index.d.ts} +0 -0
  502. /package/dist/{components → src/components}/FormBuilder/CategoryList.d.ts +0 -0
  503. /package/dist/{components → src/components}/FormBuilder/OptionList.d.ts +0 -0
  504. /package/dist/{components → src/components}/FormBuilder/RequiredToggle.d.ts +0 -0
  505. /package/dist/{components → src/components}/FormBuilder/types.d.ts +0 -0
  506. /package/dist/{components → src/components}/FormBuilder/utils.d.ts +0 -0
  507. /package/dist/{components → src/components}/ImageCropModal/index.d.ts +0 -0
  508. /package/dist/{components → src/components}/InformationPopover.d.ts +0 -0
  509. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/common/DescriptionModal.d.ts +0 -0
  510. /package/dist/{components/ui/FormInput.d.ts → src/components/NewAddEvent/components/AddEventFormInput.d.ts} +0 -0
  511. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/CheckboxGroup.d.ts +0 -0
  512. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/CustomMeetingForm.d.ts +0 -0
  513. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/DateTimeField.d.ts +0 -0
  514. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/FileUpload.d.ts +0 -0
  515. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/FormBuilderProceedModal.d.ts +0 -0
  516. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/GoogleMapsAutocompleteInput.d.ts +0 -0
  517. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/SingleDateTimeInput.d.ts +0 -0
  518. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/StepTwo/CustomFormSection.d.ts +0 -0
  519. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/components/TicketTypeSelection.d.ts +0 -0
  520. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/steps/StepOne.d.ts +0 -0
  521. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/steps/StepTwo.d.ts +0 -0
  522. /package/dist/{components/EventAddForm → src/components/NewAddEvent}/types.d.ts +0 -0
  523. /package/dist/{components → src/components}/common/FallbackImage.d.ts +0 -0
  524. /package/dist/{components → src/components}/ui/Calendar/calendar-utils.d.ts +0 -0
  525. /package/dist/{components → src/components}/ui/Calendar/index.d.ts +0 -0
  526. /package/dist/{components/Checkbox → src/components/ui}/Checkbox.d.ts +0 -0
  527. /package/dist/{components/CustomSelect → src/components/ui}/CustomSelect.d.ts +0 -0
  528. /package/dist/{components → src/components}/ui/DatePicker/index.d.ts +0 -0
  529. /package/dist/{components/InputErrorMessage → src/components/ui}/InputErrorMessage.d.ts +0 -0
  530. /package/dist/{components → src/components}/ui/Modal/index.d.ts +0 -0
  531. /package/dist/{components/Radio → src/components/ui}/Radio.d.ts +0 -0
  532. /package/dist/{components → src/components}/ui/RichTextEditor.d.ts +0 -0
  533. /package/dist/{components → src/components}/ui/TimePicker/index.d.ts +0 -0
  534. /package/dist/{components → src/components}/ui/TimeSelector/index.d.ts +0 -0
  535. /package/dist/{components → src/components}/ui/Tooltip/index.d.ts +0 -0
  536. /package/dist/{lib → src/lib}/constants.d.ts +0 -0
  537. /package/dist/{lib → src/lib}/cropImage.d.ts +0 -0
  538. /package/dist/{lib → src/lib}/imageAnalysis.d.ts +0 -0
  539. /package/dist/{utils → src/lib}/social-validation.d.ts +0 -0
  540. /package/dist/{lib/utils.d.ts → src/lib/tailwind-merge.d.ts} +0 -0
  541. /package/dist/{utils → src/lib}/utils.d.ts +0 -0
  542. /package/dist/{services → src/redux/features/single-event}/helpers.d.ts +0 -0
  543. /package/dist/{services → src/services}/process-image-on-server.d.ts +0 -0
  544. /package/dist/{types → src/types}/events.d.ts +0 -0
  545. /package/dist/{types → src/types}/question.d.ts +0 -0
@@ -1,412 +0,0 @@
1
- import { jsxs, jsx } from "react/jsx-runtime";
2
- import { memo, useState, useRef, useCallback, Fragment } from "react";
3
- import { ref, uploadBytesResumable, getDownloadURL, deleteObject } from "../../../node_modules/@firebase/storage/dist/index.esm.js";
4
- import { storage } from "../../../services/initialize-firebase.js";
5
- import { AnimatePresence, motion } from "framer-motion";
6
- import useFirebaseAuthState from "../../../hooks/useFirebaseAuthState.js";
7
- import ImageCropModal from "../../ImageCropModal/index.js";
8
- import { processImageOnServer } from "../../../services/process-image-on-server.js";
9
- import FallbackImage from "../../common/FallbackImage.js";
10
- function FileUpload({
11
- formData,
12
- field,
13
- setFormData,
14
- formErrors,
15
- setError,
16
- onLoadingChange
17
- }) {
18
- const [loading, setLoading] = useState(false);
19
- const [progress, setProgress] = useState(0);
20
- const [isTakingLong, setIsTakingLong] = useState(false);
21
- const [isDragging, setIsDragging] = useState(false);
22
- const { user } = useFirebaseAuthState();
23
- const [cropModalOpen, setCropModalOpen] = useState(false);
24
- const [tempImageSrc, setTempImageSrc] = useState(null);
25
- const [currentFileName, setCurrentFileName] = useState("");
26
- const fileInputRef = useRef(null);
27
- const uploadToFirebase = async (file, fileName, updateProgress) => {
28
- const storageRef = ref(storage, `/data/${user == null ? void 0 : user.uid}/events/images/${fileName}`);
29
- const uploadTask = uploadBytesResumable(storageRef, file);
30
- return new Promise((resolve, reject) => uploadTask.on(
31
- "state_changed",
32
- (snapshot) => {
33
- const progress2 = Math.floor(snapshot.bytesTransferred / snapshot.totalBytes * 100);
34
- updateProgress(progress2);
35
- },
36
- reject,
37
- () => {
38
- getDownloadURL(uploadTask.snapshot.ref).then(resolve).catch(reject);
39
- }
40
- ));
41
- };
42
- const deleteFile = async (fileName) => {
43
- try {
44
- const storageRef = ref(storage, `/data/${user == null ? void 0 : user.uid}/events/images/${fileName}`);
45
- await deleteObject(storageRef);
46
- } catch {
47
- console.warn("File not found : ", fileName);
48
- }
49
- };
50
- const handleImageChange = async (file) => {
51
- setLoading(true);
52
- onLoadingChange == null ? void 0 : onLoadingChange(true);
53
- setProgress(0);
54
- setFormData((prev) => ({ ...prev, image_url: "", thumbnail_url: "" }));
55
- const fileId = crypto.randomUUID();
56
- const longUploadTimer = setTimeout(() => setIsTakingLong(true), 7e3);
57
- try {
58
- setError("");
59
- const token = await (user == null ? void 0 : user.getIdToken()) || "";
60
- const [processedFile1, processedFile2] = await Promise.all([
61
- processImageOnServer(file, 1920, token),
62
- processImageOnServer(file, 640, token)
63
- ]);
64
- const totalProgress = { full: 0, thumb: 0 };
65
- const updateProgress = (key) => (p) => {
66
- totalProgress[key] = p;
67
- setProgress(Math.floor((totalProgress.full + totalProgress.thumb) / 2));
68
- };
69
- const [download_url, thumb_url] = await Promise.all([
70
- uploadToFirebase(processedFile1, `${fileId}_full`, updateProgress("full")),
71
- uploadToFirebase(processedFile2, `${fileId}_thumb`, updateProgress("thumb"))
72
- ]);
73
- setFormData((prev) => ({ ...prev, image_url: download_url, thumbnail_url: thumb_url }));
74
- setError("");
75
- } catch (error) {
76
- console.error("Error uploading image:", error);
77
- await Promise.all([
78
- deleteFile(`${fileId}_full`),
79
- deleteFile(`${fileId}_thumb`)
80
- ]);
81
- setFormData((prev) => ({ ...prev, image_url: "", thumbnail_url: "" }));
82
- setError(error instanceof Error ? error.message : "Could not process file. Please try uploading again.");
83
- } finally {
84
- clearTimeout(longUploadTimer);
85
- setLoading(false);
86
- onLoadingChange == null ? void 0 : onLoadingChange(false);
87
- setTimeout(() => {
88
- setProgress(0);
89
- setIsTakingLong(false);
90
- }, 1e3);
91
- }
92
- };
93
- const handleFileSelect = (file) => {
94
- if (!file) return;
95
- const allowedTypes = ["image/jpg", "image/jpeg"];
96
- if (!allowedTypes.includes(file.type)) {
97
- setError("Only JPG and JPEG files are allowed");
98
- return;
99
- }
100
- if (+(file.size / (1024 * 1024)).toFixed(2) > 4.5) {
101
- setError("Image size cannot be greater than 4.5 MB");
102
- return;
103
- }
104
- const url = URL.createObjectURL(file);
105
- setTempImageSrc(url);
106
- setCurrentFileName(file.name);
107
- setCropModalOpen(true);
108
- };
109
- const handleDrop = useCallback((e) => {
110
- e.preventDefault();
111
- setIsDragging(false);
112
- const file = e.dataTransfer.files[0];
113
- if (file && file.type.startsWith("image/")) {
114
- handleFileSelect(file);
115
- }
116
- }, []);
117
- const handleCropConfirm = (blob) => {
118
- if (!tempImageSrc) return;
119
- const fileSizeMB = +(blob.size / (1024 * 1024)).toFixed(2);
120
- if (fileSizeMB > 4.5) {
121
- setError(`The cropped image is too large (${fileSizeMB}MB). Please try a smaller crop or a lower resolution.`);
122
- setCropModalOpen(false);
123
- URL.revokeObjectURL(tempImageSrc);
124
- setTempImageSrc(null);
125
- if (fileInputRef.current) fileInputRef.current.value = "";
126
- return;
127
- }
128
- const file = new File([blob], currentFileName, { type: blob.type });
129
- handleImageChange(file);
130
- setCropModalOpen(false);
131
- URL.revokeObjectURL(tempImageSrc);
132
- setTempImageSrc(null);
133
- if (fileInputRef.current) fileInputRef.current.value = "";
134
- };
135
- const handleCropCancel = () => {
136
- setCropModalOpen(false);
137
- if (tempImageSrc) {
138
- URL.revokeObjectURL(tempImageSrc);
139
- setTempImageSrc(null);
140
- }
141
- if (fileInputRef.current) fileInputRef.current.value = "";
142
- };
143
- return /* @__PURE__ */ jsxs("div", { className: "w-full", children: [
144
- /* @__PURE__ */ jsx(
145
- "input",
146
- {
147
- ref: fileInputRef,
148
- type: "file",
149
- accept: "image/jpg, image/jpeg",
150
- onChange: (e) => {
151
- var _a;
152
- const file = (_a = e.target.files) == null ? void 0 : _a[0];
153
- if (file) handleFileSelect(file);
154
- },
155
- disabled: loading,
156
- className: "hidden"
157
- }
158
- ),
159
- /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: formData[field] && !loading ? /* @__PURE__ */ jsxs(
160
- motion.div,
161
- {
162
- initial: { opacity: 0 },
163
- animate: { opacity: 1 },
164
- exit: { opacity: 0 },
165
- className: "relative w-full aspect-[16/9] rounded-lg overflow-hidden group bg-black/5",
166
- children: [
167
- /* @__PURE__ */ jsx(
168
- FallbackImage,
169
- {
170
- src: formData.thumbnail_url || formData[field],
171
- alt: "Event banner",
172
- fill: true,
173
- className: "object-cover"
174
- }
175
- ),
176
- /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-black/50 md:opacity-0 group-hover:md:opacity-100 transition-opacity duration-200 flex items-center justify-center", children: /* @__PURE__ */ jsx(
177
- "button",
178
- {
179
- type: "button",
180
- onClick: () => {
181
- var _a;
182
- console.log("replacing", fileInputRef.current);
183
- (_a = fileInputRef.current) == null ? void 0 : _a.click();
184
- },
185
- className: "px-3 py-2 bg-white/10 hover:bg-white/20 rounded-lg text-white text-sm font-medium transition-colors",
186
- children: "Replace Image"
187
- }
188
- ) })
189
- ]
190
- },
191
- "preview"
192
- ) : /* @__PURE__ */ jsxs(
193
- motion.div,
194
- {
195
- className: `
196
- relative w-full aspect-[16/9] rounded-lg overflow-hidden
197
- bg-gradient-to-br from-blue-500 via-purple-600 to-purple-700
198
- shadow-lg transition-all duration-300 flex items-center justify-center
199
- ${isDragging ? "shadow-2xl" : "hover:shadow-2xl"}
200
- ${formErrors[field] ? "ring-2 ring-meta-1" : ""}
201
- ${loading ? "cursor-not-allowed" : "cursor-pointer"}
202
- `,
203
- style: {
204
- backgroundImage: "url('/illustration/file_upload_bg.jpg')",
205
- backgroundSize: "cover",
206
- backgroundPosition: "center",
207
- backgroundRepeat: "no-repeat"
208
- },
209
- initial: { opacity: 0, y: 20 },
210
- animate: { opacity: 1, y: 0, scale: isDragging ? 1.01 : 1 },
211
- whileHover: { scale: 1.01 },
212
- whileTap: { scale: 0.99 },
213
- onDragOver: (e) => {
214
- e.preventDefault();
215
- setIsDragging(true);
216
- },
217
- onDragEnter: (e) => {
218
- e.preventDefault();
219
- setIsDragging(true);
220
- },
221
- onDragLeave: (e) => {
222
- e.preventDefault();
223
- setIsDragging(false);
224
- },
225
- onDrop: handleDrop,
226
- title: loading ? "Uploading" : "Please upload an image",
227
- onClick: () => {
228
- var _a;
229
- return (_a = fileInputRef.current) == null ? void 0 : _a.click();
230
- },
231
- children: [
232
- /* @__PURE__ */ jsx("div", { className: "absolute inset-0 opacity-10", children: /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-[url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgeG1sbnM9Imh0dHA6Ly93d3cuc3ZnLnVzZXJzL2dldHRpbmdzdGFydGVkLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSIyMCIgY3k9IjIwIiByPSIyIiBmaWxsPSIjZmZmIi8+PC9nPg==')] opacity-20" }) }),
233
- /* @__PURE__ */ jsxs("div", { className: "relative h-full flex flex-col items-center justify-center p-6 text-white", children: [
234
- /* @__PURE__ */ jsx(AnimatePresence, { children: isDragging && /* @__PURE__ */ jsx(
235
- motion.div,
236
- {
237
- className: "absolute inset-0 pointer-events-none z-50",
238
- initial: { opacity: 0 },
239
- animate: { opacity: 1 },
240
- exit: { opacity: 0 },
241
- children: /* @__PURE__ */ jsxs("svg", { className: "w-full h-full p-[2px]", children: [
242
- " ",
243
- /* @__PURE__ */ jsx(
244
- motion.rect,
245
- {
246
- width: "100%",
247
- height: "100%",
248
- rx: "20",
249
- ry: "20",
250
- fill: "none",
251
- stroke: "white",
252
- strokeWidth: "3",
253
- strokeDasharray: "15 10",
254
- initial: { strokeDashoffset: 0 },
255
- animate: { strokeDashoffset: -25 },
256
- transition: { duration: 0.5, repeat: Infinity, ease: "linear" }
257
- }
258
- )
259
- ] })
260
- }
261
- ) }),
262
- loading ? /* @__PURE__ */ jsx(LoadingState, { progress, isTakingLong }) : /* @__PURE__ */ jsx(UploadPrompt, { isDragging })
263
- ] }),
264
- loading && /* @__PURE__ */ jsx(
265
- motion.div,
266
- {
267
- className: "absolute bottom-0 left-0 right-0 h-2 bg-white/20",
268
- initial: { opacity: 0 },
269
- animate: { opacity: 1 },
270
- children: /* @__PURE__ */ jsx(
271
- motion.div,
272
- {
273
- className: "h-full bg-white rounded-full",
274
- initial: { width: "0%" },
275
- animate: { width: `${progress}%` },
276
- transition: { duration: 0.3 }
277
- }
278
- )
279
- }
280
- )
281
- ]
282
- },
283
- "uploader"
284
- ) }),
285
- tempImageSrc && /* @__PURE__ */ jsx(
286
- ImageCropModal,
287
- {
288
- open: cropModalOpen,
289
- imageSrc: tempImageSrc,
290
- onClose: handleCropCancel,
291
- onConfirm: handleCropConfirm,
292
- aspect: 16 / 9,
293
- cropShape: "rect",
294
- showRotationControl: false
295
- }
296
- )
297
- ] });
298
- }
299
- const LoadingState = memo(function loadingState({ progress, isTakingLong }) {
300
- return /* @__PURE__ */ jsxs(
301
- motion.div,
302
- {
303
- className: "text-center scale-75 md:scale-100",
304
- initial: { opacity: 0, scale: 0.9 },
305
- animate: { opacity: 1, scale: 1 },
306
- children: [
307
- /* @__PURE__ */ jsx("div", { className: "flex justify-center", children: /* @__PURE__ */ jsxs("div", { className: "relative w-16 h-16 md:w-24 md:h-24 mb-2 md:mb-4", children: [
308
- /* @__PURE__ */ jsx("svg", { className: "w-full h-full", viewBox: "0 0 100 100", children: /* @__PURE__ */ jsx(
309
- motion.circle,
310
- {
311
- className: "text-white",
312
- strokeWidth: "4",
313
- stroke: "currentColor",
314
- fill: "none",
315
- r: "42",
316
- cx: "50",
317
- cy: "50",
318
- initial: { pathLength: 0 },
319
- animate: { pathLength: progress / 100 },
320
- transition: { duration: 0.3 }
321
- }
322
- ) }),
323
- /* @__PURE__ */ jsxs("span", { className: "absolute inset-0 flex items-center justify-center text-md md:text-xl font-bold animate-pulse", children: [
324
- progress,
325
- "%"
326
- ] })
327
- ] }) }),
328
- /* @__PURE__ */ jsxs(
329
- motion.div,
330
- {
331
- initial: { opacity: 0 },
332
- animate: { opacity: 1 },
333
- transition: { delay: 0.2 },
334
- className: "space-y-2",
335
- children: [
336
- /* @__PURE__ */ jsx("p", { className: "text-xl font-bold", children: "Almost there! ✨" }),
337
- /* @__PURE__ */ jsx("p", { className: "text-white/80", children: isTakingLong ? "Taking longer than usual... ⏳" : "Your image is uploading..." })
338
- ]
339
- }
340
- )
341
- ]
342
- }
343
- );
344
- });
345
- const UploadPrompt = memo(function uploadPrompt({ isDragging }) {
346
- return /* @__PURE__ */ jsxs(
347
- motion.div,
348
- {
349
- className: "text-center space-y-3 md:scale-100 border border-dashed border-white p-4 rounded-xl bg-white/10 transition-all duration-300 ease-in-out",
350
- initial: { opacity: 0, y: 20 },
351
- animate: { opacity: 1, y: 0 },
352
- children: [
353
- /* @__PURE__ */ jsx(
354
- motion.div,
355
- {
356
- className: "w-12 h-12 mx-auto bg-white rounded-full flex items-center justify-center",
357
- whileHover: { scale: 1.1, rotate: 5 },
358
- whileTap: { scale: 0.95 },
359
- children: /* @__PURE__ */ jsx("svg", { width: "19", height: "17", viewBox: "0 0 19 17", className: "text-gray-600", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx("path", { d: "M5.83203 11.6673L9.16536 8.33398M9.16536 8.33398L12.4987 11.6673M9.16536 8.33398V15.834M15.832 12.2863C16.85 11.4457 17.4987 10.1739 17.4987 8.75065C17.4987 6.21935 15.4467 4.16732 12.9154 4.16732C12.7333 4.16732 12.5629 4.07231 12.4705 3.91543C11.3837 2.07135 9.37739 0.833984 7.08203 0.833984C3.63025 0.833984 0.832031 3.6322 0.832031 7.08398C0.832031 8.80574 1.52824 10.3649 2.65449 11.4953", stroke: "#474C56", strokeWidth: "1.66667", strokeLinecap: "round", strokeLinejoin: "round" }) })
360
- }
361
- ),
362
- /* @__PURE__ */ jsxs("div", { className: "space-y-1", children: [
363
- /* @__PURE__ */ jsx(
364
- motion.div,
365
- {
366
- className: "space-y-1 md:space-y-2",
367
- initial: { opacity: 0 },
368
- animate: { opacity: 1 },
369
- transition: { delay: 0.2 },
370
- children: /* @__PURE__ */ jsx("h5", { children: isDragging ? /* @__PURE__ */ jsx(
371
- motion.span,
372
- {
373
- initial: { scale: 0.9 },
374
- animate: { scale: 1 },
375
- className: "block",
376
- children: "Drop it here 🎨"
377
- }
378
- ) : /* @__PURE__ */ jsxs("div", { className: "text-md", children: [
379
- /* @__PURE__ */ jsx("span", { className: "text-[#5C48CC]", children: "Click to upload" }),
380
- /* @__PURE__ */ jsxs("span", { children: [
381
- " ",
382
- "or drag and drop"
383
- ] })
384
- ] }) })
385
- }
386
- ),
387
- /* @__PURE__ */ jsx(
388
- motion.div,
389
- {
390
- className: "flex flex-wrap justify-center gap-1 md:gap-2",
391
- initial: { opacity: 0 },
392
- animate: { opacity: 1 },
393
- transition: { delay: 0.3 },
394
- children: /* @__PURE__ */ jsxs("div", { className: "text-md", children: [
395
- ["JPG", "JPEG"].map((format) => /* @__PURE__ */ jsxs(Fragment, { children: [
396
- format,
397
- " "
398
- ] }, format)),
399
- "(Max | 10MB, Dimensions | 16:9)"
400
- ] })
401
- }
402
- )
403
- ] })
404
- ]
405
- }
406
- );
407
- });
408
- const FileUpload$1 = memo(FileUpload);
409
- export {
410
- FileUpload$1 as default
411
- };
412
- //# sourceMappingURL=FileUpload.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FileUpload.js","sources":["../../../../src/components/EventAddForm/components/FileUpload.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\r\nimport { useState, useCallback, useRef, memo, Fragment } from \"react\";\r\nimport { ref, getDownloadURL, uploadBytesResumable, deleteObject } from \"firebase/storage\";\r\nimport { storage } from \"@/services/initialize-firebase\";\r\nimport { motion, AnimatePresence } from \"framer-motion\"; // Add framer-motion for smooth animations\r\nimport useFirebaseAuthState from \"@/hooks/useFirebaseAuthState\";\r\nimport ImageCropModal from \"@/components/ImageCropModal\";\r\nimport { processImageOnServer } from \"@/services/process-image-on-server\";\r\nimport FallbackImage from \"@/components/common/FallbackImage\";\r\n\r\ninterface FileUploadProps {\r\n formData: any;\r\n field: string;\r\n setFormData: any;\r\n label?: string;\r\n description?: string;\r\n formErrors?: any;\r\n validation?: any;\r\n setError: (error: string) => void;\r\n onLoadingChange?: (loading: boolean) => void;\r\n}\r\n\r\nfunction FileUpload({\r\n formData,\r\n field,\r\n setFormData,\r\n formErrors,\r\n setError,\r\n onLoadingChange\r\n}: FileUploadProps) {\r\n const [loading, setLoading] = useState(false);\r\n const [progress, setProgress] = useState(0); // Add upload progress\r\n const [isTakingLong, setIsTakingLong] = useState(false); // UI feedback for slow uploads\r\n const [isDragging, setIsDragging] = useState(false);\r\n const { user } = useFirebaseAuthState();\r\n\r\n // Crop Modal State\r\n const [cropModalOpen, setCropModalOpen] = useState(false);\r\n const [tempImageSrc, setTempImageSrc] = useState<string | null>(null);\r\n const [currentFileName, setCurrentFileName] = useState<string>(\"\");\r\n const fileInputRef = useRef<HTMLInputElement>(null);\r\n\r\n const uploadToFirebase = async (file: any, fileName: string, updateProgress: (p: number) => void) => {\r\n const storageRef = ref(storage, `/data/${user?.uid}/events/images/${fileName}`);\r\n const uploadTask = uploadBytesResumable(storageRef, file);\r\n\r\n return new Promise((resolve, reject) => uploadTask.on('state_changed',\r\n (snapshot) => {\r\n const progress = Math.floor((snapshot.bytesTransferred / snapshot.totalBytes) * 100);\r\n\r\n updateProgress(progress);\r\n\r\n },\r\n reject,\r\n () => {\r\n getDownloadURL(uploadTask.snapshot.ref).then(resolve).catch(reject);\r\n }\r\n ))\r\n }\r\n\r\n const deleteFile = async (fileName: any) => {\r\n try {\r\n const storageRef = ref(storage, `/data/${user?.uid}/events/images/${fileName}`);\r\n\r\n await deleteObject(storageRef);\r\n }\r\n catch {\r\n console.warn(\"File not found : \", fileName)\r\n }\r\n }\r\n\r\n const handleImageChange = async (file: File) => {\r\n setLoading(true);\r\n onLoadingChange?.(true);\r\n setProgress(0);\r\n\r\n // Clear existing image data so validation fails if they click Next too early\r\n setFormData((prev: any) => ({ ...prev, image_url: \"\", thumbnail_url: \"\" }));\r\n\r\n const fileId = crypto.randomUUID();\r\n const longUploadTimer = setTimeout(() => setIsTakingLong(true), 7000); // 7 seconds threshold\r\n\r\n try {\r\n setError(\"\");\r\n const token = await user?.getIdToken() || \"\";\r\n\r\n const [processedFile1, processedFile2] = await Promise.all([\r\n processImageOnServer(file, 1920, token),\r\n processImageOnServer(file, 640, token)\r\n ]);\r\n\r\n const totalProgress = { full: 0, thumb: 0 };\r\n\r\n const updateProgress = (key: 'full' | 'thumb') => (p: number) => {\r\n totalProgress[key] = p;\r\n setProgress(Math.floor((totalProgress.full + totalProgress.thumb) / 2));\r\n };\r\n\r\n const [download_url, thumb_url] = await Promise.all([\r\n uploadToFirebase(processedFile1, `${fileId}_full`, updateProgress('full')),\r\n uploadToFirebase(processedFile2, `${fileId}_thumb`, updateProgress('thumb'))\r\n ])\r\n\r\n\r\n setFormData((prev: any) => ({ ...prev, image_url: download_url, thumbnail_url: thumb_url }));\r\n setError(\"\");\r\n } catch (error) {\r\n console.error('Error uploading image:', error);\r\n\r\n await Promise.all([\r\n deleteFile(`${fileId}_full`),\r\n deleteFile(`${fileId}_thumb`)\r\n ])\r\n\r\n setFormData((prev: any) => ({ ...prev, image_url: \"\", thumbnail_url: \"\" }));\r\n setError(error instanceof Error ? error.message : \"Could not process file. Please try uploading again.\");\r\n } finally {\r\n clearTimeout(longUploadTimer);\r\n setLoading(false);\r\n onLoadingChange?.(false);\r\n setTimeout(() => {\r\n setProgress(0);\r\n setIsTakingLong(false);\r\n }, 1000);\r\n }\r\n }\r\n\r\n const handleFileSelect = (file: File) => {\r\n if (!file) return;\r\n\r\n // Check if file type is valid\r\n const allowedTypes = ['image/jpg', 'image/jpeg'];\r\n if (!allowedTypes.includes(file.type)) {\r\n setError(\"Only JPG and JPEG files are allowed\");\r\n return;\r\n }\r\n\r\n // Check size before processing\r\n if (+(file.size / (1024 * 1024)).toFixed(2) > 4.5) {\r\n setError(\"Image size cannot be greater than 4.5 MB\");\r\n return;\r\n }\r\n\r\n const url = URL.createObjectURL(file);\r\n setTempImageSrc(url);\r\n setCurrentFileName(file.name);\r\n setCropModalOpen(true);\r\n };\r\n\r\n const handleDrop = useCallback((e: React.DragEvent) => {\r\n e.preventDefault();\r\n setIsDragging(false);\r\n\r\n const file = e.dataTransfer.files[0];\r\n if (file && file.type.startsWith('image/')) {\r\n handleFileSelect(file);\r\n }\r\n }, []);\r\n\r\n const handleCropConfirm = (blob: Blob) => {\r\n if (!tempImageSrc) return;\r\n\r\n // Check size of the cropped result\r\n const fileSizeMB = +(blob.size / (1024 * 1024)).toFixed(2);\r\n if (fileSizeMB > 4.5) {\r\n setError(`The cropped image is too large (${fileSizeMB}MB). Please try a smaller crop or a lower resolution.`);\r\n setCropModalOpen(false);\r\n URL.revokeObjectURL(tempImageSrc);\r\n setTempImageSrc(null);\r\n if (fileInputRef.current) fileInputRef.current.value = \"\";\r\n return;\r\n }\r\n\r\n // Convert Blob back to File\r\n const file = new File([blob], currentFileName, { type: blob.type });\r\n\r\n // Proceed with original upload logic\r\n handleImageChange(file);\r\n\r\n // Cleanup\r\n setCropModalOpen(false);\r\n URL.revokeObjectURL(tempImageSrc);\r\n setTempImageSrc(null);\r\n if (fileInputRef.current) fileInputRef.current.value = \"\";\r\n };\r\n\r\n const handleCropCancel = () => {\r\n setCropModalOpen(false);\r\n if (tempImageSrc) {\r\n URL.revokeObjectURL(tempImageSrc);\r\n setTempImageSrc(null);\r\n }\r\n if (fileInputRef.current) fileInputRef.current.value = \"\";\r\n };\r\n\r\n return (\r\n <div className=\"w-full\">\r\n {/* Hidden File Input (Always mounted) */}\r\n <input\r\n ref={fileInputRef}\r\n type=\"file\"\r\n accept=\"image/jpg, image/jpeg\"\r\n onChange={(e) => {\r\n const file = e.target.files?.[0];\r\n if (file) handleFileSelect(file);\r\n }}\r\n disabled={loading}\r\n className=\"hidden\"\r\n />\r\n <AnimatePresence mode=\"wait\">\r\n {formData[field] && !loading ? (\r\n <motion.div\r\n key=\"preview\"\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n className=\"relative w-full aspect-[16/9] rounded-lg overflow-hidden group bg-black/5\"\r\n >\r\n <FallbackImage\r\n src={(formData.thumbnail_url || formData[field])}\r\n alt=\"Event banner\"\r\n fill\r\n className=\"object-cover\"\r\n />\r\n <div className=\"absolute inset-0 bg-black/50 md:opacity-0 group-hover:md:opacity-100 transition-opacity duration-200 flex items-center justify-center\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n console.log(\"replacing\", fileInputRef.current);\r\n fileInputRef.current?.click()\r\n }}\r\n className=\"px-3 py-2 bg-white/10 hover:bg-white/20 rounded-lg text-white text-sm font-medium transition-colors\"\r\n >\r\n Replace Image\r\n </button>\r\n </div>\r\n </motion.div>\r\n ) : (\r\n <motion.div\r\n key=\"uploader\"\r\n className={`\r\n relative w-full aspect-[16/9] rounded-lg overflow-hidden\r\n bg-gradient-to-br from-blue-500 via-purple-600 to-purple-700\r\n shadow-lg transition-all duration-300 flex items-center justify-center\r\n ${isDragging ? 'shadow-2xl' : 'hover:shadow-2xl'}\r\n ${formErrors[field] ? \"ring-2 ring-meta-1\" : \"\"}\r\n ${loading ? \"cursor-not-allowed\" : \"cursor-pointer\"}\r\n `}\r\n style={{\r\n backgroundImage: \"url('/illustration/file_upload_bg.jpg')\",\r\n backgroundSize: \"cover\",\r\n backgroundPosition: \"center\",\r\n backgroundRepeat: \"no-repeat\"\r\n }}\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0, scale: isDragging ? 1.01 : 1 }}\r\n whileHover={{ scale: 1.01 }}\r\n whileTap={{ scale: 0.99 }}\r\n onDragOver={(e) => {\r\n e.preventDefault();\r\n setIsDragging(true);\r\n }}\r\n onDragEnter={(e) => {\r\n e.preventDefault();\r\n setIsDragging(true);\r\n }}\r\n onDragLeave={(e) => {\r\n e.preventDefault();\r\n setIsDragging(false);\r\n }}\r\n onDrop={handleDrop}\r\n title={loading ? \"Uploading\" : \"Please upload an image\"}\r\n onClick={() => fileInputRef.current?.click()}\r\n >\r\n\r\n {/* Cool Background Pattern */}\r\n <div className=\"absolute inset-0 opacity-10\">\r\n <div className=\"absolute inset-0 bg-[url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgeG1sbnM9Imh0dHA6Ly93d3cuc3ZnLnVzZXJzL2dldHRpbmdzdGFydGVkLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGN4PSIyMCIgY3k9IjIwIiByPSIyIiBmaWxsPSIjZmZmIi8+PC9nPg==')] opacity-20\" />\r\n </div>\r\n\r\n {/* Main Content Area */}\r\n <div className=\"relative h-full flex flex-col items-center justify-center p-6 text-white\">\r\n {/* Animated Dashed Border on Drag */}\r\n <AnimatePresence>\r\n {isDragging && (\r\n <motion.div\r\n className=\"absolute inset-0 pointer-events-none z-50\"\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n exit={{ opacity: 0 }}\r\n >\r\n <svg className=\"w-full h-full p-[2px]\"> {/* Padding to ensure border is visible slightly inside */}\r\n <motion.rect\r\n width=\"100%\"\r\n height=\"100%\"\r\n rx=\"20\"\r\n ry=\"20\"\r\n fill=\"none\"\r\n stroke=\"white\"\r\n strokeWidth=\"3\"\r\n strokeDasharray=\"15 10\"\r\n initial={{ strokeDashoffset: 0 }}\r\n animate={{ strokeDashoffset: -25 }}\r\n transition={{ duration: 0.5, repeat: Infinity, ease: \"linear\" }}\r\n />\r\n </svg>\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {loading ? (\r\n <LoadingState progress={progress} isTakingLong={isTakingLong} />\r\n ) : (\r\n <UploadPrompt isDragging={isDragging} />\r\n )}\r\n </div>\r\n\r\n {/* Animated Progress Bar */}\r\n {loading && (\r\n <motion.div\r\n className=\"absolute bottom-0 left-0 right-0 h-2 bg-white/20\"\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n >\r\n <motion.div\r\n className=\"h-full bg-white rounded-full\"\r\n initial={{ width: '0%' }}\r\n animate={{ width: `${progress}%` }}\r\n transition={{ duration: 0.3 }}\r\n />\r\n </motion.div>\r\n )}\r\n </motion.div>\r\n )}\r\n </AnimatePresence>\r\n\r\n {/* Image Crop Modal */}\r\n {tempImageSrc && (\r\n <ImageCropModal\r\n open={cropModalOpen}\r\n imageSrc={tempImageSrc}\r\n onClose={handleCropCancel}\r\n onConfirm={handleCropConfirm}\r\n aspect={16 / 9} // Default aspect ratio for banners, can be props if needed\r\n cropShape=\"rect\"\r\n showRotationControl={false}\r\n />\r\n )}\r\n </div>\r\n );\r\n}\r\n\r\nconst LoadingState = memo(function loadingState({ progress, isTakingLong }: { progress: number, isTakingLong?: boolean }) {\r\n return (\r\n <motion.div\r\n className=\"text-center scale-75 md:scale-100\" // Scaled down on mobile\r\n initial={{ opacity: 0, scale: 0.9 }}\r\n animate={{ opacity: 1, scale: 1 }}\r\n >\r\n <div className=\"flex justify-center\">\r\n <div className=\"relative w-16 h-16 md:w-24 md:h-24 mb-2 md:mb-4\">\r\n <svg className=\"w-full h-full\" viewBox=\"0 0 100 100\">\r\n <motion.circle\r\n className=\"text-white\"\r\n strokeWidth=\"4\"\r\n stroke=\"currentColor\"\r\n fill=\"none\"\r\n r=\"42\"\r\n cx=\"50\"\r\n cy=\"50\"\r\n initial={{ pathLength: 0 }}\r\n animate={{ pathLength: progress / 100 }}\r\n transition={{ duration: 0.3 }}\r\n />\r\n </svg>\r\n <span className=\"absolute inset-0 flex items-center justify-center text-md md:text-xl font-bold animate-pulse\">\r\n {progress}%\r\n </span>\r\n </div>\r\n </div>\r\n <motion.div\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n transition={{ delay: 0.2 }}\r\n className=\"space-y-2\"\r\n >\r\n <p className=\"text-xl font-bold\">Almost there! ✨</p>\r\n <p className=\"text-white/80\">\r\n {isTakingLong ? \"Taking longer than usual... ⏳\" : \"Your image is uploading...\"}\r\n </p>\r\n </motion.div>\r\n </motion.div>\r\n )\r\n});\r\n\r\nconst UploadPrompt = memo(function uploadPrompt({ isDragging }: { isDragging: boolean }) {\r\n return (\r\n <motion.div\r\n className=\"text-center space-y-3 md:scale-100 border border-dashed border-white p-4 rounded-xl bg-white/10 transition-all duration-300 ease-in-out\" // Adjusted spacing and scale\r\n initial={{ opacity: 0, y: 20 }}\r\n animate={{ opacity: 1, y: 0 }}\r\n >\r\n <motion.div\r\n className=\"w-12 h-12 mx-auto bg-white rounded-full flex items-center justify-center\"\r\n whileHover={{ scale: 1.1, rotate: 5 }}\r\n whileTap={{ scale: 0.95 }}\r\n >\r\n <svg width=\"19\" height=\"17\" viewBox=\"0 0 19 17\" className=\"text-gray-600\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M5.83203 11.6673L9.16536 8.33398M9.16536 8.33398L12.4987 11.6673M9.16536 8.33398V15.834M15.832 12.2863C16.85 11.4457 17.4987 10.1739 17.4987 8.75065C17.4987 6.21935 15.4467 4.16732 12.9154 4.16732C12.7333 4.16732 12.5629 4.07231 12.4705 3.91543C11.3837 2.07135 9.37739 0.833984 7.08203 0.833984C3.63025 0.833984 0.832031 3.6322 0.832031 7.08398C0.832031 8.80574 1.52824 10.3649 2.65449 11.4953\" stroke=\"#474C56\" strokeWidth=\"1.66667\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\r\n </svg>\r\n </motion.div>\r\n\r\n <div className=\"space-y-1\">\r\n <motion.div\r\n className=\"space-y-1 md:space-y-2\"\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n transition={{ delay: 0.2 }}\r\n >\r\n <h5>\r\n {isDragging ? (\r\n <motion.span\r\n initial={{ scale: 0.9 }}\r\n animate={{ scale: 1 }}\r\n className=\"block\"\r\n >\r\n Drop it here 🎨\r\n </motion.span>\r\n ) : (\r\n <div className=\"text-md\">\r\n <span className=\"text-[#5C48CC]\">\r\n Click to upload\r\n </span>\r\n <span>\r\n {\" \"}or drag and drop\r\n </span>\r\n </div>\r\n )}\r\n </h5>\r\n </motion.div>\r\n\r\n <motion.div\r\n className=\"flex flex-wrap justify-center gap-1 md:gap-2\"\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\r\n transition={{ delay: 0.3 }}\r\n >\r\n <div className=\"text-md\">\r\n {['JPG', 'JPEG'].map((format) => (\r\n <Fragment key={format}>{format}{\" \"}</Fragment>\r\n ))}\r\n (Max | 10MB, Dimensions | 16:9)\r\n </div>\r\n </motion.div>\r\n </div>\r\n </motion.div>\r\n )\r\n});\r\n\r\nexport default memo(FileUpload);\r\n"],"names":["progress"],"mappings":"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"}