@pisell/private-materials 6.3.131 → 6.3.133

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 (225) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/meta.js +1 -1
  5. package/build/lowcode/render/default/view.js +6 -6
  6. package/build/lowcode/view.js +6 -6
  7. package/es/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +1 -0
  8. package/es/components/booking/utils.d.ts +2 -2
  9. package/es/components/ecocup/components/CupStatusModal/hooks.d.ts +1 -1
  10. package/es/components/eftposPay/hooks.d.ts +2 -2
  11. package/es/components/eftposPay/store/index.d.ts +5 -5
  12. package/es/components/eftposPay/tyro/hooks.d.ts +1 -0
  13. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +1 -0
  14. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +1 -0
  15. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +1 -0
  16. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +1 -0
  17. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +1 -0
  18. package/es/components/shoppingCart/components/Empty/index.d.ts +1 -0
  19. package/es/components/venueBooking/components/Cart/index.js +7 -7
  20. package/es/components/venueBooking/components/Checkout/index.js +2 -12
  21. package/es/components/venueBooking/components/Content/index.js +10 -9
  22. package/es/components/venueBooking/components/Footer/index.js +2 -8
  23. package/es/components/venueBooking/components/Header/index.js +38 -17
  24. package/es/components/venueBooking/components/VenueSelection/components/CourtFilter.js +1 -17
  25. package/es/components/venueBooking/components/VenueSelection/components/TimeGrid.js +63 -26
  26. package/es/components/venueBooking/components/VenueSelection/index.js +2 -6
  27. package/es/components/venueBooking/context.js +95 -44
  28. package/es/components/venueBooking/hooks.d.ts +1 -0
  29. package/es/components/venueBooking/hooks.js +8 -2
  30. package/es/components/venueBooking/index.js +30 -2
  31. package/es/components/venueBooking/locales.d.ts +20 -0
  32. package/es/components/venueBooking/locales.js +25 -5
  33. package/es/components/venueBooking/utils.d.ts +8 -0
  34. package/es/components/venueBooking/utils.js +12 -2
  35. package/es/hooks/usePaymentLogger.d.ts +1 -0
  36. package/es/plus/pisellSalesManagement/config/booking.d.ts +6 -6
  37. package/es/plus/pisellSalesManagement/hooks/useSalesGridData.d.ts +1 -0
  38. package/es/plus/walletEditor/components/ImageUpload/index.d.ts +1 -1
  39. package/lib/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +1 -0
  40. package/lib/components/booking/utils.d.ts +2 -2
  41. package/lib/components/ecocup/components/CupStatusModal/hooks.d.ts +1 -1
  42. package/lib/components/eftposPay/hooks.d.ts +2 -2
  43. package/lib/components/eftposPay/store/index.d.ts +5 -5
  44. package/lib/components/eftposPay/tyro/hooks.d.ts +1 -0
  45. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +1 -0
  46. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +1 -0
  47. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +1 -0
  48. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +1 -0
  49. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +1 -0
  50. package/lib/components/shoppingCart/components/Empty/index.d.ts +1 -0
  51. package/lib/components/venueBooking/components/Cart/index.js +3 -8
  52. package/lib/components/venueBooking/components/Checkout/index.js +1 -5
  53. package/lib/components/venueBooking/components/Content/index.js +20 -15
  54. package/lib/components/venueBooking/components/Footer/index.js +1 -9
  55. package/lib/components/venueBooking/components/Header/index.js +12 -6
  56. package/lib/components/venueBooking/components/VenueSelection/components/CourtFilter.js +1 -10
  57. package/lib/components/venueBooking/components/VenueSelection/components/TimeGrid.js +29 -10
  58. package/lib/components/venueBooking/components/VenueSelection/index.js +2 -3
  59. package/lib/components/venueBooking/context.js +52 -25
  60. package/lib/components/venueBooking/hooks.d.ts +1 -0
  61. package/lib/components/venueBooking/hooks.js +6 -1
  62. package/lib/components/venueBooking/index.js +19 -1
  63. package/lib/components/venueBooking/locales.d.ts +20 -0
  64. package/lib/components/venueBooking/locales.js +25 -5
  65. package/lib/components/venueBooking/utils.d.ts +8 -0
  66. package/lib/components/venueBooking/utils.js +3 -2
  67. package/lib/hooks/usePaymentLogger.d.ts +1 -0
  68. package/lib/plus/pisellSalesManagement/config/booking.d.ts +6 -6
  69. package/lib/plus/pisellSalesManagement/hooks/useSalesGridData.d.ts +1 -0
  70. package/lib/plus/walletEditor/components/ImageUpload/index.d.ts +1 -1
  71. package/package.json +18 -18
  72. package/es/components/appointmentBooking/components/Form/index.d.ts +0 -4
  73. package/es/components/appointmentBooking/components/Services/index.d.ts +0 -4
  74. package/es/components/appointmentBooking/deposit/components/PolicyModal/index.d.ts +0 -4
  75. package/es/components/appointmentBooking/hooks.d.ts +0 -107
  76. package/es/components/appointmentBooking/utils.d.ts +0 -227
  77. package/es/components/booking/components/footer/utils.d.ts +0 -47
  78. package/es/components/booking/components/reloadResourceModal/index.d.ts +0 -9
  79. package/es/components/booking/components/voucher/index.d.ts +0 -4
  80. package/es/components/booking/info/service/editService/constants.d.ts +0 -1
  81. package/es/components/booking/info/service/editService/index.d.ts +0 -7
  82. package/es/components/booking/info/service2/utils.d.ts +0 -248
  83. package/es/components/booking/info2/index.d.ts +0 -12
  84. package/es/components/booking/info2/service/addService/index.d.ts +0 -12
  85. package/es/components/booking/locales.d.ts +0 -1489
  86. package/es/components/booking/model.d.ts +0 -120
  87. package/es/components/eftposPay/amount.d.ts +0 -21
  88. package/es/components/eftposPay/app.d.ts +0 -11
  89. package/es/components/eftposPay/component/fail/failCustom.d.ts +0 -4
  90. package/es/components/eftposPay/component/fail/index.d.ts +0 -4
  91. package/es/components/eftposPay/component/fail/network.d.ts +0 -9
  92. package/es/components/eftposPay/component/fail/unknow.d.ts +0 -10
  93. package/es/components/eftposPay/component/manual/index.d.ts +0 -10
  94. package/es/components/eftposPay/component/signature/index.d.ts +0 -9
  95. package/es/components/eftposPay/device.d.ts +0 -24
  96. package/es/components/eftposPay/index.d.ts +0 -5
  97. package/es/components/eftposPay/linkly/hooks/normal.d.ts +0 -30
  98. package/es/components/eftposPay/linkly/hooks/useTimeQuery.d.ts +0 -4
  99. package/es/components/eftposPay/linkly/index.d.ts +0 -3
  100. package/es/components/eftposPay/pay.d.ts +0 -21
  101. package/es/components/eftposPay/payo/config.d.ts +0 -13
  102. package/es/components/eftposPay/payo/hooks.d.ts +0 -10
  103. package/es/components/eftposPay/payo/payment.d.ts +0 -66
  104. package/es/components/eftposPay/tip.d.ts +0 -10
  105. package/es/components/eftposPay/tyro/index.d.ts +0 -9
  106. package/es/components/eftposPay/utils/payLog.d.ts +0 -81
  107. package/es/components/eftposPay/windcave/receiptAction.d.ts +0 -23
  108. package/es/components/eftposPay/windcave/windcave.d.ts +0 -7
  109. package/es/components/kioskSkuDetail/index.d.ts +0 -39
  110. package/es/components/kioskSkuDetail/locales.d.ts +0 -48
  111. package/es/components/pay/toC/PaymentMethods/GlobePayAliPayH5/index.d.ts +0 -10
  112. package/es/components/pay/toC/PaymentMethods/GlobePayPaypalH5/index.d.ts +0 -10
  113. package/es/components/pay/toC/PaymentMethods/GlobePayWxH5/index.d.ts +0 -10
  114. package/es/components/pay/toC/PaymentMethods/MWCreditCard/TDSPay/index.d.ts +0 -16
  115. package/es/components/pay/toC/PaymentMethods/MWCreditCard/index.d.ts +0 -15
  116. package/es/components/pay/toC/PaymentMethods/MWCreditCard/tds2.d.ts +0 -83
  117. package/es/components/pay/toC/PaymentMethods/SuperPayAliPayH5/index.d.ts +0 -10
  118. package/es/components/pay/toC/PaymentMethods/SuperPayWxPayH5/index.d.ts +0 -10
  119. package/es/components/pay/toC/PaymentMethods/WalletPass/List/index.d.ts +0 -22
  120. package/es/components/pay/toC/PaymentMethods/WalletPass/index.d.ts +0 -25
  121. package/es/components/pay/toC/PaymentMethods/WalletPass/utils.d.ts +0 -16
  122. package/es/components/pay/toC/PaymentMethods/index.d.ts +0 -9
  123. package/es/components/pay/toC/index.d.ts +0 -3
  124. package/es/components/pay/toC/locales.d.ts +0 -631
  125. package/es/components/pay/toC/payGroup.d.ts +0 -59
  126. package/es/components/pay/toC/serve.d.ts +0 -87
  127. package/es/components/pay/toC/utils.d.ts +0 -65
  128. package/es/components/ruleSetting/locales.d.ts +0 -78
  129. package/es/components/ticketBooking/components/addServiceVariant/addService.d.ts +0 -10
  130. package/es/components/ticketBooking/components/ticketBooking/index.d.ts +0 -5
  131. package/es/components/ticketBooking/components/timeBar/index.d.ts +0 -13
  132. package/es/components/ticketBooking/index.d.ts +0 -8
  133. package/es/components/venueBooking/components/Cart/index.d.ts +0 -28
  134. package/es/components/venueBooking/components/Footer/index.d.ts +0 -8
  135. package/es/index.d.ts +0 -87
  136. package/es/plus/skuOptionsSelection/components/NormalCard/index.d.ts +0 -6
  137. package/es/plus/skuOptionsSelection/components/OptionsCard/OptionItemCard.d.ts +0 -4
  138. package/es/plus/skuOptionsSelection/components/OptionsModal/index.d.ts +0 -16
  139. package/es/plus/skuOptionsSelection/index.d.ts +0 -5
  140. package/es/plus/skuOptionsSelection/locales.d.ts +0 -58
  141. package/es/plus/skuOptionsSelection/types.d.ts +0 -458
  142. package/es/plus/skuOptionsSelection/utils/transformBundleGroup.d.ts +0 -19
  143. package/es/plus/skuOptionsSelection/utils/transformOptionGroup.d.ts +0 -1
  144. package/es/plus/skuOptionsSelection/utils/transformSelectorValueToValue.d.ts +0 -4
  145. package/es/plus/skuOptionsSelection/utils/transformValueToSelectorValue.d.ts +0 -4
  146. package/es/plus/skuOptionsSelection/utils/transformVariantGroup.d.ts +0 -1
  147. package/es/pro/Cards/components/SKUCard/index.d.ts +0 -5
  148. package/es/pro/Login2.0/components/phoneValidation.d.ts +0 -17
  149. package/lib/components/appointmentBooking/components/Form/index.d.ts +0 -4
  150. package/lib/components/appointmentBooking/components/Services/index.d.ts +0 -4
  151. package/lib/components/appointmentBooking/deposit/components/PolicyModal/index.d.ts +0 -4
  152. package/lib/components/appointmentBooking/hooks.d.ts +0 -107
  153. package/lib/components/appointmentBooking/utils.d.ts +0 -227
  154. package/lib/components/booking/components/footer/utils.d.ts +0 -47
  155. package/lib/components/booking/components/reloadResourceModal/index.d.ts +0 -9
  156. package/lib/components/booking/components/voucher/index.d.ts +0 -4
  157. package/lib/components/booking/info/service/editService/constants.d.ts +0 -1
  158. package/lib/components/booking/info/service/editService/index.d.ts +0 -7
  159. package/lib/components/booking/info/service2/utils.d.ts +0 -248
  160. package/lib/components/booking/info2/index.d.ts +0 -12
  161. package/lib/components/booking/info2/service/addService/index.d.ts +0 -12
  162. package/lib/components/booking/locales.d.ts +0 -1489
  163. package/lib/components/booking/model.d.ts +0 -120
  164. package/lib/components/eftposPay/amount.d.ts +0 -21
  165. package/lib/components/eftposPay/app.d.ts +0 -11
  166. package/lib/components/eftposPay/component/fail/failCustom.d.ts +0 -4
  167. package/lib/components/eftposPay/component/fail/index.d.ts +0 -4
  168. package/lib/components/eftposPay/component/fail/network.d.ts +0 -9
  169. package/lib/components/eftposPay/component/fail/unknow.d.ts +0 -10
  170. package/lib/components/eftposPay/component/manual/index.d.ts +0 -10
  171. package/lib/components/eftposPay/component/signature/index.d.ts +0 -9
  172. package/lib/components/eftposPay/device.d.ts +0 -24
  173. package/lib/components/eftposPay/index.d.ts +0 -5
  174. package/lib/components/eftposPay/linkly/hooks/normal.d.ts +0 -30
  175. package/lib/components/eftposPay/linkly/hooks/useTimeQuery.d.ts +0 -4
  176. package/lib/components/eftposPay/linkly/index.d.ts +0 -3
  177. package/lib/components/eftposPay/pay.d.ts +0 -21
  178. package/lib/components/eftposPay/payo/config.d.ts +0 -13
  179. package/lib/components/eftposPay/payo/hooks.d.ts +0 -10
  180. package/lib/components/eftposPay/payo/payment.d.ts +0 -66
  181. package/lib/components/eftposPay/tip.d.ts +0 -10
  182. package/lib/components/eftposPay/tyro/index.d.ts +0 -9
  183. package/lib/components/eftposPay/utils/payLog.d.ts +0 -81
  184. package/lib/components/eftposPay/windcave/receiptAction.d.ts +0 -23
  185. package/lib/components/eftposPay/windcave/windcave.d.ts +0 -7
  186. package/lib/components/kioskSkuDetail/index.d.ts +0 -39
  187. package/lib/components/kioskSkuDetail/locales.d.ts +0 -48
  188. package/lib/components/pay/toC/PaymentMethods/GlobePayAliPayH5/index.d.ts +0 -10
  189. package/lib/components/pay/toC/PaymentMethods/GlobePayPaypalH5/index.d.ts +0 -10
  190. package/lib/components/pay/toC/PaymentMethods/GlobePayWxH5/index.d.ts +0 -10
  191. package/lib/components/pay/toC/PaymentMethods/MWCreditCard/TDSPay/index.d.ts +0 -16
  192. package/lib/components/pay/toC/PaymentMethods/MWCreditCard/index.d.ts +0 -15
  193. package/lib/components/pay/toC/PaymentMethods/MWCreditCard/tds2.d.ts +0 -83
  194. package/lib/components/pay/toC/PaymentMethods/SuperPayAliPayH5/index.d.ts +0 -10
  195. package/lib/components/pay/toC/PaymentMethods/SuperPayWxPayH5/index.d.ts +0 -10
  196. package/lib/components/pay/toC/PaymentMethods/WalletPass/List/index.d.ts +0 -22
  197. package/lib/components/pay/toC/PaymentMethods/WalletPass/index.d.ts +0 -25
  198. package/lib/components/pay/toC/PaymentMethods/WalletPass/utils.d.ts +0 -16
  199. package/lib/components/pay/toC/PaymentMethods/index.d.ts +0 -9
  200. package/lib/components/pay/toC/index.d.ts +0 -3
  201. package/lib/components/pay/toC/locales.d.ts +0 -631
  202. package/lib/components/pay/toC/payGroup.d.ts +0 -59
  203. package/lib/components/pay/toC/serve.d.ts +0 -87
  204. package/lib/components/pay/toC/utils.d.ts +0 -65
  205. package/lib/components/ruleSetting/locales.d.ts +0 -78
  206. package/lib/components/ticketBooking/components/addServiceVariant/addService.d.ts +0 -10
  207. package/lib/components/ticketBooking/components/ticketBooking/index.d.ts +0 -5
  208. package/lib/components/ticketBooking/components/timeBar/index.d.ts +0 -13
  209. package/lib/components/ticketBooking/index.d.ts +0 -8
  210. package/lib/components/venueBooking/components/Cart/index.d.ts +0 -28
  211. package/lib/components/venueBooking/components/Footer/index.d.ts +0 -8
  212. package/lib/index.d.ts +0 -87
  213. package/lib/plus/skuOptionsSelection/components/NormalCard/index.d.ts +0 -6
  214. package/lib/plus/skuOptionsSelection/components/OptionsCard/OptionItemCard.d.ts +0 -4
  215. package/lib/plus/skuOptionsSelection/components/OptionsModal/index.d.ts +0 -16
  216. package/lib/plus/skuOptionsSelection/index.d.ts +0 -5
  217. package/lib/plus/skuOptionsSelection/locales.d.ts +0 -58
  218. package/lib/plus/skuOptionsSelection/types.d.ts +0 -458
  219. package/lib/plus/skuOptionsSelection/utils/transformBundleGroup.d.ts +0 -19
  220. package/lib/plus/skuOptionsSelection/utils/transformOptionGroup.d.ts +0 -1
  221. package/lib/plus/skuOptionsSelection/utils/transformSelectorValueToValue.d.ts +0 -4
  222. package/lib/plus/skuOptionsSelection/utils/transformValueToSelectorValue.d.ts +0 -4
  223. package/lib/plus/skuOptionsSelection/utils/transformVariantGroup.d.ts +0 -1
  224. package/lib/pro/Cards/components/SKUCard/index.d.ts +0 -5
  225. package/lib/pro/Login2.0/components/phoneValidation.d.ts +0 -17
