@salla.sa/twilight-components 3.0.18 → 3.0.20

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 (481) hide show
  1. package/dist/cjs/{Helper-D2VNt6eb.js → Helper-C3MBaLHQ.js} +1 -1
  2. package/dist/cjs/delivery-promise-intent-5WTKLkFZ.js +71 -0
  3. package/dist/cjs/{filepond-DkCudLhG.js → filepond-DGt10gCq.js} +1 -1
  4. package/dist/cjs/{filepond-plugin-file-poster-C-uxFWfW.js → filepond-plugin-file-poster-NSV7ClY6.js} +1 -1
  5. package/dist/cjs/{filepond-plugin-file-validate-size-BikXTQW2.js → filepond-plugin-file-validate-size-C08-fDj7.js} +1 -1
  6. package/dist/cjs/{filepond-plugin-file-validate-type-Drs7PouU.js → filepond-plugin-file-validate-type-CbbTh4qd.js} +1 -1
  7. package/dist/cjs/{filepond-plugin-image-edit-hxr0h9kt.js → filepond-plugin-image-edit-CqqtsmjD.js} +1 -1
  8. package/dist/cjs/{filepond-plugin-image-exif-orientation-CVZmWU_4.js → filepond-plugin-image-exif-orientation-D60HJIiL.js} +1 -1
  9. package/dist/cjs/{filepond-plugin-image-preview-CBjPKx-d.js → filepond-plugin-image-preview-B7bWOXFm.js} +1 -1
  10. package/dist/cjs/helpers-wRMwEkLy.js +627 -0
  11. package/dist/cjs/{index-CTYg2zC6.js → index-U-OadFju.js} +14 -10
  12. package/dist/cjs/{intlTelInput-C9X0hKXV.js → intlTelInput-Cp6WJvPO.js} +1 -1
  13. package/dist/cjs/loader.cjs.js +2 -2
  14. package/dist/cjs/salla-accordion-body_2.cjs.entry.js +1 -1
  15. package/dist/cjs/salla-accordion_6.cjs.entry.js +2 -2
  16. package/dist/cjs/salla-add-product-button_5.cjs.entry.js +164 -7
  17. package/dist/cjs/salla-advertisement.cjs.entry.js +1 -1
  18. package/dist/cjs/salla-alert_2.cjs.entry.js +1 -1
  19. package/dist/cjs/salla-app-install-alert.cjs.entry.js +1 -1
  20. package/dist/cjs/salla-applied-filters.cjs.entry.js +2 -2
  21. package/dist/cjs/salla-apps-icons.cjs.entry.js +1 -1
  22. package/dist/cjs/salla-attachment-view_9.cjs.entry.js +13 -13
  23. package/dist/cjs/salla-badge.cjs.entry.js +1 -1
  24. package/dist/cjs/salla-basket-gap.cjs.entry.js +1 -1
  25. package/dist/cjs/salla-bullet-delivery_3.cjs.entry.js +435 -134
  26. package/dist/cjs/salla-cart-coupons.cjs.entry.js +1 -1
  27. package/dist/cjs/salla-cart-item-offers_2.cjs.entry.js +1 -1
  28. package/dist/cjs/salla-cart-summary-card.cjs.entry.js +1 -1
  29. package/dist/cjs/salla-cashback-banner.cjs.entry.js +1 -1
  30. package/dist/cjs/salla-comment-factors.cjs.entry.js +1 -1
  31. package/dist/cjs/salla-comment-form_9.cjs.entry.js +4 -4
  32. package/dist/cjs/salla-conditional-offer.cjs.entry.js +1 -1
  33. package/dist/cjs/salla-contacts.cjs.entry.js +1 -1
  34. package/dist/cjs/salla-cookies-bar.cjs.entry.js +1 -1
  35. package/dist/cjs/salla-count-down.cjs.entry.js +1 -1
  36. package/dist/cjs/salla-custom-fields.cjs.entry.js +1 -1
  37. package/dist/cjs/salla-delivery-promise.cjs.entry.js +5 -65
  38. package/dist/cjs/salla-edit-order-button.cjs.entry.js +1 -1
  39. package/dist/cjs/salla-filters-widget.cjs.entry.js +2 -2
  40. package/dist/cjs/salla-filters.cjs.entry.js +2 -2
  41. package/dist/cjs/salla-free-shipping-banner.cjs.entry.js +1 -1
  42. package/dist/cjs/salla-free-shipping-tag.cjs.entry.js +1 -1
  43. package/dist/cjs/salla-fulfillment-methods.cjs.entry.js +1 -1
  44. package/dist/cjs/salla-gift-card-redeem_2.cjs.entry.js +2 -2
  45. package/dist/cjs/salla-gifting.cjs.entry.js +1 -1
  46. package/dist/cjs/salla-hook.cjs.entry.js +1 -1
  47. package/dist/cjs/salla-infinite-scroll.cjs.entry.js +2 -2
  48. package/dist/cjs/salla-installment.cjs.entry.js +1 -1
  49. package/dist/cjs/salla-list-tile.cjs.entry.js +1 -1
  50. package/dist/cjs/salla-localization-modal.cjs.entry.js +1 -1
  51. package/dist/cjs/salla-login-modal.cjs.entry.js +7 -2
  52. package/dist/cjs/salla-loyalty-banner_10.cjs.entry.js +1 -1
  53. package/dist/cjs/salla-loyalty-exchange-product-card.cjs.entry.js +1 -1
  54. package/dist/cjs/salla-loyalty-points-banner.cjs.entry.js +1 -1
  55. package/dist/cjs/salla-loyalty-points-history.cjs.entry.js +1 -1
  56. package/dist/cjs/salla-loyalty-prize-item.cjs.entry.js +1 -1
  57. package/dist/cjs/salla-loyalty.cjs.entry.js +1 -1
  58. package/dist/cjs/salla-maintenance-alert.cjs.entry.js +1 -1
  59. package/dist/cjs/salla-map_3.cjs.entry.js +1 -1
  60. package/dist/cjs/salla-menu.cjs.entry.js +1 -1
  61. package/dist/cjs/salla-metadata.cjs.entry.js +1 -1
  62. package/dist/cjs/salla-mobile-update-modal.cjs.entry.js +188 -0
  63. package/dist/cjs/salla-multiple-bundle-product-cart_2.cjs.entry.js +4 -4
  64. package/dist/cjs/salla-multiple-bundle-product-options-modal_2.cjs.entry.js +6 -6
  65. package/dist/cjs/salla-multiple-bundle-product.cjs.entry.js +2 -2
  66. package/dist/cjs/salla-next-order-coupon.cjs.entry.js +1 -1
  67. package/dist/cjs/salla-notification-item_2.cjs.entry.js +3 -3
  68. package/dist/cjs/salla-offer-modal.cjs.entry.js +2 -2
  69. package/dist/cjs/salla-offer.cjs.entry.js +1 -1
  70. package/dist/cjs/salla-order-branch.cjs.entry.js +1 -1
  71. package/dist/cjs/salla-order-cancel.cjs.entry.js +1 -1
  72. package/dist/cjs/salla-order-details-multiple-bundle-product.cjs.entry.js +1 -1
  73. package/dist/cjs/salla-order-details-options.cjs.entry.js +1 -1
  74. package/dist/cjs/salla-order-details.cjs.entry.js +2 -2
  75. package/dist/cjs/salla-order-edit-item.cjs.entry.js +1 -1
  76. package/dist/cjs/salla-order-edit-product-card.cjs.entry.js +2 -2
  77. package/dist/cjs/salla-order-edit.cjs.entry.js +1 -1
  78. package/dist/cjs/salla-order-items.cjs.entry.js +2 -2
  79. package/dist/cjs/salla-order-options-modal.cjs.entry.js +1 -1
  80. package/dist/cjs/salla-order-payment.cjs.entry.js +2 -2
  81. package/dist/cjs/salla-order-rewards.cjs.entry.js +2 -2
  82. package/dist/cjs/salla-order-shipments.cjs.entry.js +1 -1
  83. package/dist/cjs/salla-order-summary.cjs.entry.js +2 -2
  84. package/dist/cjs/salla-order-totals-card.cjs.entry.js +1 -1
  85. package/dist/cjs/salla-orders.cjs.entry.js +2 -2
  86. package/dist/cjs/salla-payments.cjs.entry.js +3 -3
  87. package/dist/cjs/salla-placeholder.cjs.entry.js +2 -2
  88. package/dist/cjs/salla-price-range.cjs.entry.js +1 -1
  89. package/dist/cjs/salla-product-card-embed.cjs.entry.js +2 -2
  90. package/dist/cjs/salla-product-card.cjs.entry.js +1 -1
  91. package/dist/cjs/salla-product-size-guide.cjs.entry.js +3 -3
  92. package/dist/cjs/salla-products-list.cjs.entry.js +9 -2
  93. package/dist/cjs/salla-products-slider.cjs.entry.js +2 -2
  94. package/dist/cjs/salla-quick-order.cjs.entry.js +1 -1
  95. package/dist/cjs/salla-rating-modal-v2.cjs.entry.js +33 -7
  96. package/dist/cjs/salla-rating-modal.cjs.entry.js +2 -2
  97. package/dist/cjs/salla-review-factors-tags.cjs.entry.js +2 -2
  98. package/dist/cjs/salla-review-order-item.cjs.entry.js +1 -1
  99. package/dist/cjs/salla-scopes.cjs.entry.js +1 -1
  100. package/dist/cjs/salla-search-product-card.cjs.entry.js +3 -3
  101. package/dist/cjs/salla-search.cjs.entry.js +2 -2
  102. package/dist/cjs/salla-skeleton.cjs.entry.js +2 -2
  103. package/dist/cjs/salla-social-share.cjs.entry.js +2 -2
  104. package/dist/cjs/salla-social.cjs.entry.js +2 -2
  105. package/dist/cjs/salla-tab-content_3.cjs.entry.js +4 -4
  106. package/dist/cjs/salla-thank-you-header.cjs.entry.js +2 -2
  107. package/dist/cjs/salla-thank-you-page.cjs.entry.js +2 -2
  108. package/dist/cjs/salla-tiered-offer.cjs.entry.js +1 -1
  109. package/dist/cjs/salla-trust-badges.cjs.entry.js +1 -1
  110. package/dist/cjs/salla-user-menu.cjs.entry.js +1 -1
  111. package/dist/cjs/salla-user-profile.cjs.entry.js +1 -1
  112. package/dist/cjs/salla-user-settings.cjs.entry.js +2 -2
  113. package/dist/cjs/salla-verify.cjs.entry.js +3 -3
  114. package/dist/cjs/salla-wallet.cjs.entry.js +1 -1
  115. package/dist/cjs/salla-wishlist-actions.cjs.entry.js +2 -2
  116. package/dist/cjs/salla-wishlist-summary.cjs.entry.js +2 -2
  117. package/dist/cjs/twilight.cjs.js +2 -2
  118. package/dist/cjs/{vanilla-picker-BsLm8rHT.js → vanilla-picker-C-rN_NiT.js} +1 -1
  119. package/dist/collection/collection-manifest.json +1 -0
  120. package/dist/collection/components/salla-bullet-delivery/api-service.js +156 -25
  121. package/dist/collection/components/salla-bullet-delivery/helpers.js +166 -15
  122. package/dist/collection/components/salla-bullet-delivery/icons.js +17 -0
  123. package/dist/collection/components/salla-bullet-delivery/salla-bullet-delivery.css +490 -52
  124. package/dist/collection/components/salla-bullet-delivery/salla-bullet-delivery.js +423 -101
  125. package/dist/collection/components/salla-login-modal/salla-login-modal.js +6 -1
  126. package/dist/collection/components/salla-mobile-update-modal/salla-mobile-update-modal.css +43 -0
  127. package/dist/collection/components/salla-mobile-update-modal/salla-mobile-update-modal.js +235 -0
  128. package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-cart.js +1 -1
  129. package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-details.js +2 -2
  130. package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-options-modal.js +4 -4
  131. package/dist/collection/components/salla-multiple-bundle-product/components/salla-multiple-bundle-product-slider.js +1 -1
  132. package/dist/collection/components/salla-multiple-bundle-product/salla-multiple-bundle-product.js +1 -1
  133. package/dist/collection/components/salla-notifications/salla-notification-item.js +1 -1
  134. package/dist/collection/components/salla-offer-modal/salla-offer-modal.js +1 -1
  135. package/dist/collection/components/salla-order-details/salla-order-details.js +1 -1
  136. package/dist/collection/components/salla-order-edit/salla-order-edit-product-card.js +1 -1
  137. package/dist/collection/components/salla-order-items/salla-order-items.js +1 -1
  138. package/dist/collection/components/salla-order-payment/salla-order-payment.js +1 -1
  139. package/dist/collection/components/salla-order-rewards/salla-order-rewards.js +1 -1
  140. package/dist/collection/components/salla-order-summary/salla-order-summary.js +1 -1
  141. package/dist/collection/components/salla-payments/salla-payments.js +2 -2
  142. package/dist/collection/components/salla-placeholder/salla-placeholder.js +1 -1
  143. package/dist/collection/components/salla-product-availability/salla-product-availability.js +1 -1
  144. package/dist/collection/components/salla-product-card-embed/salla-product-card-embed.js +1 -1
  145. package/dist/collection/components/salla-product-size-guide/salla-product-size-guide.js +2 -2
  146. package/dist/collection/components/salla-products-list/salla-products-list.js +7 -0
  147. package/dist/collection/components/salla-quantity-input/salla-quantity-input.js +1 -1
  148. package/dist/collection/components/salla-quick-buy/salla-quick-buy.js +91 -2
  149. package/dist/collection/components/salla-rating-modal/salla-rating-modal-v2.js +31 -5
  150. package/dist/collection/components/salla-review-card/salla-review-card.js +1 -1
  151. package/dist/collection/components/salla-review-factors-tags/salla-review-factors-tags.js +1 -1
  152. package/dist/collection/components/salla-reviews-page/salla-reviews-page.js +1 -1
  153. package/dist/collection/components/salla-search-product-card/salla-search-product-card.js +2 -2
  154. package/dist/collection/components/salla-searchable-dropdown/salla-searchable-dropdown.js +4 -4
  155. package/dist/collection/components/salla-skeleton/salla-skeleton.js +1 -1
  156. package/dist/collection/components/salla-social/salla-social.js +1 -1
  157. package/dist/collection/components/salla-social-share/salla-social-share.js +1 -1
  158. package/dist/collection/components/salla-tabs/salla-tab-content.js +1 -1
  159. package/dist/collection/components/salla-tabs/salla-tab-header.js +1 -1
  160. package/dist/collection/components/salla-tabs/salla-tabs.js +1 -1
  161. package/dist/collection/components/salla-tel-input/salla-tel-input.js +1 -1
  162. package/dist/collection/components/salla-thank-you-header/salla-thank-you-header.js +1 -1
  163. package/dist/collection/components/salla-thank-you-page/salla-thank-you-page.js +1 -1
  164. package/dist/collection/components/salla-tooltip/salla-tooltip.js +1 -1
  165. package/dist/collection/components/salla-user-settings/salla-user-settings.js +1 -1
  166. package/dist/collection/components/salla-verify/salla-verify.js +48 -2
  167. package/dist/collection/components/salla-wishlist-actions/salla-wishlist-actions.js +1 -1
  168. package/dist/components/delivery-promise-intent.js +67 -0
  169. package/dist/components/helpers.js +322 -40
  170. package/dist/components/index.js +2 -2
  171. package/dist/components/mail.js +2 -2
  172. package/dist/components/salla-bullet-delivery.js +436 -129
  173. package/dist/components/salla-contacts.js +2 -2
  174. package/dist/components/salla-delivery-promise.js +1 -62
  175. package/dist/components/salla-login-modal2.js +6 -1
  176. package/dist/components/salla-loyalty-point2.js +2 -2
  177. package/dist/components/salla-mobile-update-modal.d.ts +11 -0
  178. package/dist/components/salla-mobile-update-modal.js +241 -0
  179. package/dist/components/salla-multiple-bundle-product-cart2.js +1 -1
  180. package/dist/components/salla-multiple-bundle-product-details2.js +2 -2
  181. package/dist/components/salla-multiple-bundle-product-options-modal2.js +4 -4
  182. package/dist/components/salla-multiple-bundle-product-slider2.js +1 -1
  183. package/dist/components/salla-multiple-bundle-product.js +1 -1
  184. package/dist/components/salla-notification-item2.js +1 -1
  185. package/dist/components/salla-offer-modal.js +1 -1
  186. package/dist/components/salla-order-details.js +1 -1
  187. package/dist/components/salla-order-edit-product-card.js +1 -1
  188. package/dist/components/salla-order-items2.js +1 -1
  189. package/dist/components/salla-order-payment.js +1 -1
  190. package/dist/components/salla-order-rewards.js +1 -1
  191. package/dist/components/salla-order-summary.js +1 -1
  192. package/dist/components/salla-payments.js +2 -2
  193. package/dist/components/salla-placeholder2.js +1 -1
  194. package/dist/components/salla-product-availability2.js +1 -1
  195. package/dist/components/salla-product-card-embed.js +1 -1
  196. package/dist/components/salla-product-size-guide.js +2 -2
  197. package/dist/components/salla-products-list2.js +7 -0
  198. package/dist/components/salla-quantity-input2.js +1 -1
  199. package/dist/components/salla-quick-buy2.js +161 -4
  200. package/dist/components/salla-quick-order.js +2 -2
  201. package/dist/components/salla-rating-modal-v22.js +33 -7
  202. package/dist/components/salla-rating-modal2.js +2 -2
  203. package/dist/components/salla-review-card2.js +1 -1
  204. package/dist/components/salla-review-factors-tags2.js +1 -1
  205. package/dist/components/salla-reviews-page.js +1 -1
  206. package/dist/components/salla-search-product-card2.js +2 -2
  207. package/dist/components/salla-searchable-dropdown2.js +4 -4
  208. package/dist/components/salla-skeleton2.js +1 -1
  209. package/dist/components/salla-social-share2.js +4 -4
  210. package/dist/components/salla-social.js +1 -1
  211. package/dist/components/salla-tab-content2.js +1 -1
  212. package/dist/components/salla-tab-header2.js +1 -1
  213. package/dist/components/salla-tabs2.js +1 -1
  214. package/dist/components/salla-tel-input2.js +1 -1
  215. package/dist/components/salla-thank-you-header.js +1 -1
  216. package/dist/components/salla-thank-you-page.js +1 -1
  217. package/dist/components/salla-tooltip2.js +1 -1
  218. package/dist/components/salla-user-settings.js +1 -1
  219. package/dist/components/salla-verify.js +1 -321
  220. package/dist/components/salla-verify2.js +328 -0
  221. package/dist/components/salla-wishlist-actions.js +1 -1
  222. package/dist/docs.json +158 -2
  223. package/dist/esm/{Helper-C1T-oD4J.js → Helper-BKruFMBN.js} +1 -1
  224. package/dist/esm/delivery-promise-intent-C6pZjRut.js +67 -0
  225. package/dist/esm/{filepond-BoWJzHeN.js → filepond-Vl6a--vT.js} +1 -1
  226. package/dist/esm/{filepond-plugin-file-poster-B6MkMtuC.js → filepond-plugin-file-poster-CrQqmzd5.js} +1 -1
  227. package/dist/esm/{filepond-plugin-file-validate-size-Dds_462B.js → filepond-plugin-file-validate-size-BrHjddJa.js} +1 -1
  228. package/dist/esm/{filepond-plugin-file-validate-type-DrfGXNay.js → filepond-plugin-file-validate-type-BeMZq9Fl.js} +1 -1
  229. package/dist/esm/{filepond-plugin-image-edit-CN7eGg-7.js → filepond-plugin-image-edit-DW6JzY39.js} +1 -1
  230. package/dist/esm/{filepond-plugin-image-exif-orientation-CyhxK_6R.js → filepond-plugin-image-exif-orientation-gzIIB75B.js} +1 -1
  231. package/dist/esm/{filepond-plugin-image-preview-DdKqAzT9.js → filepond-plugin-image-preview-BwbtnJIU.js} +1 -1
  232. package/dist/esm/helpers-BVaKfTMx.js +591 -0
  233. package/dist/esm/{index-DgUQRYr2.js → index-CrXKQnBu.js} +14 -10
  234. package/dist/esm/{intlTelInput-SwlavcFB.js → intlTelInput-BkjSbnO6.js} +1 -1
  235. package/dist/esm/loader.js +3 -3
  236. package/dist/esm/salla-accordion-body_2.entry.js +1 -1
  237. package/dist/esm/salla-accordion_6.entry.js +2 -2
  238. package/dist/esm/salla-add-product-button_5.entry.js +164 -7
  239. package/dist/esm/salla-advertisement.entry.js +1 -1
  240. package/dist/esm/salla-alert_2.entry.js +1 -1
  241. package/dist/esm/salla-app-install-alert.entry.js +1 -1
  242. package/dist/esm/salla-applied-filters.entry.js +2 -2
  243. package/dist/esm/salla-apps-icons.entry.js +1 -1
  244. package/dist/esm/salla-attachment-view_9.entry.js +13 -13
  245. package/dist/esm/salla-badge.entry.js +1 -1
  246. package/dist/esm/salla-basket-gap.entry.js +1 -1
  247. package/dist/esm/salla-bullet-delivery_3.entry.js +435 -134
  248. package/dist/esm/salla-cart-coupons.entry.js +1 -1
  249. package/dist/esm/salla-cart-item-offers_2.entry.js +1 -1
  250. package/dist/esm/salla-cart-summary-card.entry.js +1 -1
  251. package/dist/esm/salla-cashback-banner.entry.js +1 -1
  252. package/dist/esm/salla-comment-factors.entry.js +1 -1
  253. package/dist/esm/salla-comment-form_9.entry.js +4 -4
  254. package/dist/esm/salla-conditional-offer.entry.js +1 -1
  255. package/dist/esm/salla-contacts.entry.js +1 -1
  256. package/dist/esm/salla-cookies-bar.entry.js +1 -1
  257. package/dist/esm/salla-count-down.entry.js +1 -1
  258. package/dist/esm/salla-custom-fields.entry.js +1 -1
  259. package/dist/esm/salla-delivery-promise.entry.js +3 -63
  260. package/dist/esm/salla-edit-order-button.entry.js +1 -1
  261. package/dist/esm/salla-filters-widget.entry.js +2 -2
  262. package/dist/esm/salla-filters.entry.js +2 -2
  263. package/dist/esm/salla-free-shipping-banner.entry.js +1 -1
  264. package/dist/esm/salla-free-shipping-tag.entry.js +1 -1
  265. package/dist/esm/salla-fulfillment-methods.entry.js +1 -1
  266. package/dist/esm/salla-gift-card-redeem_2.entry.js +2 -2
  267. package/dist/esm/salla-gifting.entry.js +1 -1
  268. package/dist/esm/salla-hook.entry.js +1 -1
  269. package/dist/esm/salla-infinite-scroll.entry.js +2 -2
  270. package/dist/esm/salla-installment.entry.js +1 -1
  271. package/dist/esm/salla-list-tile.entry.js +1 -1
  272. package/dist/esm/salla-localization-modal.entry.js +1 -1
  273. package/dist/esm/salla-login-modal.entry.js +7 -2
  274. package/dist/esm/salla-loyalty-banner_10.entry.js +1 -1
  275. package/dist/esm/salla-loyalty-exchange-product-card.entry.js +1 -1
  276. package/dist/esm/salla-loyalty-points-banner.entry.js +1 -1
  277. package/dist/esm/salla-loyalty-points-history.entry.js +1 -1
  278. package/dist/esm/salla-loyalty-prize-item.entry.js +1 -1
  279. package/dist/esm/salla-loyalty.entry.js +1 -1
  280. package/dist/esm/salla-maintenance-alert.entry.js +1 -1
  281. package/dist/esm/salla-map_3.entry.js +1 -1
  282. package/dist/esm/salla-menu.entry.js +1 -1
  283. package/dist/esm/salla-metadata.entry.js +1 -1
  284. package/dist/esm/salla-mobile-update-modal.entry.js +186 -0
  285. package/dist/esm/salla-multiple-bundle-product-cart_2.entry.js +4 -4
  286. package/dist/esm/salla-multiple-bundle-product-options-modal_2.entry.js +6 -6
  287. package/dist/esm/salla-multiple-bundle-product.entry.js +2 -2
  288. package/dist/esm/salla-next-order-coupon.entry.js +1 -1
  289. package/dist/esm/salla-notification-item_2.entry.js +3 -3
  290. package/dist/esm/salla-offer-modal.entry.js +2 -2
  291. package/dist/esm/salla-offer.entry.js +1 -1
  292. package/dist/esm/salla-order-branch.entry.js +1 -1
  293. package/dist/esm/salla-order-cancel.entry.js +1 -1
  294. package/dist/esm/salla-order-details-multiple-bundle-product.entry.js +1 -1
  295. package/dist/esm/salla-order-details-options.entry.js +1 -1
  296. package/dist/esm/salla-order-details.entry.js +2 -2
  297. package/dist/esm/salla-order-edit-item.entry.js +1 -1
  298. package/dist/esm/salla-order-edit-product-card.entry.js +2 -2
  299. package/dist/esm/salla-order-edit.entry.js +1 -1
  300. package/dist/esm/salla-order-items.entry.js +2 -2
  301. package/dist/esm/salla-order-options-modal.entry.js +1 -1
  302. package/dist/esm/salla-order-payment.entry.js +2 -2
  303. package/dist/esm/salla-order-rewards.entry.js +2 -2
  304. package/dist/esm/salla-order-shipments.entry.js +1 -1
  305. package/dist/esm/salla-order-summary.entry.js +2 -2
  306. package/dist/esm/salla-order-totals-card.entry.js +1 -1
  307. package/dist/esm/salla-orders.entry.js +2 -2
  308. package/dist/esm/salla-payments.entry.js +3 -3
  309. package/dist/esm/salla-placeholder.entry.js +2 -2
  310. package/dist/esm/salla-price-range.entry.js +1 -1
  311. package/dist/esm/salla-product-card-embed.entry.js +2 -2
  312. package/dist/esm/salla-product-card.entry.js +1 -1
  313. package/dist/esm/salla-product-size-guide.entry.js +3 -3
  314. package/dist/esm/salla-products-list.entry.js +9 -2
  315. package/dist/esm/salla-products-slider.entry.js +2 -2
  316. package/dist/esm/salla-quick-order.entry.js +1 -1
  317. package/dist/esm/salla-rating-modal-v2.entry.js +33 -7
  318. package/dist/esm/salla-rating-modal.entry.js +2 -2
  319. package/dist/esm/salla-review-factors-tags.entry.js +2 -2
  320. package/dist/esm/salla-review-order-item.entry.js +1 -1
  321. package/dist/esm/salla-scopes.entry.js +1 -1
  322. package/dist/esm/salla-search-product-card.entry.js +3 -3
  323. package/dist/esm/salla-search.entry.js +2 -2
  324. package/dist/esm/salla-skeleton.entry.js +2 -2
  325. package/dist/esm/salla-social-share.entry.js +2 -2
  326. package/dist/esm/salla-social.entry.js +2 -2
  327. package/dist/esm/salla-tab-content_3.entry.js +4 -4
  328. package/dist/esm/salla-thank-you-header.entry.js +2 -2
  329. package/dist/esm/salla-thank-you-page.entry.js +2 -2
  330. package/dist/esm/salla-tiered-offer.entry.js +1 -1
  331. package/dist/esm/salla-trust-badges.entry.js +1 -1
  332. package/dist/esm/salla-user-menu.entry.js +1 -1
  333. package/dist/esm/salla-user-profile.entry.js +1 -1
  334. package/dist/esm/salla-user-settings.entry.js +2 -2
  335. package/dist/esm/salla-verify.entry.js +3 -3
  336. package/dist/esm/salla-wallet.entry.js +1 -1
  337. package/dist/esm/salla-wishlist-actions.entry.js +2 -2
  338. package/dist/esm/salla-wishlist-summary.entry.js +2 -2
  339. package/dist/esm/twilight.js +3 -3
  340. package/dist/esm/{vanilla-picker-Buy50D7t.js → vanilla-picker-eSagUASw.js} +1 -1
  341. package/dist/twilight/p-0050dd2a.entry.js +4 -0
  342. package/dist/twilight/{p-3d8b77f7.entry.js → p-012ff05c.entry.js} +1 -1
  343. package/dist/twilight/{p-08a15c81.entry.js → p-02ce2139.entry.js} +1 -1
  344. package/dist/twilight/{p-b0d2e31f.entry.js → p-059aa8a9.entry.js} +1 -1
  345. package/dist/twilight/{p-0d795b58.entry.js → p-09798a10.entry.js} +1 -1
  346. package/dist/twilight/p-0af7555c.entry.js +4 -0
  347. package/dist/twilight/{p-bed68e52.entry.js → p-11075f15.entry.js} +1 -1
  348. package/dist/twilight/{p-6e52b649.entry.js → p-12b2b553.entry.js} +1 -1
  349. package/dist/twilight/{p-8c1d14f0.entry.js → p-14fb124b.entry.js} +1 -1
  350. package/dist/twilight/{p-9e0a9a5a.entry.js → p-1ca3525d.entry.js} +1 -1
  351. package/dist/twilight/{p-7f97335a.entry.js → p-1f54638c.entry.js} +1 -1
  352. package/dist/twilight/{p-5694edf1.entry.js → p-201c816d.entry.js} +1 -1
  353. package/dist/twilight/{p-92fd20a0.entry.js → p-203b2723.entry.js} +1 -1
  354. package/dist/twilight/{p-1af9db24.entry.js → p-224c35e6.entry.js} +1 -1
  355. package/dist/twilight/{p-6dccd40f.entry.js → p-22bd8281.entry.js} +1 -1
  356. package/dist/twilight/{p-d4fb9921.entry.js → p-25ac8744.entry.js} +1 -1
  357. package/dist/twilight/{p-0ba159db.entry.js → p-25b964c0.entry.js} +1 -1
  358. package/dist/twilight/{p-da0df10b.entry.js → p-2a469c80.entry.js} +1 -1
  359. package/dist/twilight/{p-26d2b28a.entry.js → p-2a6f93a8.entry.js} +1 -1
  360. package/dist/twilight/{p-7fd9dc36.entry.js → p-2b0f98fc.entry.js} +1 -1
  361. package/dist/twilight/{p-259c995a.entry.js → p-2e66576c.entry.js} +1 -1
  362. package/dist/twilight/{p-be6f8551.entry.js → p-2e8e7cf2.entry.js} +1 -1
  363. package/dist/twilight/{p-ee479819.entry.js → p-2f05393f.entry.js} +1 -1
  364. package/dist/twilight/{p-1960020c.entry.js → p-3054e1c1.entry.js} +1 -1
  365. package/dist/twilight/{p-70dfb2b4.entry.js → p-3295390b.entry.js} +1 -1
  366. package/dist/twilight/{p-a95b0dc1.entry.js → p-33678067.entry.js} +1 -1
  367. package/dist/twilight/{p-c4cf0b4d.entry.js → p-33c05de2.entry.js} +1 -1
  368. package/dist/twilight/{p-d0ff9a3e.entry.js → p-381a9e70.entry.js} +1 -1
  369. package/dist/twilight/{p-f9e5ed10.entry.js → p-38270121.entry.js} +1 -1
  370. package/dist/twilight/{p-027cbda6.entry.js → p-385bf37d.entry.js} +1 -1
  371. package/dist/twilight/{p-d0aeeb7f.entry.js → p-40ee2ca3.entry.js} +1 -1
  372. package/dist/twilight/{p-cb48a5ef.entry.js → p-43a3401b.entry.js} +1 -1
  373. package/dist/twilight/{p-9d15f22d.entry.js → p-4616033a.entry.js} +1 -1
  374. package/dist/twilight/p-484af8cc.entry.js +4 -0
  375. package/dist/twilight/{p-516e4edc.entry.js → p-4b6627f5.entry.js} +1 -1
  376. package/dist/twilight/p-4ed8ae08.entry.js +4 -0
  377. package/dist/twilight/{p-6af8a7b6.entry.js → p-4fb442c2.entry.js} +1 -1
  378. package/dist/twilight/{p-4b70e6c4.entry.js → p-516f9b83.entry.js} +1 -1
  379. package/dist/twilight/{p-d1204965.entry.js → p-56aebb36.entry.js} +1 -1
  380. package/dist/twilight/{p-6b5de500.entry.js → p-56fbe5ff.entry.js} +1 -1
  381. package/dist/twilight/{p-66ad7a30.entry.js → p-58af47e4.entry.js} +1 -1
  382. package/dist/twilight/{p-3f842f32.entry.js → p-616e6781.entry.js} +1 -1
  383. package/dist/twilight/{p-254cff9a.entry.js → p-62077080.entry.js} +1 -1
  384. package/dist/twilight/p-6427664a.entry.js +4 -0
  385. package/dist/twilight/{p-bb8b2c85.entry.js → p-65253725.entry.js} +1 -1
  386. package/dist/twilight/{p-fcb1009f.entry.js → p-6a05f69c.entry.js} +1 -1
  387. package/dist/twilight/{p-ac736b30.entry.js → p-6afa5aa8.entry.js} +1 -1
  388. package/dist/twilight/{p-f7a58656.entry.js → p-6ff116eb.entry.js} +1 -1
  389. package/dist/twilight/{p-f9587127.entry.js → p-710b19d2.entry.js} +1 -1
  390. package/dist/twilight/{p-84b0e7a9.entry.js → p-71297800.entry.js} +1 -1
  391. package/dist/twilight/{p-53735934.entry.js → p-7234a066.entry.js} +1 -1
  392. package/dist/twilight/{p-b1f808f5.entry.js → p-73af6a02.entry.js} +1 -1
  393. package/dist/twilight/{p-4ab5ee99.entry.js → p-7428deca.entry.js} +1 -1
  394. package/dist/twilight/{p-b5a45f87.entry.js → p-75b509cd.entry.js} +1 -1
  395. package/dist/twilight/{p-071aa0e7.entry.js → p-79e446b2.entry.js} +1 -1
  396. package/dist/twilight/{p-eaf0c514.entry.js → p-7a8c9411.entry.js} +1 -1
  397. package/dist/twilight/{p-5f6fee0e.entry.js → p-86533832.entry.js} +1 -1
  398. package/dist/twilight/p-8a4af12c.entry.js +4 -0
  399. package/dist/twilight/{p-9cf1cfd4.entry.js → p-8ddf6933.entry.js} +1 -1
  400. package/dist/twilight/{p-7b5f97e7.entry.js → p-93fe31b9.entry.js} +1 -1
  401. package/dist/twilight/{p-4891c565.entry.js → p-9c96a9e7.entry.js} +1 -1
  402. package/dist/twilight/{p-CBLWEyM9.js → p-BNr49RmW.js} +1 -1
  403. package/dist/twilight/{p-DMvhNbgN.js → p-BUzdlb7Q.js} +1 -1
  404. package/dist/twilight/p-BVaKfTMx.js +4 -0
  405. package/dist/twilight/{p-BK9YeXWp.js → p-BYWjrTuB.js} +1 -1
  406. package/dist/twilight/{p-CCwsxMbZ.js → p-Bo_J3Do4.js} +1 -1
  407. package/dist/twilight/{p-CgNJWeaK.js → p-ChxhrML8.js} +1 -1
  408. package/dist/twilight/p-CrXKQnBu.js +5 -0
  409. package/dist/twilight/{p-Y2ZIN9Ok.js → p-D1oKTNWQ.js} +1 -1
  410. package/dist/twilight/{p-De1tLqQF.js → p-DUNRPrqt.js} +1 -1
  411. package/dist/twilight/{p-BxQMWsr9.js → p-DUuRpwsl.js} +1 -1
  412. package/dist/twilight/{p-NqQdbGu6.js → p-DZR3BP63.js} +1 -1
  413. package/dist/twilight/{p-12a25415.entry.js → p-a52a3664.entry.js} +1 -1
  414. package/dist/twilight/{p-d346dabd.entry.js → p-a7114995.entry.js} +1 -1
  415. package/dist/twilight/{p-8c40278d.entry.js → p-aa7494cd.entry.js} +1 -1
  416. package/dist/twilight/{p-34148827.entry.js → p-ae5d26da.entry.js} +1 -1
  417. package/dist/twilight/{p-d1121b3f.entry.js → p-b5434bcc.entry.js} +1 -1
  418. package/dist/twilight/p-b9fabd92.entry.js +4 -0
  419. package/dist/twilight/{p-bed54154.entry.js → p-bac38ed2.entry.js} +1 -1
  420. package/dist/twilight/{p-cdeb9bcc.entry.js → p-bbcfcdb0.entry.js} +1 -1
  421. package/dist/twilight/{p-f7ab5825.entry.js → p-c097cfa1.entry.js} +1 -1
  422. package/dist/twilight/p-c13e7efb.entry.js +4 -0
  423. package/dist/twilight/{p-bfd5e263.entry.js → p-d0ea4c3a.entry.js} +1 -1
  424. package/dist/twilight/{p-a44670a9.entry.js → p-d0ec7ca7.entry.js} +1 -1
  425. package/dist/twilight/{p-fddf1997.entry.js → p-d31fbdea.entry.js} +1 -1
  426. package/dist/twilight/{p-37192614.entry.js → p-d482d43e.entry.js} +1 -1
  427. package/dist/twilight/{p-b3ada3d0.entry.js → p-d5368882.entry.js} +1 -1
  428. package/dist/twilight/{p-4a3fa153.entry.js → p-d5a2a231.entry.js} +1 -1
  429. package/dist/twilight/{p-e457e68f.entry.js → p-d6705759.entry.js} +1 -1
  430. package/dist/twilight/p-d7f2a028.entry.js +4 -0
  431. package/dist/twilight/{p-0418c2df.entry.js → p-d84dedaf.entry.js} +1 -1
  432. package/dist/twilight/{p-419d6d71.entry.js → p-d8d9ff09.entry.js} +1 -1
  433. package/dist/twilight/{p-361f6033.entry.js → p-d902ad13.entry.js} +1 -1
  434. package/dist/twilight/{p-481f52b1.entry.js → p-d941dc58.entry.js} +1 -1
  435. package/dist/twilight/{p-8766e236.entry.js → p-dd046bbd.entry.js} +1 -1
  436. package/dist/twilight/{p-23772523.entry.js → p-dd21db09.entry.js} +1 -1
  437. package/dist/twilight/{p-3a632c69.entry.js → p-dd83b424.entry.js} +1 -1
  438. package/dist/twilight/{p-aa35cf98.entry.js → p-e04fb844.entry.js} +1 -1
  439. package/dist/twilight/{p-6c3084c9.entry.js → p-e60d784c.entry.js} +1 -1
  440. package/dist/twilight/{p-d8955835.entry.js → p-e6cc7742.entry.js} +1 -1
  441. package/dist/twilight/{p-5e8d019e.entry.js → p-e853ac07.entry.js} +1 -1
  442. package/dist/twilight/{p-0f25fedd.entry.js → p-e9ecae21.entry.js} +1 -1
  443. package/dist/twilight/{p-6ba3808a.entry.js → p-ebe3d316.entry.js} +1 -1
  444. package/dist/twilight/{p-5bbf17dd.entry.js → p-ec2a45fb.entry.js} +1 -1
  445. package/dist/twilight/{p-a5b732b3.entry.js → p-ef216c0a.entry.js} +1 -1
  446. package/dist/twilight/{p-78a56dc6.entry.js → p-f3306980.entry.js} +1 -1
  447. package/dist/twilight/{p-d9a1bf08.entry.js → p-f65205d5.entry.js} +1 -1
  448. package/dist/twilight/{p-e9b03e9c.entry.js → p-f6e5cd28.entry.js} +1 -1
  449. package/dist/twilight/{p-af49191f.entry.js → p-f8cfc9f7.entry.js} +1 -1
  450. package/dist/twilight/{p-9e65451e.entry.js → p-faa0b9aa.entry.js} +1 -1
  451. package/dist/twilight/{p-9e042cce.entry.js → p-fb10df18.entry.js} +1 -1
  452. package/dist/twilight/{p-e38a6793.entry.js → p-fcb1cff7.entry.js} +1 -1
  453. package/dist/twilight/{p-487b4411.entry.js → p-ff3cb99b.entry.js} +1 -1
  454. package/dist/twilight/{p-ee65c489.entry.js → p-ff4680ea.entry.js} +1 -1
  455. package/dist/twilight/p-oL7bxwey.js +9 -0
  456. package/dist/twilight/p-q5NJ0uS-.js +4 -0
  457. package/dist/twilight/twilight.esm.js +1 -1
  458. package/dist/types/components/salla-bullet-delivery/api-service.d.ts +23 -7
  459. package/dist/types/components/salla-bullet-delivery/helpers.d.ts +68 -6
  460. package/dist/types/components/salla-bullet-delivery/icons.d.ts +14 -0
  461. package/dist/types/components/salla-bullet-delivery/interfaces.d.ts +40 -1
  462. package/dist/types/components/salla-bullet-delivery/salla-bullet-delivery.d.ts +73 -4
  463. package/dist/types/components/salla-mobile-update-modal/salla-mobile-update-modal.d.ts +44 -0
  464. package/dist/types/components/salla-quick-buy/salla-quick-buy.d.ts +18 -0
  465. package/dist/types/components/salla-rating-modal/salla-rating-modal-v2.d.ts +4 -0
  466. package/dist/types/components/salla-verify/salla-verify.d.ts +8 -0
  467. package/dist/types/components.d.ts +50 -0
  468. package/package.json +5 -5
  469. package/dist/cjs/helpers-8bMfm_mm.js +0 -329
  470. package/dist/esm/helpers-DqzaeXrL.js +0 -309
  471. package/dist/twilight/p-76584a5b.entry.js +0 -4
  472. package/dist/twilight/p-79822d99.entry.js +0 -4
  473. package/dist/twilight/p-Ca_SZn0u.js +0 -9
  474. package/dist/twilight/p-DgUQRYr2.js +0 -5
  475. package/dist/twilight/p-DqzaeXrL.js +0 -4
  476. package/dist/twilight/p-b9d67694.entry.js +0 -4
  477. package/dist/twilight/p-ba6dd59c.entry.js +0 -4
  478. package/dist/twilight/p-bac25e34.entry.js +0 -4
  479. package/dist/twilight/p-d1093a59.entry.js +0 -4
  480. package/dist/twilight/p-e24fbbb4.entry.js +0 -4
  481. package/dist/twilight/p-eefced26.entry.js +0 -4
