@eventlook/sdk 1.4.45 → 1.4.46-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (589) hide show
  1. package/.env.example +1 -0
  2. package/package.json +3 -1
  3. package/rollup.config.mjs +2 -0
  4. package/src/components/hook-form/FormProvider.tsx +5 -2
  5. package/src/form/ChildEventDialog.tsx +3 -3
  6. package/src/form/ContactPerson.tsx +1 -1
  7. package/src/form/PaymentOverviewBox.tsx +39 -72
  8. package/src/form/PaymentOverviewDrawer.tsx +169 -0
  9. package/src/form/PaymentPending.tsx +1 -1
  10. package/src/form/TicketForm.tsx +53 -17
  11. package/src/form/index.tsx +3 -1
  12. package/src/form/merchandise/MerchandiseSelection.tsx +24 -0
  13. package/src/form/merchandise/MerchandiseSlider.tsx +61 -0
  14. package/src/form/payment/FeeBox.tsx +0 -10
  15. package/src/form/payment/PaymentOverviewCheckbox.tsx +33 -56
  16. package/src/form/product/ProductCard.tsx +60 -55
  17. package/src/form/product/ProductVariantsDialog.tsx +195 -137
  18. package/src/form/services/index.tsx +217 -0
  19. package/src/form/tickets/ReleaseDescription.tsx +57 -0
  20. package/src/form/tickets/ReleaseWithMerchandise.tsx +237 -0
  21. package/src/form/tickets/TicketQuantityControl.tsx +93 -0
  22. package/src/form/{TicketSelection.tsx → tickets/TicketSelection.tsx} +130 -101
  23. package/src/form/tickets/TicketSelectionMobile.tsx +175 -0
  24. package/src/form/{TicketWithMerchandiseSelection.tsx → tickets/TicketWithMerchandiseSelection.tsx} +3 -7
  25. package/src/locales/cs.tsx +7 -1
  26. package/src/locales/en.tsx +7 -1
  27. package/src/locales/es.tsx +6 -0
  28. package/src/locales/pl.tsx +6 -0
  29. package/src/locales/sk.tsx +6 -0
  30. package/src/locales/uk.tsx +6 -0
  31. package/src/utils/data/global.ts +1 -0
  32. package/tsconfig.json +2 -1
  33. package/.claude/settings.local.json +0 -9
  34. package/dist/cjs/components/ClientOnly.js +0 -19
  35. package/dist/cjs/components/ClientOnly.js.map +0 -1
  36. package/dist/cjs/components/CustomSkeleton.js +0 -15
  37. package/dist/cjs/components/CustomSkeleton.js.map +0 -1
  38. package/dist/cjs/components/Image.js +0 -56
  39. package/dist/cjs/components/Image.js.map +0 -1
  40. package/dist/cjs/components/Label.js +0 -65
  41. package/dist/cjs/components/Label.js.map +0 -1
  42. package/dist/cjs/components/TextIconLabel.js +0 -19
  43. package/dist/cjs/components/TextIconLabel.js.map +0 -1
  44. package/dist/cjs/components/TicketFormSkeleton.js +0 -55
  45. package/dist/cjs/components/TicketFormSkeleton.js.map +0 -1
  46. package/dist/cjs/components/Trans.js +0 -87
  47. package/dist/cjs/components/Trans.js.map +0 -1
  48. package/dist/cjs/components/animate/IconButtonAnimate.js +0 -29
  49. package/dist/cjs/components/animate/IconButtonAnimate.js.map +0 -1
  50. package/dist/cjs/components/animate/MotionContainer.js +0 -18
  51. package/dist/cjs/components/animate/MotionContainer.js.map +0 -1
  52. package/dist/cjs/components/animate/variants/bounce.js +0 -98
  53. package/dist/cjs/components/animate/variants/bounce.js.map +0 -1
  54. package/dist/cjs/components/animate/variants/container.js +0 -25
  55. package/dist/cjs/components/animate/variants/container.js.map +0 -1
  56. package/dist/cjs/components/animate/variants/transition.js +0 -17
  57. package/dist/cjs/components/animate/variants/transition.js.map +0 -1
  58. package/dist/cjs/components/confirm-dialog/ConfirmDialog.js +0 -24
  59. package/dist/cjs/components/confirm-dialog/ConfirmDialog.js.map +0 -1
  60. package/dist/cjs/components/hook-form/FormProvider.js +0 -14
  61. package/dist/cjs/components/hook-form/FormProvider.js.map +0 -1
  62. package/dist/cjs/components/hook-form/RHFCheckbox.js +0 -15
  63. package/dist/cjs/components/hook-form/RHFCheckbox.js.map +0 -1
  64. package/dist/cjs/components/hook-form/RHFDatePicker.js +0 -22
  65. package/dist/cjs/components/hook-form/RHFDatePicker.js.map +0 -1
  66. package/dist/cjs/components/hook-form/RHFPhone.js +0 -24
  67. package/dist/cjs/components/hook-form/RHFPhone.js.map +0 -1
  68. package/dist/cjs/components/hook-form/RHFRadioGroup.js +0 -29
  69. package/dist/cjs/components/hook-form/RHFRadioGroup.js.map +0 -1
  70. package/dist/cjs/components/hook-form/RHFSelect.js +0 -34
  71. package/dist/cjs/components/hook-form/RHFSelect.js.map +0 -1
  72. package/dist/cjs/components/hook-form/RHFTextField.js +0 -15
  73. package/dist/cjs/components/hook-form/RHFTextField.js.map +0 -1
  74. package/dist/cjs/components/iconify/Iconify.js +0 -14
  75. package/dist/cjs/components/iconify/Iconify.js.map +0 -1
  76. package/dist/cjs/context/GlobalContext.js +0 -65
  77. package/dist/cjs/context/GlobalContext.js.map +0 -1
  78. package/dist/cjs/form/ChildEventCard.js +0 -60
  79. package/dist/cjs/form/ChildEventCard.js.map +0 -1
  80. package/dist/cjs/form/ChildEventDialog.js +0 -30
  81. package/dist/cjs/form/ChildEventDialog.js.map +0 -1
  82. package/dist/cjs/form/ChildEvents.js +0 -17
  83. package/dist/cjs/form/ChildEvents.js.map +0 -1
  84. package/dist/cjs/form/ContactPerson.js +0 -40
  85. package/dist/cjs/form/ContactPerson.js.map +0 -1
  86. package/dist/cjs/form/EmailConfirmation.js +0 -28
  87. package/dist/cjs/form/EmailConfirmation.js.map +0 -1
  88. package/dist/cjs/form/MerchandiseSelection.js +0 -17
  89. package/dist/cjs/form/MerchandiseSelection.js.map +0 -1
  90. package/dist/cjs/form/OrderSuccess.js +0 -57
  91. package/dist/cjs/form/OrderSuccess.js.map +0 -1
  92. package/dist/cjs/form/Payment.js +0 -214
  93. package/dist/cjs/form/Payment.js.map +0 -1
  94. package/dist/cjs/form/PaymentOverviewBox.js +0 -413
  95. package/dist/cjs/form/PaymentOverviewBox.js.map +0 -1
  96. package/dist/cjs/form/PaymentPending.js +0 -26
  97. package/dist/cjs/form/PaymentPending.js.map +0 -1
  98. package/dist/cjs/form/PaymentSuccess.js +0 -203
  99. package/dist/cjs/form/PaymentSuccess.js.map +0 -1
  100. package/dist/cjs/form/ReleaseCountdown.js +0 -34
  101. package/dist/cjs/form/ReleaseCountdown.js.map +0 -1
  102. package/dist/cjs/form/ReleaseWithMerchandise.js +0 -130
  103. package/dist/cjs/form/ReleaseWithMerchandise.js.map +0 -1
  104. package/dist/cjs/form/ScriptLoader.js +0 -21
  105. package/dist/cjs/form/ScriptLoader.js.map +0 -1
  106. package/dist/cjs/form/Shipping.js +0 -119
  107. package/dist/cjs/form/Shipping.js.map +0 -1
  108. package/dist/cjs/form/TicketForm.js +0 -470
  109. package/dist/cjs/form/TicketForm.js.map +0 -1
  110. package/dist/cjs/form/TicketSelection.js +0 -177
  111. package/dist/cjs/form/TicketSelection.js.map +0 -1
  112. package/dist/cjs/form/TicketSelectionMap.js +0 -67
  113. package/dist/cjs/form/TicketSelectionMap.js.map +0 -1
  114. package/dist/cjs/form/TicketWithMerchandiseSelection.js +0 -121
  115. package/dist/cjs/form/TicketWithMerchandiseSelection.js.map +0 -1
  116. package/dist/cjs/form/TimeslotSelection.js +0 -68
  117. package/dist/cjs/form/TimeslotSelection.js.map +0 -1
  118. package/dist/cjs/form/extra-field/ExtraField.js +0 -20
  119. package/dist/cjs/form/extra-field/ExtraField.js.map +0 -1
  120. package/dist/cjs/form/extra-field/ReleaseExtraFields.js +0 -60
  121. package/dist/cjs/form/extra-field/ReleaseExtraFields.js.map +0 -1
  122. package/dist/cjs/form/index.js +0 -69
  123. package/dist/cjs/form/index.js.map +0 -1
  124. package/dist/cjs/form/payment/FeeBox.js +0 -42
  125. package/dist/cjs/form/payment/FeeBox.js.map +0 -1
  126. package/dist/cjs/form/payment/PaymentOverviewCheckbox.js +0 -48
  127. package/dist/cjs/form/payment/PaymentOverviewCheckbox.js.map +0 -1
  128. package/dist/cjs/form/payment/PaymentSkeleton.js +0 -14
  129. package/dist/cjs/form/payment/PaymentSkeleton.js.map +0 -1
  130. package/dist/cjs/form/product/ProductCard.js +0 -61
  131. package/dist/cjs/form/product/ProductCard.js.map +0 -1
  132. package/dist/cjs/form/product/ProductVariantsDialog.js +0 -173
  133. package/dist/cjs/form/product/ProductVariantsDialog.js.map +0 -1
  134. package/dist/cjs/form/shipping/ShippingSkeleton.js +0 -14
  135. package/dist/cjs/form/shipping/ShippingSkeleton.js.map +0 -1
  136. package/dist/cjs/form/style.js +0 -50
  137. package/dist/cjs/form/style.js.map +0 -1
  138. package/dist/cjs/form/timeslot/TimeslotCalendar.js +0 -57
  139. package/dist/cjs/form/timeslot/TimeslotCalendar.js.map +0 -1
  140. package/dist/cjs/hooks/data/useActiveEventProducts.js +0 -22
  141. package/dist/cjs/hooks/data/useActiveEventProducts.js.map +0 -1
  142. package/dist/cjs/hooks/data/useAllowedPaymentMethods.js +0 -22
  143. package/dist/cjs/hooks/data/useAllowedPaymentMethods.js.map +0 -1
  144. package/dist/cjs/hooks/data/useEvent.js +0 -22
  145. package/dist/cjs/hooks/data/useEvent.js.map +0 -1
  146. package/dist/cjs/hooks/data/useEventActiveReleases.js +0 -26
  147. package/dist/cjs/hooks/data/useEventActiveReleases.js.map +0 -1
  148. package/dist/cjs/hooks/data/useEventShippingMethods.js +0 -22
  149. package/dist/cjs/hooks/data/useEventShippingMethods.js.map +0 -1
  150. package/dist/cjs/hooks/data/useEventTimeslots.js +0 -23
  151. package/dist/cjs/hooks/data/useEventTimeslots.js.map +0 -1
  152. package/dist/cjs/hooks/useCountdown.js +0 -40
  153. package/dist/cjs/hooks/useCountdown.js.map +0 -1
  154. package/dist/cjs/hooks/useDebounce.js +0 -17
  155. package/dist/cjs/hooks/useDebounce.js.map +0 -1
  156. package/dist/cjs/hooks/useErrors.js +0 -28
  157. package/dist/cjs/hooks/useErrors.js.map +0 -1
  158. package/dist/cjs/hooks/useFirstRender.js +0 -14
  159. package/dist/cjs/hooks/useFirstRender.js.map +0 -1
  160. package/dist/cjs/hooks/useGlobal.js +0 -11
  161. package/dist/cjs/hooks/useGlobal.js.map +0 -1
  162. package/dist/cjs/hooks/useResponsive.js +0 -29
  163. package/dist/cjs/hooks/useResponsive.js.map +0 -1
  164. package/dist/cjs/index.js.map +0 -1
  165. package/dist/cjs/locales/cs.js +0 -163
  166. package/dist/cjs/locales/cs.js.map +0 -1
  167. package/dist/cjs/locales/en.js +0 -164
  168. package/dist/cjs/locales/en.js.map +0 -1
  169. package/dist/cjs/locales/es.js +0 -164
  170. package/dist/cjs/locales/es.js.map +0 -1
  171. package/dist/cjs/locales/index.js +0 -18
  172. package/dist/cjs/locales/index.js.map +0 -1
  173. package/dist/cjs/locales/pl.js +0 -164
  174. package/dist/cjs/locales/pl.js.map +0 -1
  175. package/dist/cjs/locales/sk.js +0 -164
  176. package/dist/cjs/locales/sk.js.map +0 -1
  177. package/dist/cjs/locales/uk.js +0 -164
  178. package/dist/cjs/locales/uk.js.map +0 -1
  179. package/dist/cjs/modules/event-timeslot.js +0 -12
  180. package/dist/cjs/modules/event-timeslot.js.map +0 -1
  181. package/dist/cjs/modules/event.js +0 -24
  182. package/dist/cjs/modules/event.js.map +0 -1
  183. package/dist/cjs/modules/order.js +0 -14
  184. package/dist/cjs/modules/order.js.map +0 -1
  185. package/dist/cjs/modules/promo-code.js +0 -13
  186. package/dist/cjs/modules/promo-code.js.map +0 -1
  187. package/dist/cjs/modules/shopping-cart.js +0 -16
  188. package/dist/cjs/modules/shopping-cart.js.map +0 -1
  189. package/dist/cjs/utils/axios.js +0 -20
  190. package/dist/cjs/utils/axios.js.map +0 -1
  191. package/dist/cjs/utils/data/cookie.js +0 -6
  192. package/dist/cjs/utils/data/cookie.js.map +0 -1
  193. package/dist/cjs/utils/data/currency.js +0 -9
  194. package/dist/cjs/utils/data/currency.js.map +0 -1
  195. package/dist/cjs/utils/data/event.js +0 -8
  196. package/dist/cjs/utils/data/event.js.map +0 -1
  197. package/dist/cjs/utils/data/extra-field.js +0 -16
  198. package/dist/cjs/utils/data/extra-field.js.map +0 -1
  199. package/dist/cjs/utils/data/gender.js +0 -9
  200. package/dist/cjs/utils/data/gender.js.map +0 -1
  201. package/dist/cjs/utils/data/global.js +0 -6
  202. package/dist/cjs/utils/data/global.js.map +0 -1
  203. package/dist/cjs/utils/data/gopay.js +0 -14
  204. package/dist/cjs/utils/data/gopay.js.map +0 -1
  205. package/dist/cjs/utils/data/language.js +0 -14
  206. package/dist/cjs/utils/data/language.js.map +0 -1
  207. package/dist/cjs/utils/data/lottie/bank-transfer.json.js +0 -20
  208. package/dist/cjs/utils/data/lottie/bank-transfer.json.js.map +0 -1
  209. package/dist/cjs/utils/data/promo-code.js +0 -8
  210. package/dist/cjs/utils/data/promo-code.js.map +0 -1
  211. package/dist/cjs/utils/data/shipping-method.js +0 -8
  212. package/dist/cjs/utils/data/shipping-method.js.map +0 -1
  213. package/dist/cjs/utils/formatNumber.js +0 -19
  214. package/dist/cjs/utils/formatNumber.js.map +0 -1
  215. package/dist/cjs/utils/global.js +0 -26
  216. package/dist/cjs/utils/global.js.map +0 -1
  217. package/dist/cjs/utils/gtm.js +0 -125
  218. package/dist/cjs/utils/gtm.js.map +0 -1
  219. package/dist/cjs/utils/isBrowser.js +0 -6
  220. package/dist/cjs/utils/isBrowser.js.map +0 -1
  221. package/dist/cjs/utils/place.js +0 -6
  222. package/dist/cjs/utils/place.js.map +0 -1
  223. package/dist/cjs/utils/price.js +0 -15
  224. package/dist/cjs/utils/price.js.map +0 -1
  225. package/dist/cjs/utils/product.js +0 -29
  226. package/dist/cjs/utils/product.js.map +0 -1
  227. package/dist/cjs/utils/translation.js +0 -6
  228. package/dist/cjs/utils/translation.js.map +0 -1
  229. package/dist/cjs/utils/url.js +0 -18
  230. package/dist/cjs/utils/url.js.map +0 -1
  231. package/dist/esm/components/ClientOnly.js +0 -15
  232. package/dist/esm/components/ClientOnly.js.map +0 -1
  233. package/dist/esm/components/CustomSkeleton.js +0 -11
  234. package/dist/esm/components/CustomSkeleton.js.map +0 -1
  235. package/dist/esm/components/Image.js +0 -52
  236. package/dist/esm/components/Image.js.map +0 -1
  237. package/dist/esm/components/Label.js +0 -61
  238. package/dist/esm/components/Label.js.map +0 -1
  239. package/dist/esm/components/TextIconLabel.js +0 -15
  240. package/dist/esm/components/TextIconLabel.js.map +0 -1
  241. package/dist/esm/components/TicketFormSkeleton.js +0 -51
  242. package/dist/esm/components/TicketFormSkeleton.js.map +0 -1
  243. package/dist/esm/components/Trans.js +0 -85
  244. package/dist/esm/components/Trans.js.map +0 -1
  245. package/dist/esm/components/animate/IconButtonAnimate.js +0 -27
  246. package/dist/esm/components/animate/IconButtonAnimate.js.map +0 -1
  247. package/dist/esm/components/animate/MotionContainer.js +0 -14
  248. package/dist/esm/components/animate/MotionContainer.js.map +0 -1
  249. package/dist/esm/components/animate/variants/bounce.js +0 -96
  250. package/dist/esm/components/animate/variants/bounce.js.map +0 -1
  251. package/dist/esm/components/animate/variants/container.js +0 -23
  252. package/dist/esm/components/animate/variants/container.js.map +0 -1
  253. package/dist/esm/components/animate/variants/transition.js +0 -14
  254. package/dist/esm/components/animate/variants/transition.js.map +0 -1
  255. package/dist/esm/components/confirm-dialog/ConfirmDialog.js +0 -20
  256. package/dist/esm/components/confirm-dialog/ConfirmDialog.js.map +0 -1
  257. package/dist/esm/components/hook-form/FormProvider.js +0 -10
  258. package/dist/esm/components/hook-form/FormProvider.js.map +0 -1
  259. package/dist/esm/components/hook-form/RHFCheckbox.js +0 -13
  260. package/dist/esm/components/hook-form/RHFCheckbox.js.map +0 -1
  261. package/dist/esm/components/hook-form/RHFDatePicker.js +0 -18
  262. package/dist/esm/components/hook-form/RHFDatePicker.js.map +0 -1
  263. package/dist/esm/components/hook-form/RHFPhone.js +0 -20
  264. package/dist/esm/components/hook-form/RHFPhone.js.map +0 -1
  265. package/dist/esm/components/hook-form/RHFRadioGroup.js +0 -25
  266. package/dist/esm/components/hook-form/RHFRadioGroup.js.map +0 -1
  267. package/dist/esm/components/hook-form/RHFSelect.js +0 -32
  268. package/dist/esm/components/hook-form/RHFSelect.js.map +0 -1
  269. package/dist/esm/components/hook-form/RHFTextField.js +0 -11
  270. package/dist/esm/components/hook-form/RHFTextField.js.map +0 -1
  271. package/dist/esm/components/iconify/Iconify.js +0 -10
  272. package/dist/esm/components/iconify/Iconify.js.map +0 -1
  273. package/dist/esm/context/GlobalContext.js +0 -62
  274. package/dist/esm/context/GlobalContext.js.map +0 -1
  275. package/dist/esm/form/ChildEventCard.js +0 -56
  276. package/dist/esm/form/ChildEventCard.js.map +0 -1
  277. package/dist/esm/form/ChildEventDialog.js +0 -26
  278. package/dist/esm/form/ChildEventDialog.js.map +0 -1
  279. package/dist/esm/form/ChildEvents.js +0 -13
  280. package/dist/esm/form/ChildEvents.js.map +0 -1
  281. package/dist/esm/form/ContactPerson.js +0 -36
  282. package/dist/esm/form/ContactPerson.js.map +0 -1
  283. package/dist/esm/form/EmailConfirmation.js +0 -24
  284. package/dist/esm/form/EmailConfirmation.js.map +0 -1
  285. package/dist/esm/form/MerchandiseSelection.js +0 -13
  286. package/dist/esm/form/MerchandiseSelection.js.map +0 -1
  287. package/dist/esm/form/OrderSuccess.js +0 -53
  288. package/dist/esm/form/OrderSuccess.js.map +0 -1
  289. package/dist/esm/form/Payment.js +0 -210
  290. package/dist/esm/form/Payment.js.map +0 -1
  291. package/dist/esm/form/PaymentOverviewBox.js +0 -409
  292. package/dist/esm/form/PaymentOverviewBox.js.map +0 -1
  293. package/dist/esm/form/PaymentPending.js +0 -22
  294. package/dist/esm/form/PaymentPending.js.map +0 -1
  295. package/dist/esm/form/PaymentSuccess.js +0 -199
  296. package/dist/esm/form/PaymentSuccess.js.map +0 -1
  297. package/dist/esm/form/ReleaseCountdown.js +0 -30
  298. package/dist/esm/form/ReleaseCountdown.js.map +0 -1
  299. package/dist/esm/form/ReleaseWithMerchandise.js +0 -126
  300. package/dist/esm/form/ReleaseWithMerchandise.js.map +0 -1
  301. package/dist/esm/form/ScriptLoader.js +0 -17
  302. package/dist/esm/form/ScriptLoader.js.map +0 -1
  303. package/dist/esm/form/Shipping.js +0 -115
  304. package/dist/esm/form/Shipping.js.map +0 -1
  305. package/dist/esm/form/TicketForm.js +0 -447
  306. package/dist/esm/form/TicketForm.js.map +0 -1
  307. package/dist/esm/form/TicketSelection.js +0 -173
  308. package/dist/esm/form/TicketSelection.js.map +0 -1
  309. package/dist/esm/form/TicketSelectionMap.js +0 -63
  310. package/dist/esm/form/TicketSelectionMap.js.map +0 -1
  311. package/dist/esm/form/TicketWithMerchandiseSelection.js +0 -117
  312. package/dist/esm/form/TicketWithMerchandiseSelection.js.map +0 -1
  313. package/dist/esm/form/TimeslotSelection.js +0 -64
  314. package/dist/esm/form/TimeslotSelection.js.map +0 -1
  315. package/dist/esm/form/extra-field/ExtraField.js +0 -16
  316. package/dist/esm/form/extra-field/ExtraField.js.map +0 -1
  317. package/dist/esm/form/extra-field/ReleaseExtraFields.js +0 -56
  318. package/dist/esm/form/extra-field/ReleaseExtraFields.js.map +0 -1
  319. package/dist/esm/form/index.js +0 -65
  320. package/dist/esm/form/index.js.map +0 -1
  321. package/dist/esm/form/payment/FeeBox.js +0 -38
  322. package/dist/esm/form/payment/FeeBox.js.map +0 -1
  323. package/dist/esm/form/payment/PaymentOverviewCheckbox.js +0 -44
  324. package/dist/esm/form/payment/PaymentOverviewCheckbox.js.map +0 -1
  325. package/dist/esm/form/payment/PaymentSkeleton.js +0 -10
  326. package/dist/esm/form/payment/PaymentSkeleton.js.map +0 -1
  327. package/dist/esm/form/product/ProductCard.js +0 -57
  328. package/dist/esm/form/product/ProductCard.js.map +0 -1
  329. package/dist/esm/form/product/ProductVariantsDialog.js +0 -169
  330. package/dist/esm/form/product/ProductVariantsDialog.js.map +0 -1
  331. package/dist/esm/form/shipping/ShippingSkeleton.js +0 -10
  332. package/dist/esm/form/shipping/ShippingSkeleton.js.map +0 -1
  333. package/dist/esm/form/style.js +0 -44
  334. package/dist/esm/form/style.js.map +0 -1
  335. package/dist/esm/form/timeslot/TimeslotCalendar.js +0 -53
  336. package/dist/esm/form/timeslot/TimeslotCalendar.js.map +0 -1
  337. package/dist/esm/hooks/data/useActiveEventProducts.js +0 -18
  338. package/dist/esm/hooks/data/useActiveEventProducts.js.map +0 -1
  339. package/dist/esm/hooks/data/useAllowedPaymentMethods.js +0 -18
  340. package/dist/esm/hooks/data/useAllowedPaymentMethods.js.map +0 -1
  341. package/dist/esm/hooks/data/useEvent.js +0 -18
  342. package/dist/esm/hooks/data/useEvent.js.map +0 -1
  343. package/dist/esm/hooks/data/useEventActiveReleases.js +0 -22
  344. package/dist/esm/hooks/data/useEventActiveReleases.js.map +0 -1
  345. package/dist/esm/hooks/data/useEventShippingMethods.js +0 -18
  346. package/dist/esm/hooks/data/useEventShippingMethods.js.map +0 -1
  347. package/dist/esm/hooks/data/useEventTimeslots.js +0 -19
  348. package/dist/esm/hooks/data/useEventTimeslots.js.map +0 -1
  349. package/dist/esm/hooks/useCountdown.js +0 -36
  350. package/dist/esm/hooks/useCountdown.js.map +0 -1
  351. package/dist/esm/hooks/useDebounce.js +0 -13
  352. package/dist/esm/hooks/useDebounce.js.map +0 -1
  353. package/dist/esm/hooks/useErrors.js +0 -24
  354. package/dist/esm/hooks/useErrors.js.map +0 -1
  355. package/dist/esm/hooks/useFirstRender.js +0 -12
  356. package/dist/esm/hooks/useFirstRender.js.map +0 -1
  357. package/dist/esm/hooks/useGlobal.js +0 -7
  358. package/dist/esm/hooks/useGlobal.js.map +0 -1
  359. package/dist/esm/hooks/useResponsive.js +0 -25
  360. package/dist/esm/hooks/useResponsive.js.map +0 -1
  361. package/dist/esm/index.js +0 -6
  362. package/dist/esm/index.js.map +0 -1
  363. package/dist/esm/locales/cs.js +0 -159
  364. package/dist/esm/locales/cs.js.map +0 -1
  365. package/dist/esm/locales/en.js +0 -160
  366. package/dist/esm/locales/en.js.map +0 -1
  367. package/dist/esm/locales/es.js +0 -160
  368. package/dist/esm/locales/es.js.map +0 -1
  369. package/dist/esm/locales/index.js +0 -7
  370. package/dist/esm/locales/index.js.map +0 -1
  371. package/dist/esm/locales/pl.js +0 -160
  372. package/dist/esm/locales/pl.js.map +0 -1
  373. package/dist/esm/locales/sk.js +0 -160
  374. package/dist/esm/locales/sk.js.map +0 -1
  375. package/dist/esm/locales/uk.js +0 -160
  376. package/dist/esm/locales/uk.js.map +0 -1
  377. package/dist/esm/modules/event-timeslot.js +0 -10
  378. package/dist/esm/modules/event-timeslot.js.map +0 -1
  379. package/dist/esm/modules/event.js +0 -19
  380. package/dist/esm/modules/event.js.map +0 -1
  381. package/dist/esm/modules/order.js +0 -10
  382. package/dist/esm/modules/order.js.map +0 -1
  383. package/dist/esm/modules/promo-code.js +0 -11
  384. package/dist/esm/modules/promo-code.js.map +0 -1
  385. package/dist/esm/modules/shopping-cart.js +0 -13
  386. package/dist/esm/modules/shopping-cart.js.map +0 -1
  387. package/dist/esm/utils/axios.js +0 -16
  388. package/dist/esm/utils/axios.js.map +0 -1
  389. package/dist/esm/utils/data/cookie.js +0 -4
  390. package/dist/esm/utils/data/cookie.js.map +0 -1
  391. package/dist/esm/utils/data/currency.js +0 -9
  392. package/dist/esm/utils/data/currency.js.map +0 -1
  393. package/dist/esm/utils/data/event.js +0 -8
  394. package/dist/esm/utils/data/event.js.map +0 -1
  395. package/dist/esm/utils/data/extra-field.js +0 -16
  396. package/dist/esm/utils/data/extra-field.js.map +0 -1
  397. package/dist/esm/utils/data/gender.js +0 -9
  398. package/dist/esm/utils/data/gender.js.map +0 -1
  399. package/dist/esm/utils/data/global.js +0 -4
  400. package/dist/esm/utils/data/global.js.map +0 -1
  401. package/dist/esm/utils/data/gopay.js +0 -14
  402. package/dist/esm/utils/data/gopay.js.map +0 -1
  403. package/dist/esm/utils/data/language.js +0 -14
  404. package/dist/esm/utils/data/language.js.map +0 -1
  405. package/dist/esm/utils/data/lottie/bank-transfer.json.js +0 -4
  406. package/dist/esm/utils/data/lottie/bank-transfer.json.js.map +0 -1
  407. package/dist/esm/utils/data/promo-code.js +0 -8
  408. package/dist/esm/utils/data/promo-code.js.map +0 -1
  409. package/dist/esm/utils/data/shipping-method.js +0 -8
  410. package/dist/esm/utils/data/shipping-method.js.map +0 -1
  411. package/dist/esm/utils/formatNumber.js +0 -17
  412. package/dist/esm/utils/formatNumber.js.map +0 -1
  413. package/dist/esm/utils/global.js +0 -21
  414. package/dist/esm/utils/global.js.map +0 -1
  415. package/dist/esm/utils/gtm.js +0 -112
  416. package/dist/esm/utils/gtm.js.map +0 -1
  417. package/dist/esm/utils/isBrowser.js +0 -4
  418. package/dist/esm/utils/isBrowser.js.map +0 -1
  419. package/dist/esm/utils/place.js +0 -4
  420. package/dist/esm/utils/place.js.map +0 -1
  421. package/dist/esm/utils/price.js +0 -12
  422. package/dist/esm/utils/price.js.map +0 -1
  423. package/dist/esm/utils/product.js +0 -27
  424. package/dist/esm/utils/product.js.map +0 -1
  425. package/dist/esm/utils/translation.js +0 -4
  426. package/dist/esm/utils/translation.js.map +0 -1
  427. package/dist/esm/utils/url.js +0 -16
  428. package/dist/esm/utils/url.js.map +0 -1
  429. package/dist/types/components/ClientOnly.d.ts +0 -5
  430. package/dist/types/components/CustomSkeleton.d.ts +0 -4
  431. package/dist/types/components/Image.d.ts +0 -14
  432. package/dist/types/components/Label.d.ts +0 -11
  433. package/dist/types/components/TextIconLabel.d.ts +0 -11
  434. package/dist/types/components/TicketFormSkeleton.d.ts +0 -3
  435. package/dist/types/components/Trans.d.ts +0 -12
  436. package/dist/types/components/animate/DialogAnimate.d.ts +0 -9
  437. package/dist/types/components/animate/IconButtonAnimate.d.ts +0 -7
  438. package/dist/types/components/animate/MotionContainer.d.ts +0 -10
  439. package/dist/types/components/animate/MotionLazyContainer.d.ts +0 -6
  440. package/dist/types/components/animate/MotionViewport.d.ts +0 -10
  441. package/dist/types/components/animate/TextAnimate.d.ts +0 -9
  442. package/dist/types/components/animate/index.d.ts +0 -7
  443. package/dist/types/components/animate/variants/actions.d.ts +0 -5
  444. package/dist/types/components/animate/variants/background.d.ts +0 -104
  445. package/dist/types/components/animate/variants/bounce.d.ts +0 -131
  446. package/dist/types/components/animate/variants/container.d.ts +0 -19
  447. package/dist/types/components/animate/variants/fade.d.ts +0 -217
  448. package/dist/types/components/animate/variants/flip.d.ts +0 -75
  449. package/dist/types/components/animate/variants/index.d.ts +0 -12
  450. package/dist/types/components/animate/variants/path.d.ts +0 -14
  451. package/dist/types/components/animate/variants/rotate.d.ts +0 -39
  452. package/dist/types/components/animate/variants/scale.d.ts +0 -75
  453. package/dist/types/components/animate/variants/slide.d.ts +0 -155
  454. package/dist/types/components/animate/variants/transition.d.ts +0 -13
  455. package/dist/types/components/animate/variants/zoom.d.ts +0 -199
  456. package/dist/types/components/confirm-dialog/ConfirmDialog.d.ts +0 -3
  457. package/dist/types/components/confirm-dialog/index.d.ts +0 -1
  458. package/dist/types/components/confirm-dialog/types.d.ts +0 -8
  459. package/dist/types/components/hook-form/FormProvider.d.ts +0 -9
  460. package/dist/types/components/hook-form/RHFAutocomplete.d.ts +0 -9
  461. package/dist/types/components/hook-form/RHFCheckbox.d.ts +0 -20
  462. package/dist/types/components/hook-form/RHFCodes.d.ts +0 -8
  463. package/dist/types/components/hook-form/RHFDatePicker.d.ts +0 -9
  464. package/dist/types/components/hook-form/RHFPhone.d.ts +0 -8
  465. package/dist/types/components/hook-form/RHFRadioGroup.d.ts +0 -14
  466. package/dist/types/components/hook-form/RHFSelect.d.ts +0 -23
  467. package/dist/types/components/hook-form/RHFSlider.d.ts +0 -8
  468. package/dist/types/components/hook-form/RHFSwitch.d.ts +0 -8
  469. package/dist/types/components/hook-form/RHFTextField.d.ts +0 -7
  470. package/dist/types/components/hook-form/index.d.ts +0 -9
  471. package/dist/types/components/iconify/Iconify.d.ts +0 -10
  472. package/dist/types/components/iconify/index.d.ts +0 -2
  473. package/dist/types/components/iconify/types.d.ts +0 -2
  474. package/dist/types/components/index.d.ts +0 -4
  475. package/dist/types/context/GlobalContext.d.ts +0 -16
  476. package/dist/types/form/ChildEventCard.d.ts +0 -7
  477. package/dist/types/form/ChildEventDialog.d.ts +0 -9
  478. package/dist/types/form/ChildEvents.d.ts +0 -8
  479. package/dist/types/form/ContactPerson.d.ts +0 -7
  480. package/dist/types/form/EmailConfirmation.d.ts +0 -8
  481. package/dist/types/form/MerchandiseSelection.d.ts +0 -9
  482. package/dist/types/form/OrderSuccess.d.ts +0 -9
  483. package/dist/types/form/Payment.d.ts +0 -7
  484. package/dist/types/form/PaymentOverviewBox.d.ts +0 -7
  485. package/dist/types/form/PaymentPending.d.ts +0 -3
  486. package/dist/types/form/PaymentSuccess.d.ts +0 -9
  487. package/dist/types/form/ReleaseCountdown.d.ts +0 -8
  488. package/dist/types/form/ReleaseWithMerchandise.d.ts +0 -12
  489. package/dist/types/form/ScriptLoader.d.ts +0 -3
  490. package/dist/types/form/Shipping.d.ts +0 -7
  491. package/dist/types/form/TicketForm.d.ts +0 -11
  492. package/dist/types/form/TicketSelection.d.ts +0 -7
  493. package/dist/types/form/TicketSelectionMap.d.ts +0 -7
  494. package/dist/types/form/TicketWithMerchandiseSelection.d.ts +0 -7
  495. package/dist/types/form/TimeslotSelection.d.ts +0 -7
  496. package/dist/types/form/extra-field/ExtraField.d.ts +0 -9
  497. package/dist/types/form/extra-field/ReleaseExtraFields.d.ts +0 -10
  498. package/dist/types/form/index.d.ts +0 -26
  499. package/dist/types/form/payment/FeeBox.d.ts +0 -8
  500. package/dist/types/form/payment/PaymentOverviewCheckbox.d.ts +0 -12
  501. package/dist/types/form/payment/PaymentSkeleton.d.ts +0 -7
  502. package/dist/types/form/product/ProductCard.d.ts +0 -9
  503. package/dist/types/form/product/ProductVariantsDialog.d.ts +0 -14
  504. package/dist/types/form/shipping/ShippingSkeleton.d.ts +0 -7
  505. package/dist/types/form/style.d.ts +0 -11
  506. package/dist/types/form/timeslot/TimeslotCalendar.d.ts +0 -12
  507. package/dist/types/hooks/data/useActiveEventProducts.d.ts +0 -8
  508. package/dist/types/hooks/data/useAllowedPaymentMethods.d.ts +0 -9
  509. package/dist/types/hooks/data/useEvent.d.ts +0 -8
  510. package/dist/types/hooks/data/useEventActiveReleases.d.ts +0 -8
  511. package/dist/types/hooks/data/useEventShippingMethods.d.ts +0 -8
  512. package/dist/types/hooks/data/useEventTimeslots.d.ts +0 -10
  513. package/dist/types/hooks/useCountdown.d.ts +0 -6
  514. package/dist/types/hooks/useDebounce.d.ts +0 -1
  515. package/dist/types/hooks/useErrors.d.ts +0 -4
  516. package/dist/types/hooks/useEventListener.d.ts +0 -5
  517. package/dist/types/hooks/useFirstRender.d.ts +0 -1
  518. package/dist/types/hooks/useGlobal.d.ts +0 -2
  519. package/dist/types/hooks/useResponsive.d.ts +0 -8
  520. package/dist/types/index.d.ts +0 -4
  521. package/dist/types/locales/cs.d.ts +0 -157
  522. package/dist/types/locales/en.d.ts +0 -158
  523. package/dist/types/locales/es.d.ts +0 -158
  524. package/dist/types/locales/index.d.ts +0 -6
  525. package/dist/types/locales/pl.d.ts +0 -158
  526. package/dist/types/locales/sk.d.ts +0 -158
  527. package/dist/types/locales/uk.d.ts +0 -158
  528. package/dist/types/modules/event-timeslot.d.ts +0 -2
  529. package/dist/types/modules/event.d.ts +0 -5
  530. package/dist/types/modules/order.d.ts +0 -7
  531. package/dist/types/modules/promo-code.d.ts +0 -1
  532. package/dist/types/modules/shopping-cart.d.ts +0 -4
  533. package/dist/types/utils/axios.d.ts +0 -2
  534. package/dist/types/utils/data/cookie.d.ts +0 -1
  535. package/dist/types/utils/data/currency.d.ts +0 -5
  536. package/dist/types/utils/data/event.d.ts +0 -4
  537. package/dist/types/utils/data/extra-field.d.ts +0 -11
  538. package/dist/types/utils/data/gender.d.ts +0 -5
  539. package/dist/types/utils/data/global.d.ts +0 -1
  540. package/dist/types/utils/data/gopay.d.ts +0 -10
  541. package/dist/types/utils/data/language.d.ts +0 -10
  542. package/dist/types/utils/data/order.d.ts +0 -4
  543. package/dist/types/utils/data/product.d.ts +0 -3
  544. package/dist/types/utils/data/promo-code.d.ts +0 -4
  545. package/dist/types/utils/data/shipping-method.d.ts +0 -4
  546. package/dist/types/utils/data/shopping-cart.d.ts +0 -5
  547. package/dist/types/utils/formatNumber.d.ts +0 -8
  548. package/dist/types/utils/global.d.ts +0 -4
  549. package/dist/types/utils/gtm.d.ts +0 -28
  550. package/dist/types/utils/isBrowser.d.ts +0 -1
  551. package/dist/types/utils/place.d.ts +0 -2
  552. package/dist/types/utils/price.d.ts +0 -5
  553. package/dist/types/utils/product.d.ts +0 -3
  554. package/dist/types/utils/translation.d.ts +0 -2
  555. package/dist/types/utils/types/animate.d.ts +0 -26
  556. package/dist/types/utils/types/artist.type.d.ts +0 -17
  557. package/dist/types/utils/types/company.type.d.ts +0 -12
  558. package/dist/types/utils/types/country.type.d.ts +0 -39
  559. package/dist/types/utils/types/customer.type.d.ts +0 -10
  560. package/dist/types/utils/types/event-product.type.d.ts +0 -15
  561. package/dist/types/utils/types/event-timeslot.type.d.ts +0 -15
  562. package/dist/types/utils/types/event.type.d.ts +0 -67
  563. package/dist/types/utils/types/extra-field.type.d.ts +0 -18
  564. package/dist/types/utils/types/file.type.d.ts +0 -6
  565. package/dist/types/utils/types/global.type.d.ts +0 -76
  566. package/dist/types/utils/types/gtm.type.d.ts +0 -90
  567. package/dist/types/utils/types/locale.type.d.ts +0 -4
  568. package/dist/types/utils/types/order.type.d.ts +0 -69
  569. package/dist/types/utils/types/palette.type.d.ts +0 -1
  570. package/dist/types/utils/types/payment-method.type.d.ts +0 -23
  571. package/dist/types/utils/types/pixel.type.d.ts +0 -7
  572. package/dist/types/utils/types/place.type.d.ts +0 -19
  573. package/dist/types/utils/types/product-image.type.d.ts +0 -5
  574. package/dist/types/utils/types/product-parameter.type.d.ts +0 -7
  575. package/dist/types/utils/types/product-variant.type.d.ts +0 -9
  576. package/dist/types/utils/types/product.type.d.ts +0 -57
  577. package/dist/types/utils/types/project.type.d.ts +0 -24
  578. package/dist/types/utils/types/promo-code.type.d.ts +0 -15
  579. package/dist/types/utils/types/release-category.type.d.ts +0 -17
  580. package/dist/types/utils/types/release.type.d.ts +0 -28
  581. package/dist/types/utils/types/shipping-method.type.d.ts +0 -11
  582. package/dist/types/utils/types/shopping-cart.type.d.ts +0 -78
  583. package/dist/types/utils/types/ticket.type.d.ts +0 -110
  584. package/dist/types/utils/types/translation.type.d.ts +0 -18
  585. package/dist/types/utils/types/user.type.d.ts +0 -9
  586. package/dist/types/utils/url.d.ts +0 -1
  587. package/src/form/MerchandiseSelection.tsx +0 -29
  588. package/src/form/ReleaseWithMerchandise.tsx +0 -230
  589. /package/src/form/{TicketSelectionMap.tsx → tickets/TicketSelectionMap.tsx} +0 -0
