@vtex/faststore 0.0.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 (538) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/LICENSE +21 -0
  3. package/README.md +95 -0
  4. package/dist/actions.json +334 -0
  5. package/dist/catalog.json +6615 -0
  6. package/dist/client.d.ts +17 -0
  7. package/dist/client.js +8 -0
  8. package/dist/components.d.ts +87 -0
  9. package/dist/components.js +87 -0
  10. package/dist/content-types.json +684 -0
  11. package/dist/core/dist/actions/mock-action.d.ts +24 -0
  12. package/dist/core/dist/actions/mock-action.js +28 -0
  13. package/dist/core/dist/actions/mock-action.js.map +1 -0
  14. package/dist/core/dist/actions/registry.d.ts +24 -0
  15. package/dist/core/dist/actions/registry.js +28 -0
  16. package/dist/core/dist/actions/registry.js.map +1 -0
  17. package/dist/core/dist/define-component.d.ts +100 -0
  18. package/dist/core/dist/define-component.js +8 -0
  19. package/dist/core/dist/define-component.js.map +1 -0
  20. package/dist/core/dist/define-content-type.d.ts +95 -0
  21. package/dist/core/dist/define-content-type.js +283 -0
  22. package/dist/core/dist/define-content-type.js.map +1 -0
  23. package/dist/core/dist/index.d.ts +7 -0
  24. package/dist/core/dist/index.js +5 -0
  25. package/dist/core/dist/schema/generated/schema.d.ts +28 -0
  26. package/dist/core/dist/types.d.ts +1 -0
  27. package/dist/docs/access-code-field.md +100 -0
  28. package/dist/docs/access-code-sign-in.md +174 -0
  29. package/dist/docs/account-entry-point.md +155 -0
  30. package/dist/docs/address-summary.md +50 -0
  31. package/dist/docs/buy-button.md +162 -0
  32. package/dist/docs/carousel.md +105 -0
  33. package/dist/docs/cart-item.md +162 -0
  34. package/dist/docs/cart-totalizer.md +197 -0
  35. package/dist/docs/cart.md +495 -0
  36. package/dist/docs/client-preferences.md +184 -0
  37. package/dist/docs/client-profile-form.md +192 -0
  38. package/dist/docs/client-profile.md +117 -0
  39. package/dist/docs/container.md +97 -0
  40. package/dist/docs/document-field.md +97 -0
  41. package/dist/docs/email-field.md +93 -0
  42. package/dist/docs/email-identification.md +102 -0
  43. package/dist/docs/footer-copyright.md +112 -0
  44. package/dist/docs/footer-link-group.md +162 -0
  45. package/dist/docs/footer-root.md +145 -0
  46. package/dist/docs/footer-social.md +151 -0
  47. package/dist/docs/free-shipping-progress.md +87 -0
  48. package/dist/docs/gallery.md +84 -0
  49. package/dist/docs/header-root.md +150 -0
  50. package/dist/docs/identity-edit.md +88 -0
  51. package/dist/docs/identity-summary.md +106 -0
  52. package/dist/docs/incentives.md +151 -0
  53. package/dist/docs/logo.md +135 -0
  54. package/dist/docs/meter.md +67 -0
  55. package/dist/docs/navigation-link-list.md +171 -0
  56. package/dist/docs/navigation-link.md +163 -0
  57. package/dist/docs/navigation-menu.md +264 -0
  58. package/dist/docs/payment-methods.md +139 -0
  59. package/dist/docs/phone-field.md +106 -0
  60. package/dist/docs/postal-code-field.md +126 -0
  61. package/dist/docs/pricing.md +499 -0
  62. package/dist/docs/product-gallery.md +409 -0
  63. package/dist/docs/product-information.md +295 -0
  64. package/dist/docs/product-list.md +170 -0
  65. package/dist/docs/product-quantity.md +88 -0
  66. package/dist/docs/product-shelf.md +141 -0
  67. package/dist/docs/promotion.md +109 -0
  68. package/dist/docs/region.md +225 -0
  69. package/dist/docs/session.md +123 -0
  70. package/dist/docs/shipping-address.md +390 -0
  71. package/dist/docs/shipping-simulator.md +147 -0
  72. package/dist/docs/sign-in-form.md +117 -0
  73. package/dist/docs/tabs.md +176 -0
  74. package/dist/docs/toast.md +124 -0
  75. package/dist/docs/variant-selector.md +450 -0
  76. package/dist/graphql/define-subgraph.d.ts +12 -0
  77. package/dist/graphql/define-subgraph.js +15 -0
  78. package/dist/graphql/define-subgraph.js.map +1 -0
  79. package/dist/graphql/gql.d.ts +10 -0
  80. package/dist/graphql/gql.js +16 -0
  81. package/dist/graphql/gql.js.map +1 -0
  82. package/dist/graphql/types.d.ts +88 -0
  83. package/dist/graphql.d.ts +4 -0
  84. package/dist/graphql.js +3 -0
  85. package/dist/index.d.ts +19 -0
  86. package/dist/index.js +5 -0
  87. package/dist/internal/client.d.ts +24 -0
  88. package/dist/internal/client.js +23 -0
  89. package/dist/internal/content.d.ts +2 -0
  90. package/dist/internal/content.js +2 -0
  91. package/dist/internal/server.d.ts +7 -0
  92. package/dist/internal/server.js +6 -0
  93. package/dist/matter/access-code-sign-in/access-code-sign-in.d.ts +111 -0
  94. package/dist/matter/access-code-sign-in/access-code-sign-in.js +387 -0
  95. package/dist/matter/access-code-sign-in/access-code-sign-in.js.map +1 -0
  96. package/dist/matter/account-entry-point/account-entry-point.d.ts +64 -0
  97. package/dist/matter/account-entry-point/account-entry-point.js +151 -0
  98. package/dist/matter/account-entry-point/account-entry-point.js.map +1 -0
  99. package/dist/matter/breadcrumb/breadcrumb.d.ts +40 -0
  100. package/dist/matter/breadcrumb/breadcrumb.js +155 -0
  101. package/dist/matter/breadcrumb/breadcrumb.js.map +1 -0
  102. package/dist/matter/buy-button/buy-button.d.ts +95 -0
  103. package/dist/matter/buy-button/buy-button.js +259 -0
  104. package/dist/matter/buy-button/buy-button.js.map +1 -0
  105. package/dist/matter/cart/cart-namespace.d.ts +48 -0
  106. package/dist/matter/cart/cart-namespace.js +50 -0
  107. package/dist/matter/cart/cart-namespace.js.map +1 -0
  108. package/dist/matter/cart/cart.d.ts +312 -0
  109. package/dist/matter/cart/cart.js +1034 -0
  110. package/dist/matter/cart/cart.js.map +1 -0
  111. package/dist/matter/cart-item/cart-item.d.ts +103 -0
  112. package/dist/matter/cart-item/cart-item.js +672 -0
  113. package/dist/matter/cart-item/cart-item.js.map +1 -0
  114. package/dist/matter/cart-item-compositions/cart-item-compositions.d.ts +49 -0
  115. package/dist/matter/cart-item-compositions/cart-item-compositions.js +165 -0
  116. package/dist/matter/cart-item-compositions/cart-item-compositions.js.map +1 -0
  117. package/dist/matter/cart-item-customizations/cart-item-customizations.d.ts +28 -0
  118. package/dist/matter/cart-item-customizations/cart-item-customizations.js +73 -0
  119. package/dist/matter/cart-item-customizations/cart-item-customizations.js.map +1 -0
  120. package/dist/matter/cart-item-discounts/cart-item-discounts.d.ts +33 -0
  121. package/dist/matter/cart-item-discounts/cart-item-discounts.js +70 -0
  122. package/dist/matter/cart-item-discounts/cart-item-discounts.js.map +1 -0
  123. package/dist/matter/cart-item-seller-info/cart-item-seller-info.d.ts +24 -0
  124. package/dist/matter/cart-item-seller-info/cart-item-seller-info.js +54 -0
  125. package/dist/matter/cart-item-seller-info/cart-item-seller-info.js.map +1 -0
  126. package/dist/matter/cart-item-variations/cart-item-variations.d.ts +27 -0
  127. package/dist/matter/cart-item-variations/cart-item-variations.js +69 -0
  128. package/dist/matter/cart-item-variations/cart-item-variations.js.map +1 -0
  129. package/dist/matter/cart-totalizer/cart-totalizer.d.ts +78 -0
  130. package/dist/matter/cart-totalizer/cart-totalizer.js +220 -0
  131. package/dist/matter/cart-totalizer/cart-totalizer.js.map +1 -0
  132. package/dist/matter/client-preferences/client-preferences.d.ts +50 -0
  133. package/dist/matter/client-preferences/client-preferences.js +206 -0
  134. package/dist/matter/client-preferences/client-preferences.js.map +1 -0
  135. package/dist/matter/client-profile/client-profile.d.ts +59 -0
  136. package/dist/matter/client-profile/client-profile.js +185 -0
  137. package/dist/matter/client-profile/client-profile.js.map +1 -0
  138. package/dist/matter/client-profile-form/client-profile-form.d.ts +126 -0
  139. package/dist/matter/client-profile-form/client-profile-form.js +660 -0
  140. package/dist/matter/client-profile-form/client-profile-form.js.map +1 -0
  141. package/dist/matter/delivery-options/delivery-options-accordion.d.ts +30 -0
  142. package/dist/matter/delivery-options/delivery-options-accordion.js +189 -0
  143. package/dist/matter/delivery-options/delivery-options-accordion.js.map +1 -0
  144. package/dist/matter/delivery-options/delivery-options-controller.d.ts +49 -0
  145. package/dist/matter/delivery-options/delivery-options-controller.js +203 -0
  146. package/dist/matter/delivery-options/delivery-options-controller.js.map +1 -0
  147. package/dist/matter/delivery-options/delivery-options.d.ts +31 -0
  148. package/dist/matter/delivery-options/delivery-options.js +103 -0
  149. package/dist/matter/delivery-options/delivery-options.js.map +1 -0
  150. package/dist/matter/delivery-options/use-delivery-option-selection.d.ts +9 -0
  151. package/dist/matter/delivery-options/use-delivery-option-selection.js +76 -0
  152. package/dist/matter/delivery-options/use-delivery-option-selection.js.map +1 -0
  153. package/dist/matter/email-identification/email-identification.d.ts +37 -0
  154. package/dist/matter/email-identification/email-identification.js +111 -0
  155. package/dist/matter/email-identification/email-identification.js.map +1 -0
  156. package/dist/matter/free-shipping-progress/free-shipping-progress.d.ts +44 -0
  157. package/dist/matter/free-shipping-progress/free-shipping-progress.js +170 -0
  158. package/dist/matter/free-shipping-progress/free-shipping-progress.js.map +1 -0
  159. package/dist/matter/identity-edit/identity-edit.d.ts +52 -0
  160. package/dist/matter/identity-edit/identity-edit.js +148 -0
  161. package/dist/matter/identity-edit/identity-edit.js.map +1 -0
  162. package/dist/matter/identity-summary/identity-summary.d.ts +128 -0
  163. package/dist/matter/identity-summary/identity-summary.js +344 -0
  164. package/dist/matter/identity-summary/identity-summary.js.map +1 -0
  165. package/dist/matter/pricing/pricing.d.ts +162 -0
  166. package/dist/matter/pricing/pricing.js +793 -0
  167. package/dist/matter/pricing/pricing.js.map +1 -0
  168. package/dist/matter/product-gallery/product-gallery.d.ts +23 -0
  169. package/dist/matter/product-gallery/product-gallery.js +188 -0
  170. package/dist/matter/product-gallery/product-gallery.js.map +1 -0
  171. package/dist/matter/product-information/product-information.d.ts +61 -0
  172. package/dist/matter/product-information/product-information.js +355 -0
  173. package/dist/matter/product-information/product-information.js.map +1 -0
  174. package/dist/matter/product-list/product-list.d.ts +86 -0
  175. package/dist/matter/product-list/product-list.js +342 -0
  176. package/dist/matter/product-list/product-list.js.map +1 -0
  177. package/dist/matter/product-quantity/product-quantity.d.ts +50 -0
  178. package/dist/matter/product-quantity/product-quantity.js +111 -0
  179. package/dist/matter/product-quantity/product-quantity.js.map +1 -0
  180. package/dist/matter/product-shelf/product-shelf.d.ts +125 -0
  181. package/dist/matter/product-shelf/product-shelf.js +376 -0
  182. package/dist/matter/product-shelf/product-shelf.js.map +1 -0
  183. package/dist/matter/region/region.d.ts +211 -0
  184. package/dist/matter/region/region.js +579 -0
  185. package/dist/matter/region/region.js.map +1 -0
  186. package/dist/matter/session/session.d.ts +58 -0
  187. package/dist/matter/session/session.js +112 -0
  188. package/dist/matter/session/session.js.map +1 -0
  189. package/dist/matter/shipping-address/country-descriptors.js +101 -0
  190. package/dist/matter/shipping-address/country-descriptors.js.map +1 -0
  191. package/dist/matter/shipping-address/shipping-address.d.ts +284 -0
  192. package/dist/matter/shipping-address/shipping-address.js +1036 -0
  193. package/dist/matter/shipping-address/shipping-address.js.map +1 -0
  194. package/dist/matter/shipping-simulator/shipping-simulator.d.ts +143 -0
  195. package/dist/matter/shipping-simulator/shipping-simulator.js +644 -0
  196. package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -0
  197. package/dist/matter/sign-in-form/sign-in-form.d.ts +79 -0
  198. package/dist/matter/sign-in-form/sign-in-form.js +226 -0
  199. package/dist/matter/sign-in-form/sign-in-form.js.map +1 -0
  200. package/dist/matter/variant-selector/variant-selector.d.ts +183 -0
  201. package/dist/matter/variant-selector/variant-selector.js +840 -0
  202. package/dist/matter/variant-selector/variant-selector.js.map +1 -0
  203. package/dist/message-locales.json +7 -0
  204. package/dist/particles/access-code-field/access-code-field.d.ts +33 -0
  205. package/dist/particles/access-code-field/access-code-field.js +95 -0
  206. package/dist/particles/access-code-field/access-code-field.js.map +1 -0
  207. package/dist/particles/accordion/accordion.d.ts +45 -0
  208. package/dist/particles/accordion/accordion.js +156 -0
  209. package/dist/particles/accordion/accordion.js.map +1 -0
  210. package/dist/particles/address-summary/address-summary.d.ts +50 -0
  211. package/dist/particles/address-summary/address-summary.js +129 -0
  212. package/dist/particles/address-summary/address-summary.js.map +1 -0
  213. package/dist/particles/badge/badge.d.ts +10 -0
  214. package/dist/particles/badge/badge.js +27 -0
  215. package/dist/particles/badge/badge.js.map +1 -0
  216. package/dist/particles/button/button.d.ts +18 -0
  217. package/dist/particles/button/button.js +37 -0
  218. package/dist/particles/button/button.js.map +1 -0
  219. package/dist/particles/carousel/carousel.d.ts +60 -0
  220. package/dist/particles/carousel/carousel.js +335 -0
  221. package/dist/particles/carousel/carousel.js.map +1 -0
  222. package/dist/particles/checkbox/checkbox.d.ts +40 -0
  223. package/dist/particles/checkbox/checkbox.js +82 -0
  224. package/dist/particles/checkbox/checkbox.js.map +1 -0
  225. package/dist/particles/container/container.d.ts +20 -0
  226. package/dist/particles/container/container.js +36 -0
  227. package/dist/particles/container/container.js.map +1 -0
  228. package/dist/particles/dialog/dialog.d.ts +54 -0
  229. package/dist/particles/dialog/dialog.js +192 -0
  230. package/dist/particles/dialog/dialog.js.map +1 -0
  231. package/dist/particles/document-field/document-field.d.ts +61 -0
  232. package/dist/particles/document-field/document-field.js +146 -0
  233. package/dist/particles/document-field/document-field.js.map +1 -0
  234. package/dist/particles/drawer/drawer.d.ts +52 -0
  235. package/dist/particles/drawer/drawer.js +183 -0
  236. package/dist/particles/drawer/drawer.js.map +1 -0
  237. package/dist/particles/email-field/email-field.d.ts +37 -0
  238. package/dist/particles/email-field/email-field.js +106 -0
  239. package/dist/particles/email-field/email-field.js.map +1 -0
  240. package/dist/particles/field/field.d.ts +50 -0
  241. package/dist/particles/field/field.js +133 -0
  242. package/dist/particles/field/field.js.map +1 -0
  243. package/dist/particles/fieldset/fieldset.d.ts +16 -0
  244. package/dist/particles/fieldset/fieldset.js +52 -0
  245. package/dist/particles/fieldset/fieldset.js.map +1 -0
  246. package/dist/particles/footer-copyright/footer-copyright.d.ts +32 -0
  247. package/dist/particles/footer-copyright/footer-copyright.js +50 -0
  248. package/dist/particles/footer-copyright/footer-copyright.js.map +1 -0
  249. package/dist/particles/footer-link-group/footer-link-group.d.ts +66 -0
  250. package/dist/particles/footer-link-group/footer-link-group.js +154 -0
  251. package/dist/particles/footer-link-group/footer-link-group.js.map +1 -0
  252. package/dist/particles/footer-root/footer-root.d.ts +21 -0
  253. package/dist/particles/footer-root/footer-root.js +38 -0
  254. package/dist/particles/footer-root/footer-root.js.map +1 -0
  255. package/dist/particles/footer-social/footer-social.d.ts +79 -0
  256. package/dist/particles/footer-social/footer-social.js +176 -0
  257. package/dist/particles/footer-social/footer-social.js.map +1 -0
  258. package/dist/particles/gallery/gallery.d.ts +181 -0
  259. package/dist/particles/gallery/gallery.js +920 -0
  260. package/dist/particles/gallery/gallery.js.map +1 -0
  261. package/dist/particles/header-root/header-root.d.ts +21 -0
  262. package/dist/particles/header-root/header-root.js +38 -0
  263. package/dist/particles/header-root/header-root.js.map +1 -0
  264. package/dist/particles/icon/icon.d.ts +22 -0
  265. package/dist/particles/icon/icon.js +48 -0
  266. package/dist/particles/icon/icon.js.map +1 -0
  267. package/dist/particles/image/image.d.ts +13 -0
  268. package/dist/particles/image/image.js +59 -0
  269. package/dist/particles/image/image.js.map +1 -0
  270. package/dist/particles/incentives/incentives.d.ts +85 -0
  271. package/dist/particles/incentives/incentives.js +200 -0
  272. package/dist/particles/incentives/incentives.js.map +1 -0
  273. package/dist/particles/input/input.d.ts +9 -0
  274. package/dist/particles/input/input.js +28 -0
  275. package/dist/particles/input/input.js.map +1 -0
  276. package/dist/particles/logo/logo.d.ts +55 -0
  277. package/dist/particles/logo/logo.js +96 -0
  278. package/dist/particles/logo/logo.js.map +1 -0
  279. package/dist/particles/menu/menu.d.ts +103 -0
  280. package/dist/particles/menu/menu.js +409 -0
  281. package/dist/particles/menu/menu.js.map +1 -0
  282. package/dist/particles/menubar/menubar.d.ts +18 -0
  283. package/dist/particles/menubar/menubar.js +42 -0
  284. package/dist/particles/menubar/menubar.js.map +1 -0
  285. package/dist/particles/meter/meter.d.ts +36 -0
  286. package/dist/particles/meter/meter.js +132 -0
  287. package/dist/particles/meter/meter.js.map +1 -0
  288. package/dist/particles/navigation-link/navigation-link.d.ts +43 -0
  289. package/dist/particles/navigation-link/navigation-link.js +82 -0
  290. package/dist/particles/navigation-link/navigation-link.js.map +1 -0
  291. package/dist/particles/navigation-link-list/navigation-link-list.d.ts +59 -0
  292. package/dist/particles/navigation-link-list/navigation-link-list.js +103 -0
  293. package/dist/particles/navigation-link-list/navigation-link-list.js.map +1 -0
  294. package/dist/particles/navigation-menu/navigation-menu.d.ts +78 -0
  295. package/dist/particles/navigation-menu/navigation-menu.js +295 -0
  296. package/dist/particles/navigation-menu/navigation-menu.js.map +1 -0
  297. package/dist/particles/number-field/number-field.d.ts +46 -0
  298. package/dist/particles/number-field/number-field.js +169 -0
  299. package/dist/particles/number-field/number-field.js.map +1 -0
  300. package/dist/particles/password-field/password-field.d.ts +31 -0
  301. package/dist/particles/password-field/password-field.js +109 -0
  302. package/dist/particles/password-field/password-field.js.map +1 -0
  303. package/dist/particles/payment-methods/payment-methods.d.ts +72 -0
  304. package/dist/particles/payment-methods/payment-methods.js +151 -0
  305. package/dist/particles/payment-methods/payment-methods.js.map +1 -0
  306. package/dist/particles/phone-field/phone-field.d.ts +67 -0
  307. package/dist/particles/phone-field/phone-field.js +250 -0
  308. package/dist/particles/phone-field/phone-field.js.map +1 -0
  309. package/dist/particles/popover/popover.d.ts +68 -0
  310. package/dist/particles/popover/popover.js +284 -0
  311. package/dist/particles/popover/popover.js.map +1 -0
  312. package/dist/particles/postal-code-field/postal-code-field.d.ts +75 -0
  313. package/dist/particles/postal-code-field/postal-code-field.js +169 -0
  314. package/dist/particles/postal-code-field/postal-code-field.js.map +1 -0
  315. package/dist/particles/promotion/promotion.d.ts +46 -0
  316. package/dist/particles/promotion/promotion.js +78 -0
  317. package/dist/particles/promotion/promotion.js.map +1 -0
  318. package/dist/particles/quantity-selector/quantity-selector.d.ts +30 -0
  319. package/dist/particles/quantity-selector/quantity-selector.js +116 -0
  320. package/dist/particles/quantity-selector/quantity-selector.js.map +1 -0
  321. package/dist/particles/radio/radio.d.ts +36 -0
  322. package/dist/particles/radio/radio.js +76 -0
  323. package/dist/particles/radio/radio.js.map +1 -0
  324. package/dist/particles/scroll-area/scroll-area.d.ts +36 -0
  325. package/dist/particles/scroll-area/scroll-area.js +145 -0
  326. package/dist/particles/scroll-area/scroll-area.js.map +1 -0
  327. package/dist/particles/select/select.d.ts +125 -0
  328. package/dist/particles/select/select.js +478 -0
  329. package/dist/particles/select/select.js.map +1 -0
  330. package/dist/particles/separator/separator.d.ts +12 -0
  331. package/dist/particles/separator/separator.js +33 -0
  332. package/dist/particles/separator/separator.js.map +1 -0
  333. package/dist/particles/shared/input-mask.d.ts +5 -0
  334. package/dist/particles/shared/input-mask.js +58 -0
  335. package/dist/particles/shared/input-mask.js.map +1 -0
  336. package/dist/particles/spinner/spinner.d.ts +13 -0
  337. package/dist/particles/spinner/spinner.js +31 -0
  338. package/dist/particles/spinner/spinner.js.map +1 -0
  339. package/dist/particles/switch/switch.d.ts +27 -0
  340. package/dist/particles/switch/switch.js +59 -0
  341. package/dist/particles/switch/switch.js.map +1 -0
  342. package/dist/particles/tabs/tabs.d.ts +45 -0
  343. package/dist/particles/tabs/tabs.js +164 -0
  344. package/dist/particles/tabs/tabs.js.map +1 -0
  345. package/dist/particles/text/text.d.ts +24 -0
  346. package/dist/particles/text/text.js +40 -0
  347. package/dist/particles/text/text.js.map +1 -0
  348. package/dist/particles/toast/toast.d.ts +83 -0
  349. package/dist/particles/toast/toast.js +194 -0
  350. package/dist/particles/toast/toast.js.map +1 -0
  351. package/dist/particles/toggle/toggle.d.ts +26 -0
  352. package/dist/particles/toggle/toggle.js +61 -0
  353. package/dist/particles/toggle/toggle.js.map +1 -0
  354. package/dist/particles/tooltip/tooltip.d.ts +61 -0
  355. package/dist/particles/tooltip/tooltip.js +240 -0
  356. package/dist/particles/tooltip/tooltip.js.map +1 -0
  357. package/dist/schema.graphql +2953 -0
  358. package/dist/sdk/actions/cart-action-provider.d.ts +19 -0
  359. package/dist/sdk/actions/cart-action-provider.js +23 -0
  360. package/dist/sdk/actions/cart-action-provider.js.map +1 -0
  361. package/dist/sdk/actions/identity-action-provider.d.ts +15 -0
  362. package/dist/sdk/actions/identity-action-provider.js +19 -0
  363. package/dist/sdk/actions/identity-action-provider.js.map +1 -0
  364. package/dist/sdk/actions/index.d.ts +7 -0
  365. package/dist/sdk/actions/index.js +6 -0
  366. package/dist/sdk/actions/inject-actions.d.ts +14 -0
  367. package/dist/sdk/actions/inject-actions.js +36 -0
  368. package/dist/sdk/actions/inject-actions.js.map +1 -0
  369. package/dist/sdk/actions/region-action-provider.d.ts +15 -0
  370. package/dist/sdk/actions/region-action-provider.js +19 -0
  371. package/dist/sdk/actions/region-action-provider.js.map +1 -0
  372. package/dist/sdk/actions/session-action-provider.d.ts +15 -0
  373. package/dist/sdk/actions/session-action-provider.js +19 -0
  374. package/dist/sdk/actions/session-action-provider.js.map +1 -0
  375. package/dist/sdk/actions/shipping-action-provider.d.ts +15 -0
  376. package/dist/sdk/actions/shipping-action-provider.js +19 -0
  377. package/dist/sdk/actions/shipping-action-provider.js.map +1 -0
  378. package/dist/sdk/actions/types.d.ts +21 -0
  379. package/dist/sdk/cache/storefront-cache.js +35 -0
  380. package/dist/sdk/cache/storefront-cache.js.map +1 -0
  381. package/dist/sdk/cart/operations.d.ts +31 -0
  382. package/dist/sdk/cart/operations.js +215 -0
  383. package/dist/sdk/cart/operations.js.map +1 -0
  384. package/dist/sdk/cart/optimistic.d.ts +24 -0
  385. package/dist/sdk/cart/optimistic.js +164 -0
  386. package/dist/sdk/cart/optimistic.js.map +1 -0
  387. package/dist/sdk/cart/use-cart-actions.d.ts +56 -0
  388. package/dist/sdk/cart/use-cart-actions.js +348 -0
  389. package/dist/sdk/cart/use-cart-actions.js.map +1 -0
  390. package/dist/sdk/cart/use-cart-validate-on-open.js +50 -0
  391. package/dist/sdk/cart/use-cart-validate-on-open.js.map +1 -0
  392. package/dist/sdk/cart/write-gate.js +54 -0
  393. package/dist/sdk/cart/write-gate.js.map +1 -0
  394. package/dist/sdk/client/assert-api-url.js +20 -0
  395. package/dist/sdk/client/assert-api-url.js.map +1 -0
  396. package/dist/sdk/client/create-client.d.ts +23 -0
  397. package/dist/sdk/client/create-client.js +46 -0
  398. package/dist/sdk/client/create-client.js.map +1 -0
  399. package/dist/sdk/client/fetch-page-data.d.ts +39 -0
  400. package/dist/sdk/client/fetch-page-data.js +33 -0
  401. package/dist/sdk/client/fetch-page-data.js.map +1 -0
  402. package/dist/sdk/client/register-preload-query.d.ts +24 -0
  403. package/dist/sdk/client/register-preload-query.js +33 -0
  404. package/dist/sdk/client/register-preload-query.js.map +1 -0
  405. package/dist/sdk/content/create-content-runtime.d.ts +68 -0
  406. package/dist/sdk/content/create-content-runtime.js +503 -0
  407. package/dist/sdk/content/create-content-runtime.js.map +1 -0
  408. package/dist/sdk/context/headers.d.ts +15 -0
  409. package/dist/sdk/context/headers.js +21 -0
  410. package/dist/sdk/context/headers.js.map +1 -0
  411. package/dist/sdk/context/storefront-context.d.ts +11 -0
  412. package/dist/sdk/context/storefront-context.js +29 -0
  413. package/dist/sdk/context/storefront-context.js.map +1 -0
  414. package/dist/sdk/data/data-override-context.d.ts +12 -0
  415. package/dist/sdk/data/data-override-context.js +19 -0
  416. package/dist/sdk/data/data-override-context.js.map +1 -0
  417. package/dist/sdk/data/entity-subscriber.js +28 -0
  418. package/dist/sdk/data/entity-subscriber.js.map +1 -0
  419. package/dist/sdk/data/hot-data-provider.d.ts +19 -0
  420. package/dist/sdk/data/hot-data-provider.js +33 -0
  421. package/dist/sdk/data/hot-data-provider.js.map +1 -0
  422. package/dist/sdk/data/index.d.ts +8 -0
  423. package/dist/sdk/data/index.js +8 -0
  424. package/dist/sdk/data/list-item-ref-context.d.ts +20 -0
  425. package/dist/sdk/data/list-item-ref-context.js +11 -0
  426. package/dist/sdk/data/list-item-ref-context.js.map +1 -0
  427. package/dist/sdk/data/multiple-reactive-data-provider.d.ts +32 -0
  428. package/dist/sdk/data/multiple-reactive-data-provider.js +20 -0
  429. package/dist/sdk/data/multiple-reactive-data-provider.js.map +1 -0
  430. package/dist/sdk/data/page-reactive-data-root.d.ts +53 -0
  431. package/dist/sdk/data/page-reactive-data-root.js +153 -0
  432. package/dist/sdk/data/page-reactive-data-root.js.map +1 -0
  433. package/dist/sdk/data/reactive-data-provider.d.ts +25 -0
  434. package/dist/sdk/data/reactive-data-provider.js +24 -0
  435. package/dist/sdk/data/reactive-data-provider.js.map +1 -0
  436. package/dist/sdk/data/reactive-list-item-data-provider.d.ts +26 -0
  437. package/dist/sdk/data/reactive-list-item-data-provider.js +42 -0
  438. package/dist/sdk/data/reactive-list-item-data-provider.js.map +1 -0
  439. package/dist/sdk/data/use-reactive-entity.js +40 -0
  440. package/dist/sdk/data/use-reactive-entity.js.map +1 -0
  441. package/dist/sdk/format/client.d.ts +12 -0
  442. package/dist/sdk/format/client.js +20 -0
  443. package/dist/sdk/format/client.js.map +1 -0
  444. package/dist/sdk/format/formatters.d.ts +32 -0
  445. package/dist/sdk/format/formatters.js +45 -0
  446. package/dist/sdk/format/formatters.js.map +1 -0
  447. package/dist/sdk/generated/fragment-types.js +23 -0
  448. package/dist/sdk/generated/fragment-types.js.map +1 -0
  449. package/dist/sdk/generated/gql.js +51 -0
  450. package/dist/sdk/generated/gql.js.map +1 -0
  451. package/dist/sdk/generated/graphql.d.ts +622 -0
  452. package/dist/sdk/generated/graphql.js +11917 -0
  453. package/dist/sdk/generated/graphql.js.map +1 -0
  454. package/dist/sdk/graphql-tag.d.ts +10 -0
  455. package/dist/sdk/graphql-tag.js +21 -0
  456. package/dist/sdk/graphql-tag.js.map +1 -0
  457. package/dist/sdk/i18n/client.d.ts +4 -0
  458. package/dist/sdk/i18n/client.js +4 -0
  459. package/dist/sdk/i18n/locales.d.ts +8 -0
  460. package/dist/sdk/i18n/locales.js +57 -0
  461. package/dist/sdk/i18n/locales.js.map +1 -0
  462. package/dist/sdk/i18n/messages/en-US.js +24 -0
  463. package/dist/sdk/i18n/messages/en-US.js.map +1 -0
  464. package/dist/sdk/i18n/messages/en-US.json +19 -0
  465. package/dist/sdk/i18n/messages/en-US.json.d.ts +23 -0
  466. package/dist/sdk/i18n/messages/es-ES.js +24 -0
  467. package/dist/sdk/i18n/messages/es-ES.js.map +1 -0
  468. package/dist/sdk/i18n/messages/es-ES.json +19 -0
  469. package/dist/sdk/i18n/messages/pt-BR.js +24 -0
  470. package/dist/sdk/i18n/messages/pt-BR.js.map +1 -0
  471. package/dist/sdk/i18n/messages/pt-BR.json +19 -0
  472. package/dist/sdk/i18n/provider.d.ts +1 -0
  473. package/dist/sdk/i18n/provider.js +30 -0
  474. package/dist/sdk/i18n/provider.js.map +1 -0
  475. package/dist/sdk/i18n/server.d.ts +28 -0
  476. package/dist/sdk/i18n/server.js +59 -0
  477. package/dist/sdk/i18n/server.js.map +1 -0
  478. package/dist/sdk/identity/operations.d.ts +34 -0
  479. package/dist/sdk/identity/operations.js +78 -0
  480. package/dist/sdk/identity/operations.js.map +1 -0
  481. package/dist/sdk/identity/use-identity-actions.d.ts +62 -0
  482. package/dist/sdk/identity/use-identity-actions.js +180 -0
  483. package/dist/sdk/identity/use-identity-actions.js.map +1 -0
  484. package/dist/sdk/provider/index.d.ts +2 -0
  485. package/dist/sdk/provider/index.js +2 -0
  486. package/dist/sdk/provider/storefront-provider.d.ts +32 -0
  487. package/dist/sdk/provider/storefront-provider.js +111 -0
  488. package/dist/sdk/provider/storefront-provider.js.map +1 -0
  489. package/dist/sdk/region/operations.d.ts +6 -0
  490. package/dist/sdk/region/region-operations.d.ts +30 -0
  491. package/dist/sdk/region/region-operations.js +23 -0
  492. package/dist/sdk/region/region-operations.js.map +1 -0
  493. package/dist/sdk/region/use-region-actions.d.ts +23 -0
  494. package/dist/sdk/region/use-region-actions.js +66 -0
  495. package/dist/sdk/region/use-region-actions.js.map +1 -0
  496. package/dist/sdk/seller.js +11 -0
  497. package/dist/sdk/seller.js.map +1 -0
  498. package/dist/sdk/session/auth-operations.d.ts +47 -0
  499. package/dist/sdk/session/auth-operations.js +79 -0
  500. package/dist/sdk/session/auth-operations.js.map +1 -0
  501. package/dist/sdk/session/operations.d.ts +6 -0
  502. package/dist/sdk/session/use-session-actions.d.ts +27 -0
  503. package/dist/sdk/session/use-session-actions.js +126 -0
  504. package/dist/sdk/session/use-session-actions.js.map +1 -0
  505. package/dist/sdk/shipping/cart-operations.d.ts +3 -0
  506. package/dist/sdk/shipping/cart-operations.js +33 -0
  507. package/dist/sdk/shipping/cart-operations.js.map +1 -0
  508. package/dist/sdk/shipping/operations.d.ts +3 -0
  509. package/dist/sdk/shipping/operations.js +33 -0
  510. package/dist/sdk/shipping/operations.js.map +1 -0
  511. package/dist/sdk/shipping/option-select-operations.d.ts +24 -0
  512. package/dist/sdk/shipping/option-select-operations.js +45 -0
  513. package/dist/sdk/shipping/option-select-operations.js.map +1 -0
  514. package/dist/sdk/shipping/request-timeout.js +41 -0
  515. package/dist/sdk/shipping/request-timeout.js.map +1 -0
  516. package/dist/sdk/shipping/shipping-operations.d.ts +38 -0
  517. package/dist/sdk/shipping/shipping-operations.js +77 -0
  518. package/dist/sdk/shipping/shipping-operations.js.map +1 -0
  519. package/dist/sdk/shipping/use-cart-shipping-simulation.d.ts +7 -0
  520. package/dist/sdk/shipping/use-cart-shipping-simulation.js +72 -0
  521. package/dist/sdk/shipping/use-cart-shipping-simulation.js.map +1 -0
  522. package/dist/sdk/shipping/use-shipping-actions.d.ts +27 -0
  523. package/dist/sdk/shipping/use-shipping-actions.js +113 -0
  524. package/dist/sdk/shipping/use-shipping-actions.js.map +1 -0
  525. package/dist/sdk/shipping/use-shipping-simulation.d.ts +7 -0
  526. package/dist/sdk/shipping/use-shipping-simulation.js +72 -0
  527. package/dist/sdk/shipping/use-shipping-simulation.js.map +1 -0
  528. package/dist/sdk/state/cart.d.ts +42 -0
  529. package/dist/sdk/state/cart.js +64 -0
  530. package/dist/sdk/state/cart.js.map +1 -0
  531. package/dist/sdk/state/index.js +3 -0
  532. package/dist/sdk/state/variant-selector.d.ts +17 -0
  533. package/dist/sdk/state/variant-selector.js +14 -0
  534. package/dist/sdk/state/variant-selector.js.map +1 -0
  535. package/dist/utils/safe-href.js +63 -0
  536. package/dist/utils/safe-href.js.map +1 -0
  537. package/package.json +84 -0
  538. package/src/styles/tailwind.css +32 -0