@@ -1,8 +1,8 @@
1
1
  /*!
2
2
  * Crafted with ❤ by Salla
3
3
  */
4
- import { h, r as registerInstance, c as createEvent, H as Host, a as getElement } from './index-DgUQRYr2.js';
5
- import { a as isSaudiArabia, b as bulletDeliveryAPI, r as requireRegionAndDistrictForSA, g as getIntentLatitude, c as getIntentLongitude, h as hasSessionAddressIntent, d as getIntentCityId, e as getIntentCountryId, f as getIntentRegionId, j as getIntentDistrictId, k as isBranchSelectable, l as filterBranches, m as getIntentBranchId, n as findNearestBranch, o as getGeolocationErrorMessage, p as clearApiCache, q as getIntentSubtitle, i as isMapOriginIntent, s as getIntentCountryCode } from './helpers-DqzaeXrL.js';
4
+ import { h, r as registerInstance, c as createEvent, H as Host, a as getElement } from './index-CrXKQnBu.js';
5
+ import { a as isSaudiArabia, b as bulletDeliveryAPI, r as requireRegionAndDistrictForSA, c as clearBranchCache, h as hasSessionAddressIntent, g as getIntentCityId, d as getIntentCountryId, e as getIntentRegionId, f as getIntentDistrictId, j as getBranchCities, C as CACHE_TTL, k as isBranchSelectable, l as getBranchDiscountRange, m as filterBranches, n as getIntentBranchId, o as findNearestBranch, t as toCoordinate, p as clearApiCache, q as getIntentSubtitle, i as isMapOriginIntent, s as isBranchVisible, u as getBranchReadinessLabel, v as groupBranchSchedule, w as getBranchWeekSchedule, x as getBranchPhoneHref, y as getBranchWhatsappHref, z as getBranchDiscount, A as formatBranchDistance, B as getBranchDirectionsHref, D as isBranchAlwaysOpen, E as formatBranchClockTime, F as getBranchReadyTodayTime, G as isBranchBusy, H as getIntentCountryCode } from './helpers-BVaKfTMx.js';
6
6
  import { L as Location } from './location-BO5AoBAP.js';
7
7
  import { S as Search } from './search-BscTeWDc.js';
8
8
 
@@ -274,24 +274,6 @@ var GetDirections = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none"
274
274
  </svg>
