@eventlook/sdk 1.4.44 → 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} +140 -105
  23. package/src/form/tickets/TicketSelectionMobile.tsx +175 -0
  24. package/src/form/{TicketWithMerchandiseSelection.tsx → tickets/TicketWithMerchandiseSelection.tsx} +15 -11
  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 -174
  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 -117
  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 -170
  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 -113
  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
@@ -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;
@@ -93,7 +92,7 @@ const TicketSelection: React.FC<Props> = ({ event }) => {
93
92
  const lockedSelectedReleases: boolean[] | undefined = releases?.map((item, index) => {
94
93
  const nextRelease = releases?.find(
95
94
  (item2) =>
96
- item2.releaseCategoryName === item.releaseCategoryName && item2.order === item.order++
95
+ item2.releaseCategoryName === item.releaseCategoryName && item2.order === item.order + 1
97
96
  );
98
97
  const selected = tickets.find((ticket) => ticket.releaseId === item.id);
99
98
  return !!nextRelease && item.locked && !!selected && index + 1 == tickets.length;
@@ -140,6 +139,10 @@ const TicketSelection: React.FC<Props> = ({ event }) => {
140
139
  soldOutReleaseCategories?.map((item) => item.releaseCategoryName) || []
141
140
  );
142
141
 
142
+ const hasSelectableRelease = activeReleases?.some(
143
+ (release) => !isReleaseSelected(release.id) && !release.locked
144
+ );
145
+
143
146
  const shouldAddRow =
144
147
  (soldOutReleaseCategories &&
145
148
  selectedReleaseIsSoldOut(releases) &&
@@ -155,6 +158,7 @@ const TicketSelection: React.FC<Props> = ({ event }) => {
155
158
  const shouldRemoveEmptyRows =
156
159
  allFilled.length > 0 &&
157
160
  tickets.length > 1 &&
161
+ !hasSelectableRelease &&
158
162
  (!soldOutReleaseCategories?.length || !selectedReleaseIsSoldOut(releases));
159
163
 
160
164
  if (shouldAddRow) {
@@ -172,127 +176,158 @@ const TicketSelection: React.FC<Props> = ({ event }) => {
172
176
  ]);
173
177
  setTimeout(() => (isProcessingRef.current = false), 0);
174
178
  } else if (shouldRemoveEmptyRows) {
175
- const filledTickets = tickets.filter((item) => item.releaseId && item.quantity);
176
- if (filledTickets.length < tickets.length) {
179
+ // Only remove completely empty rows (no releaseId), keep rows where user started selecting
180
+ const nonEmptyTickets = tickets.filter((item) => item.releaseId);
181
+ if (nonEmptyTickets.length < tickets.length) {
177
182
  isProcessingRef.current = true;
178
- setValue(`tickets.${event.id}`, filledTickets);
183
+ setValue(`tickets.${event.id}`, nonEmptyTickets);
179
184
  setTimeout(() => (isProcessingRef.current = false), 0);
180
185
  }
181
186
  }
182
187
  };
183
188
 
184
189
  return (
185
- <Stack spacing={3} direction="column" divider={<Divider sx={{ borderStyle: 'dashed' }} />}>
186
- {tickets.map((item, index) => (
187
- <Box key={index}>
188
- <Grid container spacing={3}>
189
- <Grid item xs={12} md={6}>
190
- {showLoading ? (
191
- <Skeleton
192
- variant="rounded"
193
- sx={{
194
- width: '100%',
195
- height: (theme) => theme.spacing(7.5),
196
- }}
197
- />
198
- ) : (
199
- <RHFSelect
200
- name={`tickets.${event.id}.${index}.releaseId`}
201
- value={item.releaseId}
202
- label={
203
- index > 0
204
- ? t('form.labels.add_another_release')
205
- : t('form.labels.release_category_price')
206
- }
207
- maxHeight="calc(100vh - 2rem)"
208
- onChange={(e) => {
209
- setValue(`tickets.${event.id}.${index}.releaseId`, Number(e.target.value));
210
- setValue(`tickets.${event.id}.${index}.extraFields`, []);
211
- }}
212
- >
213
- <MenuItem key={0} value="">
214
- {t('choose')}
215
- </MenuItem>
216
- {activeReleases?.map((activeRelease) => (
217
- <MenuItem
218
- key={activeRelease.id}
219
- value={activeRelease.id}
220
- disabled={
221
- isReleaseSelected(activeRelease.id) ||
222
- (activeRelease.locked &&
223
- !soldOutReleaseCategoryNames.includes(activeRelease.releaseCategoryName))
224
- }
225
- >
226
- {activeRelease.releaseCategoryName} - {activeRelease.name}:{' '}
227
- {activeRelease.price === 0
228
- ? t('free')
229
- : fCurrency(activeRelease.price, lang, event.currency)}
230
- </MenuItem>
231
- ))}
232
- </RHFSelect>
233
- )}
234
- </Grid>
235
- <Grid key={index} item xs={12} md={6}>
236
- {showLoading ? (
237
- <Skeleton
238
- variant="rounded"
239
- sx={{
240
- width: '100%',
241
- height: (theme) => theme.spacing(7.5),
242
- }}
243
- />
244
- ) : (
245
- <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
+ ) : (
246
232
  <RHFSelect
247
- name={`tickets.${event.id}.${index}.quantity`}
248
- value={item.quantity}
249
- 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
+ }}
250
245
  >
251
- {[...Array(getAvailableTicketsForRelease(item))].map((_, index2) => (
246
+ <MenuItem key={0} value="">
247
+ {t('choose')}
248
+ </MenuItem>
249
+ {activeReleases?.map((activeRelease) => (
252
250
  <MenuItem
253
- key={index2}
254
- value={index2 + 1}
255
- 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
+ }
256
260
  >
257
- {index2 + 1}
261
+ {activeRelease.releaseCategoryName} - {activeRelease.name}:{' '}
262
+ {activeRelease.price === 0
263
+ ? t('free')
264
+ : fCurrency(activeRelease.price, lang, event.currency)}
258
265
  </MenuItem>
259
266
  ))}
260
- {!item.releaseId && (
261
- <MenuItem disabled sx={{ textTransform: 'unset!important' }}>
262
- {t('event.tickets.stepper.1.quantity_select')}
263
- </MenuItem>
264
- )}
265
267
  </RHFSelect>
266
- {item.releaseId && item.quantity && (
267
- <Box>
268
- <IconButton color="primary" onClick={() => removeTicket(index)}>
269
- <Iconify icon="carbon:trash-can" />
270
- </IconButton>
271
- </Box>
272
- )}
273
- </Stack>
274
- )}
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>
275
311
  </Grid>
276
- </Grid>
277
- {activeReleases && item.releaseId && (
278
- <Typography
279
- variant="caption"
280
- content="div"
281
- mt={2}
282
- mb={getRelease(item.releaseId)?.extraFields?.length ? 2 : 0}
283
- display="block"
284
- >
285
- {getRelease(item.releaseId)?.description ?? ''}
286
- </Typography>
287
- )}
288
- {getExtraFields(item.releaseId, index)}
289
- </Box>
290
- ))}
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
+ )} */}
291
327
  <Box>
292
328
  <Typography variant="caption" component="div" fontStyle="italic" mb={2}>
293
329
  *{t('event.tickets.stepper.1.max_ticket_quantity')}
294
330
  </Typography>
295
- {isMobile && <FeeBox event={event} align="right" />}
296
331
  </Box>
297
332
  </Stack>
298
333
  );
@@ -0,0 +1,175 @@
1
+ import React, { useState } from 'react';
2
+ import { Box, Skeleton, Stack, Typography, useTheme } from '@mui/material';
3
+ import { fCurrency } from '@utils/formatNumber';
4
+ import { IEvent } from '@utils/types/event.type';
5
+ import { IReleaseShort } from '@utils/types/release.type';
6
+ import { ITicketFormTicket } from '@utils/types/ticket.type';
7
+ import useGlobal from '@hooks/useGlobal';
8
+ import ReleaseDescription from './ReleaseDescription';
9
+ import TicketQuantityControl from './TicketQuantityControl';
10
+
11
+ interface Props {
12
+ event: IEvent;
13
+ activeReleases?: IReleaseShort[];
14
+ showLoading: boolean;
15
+ soldOutReleaseCategoryNames: string[];
16
+ tickets: ITicketFormTicket[];
17
+ isQuantityDisabled: (value: number, releaseId: number | '') => boolean;
18
+ setValue: (name: string, value: any) => void;
19
+ removeTicket: (indexToRemove: number) => void;
20
+ getExtraFields: (releaseId: number | '', index: number) => React.ReactNode;
21
+ }
22
+
23
+ const TicketSelectionMobile: React.FC<Props> = ({
24
+ event,
25
+ activeReleases,
26
+ showLoading,
27
+ soldOutReleaseCategoryNames,
28
+ tickets,
29
+ isQuantityDisabled,
30
+ setValue,
31
+ removeTicket,
32
+ getExtraFields,
33
+ }) => {
34
+ const { t, lang } = useGlobal();
35
+ const [expandedReleaseIds, setExpandedReleaseIds] = useState<Record<number, boolean>>({});
36
+ const theme = useTheme();
37
+ const isLight = theme.palette.mode === 'light';
38
+
39
+ const getReleaseTitle = (release: IReleaseShort) =>
40
+ release.releaseCategoryName || release.name || '';
41
+
42
+ const getTicketIndexByRelease = (releaseId: number) =>
43
+ tickets.findIndex((ticket) => ticket.releaseId === releaseId);
44
+
45
+ const getReleaseQuantity = (releaseId: number) => {
46
+ const ticket = tickets.find((t) => t.releaseId === releaseId);
47
+ return Number(ticket?.quantity || 0);
48
+ };
49
+
50
+ const updateReleaseQuantity = (release: IReleaseShort, nextQuantity: number) => {
51
+ const maxAvailable = Math.min(release.availableTickets || 0, 10);
52
+ const clampedQuantity = Math.max(0, Math.min(nextQuantity, maxAvailable));
53
+ const ticketIndex = getTicketIndexByRelease(release.id);
54
+
55
+ if (clampedQuantity <= 0) {
56
+ if (ticketIndex >= 0) removeTicket(ticketIndex);
57
+ return;
58
+ }
59
+
60
+ if (ticketIndex >= 0) {
61
+ setValue(`tickets.${event.id}.${ticketIndex}.quantity`, clampedQuantity);
62
+ return;
63
+ }
64
+
65
+ setValue(`tickets.${event.id}`, [
66
+ ...tickets,
67
+ {
68
+ releaseId: release.id,
69
+ quantity: clampedQuantity,
70
+ itemName: getReleaseTitle(release),
71
+ price: release.price || 0,
72
+ products: [],
73
+ extraFields: [],
74
+ },
75
+ ]);
76
+ };
77
+
78
+ const toggleReleaseDescription = (releaseId: number) =>
79
+ setExpandedReleaseIds((prev) => ({
80
+ ...prev,
81
+ [releaseId]: !prev[releaseId],
82
+ }));
83
+
84
+ if (showLoading) {
85
+ return (
86
+ <Stack spacing={2}>
87
+ {[...Array(2)].map((_, index) => (
88
+ <Skeleton
89
+ key={index}
90
+ variant="rounded"
91
+ sx={{
92
+ width: '100%',
93
+ height: (theme) => theme.spacing(12),
94
+ }}
95
+ />
96
+ ))}
97
+ </Stack>
98
+ );
99
+ }
100
+
101
+ return (
102
+ <Stack spacing={2}>
103
+ {activeReleases?.map((release) => {
104
+ const quantity = getReleaseQuantity(release.id);
105
+ const ticketIndex = getTicketIndexByRelease(release.id);
106
+ const maxAvailable = Math.min(release.availableTickets || 0, 10);
107
+ const isLocked =
108
+ release.locked && !soldOutReleaseCategoryNames.includes(release.releaseCategoryName);
109
+ const isDisabled = isLocked && quantity === 0;
110
+ const canAddFirst = maxAvailable > 0 && !isQuantityDisabled(1, release.id);
111
+ const canAddMore = quantity < maxAvailable && !isQuantityDisabled(quantity + 1, release.id);
112
+
113
+ return (
114
+ <Box
115
+ key={release.id}
116
+ sx={{
117
+ p: 1,
118
+ pb: 0,
119
+ borderRadius: 1,
120
+ bgcolor: (theme) => (isLight ? theme.palette.grey[100] : theme.palette.grey[800]),
121
+ }}
122
+ >
123
+ <Stack spacing={0}>
124
+ <Box>
125
+ <Typography variant="subtitle1" fontWeight={600}>
126
+ {getReleaseTitle(release)}
127
+ </Typography>
128
+ </Box>
129
+
130
+ <Stack direction="row" alignItems="center" justifyContent="space-between">
131
+ <Stack>
132
+ <Typography variant="body2">
133
+ {release.price === 0
134
+ ? t('free')
135
+ : fCurrency(release.price, lang, event.currency)}
136
+ </Typography>
137
+
138
+ <ReleaseDescription
139
+ description={release.description}
140
+ isExpanded={Boolean(expandedReleaseIds[release.id])}
141
+ onToggle={() => toggleReleaseDescription(release.id)}
142
+ moreInfoLabel={t('more_info')}
143
+ />
144
+ </Stack>
145
+
146
+ <TicketQuantityControl
147
+ quantity={quantity}
148
+ isDisabled={isDisabled}
149
+ canAddFirst={canAddFirst}
150
+ canAddMore={canAddMore}
151
+ addLabel={t('add')}
152
+ onDecrement={() => updateReleaseQuantity(release, quantity - 1)}
153
+ onIncrement={() => updateReleaseQuantity(release, quantity + 1)}
154
+ onAddFirst={() => updateReleaseQuantity(release, 1)}
155
+ />
156
+ </Stack>
157
+
158
+ <ReleaseDescription
159
+ description={release.description}
160
+ isExpanded={Boolean(expandedReleaseIds[release.id])}
161
+ onToggle={() => toggleReleaseDescription(release.id)}
162
+ moreInfoLabel={t('more_info')}
163
+ showCollapse
164
+ />
165
+
166
+ {ticketIndex >= 0 && getExtraFields(release.id, ticketIndex)}
167
+ </Stack>
168
+ </Box>
169
+ );
170
+ })}
171
+ </Stack>
172
+ );
173
+ };
174
+
175
+ export default TicketSelectionMobile;
@@ -1,14 +1,12 @@
1
1
  import React, { useEffect, useRef } from 'react';
2
2
  import { useFormContext, useWatch } from 'react-hook-form';
3
- import { Box, Divider, Skeleton, Stack, Typography } from '@mui/material';
3
+ import { Box, Skeleton, Stack, Typography } from '@mui/material';
4
4
  import { ITicketForm, ITicketFormTicket } from '@utils/types/ticket.type';
5
5
  import useEventActiveReleases from '@hooks/data/useEventActiveReleases';
6
6
  import { groupBy } from '@utils/global';
7
7
  import { IReleaseShort } from '@utils/types/release.type';
8
- import FeeBox from '@form/payment/FeeBox';
9
8
  import { IEvent } from '@utils/types/event.type';
10
- import useResponsive from '@hooks/useResponsive';
11
- import ReleaseWithMerchandise from '@form/ReleaseWithMerchandise';
9
+ import ReleaseWithMerchandise from '@form/tickets/ReleaseWithMerchandise';
12
10
  import { EventType } from '@utils/data/event';
13
11
  import useGlobal from '@hooks/useGlobal.ts';
14
12
 
@@ -18,7 +16,6 @@ interface Props {
18
16
 
19
17
  const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
20
18
  const { t } = useGlobal();
21
- const isMobile = useResponsive('down', 'md');
22
19
  const { setValue, watch } = useFormContext<ITicketForm>();
23
20
  const tickets: ITicketFormTicket[] = useWatch({ name: `tickets.${event.id}`, defaultValue: [] });
24
21
  const eventTimeslotId = watch('eventTimeslotId');
@@ -42,7 +39,7 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
42
39
  const lockedSelectedReleases: boolean[] | undefined = releases?.map((item, index) => {
43
40
  const nextRelease = releases?.find(
44
41
  (item2) =>
45
- item2.releaseCategoryName === item.releaseCategoryName && item2.order === item.order++
42
+ item2.releaseCategoryName === item.releaseCategoryName && item2.order === item.order + 1
46
43
  );
47
44
  const selected = tickets.find((ticket) => ticket.releaseId === item.id);
48
45
  return !!nextRelease && item.locked && !!selected && index + 1 == tickets.length;
@@ -52,6 +49,8 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
52
49
 
53
50
  const countUnlockedReleases = () => activeReleases?.filter((item) => !item.locked).length || 0;
54
51
 
52
+ const isReleaseSelected = (id: number) => !!tickets.find((ticket) => ticket.releaseId === id);
53
+
55
54
  const selectedTickets = async () => {
56
55
  const releases = await mutate();
57
56
  const allFilled = tickets.filter((item) => !item.releaseId || !item.quantity);
@@ -88,6 +87,10 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
88
87
  }
89
88
  }
90
89
 
90
+ const hasSelectableRelease = activeReleases?.some(
91
+ (release) => !isReleaseSelected(release.id) && !release.locked
92
+ );
93
+
91
94
  const shouldAddRow =
92
95
  (soldOutReleaseCategories &&
93
96
  selectedReleaseIsSoldOut(releases) &&
@@ -103,6 +106,7 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
103
106
  const shouldRemoveEmptyRows =
104
107
  allFilled.length > 0 &&
105
108
  tickets.length > 1 &&
109
+ !hasSelectableRelease &&
106
110
  (!soldOutReleaseCategories?.length || !selectedReleaseIsSoldOut(releases));
107
111
 
108
112
  if (shouldAddRow) {
@@ -120,17 +124,18 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
120
124
  ]);
121
125
  setTimeout(() => (isProcessingRef.current = false), 0);
122
126
  } else if (shouldRemoveEmptyRows) {
123
- const filledTickets = tickets.filter((item) => item.releaseId && item.quantity);
124
- if (filledTickets.length < tickets.length) {
127
+ // Only remove completely empty rows (no releaseId), keep rows where user started selecting
128
+ const nonEmptyTickets = tickets.filter((item) => item.releaseId);
129
+ if (nonEmptyTickets.length < tickets.length) {
125
130
  isProcessingRef.current = true;
126
- setValue(`tickets.${event.id}`, filledTickets);
131
+ setValue(`tickets.${event.id}`, nonEmptyTickets);
127
132
  setTimeout(() => (isProcessingRef.current = false), 0);
128
133
  }
129
134
  }
130
135
  };
131
136
 
132
137
  return (
133
- <Stack spacing={3} direction="column" divider={<Divider sx={{ borderStyle: 'dashed' }} />}>
138
+ <Stack spacing={1} direction="column">
134
139
  {!activeReleases && event.type !== EventType.RECURRING ? (
135
140
  <Skeleton
136
141
  variant="rounded"
@@ -161,7 +166,6 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
161
166
  <Typography variant="caption" component="div" fontStyle="italic" mb={2}>
162
167
  *{t('event.tickets.stepper.1.max_ticket_quantity')}
163
168
  </Typography>
164
- {isMobile && <FeeBox event={event} align="right" />}
165
169
  </Box>
166
170
  </Stack>
167
171
  );
@@ -7,6 +7,8 @@ const cs = {
7
7
  add: 'Přidat',
8
8
  confirm: 'Potvrdit',
9
9
  cancel: 'Zrušit',
10
+ close: 'Zavřít',
11
+ remove: 'Odstranit',
10
12
  pay: 'Zaplatit',
11
13
  change: 'Změnit',
12
14
  free: 'Zdarma',
@@ -39,7 +41,7 @@ const cs = {
39
41
  promo_code: 'Slevový kód',
40
42
  start_date: 'Datum konání',
41
43
  organizer: 'Pořadatel',
42
- total: 'Celkem ',
44
+ total: 'Celkem',
43
45
  with_fee: 'vč. servisního poplatku',
44
46
  service_fee: 'Servisní poplatek',
45
47
  shipping_fee: 'Doprava',
@@ -105,6 +107,10 @@ const cs = {
105
107
  7: {
106
108
  title: 'Přidružené eventy',
107
109
  },
110
+ 8: {
111
+ title: 'Služby',
112
+ additional_info: 'Více informací ke službám',
113
+ },
108
114
  },
109
115
  terms_and_conditions:
110
116
  'Odesláním objednávky souhlasím s <0>Obchodními podmínkami</0> {{termsAndConditionsCompanies}} a beru na vědomí <1>Zásady soukromí</1>.',
@@ -7,6 +7,8 @@ const en = {
7
7
  add: 'Add',
8
8
  confirm: 'Confirm',
9
9
  cancel: 'Cancel',
10
+ close: 'Close',
11
+ remove: 'Remove',
10
12
  pay: 'Pay',
11
13
  change: 'Change',
12
14
  free: 'Free',
@@ -105,6 +107,10 @@ const en = {
105
107
  7: {
106
108
  title: 'Associated events',
107
109
  },
110
+ 8: {
111
+ title: 'Services',
112
+ additional_info: 'More information about services',
113
+ },
108
114
  },
109
115
  terms_and_conditions:
110
116
  'By submitting the order, I agree to the <0>Terms and Conditions</0> of {{termsAndConditionsCompanies}} and acknowledge the <1>Privacy Policy</1>.',
@@ -124,7 +130,7 @@ const en = {
124
130
  label: 'SMS event reminder',
125
131
  modal: {
126
132
  description:
127
- 'Event reminder the day before: SMS will notify you about the upcoming event so you don\'t forget and have time to prepare.',
133
+ "Event reminder the day before: SMS will notify you about the upcoming event so you don't forget and have time to prepare.",
128
134
  price: 'SMS event reminder price',
129
135
  },
130
136
  },
@@ -7,6 +7,8 @@ const es = {
7
7
  add: 'Añadir',
8
8
  confirm: 'Confirmar',
9
9
  cancel: 'Cancelar',
10
+ close: 'Cerrar',
11
+ remove: 'Eliminar',
10
12
  pay: 'Pagar',
11
13
  change: 'Cambiar',
12
14
  free: 'Gratis',
@@ -105,6 +107,10 @@ const es = {
105
107
  7: {
106
108
  title: 'Eventos asociados',
107
109
  },
110
+ 8: {
111
+ title: 'Servicios',
112
+ additional_info: 'Más información sobre los servicios',
113
+ },
108
114
  },
109
115
  terms_and_conditions:
110
116
  'Al enviar el pedido, acepto los <0>Términos y Condiciones</0> de {{termsAndConditionsCompanies}} y reconozco la <1>Política de Privacidad</1>.',