@@ -0,0 +1,57 @@
1
+ import React from 'react';
2
+ import { Button, Collapse, Typography } from '@mui/material';
3
+ import { Iconify } from '@components/iconify';
4
+
5
+ interface ReleaseDescriptionProps {
6
+ description?: string | null;
7
+ isExpanded: boolean;
8
+ onToggle: () => void;
9
+ moreInfoLabel: string;
10
+ showCollapse?: boolean;
11
+ }
12
+
13
+ const ReleaseDescription: React.FC<ReleaseDescriptionProps> = ({
14
+ description,
15
+ isExpanded,
16
+ onToggle,
17
+ moreInfoLabel,
18
+ showCollapse = false,
19
+ }) => {
20
+ if (!description) return null;
21
+
22
+ if (showCollapse) {
23
+ return (
24
+ <Collapse in={isExpanded}>
25
+ <Typography variant="body2" color="text.secondary">
26
+ {description}
27
+ </Typography>
28
+ </Collapse>
29
+ );
30
+ }
31
+
32
+ return (
33
+ <Button
34
+ size="small"
35
+ onClick={onToggle}
36
+ endIcon={
37
+ <Iconify
38
+ sx={{ width: 24, height: 24 }}
39
+ icon={isExpanded ? 'eva:chevron-up-fill' : 'eva:chevron-down-fill'}
40
+ />
41
+ }
42
+ sx={{
43
+ px: 0,
44
+ minWidth: 'auto',
45
+ textTransform: 'none',
46
+ color: 'text.primary',
47
+ textDecoration: 'underline',
48
+ fontWeight: 400,
49
+ '& .MuiButton-endIcon': { ml: 0 },
50
+ }}
51
+ >
52
+ {moreInfoLabel}
53
+ </Button>
54
+ );
55
+ };
56
+
57
+ export default ReleaseDescription;
@@ -0,0 +1,237 @@
1
+ import React, { useCallback, useState } from 'react';
2
+ import { Box, Stack, Typography } from '@mui/material';
3
+ import ProductVariantsDialog from '@form/product/ProductVariantsDialog';
4
+ import TicketQuantityControl from '@form/tickets/TicketQuantityControl';
5
+ import { IReleaseShort } from '@utils/types/release.type';
6
+ import { ITicketForm, ITicketFormTicket } from '@utils/types/ticket.type';
7
+ import { useFormContext, useWatch } from 'react-hook-form';
8
+ import { IEventProductForm } from '@utils/types/product.type';
9
+ import { fCurrency } from '@utils/formatNumber';
10
+ import { Currencies } from '@utils/data/currency';
11
+ import { getSelectedQuantityByVariant } from '@utils/product';
12
+ import ReleaseExtraFields from '@form/extra-field/ReleaseExtraFields';
13
+ import ReleaseDescription from '@form/tickets/ReleaseDescription';
14
+ import useGlobal from '@hooks/useGlobal.ts';
15
+
16
+ interface Props {
17
+ eventId: number;
18
+ release: IReleaseShort;
19
+ activeReleases: IReleaseShort[];
20
+ currency: Currencies;
21
+ index: number;
22
+ }
23
+
24
+ const ReleaseWithMerchandise: React.FC<Props> = ({
25
+ eventId,
26
+ release,
27
+ activeReleases,
28
+ currency,
29
+ index,
30
+ }) => {
31
+ const { t, lang } = useGlobal();
32
+ const [openVariantDialog, setOpenVariantDialog] = useState<'add' | 'increase' | null>(null);
33
+ const [isDescriptionExpanded, setIsDescriptionExpanded] = useState(false);
34
+ const { setValue } = useFormContext<ITicketForm>();
35
+ const tickets: ITicketFormTicket[] = useWatch({ name: `tickets.${eventId}`, defaultValue: [] });
36
+ const products: IEventProductForm[] = useWatch({ name: `products.${eventId}`, defaultValue: [] });
37
+ const addedRelease = tickets.find((ticket) => ticket.releaseId === release.id);
38
+ const countTickets = addedRelease?.quantity || 0;
39
+
40
+ const getReleaseTitle = (release: IReleaseShort) =>
41
+ release.releaseCategoryName || release.name || '';
42
+
43
+ const getSelectedQuantity = (id: number) =>
44
+ tickets.find((ticket) => ticket.releaseId === id)?.quantity || 0;
45
+
46
+ const getAvailableTicketsForRelease = (release: ITicketFormTicket): number => {
47
+ const selectedRelease = activeReleases?.find((item) => item.id === release.releaseId);
48
+ const availableQuantity = selectedRelease ? selectedRelease.availableTickets : 0;
49
+ return availableQuantity > 10 ? 10 : availableQuantity;
50
+ };
51
+
52
+ const isMaxQuantity = (releaseId: number) => {
53
+ const release = tickets.find((ticket) => ticket.releaseId === releaseId);
54
+ if (!release) return false;
55
+ return getSelectedQuantity(releaseId) >= getAvailableTicketsForRelease(release);
56
+ };
57
+
58
+ const addRelease = (productsToAdd?: IEventProductForm[] | IEventProductForm) => {
59
+ const normalizedProducts = Array.isArray(productsToAdd)
60
+ ? productsToAdd
61
+ : productsToAdd
62
+ ? [productsToAdd]
63
+ : [];
64
+ const quantity = normalizedProducts.length ? normalizedProducts.length : 1;
65
+ const extraFields = release.extraFields?.length
66
+ ? Array.from({ length: quantity }, () =>
67
+ release.extraFields!.map((field) => ({
68
+ eventExtraFieldId: field.id,
69
+ value: '',
70
+ }))
71
+ )
72
+ : [];
73
+
74
+ setValue(`tickets.${eventId}`, [
75
+ ...tickets,
76
+ {
77
+ releaseId: release.id,
78
+ quantity,
79
+ itemName: '',
80
+ price: 0,
81
+ products: normalizedProducts,
82
+ extraFields,
83
+ },
84
+ ]);
85
+ setOpenVariantDialog(null);
86
+ };
87
+
88
+ const increaseQuantity = (productsToAdd?: IEventProductForm[] | IEventProductForm) => {
89
+ const normalizedProducts = Array.isArray(productsToAdd)
90
+ ? productsToAdd
91
+ : productsToAdd
92
+ ? [productsToAdd]
93
+ : [];
94
+ const addedRelease = tickets.find((ticket) => ticket.releaseId === release.id);
95
+ if (addedRelease) {
96
+ const increment = normalizedProducts.length ? normalizedProducts.length : 1;
97
+ const maxQuantity = getAvailableTicketsForRelease(addedRelease);
98
+ const availableIncrement = Math.max(
99
+ 0,
100
+ Math.min(increment, maxQuantity - Number(addedRelease.quantity))
101
+ );
102
+ if (availableIncrement === 0) return;
103
+
104
+ const newQuantity = Number(addedRelease.quantity) + availableIncrement;
105
+ const productsSlice = normalizedProducts.slice(0, availableIncrement);
106
+ const extraFieldsToAdd = release.extraFields?.length
107
+ ? Array.from({ length: availableIncrement }, () =>
108
+ release.extraFields!.map((field) => ({
109
+ eventExtraFieldId: field.id,
110
+ value: '',
111
+ }))
112
+ )
113
+ : [];
114
+
115
+ setValue(
116
+ `tickets.${eventId}`,
117
+ tickets.map((ticket) =>
118
+ ticket.releaseId === release.id
119
+ ? {
120
+ ...ticket,
121
+ quantity: newQuantity > maxQuantity ? maxQuantity : newQuantity,
122
+ products: [...ticket.products, ...productsSlice],
123
+ extraFields: release.extraFields?.length
124
+ ? [...ticket.extraFields, ...extraFieldsToAdd]
125
+ : [],
126
+ }
127
+ : ticket
128
+ )
129
+ );
130
+ setOpenVariantDialog(null);
131
+ }
132
+ };
133
+
134
+ const decreaseQuantity = useCallback(() => {
135
+ const addedRelease = tickets.find((ticket) => ticket.releaseId === release.id);
136
+ if (addedRelease) {
137
+ const newQuantity = Number(addedRelease.quantity) - 1;
138
+ if (newQuantity < 1) {
139
+ setValue(
140
+ `tickets.${eventId}`,
141
+ tickets.filter((ticket) => ticket.releaseId !== release.id)
142
+ );
143
+ } else {
144
+ setValue(
145
+ `tickets.${eventId}`,
146
+ tickets.map((ticket) => {
147
+ if (ticket.releaseId !== release.id) return ticket;
148
+
149
+ return {
150
+ ...ticket,
151
+ quantity: newQuantity,
152
+ products: ticket?.products?.slice(0, -1), // non-mutating "pop"
153
+ extraFields: ticket?.extraFields?.slice(0, -1),
154
+ };
155
+ })
156
+ );
157
+ }
158
+ }
159
+ }, [tickets, release.id, setValue]);
160
+
161
+ return (
162
+ <Box
163
+ sx={{
164
+ p: 1,
165
+ pb: 0,
166
+ borderRadius: 1,
167
+ bgcolor: (theme) =>
168
+ theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[800],
169
+ }}
170
+ >
171
+ <Stack spacing={0}>
172
+ <Box>
173
+ <Typography variant="subtitle1" fontWeight={600}>
174
+ {getReleaseTitle(release)}
175
+ </Typography>
176
+ </Box>
177
+
178
+ <Stack direction="row" alignItems="center" justifyContent="space-between">
179
+ <Stack>
180
+ <Typography variant="body2">
181
+ {release.price === 0 ? t('free') : fCurrency(release.price, lang, currency)}
182
+ </Typography>
183
+
184
+ <ReleaseDescription
185
+ description={release.description}
186
+ isExpanded={isDescriptionExpanded}
187
+ onToggle={() => setIsDescriptionExpanded((prev) => !prev)}
188
+ moreInfoLabel={t('more_info')}
189
+ />
190
+ </Stack>
191
+
192
+ <TicketQuantityControl
193
+ quantity={getSelectedQuantity(release.id)}
194
+ isDisabled={release.locked}
195
+ canAddFirst={!release.locked}
196
+ canAddMore={!isMaxQuantity(release.id)}
197
+ addLabel={t('add')}
198
+ onDecrement={() => decreaseQuantity()}
199
+ onIncrement={() =>
200
+ release.product ? setOpenVariantDialog('increase') : increaseQuantity()
201
+ }
202
+ onAddFirst={() => (release.product ? setOpenVariantDialog('add') : addRelease())}
203
+ />
204
+ </Stack>
205
+
206
+ <ReleaseDescription
207
+ description={release.description}
208
+ isExpanded={isDescriptionExpanded}
209
+ onToggle={() => setIsDescriptionExpanded((prev) => !prev)}
210
+ moreInfoLabel={t('more_info')}
211
+ showCollapse
212
+ />
213
+ {release.extraFields && release.extraFields.length > 0 && (
214
+ <ReleaseExtraFields
215
+ release={release}
216
+ eventId={eventId}
217
+ releaseIndex={index}
218
+ quantity={countTickets}
219
+ />
220
+ )}
221
+ {release.product && (
222
+ <ProductVariantsDialog
223
+ eventProduct={release.product}
224
+ openDialog={!!openVariantDialog}
225
+ callback={openVariantDialog === 'increase' ? increaseQuantity : addRelease}
226
+ onClose={() => setOpenVariantDialog(null)}
227
+ selectedQuantityByVariant={getSelectedQuantityByVariant(products, tickets)}
228
+ eventId={eventId}
229
+ canAddOnlyOneAtATime
230
+ />
231
+ )}
232
+ </Stack>
233
+ </Box>
234
+ );
235
+ };
236
+
237
+ export default ReleaseWithMerchandise;
@@ -0,0 +1,93 @@
1
+ import React from 'react';
2
+ import { Box, Button, IconButton, Stack } from '@mui/material';
3
+ import { Iconify } from '@components/iconify';
4
+
5
+ interface TicketQuantityControlProps {
6
+ quantity: number;
7
+ isDisabled: boolean;
8
+ canAddFirst: boolean;
9
+ canAddMore: boolean;
10
+ addLabel: string;
11
+ onDecrement: () => void;
12
+ onIncrement: () => void;
13
+ onAddFirst: () => void;
14
+ }
15
+
16
+ const TicketQuantityControl: React.FC<TicketQuantityControlProps> = ({
17
+ quantity,
18
+ isDisabled,
19
+ canAddFirst,
20
+ canAddMore,
21
+ addLabel,
22
+ onDecrement,
23
+ onIncrement,
24
+ onAddFirst,
25
+ }) => {
26
+ if (quantity > 0) {
27
+ return (
28
+ <Stack direction="row" spacing={{ xs: 0.5, md: 1 }} alignItems="center">
29
+ <IconButton
30
+ onClick={onDecrement}
31
+ disabled={isDisabled || quantity <= 0}
32
+ sx={{
33
+ width: { xs: 32, md: 40 },
34
+ height: { xs: 32, md: 40 },
35
+ borderRadius: 1,
36
+ border: '1px solid',
37
+ borderColor: 'grey.300',
38
+ }}
39
+ >
40
+ <Iconify icon="eva:minus-fill" />
41
+ </IconButton>
42
+ <Box
43
+ sx={{
44
+ width: { xs: 32, md: 40 },
45
+ height: { xs: 32, md: 40 },
46
+ borderRadius: 1,
47
+ border: '1px solid',
48
+ borderColor: 'grey.300',
49
+ display: 'flex',
50
+ alignItems: 'center',
51
+ justifyContent: 'center',
52
+ fontWeight: 600,
53
+ }}
54
+ >
55
+ {quantity}
56
+ </Box>
57
+ <IconButton
58
+ onClick={onIncrement}
59
+ disabled={isDisabled || !canAddMore}
60
+ sx={{
61
+ width: { xs: 32, md: 40 },
62
+ height: { xs: 32, md: 40 },
63
+ borderRadius: 1,
64
+ bgcolor: 'primary.main',
65
+ color: 'primary.contrastText',
66
+ '&:hover': { bgcolor: 'primary.dark' },
67
+ }}
68
+ >
69
+ <Iconify icon="eva:plus-fill" />
70
+ </IconButton>
71
+ </Stack>
72
+ );
73
+ }
74
+
75
+ return (
76
+ <Button
77
+ variant="contained"
78
+ onClick={onAddFirst}
79
+ disabled={isDisabled || !canAddFirst}
80
+ sx={{
81
+ height: { xs: 32, md: 40 },
82
+ borderRadius: 1,
83
+ px: 3,
84
+ textTransform: 'none',
85
+ fontWeight: 600,
86
+ }}
87
+ >
88
+ {addLabel}
89
+ </Button>
90
+ );
91
+ };
92
+
93
+ export default TicketQuantityControl;
@@ -2,7 +2,6 @@ import React, { useEffect, useRef, useState } from 'react';
2
2
  import { useFormContext, useWatch } from 'react-hook-form';
