@hanzo/commerce 7.3.10 → 7.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/LICENSE.md +21 -0
  3. package/billing.ts +2 -0
  4. package/client.ts +325 -0
  5. package/components/cart/cart-panel/promo-code.tsx +1 -1
  6. package/components/checkout/payment-step-form/index.tsx +2 -2
  7. package/components/checkout/shipping-step-form.tsx +1 -1
  8. package/dist/billing.d.ts +2 -0
  9. package/dist/billing.js +3 -0
  10. package/dist/billing.js.map +1 -0
  11. package/dist/client.d.ts +151 -0
  12. package/dist/client.js +188 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/components/Icons.d.ts +18 -0
  15. package/dist/components/Icons.js +19 -0
  16. package/dist/components/Icons.js.map +1 -0
  17. package/dist/components/Icons.jsx +19 -0
  18. package/dist/components/Icons.jsx.map +1 -0
  19. package/dist/components/add-to-cart-widget.d.ts +11 -0
  20. package/dist/components/add-to-cart-widget.js +85 -0
  21. package/dist/components/add-to-cart-widget.js.map +1 -0
  22. package/dist/components/add-to-cart-widget.jsx +99 -0
  23. package/dist/components/add-to-cart-widget.jsx.map +1 -0
  24. package/dist/components/buy/buy-card.d.ts +30 -0
  25. package/dist/components/buy/buy-card.js +109 -0
  26. package/dist/components/buy/buy-card.js.map +1 -0
  27. package/dist/components/buy/buy-card.jsx +123 -0
  28. package/dist/components/buy/buy-card.jsx.map +1 -0
  29. package/dist/components/buy/carousel-buy-card.d.ts +12 -0
  30. package/dist/components/buy/carousel-buy-card.js +94 -0
  31. package/dist/components/buy/carousel-buy-card.js.map +1 -0
  32. package/dist/components/buy/carousel-buy-card.jsx +99 -0
  33. package/dist/components/buy/carousel-buy-card.jsx.map +1 -0
  34. package/dist/components/buy/multi-family/all-variants-carousel.d.ts +4 -0
  35. package/dist/components/buy/multi-family/all-variants-carousel.js +115 -0
  36. package/dist/components/buy/multi-family/all-variants-carousel.js.map +1 -0
  37. package/dist/components/buy/multi-family/all-variants-carousel.jsx +147 -0
  38. package/dist/components/buy/multi-family/all-variants-carousel.jsx.map +1 -0
  39. package/dist/components/buy/multi-family/family-carousel/index.d.ts +4 -0
  40. package/dist/components/buy/multi-family/family-carousel/index.js +27 -0
  41. package/dist/components/buy/multi-family/family-carousel/index.js.map +1 -0
  42. package/dist/components/buy/multi-family/family-carousel/index.jsx +34 -0
  43. package/dist/components/buy/multi-family/family-carousel/index.jsx.map +1 -0
  44. package/dist/components/buy/multi-family/family-carousel/slide.d.ts +11 -0
  45. package/dist/components/buy/multi-family/family-carousel/slide.js +35 -0
  46. package/dist/components/buy/multi-family/family-carousel/slide.js.map +1 -0
  47. package/dist/components/buy/multi-family/family-carousel/slide.jsx +41 -0
  48. package/dist/components/buy/multi-family/family-carousel/slide.jsx.map +1 -0
  49. package/dist/components/buy/multi-family/family-carousel/state.d.ts +20 -0
  50. package/dist/components/buy/multi-family/family-carousel/state.js +59 -0
  51. package/dist/components/buy/multi-family/family-carousel/state.js.map +1 -0
  52. package/dist/components/buy/multi-family/index.d.ts +2 -0
  53. package/dist/components/buy/multi-family/index.js +3 -0
  54. package/dist/components/buy/multi-family/index.js.map +1 -0
  55. package/dist/components/buy/single-family-selector.d.ts +15 -0
  56. package/dist/components/buy/single-family-selector.js +28 -0
  57. package/dist/components/buy/single-family-selector.js.map +1 -0
  58. package/dist/components/buy/single-family-selector.jsx +31 -0
  59. package/dist/components/buy/single-family-selector.jsx.map +1 -0
  60. package/dist/components/buy/title-and-byline.d.ts +8 -0
  61. package/dist/components/buy/title-and-byline.js +7 -0
  62. package/dist/components/buy/title-and-byline.js.map +1 -0
  63. package/dist/components/buy/title-and-byline.jsx +9 -0
  64. package/dist/components/buy/title-and-byline.jsx.map +1 -0
  65. package/dist/components/cart/cart-panel/cart-line-item.d.ts +11 -0
  66. package/dist/components/cart/cart-panel/cart-line-item.js +25 -0
  67. package/dist/components/cart/cart-panel/cart-line-item.js.map +1 -0
  68. package/dist/components/cart/cart-panel/cart-line-item.jsx +39 -0
  69. package/dist/components/cart/cart-panel/cart-line-item.jsx.map +1 -0
  70. package/dist/components/cart/cart-panel/index.d.ts +19 -0
  71. package/dist/components/cart/cart-panel/index.js +65 -0
  72. package/dist/components/cart/cart-panel/index.js.map +1 -0
  73. package/dist/components/cart/cart-panel/index.jsx +79 -0
  74. package/dist/components/cart/cart-panel/index.jsx.map +1 -0
  75. package/dist/components/cart/cart-panel/promo-code.d.ts +4 -0
  76. package/dist/components/cart/cart-panel/promo-code.js +62 -0
  77. package/dist/components/cart/cart-panel/promo-code.js.map +1 -0
  78. package/dist/components/cart/cart-panel/promo-code.jsx +74 -0
  79. package/dist/components/cart/cart-panel/promo-code.jsx.map +1 -0
  80. package/dist/components/cart/cart-panel/total-area.d.ts +7 -0
  81. package/dist/components/cart/cart-panel/total-area.js +14 -0
  82. package/dist/components/cart/cart-panel/total-area.js.map +1 -0
  83. package/dist/components/cart/cart-panel/total-area.jsx +37 -0
  84. package/dist/components/cart/cart-panel/total-area.jsx.map +1 -0
  85. package/dist/components/checkout/payment-step-form/card-icon-row.d.ts +2 -0
  86. package/dist/components/checkout/payment-step-form/card-icon-row.js +14 -0
  87. package/dist/components/checkout/payment-step-form/card-icon-row.js.map +1 -0
  88. package/dist/components/checkout/payment-step-form/card-icon-row.jsx +22 -0
  89. package/dist/components/checkout/payment-step-form/card-icon-row.jsx.map +1 -0
  90. package/dist/components/checkout/payment-step-form/card-icons/amex.d.ts +4 -0
  91. package/dist/components/checkout/payment-step-form/card-icons/amex.js +6 -0
  92. package/dist/components/checkout/payment-step-form/card-icons/amex.js.map +1 -0
  93. package/dist/components/checkout/payment-step-form/card-icons/amex.jsx +12 -0
  94. package/dist/components/checkout/payment-step-form/card-icons/amex.jsx.map +1 -0
  95. package/dist/components/checkout/payment-step-form/card-icons/diners-club.d.ts +4 -0
  96. package/dist/components/checkout/payment-step-form/card-icons/diners-club.js +6 -0
  97. package/dist/components/checkout/payment-step-form/card-icons/diners-club.js.map +1 -0
  98. package/dist/components/checkout/payment-step-form/card-icons/diners-club.jsx +10 -0
  99. package/dist/components/checkout/payment-step-form/card-icons/diners-club.jsx.map +1 -0
  100. package/dist/components/checkout/payment-step-form/card-icons/discover.d.ts +4 -0
  101. package/dist/components/checkout/payment-step-form/card-icons/discover.js +6 -0
  102. package/dist/components/checkout/payment-step-form/card-icons/discover.js.map +1 -0
  103. package/dist/components/checkout/payment-step-form/card-icons/discover.jsx +12 -0
  104. package/dist/components/checkout/payment-step-form/card-icons/discover.jsx.map +1 -0
  105. package/dist/components/checkout/payment-step-form/card-icons/jcb.d.ts +4 -0
  106. package/dist/components/checkout/payment-step-form/card-icons/jcb.js +6 -0
  107. package/dist/components/checkout/payment-step-form/card-icons/jcb.js.map +1 -0
  108. package/dist/components/checkout/payment-step-form/card-icons/jcb.jsx +23 -0
  109. package/dist/components/checkout/payment-step-form/card-icons/jcb.jsx.map +1 -0
  110. package/dist/components/checkout/payment-step-form/card-icons/mastercard.d.ts +4 -0
  111. package/dist/components/checkout/payment-step-form/card-icons/mastercard.js +6 -0
  112. package/dist/components/checkout/payment-step-form/card-icons/mastercard.js.map +1 -0
  113. package/dist/components/checkout/payment-step-form/card-icons/mastercard.jsx +12 -0
  114. package/dist/components/checkout/payment-step-form/card-icons/mastercard.jsx.map +1 -0
  115. package/dist/components/checkout/payment-step-form/card-icons/visa.d.ts +4 -0
  116. package/dist/components/checkout/payment-step-form/card-icons/visa.js +6 -0
  117. package/dist/components/checkout/payment-step-form/card-icons/visa.js.map +1 -0
  118. package/dist/components/checkout/payment-step-form/card-icons/visa.jsx +10 -0
  119. package/dist/components/checkout/payment-step-form/card-icons/visa.jsx.map +1 -0
  120. package/dist/components/checkout/payment-step-form/cc-button.d.ts +3 -0
  121. package/dist/components/checkout/payment-step-form/cc-button.js +6 -0
  122. package/dist/components/checkout/payment-step-form/cc-button.js.map +1 -0
  123. package/dist/components/checkout/payment-step-form/cc-button.jsx +9 -0
  124. package/dist/components/checkout/payment-step-form/cc-button.jsx.map +1 -0
  125. package/dist/components/checkout/payment-step-form/contact-form.d.ts +5 -0
  126. package/dist/components/checkout/payment-step-form/contact-form.js +6 -0
  127. package/dist/components/checkout/payment-step-form/contact-form.js.map +1 -0
  128. package/dist/components/checkout/payment-step-form/contact-form.jsx +21 -0
  129. package/dist/components/checkout/payment-step-form/contact-form.jsx.map +1 -0
  130. package/dist/components/checkout/payment-step-form/crypto-icons/btc.d.ts +4 -0
  131. package/dist/components/checkout/payment-step-form/crypto-icons/btc.js +6 -0
  132. package/dist/components/checkout/payment-step-form/crypto-icons/btc.js.map +1 -0
  133. package/dist/components/checkout/payment-step-form/crypto-icons/btc.jsx +8 -0
  134. package/dist/components/checkout/payment-step-form/crypto-icons/btc.jsx.map +1 -0
  135. package/dist/components/checkout/payment-step-form/crypto-icons/eth.d.ts +4 -0
  136. package/dist/components/checkout/payment-step-form/crypto-icons/eth.js +6 -0
  137. package/dist/components/checkout/payment-step-form/crypto-icons/eth.js.map +1 -0
  138. package/dist/components/checkout/payment-step-form/crypto-icons/eth.jsx +17 -0
  139. package/dist/components/checkout/payment-step-form/crypto-icons/eth.jsx.map +1 -0
  140. package/dist/components/checkout/payment-step-form/crypto-icons/usdt.d.ts +4 -0
  141. package/dist/components/checkout/payment-step-form/crypto-icons/usdt.js +6 -0
  142. package/dist/components/checkout/payment-step-form/crypto-icons/usdt.js.map +1 -0
  143. package/dist/components/checkout/payment-step-form/crypto-icons/usdt.jsx +10 -0
  144. package/dist/components/checkout/payment-step-form/crypto-icons/usdt.jsx.map +1 -0
  145. package/dist/components/checkout/payment-step-form/index.d.ts +4 -0
  146. package/dist/components/checkout/payment-step-form/index.js +77 -0
  147. package/dist/components/checkout/payment-step-form/index.js.map +1 -0
  148. package/dist/components/checkout/payment-step-form/index.jsx +86 -0
  149. package/dist/components/checkout/payment-step-form/index.jsx.map +1 -0
  150. package/dist/components/checkout/payment-step-form/methods/bank-transfer.d.ts +4 -0
  151. package/dist/components/checkout/payment-step-form/methods/bank-transfer.js +24 -0
  152. package/dist/components/checkout/payment-step-form/methods/bank-transfer.js.map +1 -0
  153. package/dist/components/checkout/payment-step-form/methods/bank-transfer.jsx +44 -0
  154. package/dist/components/checkout/payment-step-form/methods/bank-transfer.jsx.map +1 -0
  155. package/dist/components/checkout/payment-step-form/methods/card.d.ts +4 -0
  156. package/dist/components/checkout/payment-step-form/methods/card.js +160 -0
  157. package/dist/components/checkout/payment-step-form/methods/card.js.map +1 -0
  158. package/dist/components/checkout/payment-step-form/methods/card.jsx +182 -0
  159. package/dist/components/checkout/payment-step-form/methods/card.jsx.map +1 -0
  160. package/dist/components/checkout/payment-step-form/methods/crypto.d.ts +9 -0
  161. package/dist/components/checkout/payment-step-form/methods/crypto.js +137 -0
  162. package/dist/components/checkout/payment-step-form/methods/crypto.js.map +1 -0
  163. package/dist/components/checkout/payment-step-form/methods/crypto.jsx +167 -0
  164. package/dist/components/checkout/payment-step-form/methods/crypto.jsx.map +1 -0
  165. package/dist/components/checkout/payment-step-form/methods/index.d.ts +6 -0
  166. package/dist/components/checkout/payment-step-form/methods/index.js +21 -0
  167. package/dist/components/checkout/payment-step-form/methods/index.js.map +1 -0
  168. package/dist/components/checkout/shipping-step-form.d.ts +3 -0
  169. package/dist/components/checkout/shipping-step-form.js +53 -0
  170. package/dist/components/checkout/shipping-step-form.js.map +1 -0
  171. package/dist/components/checkout/shipping-step-form.jsx +106 -0
  172. package/dist/components/checkout/shipping-step-form.jsx.map +1 -0
  173. package/dist/components/index.d.ts +8 -0
  174. package/dist/components/index.js +9 -0
  175. package/dist/components/index.js.map +1 -0
  176. package/dist/components/item/product-card.d.ts +7 -0
  177. package/dist/components/item/product-card.js +9 -0
  178. package/dist/components/item/product-card.js.map +1 -0
  179. package/dist/components/item/product-card.jsx +21 -0
  180. package/dist/components/item/product-card.jsx.map +1 -0
  181. package/dist/components/item-selector/button.d.ts +4 -0
  182. package/dist/components/item-selector/button.js +47 -0
  183. package/dist/components/item-selector/button.js.map +1 -0
  184. package/dist/components/item-selector/button.jsx +65 -0
  185. package/dist/components/item-selector/button.jsx.map +1 -0
  186. package/dist/components/item-selector/carousel/index.d.ts +12 -0
  187. package/dist/components/item-selector/carousel/index.js +74 -0
  188. package/dist/components/item-selector/carousel/index.js.map +1 -0
  189. package/dist/components/item-selector/carousel/index.jsx +101 -0
  190. package/dist/components/item-selector/carousel/index.jsx.map +1 -0
  191. package/dist/components/item-selector/carousel/slider.d.ts +8 -0
  192. package/dist/components/item-selector/carousel/slider.js +12 -0
  193. package/dist/components/item-selector/carousel/slider.js.map +1 -0
  194. package/dist/components/item-selector/carousel/slider.jsx +11 -0
  195. package/dist/components/item-selector/carousel/slider.jsx.map +1 -0
  196. package/dist/components/item-selector/index.d.ts +2 -0
  197. package/dist/components/item-selector/index.js +3 -0
  198. package/dist/components/item-selector/index.js.map +1 -0
  199. package/dist/components/item-selector/quantity-indicator.d.ts +9 -0
  200. package/dist/components/item-selector/quantity-indicator.js +16 -0
  201. package/dist/components/item-selector/quantity-indicator.js.map +1 -0
  202. package/dist/components/item-selector/quantity-indicator.jsx +23 -0
  203. package/dist/components/item-selector/quantity-indicator.jsx.map +1 -0
  204. package/dist/components/node-tabs/index.d.ts +14 -0
  205. package/dist/components/node-tabs/index.js +42 -0
  206. package/dist/components/node-tabs/index.js.map +1 -0
  207. package/dist/components/node-tabs/index.jsx +48 -0
  208. package/dist/components/node-tabs/index.jsx.map +1 -0
  209. package/dist/components/node-tabs/node-image.d.ts +6 -0
  210. package/dist/components/node-tabs/node-image.js +13 -0
  211. package/dist/components/node-tabs/node-image.js.map +1 -0
  212. package/dist/components/node-tabs/node-image.jsx +12 -0
  213. package/dist/components/node-tabs/node-image.jsx.map +1 -0
  214. package/dist/index.d.ts +7 -0
  215. package/dist/index.js +7 -0
  216. package/dist/index.js.map +1 -0
  217. package/dist/service/context.d.ts +8 -0
  218. package/dist/service/context.js +19 -0
  219. package/dist/service/context.js.map +1 -0
  220. package/dist/service/context.jsx +20 -0
  221. package/dist/service/context.jsx.map +1 -0
  222. package/dist/service/debug.d.ts +10 -0
  223. package/dist/service/debug.js +30 -0
  224. package/dist/service/debug.js.map +1 -0
  225. package/dist/service/impls/standalone/actual-line-item.d.ts +40 -0
  226. package/dist/service/impls/standalone/actual-line-item.js +84 -0
  227. package/dist/service/impls/standalone/actual-line-item.js.map +1 -0
  228. package/dist/service/impls/standalone/get-instance.d.ts +2 -0
  229. package/dist/service/impls/standalone/get-instance.js +39 -0
  230. package/dist/service/impls/standalone/get-instance.js.map +1 -0
  231. package/dist/service/impls/standalone/index.d.ts +67 -0
  232. package/dist/service/impls/standalone/index.js +416 -0
  233. package/dist/service/impls/standalone/index.js.map +1 -0
  234. package/dist/service/impls/standalone/order/firebase.d.ts +6 -0
  235. package/dist/service/impls/standalone/order/firebase.js +6 -0
  236. package/dist/service/impls/standalone/order/firebase.js.map +1 -0
  237. package/dist/service/impls/standalone/order/index.d.ts +30 -0
  238. package/dist/service/impls/standalone/order/index.js +21 -0
  239. package/dist/service/impls/standalone/order/index.js.map +1 -0
  240. package/dist/service/impls/standalone/persistence.d.ts +4 -0
  241. package/dist/service/impls/standalone/persistence.js +22 -0
  242. package/dist/service/impls/standalone/persistence.js.map +1 -0
  243. package/dist/service/path-utils.d.ts +7 -0
  244. package/dist/service/path-utils.js +16 -0
  245. package/dist/service/path-utils.js.map +1 -0
  246. package/dist/service/sep.d.ts +6 -0
  247. package/dist/service/sep.js +6 -0
  248. package/dist/service/sep.js.map +1 -0
  249. package/dist/types/category-node.d.ts +36 -0
  250. package/dist/types/category-node.js +2 -0
  251. package/dist/types/category-node.js.map +1 -0
  252. package/dist/types/checkout.d.ts +33 -0
  253. package/dist/types/checkout.js +2 -0
  254. package/dist/types/checkout.js.map +1 -0
  255. package/dist/types/commerce-config.d.ts +11 -0
  256. package/dist/types/commerce-config.js +2 -0
  257. package/dist/types/commerce-config.js.map +1 -0
  258. package/dist/types/commerce-service.d.ts +109 -0
  259. package/dist/types/commerce-service.js +2 -0
  260. package/dist/types/commerce-service.js.map +1 -0
  261. package/dist/types/family.d.ts +16 -0
  262. package/dist/types/family.js +2 -0
  263. package/dist/types/family.js.map +1 -0
  264. package/dist/types/index.d.ts +13 -0
  265. package/dist/types/index.js +8 -0
  266. package/dist/types/index.js.map +1 -0
  267. package/dist/types/item-selector.d.ts +72 -0
  268. package/dist/types/item-selector.js +2 -0
  269. package/dist/types/item-selector.js.map +1 -0
  270. package/dist/types/line-item.d.ts +14 -0
  271. package/dist/types/line-item.js +2 -0
  272. package/dist/types/line-item.js.map +1 -0
  273. package/dist/types/multi-family-selector-props.d.ts +16 -0
  274. package/dist/types/multi-family-selector-props.js +2 -0
  275. package/dist/types/multi-family-selector-props.js.map +1 -0
  276. package/dist/types/product.d.ts +15 -0
  277. package/dist/types/product.js +2 -0
  278. package/dist/types/product.js.map +1 -0
  279. package/dist/types/promo.d.ts +7 -0
  280. package/dist/types/promo.js +2 -0
  281. package/dist/types/promo.js.map +1 -0
  282. package/dist/types/selection-ui-specifier.d.ts +40 -0
  283. package/dist/types/selection-ui-specifier.js +2 -0
  284. package/dist/types/selection-ui-specifier.js.map +1 -0
  285. package/dist/types/string-mutator.d.ts +9 -0
  286. package/dist/types/string-mutator.js +2 -0
  287. package/dist/types/string-mutator.js.map +1 -0
  288. package/dist/types/token-separators.d.ts +6 -0
  289. package/dist/types/token-separators.js +2 -0
  290. package/dist/types/token-separators.js.map +1 -0
  291. package/dist/util/analytics.d.ts +9 -0
  292. package/dist/util/analytics.js +10 -0
  293. package/dist/util/analytics.js.map +1 -0
  294. package/dist/util/countries.d.ts +7 -0
  295. package/dist/util/countries.js +197 -0
  296. package/dist/util/countries.js.map +1 -0
  297. package/dist/util/error.d.ts +1 -0
  298. package/dist/util/error.js +22 -0
  299. package/dist/util/error.js.map +1 -0
  300. package/dist/util/index.d.ts +15 -0
  301. package/dist/util/index.js +54 -0
  302. package/dist/util/index.js.map +1 -0
  303. package/dist/util/item-selector-options-accessor.d.ts +3 -0
  304. package/dist/util/item-selector-options-accessor.js +27 -0
  305. package/dist/util/item-selector-options-accessor.js.map +1 -0
  306. package/dist/util/line-item-ref.d.ts +8 -0
  307. package/dist/util/line-item-ref.js +15 -0
  308. package/dist/util/line-item-ref.js.map +1 -0
  309. package/dist/util/multi-family-selector-options-accessor.d.ts +3 -0
  310. package/dist/util/multi-family-selector-options-accessor.js +11 -0
  311. package/dist/util/multi-family-selector-options-accessor.js.map +1 -0
  312. package/dist/util/obs-string-mutator.d.ts +8 -0
  313. package/dist/util/obs-string-mutator.js +15 -0
  314. package/dist/util/obs-string-mutator.js.map +1 -0
  315. package/dist/util/product-media-accessor.d.ts +29 -0
  316. package/dist/util/product-media-accessor.js +22 -0
  317. package/dist/util/product-media-accessor.js.map +1 -0
  318. package/dist/util/promo-codes.d.ts +3 -0
  319. package/dist/util/promo-codes.js +100 -0
  320. package/dist/util/promo-codes.js.map +1 -0
  321. package/dist/util/selection-ui-specifiers.d.ts +3 -0
  322. package/dist/util/selection-ui-specifiers.js +24 -0
  323. package/dist/util/selection-ui-specifiers.js.map +1 -0
  324. package/dist/util/square-payment.d.ts +7 -0
  325. package/dist/util/square-payment.js +37 -0
  326. package/dist/util/square-payment.js.map +1 -0
  327. package/dist/util/use-sync-sku-param-w-current-item.d.ts +2 -0
  328. package/dist/util/use-sync-sku-param-w-current-item.js +61 -0
  329. package/dist/util/use-sync-sku-param-w-current-item.js.map +1 -0
  330. package/index.ts +9 -5
  331. package/package.json +13 -12
  332. package/service/impls/standalone/order/firebase.ts +5 -14
  333. package/service/impls/standalone/order/index.ts +16 -87
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buy-card.js","sourceRoot":"","sources":["../../../components/buy/buy-card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ 'use client';
2
+ import React, { useRef, useEffect } from 'react';
3
+ import { reaction } from 'mobx';
4
+ import { observer } from 'mobx-react-lite';
5
+ import { cn } from '@hanzo/ui/util';
6
+ import { ApplyTypography, MediaStack } from '@hanzo/ui/primitives';
7
+ import { useCommerce } from '../../service/context';
8
+ import * as pathUtils from '../../service/path-utils';
9
+ import { getFacetValuesMutator, ObsStringMutator } from '../../util';
10
+ import NodeTabs from '../node-tabs';
11
+ import AddToCartWidget from '../add-to-cart-widget';
12
+ const BuyCard = observer(({ skuPath, scrollAfter = 5, scrollHeightClx = 'h-[80vh]', clx = '', famWidgetClx = '', addWidgetClx = '', selector: Selector, selectorProps = {
13
+ clx: '',
14
+ soleItemClx: '',
15
+ itemClx: '',
16
+ ext: {}
17
+ }, familyTabAs = 'image-and-label', showItemMedia = true, allVariants = false, mobile = false, onQuantityChanged, }) => {
18
+ const cmmc = useCommerce();
19
+ const inst = useRef(undefined);
20
+ useEffect(() => {
21
+ let requestedFamily = cmmc.getFamilyById(skuPath);
22
+ let requestedNode = requestedFamily ? undefined : cmmc.getNodeAtPath(skuPath);
23
+ let initialFamily = undefined;
24
+ const { paths, level } = pathUtils.getSelectedPaths(skuPath);
25
+ if (level === 0) {
26
+ throw new Error('BuyCard.useEffect(): must specify at least at least one Level in skuPath!');
27
+ }
28
+ if (requestedFamily) {
29
+ if (allVariants && level >= 2) {
30
+ // select all siblings of requestedFamily.
31
+ // ie, go one level back
32
+ delete paths[level];
33
+ initialFamily = requestedFamily;
34
+ requestedFamily = undefined;
35
+ requestedNode = cmmc.getNodeAtPath(pathUtils.getParentPath(skuPath));
36
+ }
37
+ }
38
+ else {
39
+ // select siblings paths
40
+ if (allVariants) {
41
+ paths[level + 1] = [...requestedNode.subNodes.map((node) => (node.skuToken))];
42
+ }
43
+ // Actually select the the first fam at the fam level,
44
+ else {
45
+ paths[level + 1] = [requestedNode.subNodes[0].skuToken];
46
+ }
47
+ }
48
+ const selectedFams = cmmc.selectPaths(paths);
49
+ initialFamily = initialFamily ? initialFamily : (requestedFamily ? requestedFamily : selectedFams[0]);
50
+ cmmc.setCurrentItem(initialFamily.products[0].sku);
51
+ const currentFamTokenMutator = new ObsStringMutator(pathUtils.lastToken(initialFamily.id));
52
+ inst.current = {
53
+ level,
54
+ requestedFamily,
55
+ requestedNode,
56
+ currentFamTokenMutator,
57
+ disposers: []
58
+ };
59
+ if (!allVariants) {
60
+ inst.current?.disposers.push(reaction(() => {
61
+ const fams = cmmc.selectedFamilies;
62
+ return (fams.length > 0) ? fams[0].id : undefined;
63
+ }, (famId) => {
64
+ if (famId && famId !== cmmc.currentItem?.familyId) {
65
+ const fam = cmmc.getFamilyById(famId);
66
+ if (fam) {
67
+ cmmc.setCurrentItem(fam.products[0].sku);
68
+ }
69
+ }
70
+ }));
71
+ }
72
+ return () => {
73
+ inst.current?.disposers.forEach((d) => { d(); });
74
+ };
75
+ }, []);
76
+ const setFamilyPath = (pathValue) => {
77
+ if (inst.current?.currentFamTokenMutator.get() !== pathValue) {
78
+ inst.current?.currentFamTokenMutator.set(pathValue);
79
+ }
80
+ const found = cmmc.selectedItems.find((item) => (item.familyId.endsWith(pathValue)));
81
+ if (found) {
82
+ cmmc.setCurrentItem(found.sku);
83
+ }
84
+ };
85
+ const selectSku = (sku) => {
86
+ cmmc.setCurrentItem(sku);
87
+ const pathValue = pathUtils.lastToken(cmmc.currentItem.familyId);
88
+ if (pathValue !== inst.current?.currentFamTokenMutator.get()) {
89
+ inst.current?.currentFamTokenMutator.set(pathValue);
90
+ }
91
+ };
92
+ const famTitle = inst.current?.requestedFamily ? inst.current.requestedFamily.title : cmmc.selectedFamilies[0].title;
93
+ const itemsToShow = (!cmmc.hasSelection) ? undefined :
94
+ allVariants ? cmmc.selectedItems : cmmc.selectedFamilies[0].products;
95
+ const TitleArea = ({ title, byline, clx = '' }) => (<ApplyTypography className={clx}>
96
+ <h3>{title}</h3>
97
+ {byline && (<h6>{byline}</h6>)}
98
+ </ApplyTypography>);
99
+ const scroll = !!(itemsToShow && itemsToShow.length > scrollAfter);
100
+ return (<div className={cn('px-4 md:px-6 pt-3 pb-4 flex flex-col items-center min-h-[60vh]', clx, scroll ? scrollHeightClx : 'h-auto')}>
101
+ {inst.current?.requestedNode && (<>
102
+ <ApplyTypography className={'mb-2 ' + (scroll ? 'shrink-0' : '')}>
103
+ <h3>{inst.current.requestedNode.label}</h3>
104
+ {inst.current.requestedNode.subNodesLabel && (<h6 className='!text-center font-bold text-muted mt-3'>{inst.current.requestedNode.subNodesLabel}</h6>)}
105
+ </ApplyTypography>
106
+ <NodeTabs className={cn('grid gap-0 align-stretch justify-normal ' + `grid-cols-${inst.current.requestedNode.subNodes.length}`, 'border-b-2 rounded-lg border-level-3 mb-4 -mr-2 -ml-2 max-w-[460px] h-10', // height is needed for iPhone bug
107
+ (scroll ? 'shrink-0' : ''), famWidgetClx)} mobile={mobile} mutator={allVariants ?
108
+ {
109
+ get: () => (inst.current.currentFamTokenMutator.get()),
110
+ set: setFamilyPath
111
+ }
112
+ :
113
+ getFacetValuesMutator(inst.current.level + 1, cmmc)} itemClx='flex-col h-auto gap-0 py-1 px-3' buttonClx={'h-full ' +
114
+ '!border-level-3'} levelNodes={inst.current.requestedNode.subNodes} show={familyTabAs}/>
115
+ </>)}
116
+ {!inst.current?.requestedNode && famTitle && (<TitleArea title={famTitle} clx=''/>)}
117
+ {(cmmc.currentItem && showItemMedia) && (<MediaStack media={cmmc.currentItem} constrainTo={{ w: 200, h: 200 }} clx={(scroll ? 'shrink-0' : '')}/>)}
118
+ {itemsToShow && (<Selector items={itemsToShow} selectedItemRef={cmmc} selectSku={selectSku} {...selectorProps} scrollable={scroll}/>)}
119
+ {(cmmc.currentItem) && (<AddToCartWidget item={cmmc.currentItem} onQuantityChanged={onQuantityChanged} className={cn('min-w-[160px] mx-auto mt-4', (scroll ? 'shrink-0' : ''), addWidgetClx)}/>)}
120
+ </div>);
121
+ });
122
+ export default BuyCard;
123
+ //# sourceMappingURL=buy-card.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buy-card.jsx","sourceRoot":"","sources":["../../../components/buy/buy-card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ declare const CarouselBuyCard: React.FC<{
3
+ skuPath: string;
4
+ checkoutButton: React.ReactNode;
5
+ clx?: string;
6
+ selectorClx?: string;
7
+ addBtnClx?: string;
8
+ buttonsAreaClx?: string;
9
+ mobile?: boolean;
10
+ onQuantityChanged?: (sku: string, oldV: number, newV: number) => void;
11
+ }>;
12
+ export default CarouselBuyCard;
@@ -0,0 +1,94 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import React, { useRef, useEffect, useState } from 'react';
4
+ import { observer } from 'mobx-react-lite';
5
+ import { cn } from '@hanzo/ui/util';
6
+ import { useCommerce } from '../../service/context';
7
+ import { getSelectionUISpecifier } from '../../util';
8
+ import { CarouselItemSelector, ButtonItemSelector } from '../item-selector';
9
+ import SingleFamilySelector from './single-family-selector';
10
+ import { FamilyCarousel, AllVariantsCarousel } from './multi-family';
11
+ import AddToCartWidget from '../add-to-cart-widget';
12
+ const SCROLL = {
13
+ scrollAfter: 5,
14
+ scrollHeightClx: 'h-[65vh]'
15
+ };
16
+ const MEDIA_CONSTRAINT = { w: 200, h: 200 };
17
+ const sortItems = (items, sort) => (((sort === 'asc') ?
18
+ items.sort((a, b) => (a.price - b.price))
19
+ :
20
+ ((sort === 'desc') ?
21
+ items.sort((a, b) => (b.price - a.price))
22
+ :
23
+ items)));
24
+ const CarouselBuyCard = ({ skuPath, checkoutButton, clx = '', selectorClx = '', addBtnClx = '', buttonsAreaClx = '', mobile = false, onQuantityChanged, }) => {
25
+ const cmmc = useCommerce();
26
+ const r = useRef(undefined);
27
+ const [changeMeToRerender, setChangeMeToRerender] = useState(false);
28
+ useEffect(() => {
29
+ if (!skuPath || skuPath.length === 0) {
30
+ // The component is being hidden (w an amination)
31
+ // keep things the same so no layout jump
32
+ return;
33
+ }
34
+ const peek = cmmc.peek(skuPath);
35
+ if (typeof peek === 'string') {
36
+ throw new Error(peek);
37
+ }
38
+ if (peek.role === 'non-outermost') {
39
+ throw new Error(`BuyCard: skuPath ${skuPath} isn't an outermost tree node or product family!`);
40
+ }
41
+ const uiSpec = getSelectionUISpecifier(skuPath);
42
+ r.current = {
43
+ ...peek,
44
+ node: peek.node, // else exception was thrown.
45
+ uiSpec,
46
+ };
47
+ if (peek.role === 'single-family') {
48
+ const sort = () => {
49
+ const options = uiSpec.singleFamily?.options ?? {};
50
+ const showSlider = 'showSlider' in options ? options.showSlider : true;
51
+ return ('sort' in options) ?
52
+ options.sort
53
+ :
54
+ (showSlider ? 'asc' : 'none');
55
+ };
56
+ const items = peek.family.products;
57
+ const Selector = (uiSpec.singleFamily?.type === 'buttons') ? ButtonItemSelector : CarouselItemSelector;
58
+ const selOptions = uiSpec.singleFamily?.options;
59
+ r.current.single = {
60
+ items: sortItems(items, sort()),
61
+ Selector,
62
+ selOptions,
63
+ scrollable: !!(items.length > SCROLL.scrollAfter),
64
+ showItemMedia: uiSpec.singleFamily?.type !== 'carousel'
65
+ };
66
+ const currItem = peek.item ?? r.current.single.items[0];
67
+ cmmc.setCurrentItem(currItem.sku);
68
+ }
69
+ else {
70
+ const initialFamily = peek.family ? peek.family : peek.families[0];
71
+ // TODO: Does this ever need to be sorted??
72
+ const currItem = peek.item ?? initialFamily.products[0];
73
+ // sets currentFamily as well
74
+ cmmc.setCurrentItem(currItem.sku);
75
+ r.current.multi = {
76
+ Selector: (uiSpec.multiFamily?.type === 'family-carousel') ?
77
+ FamilyCarousel
78
+ :
79
+ AllVariantsCarousel,
80
+ itemOptions: uiSpec.multiFamily?.itemOptions,
81
+ selectorOptions: uiSpec.multiFamily?.selectorOptions,
82
+ initialFamilyId: initialFamily.id
83
+ };
84
+ }
85
+ // Must do this since Dialog code takes this comp out of the React shadow DOM
86
+ // (only in prod apparently.)
87
+ setChangeMeToRerender(!changeMeToRerender);
88
+ }, [skuPath]);
89
+ const MultiFamilyUI = ({ Selector, itemOptions, selectorOptions, families, parent, clx = '' }) => (_jsx(Selector, { families: families, parent: parent, clx: clx, itemOptions: itemOptions, selectorOptions: selectorOptions, mediaConstraint: MEDIA_CONSTRAINT, mobile: mobile }));
90
+ const Buttons = observer(({ clx = '' }) => (cmmc.currentItem ? (_jsxs("div", { className: clx, children: [_jsx(AddToCartWidget, { item: cmmc.currentItem, onQuantityChanged: onQuantityChanged, variant: cmmc.cartEmpty ? 'primary' : 'outline', className: addBtnClx }), !cmmc.cartEmpty && checkoutButton] })) : null));
91
+ return (_jsxs("div", { className: cn('px-4 md:px-6 pt-3 pb-4 flex flex-col gap-1 items-center', r.current?.single?.scrollable ? SCROLL.scrollHeightClx : 'h-auto', clx), children: [r.current?.single ? (_jsx(SingleFamilySelector, { ...r.current.single, mediaConstraint: MEDIA_CONSTRAINT, mobile: mobile, clx: selectorClx })) : (r.current?.multi && r.current.families && /* safegaurd for first render, etc. */ (_jsx(MultiFamilyUI, { ...r.current.multi, families: r.current.families, parent: r.current.node, clx: selectorClx }))), _jsx(Buttons, { clx: cn('self-stretch mt-8 flex flex-col items-center gap-3 shrink-0 grow-0', buttonsAreaClx) })] }));
92
+ };
93
+ export default CarouselBuyCard;
94
+ //# sourceMappingURL=carousel-buy-card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carousel-buy-card.js","sourceRoot":"","sources":["../../../components/buy/carousel-buy-card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ 'use client';
2
+ import React, { useRef, useEffect, useState } from 'react';
3
+ import { observer } from 'mobx-react-lite';
4
+ import { cn } from '@hanzo/ui/util';
5
+ import { useCommerce } from '../../service/context';
6
+ import { getSelectionUISpecifier } from '../../util';
7
+ import { CarouselItemSelector, ButtonItemSelector } from '../item-selector';
8
+ import SingleFamilySelector from './single-family-selector';
9
+ import { FamilyCarousel, AllVariantsCarousel } from './multi-family';
10
+ import AddToCartWidget from '../add-to-cart-widget';
11
+ const SCROLL = {
12
+ scrollAfter: 5,
13
+ scrollHeightClx: 'h-[65vh]'
14
+ };
15
+ const MEDIA_CONSTRAINT = { w: 200, h: 200 };
16
+ const sortItems = (items, sort) => (((sort === 'asc') ?
17
+ items.sort((a, b) => (a.price - b.price))
18
+ :
19
+ ((sort === 'desc') ?
20
+ items.sort((a, b) => (b.price - a.price))
21
+ :
22
+ items)));
23
+ const CarouselBuyCard = ({ skuPath, checkoutButton, clx = '', selectorClx = '', addBtnClx = '', buttonsAreaClx = '', mobile = false, onQuantityChanged, }) => {
24
+ const cmmc = useCommerce();
25
+ const r = useRef(undefined);
26
+ const [changeMeToRerender, setChangeMeToRerender] = useState(false);
27
+ useEffect(() => {
28
+ if (!skuPath || skuPath.length === 0) {
29
+ // The component is being hidden (w an amination)
30
+ // keep things the same so no layout jump
31
+ return;
32
+ }
33
+ const peek = cmmc.peek(skuPath);
34
+ if (typeof peek === 'string') {
35
+ throw new Error(peek);
36
+ }
37
+ if (peek.role === 'non-outermost') {
38
+ throw new Error(`BuyCard: skuPath ${skuPath} isn't an outermost tree node or product family!`);
39
+ }
40
+ const uiSpec = getSelectionUISpecifier(skuPath);
41
+ r.current = {
42
+ ...peek,
43
+ node: peek.node, // else exception was thrown.
44
+ uiSpec,
45
+ };
46
+ if (peek.role === 'single-family') {
47
+ const sort = () => {
48
+ const options = uiSpec.singleFamily?.options ?? {};
49
+ const showSlider = 'showSlider' in options ? options.showSlider : true;
50
+ return ('sort' in options) ?
51
+ options.sort
52
+ :
53
+ (showSlider ? 'asc' : 'none');
54
+ };
55
+ const items = peek.family.products;
56
+ const Selector = (uiSpec.singleFamily?.type === 'buttons') ? ButtonItemSelector : CarouselItemSelector;
57
+ const selOptions = uiSpec.singleFamily?.options;
58
+ r.current.single = {
59
+ items: sortItems(items, sort()),
60
+ Selector,
61
+ selOptions,
62
+ scrollable: !!(items.length > SCROLL.scrollAfter),
63
+ showItemMedia: uiSpec.singleFamily?.type !== 'carousel'
64
+ };
65
+ const currItem = peek.item ?? r.current.single.items[0];
66
+ cmmc.setCurrentItem(currItem.sku);
67
+ }
68
+ else {
69
+ const initialFamily = peek.family ? peek.family : peek.families[0];
70
+ // TODO: Does this ever need to be sorted??
71
+ const currItem = peek.item ?? initialFamily.products[0];
72
+ // sets currentFamily as well
73
+ cmmc.setCurrentItem(currItem.sku);
74
+ r.current.multi = {
75
+ Selector: (uiSpec.multiFamily?.type === 'family-carousel') ?
76
+ FamilyCarousel
77
+ :
78
+ AllVariantsCarousel,
79
+ itemOptions: uiSpec.multiFamily?.itemOptions,
80
+ selectorOptions: uiSpec.multiFamily?.selectorOptions,
81
+ initialFamilyId: initialFamily.id
82
+ };
83
+ }
84
+ // Must do this since Dialog code takes this comp out of the React shadow DOM
85
+ // (only in prod apparently.)
86
+ setChangeMeToRerender(!changeMeToRerender);
87
+ }, [skuPath]);
88
+ const MultiFamilyUI = ({ Selector, itemOptions, selectorOptions, families, parent, clx = '' }) => (<Selector families={families} parent={parent} clx={clx} itemOptions={itemOptions} selectorOptions={selectorOptions} mediaConstraint={MEDIA_CONSTRAINT} mobile={mobile}/>);
89
+ const Buttons = observer(({ clx = '' }) => (cmmc.currentItem ? (<div className={clx}>
90
+ <AddToCartWidget item={cmmc.currentItem} onQuantityChanged={onQuantityChanged} variant={cmmc.cartEmpty ? 'primary' : 'outline'} className={addBtnClx}/>
91
+ {!cmmc.cartEmpty && checkoutButton}
92
+ </div>) : null));
93
+ return (<div className={cn('px-4 md:px-6 pt-3 pb-4 flex flex-col gap-1 items-center', r.current?.single?.scrollable ? SCROLL.scrollHeightClx : 'h-auto', clx)}>
94
+ {r.current?.single ? (<SingleFamilySelector {...r.current.single} mediaConstraint={MEDIA_CONSTRAINT} mobile={mobile} clx={selectorClx}/>) : (r.current?.multi && r.current.families && /* safegaurd for first render, etc. */ (<MultiFamilyUI {...r.current.multi} families={r.current.families} parent={r.current.node} clx={selectorClx}/>))}
95
+ <Buttons clx={cn('self-stretch mt-8 flex flex-col items-center gap-3 shrink-0 grow-0', buttonsAreaClx)}/>
96
+ </div>);
97
+ };
98
+ export default CarouselBuyCard;
99
+ //# sourceMappingURL=carousel-buy-card.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carousel-buy-card.jsx","sourceRoot":"","sources":["../../../components/buy/carousel-buy-card.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { MultiFamilySelectorProps } from '../../../types';
3
+ declare const AllVariantsCarousel: React.FC<MultiFamilySelectorProps>;
4
+ export { AllVariantsCarousel as default };
@@ -0,0 +1,115 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
4
+ import { reaction } from 'mobx';
5
+ import { observer } from 'mobx-react-lite';
6
+ import { cn } from '@hanzo/ui/util';
7
+ import { ApplyTypography, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext, MediaStack, } from '@hanzo/ui/primitives';
8
+ import { formatCurrencyValue, accessItemOptions, accessMultiSelectorOptions } from '../../../util';
9
+ import QuantityIndicator from '../../item-selector/quantity-indicator';
10
+ import { ButtonItemSelector, useCommerce } from '../../..';
11
+ const debugBorder = (c, disable = true) => {
12
+ if (disable) {
13
+ return '';
14
+ }
15
+ switch (c) {
16
+ case 'r': return ' border border-[#ffaaaa] ';
17
+ case 'g': return ' border border-[#aaffaa] ';
18
+ case 'b': return ' border border-[#aaaaff] ';
19
+ }
20
+ };
21
+ const DEFAULT_CONSTRAINT = { w: 250, h: 250 };
22
+ const AllVariantsCarousel = ({ families, parent, clx = '', itemClx = '', itemOptions, selectorOptions, mediaConstraint = DEFAULT_CONSTRAINT, mobile = false, // not relavant to any children
23
+ }) => {
24
+ const cmmc = useCommerce();
25
+ const r = useRef(undefined);
26
+ const [changeMeToRerender, setChangeMeToRerender] = useState(false);
27
+ // Safe, since Carousel is only render (and this method passed), once the ref is initialized.
28
+ const setApi = (api) => { r.current.api = api; };
29
+ const onSelect = useCallback((emblaApi) => {
30
+ if (r.current?.dontRespond) {
31
+ r.current.dontRespond = false;
32
+ return;
33
+ }
34
+ const index = emblaApi.selectedScrollSnap();
35
+ if (index !== -1) {
36
+ const item = r.current?.items[index];
37
+ cmmc.setCurrentItem(item?.sku); // (sets currentFamily as well)
38
+ }
39
+ if (r.current) {
40
+ r.current.dontRespond = false;
41
+ }
42
+ }, []);
43
+ useEffect(() => {
44
+ const items = families.map((fam) => fam.products).flat();
45
+ const foundIndex = cmmc.currentItem ? items.findIndex((item) => (cmmc.currentItem.sku == item.sku)) : -1;
46
+ r.current = {
47
+ items,
48
+ initialIndex: foundIndex === -1 ? 0 : foundIndex,
49
+ dontRespond: false,
50
+ api: undefined
51
+ };
52
+ setChangeMeToRerender(!changeMeToRerender);
53
+ // This responds to the swatch clicks
54
+ return reaction(() => (cmmc.currentItem), (item) => {
55
+ if (r.current && r.current.api) {
56
+ const index = r.current.items.findIndex((_item) => (_item.sku === item?.sku));
57
+ if (index && index !== -1) {
58
+ // no need to sync family, since ui only allows selecting within a family
59
+ r.current.dontRespond = true;
60
+ r.current.api.scrollTo(index);
61
+ }
62
+ }
63
+ });
64
+ }, []);
65
+ const Header = observer(({ clx = '' }) => {
66
+ const { showParentTitle, parentByline: parentBylineMode } = accessMultiSelectorOptions(selectorOptions);
67
+ const { familyTitle, showFamilyByline } = accessItemOptions(itemOptions);
68
+ const parentTitleDisplay = showParentTitle ? parent.label : undefined;
69
+ const parentBylineDisplay = (parentBylineMode === 'own-line') ? parent.subNodesLabel : '';
70
+ const title = (familyTitle === 'none' ?
71
+ undefined
72
+ :
73
+ (familyTitle === 'long' ?
74
+ cmmc.currentFamily?.title
75
+ :
76
+ (cmmc.currentFamily?.titleShort ?? cmmc.currentFamily?.title)));
77
+ let titleLinePrefix = (parentBylineMode === 'none' || parentBylineMode === 'own-line') ? '' : (parent.subNodesLabel ?? '');
78
+ if (titleLinePrefix.length > 0 && title && parentBylineMode === 'comma-sep') {
79
+ titleLinePrefix += ', ';
80
+ }
81
+ else if (titleLinePrefix.length > 0 && title && parentBylineMode === 'colon-sep') {
82
+ titleLinePrefix += ': ';
83
+ }
84
+ const titleDisplay = title ? (titleLinePrefix + title) : undefined;
85
+ const bylineDisplay = (familyTitle !== 'none') && showFamilyByline ? cmmc.currentFamily?.byline : undefined;
86
+ return (_jsxs(ApplyTypography, { className: cn('flex flex-col items-center !gap-0 [&>*]:!m-0 ', clx), children: [parentTitleDisplay && _jsx("h4", { children: parentTitleDisplay }), parentBylineDisplay && _jsx("h4", { children: parentBylineDisplay }), titleDisplay && _jsx("h4", { children: titleDisplay }), bylineDisplay && (_jsx("h6", { children: bylineDisplay }))] }));
87
+ });
88
+ const ItemInfo = observer(({ clx = '', labelClx = '' }) => {
89
+ const { showPrice, showQuantity, showFamilyInOption, showByline, } = accessItemOptions(itemOptions);
90
+ const optionLabel = () => (showFamilyInOption ?
91
+ (cmmc.currentItem.familyTitle + ', ' + cmmc.currentItem.optionLabel)
92
+ :
93
+ cmmc.currentItem.optionLabel);
94
+ return (cmmc.currentItem && (_jsxs(ApplyTypography, { className: cn('flex flex-col items-center [&>*]:!m-0 !gap-1 ', clx), children: [_jsxs("div", { className: 'flex items-center gap-1 [&>*]:!m-0 ' +
95
+ debugBorder('g') +
96
+ (showFamilyInOption ? 'flex-col' : 'flex-row'), children: [_jsx("h6", { className: cn('font-semibold', labelClx), children: optionLabel() + (showPrice && !showFamilyInOption ? ',' : '') }), _jsxs("div", { className: 'flex items-center gap-1 [&>*]:!m-0 flex-row ' + debugBorder('b') +
97
+ (showFamilyInOption ? 'w-full justify-between' : ''), children: [showPrice && (_jsx("p", { children: formatCurrencyValue(cmmc.currentItem.price) })), showQuantity && (_jsx(QuantityIndicator, { item: cmmc.currentItem, clx: 'h-[22px] ml-4', iconClx: 'fill-foreground', digitClx: 'not-typography font-semibold text-primary-fg leading-none font-sans text-xs' }))] })] }), showByline && cmmc.currentItem.byline && (_jsx("p", { children: cmmc.currentItem.byline }))] })));
98
+ });
99
+ const Swatches = observer(({ clx = '' }) => {
100
+ const { showItemSwatches } = accessMultiSelectorOptions(selectorOptions);
101
+ if (!showItemSwatches ||
102
+ !cmmc.currentFamily
103
+ //|| cmmc.currentFamily.products.length === 1
104
+ ) {
105
+ return null;
106
+ }
107
+ return _jsx(ButtonItemSelector, { items: cmmc.currentFamily.products, selectedItemRef: cmmc, selectSku: cmmc.setCurrentItem.bind(cmmc), clx: clx, options: {
108
+ buttonType: 'image',
109
+ horizButtons: true
110
+ } });
111
+ });
112
+ return (_jsxs("div", { className: cn('w-full flex flex-col items-center', clx), children: [_jsx(Header, {}), r.current && /* Only render once we've set the ref fields, or else bad things! */ (_jsxs(Carousel, { options: { loop: true, startIndex: r.current.initialIndex }, className: 'w-full px-2' + debugBorder('r'), onCarouselSelect: onSelect, setApi: setApi, children: [_jsx(CarouselContent, { children: r.current.items.map((item) => (_jsx(CarouselItem, { className: cn('p-2 flex flex-col justify-center items-center', itemClx), children: _jsx(MediaStack, { media: item, constrainTo: mediaConstraint, clx: 'my-4' }) }, item.sku))) }), r.current.items.length > 1 && (_jsxs(_Fragment, { children: [_jsx(CarouselPrevious, { className: 'left-1' }), _jsx(CarouselNext, { className: 'right-1' })] }))] })), _jsxs("div", { className: 'flex flex-col items-center justify-start', children: [_jsx(ItemInfo, { labelClx: '!text-base font-medium' }), _jsx(Swatches, { clx: 'mt-2' })] })] }));
113
+ };
114
+ export { AllVariantsCarousel as default };
115
+ //# sourceMappingURL=all-variants-carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"all-variants-carousel.js","sourceRoot":"","sources":["../../../../components/buy/multi-family/all-variants-carousel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAEnC,OAAO,EACL,eAAe,EAEf,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,UAAU,GACX,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,eAAe,CAAA;AAEtB,OAAO,iBAAiB,MAAM,wCAAwC,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE1D,MAAM,WAAW,GAAG,CAAC,CAAkB,EAAE,UAAmB,IAAI,EAAU,EAAE;IAE1E,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,CAAA;IACX,CAAC;IACD,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,GAAG,CAAC,CAAC,OAAO,2BAA2B,CAAA;QAC5C,KAAK,GAAG,CAAC,CAAC,OAAO,2BAA2B,CAAA;QAC5C,KAAK,GAAG,CAAC,CAAC,OAAO,2BAA2B,CAAA;IAC9C,CAAC;AACH,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,EAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAC,CAAA;AAE3C,MAAM,mBAAmB,GAAuC,CAAC,EAC/D,QAAQ,EACR,MAAM,EACN,GAAG,GAAC,EAAE,EACN,OAAO,GAAC,EAAE,EACV,WAAW,EACX,eAAe,EACf,eAAe,GAAC,kBAAkB,EAClC,MAAM,GAAC,KAAK,EAAE,+BAA+B;EAC9C,EAAE,EAAE;IAEH,MAAM,IAAI,GAAG,WAAW,EAAE,CAAA;IAC1B,MAAM,CAAC,GAAG,MAAM,CAKD,SAAS,CAAC,CAAA;IAGzB,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAA;IAC1E,6FAA6F;IAC/F,MAAM,MAAM,GAAG,CAAC,GAAgB,EAAE,EAAE,GAAG,CAAC,CAAC,OAAQ,CAAC,GAAG,GAAG,GAAG,CAAA,CAAC,CAAC,CAAA;IAE7D,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,QAAqB,EAAE,EAAE;QACrD,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;YAC3B,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAA;YAC7B,OAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAA;QAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;YACpC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA,CAAC,+BAA+B;QAChE,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAA;QAC/B,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,SAAS,CAAC,GAAG,EAAE;QAEb,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAE,GAAG,CAAC,QAAuB,CAAC,CAAC,IAAI,EAAE,CAAA;QACxE,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAY,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzG,CAAC,CAAC,OAAO,GAAG;YACV,KAAK;YACL,YAAY,EAAE,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;YAChD,WAAW,EAAE,KAAK;YAClB,GAAG,EAAE,SAAS;SACf,CAAA;QAED,qBAAqB,CAAC,CAAC,kBAAkB,CAAC,CAAA;QAExC,qCAAqC;QACvC,OAAO,QAAQ,CACb,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EACxB,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;gBACvF,IAAI,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBACxB,qFAAqF;oBACvF,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAA;oBAC5B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC,CACF,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,MAAM,GAA6B,QAAQ,CAAC,CAAC,EACjD,GAAG,GAAC,EAAE,EACP,EAAE,EAAE;QAEH,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,EAAG,GAAG,0BAA0B,CAAC,eAAe,CAAC,CAAA;QACxG,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAA;QAExE,MAAM,kBAAkB,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;QACrE,MAAM,mBAAmB,GAAG,CAAC,gBAAgB,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAA;QAEzF,MAAM,KAAK,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC;YACrC,SAAS;YACT,CAAC;gBACD,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC;oBACvB,IAAI,CAAC,aAAa,EAAE,KAAK;oBACzB,CAAC;wBACD,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,IAAI,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAC9D,CACF,CAAA;QAED,IAAI,eAAe,GAAG,CAAC,gBAAgB,KAAK,MAAM,IAAI,gBAAgB,KAAM,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAA;QAC3H,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,gBAAgB,KAAK,WAAW,EAAE,CAAC;YAC1E,eAAe,IAAI,IAAI,CAAA;QAC3B,CAAC;aACI,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,IAAI,gBAAgB,KAAK,WAAW,EAAE,CAAC;YAC/E,eAAe,IAAI,IAAI,CAAA;QAC3B,CAAC;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAClE,MAAM,aAAa,GAAG,CAAC,WAAW,KAAK,MAAM,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAE,SAAS,CAAA;QAE5G,OAAO,CACL,MAAC,eAAe,IAAC,SAAS,EAAE,EAAE,CAAC,+CAA+C,EAAE,GAAG,CAAC,aACjF,kBAAkB,IAAI,uBAAK,kBAAkB,GAAM,EACnD,mBAAmB,IAAI,uBAAK,mBAAmB,GAAM,EACrD,YAAY,IAAI,uBAAK,YAAY,GAAM,EACvC,aAAa,IAAI,CAAC,uBAAM,aAAa,GAAM,CAAC,IAC7B,CACnB,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAGT,QAAQ,CAAC,CAAC,EACb,GAAG,GAAC,EAAE,EACN,QAAQ,GAAC,EAAE,EACZ,EAAE,EAAE;QAEH,MAAM,EACJ,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,UAAU,GACX,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAA;QAElC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,CACxB,kBAAkB,CAAC,CAAC;YAClB,CAAC,IAAI,CAAC,WAAY,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,WAAY,CAAC,WAAW,CAAC;YACtE,CAAC;gBACD,IAAI,CAAC,WAAY,CAAC,WAAW,CAChC,CAAA;QAED,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,CAC1B,MAAC,eAAe,IAAC,SAAS,EAAE,EAAE,CAAC,+CAA+C,EAAE,GAAG,CAAC,aAClF,eAAK,SAAS,EACZ,qCAAqC;wBACrC,WAAW,CAAC,GAAG,CAAC;wBAChB,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,aAE9C,aAAI,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,QAAQ,CAAC,YACzC,WAAW,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAC3D,EACL,eAAK,SAAS,EACZ,8CAA8C,GAAI,WAAW,CAAC,GAAG,CAAC;gCAClE,CAAC,kBAAkB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,aAEnD,SAAS,IAAI,CAAC,sBAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAK,CAAC,EACnE,YAAY,IAAI,CACf,KAAC,iBAAiB,IAChB,IAAI,EAAE,IAAI,CAAC,WAAW,EACtB,GAAG,EAAC,eAAe,EACnB,OAAO,EAAC,iBAAiB,EACzB,QAAQ,EAAC,6EAA6E,GACtF,CACH,IACG,IACF,EACL,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,sBAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAK,CAAC,IAC5D,CACnB,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAET,QAAQ,CAAC,CAAC,EACb,GAAG,GAAC,EAAE,EACP,EAAE,EAAE;QACH,MAAM,EAAE,gBAAgB,EAAE,GAAG,0BAA0B,CAAC,eAAe,CAAC,CAAA;QACxE,IACE,CAAC,gBAAgB;YACjB,CAAC,IAAI,CAAC,aAAa;QACnB,6CAA6C;UAC7C,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,OAAO,KAAC,kBAAkB,IACxB,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,QAAsB,EAChD,eAAe,EAAE,IAAI,EACrB,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EACzC,GAAG,EAAE,GAAG,EACR,OAAO,EAAE;gBACP,UAAU,EAAE,OAAO;gBACnB,YAAY,EAAE,IAAI;aACnB,GACD,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,mCAAmC,EAAE,GAAG,CAAC,aAC1D,KAAC,MAAM,KAAG,EACT,CAAC,CAAC,OAAO,IAAI,oEAAoE,CAAC,CACjF,MAAC,QAAQ,IACP,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAC,EACzD,SAAS,EAAE,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,EAC3C,gBAAgB,EAAE,QAAQ,EAC1B,MAAM,EAAE,MAAM,aAEd,KAAC,eAAe,cACf,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC7B,KAAC,YAAY,IAAgB,SAAS,EAAE,EAAE,CAAC,+CAA+C,EAAE,OAAO,CAAC,YAClG,KAAC,UAAU,IAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,eAAe,EAAE,GAAG,EAAC,MAAM,GAAE,IADlD,IAAI,CAAC,GAAG,CAEZ,CAChB,CAAC,GACgB,EACjB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,8BAC9B,KAAC,gBAAgB,IAAC,SAAS,EAAC,QAAQ,GAAE,EACtC,KAAC,YAAY,IAAC,SAAS,EAAC,SAAS,GAAE,IAClC,CAAC,IACK,CACZ,EACD,eAAK,SAAS,EAAC,0CAA0C,aACvD,KAAC,QAAQ,IAAC,QAAQ,EAAC,wBAAwB,GAAE,EAC7C,KAAC,QAAQ,IAAC,GAAG,EAAC,MAAM,GAAE,IAClB,IACF,CACP,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EACL,mBAAmB,IAAI,OAAO,EAC/B,CAAA"}