275
275
  `;
276
276
 
277
- var GPS = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
278
- <path
279
- d="M13.3258 7.65006C13.3258 10.7797 10.7888 13.3167 7.65916 13.3167C4.52955 13.3167 1.99249 10.7797 1.99249 7.65006C1.99249 4.52045 4.52955 1.9834 7.65916 1.9834C10.7888 1.9834 13.3258 4.52045 13.3258 7.65006Z"
280
- stroke="#555555" stroke-width="1.3" />
281
- <path d="M14.65 7.65039H13.3167" stroke="#555555" stroke-width="1.3" stroke-linecap="round"
282
- stroke-linejoin="round" />
283
- <path d="M1.98336 7.65039L0.650024 7.65039" stroke="#555555" stroke-width="1.3"
284
- stroke-linecap="round" stroke-linejoin="round" />
285
- <path d="M7.65002 0.650065L7.65002 1.9834" stroke="#555555" stroke-width="1.3"
286
- stroke-linecap="round" stroke-linejoin="round" />
287
- <path d="M7.65002 13.3171L7.65002 14.6504" stroke="#555555" stroke-width="1.3"
288
- stroke-linecap="round" stroke-linejoin="round" />
289
- <path
290
- d="M9.64999 7.65039C9.64999 8.75496 8.75456 9.65039 7.64999 9.65039C6.54542 9.65039 5.64999 8.75496 5.64999 7.65039C5.64999 6.54582 6.54542 5.65039 7.64999 5.65039C8.75456 5.65039 9.64999 6.54582 9.64999 7.65039Z"
291
- stroke="#555555" stroke-width="1.3" />
292
- </svg>
293
- `;
294
-
295
277
  var MiniMap = `<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns="http://www.w3.org/2000/svg">
296
278
  <rect x="1.90958" y="0.576577" width="30.8468" height="30.8468" rx="9.22523" style="fill:#E8E8E8" stroke="white" stroke-width="1.15315"/>
297
279
  <path d="M17.9096 6.77445L28.7204 5.33301H32.4681L32.7564 11.8195V23.6393L10.4141 23.9276V10.8105L17.9096 6.77445Z" style="fill:#97E7C8"/>
@@ -301,23 +283,36 @@ var MiniMap = `<svg width="35" height="35" viewBox="0 0 35 35" fill="none" xmlns
301
283
  </svg>