3
3
  import {
4
4
  Box,
5
- Button,
6
5
  Divider,
7
6
  Grid,
8
7
  IconButton,
@@ -18,12 +17,12 @@ import { fCurrency } from '@utils/formatNumber';
18
17
  import { Iconify } from '@components/iconify';
19
18
  import { groupBy } from '@utils/global';
20
19
  import { IReleaseShort } from '@utils/types/release.type';
21
- import FeeBox from '@form/payment/FeeBox';
22
20
  import { IEvent } from '@utils/types/event.type';
23
21
  import useResponsive from '@hooks/useResponsive';
24
22
  import ReleaseExtraFields from '@form/extra-field/ReleaseExtraFields';
25
23
  import { EventType } from '@utils/data/event';
26
24
  import useGlobal from '@hooks/useGlobal.ts';
25
+ import TicketSelectionMobile from './TicketSelectionMobile';
27
26
 
28
27
  interface Props {
29
28
  event: IEvent;
@@ -188,117 +187,147 @@ const TicketSelection: React.FC<Props> = ({ event }) => {
188
187
  };
189
188
 
190
189
  return (
191
- <Stack spacing={3} direction="column" divider={<Divider sx={{ borderStyle: 'dashed' }} />}>
192
- {tickets.map((item, index) => (
193
- <Box key={index}>
194
- <Grid container spacing={3}>
195
- <Grid item xs={12} md={6}>
196
- {showLoading ? (
197
- <Skeleton
198
- variant="rounded"
199
- sx={{
200
- width: '100%',
201
- height: (theme) => theme.spacing(7.5),
202
- }}
203
- />
204
- ) : (
205
- <RHFSelect
206
- name={`tickets.${event.id}.${index}.releaseId`}
207
- value={item.releaseId}
208
- label={
209
- index > 0
210
- ? t('form.labels.add_another_release')
211
- : t('form.labels.release_category_price')
212
- }
213
- maxHeight="calc(100vh - 2rem)"
214
- onChange={(e) => {
215
- setValue(`tickets.${event.id}.${index}.releaseId`, Number(e.target.value));
216
- setValue(`tickets.${event.id}.${index}.extraFields`, []);
217
- }}
218
- >
219
- <MenuItem key={0} value="">
220
- {t('choose')}
221
- </MenuItem>
222
- {activeReleases?.map((activeRelease) => (
223
- <MenuItem
224
- key={activeRelease.id}
225
- value={activeRelease.id}
226
- disabled={
227
- isReleaseSelected(activeRelease.id) ||
228
- (activeRelease.locked &&
229
- !soldOutReleaseCategoryNames.includes(activeRelease.releaseCategoryName))
230
- }
231
- >
232
- {activeRelease.releaseCategoryName} - {activeRelease.name}:{' '}
233
- {activeRelease.price === 0
234
- ? t('free')
235
- : fCurrency(activeRelease.price, lang, event.currency)}
236
- </MenuItem>
237
- ))}
238
- </RHFSelect>
239
- )}
240
- </Grid>
241
- <Grid key={index} item xs={12} md={6}>
242
- {showLoading ? (
243
- <Skeleton
244
- variant="rounded"
245
- sx={{
246
- width: '100%',
247
- height: (theme) => theme.spacing(7.5),
248
- }}
249
- />
250
- ) : (
251
- <Stack direction="row" alignItems="center" spacing={1}>
190
+ <Stack
191
+ spacing={3}
192
+ direction="column"
193
+ divider={!isMobile ? <Divider sx={{ borderStyle: 'dashed' }} /> : undefined}
194
+ >
195
+ <TicketSelectionMobile
196
+ event={event}
197
+ activeReleases={activeReleases}
198
+ showLoading={showLoading}
199
+ soldOutReleaseCategoryNames={soldOutReleaseCategoryNames}
200
+ tickets={tickets}
201
+ isQuantityDisabled={isQuantityDisabled}
202
+ setValue={setValue as (name: string, value: any) => void}
203
+ removeTicket={removeTicket}
204
+ getExtraFields={getExtraFields}
205
+ />
206
+ {/* {isMobile ? (
207
+ <TicketSelectionMobile
208
+ event={event}
209
+ activeReleases={activeReleases}
210
+ showLoading={showLoading}
211
+ soldOutReleaseCategoryNames={soldOutReleaseCategoryNames}
212
+ tickets={tickets}
213
+ isQuantityDisabled={isQuantityDisabled}
214
+ setValue={setValue as (name: string, value: any) => void}
215
+ removeTicket={removeTicket}
216
+ getExtraFields={getExtraFields}
217
+ />
218
+ ) : (
219
+ tickets.map((item, index) => (
220
+ <Box key={index}>
221
+ <Grid container spacing={3}>
222
+ <Grid item xs={12} md={6}>
223
+ {showLoading ? (
224
+ <Skeleton
225
+ variant="rounded"
226
+ sx={{
227
+ width: '100%',
228
+ height: (theme) => theme.spacing(7.5),
229
+ }}
230
+ />
231
+ ) : (
252
232
  <RHFSelect
253
- name={`tickets.${event.id}.${index}.quantity`}
254
- value={item.quantity}
255
- label={t('form.labels.quantity')}
233
+ name={`tickets.${event.id}.${index}.releaseId`}
234
+ value={item.releaseId}
235
+ label={
236
+ index > 0
237
+ ? t('form.labels.add_another_release')
238
+ : t('form.labels.release_category_price')
239
+ }
240
+ maxHeight="calc(100vh - 2rem)"
241
+ onChange={(e) => {
242
+ setValue(`tickets.${event.id}.${index}.releaseId`, Number(e.target.value));
243
+ setValue(`tickets.${event.id}.${index}.extraFields`, []);
244
+ }}
256
245
  >
257
- {[...Array(getAvailableTicketsForRelease(item))].map((_, index2) => (
246
+ <MenuItem key={0} value="">
247
+ {t('choose')}
248
+ </MenuItem>
249
+ {activeReleases?.map((activeRelease) => (
258
250
  <MenuItem
259
- key={index2}
260
- value={index2 + 1}
261
- disabled={isQuantityDisabled(index2 + 1, item.releaseId)}
251
+ key={activeRelease.id}
252
+ value={activeRelease.id}
253
+ disabled={
254
+ isReleaseSelected(activeRelease.id) ||
255
+ (activeRelease.locked &&
256
+ !soldOutReleaseCategoryNames.includes(
257
+ activeRelease.releaseCategoryName
258
+ ))
259
+ }
262
260
  >
263
- {index2 + 1}
261
+ {activeRelease.releaseCategoryName} - {activeRelease.name}:{' '}
262
+ {activeRelease.price === 0
263
+ ? t('free')
264
+ : fCurrency(activeRelease.price, lang, event.currency)}
264
265
  </MenuItem>
265
266
  ))}
266
- {!item.releaseId && (
267
- <MenuItem disabled sx={{ textTransform: 'unset!important' }}>
268
- {t('event.tickets.stepper.1.quantity_select')}
269
- </MenuItem>
270
- )}
271
267
  </RHFSelect>
272
- {item.releaseId && item.quantity && (
273
- <Box>
274
- <IconButton color="primary" onClick={() => removeTicket(index)}>
275
- <Iconify icon="carbon:trash-can" />
276
- </IconButton>
277
- </Box>
278
- )}
279
- </Stack>
280
- )}
268
+ )}
269
+ </Grid>
270
+ <Grid key={index} item xs={12} md={6}>
271
+ {showLoading ? (
272
+ <Skeleton
273
+ variant="rounded"
274
+ sx={{
275
+ width: '100%',
276
+ height: (theme) => theme.spacing(7.5),
277
+ }}
278
+ />
279
+ ) : (
280
+ <Stack direction="row" alignItems="center" spacing={1}>
281
+ <RHFSelect
282
+ name={`tickets.${event.id}.${index}.quantity`}
283
+ value={item.quantity}
284
+ label={t('form.labels.quantity')}
285
+ >
286
+ {[...Array(getAvailableTicketsForRelease(item))].map((_, index2) => (
287
+ <MenuItem
288
+ key={index2}
289
+ value={index2 + 1}
290
+ disabled={isQuantityDisabled(index2 + 1, item.releaseId)}
291
+ >
292
+ {index2 + 1}
293
+ </MenuItem>
294
+ ))}
295
+ {!item.releaseId && (
296
+ <MenuItem disabled sx={{ textTransform: 'unset!important' }}>
297
+ {t('event.tickets.stepper.1.quantity_select')}
298
+ </MenuItem>
299
+ )}
300
+ </RHFSelect>
301
+ {item.releaseId && item.quantity && (
302
+ <Box>
303
+ <IconButton color="primary" onClick={() => removeTicket(index)}>
304
+ <Iconify icon="carbon:trash-can" />
305
+ </IconButton>
306
+ </Box>
307
+ )}
308
+ </Stack>
309
+ )}
310
+ </Grid>
281
311
  </Grid>
282
- </Grid>
283
- {activeReleases && item.releaseId && (
284
- <Typography
285
- variant="caption"
286
- content="div"
287
- mt={2}
288
- mb={getRelease(item.releaseId)?.extraFields?.length ? 2 : 0}
289
- display="block"
290
- >
291
- {getRelease(item.releaseId)?.description ?? ''}
292
- </Typography>
293
- )}
294
- {getExtraFields(item.releaseId, index)}
295
- </Box>
296
- ))}
312
+ {activeReleases && item.releaseId && (
313
+ <Typography
314
+ variant="caption"
315
+ content="div"
316
+ mt={2}
317
+ mb={getRelease(item.releaseId)?.extraFields?.length ? 2 : 0}
318
+ display="block"
319
+ >
320
+ {getRelease(item.releaseId)?.description ?? ''}
321
+ </Typography>
322
+ )}
323
+ {getExtraFields(item.releaseId, index)}
324
+ </Box>
325
+ ))
326
+ )} */}
297
327
  <Box>
298
328
  <Typography variant="caption" component="div" fontStyle="italic" mb={2}>
299
329
  *{t('event.tickets.stepper.1.max_ticket_quantity')}
300
330
  </Typography>
301
- {isMobile && <FeeBox event={event} align="right" />}
302
331
  </Box>
303
332
  </Stack>
304
333
  );