@@ -0,0 +1,793 @@
1
+ "use client";
2
+ import { defineComponent } from "../../core/dist/define-component.js";
3
+ import "../../core/dist/index.js";
4
+ import { useStorefrontContext } from "../../sdk/context/storefront-context.js";
5
+ import { graphql } from "../../sdk/generated/gql.js";
6
+ import { useDataOverride } from "../../sdk/data/data-override-context.js";
7
+ import { HotDataProvider } from "../../sdk/data/hot-data-provider.js";
8
+ import { resolveDefaultSeller } from "../../sdk/seller.js";
9
+ import { publishedVariantIdFor, selectedVariantVar } from "../../sdk/state/variant-selector.js";
10
+ import { PopoverTrigger } from "../../particles/popover/popover.js";
11
+ import { TabsPanel, TabsTab } from "../../particles/tabs/tabs.js";
12
+ import { useReactiveVar } from "@apollo/client/react";
13
+ import { Suspense, createContext, useContext } from "react";
14
+ import { jsx, jsxs } from "react/jsx-runtime";
15
+ //#region src/matter/pricing/pricing.tsx
16
+ const fragment = `
17
+ fragment PricingData on Query {
18
+ productBySlug(slug: $slug) {
19
+ __typename
20
+ id
21
+ variants(first: 1) {
22
+ edges {
23
+ node {
24
+ sellers {
25
+ isDefault
26
+ offer {
27
+ price { amount currencyCode }
28
+ listPrice { amount currencyCode }
29
+ spotPrice { amount currencyCode }
30
+ installmentPlans {
31
+ paymentMethod
32
+ paymentType
33
+ installments {
34
+ count
35
+ value { amount currencyCode }
36
+ totalAmount { amount currencyCode }
37
+ interestRate
38
+ interestFree
39
+ }
40
+ }
41
+ discountHighlights
42
+ promotions {
43
+ name
44
+ }
45
+ }
46
+ }
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ `;
53
+ graphql(`
54
+ fragment VariantPricingData on Variant {
55
+ __typename
56
+ id
57
+ sellers {
58
+ isDefault
59
+ offer {
60
+ price { amount currencyCode }
61
+ listPrice { amount currencyCode }
62
+ spotPrice { amount currencyCode }
63
+ installmentPlans {
64
+ paymentMethod
65
+ paymentType
66
+ installments {
67
+ count
68
+ value { amount currencyCode }
69
+ totalAmount { amount currencyCode }
70
+ interestRate
71
+ interestFree
72
+ }
73
+ }
74
+ discountHighlights
75
+ promotions {
76
+ name
77
+ }
78
+ }
79
+ }
80
+ }
81
+ `);
82
+ const variantQuery = graphql(`
83
+ query VariantPricingQuery($id: ID!) {
84
+ node(id: $id) {
85
+ __typename
86
+ ... on Variant {
87
+ ...VariantPricingData
88
+ }
89
+ }
90
+ }
91
+ `);
92
+ const PRICING_CONTEXT_UNSET = Symbol("PricingContextUnset");
93
+ const PricingContext = createContext(PRICING_CONTEXT_UNSET);
94
+ const InstallmentItemContext = createContext(null);
95
+ const InstallmentPlanItemContext = createContext(null);
96
+ const HighlightItemContext = createContext(null);
97
+ const PromotionItemContext = createContext(null);
98
+ function usePricing() {
99
+ const ctx = useContext(PricingContext);
100
+ if (ctx === PRICING_CONTEXT_UNSET) throw new Error("Pricing components must be used inside PricingRoot.");
101
+ return ctx;
102
+ }
103
+ function useInstallmentItem() {
104
+ const ctx = useContext(InstallmentItemContext);
105
+ if (!ctx) throw new Error("PricingInstallment must be used inside PricingInstallments.");
106
+ return ctx;
107
+ }
108
+ function useInstallmentPlanItem(caller = "PricingInstallmentPlan", parent = "PricingInstallmentPlans") {
109
+ const ctx = useContext(InstallmentPlanItemContext);
110
+ if (!ctx) throw new Error(`${caller} must be used inside ${parent}.`);
111
+ return ctx;
112
+ }
113
+ function useHighlightItem() {
114
+ const ctx = useContext(HighlightItemContext);
115
+ if (ctx === null) throw new Error("PricingHighlight must be used inside PricingHighlights.");
116
+ return ctx;
117
+ }
118
+ function usePromotionItem() {
119
+ const ctx = useContext(PromotionItemContext);
120
+ if (!ctx) throw new Error("PricingPromotion must be used inside PricingPromotions.");
121
+ return ctx;
122
+ }
123
+ function formatPrice(value, locale, currency) {
124
+ return new Intl.NumberFormat(locale, {
125
+ style: "currency",
126
+ currency
127
+ }).format(value);
128
+ }
129
+ function findBestInstallment(plans) {
130
+ const allInstallments = plans.flatMap((plan) => plan.installments);
131
+ if (allInstallments.length === 0) return null;
132
+ const interestFree = allInstallments.filter((i) => i.interestFree);
133
+ if (interestFree.length > 0) return interestFree.reduce((best, current) => current.count > best.count ? current : best);
134
+ return allInstallments.reduce((best, current) => current.count > best.count ? current : best);
135
+ }
136
+ function normalizeOffer(offer) {
137
+ return {
138
+ price: offer.price.amount,
139
+ listPrice: offer.listPrice.amount,
140
+ spotPrice: offer.spotPrice.amount,
141
+ currency: offer.price.currencyCode,
142
+ installmentPlans: offer.installmentPlans.map((plan) => ({
143
+ paymentMethod: plan.paymentMethod,
144
+ paymentType: plan.paymentType,
145
+ installments: plan.installments.map((inst) => ({
146
+ count: inst.count,
147
+ value: inst.value.amount,
148
+ totalAmount: inst.totalAmount.amount,
149
+ interestRate: inst.interestRate,
150
+ interestFree: inst.interestFree
151
+ }))
152
+ })),
153
+ discountHighlights: offer.discountHighlights,
154
+ promotions: offer.promotions.map((promotion) => ({ name: promotion.name }))
155
+ };
156
+ }
157
+ function pricingOfferFromVariant(variant) {
158
+ const offer = resolveDefaultSeller(variant.sellers)?.offer;
159
+ if (!offer) return null;
160
+ return normalizeOffer(offer);
161
+ }
162
+ function transformPricingData(data) {
163
+ const edge = data.variants.edges[0];
164
+ if (!edge) return null;
165
+ return pricingOfferFromVariant(edge.node);
166
+ }
167
+ function transformVariantPricingData(variant) {
168
+ return pricingOfferFromVariant(variant);
169
+ }
170
+ const PricingRootDefinition = defineComponent({
171
+ name: "PricingRoot",
172
+ importPath: "@vtex/faststore/components",
173
+ component: PricingRoot,
174
+ fragment,
175
+ fetchStrategy: "lazy",
176
+ skeleton: PricingSkeleton,
177
+ editor: {
178
+ label: "Pricing",
179
+ category: "commerce"
180
+ },
181
+ schema: { selectedVariantId: {
182
+ type: "string",
183
+ label: "Selected Variant ID"
184
+ } },
185
+ guideline: "Root container for the PDP pricing block; all other Pricing sub-components must be descendants of it. Automatically recomputes the offer when a shopper picks a VariantSelector swatch (it reads the published variant selection); the selectedVariantId prop is an optional pre-selection fallback. Falls back silently to the product-level offer on variant fetch error. See pricing.md."
186
+ });
187
+ const PricingSellingPriceDefinition = defineComponent({
188
+ name: "PricingSellingPrice",
189
+ importPath: "@vtex/faststore/components",
190
+ component: PricingSellingPrice,
191
+ editor: {
192
+ label: "Selling Price",
193
+ category: "commerce"
194
+ },
195
+ schema: {},
196
+ guideline: "Displays the current selling price; must be a descendant of PricingRoot."
197
+ });
198
+ const PricingListPriceDefinition = defineComponent({
199
+ name: "PricingListPrice",
200
+ importPath: "@vtex/faststore/components",
201
+ component: PricingListPrice,
202
+ editor: {
203
+ label: "List Price",
204
+ category: "commerce"
205
+ },
206
+ schema: {},
207
+ guideline: "Displays the original (strikethrough) list price; only renders when a discount exists. Must be a descendant of PricingRoot."
208
+ });
209
+ const PricingSpotPriceDefinition = defineComponent({
210
+ name: "PricingSpotPrice",
211
+ importPath: "@vtex/faststore/components",
212
+ component: PricingSpotPrice,
213
+ editor: {
214
+ label: "Spot Price",
215
+ category: "commerce"
216
+ },
217
+ schema: {},
218
+ guideline: "Displays the best cash/instant-payment price (e.g. Pix); only renders when spotPrice is lower than the selling price. Must be a descendant of PricingRoot."
219
+ });
220
+ const PricingInstallmentsDefinition = defineComponent({
221
+ name: "PricingInstallments",
222
+ importPath: "@vtex/faststore/components",
223
+ component: PricingInstallments,
224
+ editor: {
225
+ label: "Installments",
226
+ category: "commerce"
227
+ },
228
+ schema: {},
229
+ guideline: "Shortcut container that exposes the single best installment across all plans; use PricingInstallmentPlans instead when a per-payment-method breakdown is needed. Must be a descendant of PricingRoot."
230
+ });
231
+ const PricingInstallmentPlansDefinition = defineComponent({
232
+ name: "PricingInstallmentPlans",
233
+ importPath: "@vtex/faststore/components",
234
+ component: PricingInstallmentPlans,
235
+ editor: {
236
+ label: "Installment Plans",
237
+ category: "commerce"
238
+ },
239
+ schema: {},
240
+ guideline: "Renders one row per payment method; use PricingInstallments instead when only the single best plan is needed. Must be a descendant of PricingRoot."
241
+ });
242
+ const PricingInstallmentPlanDefinition = defineComponent({
243
+ name: "PricingInstallmentPlan",
244
+ importPath: "@vtex/faststore/components",
245
+ component: PricingInstallmentPlan,
246
+ editor: {
247
+ label: "Installment Plan",
248
+ category: "commerce"
249
+ },
250
+ schema: {},
251
+ guideline: "Renders a single plan row inside PricingInstallmentPlans; nest PricingInstallmentsForPlan inside it to list every installment tier instead of just the best one. Must be a descendant of PricingInstallmentPlans."
252
+ });
253
+ const PricingInstallmentsForPlanDefinition = defineComponent({
254
+ name: "PricingInstallmentsForPlan",
255
+ importPath: "@vtex/faststore/components",
256
+ component: PricingInstallmentsForPlan,
257
+ editor: {
258
+ label: "Installments For Plan",
259
+ category: "commerce"
260
+ },
261
+ schema: {},
262
+ guideline: "Iterates every installment tier (1x, 2x, … Nx) of the enclosing plan; must be a descendant of PricingInstallmentPlan."
263
+ });
264
+ const PricingPaymentMethodsTriggerDefinition = defineComponent({
265
+ name: "PricingPaymentMethodsTrigger",
266
+ importPath: "@vtex/faststore/components",
267
+ component: PricingPaymentMethodsTrigger,
268
+ editor: {
269
+ label: "Payment Methods Trigger",
270
+ category: "action"
271
+ },
272
+ schema: {},
273
+ guideline: "Button that opens the payment-methods disclosure panel; must be a descendant of PopoverRoot."
274
+ });
275
+ const PricingPaymentMethodsListDefinition = defineComponent({
276
+ name: "PricingPaymentMethodsList",
277
+ importPath: "@vtex/faststore/components",
278
+ component: PricingPaymentMethodsList,
279
+ editor: {
280
+ label: "Payment Methods List",
281
+ category: "commerce"
282
+ },
283
+ schema: {},
284
+ guideline: "Flat disclosure panel content listing every payment plan; place inside PopoverPopup, DialogPopup, or DrawerPopup. Must be a descendant of PricingRoot."
285
+ });
286
+ const PricingPaymentMethodsTabListDefinition = defineComponent({
287
+ name: "PricingPaymentMethodsTabList",
288
+ importPath: "@vtex/faststore/components",
289
+ component: PricingPaymentMethodsTabList,
290
+ editor: {
291
+ label: "Payment Methods Tab List",
292
+ category: "commerce"
293
+ },
294
+ schema: {},
295
+ guideline: "Emits one tab per payment plan for the tab-grouped disclosure pattern; must be a descendant of TabsList (which is inside TabsRoot). Pair with PricingPaymentMethodsTabPanels."
296
+ });
297
+ const PricingPaymentMethodsTabPanelsDefinition = defineComponent({
298
+ name: "PricingPaymentMethodsTabPanels",
299
+ importPath: "@vtex/faststore/components",
300
+ component: PricingPaymentMethodsTabPanels,
301
+ editor: {
302
+ label: "Payment Methods Tab Panels",
303
+ category: "commerce"
304
+ },
305
+ schema: {},
306
+ guideline: "Emits one panel per payment plan for the tab-grouped disclosure pattern; must be a sibling of TabsList under TabsRoot (not nested inside TabsList). Pair with PricingPaymentMethodsTabList."
307
+ });
308
+ const PricingPaymentMethodNameDefinition = defineComponent({
309
+ name: "PricingPaymentMethodName",
310
+ importPath: "@vtex/faststore/components",
311
+ component: PricingPaymentMethodName,
312
+ editor: {
313
+ label: "Payment Method Name",
314
+ category: "commerce"
315
+ },
316
+ schema: {},
317
+ guideline: "Renders the enclosing plan's payment method name (e.g. \"Visa\", \"Pix\"); must be inside a plan context — PricingInstallmentPlan, PricingPaymentMethodsTabList, or PricingPaymentMethodsTabPanels."
318
+ });
319
+ const PricingInstallmentDefinition = defineComponent({
320
+ name: "PricingInstallment",
321
+ importPath: "@vtex/faststore/components",
322
+ component: PricingInstallment,
323
+ editor: {
324
+ label: "Installment",
325
+ category: "commerce"
326
+ },
327
+ schema: {
328
+ template: {
329
+ type: "string",
330
+ default: "{count}x de {value}",
331
+ label: "Template"
332
+ },
333
+ interestFreeLabel: {
334
+ type: "string",
335
+ default: "sem juros",
336
+ label: "Interest-free label"
337
+ }
338
+ },
339
+ guideline: "Renders a single installment line using {count} and {value} template placeholders; must be a descendant of PricingInstallments, PricingInstallmentPlan, or PricingInstallmentsForPlan."
340
+ });
341
+ const PricingDiscountDefinition = defineComponent({
342
+ name: "PricingDiscount",
343
+ importPath: "@vtex/faststore/components",
344
+ component: PricingDiscount,
345
+ editor: {
346
+ label: "Discount Badge",
347
+ category: "commerce"
348
+ },
349
+ schema: {
350
+ format: {
351
+ type: ["percentage", "absolute"],
352
+ default: "percentage",
353
+ label: "Discount Format"
354
+ },
355
+ template: {
356
+ type: "string",
357
+ label: "Template"
358
+ }
359
+ },
360
+ guideline: "Discount badge for the listPrice-vs-price markdown; use PricingSpotDiscount instead for the spotPrice-vs-price (Pix/cash) percentage. The format prop switches between a percentage (-25%, default) and an absolute amount (-R$ 10,00); the template supports {percentage} and {amount} placeholders and defaults to the format-appropriate one. Recomputes automatically on swatch change. Must be a descendant of PricingRoot."
361
+ });
362
+ const PricingSpotDiscountDefinition = defineComponent({
363
+ name: "PricingSpotDiscount",
364
+ importPath: "@vtex/faststore/components",
365
+ component: PricingSpotDiscount,
366
+ editor: {
367
+ label: "Spot Discount Badge",
368
+ category: "commerce"
369
+ },
370
+ schema: { template: {
371
+ type: "string",
372
+ default: "-{percentage}%",
373
+ label: "Template"
374
+ } },
375
+ guideline: "Discount badge for the spotPrice-vs-price (cash/Pix) percentage; use PricingDiscount instead for the listPrice-vs-price percentage. Must be a descendant of PricingRoot."
376
+ });
377
+ const PricingHighlightsDefinition = defineComponent({
378
+ name: "PricingHighlights",
379
+ importPath: "@vtex/faststore/components",
380
+ component: PricingHighlights,
381
+ editor: {
382
+ label: "Highlights",
383
+ category: "commerce"
384
+ },
385
+ schema: {},
386
+ guideline: "Iterates the offer's discount highlight labels (e.g. \"Black Friday\", \"Exclusivo\"); place PricingHighlight as a child. Must be a descendant of PricingRoot."
387
+ });
388
+ const PricingHighlightDefinition = defineComponent({
389
+ name: "PricingHighlight",
390
+ importPath: "@vtex/faststore/components",
391
+ component: PricingHighlight,
392
+ editor: {
393
+ label: "Highlight",
394
+ category: "commerce"
395
+ },
396
+ schema: {},
397
+ guideline: "Renders a single highlight label as a span; must be a descendant of PricingHighlights."
398
+ });
399
+ const PricingPromotionsDefinition = defineComponent({
400
+ name: "PricingPromotions",
401
+ importPath: "@vtex/faststore/components",
402
+ component: PricingPromotions,
403
+ editor: {
404
+ label: "Promotions",
405
+ category: "commerce"
406
+ },
407
+ schema: {},
408
+ guideline: "Iterates the offer's structured promotions (e.g. \"Compre 3 leve 2\"); place PricingPromotion as a child. Must be a descendant of PricingRoot."
409
+ });
410
+ const PricingPromotionDefinition = defineComponent({
411
+ name: "PricingPromotion",
412
+ importPath: "@vtex/faststore/components",
413
+ component: PricingPromotion,
414
+ editor: {
415
+ label: "Promotion",
416
+ category: "commerce"
417
+ },
418
+ schema: { template: {
419
+ type: "string",
420
+ default: "{name}",
421
+ label: "Template"
422
+ } },
423
+ guideline: "Renders a single promotion using the {name} template placeholder; must be a descendant of PricingPromotions."
424
+ });
425
+ function PricingRoot({ $data: $dataProp, selectedVariantId, children, ...props }) {
426
+ const { locale, currency } = useStorefrontContext();
427
+ const productSlice = useDataOverride($dataProp) ?? null;
428
+ const publishedSelection = useReactiveVar(selectedVariantVar);
429
+ const activeVariantId = publishedVariantIdFor(publishedSelection, productSlice?.id ?? null) ?? selectedVariantId;
430
+ if (activeVariantId) return /* @__PURE__ */ jsx(Suspense, {
431
+ fallback: null,
432
+ children: /* @__PURE__ */ jsx(HotDataProvider, {
433
+ query: variantQuery,
434
+ variables: { id: activeVariantId },
435
+ field: "node",
436
+ fallbackData: productSlice,
437
+ children: /* @__PURE__ */ jsx(PricingProvider, {
438
+ fallbackProductSlice: productSlice,
439
+ currency,
440
+ locale,
441
+ ...props,
442
+ children
443
+ })
444
+ })
445
+ });
446
+ const transformed = productSlice ? transformPricingData(productSlice) : null;
447
+ return /* @__PURE__ */ jsx(PricingView, {
448
+ transformed,
449
+ currency,
450
+ locale,
451
+ ...props,
452
+ children
453
+ });
454
+ }
455
+ function PricingProvider({ fallbackProductSlice, ...viewProps }) {
456
+ const override = useDataOverride(null);
457
+ const overrideTypename = override?.__typename;
458
+ let transformed = null;
459
+ if (overrideTypename === "Variant") transformed = transformVariantPricingData(override);
460
+ else if (fallbackProductSlice) transformed = transformPricingData(fallbackProductSlice);
461
+ return /* @__PURE__ */ jsx(PricingView, {
462
+ transformed,
463
+ ...viewProps
464
+ });
465
+ }
466
+ function PricingView({ transformed, currency: currencyProp, locale: localeProp, className, children, ...props }) {
467
+ let contextValue = null;
468
+ if (transformed) {
469
+ const { price, listPrice, spotPrice, installmentPlans, discountHighlights, promotions } = transformed;
470
+ const currency = currencyProp ?? transformed.currency;
471
+ const locale = localeProp;
472
+ const hasDiscount = listPrice > price;
473
+ const hasSpotDiscount = spotPrice < price;
474
+ contextValue = {
475
+ price,
476
+ listPrice,
477
+ spotPrice,
478
+ currency,
479
+ locale,
480
+ installmentPlans,
481
+ discountHighlights,
482
+ promotions,
483
+ hasDiscount,
484
+ hasSpotDiscount,
485
+ discountPercentage: hasDiscount ? Math.round((listPrice - price) / listPrice * 100) : 0,
486
+ spotDiscountPercentage: hasSpotDiscount ? Math.round((price - spotPrice) / price * 100) : 0,
487
+ bestInstallment: findBestInstallment(installmentPlans)
488
+ };
489
+ }
490
+ return /* @__PURE__ */ jsx(PricingContext, {
491
+ value: contextValue,
492
+ children: /* @__PURE__ */ jsx("div", {
493
+ ...props,
494
+ className,
495
+ "data-fs-pricing": "",
496
+ children
497
+ })
498
+ });
499
+ }
500
+ function PricingSellingPrice({ className, children, ...props }) {
501
+ const ctx = usePricing();
502
+ if (!ctx) return null;
503
+ const formatted = formatPrice(ctx.price, ctx.locale, ctx.currency);
504
+ return /* @__PURE__ */ jsx("span", {
505
+ ...props,
506
+ className,
507
+ "data-fs-pricing-selling-price": "",
508
+ children: children ?? formatted
509
+ });
510
+ }
511
+ function PricingListPrice({ className, children, ...props }) {
512
+ const ctx = usePricing();
513
+ if (!ctx || !ctx.hasDiscount) return null;
514
+ const formatted = formatPrice(ctx.listPrice, ctx.locale, ctx.currency);
515
+ return /* @__PURE__ */ jsx("span", {
516
+ ...props,
517
+ className,
518
+ "data-fs-pricing-list-price": "",
519
+ children: children ?? formatted
520
+ });
521
+ }
522
+ function PricingSpotPrice({ className, children, ...props }) {
523
+ const ctx = usePricing();
524
+ if (!ctx || !ctx.hasSpotDiscount) return null;
525
+ const formatted = formatPrice(ctx.spotPrice, ctx.locale, ctx.currency);
526
+ return /* @__PURE__ */ jsx("span", {
527
+ ...props,
528
+ className,
529
+ "data-fs-pricing-spot-price": "",
530
+ children: children ?? formatted
531
+ });
532
+ }
533
+ function PricingInstallments({ className, children, ...props }) {
534
+ const ctx = usePricing();
535
+ if (!ctx || !ctx.bestInstallment) return null;
536
+ return /* @__PURE__ */ jsx(InstallmentItemContext, {
537
+ value: ctx.bestInstallment,
538
+ children: /* @__PURE__ */ jsx("div", {
539
+ ...props,
540
+ className,
541
+ "data-fs-pricing-installments": "",
542
+ children
543
+ })
544
+ });
545
+ }
546
+ function PricingInstallmentPlans({ className, children, ...props }) {
547
+ const ctx = usePricing();
548
+ if (!ctx || ctx.installmentPlans.length === 0) return null;
549
+ const sortedPlans = ctx.installmentPlans.map((plan) => ({
550
+ plan,
551
+ bestInstallment: findBestInstallment([plan])
552
+ })).sort((a, b) => {
553
+ return (a.bestInstallment?.count ?? Number.POSITIVE_INFINITY) - (b.bestInstallment?.count ?? Number.POSITIVE_INFINITY);
554
+ });
555
+ return /* @__PURE__ */ jsx("div", {
556
+ ...props,
557
+ className,
558
+ "data-fs-pricing-installment-plans": "",
559
+ children: sortedPlans.map(({ plan, bestInstallment }, index) => /* @__PURE__ */ jsx(InstallmentPlanItemContext, {
560
+ value: {
561
+ paymentMethod: plan.paymentMethod,
562
+ paymentType: plan.paymentType,
563
+ installments: plan.installments,
564
+ bestInstallment
565
+ },
566
+ children
567
+ }, `${plan.paymentType}-${plan.paymentMethod}-${index}`))
568
+ });
569
+ }
570
+ function PricingInstallmentPlan({ className, children, ...props }) {
571
+ const plan = useInstallmentPlanItem();
572
+ if (!plan.bestInstallment) return null;
573
+ return /* @__PURE__ */ jsx(InstallmentItemContext, {
574
+ value: plan.bestInstallment,
575
+ children: /* @__PURE__ */ jsx("div", {
576
+ ...props,
577
+ className,
578
+ "data-fs-pricing-installment-plan": "",
579
+ "data-fs-pricing-installment-plan-type": plan.paymentType,
580
+ children
581
+ })
582
+ });
583
+ }
584
+ function PricingInstallmentsForPlan({ className, children, ...props }) {
585
+ const plan = useInstallmentPlanItem("PricingInstallmentsForPlan", "PricingInstallmentPlan");
586
+ if (plan.installments.length === 0) return null;
587
+ return /* @__PURE__ */ jsx("div", {
588
+ ...props,
589
+ className,
590
+ "data-fs-pricing-installments-for-plan": "",
591
+ children: plan.installments.map((installment, index) => /* @__PURE__ */ jsx(InstallmentItemContext, {
592
+ value: installment,
593
+ children
594
+ }, `${installment.count}-${index}`))
595
+ });
596
+ }
597
+ function PricingPaymentMethodsTrigger({ className, children, ...props }) {
598
+ return /* @__PURE__ */ jsx(PopoverTrigger, {
599
+ ...props,
600
+ className,
601
+ "data-fs-pricing-payment-methods-trigger": "",
602
+ children
603
+ });
604
+ }
605
+ function PricingPaymentMethodsList({ className, children, ...props }) {
606
+ const ctx = usePricing();
607
+ if (!ctx || ctx.installmentPlans.length === 0) return null;
608
+ return /* @__PURE__ */ jsx("div", {
609
+ ...props,
610
+ className,
611
+ "data-fs-pricing-payment-methods-list": "",
612
+ children: /* @__PURE__ */ jsx(PricingInstallmentPlans, { children })
613
+ });
614
+ }
615
+ function sortPlansForTabs(plans) {
616
+ return plans.map((plan) => ({
617
+ plan,
618
+ bestInstallment: findBestInstallment([plan]),
619
+ tabValue: `${plan.paymentType}-${plan.paymentMethod}`
620
+ })).sort((a, b) => {
621
+ return (a.bestInstallment?.count ?? Number.POSITIVE_INFINITY) - (b.bestInstallment?.count ?? Number.POSITIVE_INFINITY);
622
+ });
623
+ }
624
+ function PricingPaymentMethodsTabList({ className, children, ...props }) {
625
+ const ctx = usePricing();
626
+ if (!ctx || ctx.installmentPlans.length === 0) return null;
627
+ return /* @__PURE__ */ jsx("div", {
628
+ ...props,
629
+ className,
630
+ "data-fs-pricing-payment-methods-tab-list": "",
631
+ children: sortPlansForTabs(ctx.installmentPlans).map(({ plan, bestInstallment, tabValue }) => /* @__PURE__ */ jsx(InstallmentPlanItemContext, {
632
+ value: {
633
+ paymentMethod: plan.paymentMethod,
634
+ paymentType: plan.paymentType,
635
+ installments: plan.installments,
636
+ bestInstallment
637
+ },
638
+ children: /* @__PURE__ */ jsx(TabsTab, {
639
+ value: tabValue,
640
+ children
641
+ })
642
+ }, tabValue))
643
+ });
644
+ }
645
+ function PricingPaymentMethodsTabPanels({ className, children, ...props }) {
646
+ const ctx = usePricing();
647
+ if (!ctx || ctx.installmentPlans.length === 0) return null;
648
+ return /* @__PURE__ */ jsx("div", {
649
+ ...props,
650
+ className,
651
+ "data-fs-pricing-payment-methods-tab-panels": "",
652
+ children: sortPlansForTabs(ctx.installmentPlans).map(({ plan, bestInstallment, tabValue }) => /* @__PURE__ */ jsx(InstallmentPlanItemContext, {
653
+ value: {
654
+ paymentMethod: plan.paymentMethod,
655
+ paymentType: plan.paymentType,
656
+ installments: plan.installments,
657
+ bestInstallment
658
+ },
659
+ children: /* @__PURE__ */ jsx(TabsPanel, {
660
+ value: tabValue,
661
+ children
662
+ })
663
+ }, tabValue))
664
+ });
665
+ }
666
+ function PricingPaymentMethodName({ className, children, ...props }) {
667
+ const plan = useInstallmentPlanItem();
668
+ return /* @__PURE__ */ jsx("span", {
669
+ ...props,
670
+ className,
671
+ "data-fs-pricing-payment-method-name": "",
672
+ children: children ?? plan.paymentMethod
673
+ });
674
+ }
675
+ function PricingInstallment({ template = "{count}x de {value}", interestFreeLabel = "sem juros", className, children, ...props }) {
676
+ const installment = useInstallmentItem();
677
+ const ctx = usePricing();
678
+ if (!ctx) return null;
679
+ const formattedValue = formatPrice(installment.value, ctx.locale, ctx.currency);
680
+ const base = template.replace("{count}", String(installment.count)).replace("{value}", formattedValue);
681
+ const text = installment.interestFree && interestFreeLabel ? `${base} ${interestFreeLabel}` : base;
682
+ return /* @__PURE__ */ jsx("span", {
683
+ ...props,
684
+ className,
685
+ "data-fs-pricing-installment": "",
686
+ children: children ?? text
687
+ });
688
+ }
689
+ function PricingDiscount({ template, format = "percentage", className, children, ...props }) {
690
+ const ctx = usePricing();
691
+ if (!ctx || !ctx.hasDiscount) return null;
692
+ const formattedAmount = formatPrice(ctx.listPrice - ctx.price, ctx.locale, ctx.currency);
693
+ const text = (template ?? (format === "absolute" ? "-{amount}" : "-{percentage}%")).replaceAll("{percentage}", String(ctx.discountPercentage)).replaceAll("{amount}", formattedAmount);
694
+ return /* @__PURE__ */ jsx("span", {
695
+ ...props,
696
+ className,
697
+ "data-fs-pricing-discount": "",
698
+ children: children ?? text
699
+ });
700
+ }
701
+ function PricingSpotDiscount({ template = "-{percentage}%", className, children, ...props }) {
702
+ const ctx = usePricing();
703
+ if (!ctx || ctx.spotDiscountPercentage <= 0) return null;
704
+ const text = template.replace("{percentage}", String(ctx.spotDiscountPercentage));
705
+ return /* @__PURE__ */ jsx("span", {
706
+ ...props,
707
+ className,
708
+ "data-fs-pricing-spot-discount": "",
709
+ children: children ?? text
710
+ });
711
+ }
712
+ function PricingHighlights({ className, children, ...props }) {
713
+ const ctx = usePricing();
714
+ if (!ctx || ctx.discountHighlights.length === 0) return null;
715
+ return /* @__PURE__ */ jsx("div", {
716
+ ...props,
717
+ className,
718
+ "data-fs-pricing-highlights": "",
719
+ children: ctx.discountHighlights.map((highlight, index) => /* @__PURE__ */ jsx(HighlightItemContext, {
720
+ value: highlight,
721
+ children
722
+ }, `${highlight}-${index}`))
723
+ });
724
+ }
725
+ function PricingHighlight({ className, children, ...props }) {
726
+ const highlight = useHighlightItem();
727
+ return /* @__PURE__ */ jsx("span", {
728
+ ...props,
729
+ className,
730
+ "data-fs-pricing-highlight": "",
731
+ children: children ?? highlight
732
+ });
733
+ }
734
+ function PricingPromotions({ className, children, ...props }) {
735
+ const ctx = usePricing();
736
+ if (!ctx || ctx.promotions.length === 0) return null;
737
+ return /* @__PURE__ */ jsx("div", {
738
+ ...props,
739
+ className,
740
+ "data-fs-pricing-promotions": "",
741
+ children: ctx.promotions.map((promotion, index) => /* @__PURE__ */ jsx(PromotionItemContext, {
742
+ value: promotion,
743
+ children
744
+ }, `${promotion.name}-${index}`))
745
+ });
746
+ }
747
+ function PricingPromotion({ template = "{name}", className, children, ...props }) {
748
+ const promotion = usePromotionItem();
749
+ const text = template.replace("{name}", promotion.name);
750
+ return /* @__PURE__ */ jsx("span", {
751
+ ...props,
752
+ className,
753
+ "data-fs-pricing-promotion": "",
754
+ children: children ?? text
755
+ });
756
+ }
757
+ function PricingSkeleton({ className, ...props }) {
758
+ return /* @__PURE__ */ jsxs("div", {
759
+ ...props,
760
+ className,
761
+ "data-fs-pricing-skeleton": "",
762
+ "aria-hidden": "true",
763
+ children: [/* @__PURE__ */ jsx("span", { "data-fs-pricing-skeleton-line": "" }), /* @__PURE__ */ jsx("span", { "data-fs-pricing-skeleton-line": "" })]
764
+ });
765
+ }
766
+ PricingRoot.Skeleton = PricingSkeleton;
767
+ const Pricing = {
768
+ Root: PricingRoot,
769
+ SellingPrice: PricingSellingPrice,
770
+ ListPrice: PricingListPrice,
771
+ SpotPrice: PricingSpotPrice,
772
+ Installments: PricingInstallments,
773
+ InstallmentPlans: PricingInstallmentPlans,
774
+ InstallmentPlan: PricingInstallmentPlan,
775
+ InstallmentsForPlan: PricingInstallmentsForPlan,
776
+ Installment: PricingInstallment,
777
+ PaymentMethodsTrigger: PricingPaymentMethodsTrigger,
778
+ PaymentMethodsList: PricingPaymentMethodsList,
779
+ PaymentMethodsTabList: PricingPaymentMethodsTabList,
780
+ PaymentMethodsTabPanels: PricingPaymentMethodsTabPanels,
781
+ PaymentMethodName: PricingPaymentMethodName,
782
+ Discount: PricingDiscount,
783
+ SpotDiscount: PricingSpotDiscount,
784
+ Highlights: PricingHighlights,
785
+ Highlight: PricingHighlight,
786
+ Promotions: PricingPromotions,
787
+ Promotion: PricingPromotion,
788
+ Skeleton: PricingSkeleton
789
+ };
790
+ //#endregion
791
+ export { Pricing, PricingDiscount, PricingDiscountDefinition, PricingHighlight, PricingHighlightDefinition, PricingHighlights, PricingHighlightsDefinition, PricingInstallment, PricingInstallmentDefinition, PricingInstallmentPlan, PricingInstallmentPlanDefinition, PricingInstallmentPlans, PricingInstallmentPlansDefinition, PricingInstallments, PricingInstallmentsDefinition, PricingInstallmentsForPlan, PricingInstallmentsForPlanDefinition, PricingListPrice, PricingListPriceDefinition, PricingPaymentMethodName, PricingPaymentMethodNameDefinition, PricingPaymentMethodsList, PricingPaymentMethodsListDefinition, PricingPaymentMethodsTabList, PricingPaymentMethodsTabListDefinition, PricingPaymentMethodsTabPanels, PricingPaymentMethodsTabPanelsDefinition, PricingPaymentMethodsTrigger, PricingPaymentMethodsTriggerDefinition, PricingPromotion, PricingPromotionDefinition, PricingPromotions, PricingPromotionsDefinition, PricingRoot, PricingRootDefinition, PricingSellingPrice, PricingSellingPriceDefinition, PricingSkeleton, PricingSpotDiscount, PricingSpotDiscountDefinition, PricingSpotPrice, PricingSpotPriceDefinition, transformVariantPricingData, useInstallmentPlanItem };
792
+
793
+ //# sourceMappingURL=pricing.js.map