302
284
  `;
303
285
 
304
- var Store = `<svg width="15" height="14" viewBox="0 0 15 14" fill="none" xmlns="http://www.w3.org/2000/svg">
305
- <path
306
- d="M1.14453 5.83032L1.14453 9.16486C1.14453 11.0511 1.14453 11.9943 1.73032 12.5803C2.3161 13.1663 3.25891 13.1663 5.14453 13.1663L9.14453 13.1663C11.0301 13.1663 11.9729 13.1663 12.5587 12.5803C13.1445 11.9943 13.1445 11.0511 13.1445 9.16486V5.83032"
307
- stroke="currentcolor" stroke-linecap="round" />
308
- <path
309
- d="M9.14453 10.1619C8.68846 10.5667 7.9624 10.8285 7.14453 10.8285C6.32666 10.8285 5.60059 10.5667 5.14453 10.1619"
310
- stroke="currentcolor" stroke-linecap="round" />
311
- <path
312
- d="M5.90256 4.44533C5.71455 5.12426 5.03086 6.29542 3.73185 6.46516C2.58488 6.61502 1.71497 6.11437 1.49277 5.90504C1.24779 5.7353 0.689441 5.19216 0.552703 4.85269C0.415966 4.51322 0.575492 3.77771 0.689441 3.47785L1.14495 2.15892C1.25615 1.82765 1.51646 1.04411 1.78334 0.779094C2.05022 0.514073 2.59054 0.502543 2.81294 0.502543L7.48329 0.502543C8.68543 0.519525 11.3139 0.491824 11.8335 0.502545C12.3532 0.513266 12.6654 0.948828 12.7565 1.13553C13.5318 3.01341 13.8333 4.08889 13.8333 4.54717C13.7321 5.03605 13.3133 5.95787 11.8335 6.36332C10.2956 6.7847 9.42363 5.96509 9.15007 5.65043M5.27015 5.65044C5.48665 5.91635 6.16578 6.45158 7.15029 6.46516C8.1348 6.47873 8.98485 5.79188 9.28681 5.44676C9.37227 5.34492 9.55687 5.04279 9.7483 4.44533"
313
- stroke="currentcolor" stroke-linecap="round" stroke-linejoin="round" />
314
- </svg>
315
- `;
286
+ /**
287
+ * Inline icons shared with the checkout pickup picker (Checkout-Module INV-1414), kept byte-identical
288
+ * so both surfaces render the same glyphs.
289
+ */
290
+ /** Checkout `LightningIcon.vue` — the "save delivery fees" pickup-tab badge. */
291
+ const LightningIcon = `<svg width="7" height="10" viewBox="0 0 7 10" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5.41015 0.036C5.73815 0.084 5.96415 0.222 6.08815 0.45C6.21215 0.678 6.21415 0.952 6.09415 1.272C6.03815 1.432 5.89415 1.72 5.66215 2.136L5.13415 3.108C5.03015 3.308 4.96215 3.44 4.93015 3.504C4.91415 3.544 4.90215 3.576 4.89415 3.6C4.89415 3.656 4.91815 3.7 4.96615 3.732C4.99015 3.74 5.02615 3.748 5.07415 3.756H5.51815C5.79815 3.756 5.99015 3.76 6.09415 3.768C6.30215 3.784 6.45815 3.832 6.56215 3.912C6.70615 4.008 6.81215 4.138 6.88015 4.302C6.94815 4.466 6.97015 4.636 6.94615 4.812C6.93015 4.948 6.85815 5.1 6.73015 5.268C6.66615 5.356 6.53815 5.508 6.34615 5.724L3.65815 8.82C3.35415 9.172 3.14815 9.398 3.04015 9.498C2.93215 9.598 2.83415 9.664 2.74615 9.696C2.58615 9.768 2.43415 9.766 2.29015 9.69C2.14615 9.614 2.05415 9.488 2.01415 9.312C1.99815 9.208 1.99615 9.08 2.00815 8.928C2.02015 8.776 2.07415 8.472 2.17015 8.016L2.50615 6.432C2.57815 6.104 2.61815 5.888 2.62615 5.784C2.63415 5.728 2.62215 5.686 2.59015 5.658C2.55815 5.63 2.52615 5.612 2.49415 5.604C2.39815 5.588 2.18615 5.58 1.85815 5.58H1.60615C1.19815 5.58 0.918154 5.568 0.766154 5.544C0.462154 5.504 0.246154 5.38 0.118154 5.172C-0.00984615 4.964 -0.0338462 4.704 0.0461538 4.392C0.0861538 4.24 0.190154 3.968 0.358154 3.576L1.25815 1.464C1.41015 1.112 1.51815 0.872 1.58215 0.744C1.71015 0.512 1.85815 0.34 2.02615 0.228C2.19415 0.116 2.40215 0.048 2.65015 0.024C2.79415 0.008 3.05415 0 3.43015 0H4.47415C4.93815 0 5.25015 0.012 5.41015 0.036Z" fill="white"/></svg>`;
292
+ /** Pickup-instructions line on the branch card (design-provided). */
293
+ const NotesIcon = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.58709 4.67775L11.769 5.52554M7.90501 7.20895L9.49598 7.63284M7.98415 11.9777L8.62054 12.1472C10.4205 12.6268 11.3205 12.8666 12.0295 12.4595C12.7385 12.0525 12.9797 11.1576 13.462 9.36777L14.1441 6.83657C14.6264 5.04674 14.8675 4.15183 14.4582 3.44681C14.0488 2.7418 13.1488 2.50201 11.3489 2.02242L10.7125 1.85287C8.91249 1.37328 8.0125 1.13349 7.30349 1.54053C6.59447 1.94757 6.35332 2.84249 5.87102 4.63231L5.18894 7.16351C4.70664 8.95334 4.46549 9.84825 4.87484 10.5533C5.28419 11.2583 6.18418 11.4981 7.98415 11.9777Z" stroke="#555555" stroke-width="1.125" stroke-linecap="round"/><path d="M8.00016 13.964L7.36527 14.1369C5.56952 14.6259 4.67164 14.8704 3.96429 14.4554C3.25694 14.0404 3.01636 13.1279 2.53519 11.303L1.85471 8.72211C1.37354 6.89717 1.13295 5.98471 1.54134 5.26586C1.89461 4.64404 2.66683 4.66668 3.66683 4.66661" stroke="#555555" stroke-width="1.125" stroke-linecap="round"/></svg>`;
294
+ /** Pickup-availability (preparation time) line on the branch card (design-provided). */
295
+ const PickupAvailabilityIcon = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="8.00016" cy="8.00004" r="6.66667" stroke="#555555" stroke-width="1.125"/><path d="M8 5.33337V8.00004L9.33333 9.33337" stroke="#555555" stroke-width="1.125" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
296
+ /** Working-hours (open/closed status) line on the branch card (design-provided). */
297
+ const WorkingHoursIcon = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M8.00014 14.6667C4.31824 14.6667 1.3335 11.6819 1.3335 8.00004C1.3335 4.31814 4.31826 1.33337 8.00016 1.33337C10.9853 1.33337 13.484 3.2953 14.3335 6.00004H12.6668" stroke="#666666" stroke-width="1.125" stroke-linecap="round" stroke-linejoin="round"/><path d="M8 5.33337V8.00004L9.33333 9.33337" stroke="#666666" stroke-width="1.125" stroke-linecap="round" stroke-linejoin="round"/><path d="M14.6367 8.66667C14.6565 8.44724 14.6667 8.22486 14.6667 8M10 14.6667C10.2277 14.5917 10.4502 14.5043 10.6667 14.4052M13.8604 11.3333C13.989 11.0856 14.1036 10.8288 14.2034 10.5641M12.1283 13.4862C12.358 13.2961 12.5754 13.0905 12.7792 12.871" stroke="#666666" stroke-width="1.125" stroke-linecap="round" stroke-linejoin="round"/></svg>`;
298
+ /** Location (country, city, district) line on the branch card (design-provided). */
299
+ const BranchLocationIcon = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><circle cx="8.00016" cy="4.66667" r="2.66667" stroke="#555555" stroke-width="1.125"/><path d="M8 7.33337L8 12" stroke="#555555" stroke-width="1.125" stroke-linecap="round"/><path d="M11.3332 12.6666C11.3332 13.403 9.84079 14 7.99984 14C6.15889 14 4.6665 13.403 4.6665 12.6666" stroke="#555555" stroke-width="1.125" stroke-linecap="round"/></svg>`;
316
300
 
317
- const sallaBulletDeliveryCss = "/*!twlt*/@charset \"UTF-8\";@supports (interpolate-size: allow-keywords) and (block-size: calc-size(auto, size)){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body,.s-bullet-delivery-inner{interpolate-size:allow-keywords}.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body{overflow:clip;transition:block-size 500ms ease}.s-bullet-delivery-inner{overflow:clip;transition:block-size 500ms ease;block-size:calc-size(auto, size)}}@media screen and (min-width: 640px){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open){overflow:visible !important}}.s-bullet-delivery-form-actions.s-bullet-delivery-form-actions--single{padding-bottom:0;flex-direction:column;gap:0}.s-bullet-delivery-addresses-list.s-scrollbar::-webkit-scrollbar-track,.s-bullet-delivery-branches-list.s-scrollbar::-webkit-scrollbar-track{background-color:transparent}.s-bullet-delivery-back-to-list-link{display:inline-flex;align-items:center;justify-content:center;gap:2px;width:100%;margin-top:12px;background:none;border:none;color:var(--color-primary, #004956);font-size:14px;font-weight:500;cursor:pointer;padding:0}.s-bullet-delivery-back-to-list-link i{font-size:12px}.first-letter-cap::first-letter{text-transform:uppercase}.s-bullet-delivery-location-permission-btn{display:flex;align-items:center;gap:10px;width:100%;padding:12px;border:none;border-radius:8px;background:#fdf2f2;cursor:pointer;text-align:start}.s-bullet-delivery-location-permission-icon{display:inline-flex;flex-shrink:0;width:34px;height:34px}.s-bullet-delivery-location-permission-icon svg{width:100%;height:100%}.s-bullet-delivery-location-permission-text{flex:1;min-width:0;font-size:12px;line-height:18px;color:#444}.s-bullet-delivery-location-permission-arrow{flex-shrink:0;font-size:16px;color:#666}.s-bullet-delivery-location-distance-warning{display:flex;align-items:center;gap:10px;width:100%;padding:12px;border-radius:8px;background:#fff8e1;animation:s-bullet-delivery-fade-in 200ms ease}.s-bullet-delivery-location-distance-warning-icon{display:inline-flex;flex-shrink:0;width:34px;height:34px}.s-bullet-delivery-location-distance-warning-icon svg{width:100%;height:100%}.s-bullet-delivery-location-distance-warning-text{flex:1;min-width:0;font-size:12px;line-height:18px;color:#444}.s-bullet-delivery-map-container{width:100%;height:320px;border-radius:8px;overflow:hidden;margin-bottom:12px}.s-bullet-delivery-map-container gmap-map{display:block;width:100%;height:100%}.s-bullet-delivery-address-confirm{display:flex;flex-direction:column;gap:20px;animation:s-bullet-delivery-fade-in 200ms ease}.s-bullet-delivery-address-confirm-card{display:flex;align-items:center;gap:12px;border:1px solid #eee;border-radius:6px;padding:12px}.s-bullet-delivery-address-map-icon{overflow:hidden;border-radius:9px}.s-bullet-delivery-address-confirm-details{display:flex;flex-direction:column;align-items:flex-start;flex:1;min-width:0}.s-bullet-delivery-address-confirm-label{font-size:12px;line-height:16px;color:#666}.s-bullet-delivery-address-confirm-text{font-size:14px;font-weight:700;color:#333;margin:0;word-break:break-word}.s-bullet-delivery-address-confirm-description{display:flex;flex-direction:column;gap:8px}.s-bullet-delivery-address-confirm-description-label{font-size:14px;font-weight:500;color:#444}.s-bullet-delivery-address-confirm-description-optional{font-weight:400;color:#999;margin-inline-start:4px}.s-bullet-delivery-address-confirm-description-input{width:100%;border:1px solid #eee;border-radius:8px;padding:10px 12px;font-size:14px;margin-bottom:16px}.s-bullet-delivery-login-prompt{display:block;width:100%;text-align:center;background:none;border:none;color:var(--color-primary, #004956);font-size:14px;font-weight:500;cursor:pointer;padding:12px 0}@keyframes s-bullet-delivery-fade-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.branch-status-badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 6px;max-height:20px;border-radius:20px;font-size:9px;font-weight:500;border:1px solid transparent;white-space:nowrap}.branch-status-badge.green{color:#43a047;background:#e8f5e9;border-color:#43a047}.branch-status-badge.blue{color:#1e88e5;background:#e3f2fd;border-color:#1e88e5}.branch-status-badge.red{color:#e53935;background:#fdf2f2;border-color:#e53935}.branch-status-badge.yellow{color:#f9a825;background:#fff8e1;border-color:#f9a825}.branch-status-badge.gray{color:#757575;background:#f5f5f5;border-color:#757575}.branch-status-badge.brown{color:#6d4c41;background:#efebe9;border-color:#6d4c41}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.visible{visibility:visible}.static{position:static}.mb-1{margin-bottom:0.25rem}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.resize{resize:both}.flex-col{flex-direction:column}.items-center{align-items:center}.gap-1{gap:0.25rem}.text-start{text-align:start}.\\!text-blue-600{--tw-text-opacity:1 !important;color:rgb(37 99 235 / var(--tw-text-opacity, 1)) !important}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-hidden{display:none}.form-input{height:2.5rem;width:100%;border-radius:0.375rem;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.form-input:focus{border-color:var(--color-primary);--tw-ring-color:transparent}.form-input:is(.dark *){--tw-border-opacity:1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.form-input:focus:is(.dark *){border-color:var(--color-primary)}@media (min-width: 640px){.form-input{font-size:0.875rem;line-height:1.25rem}}.\\!btn{display:inline-flex;flex:1 1 0%;align-items:center;justify-content:center;white-space:nowrap;border-radius:0.375rem;padding-left:1.5rem;padding-right:1.5rem;padding-bottom:0.625rem;padding-top:0.5rem;font-size:0.875rem;line-height:1.25rem;font-weight:700;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.\\!btn:hover{opacity:0.8}.btn{display:inline-flex;flex:1 1 0%;align-items:center;justify-content:center;white-space:nowrap;border-radius:0.375rem;padding-left:1.5rem;padding-right:1.5rem;padding-bottom:0.625rem;padding-top:0.5rem;font-size:0.875rem;line-height:1.25rem;font-weight:700;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.btn:hover{opacity:0.8}.spinner-loader.reverse{border-right-color:#9f7171 !important;background-color:#f98181}.s-hidden{display:none}.s-scrollbar::-webkit-scrollbar{width:5px}.s-scrollbar::-webkit-scrollbar-track{background-color:#eee}.s-scrollbar::-webkit-scrollbar-thumb{background-color:var(--color-primary);border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px}.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body{padding:0px}@media (min-width: 768px){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body{max-height:70dvh;overflow-y:auto}}@media (min-width: 640px){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open){overflow:visible !important}}.s-bullet-delivery-inner{min-block-size:0}.s-bullet-delivery-header{margin-bottom:1.5rem;text-align:start}.s-bullet-delivery-title{display:block;font-size:1.25rem;line-height:1.75rem;font-weight:700;color:var(--color-primary-dark)}.s-bullet-delivery-subtitle{margin-top:0.25rem;display:block;font-size:0.875rem;line-height:1.25rem;color:var(--color-primary-dark)}.s-bullet-delivery-tabs{margin-bottom:1.5rem;display:flex;gap:0.5rem}.s-bullet-delivery-tab{display:flex;flex:1 1 0%;cursor:pointer;align-items:center;gap:1rem;border-radius:0.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-top:0.5rem;padding-bottom:0.5rem;padding-left:0.75rem;padding-right:0.75rem;font-size:0.875rem;line-height:1.25rem;font-weight:500;color:var(--color-primary-dark);transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:200ms}.s-bullet-delivery-tab:hover{background-color:color-mix(in srgb,var(--color-primary) 5%,transparent)}.s-bullet-delivery-tab--active{border-color:var(--color-primary-dark)}.s-bullet-delivery-tab svg{height:0.875rem;width:0.875rem;color:var(--color-primary-dark)}.s-bullet-delivery-tab-icon{display:flex;height:2rem;width:2rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:0.75rem;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-allocation-out-of-coverage{margin-bottom:1rem;display:flex;width:100%;align-items:center;gap:0.5rem;--tw-bg-opacity:1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1));padding-top:0.75rem;padding-bottom:0.75rem;padding-left:1rem;padding-right:1rem;text-align:end;--tw-text-opacity:1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.s-bullet-delivery-allocation-out-of-coverage:where([dir=\"ltr\"],[dir=\"ltr\"] *){border-left-width:4px;border-left-color:rgb(239 68 68 / 0.5)}.s-bullet-delivery-allocation-out-of-coverage:where([dir=\"rtl\"],[dir=\"rtl\"] *){border-right-width:4px;border-right-color:rgb(239 68 68 / 0.5)}.s-bullet-delivery-allocation-out-of-coverage-text{font-size:0.875rem;line-height:1.25rem;line-height:1.4}.s-bullet-delivery-allocation-out-of-coverage-icon{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;--tw-text-opacity:1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.s-bullet-delivery-content{margin-bottom:1.5rem;display:grid;gap:1rem}.s-bullet-delivery-content--active{animation:s-bullet-delivery-fade-in 220ms ease-out}.s-bullet-delivery-label{margin-bottom:0.5rem;display:block;font-size:0.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.s-bullet-delivery-error{margin-top:0.25rem;display:block;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.s-bullet-delivery-footer{display:grid;gap:0.75rem;text-align:center}.s-bullet-delivery-placeholder{margin-top:1rem;margin-bottom:1rem}.s-bullet-delivery-placeholder.s-placeholder-wrapper{margin-top:1rem !important;margin-bottom:1rem !important}.s-bullet-delivery-label-content{display:inline-flex;align-items:center;gap:0.5rem}.s-bullet-delivery-select-loader{display:inline-flex;align-items:center;--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.s-bullet-delivery-search-row{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:0.5rem;padding-left:1px;padding-right:1px}.s-bullet-delivery-search-row .s-bullet-delivery-search{min-width:0px;flex:1 1 0%}.s-bullet-delivery-search-row .s-bullet-delivery-location-btn{width:auto;flex-shrink:0}.s-bullet-delivery-field-row{margin-bottom:1rem;display:flex;gap:1rem}.s-bullet-delivery-field-row .s-bullet-delivery-field{margin-bottom:0px;flex:1 1 0%}.s-bullet-delivery-saved-addresses-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.s-bullet-delivery-saved-addresses-empty-icon{margin-bottom:0.75rem;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-bullet-delivery-saved-addresses-empty-icon svg{height:2rem;width:2rem}.s-bullet-delivery-saved-addresses-empty-title{margin-bottom:0.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.s-bullet-delivery-saved-addresses-empty-desc{margin-bottom:1.5rem;max-width:24rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-addresses-list{position:relative;display:flex;max-height:260px;flex-direction:column;overflow-y:auto;border-radius:0.75rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}@media (min-width: 768px){.s-bullet-delivery-addresses-list{max-height:220px}}.s-bullet-delivery-address-item{display:flex;cursor:pointer;flex-direction:row;align-items:center;gap:0.75rem;border-bottom-width:1px;--tw-border-opacity:1;border-bottom-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.875rem;padding-bottom:0.875rem;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-address-item:not(.s-bullet-delivery-address-item--disabled):hover{background-color:rgb(249 250 251 / 0.5)}.s-bullet-delivery-address-item--selected{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-address-item--disabled{cursor:not-allowed;opacity:0.6}.s-bullet-delivery-address-item--skeleton{display:flex;cursor:default;align-items:center;gap:0.75rem;border-radius:0.75rem;border-width:1px;border-bottom-width:0px;--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:1rem;padding-bottom:1rem}.s-bullet-delivery-address-item--skeleton .s-bullet-delivery-address-lines{gap:0.5rem}.s-bullet-delivery-address-content{display:flex;min-width:0px;flex:1 1 0%;flex-direction:column;justify-content:center;text-align:start}.s-bullet-delivery-address-lines{display:flex;flex-direction:column;gap:0.125rem}.s-bullet-delivery-address-line1{display:block;font-size:1rem;line-height:1.5rem;font-weight:400;line-height:1.375;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-bullet-delivery-address-line2{display:block;font-size:0.875rem;line-height:1.25rem;line-height:1.375;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-bullet-delivery-address-map-icon{display:grid;height:2.5rem;width:2.5rem;place-content:center}.s-bullet-delivery-address-map-icon svg{height:100%;width:100%}.s-bullet-delivery-skel-radio{flex-shrink:0;border-radius:9999px}.s-bullet-delivery-skel-map{flex-shrink:0;border-radius:0.75rem}.s-bullet-delivery-search{position:relative;flex:1 1 0%}.s-bullet-delivery-search-icon{pointer-events:none;position:absolute;top:0px;bottom:0px;left:0px;display:flex;align-items:center;padding-left:0.75rem}.s-bullet-delivery-search-icon:where([dir=\"rtl\"],[dir=\"rtl\"] *){left:auto;right:0px;padding-left:0px;padding-right:0.75rem}.s-bullet-delivery-search-icon svg{height:0.875rem;width:0.875rem;stroke:var(--color-primary)}.s-bullet-delivery-branch-search-wrap{display:flex;min-height:40px;min-width:0px;flex:1 1 0%;flex-direction:row;align-items:stretch;overflow:hidden;border-radius:0.375rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.s-bullet-delivery-branch-search-wrap:focus-within{border-color:var(--color-primary-dark);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);--tw-ring-color:var(--color-primary-dark)}.s-bullet-delivery-branch-search-icon{pointer-events:none;position:static;display:flex;flex-shrink:0;align-items:center;justify-content:center;padding-inline-start:0.5rem;--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-search-icon svg{height:1.25rem;width:1.25rem}.s-bullet-delivery-branch-search-input{min-height:40px;min-width:0px;flex:1 1 0%;border-radius:0px;border-style:none;background-color:transparent;padding-top:0.5rem;padding-bottom:0.5rem;padding-inline-end:0.75rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1));--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.s-bullet-delivery-branch-search-input::placeholder{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-search-input:focus{outline:2px solid transparent;outline-offset:2px;border:none;box-shadow:none;--tw-ring-shadow:none}.s-bullet-delivery-location-btn{display:flex;flex-shrink:0;cursor:pointer;align-items:center;justify-content:center;gap:0.5rem;border-radius:0.5rem;border-width:1px;padding-left:1rem;padding-right:1rem;padding-top:0.5rem;padding-bottom:0.5rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-location-btn:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-location-btn:disabled{cursor:not-allowed;opacity:0.5}.s-bullet-delivery-location-btn--full{min-height:40px}.s-bullet-delivery-location-btn--loading{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-location-icon{height:0.875rem;width:0.875rem;flex-shrink:0}.s-bullet-delivery-location-icon svg{height:100%;width:100%}.s-bullet-delivery-branches-wrap{overflow:hidden}.s-bullet-delivery-branches-list{position:relative;max-height:min(260px, 32svh);overflow-y:auto;border-radius:0.5rem;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}@media (min-width: 768px){.s-bullet-delivery-branches-list{max-height:220px}}.s-bullet-delivery-branches-loading{overflow:hidden;border-radius:0.5rem;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-branch-info{display:flex;max-width:6.25rem;flex-direction:column;gap:0.125rem}.s-bullet-delivery-branch-name{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:break-word;font-size:0.875rem;line-height:1.25rem;font-weight:500;line-height:1.375;--tw-text-opacity:1;color:rgb(24 24 27 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-prep{text-align:start;font-size:0.875rem;line-height:1.25rem;font-weight:400;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-time{font-size:0.875rem;line-height:1.25rem;font-weight:400;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-time:where([dir=\"ltr\"],[dir=\"ltr\"] *){text-align:end}.s-bullet-delivery-branch-time:where([dir=\"rtl\"],[dir=\"rtl\"] *){text-align:start}.s-bullet-delivery-branch-map-link{display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:0.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding:0.5rem;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1));text-decoration-line:none;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-branch-map-link:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-branch-item>.s-bullet-delivery-branch-map-link{position:relative;z-index:10;pointer-events:auto}.s-bullet-delivery-branch-map-link-icon{display:flex;height:0.875rem;width:0.875rem;align-items:center;justify-content:center}.s-bullet-delivery-branch-map-link-icon svg{height:100%;width:100%}.s-bullet-delivery-branch-skeleton-title{max-width:100%}.s-bullet-delivery-branch-skeleton-time{justify-self:end}.s-bullet-delivery-branch-item{display:grid;min-width:0px;cursor:pointer;align-items:center;gap:0.5rem;border-bottom-width:1px;--tw-border-opacity:1;border-bottom-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.75rem;padding-bottom:0.75rem;text-align:end;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;grid-template-columns:auto auto auto 1fr auto}.s-bullet-delivery-branch-item:last-child{border-bottom-width:0px}.s-bullet-delivery-branch-item:hover:not(.s-bullet-delivery-branch-item--disabled){--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-branch-item--selected{background-color:color-mix(in srgb,var(--color-primary) 5%,transparent)}.s-bullet-delivery-branch-item--disabled{cursor:not-allowed;opacity:0.5}.s-bullet-delivery-branch-icon{display:grid;place-content:center;border-radius:0.75rem;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1));stroke:var(--color-primary-dark);padding:0.625rem;color:var(--color-primary-dark)}.s-bullet-delivery-branch-icon span{display:block;height:0.875rem;width:0.875rem}.s-bullet-delivery-branch-icon span svg{height:100%;width:100%}.s-bullet-delivery-branch-skeleton{display:grid;min-width:0px;align-items:center;gap:0.5rem;border-bottom-width:1px;--tw-border-opacity:1;border-bottom-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.75rem;padding-bottom:0.75rem;grid-template-columns:auto auto auto 1fr auto}.s-bullet-delivery-branch-skeleton:last-child{border-bottom-width:0px}.s-bullet-delivery-branch-skeleton-radio{flex-shrink:0}.s-bullet-delivery-branch-skeleton-icon{flex-shrink:0;border-radius:0.75rem}.s-bullet-delivery-branch-skeleton-icon salla-skeleton{display:block}.s-bullet-delivery-branch-skeleton-map{flex-shrink:0;border-radius:0.75rem}.s-bullet-delivery-branch-skeleton-map salla-skeleton{display:block}.s-bullet-delivery-branch-skeleton-content{display:flex;min-width:0px;flex-direction:column;gap:0.5rem;overflow:hidden}.s-bullet-delivery-branch-skeleton-content salla-skeleton{min-width:0px;max-width:100%}.s-bullet-delivery-radio{margin-top:2px;height:1rem;width:1rem;flex-shrink:0;cursor:pointer;appearance:none;border-radius:9999px;border-width:2px;--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-radio:checked{border-color:var(--color-primary-dark);background:radial-gradient(circle,#fff 0,#fff 22%,var(--color-primary) 22%)}.s-bullet-delivery-radio:focus{outline:2px solid transparent;outline-offset:2px}.s-bullet-delivery-radio:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);--tw-ring-color:var(--color-primary-dark);--tw-ring-offset-width:2px}.s-bullet-delivery-skeleton{box-sizing:border-box;min-width:0px;max-width:100%;overflow:hidden;padding:1.25rem}.s-bullet-delivery-skeleton salla-skeleton{min-width:0px;max-width:100%}.s-bullet-delivery-skeleton-header{margin-bottom:1.5rem;display:flex;min-width:0px;max-width:100%;flex-direction:column;align-items:flex-start;gap:0.75rem}.s-bullet-delivery-skeleton-title{display:block;max-width:100%}.s-bullet-delivery-skeleton-subtitle{display:block;max-width:100%}.s-bullet-delivery-skeleton-tabs{margin-bottom:1.5rem;display:grid;min-width:0px;max-width:100%;grid-template-columns:repeat(2, minmax(0, 1fr));gap:0.5rem}.s-bullet-delivery-skeleton-tabs--single{grid-template-columns:repeat(1, minmax(0, 1fr))}.s-bullet-delivery-skeleton-tab{display:flex;align-items:center;gap:1rem;border-radius:0.75rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.75rem;padding-bottom:0.75rem;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.s-bullet-delivery-skeleton-tab-icon{display:block;max-width:100%}.s-bullet-delivery-skeleton-tab-label{display:block;max-width:100%}.s-bullet-delivery-skeleton-field-label{display:block;max-width:100%}.s-bullet-delivery-skeleton-field-control{display:block;max-width:100%}.s-bullet-delivery-skeleton-content{margin-bottom:1.5rem;display:grid;min-width:0px;max-width:100%;gap:1rem}.s-bullet-delivery-skeleton-field{display:flex;min-width:0px;max-width:100%;flex-direction:column;align-items:flex-start;gap:0.5rem}.s-bullet-delivery-skeleton-footer{min-width:0px;max-width:100%}.s-bullet-delivery-add-address-header{margin-bottom:1.5rem;display:flex;align-items:center;justify-content:space-between;gap:0.75rem}.s-bullet-delivery-add-address-title{display:flex;width:100%;flex:1 1 0%;cursor:pointer;align-items:center;border-style:none;background-color:transparent;padding:0px;text-align:start;font-size:1.125rem;line-height:1.75rem;font-weight:700;color:var(--color-primary)}.s-bullet-delivery-add-address svg{height:2.5rem;width:2.5rem;fill:currentColor}.s-bullet-delivery-allocation-out-of-coverage-icon svg{height:1.25rem;width:1.25rem}.s-bullet-delivery-add-address-form{display:grid;gap:1rem}.s-bullet-delivery-add-address-submit{width:100%}.s-bullet-delivery-form-actions{display:flex;gap:0.75rem;border-top-width:1px;--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1));padding-top:1rem}.s-bullet-delivery-form-actions salla-button{flex:1 1 0%}.s-bullet-delivery-form-actions--single{border-top-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-top:1.25rem}.s-bullet-delivery-form-actions--single salla-button{width:100%;flex:1 1 0%}.s-bullet-delivery-market-warning-overlay{position:fixed;inset:0px;z-index:60;display:flex;align-items:center;justify-content:center;background-color:rgb(0 0 0 / 0.5)}.s-bullet-delivery-market-warning{margin-left:1rem;margin-right:1rem;width:100%;max-width:24rem;border-radius:0.75rem;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1.5rem;--tw-shadow:0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.s-bullet-delivery-market-warning-title{margin-bottom:0.75rem;font-size:1.125rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-bullet-delivery-market-warning-message{margin-bottom:1.5rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-bullet-delivery-market-warning-actions{display:flex;gap:0.75rem}.s-bullet-delivery-market-warning-actions salla-button{flex:1 1 0%}.s-bullet-delivery-cart-view{margin-bottom:1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;border-radius:0.75rem;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1rem}.s-bullet-delivery-cart-view-info{display:flex;min-width:0px;flex:1 1 0%;align-items:center;gap:0.75rem}.s-bullet-delivery-cart-view-text{display:flex;flex-direction:column;text-align:start}.s-bullet-delivery-cart-view-title{font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-bullet-delivery-cart-view-subtitle{font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1));margin-block-start:0.125rem}.s-bullet-delivery-cart-view-icon{display:flex;height:3.5rem;width:3.5rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1));color:var(--color-primary-dark)}.s-bullet-delivery-cart-view-icon svg{height:1.25rem;width:1.25rem;stroke:currentColor}.s-bullet-delivery-cart-view-button{flex-shrink:0;align-self:center}.s-bullet-delivery-location-permission-btn{display:flex;width:100%;cursor:pointer;align-items:center;gap:0.625rem;border-radius:0.5rem;border-width:0px;padding:0.75rem;text-align:start;background:#fdf2f2}.s-bullet-delivery-location-permission-icon{display:inline-flex;height:34px;width:34px;flex-shrink:0}.s-bullet-delivery-location-permission-icon svg{height:100%;width:100%}.s-bullet-delivery-location-permission-text{min-width:0px;flex:1 1 0%;font-size:0.75rem;line-height:1rem;line-height:18px;--tw-text-opacity:1;color:rgb(68 68 68 / var(--tw-text-opacity, 1))}.s-bullet-delivery-location-permission-arrow{flex-shrink:0;font-size:1rem;line-height:1.5rem;--tw-text-opacity:1;color:rgb(102 102 102 / var(--tw-text-opacity, 1))}.s-bullet-delivery-location-distance-warning{display:flex;width:100%;animation:s-bullet-delivery-fade-in 200ms ease;align-items:center;gap:0.625rem;border-radius:0.5rem;padding:0.75rem;background:#fff8e1}.s-bullet-delivery-location-distance-warning-icon{display:inline-flex;height:34px;width:34px;flex-shrink:0}.s-bullet-delivery-location-distance-warning-icon svg{height:100%;width:100%}.s-bullet-delivery-location-distance-warning-text{min-width:0px;flex:1 1 0%;font-size:0.75rem;line-height:1rem;line-height:18px;--tw-text-opacity:1;color:rgb(68 68 68 / var(--tw-text-opacity, 1))}";
301
+ const sallaBulletDeliveryCss = "/*!twlt*/@charset \"UTF-8\";@supports (interpolate-size: allow-keywords) and (block-size: calc-size(auto, size)){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body,.s-bullet-delivery-inner{interpolate-size:allow-keywords}.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body{overflow:clip;transition:block-size 500ms ease}.s-bullet-delivery-inner{overflow:clip;transition:block-size 500ms ease;block-size:calc-size(auto, size)}}@media screen and (min-width: 640px){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open){overflow:visible !important}}.s-bullet-delivery-form-actions.s-bullet-delivery-form-actions--single{padding-bottom:0;flex-direction:column;gap:0}.s-bullet-delivery-addresses-list.s-scrollbar::-webkit-scrollbar-track,.s-bullet-delivery-branches-list.s-scrollbar::-webkit-scrollbar-track{background-color:transparent}.s-bullet-delivery-back-to-list-link{display:inline-flex;align-items:center;justify-content:center;gap:2px;width:100%;margin-top:12px;background:none;border:none;color:var(--color-primary, #004956);font-size:14px;font-weight:500;cursor:pointer;padding:0}.s-bullet-delivery-back-to-list-link i{font-size:12px}.s-bullet-delivery-location-permission-btn{display:flex;align-items:center;gap:10px;width:100%;padding:12px;border:none;border-radius:8px;background:#fdf2f2;cursor:pointer;text-align:start}.s-bullet-delivery-location-permission-icon{display:inline-flex;flex-shrink:0;width:34px;height:34px}.s-bullet-delivery-location-permission-icon svg{width:100%;height:100%}.s-bullet-delivery-location-permission-text{flex:1;min-width:0;font-size:12px;line-height:18px;color:#444}.s-bullet-delivery-location-permission-arrow{flex-shrink:0;font-size:16px;color:#666}.s-bullet-delivery-location-distance-warning{display:flex;align-items:center;gap:10px;width:100%;padding:12px;border-radius:8px;background:#fff8e1;animation:s-bullet-delivery-fade-in 200ms ease}.s-bullet-delivery-location-distance-warning-icon{display:inline-flex;flex-shrink:0;width:34px;height:34px}.s-bullet-delivery-location-distance-warning-icon svg{width:100%;height:100%}.s-bullet-delivery-location-distance-warning-text{flex:1;min-width:0;font-size:12px;line-height:18px;color:#444}.s-bullet-delivery-map-container{width:100%;height:320px;border-radius:8px;overflow:hidden;margin-bottom:12px}.s-bullet-delivery-map-container gmap-map{display:block;width:100%;height:100%}.s-bullet-delivery-address-confirm{display:flex;flex-direction:column;gap:20px;animation:s-bullet-delivery-fade-in 200ms ease}.s-bullet-delivery-address-confirm-card{display:flex;align-items:center;gap:12px;border:1px solid #eee;border-radius:6px;padding:12px}.s-bullet-delivery-address-map-icon{overflow:hidden;border-radius:9px}.s-bullet-delivery-address-confirm-details{display:flex;flex-direction:column;align-items:flex-start;flex:1;min-width:0}.s-bullet-delivery-address-confirm-label{font-size:12px;line-height:16px;color:#666}.s-bullet-delivery-address-confirm-text{font-size:14px;font-weight:700;color:#333;margin:0;word-break:break-word}.s-bullet-delivery-address-confirm-description{display:flex;flex-direction:column;gap:8px}.s-bullet-delivery-address-confirm-description-label{font-size:14px;font-weight:500;color:#444}.s-bullet-delivery-address-confirm-description-optional{font-weight:400;color:#999;margin-inline-start:4px}.s-bullet-delivery-address-confirm-description-input{width:100%;border:1px solid #eee;border-radius:8px;padding:10px 12px;font-size:14px;margin-bottom:16px}.s-bullet-delivery-login-prompt{display:block;width:100%;text-align:center;background:none;border:none;color:var(--color-primary, #004956);font-size:14px;font-weight:500;cursor:pointer;padding:12px 0}@keyframes s-bullet-delivery-fade-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (min-width: 640px){.s-bullet-delivery-modal .s-modal-sm{width:90vw !important;max-width:776px !important}}.s-bullet-delivery-modal .s-bullet-delivery-tabs{gap:4px;padding:4px;border-radius:12px;background:#f5f5f5}.s-bullet-delivery-modal .s-bullet-delivery-tab{justify-content:center;gap:8px;min-height:40px;border:0;border-radius:8px;background:transparent;color:#666;font-size:14px}.s-bullet-delivery-modal .s-bullet-delivery-tab:hover{background:transparent;color:var(--color-text, #333)}.s-bullet-delivery-modal .s-bullet-delivery-tab--active,.s-bullet-delivery-modal .s-bullet-delivery-tab--active:hover{background:#fff;color:#1a1a1a;font-weight:600;box-shadow:0 1px 2px rgba(0, 0, 0, 0.06)}.s-bullet-delivery-modal .s-bullet-delivery-tab-badge{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto;padding:4px 8px;border-radius:8px;font-size:11px;font-weight:600;line-height:120%;white-space:nowrap;color:#fff;background:#5196f3}.s-bullet-delivery-modal .s-bullet-delivery-discount-badge{display:inline-flex;align-items:center;flex:0 0 auto;padding:4px 8px;border-radius:6px;font-size:12px;font-weight:600;line-height:120%;white-space:nowrap;color:#fff;background:#e5484d}.s-bullet-delivery-modal .s-bullet-delivery-tab-badge-icon{display:inline-flex}.s-bullet-delivery-modal .s-bullet-delivery-tab-badge-icon svg{width:7px;height:10px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters{display:flex;flex-direction:column;gap:12px;padding:16px;border-radius:12px;background:#fafafa}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-field{margin:0}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters-row{display:flex;gap:12px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters-row>.s-bullet-delivery-field{flex:1;min-width:0}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters{}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-branch-search-wrap{min-height:40px;border-color:#ddd;border-radius:8px;background:#fff}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-branch-search-input{font-size:14px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-btn{height:40px;min-height:40px;padding:0 14px;gap:4px;border:1px solid var(--color-primary);border-radius:8px;background:#fff;color:#1a1a1a;font-size:14px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-btn:hover{background:#fff}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-icon{display:inline-flex}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-icon svg{width:16px;height:16px}.s-bullet-delivery-modal .s-bullet-delivery-branches-list{display:flex;flex-direction:column;gap:16px;max-height:min(400px, 45svh);border:0;border-radius:0;background:transparent}.s-bullet-delivery-modal .s-bullet-delivery-branch-item{display:grid;grid-template-columns:auto minmax(0, 1fr) auto;align-items:start;column-gap:12px;row-gap:2px;padding:16px;border:1px solid #eee;border-radius:12px;background:#fff;text-align:start;transition:border-color 0.2s}.s-bullet-delivery-modal .s-bullet-delivery-branch-item:last-child{border-bottom:1px solid #eee}.s-bullet-delivery-modal .s-bullet-delivery-branch-item:hover:not(.s-bullet-delivery-branch-item--disabled){background:#fff}.s-bullet-delivery-modal .s-bullet-delivery-branch-item--selected,.s-bullet-delivery-modal .s-bullet-delivery-branch-item--selected:last-child{border-color:var(--color-primary);background:#fff}.s-bullet-delivery-modal .s-bullet-delivery-branch-item--disabled{opacity:0.5}.s-bullet-delivery-modal .s-bullet-delivery-branch-radio{grid-column:1;grid-row:1;align-self:center;width:20px;height:20px;margin-top:0;pointer-events:none}.s-bullet-delivery-modal .s-bullet-delivery-branch-body{display:contents}.s-bullet-delivery-modal .s-bullet-delivery-branch-body>*{grid-column:2/-1;min-width:0}.s-bullet-delivery-modal .s-bullet-delivery-branch-body>.s-bullet-delivery-branch-name{grid-column:2;grid-row:1;align-self:center}.s-bullet-delivery-modal .s-bullet-delivery-branch-body>.s-bullet-delivery-branch-location{grid-column:2}.s-bullet-delivery-modal .s-bullet-delivery-branch-name{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;font-size:14px;font-weight:700;line-height:120%;color:#1a1a1a}.s-bullet-delivery-modal .s-bullet-delivery-branch-meta{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:#6c757d}.s-bullet-delivery-modal .s-bullet-delivery-branch-meta i{font-size:12px}.s-bullet-delivery-modal .s-bullet-delivery-branch-meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-status--open{color:#43a047;font-weight:500}.s-bullet-delivery-modal .s-bullet-delivery-pickup-status--closed,.s-bullet-delivery-modal .s-bullet-delivery-pickup-status--busy{color:#e53935;font-weight:500}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;margin:-6px;padding:0;border:0;background:none;color:inherit;line-height:1;cursor:pointer}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule-toggle i{transition:transform 0.2s ease}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule-toggle i.is-expanded{transform:rotate(180deg)}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule{display:flex;flex-direction:column;margin-top:4px;border-radius:8px;overflow:hidden}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule-day{display:flex;align-items:center;justify-content:space-between;gap:4px;padding:2px 12px;background:#f8f9fa;font-size:12px;font-weight:500}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule-days{color:#6c757d}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule-times{color:#1a1a1a}.s-bullet-delivery-modal .s-bullet-delivery-branch-instructions{align-items:flex-start;line-height:1.5;white-space:pre-line}.s-bullet-delivery-modal .s-bullet-delivery-branch-instructions .s-bullet-delivery-branch-meta-icon{margin-top:2px}.s-bullet-delivery-modal .s-bullet-delivery-branch-meta-value{color:#1a1a1a;font-weight:500}.s-bullet-delivery-modal .s-bullet-delivery-branch-meta-icon{display:inline-flex;flex-shrink:0}.s-bullet-delivery-modal .s-bullet-delivery-branch-meta-icon svg{width:16px;height:16px}.s-bullet-delivery-modal .s-bullet-delivery-branch-actions{grid-column:3;grid-row:1/span 2;display:flex;align-items:center;gap:8px}.s-bullet-delivery-modal .s-bullet-delivery-branch-action{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:1px solid var(--color-border, #eee);border-radius:8px;background:transparent;color:var(--color-text, #333);text-decoration:none;cursor:pointer;transition:all 0.2s}.s-bullet-delivery-modal .s-bullet-delivery-branch-action i{font-size:16px}.s-bullet-delivery-modal .s-bullet-delivery-branch-action:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-tt, transparent)}.s-bullet-delivery-modal .s-bullet-delivery-branch-action .s-bullet-delivery-branch-map-link-icon,.s-bullet-delivery-modal .s-bullet-delivery-branch-action .s-bullet-delivery-branch-map-link-icon svg{width:16px;height:16px}.s-bullet-delivery-modal .s-bullet-delivery-branch-action .s-bullet-delivery-branch-map-link-icon path{stroke:currentColor}.s-bullet-delivery-modal .s-bullet-delivery-branch-item .s-bullet-delivery-branch-action,.s-bullet-delivery-modal .s-bullet-delivery-branch-item .s-bullet-delivery-branch-schedule-toggle{pointer-events:auto}.s-bullet-delivery-modal .s-bullet-delivery-branch-pills{display:contents}.s-bullet-delivery-modal .s-bullet-delivery-branch-divider{display:none}@media (max-width: 480px){.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters{flex-direction:row;flex-wrap:wrap;gap:12px 8px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-branch-search,.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-search-row,.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-pickup-filters-row{display:contents}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-field{flex:1 1 calc(50% - 4px);min-width:0;order:1}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-branch-search-wrap{flex:1 1 0;min-width:0;order:2}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-btn{flex:0 0 auto;order:3;padding:0 10px;white-space:nowrap}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-error{flex-basis:100%;order:4}}@media (max-width: 480px) and (max-width: 400px){.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-btn{padding:0 12px}.s-bullet-delivery-modal .s-bullet-delivery-pickup-filters .s-bullet-delivery-location-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}@media (max-width: 480px){.s-bullet-delivery-modal .s-bullet-delivery-branch-meta-row{display:contents}.s-bullet-delivery-modal .s-bullet-delivery-branch-pills,.s-bullet-delivery-modal .s-bullet-delivery-branch-divider,.s-bullet-delivery-modal .s-bullet-delivery-branch-open-status{grid-column:2/-1;min-width:0}.s-bullet-delivery-modal .s-bullet-delivery-branch-pills{display:flex;flex-wrap:wrap;gap:8px;order:1;margin-top:6px}.s-bullet-delivery-modal .s-bullet-delivery-branch-divider{order:2}.s-bullet-delivery-modal .s-bullet-delivery-branch-instructions{order:3}.s-bullet-delivery-modal .s-bullet-delivery-branch-open-status{order:4}.s-bullet-delivery-modal .s-bullet-delivery-branch-schedule{order:5}.s-bullet-delivery-modal .s-bullet-delivery-branch-location .s-bullet-delivery-branch-meta-icon{display:none}.s-bullet-delivery-modal .s-bullet-delivery-branch-pill{padding:4px 10px;border:1px solid var(--color-border, #eee);border-radius:999px;font-size:12px;line-height:1.4}.s-bullet-delivery-modal .s-bullet-delivery-branch-pill .s-bullet-delivery-branch-meta-label{display:none}.s-bullet-delivery-modal .s-bullet-delivery-branch-pill .s-bullet-delivery-branch-meta-value{color:inherit;font-weight:400}.s-bullet-delivery-modal .s-bullet-delivery-branch-divider{display:block;width:100%;height:0;margin:10px 0;border:0;border-top:1px solid #e0e0e0;opacity:1}.s-bullet-delivery-modal .s-bullet-delivery-branch-action,.s-bullet-delivery-modal .s-bullet-delivery-branch-action:hover{border-color:transparent}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.inline{display:inline}.inline-flex{display:inline-flex}.shrink{flex-shrink:1}.resize{resize:both}.\\!text-blue-600{--tw-text-opacity:1 !important;color:rgb(37 99 235 / var(--tw-text-opacity, 1)) !important}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.outline{outline-style:solid}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-hidden{display:none}.form-input{height:2.5rem;width:100%;border-radius:0.375rem;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.form-input:focus{border-color:var(--color-primary);--tw-ring-color:transparent}.form-input:is(.dark *){--tw-border-opacity:1;border-color:rgb(75 85 99 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(75 85 99 / var(--tw-bg-opacity, 1))}.form-input:focus:is(.dark *){border-color:var(--color-primary)}@media (min-width: 640px){.form-input{font-size:0.875rem;line-height:1.25rem}}.\\!btn{display:inline-flex;flex:1 1 0%;align-items:center;justify-content:center;white-space:nowrap;border-radius:0.375rem;padding-left:1.5rem;padding-right:1.5rem;padding-bottom:0.625rem;padding-top:0.5rem;font-size:0.875rem;line-height:1.25rem;font-weight:700;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.\\!btn:hover{opacity:0.8}.btn{display:inline-flex;flex:1 1 0%;align-items:center;justify-content:center;white-space:nowrap;border-radius:0.375rem;padding-left:1.5rem;padding-right:1.5rem;padding-bottom:0.625rem;padding-top:0.5rem;font-size:0.875rem;line-height:1.25rem;font-weight:700;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.btn:hover{opacity:0.8}.spinner-loader.reverse{border-right-color:#9f7171 !important;background-color:#f98181}.s-hidden{display:none}.s-scrollbar::-webkit-scrollbar{width:5px}.s-scrollbar::-webkit-scrollbar-track{background-color:#eee}.s-scrollbar::-webkit-scrollbar-thumb{background-color:var(--color-primary);border-radius:10px;-webkit-border-radius:10px;-moz-border-radius:10px;-ms-border-radius:10px;-o-border-radius:10px}.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body{padding:0px}@media (min-width: 768px){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body{max-height:70dvh;overflow-y:auto}}@media (min-width: 640px){.s-bullet-delivery .s-bullet-delivery-modal .s-modal-body:has(.s-searchable-dropdown--open){overflow:visible !important}}.s-bullet-delivery-inner{min-block-size:0}.s-bullet-delivery-header{margin-bottom:1.5rem;text-align:start}.s-bullet-delivery-title{display:block;font-size:1.25rem;line-height:1.75rem;font-weight:700;color:var(--color-primary-dark)}.s-bullet-delivery-subtitle{margin-top:0.25rem;display:block;font-size:0.875rem;line-height:1.25rem;color:var(--color-primary-dark)}.s-bullet-delivery-tabs{margin-bottom:1.5rem;display:flex;gap:0.5rem}.s-bullet-delivery-tab{display:flex;flex:1 1 0%;cursor:pointer;align-items:center;gap:1rem;border-radius:0.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-top:0.5rem;padding-bottom:0.5rem;padding-left:0.75rem;padding-right:0.75rem;font-size:0.875rem;line-height:1.25rem;font-weight:500;color:var(--color-primary-dark);transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:200ms}.s-bullet-delivery-tab:hover{background-color:color-mix(in srgb,var(--color-primary) 5%,transparent)}.s-bullet-delivery-tab--active{border-color:var(--color-primary-dark)}.s-bullet-delivery-tab svg{height:0.875rem;width:0.875rem;color:var(--color-primary-dark)}.s-bullet-delivery-tab-icon{display:flex;height:2rem;width:2rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:0.75rem;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-allocation-out-of-coverage{margin-bottom:1rem;display:flex;width:100%;align-items:center;gap:0.5rem;--tw-bg-opacity:1;background-color:rgb(254 226 226 / var(--tw-bg-opacity, 1));padding-top:0.75rem;padding-bottom:0.75rem;padding-left:1rem;padding-right:1rem;text-align:end;--tw-text-opacity:1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.s-bullet-delivery-allocation-out-of-coverage:where([dir=\"ltr\"],[dir=\"ltr\"] *){border-left-width:4px;border-left-color:rgb(239 68 68 / 0.5)}.s-bullet-delivery-allocation-out-of-coverage:where([dir=\"rtl\"],[dir=\"rtl\"] *){border-right-width:4px;border-right-color:rgb(239 68 68 / 0.5)}.s-bullet-delivery-allocation-out-of-coverage-text{font-size:0.875rem;line-height:1.25rem;line-height:1.4}.s-bullet-delivery-allocation-out-of-coverage-icon{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;--tw-text-opacity:1;color:rgb(127 29 29 / var(--tw-text-opacity, 1))}.s-bullet-delivery-content{margin-bottom:1.5rem;display:grid;gap:1rem}.s-bullet-delivery-content--active{animation:s-bullet-delivery-fade-in 220ms ease-out}.s-bullet-delivery-label{margin-bottom:0.5rem;display:block;font-size:0.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1))}.s-bullet-delivery-error{margin-top:0.25rem;display:block;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.s-bullet-delivery-footer{display:grid;gap:0.75rem;text-align:center}.s-bullet-delivery-placeholder{margin-top:1rem;margin-bottom:1rem}.s-bullet-delivery-placeholder.s-placeholder-wrapper{margin-top:1rem !important;margin-bottom:1rem !important}.s-bullet-delivery-label-content{display:inline-flex;align-items:center;gap:0.5rem}.s-bullet-delivery-select-loader{display:inline-flex;align-items:center;--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.s-bullet-delivery-search-row{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:0.5rem;padding-left:1px;padding-right:1px}.s-bullet-delivery-search-row .s-bullet-delivery-search{min-width:0px;flex:1 1 0%}.s-bullet-delivery-search-row .s-bullet-delivery-location-btn{width:auto;flex-shrink:0}.s-bullet-delivery-field-row{margin-bottom:1rem;display:flex;gap:1rem}.s-bullet-delivery-field-row .s-bullet-delivery-field{margin-bottom:0px;flex:1 1 0%}.s-bullet-delivery-saved-addresses-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.s-bullet-delivery-saved-addresses-empty-icon{margin-bottom:0.75rem;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-bullet-delivery-saved-addresses-empty-icon svg{height:2rem;width:2rem}.s-bullet-delivery-saved-addresses-empty-title{margin-bottom:0.5rem;font-size:1.125rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(31 41 55 / var(--tw-text-opacity, 1))}.s-bullet-delivery-saved-addresses-empty-desc{margin-bottom:1.5rem;max-width:24rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-addresses-list{position:relative;display:flex;max-height:260px;flex-direction:column;overflow-y:auto;border-radius:0.75rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}@media (min-width: 768px){.s-bullet-delivery-addresses-list{max-height:220px}}.s-bullet-delivery-address-item{display:flex;cursor:pointer;flex-direction:row;align-items:center;gap:0.75rem;border-bottom-width:1px;--tw-border-opacity:1;border-bottom-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.875rem;padding-bottom:0.875rem;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-address-item:not(.s-bullet-delivery-address-item--disabled):hover{background-color:rgb(249 250 251 / 0.5)}.s-bullet-delivery-address-item--selected{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-address-item--disabled{cursor:not-allowed;opacity:0.6}.s-bullet-delivery-address-item--skeleton{display:flex;cursor:default;align-items:center;gap:0.75rem;border-radius:0.75rem;border-width:1px;border-bottom-width:0px;--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:1rem;padding-bottom:1rem}.s-bullet-delivery-address-item--skeleton .s-bullet-delivery-address-lines{gap:0.5rem}.s-bullet-delivery-address-content{display:flex;min-width:0px;flex:1 1 0%;flex-direction:column;justify-content:center;text-align:start}.s-bullet-delivery-address-lines{display:flex;flex-direction:column;gap:0.125rem}.s-bullet-delivery-address-line1{display:block;font-size:1rem;line-height:1.5rem;font-weight:400;line-height:1.375;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-bullet-delivery-address-line2{display:block;font-size:0.875rem;line-height:1.25rem;line-height:1.375;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-bullet-delivery-address-map-icon{display:grid;height:2.5rem;width:2.5rem;place-content:center}.s-bullet-delivery-address-map-icon svg{height:100%;width:100%}.s-bullet-delivery-skel-radio{flex-shrink:0;border-radius:9999px}.s-bullet-delivery-skel-map{flex-shrink:0;border-radius:0.75rem}.s-bullet-delivery-search{position:relative;flex:1 1 0%}.s-bullet-delivery-search-icon{pointer-events:none;position:absolute;top:0px;bottom:0px;left:0px;display:flex;align-items:center;padding-left:0.75rem}.s-bullet-delivery-search-icon:where([dir=\"rtl\"],[dir=\"rtl\"] *){left:auto;right:0px;padding-left:0px;padding-right:0.75rem}.s-bullet-delivery-search-icon svg{height:0.875rem;width:0.875rem;stroke:var(--color-primary)}.s-bullet-delivery-branch-search-wrap{display:flex;min-height:40px;min-width:0px;flex:1 1 0%;flex-direction:row;align-items:stretch;overflow:hidden;border-radius:0.375rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1))}.s-bullet-delivery-branch-search-wrap:focus-within{border-color:var(--color-primary-dark);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);--tw-ring-color:var(--color-primary-dark)}.s-bullet-delivery-branch-search-icon{pointer-events:none;position:static;display:flex;flex-shrink:0;align-items:center;justify-content:center;padding-inline-start:0.5rem;--tw-text-opacity:1;color:rgb(156 163 175 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-search-icon svg{height:1.25rem;width:1.25rem}.s-bullet-delivery-branch-search-input{min-height:40px;min-width:0px;flex:1 1 0%;border-radius:0px;border-style:none;background-color:transparent;padding-top:0.5rem;padding-bottom:0.5rem;padding-inline-end:0.75rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1));--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.s-bullet-delivery-branch-search-input::placeholder{--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-search-input:focus{outline:2px solid transparent;outline-offset:2px;border:none;box-shadow:none;--tw-ring-shadow:none}.s-bullet-delivery-location-btn{display:flex;flex-shrink:0;cursor:pointer;align-items:center;justify-content:center;gap:0.5rem;border-radius:0.5rem;border-width:1px;padding-left:1rem;padding-right:1rem;padding-top:0.5rem;padding-bottom:0.5rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(55 65 81 / var(--tw-text-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-location-btn:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-location-btn:disabled{cursor:not-allowed;opacity:0.5}.s-bullet-delivery-location-btn--full{min-height:40px}.s-bullet-delivery-location-btn--loading{--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-location-icon{height:0.875rem;width:0.875rem;flex-shrink:0}.s-bullet-delivery-location-icon svg{height:100%;width:100%}.s-bullet-delivery-branches-wrap{overflow:hidden}.s-bullet-delivery-branches-list{position:relative;max-height:min(260px, 32svh);overflow-y:auto;border-radius:0.5rem;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}@media (min-width: 768px){.s-bullet-delivery-branches-list{max-height:220px}}.s-bullet-delivery-branches-loading{overflow:hidden;border-radius:0.5rem;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-branch-info{display:flex;max-width:6.25rem;flex-direction:column;gap:0.125rem}.s-bullet-delivery-branch-name{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:break-word;font-size:0.875rem;line-height:1.25rem;font-weight:500;line-height:1.375;--tw-text-opacity:1;color:rgb(24 24 27 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-prep{text-align:start;font-size:0.875rem;line-height:1.25rem;font-weight:400;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-time{font-size:0.875rem;line-height:1.25rem;font-weight:400;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1))}.s-bullet-delivery-branch-time:where([dir=\"ltr\"],[dir=\"ltr\"] *){text-align:end}.s-bullet-delivery-branch-time:where([dir=\"rtl\"],[dir=\"rtl\"] *){text-align:start}.s-bullet-delivery-branch-map-link{display:flex;flex-shrink:0;align-items:center;justify-content:center;border-radius:0.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding:0.5rem;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1));text-decoration-line:none;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-branch-map-link:hover{--tw-bg-opacity:1;background-color:rgb(229 231 235 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-branch-item>.s-bullet-delivery-branch-map-link{position:relative;z-index:10;pointer-events:auto}.s-bullet-delivery-branch-map-link-icon{display:flex;height:0.875rem;width:0.875rem;align-items:center;justify-content:center}.s-bullet-delivery-branch-map-link-icon svg{height:100%;width:100%}.s-bullet-delivery-branch-skeleton-title{max-width:100%}.s-bullet-delivery-branch-skeleton-time{justify-self:end}.s-bullet-delivery-branch-item{display:grid;min-width:0px;cursor:pointer;align-items:center;gap:0.5rem;border-bottom-width:1px;--tw-border-opacity:1;border-bottom-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.75rem;padding-bottom:0.75rem;text-align:end;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;grid-template-columns:auto auto auto 1fr auto}.s-bullet-delivery-branch-item:last-child{border-bottom-width:0px}.s-bullet-delivery-branch-item:hover:not(.s-bullet-delivery-branch-item--disabled){--tw-bg-opacity:1;background-color:rgb(249 250 251 / var(--tw-bg-opacity, 1))}.s-bullet-delivery-branch-item--selected{background-color:color-mix(in srgb,var(--color-primary) 5%,transparent)}.s-bullet-delivery-branch-item--disabled{cursor:not-allowed;opacity:0.5}.s-bullet-delivery-branch-icon{display:grid;place-content:center;border-radius:0.75rem;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1));stroke:var(--color-primary-dark);padding:0.625rem;color:var(--color-primary-dark)}.s-bullet-delivery-branch-icon span{display:block;height:0.875rem;width:0.875rem}.s-bullet-delivery-branch-icon span svg{height:100%;width:100%}.s-bullet-delivery-branch-skeleton{display:grid;min-width:0px;align-items:center;gap:0.5rem;border-bottom-width:1px;--tw-border-opacity:1;border-bottom-color:rgb(229 231 235 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.75rem;padding-bottom:0.75rem;grid-template-columns:auto auto auto 1fr auto}.s-bullet-delivery-branch-skeleton:last-child{border-bottom-width:0px}.s-bullet-delivery-branch-skeleton-radio{flex-shrink:0}.s-bullet-delivery-branch-skeleton-icon{flex-shrink:0;border-radius:0.75rem}.s-bullet-delivery-branch-skeleton-icon salla-skeleton{display:block}.s-bullet-delivery-branch-skeleton-map{flex-shrink:0;border-radius:0.75rem}.s-bullet-delivery-branch-skeleton-map salla-skeleton{display:block}.s-bullet-delivery-branch-skeleton-content{display:flex;min-width:0px;flex-direction:column;gap:0.5rem;overflow:hidden}.s-bullet-delivery-branch-skeleton-content salla-skeleton{min-width:0px;max-width:100%}.s-bullet-delivery-radio{margin-top:2px;height:1rem;width:1rem;flex-shrink:0;cursor:pointer;appearance:none;border-radius:9999px;border-width:2px;--tw-border-opacity:1;border-color:rgb(209 213 219 / var(--tw-border-opacity, 1));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms}.s-bullet-delivery-radio:checked{border-color:var(--color-primary-dark);background:radial-gradient(circle,#fff 0,#fff 22%,var(--color-primary) 22%)}.s-bullet-delivery-radio:focus{outline:2px solid transparent;outline-offset:2px}.s-bullet-delivery-radio:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);--tw-ring-color:var(--color-primary-dark);--tw-ring-offset-width:2px}.s-bullet-delivery-skeleton{box-sizing:border-box;min-width:0px;max-width:100%;overflow:hidden;padding:1.25rem}.s-bullet-delivery-skeleton salla-skeleton{min-width:0px;max-width:100%}.s-bullet-delivery-skeleton-header{margin-bottom:1.5rem;display:flex;min-width:0px;max-width:100%;flex-direction:column;align-items:flex-start;gap:0.75rem}.s-bullet-delivery-skeleton-title{display:block;max-width:100%}.s-bullet-delivery-skeleton-subtitle{display:block;max-width:100%}.s-bullet-delivery-skeleton-tabs{margin-bottom:1.5rem;display:grid;min-width:0px;max-width:100%;grid-template-columns:repeat(2, minmax(0, 1fr));gap:0.5rem}.s-bullet-delivery-skeleton-tabs--single{grid-template-columns:repeat(1, minmax(0, 1fr))}.s-bullet-delivery-skeleton-tab{display:flex;align-items:center;gap:1rem;border-radius:0.75rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-left:1rem;padding-right:1rem;padding-top:0.75rem;padding-bottom:0.75rem;transition-property:color, background-color, border-color, text-decoration-color, fill, stroke;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:300ms}.s-bullet-delivery-skeleton-tab-icon{display:block;max-width:100%}.s-bullet-delivery-skeleton-tab-label{display:block;max-width:100%}.s-bullet-delivery-skeleton-field-label{display:block;max-width:100%}.s-bullet-delivery-skeleton-field-control{display:block;max-width:100%}.s-bullet-delivery-skeleton-content{margin-bottom:1.5rem;display:grid;min-width:0px;max-width:100%;gap:1rem}.s-bullet-delivery-skeleton-field{display:flex;min-width:0px;max-width:100%;flex-direction:column;align-items:flex-start;gap:0.5rem}.s-bullet-delivery-skeleton-footer{min-width:0px;max-width:100%}.s-bullet-delivery-add-address-header{margin-bottom:1.5rem;display:flex;align-items:center;justify-content:space-between;gap:0.75rem}.s-bullet-delivery-add-address-title{display:flex;width:100%;flex:1 1 0%;cursor:pointer;align-items:center;border-style:none;background-color:transparent;padding:0px;text-align:start;font-size:1.125rem;line-height:1.75rem;font-weight:700;color:var(--color-primary)}.s-bullet-delivery-add-address svg{height:2.5rem;width:2.5rem;fill:currentColor}.s-bullet-delivery-allocation-out-of-coverage-icon svg{height:1.25rem;width:1.25rem}.s-bullet-delivery-add-address-form{display:grid;gap:1rem}.s-bullet-delivery-add-address-submit{width:100%}.s-bullet-delivery-form-actions{display:flex;gap:0.75rem;border-top-width:1px;--tw-border-opacity:1;border-color:rgb(243 244 246 / var(--tw-border-opacity, 1));padding-top:1rem}.s-bullet-delivery-form-actions salla-button{flex:1 1 0%}.s-bullet-delivery-form-actions--single{border-top-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235 / var(--tw-border-opacity, 1));padding-top:1.25rem}.s-bullet-delivery-form-actions--single salla-button{width:100%;flex:1 1 0%}.s-bullet-delivery-market-warning-overlay{position:fixed;inset:0px;z-index:60;display:flex;align-items:center;justify-content:center;background-color:rgb(0 0 0 / 0.5)}.s-bullet-delivery-market-warning{margin-left:1rem;margin-right:1rem;width:100%;max-width:24rem;border-radius:0.75rem;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1.5rem;--tw-shadow:0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)}.s-bullet-delivery-market-warning-title{margin-bottom:0.75rem;font-size:1.125rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-bullet-delivery-market-warning-message{margin-bottom:1.5rem;font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(75 85 99 / var(--tw-text-opacity, 1))}.s-bullet-delivery-market-warning-actions{display:flex;gap:0.75rem}.s-bullet-delivery-market-warning-actions salla-button{flex:1 1 0%}.s-bullet-delivery-cart-view{margin-bottom:1rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;border-radius:0.75rem;border-width:1px;--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding:1rem}.s-bullet-delivery-cart-view-info{display:flex;min-width:0px;flex:1 1 0%;align-items:center;gap:0.75rem}.s-bullet-delivery-cart-view-text{display:flex;flex-direction:column;text-align:start}.s-bullet-delivery-cart-view-title{font-size:1rem;line-height:1.5rem;font-weight:600;--tw-text-opacity:1;color:rgb(17 24 39 / var(--tw-text-opacity, 1))}.s-bullet-delivery-cart-view-subtitle{font-size:0.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(107 114 128 / var(--tw-text-opacity, 1));margin-block-start:0.125rem}.s-bullet-delivery-cart-view-icon{display:flex;height:3.5rem;width:3.5rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:1rem;--tw-bg-opacity:1;background-color:rgb(243 244 246 / var(--tw-bg-opacity, 1));color:var(--color-primary-dark)}.s-bullet-delivery-cart-view-icon svg{height:1.25rem;width:1.25rem;stroke:currentColor}.s-bullet-delivery-cart-view-button{flex-shrink:0;align-self:center}.s-bullet-delivery-location-permission-btn{display:flex;width:100%;cursor:pointer;align-items:center;gap:0.625rem;border-radius:0.5rem;border-width:0px;padding:0.75rem;text-align:start;background:#fdf2f2}.s-bullet-delivery-location-permission-icon{display:inline-flex;height:34px;width:34px;flex-shrink:0}.s-bullet-delivery-location-permission-icon svg{height:100%;width:100%}.s-bullet-delivery-location-permission-text{min-width:0px;flex:1 1 0%;font-size:0.75rem;line-height:1rem;line-height:18px;--tw-text-opacity:1;color:rgb(68 68 68 / var(--tw-text-opacity, 1))}.s-bullet-delivery-location-permission-arrow{flex-shrink:0;font-size:1rem;line-height:1.5rem;--tw-text-opacity:1;color:rgb(102 102 102 / var(--tw-text-opacity, 1))}.s-bullet-delivery-location-distance-warning{display:flex;width:100%;animation:s-bullet-delivery-fade-in 200ms ease;align-items:center;gap:0.625rem;border-radius:0.5rem;padding:0.75rem;background:#fff8e1}.s-bullet-delivery-location-distance-warning-icon{display:inline-flex;height:34px;width:34px;flex-shrink:0}.s-bullet-delivery-location-distance-warning-icon svg{height:100%;width:100%}.s-bullet-delivery-location-distance-warning-text{min-width:0px;flex:1 1 0%;font-size:0.75rem;line-height:1rem;line-height:18px;--tw-text-opacity:1;color:rgb(68 68 68 / var(--tw-text-opacity, 1))}";
318
302
 
319
303
  const BRANCH_SEARCH_DEBOUNCE_MS = 1000;
304
+ /** Shorter queries are filtered locally; the branches API ignores them. */
305
+ const BRANCH_SEARCH_MIN_LENGTH = 2;
320
306
  const GEOLOCATION_TIMEOUT = 10000;
307
+ /** GeolocationPositionError.PERMISSION_DENIED — inlined; the class is absent on the server. */
308
+ const GEO_PERMISSION_DENIED = 1;
309
+ /** Silent read for branch distances: a short wait, and a recent cached fix is good enough. */
310
+ const SILENT_GEOLOCATION_TIMEOUT = 5000;
311
+ const SILENT_GEOLOCATION_MAX_AGE = 10 * 60 * 1000;
312
+ /** Longest the branch list waits for that read; a later fix still serves the next list request. */
313
+ const BRANCH_LIST_LOCATION_WAIT = 1500;
314
+ /** Matches the `per_page` default of `bulletDeliveryAPI.getBranches`. */
315
+ const BRANCH_PAGE_SIZE = 20;
321
316
  /** Final fallback center used only if `user.default_geo_location` is absent (Riyadh — matches checkout map-page). */
322
317
  const DEFAULT_MAP_CENTER = { lat: 24.7756042, lng: 46.7360729 };
323
318
  const DEBUG_KEY = 'salla-bullet-delivery-debug';
@@ -337,6 +332,8 @@ const SallaBulletDelivery = class {
337
332
  this.pendingCartSubmitResolver = null;
338
333
  this.pendingCartSubmitPromise = null;
339
334
  this.cartSubmitConfirmationPending = false;
335
+ /** Query the current branch list was searched with server-side; its results are not re-filtered locally. */
336
+ this.branchesServerQuery = '';
340
337
  this.branchSearchDebounceTimer = null;
341
338
  this.countrySearchTimer = null;
342
339
  this.regionSearchTimer = null;
@@ -384,6 +381,8 @@ const SallaBulletDelivery = class {
384
381
  /** Identifies the latest reverse-geocode call so a resolved-but-superseded callback (same
385
382
  * coordinates re-picked, or the map left) can be told apart from the current one. */
386
383
  this.geocodeRequestId = 0;
384
+ /** Identifies the latest pickup-offer fetch so one from an earlier modal open is dropped. */
385
+ this.pickupDiscountRequestId = 0;
387
386
  // Core state
388
387
  this.activeTab = "address";
389
388
  this.isLoggedIn = false;
@@ -406,9 +405,27 @@ const SallaBulletDelivery = class {
406
405
  this.selectedSessionAddress = false;
407
406
  // Pickup state
408
407
  this.branches = [];
408
+ /** Pickup offer range across the store's branches (INV-1416); null shows the default tab badge. */
409
+ this.pickupDiscountRange = null;
410
+ /** False until the offer lookup settles, so the tab never flashes the default badge before an offer. */
411
+ this.pickupDiscountResolved = false;
409
412
  this.filteredBranches = [];
410
413
  this.selectedBranch = null;
411
414
  this.branchSearchQuery = "";
415
+ /** Cities that have branches in the selected country (from the unfiltered branch list). */
416
+ this.branchCities = [];
417
+ this.selectedBranchCity = null;
418
+ this.branchCitySearchQuery = '';
419
+ /** Branch whose weekly hours are expanded behind the chevron (one at a time). */
420
+ this.expandedScheduleBranchId = null;
421
+ /** Shopper's device location for branch distances (see getGrantedDeviceLocation). */
422
+ this.shopperLocation = null;
423
+ this.shopperLocationRequestId = 0;
424
+ this.nearestBranchRequestId = 0;
425
+ /** Bumped per branch-list request; overlapping city/search loads only apply the latest one. */
426
+ this.branchesRequestId = 0;
427
+ /** Shared country rows and city options expire with the API cache. */
428
+ this.allBranchCities = null;
412
429
  // Loading states
413
430
  this.loadingCountries = false;
414
431
  this.loadingCities = false;
@@ -527,6 +544,13 @@ const SallaBulletDelivery = class {
527
544
  this.displayedDistricts = this.districts;
528
545
  this.searchingDistricts = false;
529
546
  };
547
+ this.handleBranchCitySelected = (item) => {
548
+ this.selectedBranchCity = item && item.id !== -1
549
+ ? (this.branchCities.find((c) => String(c.id) === String(item.id)) ?? item)
550
+ : null;
551
+ this.selectedBranch = null;
552
+ void this.loadBranches();
553
+ };
530
554
  this.handleMapLocationChanged = (event) => {
531
555
  const detail = event.detail;
532
556
  if (!detail?.position?.lat || !detail?.position?.lng)
@@ -751,6 +775,7 @@ const SallaBulletDelivery = class {
751
775
  }
752
776
  // Reset state before opening
753
777
  this.resetState();
778
+ void this.loadPickupDiscountRange();
754
779
  if (!silent) {
755
780
  // Open modal immediately — fields render right away with inline loading
756
781
  this.modal.open();
@@ -802,20 +827,18 @@ const SallaBulletDelivery = class {
802
827
  }
803
828
  }
804
829
  // Load branches only when branch tab is active (lazy tab data)
805
- // Use lat/lng from session storage if available for more accurate results
806
830
  if (this.activeTab === "branch") {
807
- const intentLat = getIntentLatitude(savedIntent);
808
- const intentLng = getIntentLongitude(savedIntent);
809
- if (intentLat != null && intentLng != null) {
810
- await this.loadBranchesWithLocation(intentLat, intentLng);
811
- }
812
- else {
813
- await this.loadBranches();
814
- }
831
+ const loading = this.loadBranches();
832
+ const request = this.branchesRequestId;
833
+ await loading;
834
+ if (request !== this.branchesRequestId || this.activeTab !== 'branch' || this.branchSearchQuery.trim())
835
+ return;
815
836
  // Auto-select preselected branch if provided
816
837
  if (this.preselectedBranchId) {
817
- this.preselectBranch(this.preselectedBranchId);
838
+ await this.preselectBranch(this.preselectedBranchId);
818
839
  }
840
+ if (request !== this.branchesRequestId || this.activeTab !== 'branch' || this.branchSearchQuery.trim())
841
+ return;
819
842
  }
820
843
  // Prefill form data from session storage
821
844
  await this.prefillFromSessionStorage();
@@ -868,6 +891,17 @@ const SallaBulletDelivery = class {
868
891
  });
869
892
  }
870
893
  resetState() {
894
+ clearBranchCache();
895
+ this.allBranchCities = null;
896
+ this.pickupDiscountRequestId++;
897
+ if (this.branchSearchDebounceTimer)
898
+ clearTimeout(this.branchSearchDebounceTimer);
899
+ ++this.branchesRequestId;
900
+ this.loadingBranches = false;
901
+ ++this.shopperLocationRequestId;
902
+ ++this.nearestBranchRequestId;
903
+ this.loadingNearestBranch = false;
904
+ this.shopperLocation = null;
871
905
  this.viewMode = "main";
872
906
  this.mapLocationData = null;
873
907
  this.mapCountryCode = null;
@@ -884,11 +918,16 @@ const SallaBulletDelivery = class {
884
918
  this.selectedSessionAddress = false;
885
919
  this.selectedBranch = null;
886
920
  this.branchSearchQuery = "";
921
+ this.branchCities = [];
922
+ this.selectedBranchCity = null;
923
+ this.expandedScheduleBranchId = null;
887
924
  this.regions = [];
888
925
  this.cities = [];
889
926
  this.districts = [];
890
927
  this.branches = [];
891
928
  this.filteredBranches = [];
929
+ this.pickupDiscountRange = null;
930
+ this.pickupDiscountResolved = false;
892
931
  this.newAddressForm = { ...SallaBulletDelivery.INITIAL_ADDRESS_FORM };
893
932
  this.showCartWillBeClearedBanner = false;
894
933
  this.allocationOutOfCoverageMessage = null;
@@ -1292,16 +1331,63 @@ const SallaBulletDelivery = class {
1292
1331
  });
1293
1332
  }
1294
1333
  async loadBranches() {
1334
+ const request = ++this.branchesRequestId;
1335
+ // A city change keeps the active search, so the server filters before picking the first page.
1336
+ const query = this.branchSearchQuery.trim();
1295
1337
  this.loadingBranches = true;
1296
1338
  try {
1297
- this.applyLoadedBranches(await bulletDeliveryAPI.getBranches({
1339
+ const branches = await bulletDeliveryAPI.getBranches({
1298
1340
  country_id: this.selectedCountry?.id,
1299
- }));
1341
+ city_id: this.selectedBranchCity?.id,
1342
+ query,
1343
+ ...(await this.getListLocation()),
1344
+ });
1345
+ if (request !== this.branchesRequestId)
1346
+ return;
1347
+ this.branchesServerQuery = query.length >= BRANCH_SEARCH_MIN_LENGTH ? query : '';
1348
+ this.applyLoadedBranches(branches);
1349
+ // Search results hold only the matching branches, which would shrink the city options.
1350
+ if (query.length < BRANCH_SEARCH_MIN_LENGTH)
1351
+ void this.refreshBranchCities();
1300
1352
  }
1301
1353
  finally {
1302
- this.loadingBranches = false;
1354
+ if (request === this.branchesRequestId)
1355
+ this.loadingBranches = false;
1303
1356
  }
1304
1357
  }
1358
+ /** Reuse the country's city collection while keeping visible choices usable during loading. */
1359
+ refreshBranchCities() {
1360
+ if (!this.selectedBranchCity)
1361
+ this.branchCities = getBranchCities(this.branches);
1362
+ const countryId = this.selectedCountry?.id;
1363
+ if (!this.allBranchCities || this.allBranchCities.countryId !== countryId || Date.now() - this.allBranchCities.timestamp > CACHE_TTL) {
1364
+ const branches = bulletDeliveryAPI.getAllBranches(countryId, BRANCH_PAGE_SIZE);
1365
+ this.allBranchCities = {
1366
+ countryId,
1367
+ timestamp: Date.now(),
1368
+ branches,
1369
+ cities: branches.then((all) => getBranchCities(all)),
1370
+ };
1371
+ }
1372
+ const pending = this.allBranchCities;
1373
+ return pending.cities.then((cities) => {
1374
+ if (this.allBranchCities !== pending || this.selectedCountry?.id !== countryId)
1375
+ return;
1376
+ if (!cities.length) {
1377
+ this.allBranchCities = null;
1378
+ return;
1379
+ }
1380
+ this.branchCities = cities;
1381
+ }).catch((error) => {
1382
+ if (this.allBranchCities === pending) {
1383
+ this.allBranchCities = null;
1384
+ if (this.selectedCountry?.id === countryId && Array.isArray(error?.branches)) {
1385
+ this.branchCities = getBranchCities([...this.branches, ...error.branches]);
1386
+ }
1387
+ }
1388
+ console.error('[BulletDelivery] Error fetching branch cities', error);
1389
+ });
1390
+ }
1305
1391
  /**
1306
1392
  * Store a freshly fetched branch list and reconcile the current selection with it.
1307
1393
  * `selectedBranch` is a snapshot from selection time: when the refreshed list carries the
@@ -1318,8 +1404,33 @@ const SallaBulletDelivery = class {
1318
1404
  }
1319
1405
  this.filterBranches();
1320
1406
  }
1407
+ /** Shares a fresh branch collection with the picker on each modal open. */
1408
+ async loadPickupDiscountRange() {
1409
+ if (!this.supportsPickup)
1410
+ return;
1411
+ const requestId = ++this.pickupDiscountRequestId;
1412
+ const { branches, complete } = await bulletDeliveryAPI.getBranchCollection(undefined, 60, { requireComplete: true });
1413
+ if (requestId !== this.pickupDiscountRequestId)
1414
+ return;
1415
+ this.pickupDiscountRange = complete ? getBranchDiscountRange(branches) : null;
1416
+ this.pickupDiscountResolved = true;
1417
+ }
1418
+ /**
1419
+ * ar: "خصم 25%" / "خصم 5 – 25%" / "خصم 10 ر.س"; en: "25% discount" / "5 – 25% discount" / "10 SAR discount".
1420
+ * Money may carry the riyal-symbol SVG, so it renders as HTML.
1421
+ */
1422
+ getPickupDiscountLabel(type, min, max = min) {
1423
+ const format = (amount) => type === 'percentage' ? String(Math.round(amount * 100) / 100) : salla.money(amount);
1424
+ const value = min === max ? format(min) : `${format(min)} – ${format(max)}`;
1425
+ const amount = type === 'percentage' ? `${value}%` : `${value} `;
1426
+ const fallback = this.isArabic ? `خصم ${amount}` : ` ${amount} discount`;
1427
+ return Salla.lang.getWithDefault('pages.checkout.pickup_discount', fallback, { amount });
1428
+ }
1321
1429
  filterBranches() {
1322
- this.filteredBranches = filterBranches(this.branches, this.branchSearchQuery);
1430
+ const query = this.branchSearchQuery.trim();
1431
+ this.filteredBranches = query && query === this.branchesServerQuery
1432
+ ? this.branches
1433
+ : filterBranches(this.branches, query);
1323
1434
  }
1324
1435
  /**
1325
1436
  * Prefill form fields from session storage
@@ -1344,7 +1455,7 @@ const SallaBulletDelivery = class {
1344
1455
  if (country) {
1345
1456
  this.selectedCountry = country;
1346
1457
  this.updateNewAddressForm({ country_id: Number(country.id) });
1347
- this.preselectBranch(getIntentBranchId(intent));
1458
+ await this.preselectBranch(getIntentBranchId(intent));
1348
1459
  }
1349
1460
  }
1350
1461
  }
@@ -1383,7 +1494,16 @@ const SallaBulletDelivery = class {
1383
1494
  }
1384
1495
  }
1385
1496
  applyCountryChange(newCountry) {
1497
+ ++this.branchesRequestId;
1498
+ this.allBranchCities = null;
1499
+ this.loadingBranches = false;
1500
+ this.branches = [];
1501
+ this.filteredBranches = [];
1386
1502
  this.selectedCountry = newCountry;
1503
+ this.selectedBranchCity = null;
1504
+ this.branchCities = [];
1505
+ this.branchCitySearchQuery = '';
1506
+ this.selectedBranch = null;
1387
1507
  this.selectedRegion = null;
1388
1508
  this.regions = [];
1389
1509
  this.displayedRegions = [];
@@ -1503,19 +1623,11 @@ const SallaBulletDelivery = class {
1503
1623
  void this.loadBranches();
1504
1624
  return;
1505
1625
  }
1506
- this.branchSearchDebounceTimer = setTimeout(async () => {
1507
- if (query.trim().length < 2)
1626
+ this.branchSearchDebounceTimer = setTimeout(() => {
1627
+ // Below the minimum, only reload when the list still holds an earlier server search.
1628
+ if (query.trim().length < BRANCH_SEARCH_MIN_LENGTH && !this.branchesServerQuery)
1508
1629
  return;
1509
- this.loadingBranches = true;
1510
- try {
1511
- this.applyLoadedBranches(await bulletDeliveryAPI.getBranches({
1512
- country_id: this.selectedCountry?.id,
1513
- query,
1514
- }));
1515
- }
1516
- finally {
1517
- this.loadingBranches = false;
1518
- }
1630
+ void this.loadBranches();
1519
1631
  }, BRANCH_SEARCH_DEBOUNCE_MS);
1520
1632
  }
1521
1633
  clearSearchTimers() {
@@ -1542,13 +1654,23 @@ const SallaBulletDelivery = class {
1542
1654
  this.clearSearchTimers();
1543
1655
  }
1544
1656
  async loadBranchesWithLocation(lat, lng) {
1657
+ // Later list loads (city change, search) keep measuring from the device location.
1658
+ ++this.shopperLocationRequestId;
1659
+ this.shopperLocation = { lat, lng };
1660
+ const request = ++this.branchesRequestId;
1545
1661
  this.loadingBranches = true;
1546
1662
  try {
1547
- this.applyLoadedBranches(await bulletDeliveryAPI.getBranches({
1663
+ const branches = await bulletDeliveryAPI.getBranches({
1548
1664
  country_id: this.selectedCountry?.id,
1665
+ city_id: this.selectedBranchCity?.id,
1549
1666
  lat,
1550
1667
  lng,
1551
- }));
1668
+ });
1669
+ if (request !== this.branchesRequestId)
1670
+ return false;
1671
+ this.branchesServerQuery = '';
1672
+ this.applyLoadedBranches(branches);
1673
+ void this.refreshBranchCities();
1552
1674
  // Auto-select country from first branch if no country is selected
1553
1675
  if (!this.selectedCountry && this.branches.length > 0) {
1554
1676
  const firstBranch = this.branches[0];
@@ -1562,9 +1684,11 @@ const SallaBulletDelivery = class {
1562
1684
  }
1563
1685
  }
1564
1686
  }
1687
+ return true;
1565
1688
  }
1566
1689
  finally {
1567
- this.loadingBranches = false;
1690
+ if (request === this.branchesRequestId)
1691
+ this.loadingBranches = false;
1568
1692
  }
1569
1693
  }
1570
1694
  /** Locate nearest branch using device geolocation (branches tab only). */
@@ -1573,6 +1697,7 @@ const SallaBulletDelivery = class {
1573
1697
  this.locationError = Salla.lang.get("pages.checkout.current_location_not_supported");
1574
1698
  return;
1575
1699
  }
1700
+ const request = ++this.nearestBranchRequestId;
1576
1701
  this.loadingNearestBranch = true;
1577
1702
  this.locationError = "";
1578
1703
  try {
@@ -1584,7 +1709,12 @@ const SallaBulletDelivery = class {
1584
1709
  });
1585
1710
  });
1586
1711
  const { latitude, longitude } = position.coords;
1587
- await this.loadBranchesWithLocation(latitude, longitude);
1712
+ if (request !== this.nearestBranchRequestId)
1713
+ return;
1714
+ if (!await this.loadBranchesWithLocation(latitude, longitude))
1715
+ return;
1716
+ if (request !== this.nearestBranchRequestId)
1717
+ return;
1588
1718
  const nearestBranch = findNearestBranch(this.branches, latitude, longitude);
1589
1719
  if (nearestBranch) {
1590
1720
  this.selectedBranch = nearestBranch;
@@ -1593,26 +1723,56 @@ const SallaBulletDelivery = class {
1593
1723
  }
1594
1724
  }
1595
1725
  catch (error) {
1726
+ if (request !== this.nearestBranchRequestId)
1727
+ return;
1596
1728
  const geoError = error;
1597
1729
  const code = typeof geoError?.code === "number" ? geoError.code : -1;
1598
- this.locationError = getGeolocationErrorMessage(code);
1730
+ this.locationError = this.geolocationErrorMessage(code);
1599
1731
  }
1600
1732
  finally {
1601
- this.loadingNearestBranch = false;
1733
+ if (request === this.nearestBranchRequestId)
1734
+ this.loadingNearestBranch = false;
1735
+ }
1736
+ }
1737
+ geolocationErrorMessage(code) {
1738
+ if (code === GEO_PERMISSION_DENIED) {
1739
+ return Salla.lang.getWithDefault("pages.checkout.allow_location_permission_blocked_hint", this.isArabic
1740
+ ? "مشاركة الموقع محجوبة لهذا المتجر في متصفحك. افتح إعدادات الموقع في المتصفح، اسمح بالوصول إلى الموقع، ثم أعد المحاولة."
1741
+ : "Location sharing is blocked for this store in your browser. Open your browser's location settings, allow location access, then try again.");
1602
1742
  }
1743
+ return Salla.lang.getWithDefault("pages.checkout.pickup_location_unavailable", this.isArabic ? "تعذَّر تحديد موقعك. حاول مرة أخرى." : "We couldn't detect your location. Try again.");
1603
1744
  }
1604
1745
  handleBranchSelect(branch) {
1605
1746
  this.selectedBranch = branch;
1606
1747
  this.allocationOutOfCoverageMessage = null;
1607
1748
  }
1749
+ toggleBranchSchedule(branchId) {
1750
+ this.expandedScheduleBranchId = this.expandedScheduleBranchId === branchId ? null : branchId;
1751
+ }
1608
1752
  /**
1609
1753
  * Restore a remembered / event-provided branch — but only one the list renders as selectable,
1610
1754
  * so a branch that has closed since it was remembered is never silently preselected (INV-1407).
1611
1755
  */
1612
- preselectBranch(branchId) {
1613
- if (branchId == null)
1756
+ async preselectBranch(branchId) {
1757
+ if (branchId == null || this.selectedBranch)
1614
1758
  return;
1615
- const branch = this.branches.find((b) => b.id === branchId);
1759
+ let branch = this.branches.find((b) => b.id === branchId);
1760
+ if (!branch && this.allBranchCities) {
1761
+ const pending = this.allBranchCities;
1762
+ const request = this.branchesRequestId;
1763
+ try {
1764
+ branch = (await pending.branches).find((b) => b.id === branchId);
1765
+ }
1766
+ catch {
1767
+ return;
1768
+ }
1769
+ if (request !== this.branchesRequestId || this.activeTab !== 'branch' || this.allBranchCities !== pending || pending.countryId !== this.selectedCountry?.id || this.selectedBranch || this.branchSearchQuery.trim())
1770
+ return;
1771
+ if (this.selectedBranchCity && String(branch?.city?.id) !== String(this.selectedBranchCity.id))
1772
+ return;
1773
+ if (branch && isBranchSelectable(branch))
1774
+ this.applyLoadedBranches([...this.branches, branch]);
1775
+ }
1616
1776
  if (branch && isBranchSelectable(branch)) {
1617
1777
  this.selectedBranch = branch;
1618
1778
  }
@@ -1873,28 +2033,63 @@ const SallaBulletDelivery = class {
1873
2033
  }
1874
2034
  /** Center shown before geolocation resolves — the customer's IP-based default (falls back to Riyadh). */
1875
2035
  get mapInitialCenter() {
2036
+ return this.defaultGeoLocation ?? DEFAULT_MAP_CENTER;
2037
+ }
2038
+ /** Device location for a branch list request, waiting at most BRANCH_LIST_LOCATION_WAIT. */
2039
+ getListLocation() {
2040
+ const location = this.getGrantedDeviceLocation();
2041
+ if (this.shopperLocation || !navigator.geolocation || !navigator.permissions?.query)
2042
+ return location;
2043
+ return Promise.race([location, new Promise((resolve) => setTimeout(() => resolve({}), BRANCH_LIST_LOCATION_WAIT))]);
2044
+ }
2045
+ /**
2046
+ * Where branch distances (`distance_km`) are measured from: the shopper's real device location
2047
+ * only. It comes from "nearest to my location", or is read silently when location permission was
2048
+ * already granted (never prompting). Empty otherwise: `user.default_geo_location` and the Riyadh
2049
+ * map fallback are not where the shopper is, so they would show wrong distances.
2050
+ */
2051
+ async getGrantedDeviceLocation() {
2052
+ if (this.shopperLocation)
2053
+ return this.shopperLocation;
2054
+ if (!navigator.geolocation || !navigator.permissions?.query)
2055
+ return {};
2056
+ const request = ++this.shopperLocationRequestId;
2057
+ try {
2058
+ const permission = await navigator.permissions.query({ name: 'geolocation' });
2059
+ if (request !== this.shopperLocationRequestId)
2060
+ return this.shopperLocation ?? {};
2061
+ if (permission.state !== 'granted')
2062
+ return {};
2063
+ const position = await new Promise((resolve, reject) => navigator.geolocation.getCurrentPosition(resolve, reject, {
2064
+ timeout: SILENT_GEOLOCATION_TIMEOUT,
2065
+ maximumAge: SILENT_GEOLOCATION_MAX_AGE,
2066
+ }));
2067
+ if (request !== this.shopperLocationRequestId)
2068
+ return this.shopperLocation ?? {};
2069
+ this.shopperLocation = { lat: position.coords.latitude, lng: position.coords.longitude };
2070
+ return this.shopperLocation;
2071
+ }
2072
+ catch {
2073
+ return {};
2074
+ }
2075
+ }
2076
+ /** The customer's IP-based `user.default_geo_location`, or null when it is missing or invalid. */
2077
+ get defaultGeoLocation() {
1876
2078
  const geo = salla.config.get('user.default_geo_location');
1877
2079
  // Coerce defensively: config may arrive as strings, blank/whitespace, NaN, or out-of-range
1878
2080
  // values. Reject blanks before coercion (Number('') === 0) and validate lat/lng ranges so we
1879
2081
  // never feed (0,0) or an invalid point to the map; otherwise fall back to the default center.
1880
- const lat = this.toCoordinate(geo?.lat);
1881
- const lng = this.toCoordinate(geo?.lng);
2082
+ const lat = toCoordinate(geo?.lat);
2083
+ const lng = toCoordinate(geo?.lng);
1882
2084
  const isValid = lat != null && lng != null &&
1883
2085
  lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180;
1884
- return isValid ? { lat, lng } : DEFAULT_MAP_CENTER;
1885
- }
1886
- /** Parse a config coordinate to a finite number, treating blank/whitespace strings as missing. */
1887
- toCoordinate(value) {
1888
- if (typeof value === 'string' && value.trim() === '')
1889
- return null;
1890
- if (value == null)
1891
- return null;
1892
- const num = Number(value);
1893
- return Number.isFinite(num) ? num : null;
2086
+ return isValid ? { lat, lng } : null;
1894
2087
  }
1895
2088
  async handleTabChange(tab) {
1896
2089
  if (this.tabChanging)
1897
2090
  return;
2091
+ ++this.branchesRequestId;
2092
+ this.loadingBranches = false;
1898
2093
  this.tabChanging = true;
1899
2094
  try {
1900
2095
  this.activeTab = tab;
@@ -1926,24 +2121,25 @@ const SallaBulletDelivery = class {
1926
2121
  this.selectedCountry = this.countries[0];
1927
2122
  }
1928
2123
  }
2124
+ if (String(previousCountryId ?? '') !== String(this.selectedCountry?.id ?? '')) {
2125
+ this.allBranchCities = null;
2126
+ this.selectedBranchCity = null;
2127
+ this.branchCities = [];
2128
+ this.branchCitySearchQuery = '';
2129
+ this.selectedBranch = null;
2130
+ this.branches = [];
2131
+ this.filteredBranches = [];
2132
+ }
1929
2133
  if (tab === "address" && this.needsMap)
1930
2134
  this.fetchAddressToken();
1931
2135
  // Load appropriate data when switching tabs if country is selected
1932
2136
  if (this.selectedCountry) {
1933
2137
  if (tab === "branch") {
1934
2138
  // Load branches when switching to branch tab
1935
- // Check session storage for lat/lng to get nearby branches
1936
2139
  const savedIntent = this.getStoredIntent();
1937
- const intentLat = getIntentLatitude(savedIntent);
1938
- const intentLng = getIntentLongitude(savedIntent);
1939
- if (intentLat != null && intentLng != null) {
1940
- await this.loadBranchesWithLocation(intentLat, intentLng);
1941
- }
1942
- else {
1943
- await this.loadBranches();
1944
- }
2140
+ await this.loadBranches();
1945
2141
  // Preselect branch from session storage if available
1946
- this.preselectBranch(getIntentBranchId(savedIntent));
2142
+ void this.preselectBranch(getIntentBranchId(savedIntent));
1947
2143
  }
1948
2144
  else if (tab === "address") {
1949
2145
  // Lazy-load saved addresses when switching to address tab (if not loaded yet).
@@ -2144,6 +2340,10 @@ const SallaBulletDelivery = class {
2144
2340
  ? { id: addr.district.id, name: addr.district.name }
2145
2341
  : undefined,
2146
2342
  short_address: addr.short_address,
2343
+ street: addr.street,
2344
+ local: addr.local,
2345
+ lat: addr.lat,
2346
+ lng: addr.lng,
2147
2347
  };
2148
2348
  }
2149
2349
  buildIntentBranch() {
@@ -2447,10 +2647,17 @@ const SallaBulletDelivery = class {
2447
2647
  (this.activeTab === "address"
2448
2648
  ? Salla.lang.get("pages.checkout.address_out_of_coverage")
2449
2649
  : Salla.lang.get("pages.checkout.failed_to_set_pickup"));
2450
- this.allocationOutOfCoverageMessage = `${errorMessage}.`;
2650
+ this.allocationOutOfCoverageMessage = /[.!؟?]$/.test(errorMessage.trim()) ? errorMessage : `${errorMessage}.`;
2451
2651
  this.trackSelectorResult("failed", previousIntent, []);
2452
2652
  this.confirmBtn?.stop();
2453
2653
  this.confirming = false;
2654
+ // A rejected branch may have turned busy or closed: drop it (the reload may hide it) and
2655
+ // reload so the list shows its current state.
2656
+ if (this.activeTab === "branch") {
2657
+ this.selectedBranch = null;
2658
+ clearApiCache();
2659
+ void this.loadBranches();
2660
+ }
2454
2661
  return;
2455
2662
  }
2456
2663
  // Process successful allocation response
@@ -2616,6 +2823,19 @@ const SallaBulletDelivery = class {
2616
2823
  wrapper.append(info, btn);
2617
2824
  return wrapper;
2618
2825
  }
2826
+ /**
2827
+ * A branch pickup offer (INV-1416) replaces the default "save delivery fees" badge; only one shows,
2828
+ * and neither until the offer lookup settles.
2829
+ */
2830
+ renderPickupTabBadge() {
2831
+ if (!this.pickupDiscountResolved)
2832
+ return null;
2833
+ const range = this.pickupDiscountRange;
2834
+ if (range) {
2835
+ return (h("span", { class: "s-bullet-delivery-tab-badge s-bullet-delivery-discount-badge", dir: this.isArabic ? 'rtl' : 'ltr', innerHTML: this.getPickupDiscountLabel(range.type, range.min, range.max) }));
2836
+ }
2837
+ return (h("span", { class: "s-bullet-delivery-tab-badge" }, h("span", { class: "s-bullet-delivery-tab-badge-icon", innerHTML: LightningIcon, "aria-hidden": "true" }), Salla.lang.getWithDefault("pages.checkout.save_delivery_fees", "وفّر رسوم التوصيل")));
2838
+ }
2619
2839
  renderTabs() {
2620
2840
  // Show tabs only when pickup is supported; otherwise delivery-only view with no tabs.
2621
2841
  // The pickup tab is gated by this same `supportsPickup` check, while the delivery
@@ -2625,10 +2845,10 @@ const SallaBulletDelivery = class {
2625
2845
  return (h("div", { class: "s-bullet-delivery-tabs" }, this.isSupportsDelivery && (h("button", { type: "button", class: {
2626
2846
  "s-bullet-delivery-tab": true,
2627
2847
  "s-bullet-delivery-tab--active": this.activeTab === "address",
2628
- }, onClick: () => this.handleTabChange("address") }, h("span", { class: "s-bullet-delivery-tab-icon", innerHTML: Location, "aria-hidden": "true" }), h("span", null, Salla.lang.get("mobile_app.strings.delivery")))), h("button", { type: "button", class: {
2848
+ }, onClick: () => this.handleTabChange("address") }, h("span", null, Salla.lang.get("mobile_app.strings.delivery")))), h("button", { type: "button", class: {
2629
2849
  "s-bullet-delivery-tab": true,
2630
2850
  "s-bullet-delivery-tab--active": this.activeTab === "branch",
2631
- }, onClick: () => this.handleTabChange("branch") }, h("span", { class: "s-bullet-delivery-tab-icon", innerHTML: Store, "aria-hidden": "true" }), h("span", null, Salla.lang.get("mobile_app.strings.pickup")))));
2851
+ }, onClick: () => this.handleTabChange("branch") }, h("span", null, Salla.lang.get("mobile_app.strings.pickup")), this.renderPickupTabBadge())));
2632
2852
  }
2633
2853
  renderAlert(message) {
2634
2854
  return (h("div", { class: "s-bullet-delivery-allocation-out-of-coverage", role: "alert" }, h("span", { class: "s-bullet-delivery-allocation-out-of-coverage-icon", "aria-hidden": "true" }, h("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", role: "img", "aria-hidden": "true" }, h("title", null, "Information"), h("circle", { cx: "10", cy: "10", r: "9", stroke: "currentColor", "stroke-width": "1.5", fill: "currentColor" }), h("text", { x: "10", y: "14", "text-anchor": "middle", fill: "white", "font-size": "12", "font-weight": "bold" }, "i"))), h("span", { class: "s-bullet-delivery-allocation-out-of-coverage-text", style: { textAlign: this.isRTL ? 'right' : 'left' } }, message)));
@@ -2652,8 +2872,9 @@ const SallaBulletDelivery = class {
2652
2872
  }
2653
2873
  return this.renderAlert(`${message} ${Salla.lang.getWithDefault('pages.cart.choose_another_address', 'Choose another address')}`);
2654
2874
  }
2655
- renderCountrySelect() {
2656
- return (h("div", { class: "s-bullet-delivery-field" }, h("salla-searchable-dropdown", { label: Salla.lang.get("blocks.buy_as_gift.receiver_country"), placeholder: Salla.lang.get("pages.checkout.select_country"), items: this.displayedCountries, selectedItem: this.selectedCountry, loading: this.loadingCountries, searching: this.searchingCountries, disabled: this.countries.length <= 1, required: true, inputId: "bullet-delivery-country", searchQuery: this.countrySearchQuery, clientSearch: true, onItemSelected: (e) => this.handleCountrySelected(e.detail), onSearchInput: (e) => this.handleCountrySearch(e.detail), onDropdownClosed: () => this.handleCountryDropdownClosed() })));
2875
+ /** `showLabel` is off in the pickup filter panel, where the selects sit label-less side by side. */
2876
+ renderCountrySelect(showLabel = true) {
2877
+ return (h("div", { class: "s-bullet-delivery-field" }, h("salla-searchable-dropdown", { label: showLabel ? Salla.lang.get("blocks.buy_as_gift.receiver_country") : undefined, placeholder: Salla.lang.get("pages.checkout.select_country"), items: this.displayedCountries, selectedItem: this.selectedCountry, loading: this.loadingCountries, searching: this.searchingCountries, disabled: this.countries.length <= 1, required: true, inputId: "bullet-delivery-country", searchQuery: this.countrySearchQuery, clientSearch: true, onItemSelected: (e) => this.handleCountrySelected(e.detail), onSearchInput: (e) => this.handleCountrySearch(e.detail), onDropdownClosed: () => this.handleCountryDropdownClosed() })));
2657
2878
  }
2658
2879
  /** Region select (SA only): shown when SA is selected; city and district disabled until region selected. */
2659
2880
  renderRegionSelect() {
@@ -2898,66 +3119,146 @@ const SallaBulletDelivery = class {
2898
3119
  return (h("form", { onSubmit: handleSubmit }, this.renderGuestDeliveryForm(), h("div", { class: "s-bullet-delivery-form-actions s-bullet-delivery-form-actions--single", style: { padding: '24px' } }, h("salla-button", { type: "submit", loading: this.confirming, disabled: !canSubmit || this.confirming, width: "wide" }, submitLabel), !this.isLoggedIn && (h("button", { type: "button", class: "s-bullet-delivery-login-prompt", onClick: () => this.handleLogin() }, Salla.lang.get('pages.checkout.login_to_use_saved_addresses'))))));
2899
3120
  }
2900
3121
  renderBranchSearch() {
2901
- return (h("div", { class: "s-bullet-delivery-branch-search" }, h("div", { class: "s-bullet-delivery-search-row" }, h("div", { class: "s-bullet-delivery-search s-bullet-delivery-branch-search-wrap" }, h("span", { class: "s-bullet-delivery-search-icon s-bullet-delivery-branch-search-icon", innerHTML: Search, "aria-hidden": "true" }), h("input", { type: "text", class: "s-bullet-delivery-branch-search-input form-input", placeholder: Salla.lang.get("pages.checkout.search_for_city_or_branch"), value: this.branchSearchQuery, onInput: (e) => this.handleBranchSearch(e), autocomplete: "off" })), h("button", { type: "button", class: {
3122
+ return (h("div", { class: "s-bullet-delivery-branch-search" }, h("div", { class: "s-bullet-delivery-search-row" }, h("div", { class: "s-bullet-delivery-search s-bullet-delivery-branch-search-wrap" }, h("span", { class: "s-bullet-delivery-search-icon s-bullet-delivery-branch-search-icon", innerHTML: Search, "aria-hidden": "true" }), h("input", { type: "text", class: "s-bullet-delivery-branch-search-input form-input", placeholder: Salla.lang.getWithDefault("pages.checkout.search_for_country_city_or_branch", this.isArabic ? "ابحث عن دولة أو مدينة أو فرع" : "Search for a country, city or branch"), value: this.branchSearchQuery, onInput: (e) => this.handleBranchSearch(e), autocomplete: "off" })), h("button", { type: "button", class: {
2902
3123
  "s-bullet-delivery-location-btn": true,
2903
3124
  "s-bullet-delivery-location-btn--full": true,
2904
3125
  "s-bullet-delivery-location-btn--loading": this.loadingNearestBranch,
2905
- }, onClick: () => this.handleFindNearestBranch(), disabled: this.loadingNearestBranch }, this.loadingNearestBranch ? (h("span", { class: "s-bullet-delivery-location-icon", "aria-hidden": "true" }, h("salla-skeleton", { height: "18px", width: "18px" }))) : (h("span", { class: "s-bullet-delivery-location-icon", innerHTML: GPS, "aria-hidden": "true" })), h("span", null, Salla.lang.get("pages.checkout.nearest_to_my_location")))), this.locationError && this.activeTab === "branch" && (h("span", { class: "s-bullet-delivery-error" }, this.locationError))));
2906
- }
2907
- /** Renders a branch's `preparation_time_range` as a localized "from - to <unit>" label. */
2908
- getPreparationTimeLabel(range) {
2909
- if (!range)
2910
- return null;
2911
- const unitKeys = {
2912
- hour: 'pages.checkout.preparation_time_hours',
2913
- minute: 'pages.checkout.preparation_time_minutes',
2914
- day: 'pages.checkout.preparation_time_days',
2915
- };
2916
- const key = unitKeys[range.from.unit];
2917
- if (!key)
2918
- return null;
2919
- return Salla.lang
2920
- .getWithDefault(key, 'من {from} إلى {to} دقائق')
2921
- ?.replace('{from}', String(range.from.value))
2922
- ?.replace('{to}', String(range.to.value));
3126
+ }, onClick: () => this.handleFindNearestBranch(), disabled: this.loadingNearestBranch, "aria-label": Salla.lang.get("pages.checkout.nearest_to_my_location") }, this.loadingNearestBranch ? (h("span", { class: "s-bullet-delivery-location-icon", "aria-hidden": "true" }, h("salla-skeleton", { height: "16px", width: "16px" }))) : (h("span", { class: "s-bullet-delivery-location-icon", innerHTML: Location, "aria-hidden": "true" })), h("span", { class: "s-bullet-delivery-location-label" }, Salla.lang.get("pages.checkout.nearest_to_my_location")))), this.locationError && this.activeTab === "branch" && (h("span", { class: "s-bullet-delivery-error" }, this.locationError))));
2923
3127
  }
2924
3128
  renderBranchList() {
2925
3129
  if (this.loadingBranches) {
2926
3130
  return (h("div", { class: "s-bullet-delivery-branches-wrap" }, h("div", { class: "s-bullet-delivery-branches-loading" }, [1, 2, 3, 4].map((v) => (h("div", { key: v, class: "s-bullet-delivery-branch-skeleton" }, h("salla-skeleton", { class: "s-bullet-delivery-branch-skeleton-radio", type: "circle", height: "16px", width: "16px" }), h("div", { class: "s-bullet-delivery-branch-skeleton-icon" }, h("salla-skeleton", { height: "34px", width: "34px" })), h("div", { class: "s-bullet-delivery-branch-skeleton-content" }, h("salla-skeleton", { class: "s-bullet-delivery-branch-skeleton-title", height: "12px", width: "124px" })), h("salla-skeleton", { class: "s-bullet-delivery-branch-skeleton-time", height: "12px", width: "88px" }), h("div", { class: "s-bullet-delivery-branch-skeleton-map" }, h("salla-skeleton", { height: "32px", width: "32px" }))))))));
2927
3131
  }
2928
- if (this.filteredBranches.length === 0) {
3132
+ const branches = this.filteredBranches.filter(isBranchVisible);
3133
+ if (branches.length === 0) {
2929
3134
  return (h("salla-placeholder", { alignment: "center", class: "s-bullet-delivery-placeholder" }, h("span", { slot: "title" }, Salla.lang.get("pages.checkout.no_pickup_branches_found"))));
2930
3135
  }
2931
- return (h("div", { class: "s-bullet-delivery-branches-wrap" }, h("ul", { class: "s-bullet-delivery-branches-list s-scrollbar" }, this.filteredBranches.map(branch => {
3136
+ return (h("div", { class: "s-bullet-delivery-branches-wrap" }, h("ul", { class: "s-bullet-delivery-branches-list s-scrollbar", role: "listbox" }, branches.map(branch => {
2932
3137
  const selectable = isBranchSelectable(branch);
2933
- const readiness = branch?.pickup_readiness;
3138
+ const isSelected = this.selectedBranch?.id === branch.id;
2934
3139
  const locationText = [branch.country?.name, branch.city?.name, branch.district?.name]
2935
3140
  .filter(Boolean)
2936
- .join(', ');
2937
- const preparationTimeLabel = this.getPreparationTimeLabel(branch.preparation_time_range);
3141
+ .join('، ');
3142
+ const distance = formatBranchDistance(branch.distance_km);
3143
+ // Closed but taking orders: the opening-time readiness replaces the range.
3144
+ const readinessLabel = getBranchReadinessLabel(branch) ?? this.getReadyTodayLabel(branch);
3145
+ const preparationLabel = readinessLabel ? null : this.getPreparationShortLabel(branch.preparation_time_range);
3146
+ const scheduleGroups = groupBranchSchedule(getBranchWeekSchedule(branch));
3147
+ // An always-open branch has no hours worth listing, so it gets no working-hours dropdown.
3148
+ const hasSchedule = scheduleGroups.length > 0 && !isBranchAlwaysOpen(branch);
3149
+ const scheduleOpen = hasSchedule && this.expandedScheduleBranchId === branch.id;
3150
+ const phoneHref = getBranchPhoneHref(branch);
3151
+ const whatsappHref = getBranchWhatsappHref(branch);
3152
+ const directionsHref = getBranchDirectionsHref(branch);
3153
+ const discount = getBranchDiscount(branch);
2938
3154
  return (h("li", { key: branch.id, class: {
2939
3155
  's-bullet-delivery-branch-item': true,
2940
- 's-bullet-delivery-branch-item--selected': this.selectedBranch?.id === branch.id,
3156
+ 's-bullet-delivery-branch-item--selected': isSelected,
2941
3157
  's-bullet-delivery-branch-item--disabled': !selectable,
2942
- }, tabIndex: selectable ? 0 : -1, role: "option", "aria-disabled": !selectable, onClick: () => selectable && this.handleBranchSelect(branch), onKeyDown: e => {
3158
+ }, tabIndex: selectable ? 0 : -1, role: "option", "aria-selected": isSelected, "aria-disabled": !selectable, onClick: () => selectable && this.handleBranchSelect(branch), onKeyDown: e => {
3159
+ if (e.target !== e.currentTarget)
3160
+ return;
2943
3161
  if (e.key === 'Enter' || e.key === ' ') {
2944
3162
  e.preventDefault();
2945
3163
  if (selectable)
2946
3164
  this.handleBranchSelect(branch);
2947
3165
  }
2948
- } }, h("input", { type: "radio", name: "branch", class: "s-bullet-delivery-radio", checked: this.selectedBranch?.id === branch.id, disabled: !selectable }), h("span", { class: "s-bullet-delivery-branch-icon", "aria-hidden": "true" }, h("span", { innerHTML: Store })), h("div", { class: "flex flex-col" }, h("div", { class: "flex items-center gap-1 mb-1" }, h("p", { class: "s-bullet-delivery-branch-name text-start" }, branch.name), readiness?.label && (h("p", { class: `branch-status-badge${readiness.color ? ` ${readiness.color}` : ''}` }, readiness.label))), locationText ? (h("span", { class: "s-bullet-delivery-branch-prep", style: { fontSize: '0.8rem', lineHeight: '1.1rem', textAlign: this.isRTL ? 'right' : 'left' } }, h("i", { class: "sicon-location" }), "\u00A0", h("span", { class: "first-letter-cap" }, locationText))) : null, preparationTimeLabel ? (h("span", { class: "s-bullet-delivery-branch-prep", style: { fontSize: '0.8rem', lineHeight: '1.1rem', textAlign: this.isRTL ? 'right' : 'left' } }, h("i", { class: "sicon-clock" }), "\u00A0", h("span", { class: "first-letter-cap" }, Salla.lang.get('pages.checkout.pickup_duration'), ": ", preparationTimeLabel))) : null, readiness?.detail_line && (h("span", { class: "s-bullet-delivery-branch-prep", style: { fontSize: '0.8rem', lineHeight: '1.1rem', textAlign: this.isRTL ? 'right' : 'left' } }, h("i", { class: "sicon-store" }), "\u00A0", readiness.detail_line))), h("div", { style: {
2949
- width: 'full',
2950
- maxWidth: '50px',
2951
- marginInlineStart: 'auto',
2952
- } }, branch.location?.lat != null && branch.location?.lng != null && (h("a", { href: `https://www.google.com/maps?q=${branch.location.lat},${branch.location.lng}`, target: "_blank", rel: "noopener noreferrer", class: "s-bullet-delivery-branch-map-link", title: Salla.lang.get('common.elements.open_in_google_maps'), onClick: e => e.stopPropagation() }, h("span", { class: "s-bullet-delivery-branch-map-link-icon", innerHTML: GetDirections.replace(/mask0_25437_34440/g, `mask0_branch_${branch.id}`), "aria-hidden": "true" }), h("span", { class: "sr-only" }, Salla.lang.get('common.elements.open_in_google_maps')))))));
3166
+ } }, h("input", { type: "radio", name: "branch", class: "s-bullet-delivery-radio s-bullet-delivery-branch-radio", checked: isSelected, disabled: !selectable, tabIndex: -1 }), h("div", { class: "s-bullet-delivery-branch-body" }, h("p", { class: "s-bullet-delivery-branch-name" }, h("span", null, branch.name), discount ? (h("span", { class: "s-bullet-delivery-discount-badge", dir: this.isArabic ? 'rtl' : 'ltr', innerHTML: this.getPickupDiscountLabel(discount.type, discount.amount) })) : null), locationText ? (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-location" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: BranchLocationIcon, "aria-hidden": "true" }), h("span", null, locationText))) : null, isSelected && branch.pickup_instructions ? (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-instructions" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: NotesIcon, "aria-hidden": "true" }), h("span", null, branch.pickup_instructions))) : null, h("div", { class: "s-bullet-delivery-branch-meta-row" }, distance || readinessLabel || preparationLabel ? (h("div", { class: "s-bullet-delivery-branch-pills" }, distance ? (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-pill s-bullet-delivery-branch-distance" }, h("i", { class: "sicon-location" }), h("span", null, this.renderDistanceLabel(distance)))) : null, readinessLabel ? (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-pill s-bullet-delivery-branch-prep" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: PickupAvailabilityIcon, "aria-hidden": "true" }), h("span", { class: "s-bullet-delivery-branch-meta-value" }, readinessLabel))) : preparationLabel ? (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-pill s-bullet-delivery-branch-prep" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: PickupAvailabilityIcon, "aria-hidden": "true" }), h("span", null, h("span", { class: "s-bullet-delivery-branch-meta-label" }, Salla.lang.getWithDefault('pages.checkout.pickup_branch_ready_in', 'Pickup available after:'), ' '), h("span", { class: "s-bullet-delivery-branch-meta-value" }, preparationLabel)))) : null)) : null, h("hr", { class: "s-bullet-delivery-branch-divider" }), this.renderBranchOpenStatus(branch, hasSchedule, scheduleOpen)), scheduleOpen && (h("div", { class: "s-bullet-delivery-branch-schedule" }, scheduleGroups.map((group, index) => (h("div", { key: index, class: "s-bullet-delivery-branch-schedule-day" }, h("span", { class: "s-bullet-delivery-branch-schedule-days" }, group.days.length > 1
3167
+ ? `${group.days[0]} - ${group.days[group.days.length - 1]}`
3168
+ : group.days[0]), h("span", { class: "s-bullet-delivery-branch-schedule-times" }, group.times
3169
+ .map(t => `${this.formatClock(t.start)} - ${this.formatClock(t.end)}`)
3170
+ .join(this.isArabic ? '، ' : ', ')))))))), h("div", { class: "s-bullet-delivery-branch-actions" }, phoneHref && (h("a", { href: phoneHref, class: "s-bullet-delivery-branch-action", title: Salla.lang.getWithDefault('pages.checkout.branch_call', 'اتصال'), onClick: e => e.stopPropagation() }, h("i", { class: "sicon-phone" }))), whatsappHref && (h("a", { href: whatsappHref, target: "_blank", rel: "noopener noreferrer", class: "s-bullet-delivery-branch-action", title: Salla.lang.getWithDefault('pages.checkout.branch_whatsapp', 'واتساب'), onClick: e => e.stopPropagation() }, h("i", { class: "sicon-whatsapp2" }))), directionsHref && (h("a", { href: directionsHref, target: "_blank", rel: "noopener noreferrer", class: "s-bullet-delivery-branch-action s-bullet-delivery-branch-map-link", title: Salla.lang.get('common.elements.open_in_google_maps'), onClick: e => e.stopPropagation() }, h("span", { class: "s-bullet-delivery-branch-map-link-icon", innerHTML: GetDirections.replace(/mask0_25437_34440/g, `mask0_branch_${branch.id}`), "aria-hidden": "true" }), h("span", { class: "sr-only" }, Salla.lang.get('common.elements.open_in_google_maps')))))));
2953
3171
  }))));