@@ -23,6 +23,7 @@ export default {
23
23
  'pisell2.venue.cart.delete.venue.only.step1': 'Please return to Step 1 before removing court bookings',
24
24
  'pisell2.venue.cart.addons.ready': 'Add-ons are ready below.',
25
25
  'pisell2.venue.cart.review.all': 'Review everything before payment.',
26
+ 'pisell2.venue.action.next': 'Next',
26
27
  'pisell2.venue.action.next.addons': 'Next: Add-ons',
27
28
  'pisell2.venue.action.review.pay': 'Review & Pay',
28
29
  'pisell2.venue.action.pay.now': 'Pay now',
@@ -40,6 +41,7 @@ export default {
40
41
  'pisell2.venue.label.selected': 'Selected',
41
42
  'pisell2.venue.label.sold.out': 'Sold out',
42
43
  'pisell2.venue.label.few.left': 'Few left',
44
+ 'pisell2.venue.label.bookable': 'Bookable',
43
45
  'pisell2.venue.label.off.peak': 'Off-Peak',
44
46
  'pisell2.venue.label.peak': 'Peak',
45
47
  'pisell2.venue.label.promo': 'Promo',
@@ -91,6 +93,7 @@ export default {
91
93
  'pisell2.venue.calendar.weekday.short.sun': 'Sun',
92
94
  'pisell2.venue.time.am': 'am',
93
95
  'pisell2.venue.time.pm': 'pm',
96
+ 'pisell2.venue.time.hour.format': '{hour}{suffix}',
94
97
  'pisell2.venue.limit.message': 'You can book up to 4 bookings or max 8 hours.',
95
98
  'pisell2.text.goodpass': 'Promotion',
96
99
  'pisell2.text.goodpass.product-vouchers': 'Product Vouchers',
@@ -118,7 +121,8 @@ export default {
118
121
  'pisell2.appointment.deposit.close': 'Close',
119
122
  'pisell2.appointment.policy': 'You have read and agreed to this policy',
120
123
  'pisell2.appointment.policy.confirm': 'Confirm',
121
- 'pisell2.appointment.booking.empty.data': 'No data'
124
+ 'pisell2.appointment.booking.empty.data': 'No data',
125
+ 'pisell2.product-select.search': 'Search'
122
126
  },
123
127
  'zh-CN': {
124
128
  'pisell2.venue.step.select': '选择场地',
@@ -140,6 +144,7 @@ export default {
140
144
  'pisell2.venue.cart.delete.venue.only.step1': '请返回第一步后再删除场地商品',
141
145
  'pisell2.venue.cart.addons.ready': '附加项已准备就绪。',
142
146
  'pisell2.venue.cart.review.all': '请在支付前检查所有信息。',
147
+ 'pisell2.venue.action.next': '下一步',
143
148
  'pisell2.venue.action.next.addons': '下一步:附加项',
144
149
  'pisell2.venue.action.review.pay': '确认 & 支付',
145
150
  'pisell2.venue.action.pay.now': '立即支付',
@@ -157,6 +162,7 @@ export default {
157
162
  'pisell2.venue.label.selected': '已选',
158
163
  'pisell2.venue.label.sold.out': '已满',
159
164
  'pisell2.venue.label.few.left': '即将满',
165
+ 'pisell2.venue.label.bookable': '充足',
160
166
  'pisell2.venue.label.off.peak': '非高峰',
161
167
  'pisell2.venue.label.peak': '高峰',
162
168
  'pisell2.venue.label.promo': '促销',
@@ -208,6 +214,7 @@ export default {
208
214
  'pisell2.venue.calendar.weekday.short.sun': '周日',
209
215
  'pisell2.venue.time.am': '上午',
210
216
  'pisell2.venue.time.pm': '下午',
217
+ 'pisell2.venue.time.hour.format': '{suffix}{hour}点',
211
218
  'pisell2.venue.limit.message': '最多可预订 4 个场次或 8 小时。',
212
219
  'pisell2.text.goodpass': '促销',
213
220
  'pisell2.text.goodpass.product-vouchers': '商品兑换券',
@@ -235,7 +242,8 @@ export default {
235
242
  'pisell2.appointment.deposit.close': '关闭',
236
243
  'pisell2.appointment.policy': '您已仔细阅读并同意此协议',
237
244
  'pisell2.appointment.policy.confirm': '确定',
238
- 'pisell2.appointment.booking.empty.data': '暂无数据'
245
+ 'pisell2.appointment.booking.empty.data': '暂无数据',
246
+ 'pisell2.product-select.search': '搜索'
239
247
  },
240
248
  'zh-HK': {
241
249
  'pisell2.venue.step.select': '選擇場地',
@@ -257,6 +265,7 @@ export default {
257
265
  'pisell2.venue.cart.delete.venue.only.step1': '請返回第一步後再刪除場地商品',
258
266
  'pisell2.venue.cart.addons.ready': '附加項已準備就緒。',
259
267
  'pisell2.venue.cart.review.all': '請在支付前檢查所有資訊。',
268
+ 'pisell2.venue.action.next': '下一步',
260
269
  'pisell2.venue.action.next.addons': '下一步:附加項',
261
270
  'pisell2.venue.action.review.pay': '確認 & 支付',
262
271
  'pisell2.venue.action.pay.now': '立即支付',
@@ -274,6 +283,7 @@ export default {
274
283
  'pisell2.venue.label.selected': '已選',
275
284
  'pisell2.venue.label.sold.out': '已滿',
276
285
  'pisell2.venue.label.few.left': '即將滿',
286
+ 'pisell2.venue.label.bookable': '充足',
277
287
  'pisell2.venue.label.off.peak': '非高峰',
278
288
  'pisell2.venue.label.peak': '高峰',
279
289
  'pisell2.venue.label.promo': '促銷',
@@ -325,6 +335,7 @@ export default {
325
335
  'pisell2.venue.calendar.weekday.short.sun': '週日',
326
336
  'pisell2.venue.time.am': '上午',
327
337
  'pisell2.venue.time.pm': '下午',
338
+ 'pisell2.venue.time.hour.format': '{suffix}{hour}點',
328
339
  'pisell2.venue.limit.message': '最多可預訂 4 個場次或 8 小時。',
329
340
  'pisell2.text.goodpass': '促銷',
330
341
  'pisell2.text.goodpass.product-vouchers': '商品兌換券',
@@ -352,7 +363,8 @@ export default {
352
363
  'pisell2.appointment.deposit.close': '關閉',
353
364
  'pisell2.appointment.policy': '您已仔細閱讀並同意此協議',
354
365
  'pisell2.appointment.policy.confirm': '確定',
355
- 'pisell2.appointment.booking.empty.data': '暫無數據'
366
+ 'pisell2.appointment.booking.empty.data': '暫無數據',
367
+ 'pisell2.product-select.search': '搜索'
356
368
  },
357
369
  ja: {
358
370
  'pisell2.venue.step.select': 'コートを選択',
@@ -374,6 +386,7 @@ export default {
374
386
  'pisell2.venue.cart.delete.venue.only.step1': 'コート予約を削除するには、ステップ1に戻ってください',
375
387
  'pisell2.venue.cart.addons.ready': '追加オプションを下から選択できます。',
376
388
  'pisell2.venue.cart.review.all': '支払い前に内容を確認してください。',
389
+ 'pisell2.venue.action.next': '次へ',
377
390
  'pisell2.venue.action.next.addons': '次へ:追加オプション',
378
391
  'pisell2.venue.action.review.pay': '確認して支払う',
379
392
  'pisell2.venue.action.pay.now': '今すぐ支払う',
@@ -391,6 +404,7 @@ export default {
391
404
  'pisell2.venue.label.selected': '選択済み',
392
405
  'pisell2.venue.label.sold.out': '満席',
393
406
  'pisell2.venue.label.few.left': '残りわずか',
407
+ 'pisell2.venue.label.bookable': '予約可',
394
408
  'pisell2.venue.label.off.peak': 'オフピーク',
395
409
  'pisell2.venue.label.peak': 'ピーク',
396
410
  'pisell2.venue.label.promo': 'プロモ',
@@ -442,6 +456,7 @@ export default {
442
456
  'pisell2.venue.calendar.weekday.short.sun': '日',
443
457
  'pisell2.venue.time.am': '午前',
444
458
  'pisell2.venue.time.pm': '午後',
459
+ 'pisell2.venue.time.hour.format': '{suffix}{hour}時',
445
460
  'pisell2.venue.limit.message': '最大 4 件の予約、または合計 8 時間まで予約できます。',
446
461
  'pisell2.text.goodpass': 'プロモーション',
447
462
  'pisell2.text.goodpass.product-vouchers': '商品バウチャー',
@@ -469,7 +484,8 @@ export default {
469
484
  'pisell2.appointment.deposit.close': '閉じる',
470
485
  'pisell2.appointment.policy': 'このポリシーを読み、同意しました',
471
486
  'pisell2.appointment.policy.confirm': '確認',
472
- 'pisell2.appointment.booking.empty.data': 'データなし'
487
+ 'pisell2.appointment.booking.empty.data': 'データなし',
488
+ 'pisell2.product-select.search': '検索'
473
489
  },
474
490
  pt: {
475
491
  'pisell2.venue.step.select': 'Escolher quadra',
@@ -491,6 +507,7 @@ export default {
491
507
  'pisell2.venue.cart.delete.venue.only.step1': 'Volte para a Etapa 1 antes de remover reservas de quadra',
492
508
  'pisell2.venue.cart.addons.ready': 'Os adicionais estão prontos abaixo.',
493
509
  'pisell2.venue.cart.review.all': 'Revise tudo antes do pagamento.',
510
+ 'pisell2.venue.action.next': 'Próximo',
494
511
  'pisell2.venue.action.next.addons': 'Próximo: adicionais',
495
512
  'pisell2.venue.action.review.pay': 'Revisar e pagar',
496
513
  'pisell2.venue.action.pay.now': 'Pagar agora',
@@ -508,6 +525,7 @@ export default {
508
525
  'pisell2.venue.label.selected': 'Selecionado',
509
526
  'pisell2.venue.label.sold.out': 'Esgotado',
510
527
  'pisell2.venue.label.few.left': 'Poucas vagas',
528
+ 'pisell2.venue.label.bookable': 'Disponível',
511
529
  'pisell2.venue.label.off.peak': 'Fora de pico',
512
530
  'pisell2.venue.label.peak': 'Pico',
513
531
  'pisell2.venue.label.promo': 'Promoção',
@@ -559,6 +577,7 @@ export default {
559
577
  'pisell2.venue.calendar.weekday.short.sun': 'Dom',
560
578
  'pisell2.venue.time.am': 'am',
561
579
  'pisell2.venue.time.pm': 'pm',
580
+ 'pisell2.venue.time.hour.format': '{hour}{suffix}',
562
581
  'pisell2.venue.limit.message': 'Você pode reservar até 4 reservas ou no máximo 8 horas.',
563
582
  'pisell2.text.goodpass': 'Promoção',
564
583
  'pisell2.text.goodpass.product-vouchers': 'Vales de Produto',
@@ -586,6 +605,7 @@ export default {
586
605
  'pisell2.appointment.deposit.close': 'Fechar',
587
606
  'pisell2.appointment.policy': 'Você leu e concordou com esta política',
588
607
  'pisell2.appointment.policy.confirm': 'Confirmar',
589
- 'pisell2.appointment.booking.empty.data': 'Sem dados'
608
+ 'pisell2.appointment.booking.empty.data': 'Sem dados',
609
+ 'pisell2.product-select.search': 'Pesquisar'
590
610
  }
591
611
  };
@@ -16,6 +16,14 @@ export declare function pad(n: number): string;
16
16
  export declare function timeToMinutes(time: string): number;
17
17
  export declare function minutesToTime(minutes: number): string;
18
18
  export declare function isHourBoundary(slot: string): boolean;
19
+ /**
20
+ * 格式化小时列头
21
+ * 使用 i18n 模板 `pisell2.venue.time.hour.format`,支持 {suffix} / {hour} 两个占位符
22
+ * - en / pt: "{hour}{suffix}" → "6pm"
23
+ * - zh-CN / zh-TW: "{suffix}{hour}点/點" → "下午6点"
24
+ * - ja: "{suffix}{hour}時" → "午後6時"
25
+ * 未命中模板时回退到 "{hour}{suffix}" 兼容旧行为
26
+ */
19
27
  export declare function formatHourHeader(slot: string): string;
20
28
  /** 从 timeLabels 中提取整点小时(用于表头合并列) */
21
29
  export declare function buildHourGroups(timeLabels: string[]): string[];
@@ -79,13 +79,23 @@ export function minutesToTime(minutes) {
79
79
  export function isHourBoundary(slot) {
80
80
  return slot.endsWith(':00');
81
81
  }
82
+
83
+ /**
84
+ * 格式化小时列头
85
+ * 使用 i18n 模板 `pisell2.venue.time.hour.format`,支持 {suffix} / {hour} 两个占位符
86
+ * - en / pt: "{hour}{suffix}" → "6pm"
87
+ * - zh-CN / zh-TW: "{suffix}{hour}点/點" → "下午6点"
88
+ * - ja: "{suffix}{hour}時" → "午後6時"
89
+ * 未命中模板时回退到 "{hour}{suffix}" 兼容旧行为
90
+ */
82
91
  export function formatHourHeader(slot) {
83
92
  var _slot$split$map = slot.split(':').map(Number),
84
93
  _slot$split$map2 = _slicedToArray(_slot$split$map, 1),
85
94
  hour = _slot$split$map2[0];
86
- var suffix = hour >= 12 ? locales.getText('pisell2.venue.time.pm') || '下午' : locales.getText('pisell2.venue.time.am') || '上午';
95
+ var suffix = hour >= 12 ? locales.getText('pisell2.venue.time.pm') || 'pm' : locales.getText('pisell2.venue.time.am') || 'am';
87
96
  var hour12 = hour % 12 === 0 ? 12 : hour % 12;
88
- return "".concat(hour12).concat(suffix);
97
+ var template = locales.getText('pisell2.venue.time.hour.format') || '{hour}{suffix}';
98
+ return template.replace('{hour}', String(hour12)).replace('{suffix}', suffix);
89
99
  }
90
100
 
91
101
  /** 从 timeLabels 中提取整点小时(用于表头合并列) */
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  interface LogData {
2
3
  key: string;
3
4
  value: any;
@@ -20,7 +20,7 @@ export declare const getFilterButtonList: () => ({
20
20
  }[];
21
21
  minInputNumberProps?: undefined;
22
22
  maxInputNumberProps?: undefined;
23
- readonly component?: undefined;
23
+ component?: undefined;
24
24
  isSearchServer?: undefined;
25
25
  showSearch?: undefined;
26
26
  showTime?: undefined;
@@ -46,7 +46,7 @@ export declare const getFilterButtonList: () => ({
46
46
  mode?: undefined;
47
47
  maxTagCount?: undefined;
48
48
  options?: undefined;
49
- readonly component?: undefined;
49
+ component?: undefined;
50
50
  isSearchServer?: undefined;
51
51
  showSearch?: undefined;
52
52
  showTime?: undefined;
@@ -91,7 +91,7 @@ export declare const getFilterButtonList: () => ({
91
91
  options: () => Promise<any>;
92
92
  minInputNumberProps?: undefined;
93
93
  maxInputNumberProps?: undefined;
94
- readonly component?: undefined;
94
+ component?: undefined;
95
95
  isSearchServer?: undefined;
96
96
  showSearch?: undefined;
97
97
  showTime?: undefined;
@@ -111,7 +111,7 @@ export declare const getFilterButtonList: () => ({
111
111
  options?: undefined;
112
112
  minInputNumberProps?: undefined;
113
113
  maxInputNumberProps?: undefined;
114
- readonly component?: undefined;
114
+ component?: undefined;
115
115
  isSearchServer?: undefined;
116
116
  showSearch?: undefined;
117
117
  showTime?: undefined;
@@ -133,7 +133,7 @@ export declare const getFilterButtonList: () => ({
133
133
  maxTagCount?: undefined;
134
134
  minInputNumberProps?: undefined;
135
135
  maxInputNumberProps?: undefined;
136
- readonly component?: undefined;
136
+ component?: undefined;
137
137
  showTime?: undefined;
138
138
  };
139
139
  sort?: undefined;
@@ -152,7 +152,7 @@ export declare const getFilterButtonList: () => ({
152
152
  options?: undefined;
153
153
  minInputNumberProps?: undefined;
154
154
  maxInputNumberProps?: undefined;
155
- readonly component?: undefined;
155
+ component?: undefined;
156
156
  isSearchServer?: undefined;
157
157
  showSearch?: undefined;
158
158
  };
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  export interface UseSalesGridDataParams {
2
3
  perspective: 'monitor' | 'handle';
3
4
  extParams?: {
@@ -3,6 +3,6 @@ export interface ImageUploadProps {
3
3
  value?: string;
4
4
  onChange?: (val: string) => void;
5
5
  }
6
- export declare const getBaseTime: (size: number) => 1000 | 2000 | 4000 | 8000;
6
+ export declare const getBaseTime: (size: number) => 2000 | 1000 | 4000 | 8000;
7
7
  declare const ImageUpload: React.FC<ImageUploadProps>;
8
8
  export default ImageUpload;
@@ -1,2 +1,3 @@
1
+ /// <reference types="react" />
1
2
  declare const useIsLowSpeedNetwork: () => import("react").MutableRefObject<boolean>;
2
3
  export default useIsLowSpeedNetwork;
@@ -166,10 +166,10 @@ export declare const getProductTotalPrice: (item: any) => number;
166
166
  export declare const getDuration: (duration: number | {
167
167
  type: string;
168
168
  value: number;
169
- }) => number | {
169
+ }) => number | "flexible" | {
170
170
  type: string;
171
171
  value: number;
172
- } | "flexible";
172
+ };
173
173
  export declare const isWalkIn: (customer_id?: number | string) => boolean;
174
174
  export declare const getIsEdit: (state: any) => boolean;
175
175
  export {};
@@ -8,7 +8,7 @@ export declare const useCupAction: () => {
8
8
  * @return {*}
9
9
  */
10
10
  export declare const useBatchCupAction: () => {
11
- run: (this: unknown, eco_cup_ids: string[] | number[]) => Promise<boolean>;
11
+ run: (this: unknown, eco_cup_ids: number[] | string[]) => Promise<boolean>;
12
12
  loading: boolean;
13
13
  };
14
14
  /**
@@ -15,11 +15,11 @@ export declare const useStoreRef: <T extends {
15
15
  readonly numRef: React.MutableRefObject<string | number | undefined>;
16
16
  readonly orderIdRef: React.MutableRefObject<string | number>;
17
17
  readonly modeRef: React.MutableRefObject<ModeEnum>;
18
- readonly statusRef: React.MutableRefObject<"success" | "warn" | "loading" | "fail" | "pedding" | "resove" | "reject" | "question">;
18
+ readonly statusRef: React.MutableRefObject<"warn" | "success" | "loading" | "fail" | "pedding" | "resove" | "reject" | "question">;
19
19
  readonly netRef: React.MutableRefObject<boolean | undefined>;
20
20
  readonly symbolRef: React.MutableRefObject<string>;
21
21
  readonly amountRef: React.MutableRefObject<string | number>;
22
- readonly eftposRef: React.MutableRefObject<"tyro" | "payo" | "windcave" | "stripe" | "linkly">;
22
+ readonly eftposRef: React.MutableRefObject<"stripe" | "payo" | "tyro" | "windcave" | "linkly">;
23
23
  readonly clientRef: React.MutableRefObject<ClientEnum>;
24
24
  readonly dataRef: React.MutableRefObject<import("./store").State>;
25
25
  };
@@ -176,7 +176,7 @@ export declare const updateCustom: (payload: {
176
176
  export declare const updateStatus: (status: 'loading' | 'warn' | 'fail' | 'success' | 'question') => {
177
177
  type: EActionTypes;
178
178
  payload: {
179
- status: "success" | "warn" | "loading" | "fail" | "question";
179
+ status: "warn" | "success" | "loading" | "fail" | "question";
180
180
  };
181
181
  };
182
182
  /**
@@ -197,7 +197,7 @@ export declare const updateComponent: (component: string, render?: boolean) => {
197
197
  } | {
198
198
  readonly type: "step";
199
199
  readonly render: boolean;
200
- readonly component?: undefined;
200
+ component?: undefined;
201
201
  };
202
202
  };
203
203
  /**
@@ -297,9 +297,9 @@ export declare const backUpFree: (payload: Partial<State>) => {
297
297
  name?: string | undefined;
298
298
  symbol?: string | undefined;
299
299
  amount?: string | number | undefined;
300
- mode?: "pay" | "fullPay" | "refund" | "query" | undefined;
300
+ mode?: "refund" | "pay" | "fullPay" | "query" | undefined;
301
301
  order_id?: string | number | undefined;
302
- eftpos?: "tyro" | "payo" | "windcave" | "stripe" | "linkly" | undefined;
302
+ eftpos?: "stripe" | "payo" | "tyro" | "windcave" | "linkly" | undefined;
303
303
  action?: "amount" | "pay" | "deviceList" | undefined;
304
304
  key?: number | undefined;
305
305
  step?: number | undefined;
@@ -310,7 +310,7 @@ export declare const backUpFree: (payload: Partial<State>) => {
310
310
  net?: boolean | undefined;
311
311
  component?: string | undefined;
312
312
  form?: string | undefined;
313
- status?: "success" | "warn" | "loading" | "fail" | "pedding" | "resove" | "reject" | "question" | undefined;
313
+ status?: "warn" | "success" | "loading" | "fail" | "pedding" | "resove" | "reject" | "question" | undefined;
314
314
  warn?: string | undefined;
315
315
  steps?: {
316
316
  /** 用于重置当前步骤 */
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  /**
2
3
  * @title: 获取 Tyro 资源
3
4
  * @description:
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  declare const Status: (props: any) => import("react").JSX.Element;
3
4
  export default Status;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  declare const DayItem: (props: any) => import("react").JSX.Element;
3
4
  export default DayItem;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  import { CalendarItemProps } from '../../../../../type';
3
4
  declare const Item: (props: CalendarItemProps) => import("react").JSX.Element;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  declare const Status: (props: any) => import("react").JSX.Element;
3
4
  export default Status;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  declare const StripeSDK: ({ public_key, client_secret, children, lang, }: {
2
3
  public_key: string;
3
4
  client_secret?: string | undefined;
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import './index.less';
2
3
  declare const Empty: (props: any) => import("react").JSX.Element;
3
4
  export default Empty;
@@ -76,16 +76,11 @@ function Cart(props) {
76
76
  const cartProducts = (0, import_react.useMemo)(() => {
77
77
  return (items || []).map((item) => ({
78
78
  ...item,
79
- symbol: (item == null ? void 0 : item.symbol) || symbol
79
+ symbol: (item == null ? void 0 : item.symbol) || symbol,
80
+ is_hide_like: true
80
81
  }));
81
82
  }, [items, symbol]);
82
- const confirmOrderText = (() => {
83
- if (currentStep === "select-venue")
84
- return String(import_utils.locales.getText("pisell2.venue.action.next.addons") || "下一步:附加项");
85
- if (currentStep === "addons")
86
- return String(import_utils.locales.getText("pisell2.venue.action.review.pay") || "确认 & 支付");
87
- return String(import_utils.locales.getText("pisell2.venue.action.pay.now") || "立即支付");
88
- })();
83
+ const confirmOrderText = currentStep === "checkout" ? String(import_utils.locales.getText("pisell2.venue.action.pay.now") || "立即支付") : String(import_utils.locales.getText("pisell2.venue.action.next") || "下一步");
89
84
  const subTotalList = (0, import_react.useMemo)(() => {
90
85
  var _a2, _b2, _c2;
91
86
  const subTotal = Number((summary == null ? void 0 : summary.product_amount) ?? 0);
@@ -60,10 +60,6 @@ function Checkout() {
60
60
  ((_a = viewModel.summary) == null ? void 0 : _a.total_amount) ?? ((_b = viewModel.summary) == null ? void 0 : _b.expect_amount) ?? 0
61
61
  );
62
62
  }, [viewModel.summary]);
63
- const taxFee = (0, import_react.useMemo)(() => {
64
- var _a;
65
- return Number(((_a = viewModel.summary) == null ? void 0 : _a.tax_fee) ?? 0);
66
- }, [viewModel.summary]);
67
63
  const venueCartItems = (0, import_react.useMemo)(() => {
68
64
  return (viewModel.cartItems || []).filter((item) => Boolean((item == null ? void 0 : item.start_date) && (item == null ? void 0 : item.end_date)));
69
65
  }, [viewModel.cartItems]);
@@ -125,7 +121,7 @@ function Checkout() {
125
121
  setNoteValue(nextNote);
126
122
  lastNoteRef.current = nextNote;
127
123
  }, [viewModel.note]);
128
- return /* @__PURE__ */ import_react.default.createElement("div", { className: "space-y-3 md:space-y-5" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "grid gap-3 md:gap-4" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "rounded-[22px] bg-white p-4 shadow-[0_10px_40px_rgba(20,20,20,0.06)] ring-1 ring-black/6 md:rounded-[28px] md:p-6" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "flex items-center justify-between gap-3" }, /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-xs font-bold uppercase tracking-[0.24em] text-[#b39a8b]" }, import_utils.locales.getText("pisell2.venue.checkout.booking.details") || "预订详情"), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-3 text-[22px] font-extrabold text-zinc-900" }, import_utils.locales.getText("pisell2.venue.checkout.court.summary") || "场地预订摘要"))), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-5 grid gap-4 md:grid-cols-2" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "rounded-[22px] bg-[#faf7f4] p-4 ring-1 ring-black/6 md:col-span-2" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-sm font-semibold text-[#a69183]" }, import_utils.locales.getText("pisell2.venue.checkout.selected.courts") || "已选场地"), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-3 space-y-2 text-[15px] font-semibold text-zinc-900" }, mergedCourtSessionLines.length ? mergedCourtSessionLines.map((line, idx) => /* @__PURE__ */ import_react.default.createElement("div", { key: `venue-session-line-${idx}` }, line)) : /* @__PURE__ */ import_react.default.createElement("div", null, import_utils.locales.getText("pisell2.venue.checkout.sessions.empty") || "-"))), addonCartItems.length > 0 ? /* @__PURE__ */ import_react.default.createElement("div", { className: "rounded-[22px] bg-[#faf7f4] p-4 ring-1 ring-black/6" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-sm font-semibold text-[#a69183]" }, import_utils.locales.getText("pisell2.venue.checkout.addons") || "附加项"), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-3 text-[15px] font-semibold text-zinc-900" }, addonCartItems.map((item, idx) => /* @__PURE__ */ import_react.default.createElement("div", { key: `addon-${item.id || idx}` }, item.title || item.name || "-"))), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-2 text-[15px] text-zinc-500" }, import_utils.locales.getText("pisell2.venue.checkout.addons.total") || "附加项合计", ": ", symbol, addonTotal.toFixed(2))) : null, /* @__PURE__ */ import_react.default.createElement("div", { className: "rounded-[22px] bg-[#faf7f4] p-4 ring-1 ring-black/6" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-sm font-semibold text-[#a69183]" }, import_utils.locales.getText("pisell2.venue.checkout.subtotal") || "预订小计"), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-3 text-[30px] font-extrabold text-zinc-900" }, symbol, Number.isNaN(bookingSubtotal) ? "0.00" : bookingSubtotal.toFixed(2))), taxFee > 0 ? /* @__PURE__ */ import_react.default.createElement("div", { className: "rounded-[22px] bg-[#faf7f4] p-4 ring-1 ring-black/6" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-sm font-semibold text-[#a69183]" }, import_utils.locales.getText("pisell2.venue.checkout.tax") || "税费"), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-3 text-[15px] font-semibold text-zinc-900" }, symbol, Number.isNaN(taxFee) ? "0.00" : taxFee.toFixed(2))) : null)), /* @__PURE__ */ import_react.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "rounded-[28px] bg-white p-5 shadow-[0_10px_40px_rgba(20,20,20,0.06)] ring-1 ring-black/6 md:p-6" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "flex items-start justify-between gap-3" }), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-5 rounded-[22px] bg-[#faf7f4] p-4 ring-1 ring-black/6" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-lg font-bold text-zinc-900" }, import_utils.locales.getText("pisell2.venue.checkout.notice") || "备注"), /* @__PURE__ */ import_react.default.createElement(
124
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "space-y-3 md:space-y-5" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "grid gap-3 md:gap-4" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "rounded-[22px] bg-white p-4 shadow-[0_10px_40px_rgba(20,20,20,0.06)] ring-1 ring-black/6 md:rounded-[28px] md:p-6" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "flex items-center justify-between gap-3" }, /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-xs font-bold uppercase tracking-[0.24em] text-[#b39a8b]" }, import_utils.locales.getText("pisell2.venue.checkout.booking.details") || "预订详情"), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-3 text-[22px] font-extrabold text-zinc-900" }, import_utils.locales.getText("pisell2.venue.checkout.court.summary") || "场地预订摘要"))), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-5 grid gap-4 md:grid-cols-2" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "rounded-[22px] bg-[#faf7f4] p-4 ring-1 ring-black/6 md:col-span-2" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-sm font-semibold text-[#a69183]" }, import_utils.locales.getText("pisell2.venue.checkout.selected.courts") || "已选场地"), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-3 space-y-2 text-[15px] font-semibold text-zinc-900" }, mergedCourtSessionLines.length ? mergedCourtSessionLines.map((line, idx) => /* @__PURE__ */ import_react.default.createElement("div", { key: `venue-session-line-${idx}` }, line)) : /* @__PURE__ */ import_react.default.createElement("div", null, import_utils.locales.getText("pisell2.venue.checkout.sessions.empty") || "-"))), addonCartItems.length > 0 ? /* @__PURE__ */ import_react.default.createElement("div", { className: "rounded-[22px] bg-[#faf7f4] p-4 ring-1 ring-black/6" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-sm font-semibold text-[#a69183]" }, import_utils.locales.getText("pisell2.venue.checkout.addons") || "附加项"), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-3 text-[15px] font-semibold text-zinc-900" }, addonCartItems.map((item, idx) => /* @__PURE__ */ import_react.default.createElement("div", { key: `addon-${item.id || idx}` }, item.title || item.name || "-"))), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-2 text-[15px] text-zinc-500" }, import_utils.locales.getText("pisell2.venue.checkout.addons.total") || "附加项合计", ": ", symbol, addonTotal.toFixed(2))) : null, /* @__PURE__ */ import_react.default.createElement("div", { className: "rounded-[22px] bg-[#faf7f4] p-4 ring-1 ring-black/6 md:col-span-2" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-sm font-semibold text-[#a69183]" }, import_utils.locales.getText("pisell2.venue.checkout.subtotal") || "预订小计"), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-3 text-[30px] font-extrabold text-zinc-900" }, symbol, Number.isNaN(bookingSubtotal) ? "0.00" : bookingSubtotal.toFixed(2))))), /* @__PURE__ */ import_react.default.createElement("div", { className: "space-y-4" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "rounded-[28px] bg-white p-5 shadow-[0_10px_40px_rgba(20,20,20,0.06)] ring-1 ring-black/6 md:p-6" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "flex items-start justify-between gap-3" }), /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-5 rounded-[22px] bg-[#faf7f4] p-4 ring-1 ring-black/6" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "text-lg font-bold text-zinc-900" }, import_utils.locales.getText("pisell2.venue.checkout.notice") || "备注"), /* @__PURE__ */ import_react.default.createElement(
129
125
  "textarea",
130
126
  {
131
127
  className: "mt-4 min-h-[120px] w-full rounded-[20px] border border-black/10 bg-white px-4 py-4 text-sm outline-none placeholder:text-zinc-400",
@@ -55,9 +55,7 @@ function Content() {
55
55
  if (!scope) return void 0;
56
56
  function update() {
57
57
  if (!wrap) return;
58
- const isSticky = typeof window !== "undefined" && window.getComputedStyle(wrap).position === "sticky";
59
- const value = isSticky ? `${wrap.offsetHeight}px` : "0px";
60
- scope == null ? void 0 : scope.style.setProperty("--vb-grid-sticky-top", value);
58
+ scope == null ? void 0 : scope.style.setProperty("--vb-grid-sticky-top", `${wrap.offsetHeight}px`);
61
59
  }
62
60
  update();
63
61
  const ro = typeof ResizeObserver !== "undefined" ? new ResizeObserver(update) : null;
@@ -133,17 +131,24 @@ function Content() {
133
131
  background: #fff;
134
132
  border-radius: 0 0 28px 28px;
135
133
  }
136
- `), /* @__PURE__ */ import_react.default.createElement("main", { className: "mx-auto max-w-[1500px] px-3 pt-3 md:px-6 md:pt-6 lg:pb-12 h-full overscroll-none" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "space-y-2 md:space-y-4", style: { minHeight: "100%" } }, /* @__PURE__ */ import_react.default.createElement("div", { ref: stepHeaderRef, className: "sticky top-0 z-30 lg:static lg:z-auto" }, /* @__PURE__ */ import_react.default.createElement(import_Header.default, null)), /* @__PURE__ */ import_react.default.createElement("div", { className: "grid max-w-full gap-2 md:gap-4 lg:grid-cols-[minmax(0,1fr)_390px] xl:grid-cols-[minmax(0,1fr)_420px]" }, /* @__PURE__ */ import_react.default.createElement("section", { className: "min-w-0 space-y-3 overscroll-none md:space-y-5" }, stepRegistry[currentStep]), /* @__PURE__ */ import_react.default.createElement("aside", { className: "hidden lg:block sticky top-6 self-start rounded-[28px] bg-white shadow-[0_10px_40px_rgba(20,20,20,0.06)] ring-1 ring-black/6" }, /* @__PURE__ */ import_react.default.createElement(
137
- import_Cart.default,
134
+ `), /* @__PURE__ */ import_react.default.createElement("main", { className: "mx-auto max-w-[1500px] md:px-6 md:pt-6 lg:pb-12 h-full overscroll-none" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "space-y-2 md:space-y-4", style: { minHeight: "100%" } }, /* @__PURE__ */ import_react.default.createElement("div", { ref: stepHeaderRef, className: "sticky top-0 z-40" }, /* @__PURE__ */ import_react.default.createElement(import_Header.default, null)), /* @__PURE__ */ import_react.default.createElement("div", { className: "grid max-w-full gap-2 md:gap-4 lg:grid-cols-[minmax(0,1fr)_390px] xl:grid-cols-[minmax(0,1fr)_420px]" }, /* @__PURE__ */ import_react.default.createElement("section", { className: "min-w-0 space-y-3 overscroll-none md:space-y-5" }, stepRegistry[currentStep]), /* @__PURE__ */ import_react.default.createElement(
135
+ "aside",
138
136
  {
139
- embedded: true,
140
- open: true,
141
- items: viewModel.cartItems,
142
- summary: viewModel.summary,
143
- onCancel: () => {
144
- },
145
- onNext: handlePrimaryAction,
146
- confirmLoading: isSubmittingOrder
147
- }
148
- )))), /* @__PURE__ */ import_react.default.createElement("div", { className: "sticky bottom-0 z-30 block lg:hidden" }, /* @__PURE__ */ import_react.default.createElement(import_Footer.default, null))));
137
+ className: "hidden lg:block sticky self-start z-10 rounded-[28px] bg-white shadow-[0_10px_40px_rgba(20,20,20,0.06)] ring-1 ring-black/6",
138
+ style: { top: "calc(var(--vb-grid-sticky-top, 0px) + 1.5rem)" }
139
+ },
140
+ /* @__PURE__ */ import_react.default.createElement(
141
+ import_Cart.default,
142
+ {
143
+ embedded: true,
144
+ open: true,
145
+ items: viewModel.cartItems,
146
+ summary: viewModel.summary,
147
+ onCancel: () => {
148
+ },
149
+ onNext: handlePrimaryAction,
150
+ confirmLoading: isSubmittingOrder
151
+ }
152
+ )
153
+ ))), /* @__PURE__ */ import_react.default.createElement("div", { className: "sticky bottom-0 z-41 block lg:hidden" }, /* @__PURE__ */ import_react.default.createElement(import_Footer.default, null))));
149
154
  }
@@ -57,15 +57,7 @@ function Footer() {
57
57
  if (Number.isNaN(parsedAmount)) return "0.00";
58
58
  return parsedAmount.toFixed(2);
59
59
  }, [viewModel.summary]);
60
- const actionText = (0, import_react.useMemo)(() => {
61
- if (currentStep === "select-venue") {
62
- return String(import_utils.locales.getText("pisell2.venue.action.next.addons") || "下一步:附加项");
63
- }
64
- if (currentStep === "addons") {
65
- return String(import_utils.locales.getText("pisell2.venue.action.review.pay") || "确认 & 支付");
66
- }
67
- return String(import_utils.locales.getText("pisell2.venue.action.pay.now") || "立即支付");
68
- }, [currentStep]);
60
+ const actionText = (0, import_react.useMemo)(() => currentStep === "checkout" ? String(import_utils.locales.getText("pisell2.venue.action.pay.now") || "立即支付") : String(import_utils.locales.getText("pisell2.venue.action.next") || "下一步"), [currentStep]);
69
61
  return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-venue-booking-footer" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-venue-booking-footer-left" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-venue-booking-footer-total-label" }, import_utils.locales.getText("pisell2.event.total") || "合计"), /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-venue-booking-footer-total-amount" }, symbol, totalAmount)), /* @__PURE__ */ import_react.default.createElement("div", { className: "pisell-venue-booking-footer-right" }, /* @__PURE__ */ import_react.default.createElement(import_materials.Badge, { count: ((_a = viewModel.cartItems) == null ? void 0 : _a.length) || 0, id: "venue-booking-cart-btn" }, /* @__PURE__ */ import_react.default.createElement(
70
62
  import_materials.Button,
71
63
  {
@@ -37,16 +37,22 @@ var import_antd = require("antd");
37
37
  var import_utils = require("@pisell/utils");
38
38
  var import_materials = require("@pisell/materials");
39
39
  var import_context = require("../../context");
40
- var STEP_ITEMS = [
41
- { n: 1, key: "select-venue", titleKey: "pisell2.venue.step.select" },
42
- { n: 2, key: "addons", titleKey: "pisell2.venue.step.addons" },
43
- { n: 3, key: "checkout", titleKey: "pisell2.venue.step.checkout" }
44
- ];
45
40
  function Header() {
41
+ var _a;
46
42
  const { currentStep, canNext, viewModel, goToStep, prevStep } = (0, import_context.useVenueBookingContext)();
47
43
  const [popupOpen, setPopupOpen] = (0, import_react.useState)(false);
48
44
  const [confirmOpen, setConfirmOpen] = (0, import_react.useState)(false);
49
45
  const cardRef = (0, import_react.useRef)(null);
46
+ const STEP_ITEMS = (0, import_react.useMemo)(() => {
47
+ var _a2;
48
+ const hasAddons = (((_a2 = viewModel.addonProductList) == null ? void 0 : _a2.length) || 0) > 0;
49
+ const base = [
50
+ { key: "select-venue", titleKey: "pisell2.venue.step.select" },
51
+ ...hasAddons ? [{ key: "addons", titleKey: "pisell2.venue.step.addons" }] : [],
52
+ { key: "checkout", titleKey: "pisell2.venue.step.checkout" }
53
+ ];
54
+ return base.map((item, idx) => ({ ...item, n: idx + 1 }));
55
+ }, [(_a = viewModel.addonProductList) == null ? void 0 : _a.length]);
50
56
  const currentStepIndex = STEP_ITEMS.findIndex((item) => item.key === currentStep);
51
57
  const currentStepItem = STEP_ITEMS[currentStepIndex] || STEP_ITEMS[0];
52
58
  const isFirstStep = currentStepIndex <= 0;
@@ -98,7 +104,7 @@ function Header() {
98
104
  "div",
99
105
  {
100
106
  ref: cardRef,
101
- className: "relative rounded-[20px] bg-white p-3 md:rounded-[24px] md:p-4 ring-1 ring-black/6 shadow-[0_10px_30px_rgba(20,20,20,0.04)]"
107
+ className: "relative bg-white p-3 md:rounded-[24px] md:p-4 ring-1 ring-black/6 shadow-[0_10px_30px_rgba(20,20,20,0.04)]"
102
108
  },
103
109
  /* @__PURE__ */ import_react.default.createElement(
104
110
  import_antd.Modal,
@@ -34,7 +34,6 @@ __export(CourtFilter_exports, {
34
34
  module.exports = __toCommonJS(CourtFilter_exports);
35
35
  var import_react = __toESM(require("react"));
36
36
  var import_utils = require("@pisell/utils");
37
- var import_materials = require("@pisell/materials");
38
37
  var import_context = require("../../../context");
39
38
  function CourtFilter() {
40
39
  const { search, setSearch, filter, setFilter, viewModel } = (0, import_context.useVenueBookingContext)();
@@ -47,15 +46,7 @@ function CourtFilter() {
47
46
  { label: import_utils.locales.getText("pisell2.venue.filter.all") || "全部", value: "ALL" },
48
47
  ...courtTypes.map((type) => ({ label: type, value: type }))
49
48
  ];
50
- return /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-4 grid gap-3 md:mt-5 xl:grid-cols-[1fr_auto] xl:items-center" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "flex items-center gap-3 rounded-[18px] border border-black/8 bg-[#fafafa] px-4 py-3" }, /* @__PURE__ */ import_react.default.createElement(import_materials.Iconfont, { type: "pisell2-search-lg", style: { fontSize: 16, color: "#a1a1aa" } }), /* @__PURE__ */ import_react.default.createElement(
51
- "input",
52
- {
53
- value: search,
54
- onChange: (e) => setSearch(e.target.value),
55
- placeholder: String(import_utils.locales.getText("pisell2.venue.search.placeholder") || "搜索场地"),
56
- className: "w-full border-0 bg-transparent text-sm outline-none placeholder:text-zinc-400"
57
- }
58
- )), courtTypes.length > 1 ? /* @__PURE__ */ import_react.default.createElement("div", { className: "flex flex-wrap gap-2" }, filterOptions.map((opt) => /* @__PURE__ */ import_react.default.createElement(
49
+ return /* @__PURE__ */ import_react.default.createElement("div", { className: "mt-4 grid gap-3 md:mt-5 xl:grid-cols-[1fr_auto] xl:items-center" }, courtTypes.length > 1 ? /* @__PURE__ */ import_react.default.createElement("div", { className: "flex flex-wrap gap-2" }, filterOptions.map((opt) => /* @__PURE__ */ import_react.default.createElement(
59
50
  "button",
60
51
  {
61
52
  key: opt.value,