2954
3172
  }
3173
+ /** "يبعد عنك: ~" stays muted; the distance and its unit read as the value, as in checkout. */
3174
+ renderDistanceLabel(distance) {
3175
+ const template = Salla.lang.getWithDefault('pages.checkout.branch_distance_from_you', 'يبعد عنك: ~ {distance} كم');
3176
+ const index = template.indexOf('{distance}');
3177
+ if (index === -1)
3178
+ return template;
3179
+ return [
3180
+ h("span", { class: "s-bullet-delivery-branch-meta-label" }, template.slice(0, index)),
3181
+ h("span", { class: "s-bullet-delivery-branch-meta-value" }, template.slice(index).replace('{distance}', distance)),
3182
+ ];
3183
+ }
3184
+ get isArabic() {
3185
+ return (Salla.lang.getLocale?.() ?? document.documentElement.lang) === 'ar';
3186
+ }
3187
+ formatClock(time) {
3188
+ return formatBranchClockTime(time, this.isArabic ? 'ar' : 'en');
3189
+ }
3190
+ /** "جاهز اليوم 10:00 ص" for a branch that is closed now and opens later today. */
3191
+ getReadyTodayLabel(branch) {
3192
+ const time = getBranchReadyTodayTime(branch);
3193
+ return time
3194
+ ? `${Salla.lang.getWithDefault('pages.checkout.pickup_branch_ready_today_at', 'جاهز اليوم')} ${this.formatClock(time)}`
3195
+ : null;
3196
+ }
3197
+ /** "15-30 د" — compact preparation range for the card's meta row. */
3198
+ getPreparationShortLabel(range) {
3199
+ if (!range?.from || !range?.to)
3200
+ return null;
3201
+ const unitKeys = {
3202
+ minute: ['pages.checkout.preparation_time_minute_short', 'د'],
3203
+ hour: ['pages.checkout.preparation_time_hour_short', 'س'],
3204
+ day: ['pages.checkout.preparation_time_day_short', 'يوم'],
3205
+ };
3206
+ const unit = (u) => (unitKeys[u] ? Salla.lang.getWithDefault(unitKeys[u][0], unitKeys[u][1]) : null);
3207
+ const fromUnit = unit(range.from.unit);
3208
+ const toUnit = unit(range.to.unit);
3209
+ if (!fromUnit || !toUnit)
3210
+ return null;
3211
+ return range.from.unit === range.to.unit
3212
+ ? `${range.from.value}-${range.to.value} ${toUnit}`
3213
+ : `${range.from.value} ${fromUnit} - ${range.to.value} ${toUnit}`;
3214
+ }
3215
+ /**
3216
+ * Busy, always-open, or the backend's `open_status_line` ("مفتوح - يغلق عند 11:00 م"), which reads
3217
+ * the hours on the branch's clock. Without that line, `is_open` gives a bare open/closed label.
3218
+ */
3219
+ renderBranchOpenStatus(branch, hasSchedule, scheduleOpen) {
3220
+ const toggle = hasSchedule && (h("button", { type: "button", class: "s-bullet-delivery-branch-schedule-toggle", "aria-expanded": scheduleOpen ? 'true' : 'false', "aria-label": Salla.lang.getWithDefault('pages.checkout.pickup_show_weekly_hours', 'عرض ساعات العمل الأسبوعية'), onClick: e => {
3221
+ e.stopPropagation();
3222
+ this.toggleBranchSchedule(branch.id);
3223
+ } }, h("i", { class: { 'sicon-keyboard_arrow_down': true, 'is-expanded': scheduleOpen } })));
3224
+ if (isBranchBusy(branch)) {
3225
+ return (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-open-status" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: WorkingHoursIcon, "aria-hidden": "true" }), h("span", { class: "s-bullet-delivery-pickup-status--busy" }, Salla.lang.getWithDefault('pages.checkout.pickup_branch_busy', 'مشغول، لا يستقبل طلبات')), toggle));
3226
+ }
3227
+ const alwaysOpen = isBranchAlwaysOpen(branch);
3228
+ const line = branch.pickup_readiness?.open_status_line;
3229
+ if (!alwaysOpen && line) {
3230
+ return (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-open-status" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: WorkingHoursIcon, "aria-hidden": "true" }), h("span", null, line), toggle));
3231
+ }
3232
+ if (!alwaysOpen && !hasSchedule)
3233
+ return null;
3234
+ if (!alwaysOpen && typeof branch.is_open !== 'boolean') {
3235
+ return h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-open-status" }, toggle);
3236
+ }
3237
+ const isOpen = alwaysOpen || branch.is_open;
3238
+ const label = alwaysOpen
3239
+ ? Salla.lang.getWithDefault('pages.checkout.pickup_branch_always_open', 'مفتوح دائمًا 24/7')
3240
+ : isOpen
3241
+ ? Salla.lang.getWithDefault('pages.checkout.pickup_branch_open', 'مفتوح')
3242
+ : Salla.lang.getWithDefault('pages.checkout.pickup_branch_closed', 'مغلق');
3243
+ return (h("span", { class: "s-bullet-delivery-branch-meta s-bullet-delivery-branch-open-status" }, h("span", { class: "s-bullet-delivery-branch-meta-icon", innerHTML: WorkingHoursIcon, "aria-hidden": "true" }), h("span", { class: isOpen ? 's-bullet-delivery-pickup-status--open' : 's-bullet-delivery-pickup-status--closed' }, label), toggle));
3244
+ }
2955
3245
  renderPickupTab() {
2956
3246
  return (h("div", { class: {
2957
3247
  "s-bullet-delivery-content": true,
2958
3248
  "s-bullet-delivery-content--active": this.activeTab === "branch",
2959
3249
  "s-hidden": this.activeTab !== "branch",
2960
- } }, this.renderCountrySelect(), this.renderBranchSearch(), this.renderBranchList()));
3250
+ } }, h("div", { class: "s-bullet-delivery-pickup-filters" }, h("div", { class: "s-bullet-delivery-pickup-filters-row" }, this.renderCountrySelect(false), this.renderBranchCitySelect()), this.renderBranchSearch()), this.renderBranchList()));
3251
+ }
3252
+ /** City filter for the pickup list; options come from the branches themselves, so none is empty. */
3253
+ renderBranchCitySelect() {
3254
+ return (h("div", { class: "s-bullet-delivery-field" }, h("salla-searchable-dropdown", { placeholder: Salla.lang.get("pages.checkout.select_city"), items: [{ id: -1, name: Salla.lang.getWithDefault('pages.checkout.all_cities', this.isArabic ? 'كل المدن' : 'All cities') }, ...this.branchCities], selectedItem: this.selectedBranchCity, loading: this.loadingBranches && this.branchCities.length === 0, disabled: this.branchCities.length === 0 && !this.selectedBranchCity, inputId: "bullet-delivery-branch-city", searchQuery: this.branchCitySearchQuery, clientSearch: true, onItemSelected: (e) => {
3255
+ this.branchCitySearchQuery = '';
3256
+ this.handleBranchCitySelected(e.detail);
3257
+ }, onSearchInput: (e) => {
3258
+ this.branchCitySearchQuery = e.detail;
3259
+ }, onDropdownClosed: () => {
3260
+ this.branchCitySearchQuery = '';
3261
+ } })));
2961
3262
  }
2962
3263
  /** Add-address form: map + confirm card in one screen, or dropdown fallback. */
2963
3264
  renderAddAddressForm() {
@@ -2999,7 +3300,7 @@ const SallaBulletDelivery = class {
2999
3300
  return (h("div", { class: "s-bullet-delivery-footer" }, h("salla-button", { ref: (btn) => {
3000
3301
  this.confirmBtn = btn;
3001
3302
  }, disabled: this.isConfirmDisabled(), onClick: () => this.handleConfirm(), "loader-position": "center", width: "wide" }, this.activeTab === "branch"
3002
- ? Salla.lang.get("pages.checkout.confirm_receipt_from_the_branch")
3303
+ ? Salla.lang.getWithDefault("pages.checkout.confirm_receipt_from_the_branch", "تأكيد الإستلام من الفرع")
3003
3304
  : Salla.lang.get("pages.checkout.confirm_address")), showAddAddressInFooter && (h("salla-button", { onClick: () => this.handleAddNewAddress(), width: "wide", shape: "link" }, Salla.lang.get("pages.checkout.add_new_address"))), !this.isLoggedIn && (h("salla-button", { shape: "link", onClick: () => this.handleLogin() }, Salla.lang.get("pages.checkout.login_to_use_saved_addresses")))));
3004
3305
  }
3005
3306
  renderMainView() {
@@ -3185,7 +3486,7 @@ const SallaBulletDelivery = class {
3185
3486
  this.handleModalVisibility(Boolean(event.detail));
3186
3487
  }, class: "s-bullet-delivery-modal", width: "sm", "data-testid": "salla-bullet-delivery-modal" }, h("div", { class: "s-bullet-delivery-inner" }, h("div", { class: "s-bullet-delivery-header" }, h("h2", { class: "s-bullet-delivery-title" }, this.activeTab === 'address'
3187
3488
  ? Salla.lang.get('blocks.home.add_address_for_order_delivery')
3188
- : Salla.lang.get('blocks.home.choose_branch_for_order_pickup')), h("p", { class: "s-bullet-delivery-subtitle" }, this.activeTab === 'address'
3489
+ : Salla.lang.getWithDefault('blocks.home.choose_pickup_branch_title', this.isArabic ? 'اختر فرع استلام طلبك' : 'Choose your pickup branch')), h("p", { class: "s-bullet-delivery-subtitle" }, this.activeTab === 'address'
3189
3490
  ? Salla.lang.get('blocks.home.products_available_for_delivery_shown_while_shopping')
3190
3491
  : Salla.lang.get('blocks.home.choose_branch_for_order_pickup_description'))), this.renderTabs(), this.viewMode === 'main' && this.renderMainView(), this.viewMode === 'add-address' && this.renderAddAddressForm()))));
3191
3492
  }
@@ -3585,18 +3886,18 @@ const SallaSearchableDropdown = class {
3585
3886
  render() {
3586
3887
  const hasSelection = this.selectedItem != null;
3587
3888
  const listboxId = `${this.inputId}-listbox`;
3588
- return (h(Host, { key: 'eadd6ff762e66bc3458d19f7d2490da939a268d0', class: "s-searchable-dropdown" }, h("div", { key: '0cb614d73e06626c0cd3b5e5eadc76ebfc296093', class: { 's-searchable-dropdown': true, 's-searchable-dropdown--open': this.isOpen } }, this.label && (h("label", { key: '6f3c440ccad07f3ab271f85f508ddf6294464947', class: "s-searchable-dropdown-label", htmlFor: this.inputId }, this.label, this.required && h("span", { key: '9415e3b6b87e702079c2fc810aa7621e623e5641', class: "s-searchable-dropdown-required" }, " *"))), h("div", { key: '7ed8979005ef68e40976a536ead5da4c736bb0ba', class: {
3889
+ return (h(Host, { key: '02d11f844c06912b4743b820af6cee7c34b77f17', class: "s-searchable-dropdown" }, h("div", { key: 'e2fde5235f96206861dec5c94397a48061a2b59d', class: { 's-searchable-dropdown': true, 's-searchable-dropdown--open': this.isOpen } }, this.label && (h("label", { key: '22d43eb76b9d9b7e28be0a02e799e200499bb2d5', class: "s-searchable-dropdown-label", htmlFor: this.inputId }, this.label, this.required && h("span", { key: 'a139791c05d1b494776f538deafebbf41a2d4eee', class: "s-searchable-dropdown-required" }, " *"))), h("div", { key: '7361971a854f54206f30f61a13bce53c19b4dd54', class: {
3589
3890
  's-searchable-dropdown-trigger': true,
3590
3891
  's-searchable-dropdown-trigger--disabled': this.disabled || this.loading,
3591
3892
  's-searchable-dropdown-trigger--open': this.isOpen,
3592
- }, role: "combobox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-controls": listboxId, "aria-disabled": this.disabled || this.loading ? 'true' : 'false', tabIndex: this.disabled || this.loading ? -1 : 0, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, hasSelection ? (h("span", { class: "s-searchable-dropdown-trigger-text" }, this.getDisplayName(this.selectedItem))) : (h("span", { class: "s-searchable-dropdown-trigger-placeholder" }, this.placeholder)), h("i", { key: '7df0a517cb916ad6652544c1b738c569ab2f290f', class: {
3893
+ }, role: "combobox", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-haspopup": "listbox", "aria-controls": listboxId, "aria-disabled": this.disabled || this.loading ? 'true' : 'false', tabIndex: this.disabled || this.loading ? -1 : 0, onClick: this.handleTriggerClick, onKeyDown: this.handleTriggerKeyDown }, hasSelection ? (h("span", { class: "s-searchable-dropdown-trigger-text" }, this.getDisplayName(this.selectedItem))) : (h("span", { class: "s-searchable-dropdown-trigger-placeholder" }, this.placeholder)), h("i", { key: '11a8d6d198eceaff33c83167db1672709da6a334', class: {
3593
3894
  'sicon-keyboard_arrow_down': true,
3594
3895
  's-searchable-dropdown-trigger-icon': true,
3595
3896
  's-searchable-dropdown-trigger-icon--open': this.isOpen,
3596
- }, "aria-hidden": "true" })), this.isOpen && (h("div", { key: '797dea9a0b0a26402132f5d33c49b74cde5f617d', class: {
3897
+ }, "aria-hidden": "true" })), this.isOpen && (h("div", { key: 'b1f95c4129297cb880edefdae7dd0ee55d0db89f', class: {
3597
3898
  's-searchable-dropdown-panel': true,
3598
3899
  's-searchable-dropdown-panel--up': this.dropUp,
3599
- }, ref: (el) => (this.panelRef = el) }, this.searchable && (h("div", { key: 'e7b7ec94dbc99ac40a1f833b7aa61c5d2a8742b7', class: "s-searchable-dropdown-search-wrap" }, h("i", { key: '59fc0e1986726f99639688c18bc6c501fae966b4', class: "sicon-search s-searchable-dropdown-search-icon", "aria-hidden": "true" }), h("input", { key: '70a63f4297d7f1f204d95336cc6aaea28d8f14e1', ref: (el) => (this.searchInputRef = el), id: this.inputId, type: "text", class: "s-searchable-dropdown-search-input", placeholder: this.placeholder, value: this.clientSearch ? this.clientSearchQuery : this.searchQuery, onInput: this.handleSearchInputChange, onKeyDown: this.handleSearchKeyDown, autocomplete: "off", "aria-autocomplete": "list", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-controls": listboxId }))), h("div", { key: 'f998cc8115062d98befdb814cba0a282c491ef4e', id: listboxId, class: "s-searchable-dropdown-list s-scrollbar", role: "listbox" }, this.renderListContent()))))));
3900
+ }, ref: (el) => (this.panelRef = el) }, this.searchable && (h("div", { key: '538366b1f478b758697a6163449f02a844046c24', class: "s-searchable-dropdown-search-wrap" }, h("i", { key: 'd4645a414866d20b37567b0edf7cc063c0783b0e', class: "sicon-search s-searchable-dropdown-search-icon", "aria-hidden": "true" }), h("input", { key: '9a1a0e9146fa1e5a2c391b75c82b8fe795207118', ref: (el) => (this.searchInputRef = el), id: this.inputId, type: "text", class: "s-searchable-dropdown-search-input", placeholder: this.placeholder, value: this.clientSearch ? this.clientSearchQuery : this.searchQuery, onInput: this.handleSearchInputChange, onKeyDown: this.handleSearchKeyDown, autocomplete: "off", "aria-autocomplete": "list", "aria-expanded": this.isOpen ? 'true' : 'false', "aria-controls": listboxId }))), h("div", { key: 'c233695fd26f7c743af2a330c149a02171e108da', id: listboxId, class: "s-searchable-dropdown-list s-scrollbar", role: "listbox" }, this.renderListContent()))))));
3600
3901
  }
3601
3902
  renderListContent() {
3602
3903
  if (this.searching || this.loading) {