@shopify/hydrogen 1.0.1 → 1.2.0

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 (406) hide show
  1. package/dist/esnext/FileSessionStorage.d.ts +1 -1
  2. package/dist/esnext/FileSessionStorage.js +1 -1
  3. package/dist/esnext/client.d.ts +16 -16
  4. package/dist/esnext/client.js +16 -16
  5. package/dist/esnext/components/AddToCartButton/AddToCartButton.client.d.ts +5 -2
  6. package/dist/esnext/components/AddToCartButton/AddToCartButton.client.js +6 -5
  7. package/dist/esnext/components/AddToCartButton/index.d.ts +1 -1
  8. package/dist/esnext/components/AddToCartButton/index.js +1 -1
  9. package/dist/esnext/components/BaseButton/BaseButton.client.d.ts +7 -5
  10. package/dist/esnext/components/BaseButton/BaseButton.client.js +5 -4
  11. package/dist/esnext/components/BaseButton/index.d.ts +1 -1
  12. package/dist/esnext/components/BaseButton/index.js +1 -1
  13. package/dist/esnext/components/BuyNowButton/BuyNowButton.client.d.ts +3 -2
  14. package/dist/esnext/components/BuyNowButton/BuyNowButton.client.js +2 -2
  15. package/dist/esnext/components/BuyNowButton/index.d.ts +1 -1
  16. package/dist/esnext/components/BuyNowButton/index.js +1 -1
  17. package/dist/esnext/components/CartCheckoutButton/CartCheckoutButton.client.js +1 -1
  18. package/dist/esnext/components/CartCheckoutButton/index.d.ts +1 -1
  19. package/dist/esnext/components/CartCheckoutButton/index.js +1 -1
  20. package/dist/esnext/components/CartCost/CartCost.client.d.ts +1 -1
  21. package/dist/esnext/components/CartCost/CartCost.client.js +2 -2
  22. package/dist/esnext/components/CartCost/index.d.ts +1 -1
  23. package/dist/esnext/components/CartCost/index.js +1 -1
  24. package/dist/esnext/components/CartLineImage/CartLineImage.client.d.ts +1 -1
  25. package/dist/esnext/components/CartLineImage/CartLineImage.client.js +2 -2
  26. package/dist/esnext/components/CartLineImage/index.d.ts +1 -1
  27. package/dist/esnext/components/CartLineImage/index.js +1 -1
  28. package/dist/esnext/components/CartLinePrice/CartLinePrice.client.d.ts +1 -1
  29. package/dist/esnext/components/CartLinePrice/CartLinePrice.client.js +2 -2
  30. package/dist/esnext/components/CartLinePrice/index.d.ts +1 -1
  31. package/dist/esnext/components/CartLinePrice/index.js +1 -1
  32. package/dist/esnext/components/CartLineProductTitle/CartLineProductTitle.client.js +1 -1
  33. package/dist/esnext/components/CartLineProductTitle/index.d.ts +1 -1
  34. package/dist/esnext/components/CartLineProductTitle/index.js +1 -1
  35. package/dist/esnext/components/CartLineProvider/CartLineProvider.client.d.ts +1 -1
  36. package/dist/esnext/components/CartLineProvider/CartLineProvider.client.js +1 -1
  37. package/dist/esnext/components/CartLineProvider/context.d.ts +13 -13
  38. package/dist/esnext/components/CartLineProvider/index.d.ts +2 -2
  39. package/dist/esnext/components/CartLineProvider/index.js +2 -2
  40. package/dist/esnext/components/CartLineQuantity/CartLineQuantity.client.js +1 -1
  41. package/dist/esnext/components/CartLineQuantity/index.d.ts +1 -1
  42. package/dist/esnext/components/CartLineQuantity/index.js +1 -1
  43. package/dist/esnext/components/CartLineQuantityAdjustButton/CartLineQuantityAdjustButton.d.ts +7 -8
  44. package/dist/esnext/components/CartLineQuantityAdjustButton/CartLineQuantityAdjustButton.js +3 -3
  45. package/dist/esnext/components/CartLineQuantityAdjustButton/index.d.ts +1 -1
  46. package/dist/esnext/components/CartLineQuantityAdjustButton/index.js +1 -1
  47. package/dist/esnext/components/CartLines/CartLines.client.d.ts +1 -1
  48. package/dist/esnext/components/CartLines/CartLines.client.js +2 -2
  49. package/dist/esnext/components/CartLines/index.d.ts +1 -1
  50. package/dist/esnext/components/CartLines/index.js +1 -1
  51. package/dist/esnext/components/CartProvider/CartProvider.client.d.ts +2 -2
  52. package/dist/esnext/components/CartProvider/CartProvider.client.js +7 -7
  53. package/dist/esnext/components/CartProvider/context.d.ts +1 -1
  54. package/dist/esnext/components/CartProvider/graphql/CartAttributesUpdateMutation.d.ts +1 -1
  55. package/dist/esnext/components/CartProvider/graphql/CartBuyerIdentityUpdateMutation.d.ts +1 -1
  56. package/dist/esnext/components/CartProvider/graphql/CartCreateMutation.d.ts +1 -1
  57. package/dist/esnext/components/CartProvider/graphql/CartDiscountCodesUpdateMutation.d.ts +1 -1
  58. package/dist/esnext/components/CartProvider/graphql/CartFragment.d.ts +1 -1
  59. package/dist/esnext/components/CartProvider/graphql/CartLineAddMutation.d.ts +1 -1
  60. package/dist/esnext/components/CartProvider/graphql/CartLineRemoveMutation.d.ts +1 -1
  61. package/dist/esnext/components/CartProvider/graphql/CartLineUpdateMutation.d.ts +1 -1
  62. package/dist/esnext/components/CartProvider/graphql/CartNoteUpdateMutation.d.ts +1 -1
  63. package/dist/esnext/components/CartProvider/graphql/CartQuery.d.ts +1 -1
  64. package/dist/esnext/components/CartProvider/hooks.client.d.ts +2 -2
  65. package/dist/esnext/components/CartProvider/hooks.client.js +4 -4
  66. package/dist/esnext/components/CartProvider/index.d.ts +4 -4
  67. package/dist/esnext/components/CartProvider/index.js +3 -3
  68. package/dist/esnext/components/CartProvider/types.d.ts +2 -2
  69. package/dist/esnext/components/CartShopPayButton/CartShopPayButton.client.d.ts +1 -1
  70. package/dist/esnext/components/CartShopPayButton/CartShopPayButton.client.js +2 -2
  71. package/dist/esnext/components/CartShopPayButton/index.d.ts +1 -1
  72. package/dist/esnext/components/CartShopPayButton/index.js +1 -1
  73. package/dist/esnext/components/ExternalVideo/ExternalVideo.d.ts +2 -2
  74. package/dist/esnext/components/ExternalVideo/ExternalVideo.js +1 -1
  75. package/dist/esnext/components/ExternalVideo/index.d.ts +1 -1
  76. package/dist/esnext/components/ExternalVideo/index.js +1 -1
  77. package/dist/esnext/components/Image/Image.d.ts +1 -1
  78. package/dist/esnext/components/Image/Image.js +22 -13
  79. package/dist/esnext/components/Image/index.d.ts +2 -2
  80. package/dist/esnext/components/Image/index.js +1 -1
  81. package/dist/esnext/components/Link/Link.client.js +5 -5
  82. package/dist/esnext/components/Link/index.d.ts +1 -1
  83. package/dist/esnext/components/Link/index.js +1 -1
  84. package/dist/esnext/components/LocalizationProvider/LocalizationClientProvider.client.d.ts +1 -1
  85. package/dist/esnext/components/LocalizationProvider/LocalizationClientProvider.client.js +1 -1
  86. package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.d.ts +3 -2
  87. package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.js +9 -13
  88. package/dist/esnext/components/LocalizationProvider/index.d.ts +1 -1
  89. package/dist/esnext/components/LocalizationProvider/index.js +1 -1
  90. package/dist/esnext/components/MediaFile/MediaFile.d.ts +4 -4
  91. package/dist/esnext/components/MediaFile/MediaFile.js +4 -4
  92. package/dist/esnext/components/MediaFile/index.d.ts +1 -1
  93. package/dist/esnext/components/MediaFile/index.js +1 -1
  94. package/dist/esnext/components/Metafield/Metafield.client.d.ts +2 -2
  95. package/dist/esnext/components/Metafield/Metafield.client.js +6 -6
  96. package/dist/esnext/components/Metafield/components/StarRating/StarRating.d.ts +1 -1
  97. package/dist/esnext/components/Metafield/components/StarRating/index.d.ts +1 -1
  98. package/dist/esnext/components/Metafield/components/StarRating/index.js +1 -1
  99. package/dist/esnext/components/Metafield/components/index.d.ts +1 -1
  100. package/dist/esnext/components/Metafield/components/index.js +1 -1
  101. package/dist/esnext/components/Metafield/index.d.ts +2 -2
  102. package/dist/esnext/components/Metafield/index.js +1 -1
  103. package/dist/esnext/components/Metafield/types.d.ts +1 -1
  104. package/dist/esnext/components/ModelViewer/ModelViewer.client.d.ts +2 -2
  105. package/dist/esnext/components/ModelViewer/ModelViewer.client.js +1 -1
  106. package/dist/esnext/components/ModelViewer/index.d.ts +1 -1
  107. package/dist/esnext/components/ModelViewer/index.js +1 -1
  108. package/dist/esnext/components/Money/Money.client.d.ts +1 -1
  109. package/dist/esnext/components/Money/Money.client.js +1 -1
  110. package/dist/esnext/components/Money/index.d.ts +1 -1
  111. package/dist/esnext/components/Money/index.js +1 -1
  112. package/dist/esnext/components/ProductOptionsProvider/ProductOptionsProvider.client.d.ts +1 -1
  113. package/dist/esnext/components/ProductOptionsProvider/ProductOptionsProvider.client.js +3 -3
  114. package/dist/esnext/components/ProductOptionsProvider/context.d.ts +1 -1
  115. package/dist/esnext/components/ProductOptionsProvider/index.d.ts +1 -2
  116. package/dist/esnext/components/ProductOptionsProvider/index.js +1 -2
  117. package/dist/esnext/components/ProductPrice/ProductPrice.client.d.ts +2 -2
  118. package/dist/esnext/components/ProductPrice/ProductPrice.client.js +2 -2
  119. package/dist/esnext/components/ProductPrice/index.d.ts +1 -1
  120. package/dist/esnext/components/ProductPrice/index.js +1 -1
  121. package/dist/esnext/components/Seo/CollectionSeo.client.d.ts +1 -1
  122. package/dist/esnext/components/Seo/CollectionSeo.client.js +4 -4
  123. package/dist/esnext/components/Seo/DefaultPageSeo.client.d.ts +1 -1
  124. package/dist/esnext/components/Seo/DefaultPageSeo.client.js +5 -5
  125. package/dist/esnext/components/Seo/DescriptionSeo.client.d.ts +1 -1
  126. package/dist/esnext/components/Seo/DescriptionSeo.client.js +1 -1
  127. package/dist/esnext/components/Seo/HomePageSeo.client.d.ts +1 -1
  128. package/dist/esnext/components/Seo/HomePageSeo.client.js +3 -3
  129. package/dist/esnext/components/Seo/ImageSeo.client.d.ts +1 -1
  130. package/dist/esnext/components/Seo/ImageSeo.client.js +1 -1
  131. package/dist/esnext/components/Seo/NoIndexSeo.client.d.ts +1 -1
  132. package/dist/esnext/components/Seo/NoIndexSeo.client.js +2 -2
  133. package/dist/esnext/components/Seo/PageSeo.client.d.ts +1 -1
  134. package/dist/esnext/components/Seo/PageSeo.client.js +3 -3
  135. package/dist/esnext/components/Seo/ProductSeo.client.d.ts +1 -1
  136. package/dist/esnext/components/Seo/ProductSeo.client.js +6 -6
  137. package/dist/esnext/components/Seo/Seo.client.d.ts +4 -4
  138. package/dist/esnext/components/Seo/Seo.client.js +7 -7
  139. package/dist/esnext/components/Seo/TitleSeo.client.d.ts +1 -1
  140. package/dist/esnext/components/Seo/TitleSeo.client.js +1 -1
  141. package/dist/esnext/components/Seo/TwitterSeo.client.d.ts +1 -1
  142. package/dist/esnext/components/Seo/TwitterSeo.client.js +1 -1
  143. package/dist/esnext/components/Seo/index.d.ts +1 -1
  144. package/dist/esnext/components/Seo/index.js +1 -1
  145. package/dist/esnext/components/Seo/seo-types.d.ts +1 -1
  146. package/dist/esnext/components/ShopPayButton/ShopPayButton.client.js +2 -2
  147. package/dist/esnext/components/ShopPayButton/index.d.ts +1 -1
  148. package/dist/esnext/components/ShopPayButton/index.js +1 -1
  149. package/dist/esnext/components/Video/Video.d.ts +7 -2
  150. package/dist/esnext/components/Video/Video.js +3 -3
  151. package/dist/esnext/components/Video/index.d.ts +1 -1
  152. package/dist/esnext/components/Video/index.js +1 -1
  153. package/dist/esnext/components/index.d.ts +27 -28
  154. package/dist/esnext/components/index.js +25 -26
  155. package/dist/esnext/config.d.ts +5 -5
  156. package/dist/esnext/config.js +4 -4
  157. package/dist/esnext/entry-client.d.ts +1 -1
  158. package/dist/esnext/entry-client.js +35 -14
  159. package/dist/esnext/entry-server.d.ts +1 -1
  160. package/dist/esnext/entry-server.js +76 -57
  161. package/dist/esnext/experimental.d.ts +1 -0
  162. package/dist/esnext/experimental.js +1 -0
  163. package/dist/esnext/foundation/Analytics/Analytics.client.js +1 -1
  164. package/dist/esnext/foundation/Analytics/Analytics.server.js +5 -5
  165. package/dist/esnext/foundation/Analytics/ClientAnalytics.d.ts +1 -1
  166. package/dist/esnext/foundation/Analytics/ClientAnalytics.js +4 -4
  167. package/dist/esnext/foundation/Analytics/ServerAnalyticsRoute.d.ts +1 -1
  168. package/dist/esnext/foundation/Analytics/ServerAnalyticsRoute.js +1 -1
  169. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/PerformanceMetrics.client.js +7 -5
  170. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/PerformanceMetricsDebug.client.js +1 -1
  171. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/ServerAnalyticsConnector.js +1 -1
  172. package/dist/esnext/foundation/Analytics/connectors/Shopify/ServerAnalyticsConnector.js +1 -1
  173. package/dist/esnext/foundation/Analytics/connectors/Shopify/ShopifyAnalytics.client.js +4 -4
  174. package/dist/esnext/foundation/Analytics/connectors/Shopify/ShopifyAnalytics.server.js +9 -9
  175. package/dist/esnext/foundation/Analytics/hook.js +2 -2
  176. package/dist/esnext/foundation/Analytics/index.d.ts +1 -1
  177. package/dist/esnext/foundation/Analytics/index.js +1 -1
  178. package/dist/esnext/foundation/Analytics/utils.js +1 -1
  179. package/dist/esnext/foundation/BuiltInRoutes/BuiltInRoutes.d.ts +1 -1
  180. package/dist/esnext/foundation/BuiltInRoutes/BuiltInRoutes.js +3 -3
  181. package/dist/esnext/foundation/Cache/cache-sub-request.d.ts +1 -1
  182. package/dist/esnext/foundation/Cache/cache-sub-request.js +4 -4
  183. package/dist/esnext/foundation/Cache/cache.d.ts +1 -1
  184. package/dist/esnext/foundation/Cache/cache.js +3 -3
  185. package/dist/esnext/foundation/Cache/strategies/index.d.ts +1 -1
  186. package/dist/esnext/foundation/Cookie/Cookie.js +2 -2
  187. package/dist/esnext/foundation/CookieSessionStorage/CookieSessionStorage.d.ts +2 -2
  188. package/dist/esnext/foundation/CookieSessionStorage/CookieSessionStorage.js +2 -1
  189. package/dist/esnext/foundation/DevTools/DevTools.client.js +1 -1
  190. package/dist/esnext/foundation/DevTools/DevTools.server.js +4 -3
  191. package/dist/esnext/foundation/DevTools/components/Heading.js +1 -1
  192. package/dist/esnext/foundation/DevTools/components/Interface.client.js +1 -1
  193. package/dist/esnext/foundation/DevTools/components/Panels.d.ts +2 -2
  194. package/dist/esnext/foundation/DevTools/components/Panels.js +28 -22
  195. package/dist/esnext/foundation/DevTools/components/Performance.client.js +1 -2
  196. package/dist/esnext/foundation/DevTools/components/Settings.client.d.ts +2 -1
  197. package/dist/esnext/foundation/DevTools/components/Settings.client.js +2 -5
  198. package/dist/esnext/foundation/DevTools/components/Table.js +3 -3
  199. package/dist/esnext/foundation/DevTools/components/index.d.ts +2 -2
  200. package/dist/esnext/foundation/DevTools/components/index.js +2 -2
  201. package/dist/esnext/foundation/FileRoutes/FileRoutes.server.d.ts +1 -1
  202. package/dist/esnext/foundation/FileRoutes/FileRoutes.server.js +5 -5
  203. package/dist/esnext/foundation/FileSessionStorage/FileSessionStorage.d.ts +3 -3
  204. package/dist/esnext/foundation/FileSessionStorage/FileSessionStorage.js +2 -2
  205. package/dist/esnext/foundation/Form/Form.client.d.ts +11 -0
  206. package/dist/esnext/foundation/Form/Form.client.js +51 -0
  207. package/dist/esnext/foundation/Head/Head.client.js +1 -1
  208. package/dist/esnext/foundation/Head/index.d.ts +1 -1
  209. package/dist/esnext/foundation/Head/index.js +1 -1
  210. package/dist/esnext/foundation/Html/Html.d.ts +1 -1
  211. package/dist/esnext/foundation/HydrogenRequest/HydrogenRequest.server.d.ts +5 -6
  212. package/dist/esnext/foundation/HydrogenRequest/HydrogenRequest.server.js +6 -8
  213. package/dist/esnext/foundation/HydrogenResponse/HydrogenResponse.server.d.ts +2 -2
  214. package/dist/esnext/foundation/HydrogenResponse/HydrogenResponse.server.js +2 -2
  215. package/dist/esnext/foundation/MemorySessionStorage/MemorySessionStorage.d.ts +2 -2
  216. package/dist/esnext/foundation/MemorySessionStorage/MemorySessionStorage.js +1 -1
  217. package/dist/esnext/foundation/Redirect/Redirect.client.js +1 -1
  218. package/dist/esnext/foundation/Route/Route.server.js +3 -3
  219. package/dist/esnext/foundation/Router/BrowserRouter.client.js +2 -2
  220. package/dist/esnext/foundation/Router/Router.server.js +1 -1
  221. package/dist/esnext/foundation/ServerPropsProvider/ServerPropsProvider.d.ts +3 -1
  222. package/dist/esnext/foundation/ServerPropsProvider/ServerPropsProvider.js +6 -4
  223. package/dist/esnext/foundation/ServerPropsProvider/index.d.ts +1 -2
  224. package/dist/esnext/foundation/ServerPropsProvider/index.js +1 -1
  225. package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.d.ts +2 -2
  226. package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.js +3 -3
  227. package/dist/esnext/foundation/ServerRequestProvider/index.d.ts +1 -1
  228. package/dist/esnext/foundation/ServerRequestProvider/index.js +1 -1
  229. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.client.d.ts +4 -2
  230. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.client.js +4 -2
  231. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.server.d.ts +4 -2
  232. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.server.js +25 -7
  233. package/dist/esnext/foundation/ShopifyProvider/index.d.ts +1 -1
  234. package/dist/esnext/foundation/ShopifyProvider/index.js +1 -1
  235. package/dist/esnext/foundation/ShopifyProvider/types.d.ts +20 -2
  236. package/dist/esnext/foundation/fetchSync/ResponseSync.d.ts +14 -0
  237. package/dist/esnext/foundation/fetchSync/ResponseSync.js +38 -0
  238. package/dist/esnext/foundation/fetchSync/client/fetchSync.d.ts +2 -2
  239. package/dist/esnext/foundation/fetchSync/client/fetchSync.js +5 -10
  240. package/dist/esnext/foundation/fetchSync/server/fetchSync.d.ts +3 -3
  241. package/dist/esnext/foundation/fetchSync/server/fetchSync.js +7 -13
  242. package/dist/esnext/foundation/index.d.ts +3 -3
  243. package/dist/esnext/foundation/index.js +3 -3
  244. package/dist/esnext/foundation/session/session-types.d.ts +13 -0
  245. package/dist/esnext/foundation/{fetchSync/types.js → session/session-types.js} +0 -0
  246. package/dist/esnext/foundation/session/session.d.ts +4 -16
  247. package/dist/esnext/foundation/session/session.js +1 -1
  248. package/dist/esnext/foundation/ssr-interop.d.ts +2 -2
  249. package/dist/esnext/foundation/ssr-interop.js +2 -2
  250. package/dist/esnext/foundation/useNavigate/useNavigate.js +2 -2
  251. package/dist/esnext/foundation/useQuery/hooks.d.ts +1 -1
  252. package/dist/esnext/foundation/useQuery/hooks.js +4 -4
  253. package/dist/esnext/foundation/useQuery/index.d.ts +1 -1
  254. package/dist/esnext/foundation/useQuery/index.js +1 -1
  255. package/dist/esnext/foundation/useRequestContext/index.js +1 -1
  256. package/dist/esnext/foundation/useRouteParams/useRouteParams.js +2 -2
  257. package/dist/esnext/foundation/useServerProps/index.d.ts +1 -1
  258. package/dist/esnext/foundation/useServerProps/index.js +1 -1
  259. package/dist/esnext/foundation/useServerProps/use-server-props.d.ts +1 -1
  260. package/dist/esnext/foundation/useServerProps/use-server-props.js +1 -1
  261. package/dist/esnext/foundation/useSession/useSession.js +1 -1
  262. package/dist/esnext/foundation/useShop/index.d.ts +1 -1
  263. package/dist/esnext/foundation/useShop/index.js +1 -1
  264. package/dist/esnext/foundation/useShop/use-shop.d.ts +1 -1
  265. package/dist/esnext/foundation/useShop/use-shop.js +2 -2
  266. package/dist/esnext/foundation/useUrl/index.d.ts +1 -1
  267. package/dist/esnext/foundation/useUrl/index.js +1 -1
  268. package/dist/esnext/foundation/useUrl/useUrl.js +4 -4
  269. package/dist/esnext/framework/graphiql.js +26 -30
  270. package/dist/esnext/framework/load-config.js +2 -2
  271. package/dist/esnext/framework/middleware.d.ts +1 -1
  272. package/dist/esnext/framework/middleware.js +2 -2
  273. package/dist/esnext/framework/plugin.d.ts +1 -1
  274. package/dist/esnext/framework/plugin.js +14 -13
  275. package/dist/esnext/framework/plugins/vite-plugin-css-modules-rsc.js +1 -1
  276. package/dist/esnext/framework/plugins/vite-plugin-css-rsc.d.ts +2 -0
  277. package/dist/esnext/framework/plugins/vite-plugin-css-rsc.js +113 -0
  278. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +1 -1
  279. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.js +3 -3
  280. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-rsc.d.ts +1 -1
  281. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-rsc.js +2 -2
  282. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-virtual-files.d.ts +1 -1
  283. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-virtual-files.js +11 -1
  284. package/dist/esnext/framework/plugins/vite-plugin-platform-entry.js +36 -7
  285. package/dist/esnext/framework/types.d.ts +13 -0
  286. package/dist/esnext/hooks/index.d.ts +6 -5
  287. package/dist/esnext/hooks/index.js +6 -5
  288. package/dist/esnext/hooks/useCart/index.d.ts +1 -1
  289. package/dist/esnext/hooks/useCart/index.js +1 -1
  290. package/dist/esnext/hooks/useCart/useCart.d.ts +1 -1
  291. package/dist/esnext/hooks/useCart/useCart.js +1 -1
  292. package/dist/esnext/hooks/useCartLine/index.d.ts +1 -1
  293. package/dist/esnext/hooks/useCartLine/index.js +1 -1
  294. package/dist/esnext/hooks/useCartLine/useCartLine.d.ts +13 -13
  295. package/dist/esnext/hooks/useCartLine/useCartLine.js +1 -1
  296. package/dist/esnext/hooks/useLoadScript/index.d.ts +1 -1
  297. package/dist/esnext/hooks/useLoadScript/index.js +1 -1
  298. package/dist/esnext/hooks/useLoadScript/useLoadScript.client.d.ts +1 -1
  299. package/dist/esnext/hooks/useLoadScript/useLoadScript.client.js +1 -1
  300. package/dist/esnext/hooks/useLocalization/useLocalization.d.ts +2 -2
  301. package/dist/esnext/hooks/useLocalization/useLocalization.js +3 -8
  302. package/dist/esnext/hooks/useMeasurement/hooks.d.ts +1 -1
  303. package/dist/esnext/hooks/useMeasurement/hooks.js +2 -2
  304. package/dist/esnext/hooks/useMeasurement/index.d.ts +1 -1
  305. package/dist/esnext/hooks/useMeasurement/index.js +1 -1
  306. package/dist/esnext/hooks/useMoney/hooks.d.ts +1 -1
  307. package/dist/esnext/hooks/useMoney/hooks.js +1 -1
  308. package/dist/esnext/hooks/useMoney/index.d.ts +1 -1
  309. package/dist/esnext/hooks/useMoney/index.js +1 -1
  310. package/dist/esnext/hooks/useProductOptions/helpers.d.ts +2 -2
  311. package/dist/esnext/hooks/useProductOptions/helpers.js +1 -1
  312. package/dist/esnext/hooks/useProductOptions/index.d.ts +2 -2
  313. package/dist/esnext/hooks/useProductOptions/index.js +2 -2
  314. package/dist/esnext/hooks/useProductOptions/types.d.ts +1 -1
  315. package/dist/esnext/hooks/useProductOptions/useProductOptions.client.d.ts +1 -1
  316. package/dist/esnext/hooks/useProductOptions/useProductOptions.client.js +1 -1
  317. package/dist/esnext/hooks/useShopQuery/hooks.d.ts +1 -1
  318. package/dist/esnext/hooks/useShopQuery/hooks.js +25 -17
  319. package/dist/esnext/hooks/useShopQuery/index.d.ts +1 -1
  320. package/dist/esnext/hooks/useShopQuery/index.js +1 -1
  321. package/dist/esnext/index.d.ts +26 -25
  322. package/dist/esnext/index.js +22 -21
  323. package/dist/esnext/node.d.ts +1 -1
  324. package/dist/esnext/node.js +1 -1
  325. package/dist/esnext/platforms/index.d.ts +1 -0
  326. package/dist/esnext/platforms/index.js +1 -0
  327. package/dist/esnext/platforms/node.d.ts +1 -1
  328. package/dist/esnext/platforms/node.js +5 -11
  329. package/dist/esnext/platforms/virtual.d.ts +8 -0
  330. package/dist/esnext/platforms/virtual.js +12 -0
  331. package/dist/esnext/platforms/worker-event.js +1 -1
  332. package/dist/esnext/platforms/worker.js +7 -7
  333. package/dist/esnext/shared-types.d.ts +3 -0
  334. package/dist/esnext/types.d.ts +8 -7
  335. package/dist/esnext/types.js +1 -1
  336. package/dist/esnext/utilities/apiRoutes.d.ts +4 -4
  337. package/dist/esnext/utilities/apiRoutes.js +41 -6
  338. package/dist/esnext/utilities/error.js +1 -1
  339. package/dist/esnext/utilities/fetch.js +1 -1
  340. package/dist/esnext/utilities/flattenConnection/flattenConnection.d.ts +1 -1
  341. package/dist/esnext/utilities/flattenConnection/index.d.ts +1 -1
  342. package/dist/esnext/utilities/flattenConnection/index.js +1 -1
  343. package/dist/esnext/utilities/hash.d.ts +1 -1
  344. package/dist/esnext/utilities/hash.js +1 -1
  345. package/dist/esnext/utilities/image_size.d.ts +2 -1
  346. package/dist/esnext/utilities/image_size.js +27 -26
  347. package/dist/esnext/utilities/index.d.ts +12 -12
  348. package/dist/esnext/utilities/index.js +12 -12
  349. package/dist/esnext/utilities/isBrowser/index.d.ts +1 -1
  350. package/dist/esnext/utilities/isBrowser/index.js +1 -1
  351. package/dist/esnext/utilities/isServer/index.d.ts +1 -1
  352. package/dist/esnext/utilities/isServer/index.js +1 -1
  353. package/dist/esnext/utilities/isServer/isServer.js +1 -1
  354. package/dist/esnext/utilities/load_script.d.ts +1 -0
  355. package/dist/esnext/utilities/load_script.js +6 -1
  356. package/dist/esnext/utilities/locale/index.d.ts +1 -0
  357. package/dist/esnext/utilities/locale/index.js +1 -0
  358. package/dist/esnext/utilities/locale/locale.d.ts +7 -0
  359. package/dist/esnext/utilities/locale/locale.js +22 -0
  360. package/dist/esnext/utilities/log/index.d.ts +4 -4
  361. package/dist/esnext/utilities/log/index.js +4 -4
  362. package/dist/esnext/utilities/log/log-cache-api-status.js +1 -1
  363. package/dist/esnext/utilities/log/log-cache-header.d.ts +4 -4
  364. package/dist/esnext/utilities/log/log-cache-header.js +3 -3
  365. package/dist/esnext/utilities/log/log-query-timeline.d.ts +3 -3
  366. package/dist/esnext/utilities/log/log-query-timeline.js +13 -10
  367. package/dist/esnext/utilities/log/log.d.ts +1 -1
  368. package/dist/esnext/utilities/log/log.js +2 -2
  369. package/dist/esnext/utilities/log/utils.d.ts +1 -1
  370. package/dist/esnext/utilities/measurement.d.ts +1 -1
  371. package/dist/esnext/utilities/parseMetafield/index.d.ts +1 -1
  372. package/dist/esnext/utilities/parseMetafield/index.js +1 -1
  373. package/dist/esnext/utilities/parseMetafield/parseMetafield.d.ts +2 -2
  374. package/dist/esnext/utilities/parseMetafield/parseMetafield.js +1 -1
  375. package/dist/esnext/utilities/storefrontApi.js +1 -1
  376. package/dist/esnext/utilities/suspense.d.ts +1 -1
  377. package/dist/esnext/utilities/suspense.js +1 -1
  378. package/dist/esnext/version.d.ts +1 -1
  379. package/dist/esnext/version.js +1 -1
  380. package/dist/node/foundation/session/session-types.d.ts +13 -0
  381. package/dist/node/foundation/session/session-types.js +2 -0
  382. package/dist/node/framework/graphiql.js +26 -30
  383. package/dist/node/framework/load-config.js +3 -3
  384. package/dist/node/framework/middleware.d.ts +1 -1
  385. package/dist/node/framework/middleware.js +3 -3
  386. package/dist/node/framework/plugin.d.ts +1 -1
  387. package/dist/node/framework/plugin.js +25 -24
  388. package/dist/node/framework/plugins/vite-plugin-css-modules-rsc.js +3 -3
  389. package/dist/node/framework/plugins/vite-plugin-css-rsc.d.ts +2 -0
  390. package/dist/node/framework/plugins/vite-plugin-css-rsc.js +119 -0
  391. package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +1 -1
  392. package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.js +7 -7
  393. package/dist/node/framework/plugins/vite-plugin-hydrogen-rsc.d.ts +1 -1
  394. package/dist/node/framework/plugins/vite-plugin-hydrogen-rsc.js +5 -5
  395. package/dist/node/framework/plugins/vite-plugin-hydrogen-virtual-files.d.ts +1 -1
  396. package/dist/node/framework/plugins/vite-plugin-hydrogen-virtual-files.js +12 -2
  397. package/dist/node/framework/plugins/vite-plugin-platform-entry.js +36 -7
  398. package/dist/node/framework/types.d.ts +13 -0
  399. package/dist/node/shared-types.d.ts +3 -0
  400. package/package.json +20 -4
  401. package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-plugin.js +33 -12
  402. package/vendor/react-server-dom-vite/esm/react-server-dom-vite-plugin.js +33 -12
  403. package/CHANGELOG.md +0 -2206
  404. package/dist/esnext/components/LocalizationProvider/LocalizationContext.client.d.ts +0 -9
  405. package/dist/esnext/components/LocalizationProvider/LocalizationContext.client.js +0 -2
  406. package/dist/esnext/foundation/fetchSync/types.d.ts +0 -5
@@ -2,7 +2,7 @@
2
2
  * THIS FILE IS AUTO-GENERATED, DO NOT EDIT.
3
3
  * Instead, you can edit the associated .graphql file to query for additional fields and this file will be updated when you run `yarn graphql-types`
4
4
  */
5
- import * as Types from '../../../storefront-api-types';
5
+ import * as Types from '../../../storefront-api-types.js';
6
6
  export declare type CartFragmentFragment = {
7
7
  __typename?: 'Cart';
8
8
  } & Pick<Types.Cart, 'id' | 'checkoutUrl' | 'totalQuantity' | 'note'> & {
@@ -2,7 +2,7 @@
2
2
  * THIS FILE IS AUTO-GENERATED, DO NOT EDIT.
3
3
  * Instead, you can edit the associated .graphql file to query for additional fields and this file will be updated when you run `yarn graphql-types`
4
4
  */
5
- import * as Types from '../../../storefront-api-types';
5
+ import * as Types from '../../../storefront-api-types.js';
6
6
  export declare type CartLineAddMutationVariables = Types.Exact<{
7
7
  cartId: Types.Scalars['ID'];
8
8
  lines: Array<Types.CartLineInput> | Types.CartLineInput;
@@ -2,7 +2,7 @@
2
2
  * THIS FILE IS AUTO-GENERATED, DO NOT EDIT.
3
3
  * Instead, you can edit the associated .graphql file to query for additional fields and this file will be updated when you run `yarn graphql-types`
4
4
  */
5
- import * as Types from '../../../storefront-api-types';
5
+ import * as Types from '../../../storefront-api-types.js';
6
6
  export declare type CartLineRemoveMutationVariables = Types.Exact<{
7
7
  cartId: Types.Scalars['ID'];
8
8
  lines: Array<Types.Scalars['ID']> | Types.Scalars['ID'];
@@ -2,7 +2,7 @@
2
2
  * THIS FILE IS AUTO-GENERATED, DO NOT EDIT.
3
3
  * Instead, you can edit the associated .graphql file to query for additional fields and this file will be updated when you run `yarn graphql-types`
4
4
  */
5
- import * as Types from '../../../storefront-api-types';
5
+ import * as Types from '../../../storefront-api-types.js';
6
6
  export declare type CartLineUpdateMutationVariables = Types.Exact<{
7
7
  cartId: Types.Scalars['ID'];
8
8
  lines: Array<Types.CartLineUpdateInput> | Types.CartLineUpdateInput;
@@ -2,7 +2,7 @@
2
2
  * THIS FILE IS AUTO-GENERATED, DO NOT EDIT.
3
3
  * Instead, you can edit the associated .graphql file to query for additional fields and this file will be updated when you run `yarn graphql-types`
4
4
  */
5
- import * as Types from '../../../storefront-api-types';
5
+ import * as Types from '../../../storefront-api-types.js';
6
6
  export declare type CartNoteUpdateMutationVariables = Types.Exact<{
7
7
  cartId: Types.Scalars['ID'];
8
8
  note?: Types.InputMaybe<Types.Scalars['String']>;
@@ -2,7 +2,7 @@
2
2
  * THIS FILE IS AUTO-GENERATED, DO NOT EDIT.
3
3
  * Instead, you can edit the associated .graphql file to query for additional fields and this file will be updated when you run `yarn graphql-types`
4
4
  */
5
- import * as Types from '../../../storefront-api-types';
5
+ import * as Types from '../../../storefront-api-types.js';
6
6
  export declare type CartQueryQueryVariables = Types.Exact<{
7
7
  id: Types.Scalars['ID'];
8
8
  numCartLines?: Types.InputMaybe<Types.Scalars['Int']>;
@@ -1,5 +1,5 @@
1
- import { CartInput } from '../../storefront-api-types';
2
- import { Cart } from './types';
1
+ import { CartInput } from '../../storefront-api-types.js';
2
+ import { Cart } from './types.js';
3
3
  export declare function useCartFetch(): <T, K>({ query, variables, }: {
4
4
  query: string;
5
5
  variables: T;
@@ -1,8 +1,8 @@
1
1
  import React, { useState } from 'react';
2
- import { useShop } from '../../foundation';
3
- import { flattenConnection } from '../../utilities';
4
- import { CartCreate, defaultCartFragment } from './cart-queries';
5
- import { SHOPIFY_STOREFRONT_ID_HEADER, STOREFRONT_API_PUBLIC_TOKEN_HEADER, SHOPIFY_STOREFRONT_Y_HEADER, SHOPIFY_STOREFRONT_S_HEADER, SHOPIFY_Y, SHOPIFY_S, } from '../../constants';
2
+ import { useShop } from '../../foundation/index.js';
3
+ import { flattenConnection } from '../../utilities/index.js';
4
+ import { CartCreate, defaultCartFragment } from './cart-queries.js';
5
+ import { SHOPIFY_STOREFRONT_ID_HEADER, STOREFRONT_API_PUBLIC_TOKEN_HEADER, SHOPIFY_STOREFRONT_Y_HEADER, SHOPIFY_STOREFRONT_S_HEADER, SHOPIFY_Y, SHOPIFY_S, } from '../../constants.js';
6
6
  import { parse } from 'worktop/cookie';
7
7
  export function useCartFetch() {
8
8
  const { storeDomain, storefrontApiVersion, storefrontToken, storefrontId } = useShop();
@@ -1,4 +1,4 @@
1
- export { CartProvider } from './CartProvider.client';
2
- export { useCartFetch, useInstantCheckout } from './hooks.client';
3
- export { useCart } from '../../hooks/useCart';
4
- export type { State, Status, Cart, CartWithActions, CartAction } from './types';
1
+ export { CartProvider } from './CartProvider.client.js';
2
+ export { useCartFetch, useInstantCheckout } from './hooks.client.js';
3
+ export { useCart } from '../../hooks/useCart/index.js';
4
+ export type { State, Status, Cart, CartWithActions, CartAction, } from './types.js';
@@ -1,3 +1,3 @@
1
- export { CartProvider } from './CartProvider.client';
2
- export { useCartFetch, useInstantCheckout } from './hooks.client';
3
- export { useCart } from '../../hooks/useCart';
1
+ export { CartProvider } from './CartProvider.client.js';
2
+ export { useCartFetch, useInstantCheckout } from './hooks.client.js';
3
+ export { useCart } from '../../hooks/useCart/index.js';
@@ -1,5 +1,5 @@
1
- import { CartInput, CartLineInput, CartLineUpdateInput, MutationCartNoteUpdateArgs, CartBuyerIdentityInput, MutationCartAttributesUpdateArgs } from '../../storefront-api-types';
2
- import { CartFragmentFragment } from './graphql/CartFragment';
1
+ import { CartInput, CartLineInput, CartLineUpdateInput, MutationCartNoteUpdateArgs, CartBuyerIdentityInput, MutationCartAttributesUpdateArgs } from '../../storefront-api-types.js';
2
+ import { CartFragmentFragment } from './graphql/CartFragment.js';
3
3
  export declare type Status = State['status'];
4
4
  export interface Cart {
5
5
  /** The cart's ID if it has been created through the Storefront API. */
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { ShopPayButton } from '../ShopPayButton';
2
+ import { ShopPayButton } from '../ShopPayButton/index.js';
3
3
  /**
4
4
  * The `CartShopPayButton` component renders a `ShopPayButton` for the items in the cart.
5
5
  * It must be a descendent of a `CartProvider` component.
@@ -1,6 +1,6 @@
1
1
  import React, { useMemo } from 'react';
2
- import { useCart } from '../CartProvider';
3
- import { ShopPayButton } from '../ShopPayButton';
2
+ import { useCart } from '../CartProvider/index.js';
3
+ import { ShopPayButton } from '../ShopPayButton/index.js';
4
4
  /**
5
5
  * The `CartShopPayButton` component renders a `ShopPayButton` for the items in the cart.
6
6
  * It must be a descendent of a `CartProvider` component.
@@ -1 +1 @@
1
- export { CartShopPayButton } from './CartShopPayButton.client';
1
+ export { CartShopPayButton } from './CartShopPayButton.client.js';
@@ -1 +1 @@
1
- export { CartShopPayButton } from './CartShopPayButton.client';
1
+ export { CartShopPayButton } from './CartShopPayButton.client.js';
@@ -1,5 +1,5 @@
1
- import { YouTube, Vimeo } from '../../utilities';
2
- import type { ExternalVideo as ExternalVideoType } from '../../storefront-api-types';
1
+ import { YouTube, Vimeo } from '../../utilities/index.js';
2
+ import type { ExternalVideo as ExternalVideoType } from '../../storefront-api-types.js';
3
3
  import type { PartialDeep } from 'type-fest';
4
4
  interface ExternalVideoProps {
5
5
  /**
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { useEmbeddedVideoUrl } from '../../utilities';
2
+ import { useEmbeddedVideoUrl } from '../../utilities/index.js';
3
3
  /**
4
4
  * The `ExternalVideo` component renders an embedded video for the Storefront
5
5
  * API's [ExternalVideo object](https://shopify.dev/api/storefront/reference/products/externalvideo).
@@ -1 +1 @@
1
- export { ExternalVideo } from './ExternalVideo';
1
+ export { ExternalVideo } from './ExternalVideo.js';
@@ -1 +1 @@
1
- export { ExternalVideo } from './ExternalVideo';
1
+ export { ExternalVideo } from './ExternalVideo.js';
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { Image as ImageType } from '../../storefront-api-types';
2
+ import type { Image as ImageType } from '../../storefront-api-types.js';
3
3
  import type { PartialDeep, Simplify, SetRequired } from 'type-fest';
4
4
  declare type HtmlImageProps = React.ImgHTMLAttributes<HTMLImageElement>;
5
5
  declare type ImageProps<GenericLoaderOpts> = ShopifyImageProps | ExternalImageProps<GenericLoaderOpts>;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { getShopifyImageDimensions, shopifyImageLoader, addImageSizeParametersToUrl, } from '../../utilities';
2
+ import { getShopifyImageDimensions, shopifyImageLoader, addImageSizeParametersToUrl, IMG_SRC_SET_SIZES, } from '../../utilities/index.js';
3
3
  /**
4
4
  * The `Image` component renders an image for the Storefront API's
5
5
  * [Image object](https://shopify.dev/api/storefront/reference/common-objects/image) by using the `data` prop, or a custom location by using the `src` prop. You can [customize this component](https://shopify.dev/api/hydrogen/components#customizing-hydrogen-components) using passthrough props.
@@ -34,7 +34,7 @@ function ShopifyImage({ data, width, height, loading, loader = shopifyImageLoade
34
34
  if (__HYDROGEN_DEV__ && !data.altText && !rest.alt) {
35
35
  console.warn(`<Image/>: the 'data' prop should have the 'altText' property, or the 'alt' prop, and one of them should not be empty. ${`Image: ${data.id ?? data.url}`}`);
36
36
  }
37
- const { width: finalWidth, height: finalHeight } = getShopifyImageDimensions({
37
+ const { width: imgElementWidth, height: imgElementHeight } = getShopifyImageDimensions({
38
38
  data,
39
39
  loaderOptions,
40
40
  elementProps: {
@@ -42,7 +42,7 @@ function ShopifyImage({ data, width, height, loading, loader = shopifyImageLoade
42
42
  height,
43
43
  },
44
44
  });
45
- if (__HYDROGEN_DEV__ && (!finalWidth || !finalHeight)) {
45
+ if (__HYDROGEN_DEV__ && (!imgElementWidth || !imgElementHeight)) {
46
46
  console.warn(`<Image/>: the 'data' prop requires either 'width' or 'data.width', and 'height' or 'data.height' properties. ${`Image: ${data.id ?? data.url}`}`);
47
47
  }
48
48
  let finalSrc = data.url;
@@ -50,8 +50,8 @@ function ShopifyImage({ data, width, height, loading, loader = shopifyImageLoade
50
50
  finalSrc = loader({
51
51
  ...loaderOptions,
52
52
  src: data.url,
53
- width: finalWidth,
54
- height: finalHeight,
53
+ width: imgElementWidth,
54
+ height: imgElementHeight,
55
55
  });
56
56
  if (typeof finalSrc !== 'string' || !finalSrc) {
57
57
  throw new Error(`<Image/>: 'loader' did not return a valid string. ${`Image: ${data.id ?? data.url}`}`);
@@ -59,17 +59,20 @@ function ShopifyImage({ data, width, height, loading, loader = shopifyImageLoade
59
59
  }
60
60
  // determining what the intended width of the image is. For example, if the width is specified and lower than the image width, then that is the maximum image width
61
61
  // to prevent generating a srcset with widths bigger than needed or to generate images that would distort because of being larger than original
62
- const maxWidth = width && finalWidth && width < finalWidth ? width : finalWidth;
62
+ const maxWidth = width && imgElementWidth && width < imgElementWidth
63
+ ? width
64
+ : imgElementWidth;
63
65
  const finalSrcset = rest.srcSet ??
64
66
  internalImageSrcSet({
65
67
  ...loaderOptions,
66
68
  widths,
67
69
  src: data.url,
68
70
  width: maxWidth,
71
+ height: imgElementHeight,
69
72
  loader,
70
73
  });
71
74
  /* eslint-disable hydrogen/prefer-image-component */
72
- return (React.createElement("img", { id: data.id ?? '', alt: data.altText ?? rest.alt ?? '', loading: loading ?? 'lazy', ...rest, src: finalSrc, width: finalWidth ?? undefined, height: finalHeight ?? undefined, srcSet: finalSrcset }));
75
+ return (React.createElement("img", { id: data.id ?? '', alt: data.altText ?? rest.alt ?? '', loading: loading ?? 'lazy', ...rest, src: finalSrc, width: imgElementWidth ?? undefined, height: imgElementHeight ?? undefined, srcSet: finalSrcset }));
73
76
  /* eslint-enable hydrogen/prefer-image-component */
74
77
  }
75
78
  function ExternalImage({ src, width, height, alt, loader, loaderOptions, widths, loading, ...rest }) {
@@ -112,23 +115,29 @@ function ExternalImage({ src, width, height, alt, loader, loaderOptions, widths,
112
115
  height: loaderOptions?.height ?? height, alt: alt ?? '', loading: loading ?? 'lazy', srcSet: finalSrcset }));
113
116
  /* eslint-enable hydrogen/prefer-image-component */
114
117
  }
115
- // based on the default width sizes used by the Shopify liquid HTML tag img_tag plus a 2560 width to account for 2k resolutions
116
- // reference: https://shopify.dev/api/liquid/filters/html-filters#image_tag
117
- const IMG_SRC_SET_SIZES = [352, 832, 1200, 1920, 2560];
118
- function internalImageSrcSet({ src, width, crop, scale, widths, loader, }) {
118
+ function internalImageSrcSet({ src, width, crop, scale, widths, loader, height, }) {
119
119
  const hasCustomWidths = widths && Array.isArray(widths);
120
- if (hasCustomWidths && widths.some((size) => isNaN(size)))
120
+ if (hasCustomWidths && widths.some((size) => isNaN(size))) {
121
121
  throw new Error(`<Image/>: the 'widths' must be an array of numbers`);
122
+ }
123
+ let aspectRatio = 1;
124
+ if (width && height) {
125
+ aspectRatio = Number(height) / Number(width);
126
+ }
122
127
  let setSizes = hasCustomWidths ? widths : IMG_SRC_SET_SIZES;
123
128
  if (!hasCustomWidths &&
124
129
  width &&
125
- width < IMG_SRC_SET_SIZES[IMG_SRC_SET_SIZES.length - 1])
130
+ width < IMG_SRC_SET_SIZES[IMG_SRC_SET_SIZES.length - 1]) {
126
131
  setSizes = IMG_SRC_SET_SIZES.filter((size) => size <= width);
132
+ }
127
133
  const srcGenerator = loader ? loader : addImageSizeParametersToUrl;
128
134
  return setSizes
129
135
  .map((size) => `${srcGenerator({
130
136
  src,
131
137
  width: size,
138
+ // height is not applied if there is no crop
139
+ // if there is crop, then height is applied as a ratio of the original width + height aspect ratio * size
140
+ height: crop ? Number(size) * aspectRatio : undefined,
132
141
  crop,
133
142
  scale,
134
143
  })} ${size}w`)
@@ -1,2 +1,2 @@
1
- export { Image } from './Image';
2
- export type { ShopifyLoaderParams, ShopifyLoaderOptions, ShopifyImageProps, } from './Image';
1
+ export { Image } from './Image.js';
2
+ export type { ShopifyLoaderParams, ShopifyLoaderOptions, ShopifyImageProps, } from './Image.js';
@@ -1 +1 @@
1
- export { Image } from './Image';
1
+ export { Image } from './Image.js';
@@ -1,10 +1,10 @@
1
1
  import React, { useCallback, useEffect, useState } from 'react';
2
- import { useLocation } from '../../foundation/Router/BrowserRouter.client';
2
+ import { useLocation } from '../../foundation/Router/BrowserRouter.client.js';
3
3
  import { createPath } from 'history';
4
- import { buildPath, useNavigate } from '../../foundation/useNavigate/useNavigate';
5
- import { RSC_PATHNAME } from '../../constants';
6
- import { useInternalServerProps } from '../../foundation/useServerProps/use-server-props';
7
- import { useBasePath } from '../../foundation/useRouteParams/RouteParamsProvider.client';
4
+ import { buildPath, useNavigate, } from '../../foundation/useNavigate/useNavigate.js';
5
+ import { RSC_PATHNAME } from '../../constants.js';
6
+ import { useInternalServerProps } from '../../foundation/useServerProps/use-server-props.js';
7
+ import { useBasePath } from '../../foundation/useRouteParams/RouteParamsProvider.client.js';
8
8
  /**
9
9
  * The `Link` component is used to navigate between routes. Because it renders an underlying `<a>` element, all
10
10
  * properties available to the `<a>` element are also available to the `Link` component.
@@ -1 +1 @@
1
- export { Link } from './Link.client';
1
+ export { Link } from './Link.client.js';
@@ -1 +1 @@
1
- export { Link } from './Link.client';
1
+ export { Link } from './Link.client.js';
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import { LocalizationContextValue } from './LocalizationContext.client';
2
+ import type { LocalizationContextValue } from '../../foundation/ShopifyProvider/types.js';
3
3
  export default function LocalizationClientProvider({ localization, children, }: {
4
4
  children: ReactNode;
5
5
  localization: LocalizationContextValue;
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { LocalizationContext, } from './LocalizationContext.client';
2
+ import { LocalizationContext } from '../../foundation/ShopifyProvider/ShopifyProvider.client.js';
3
3
  export default function LocalizationClientProvider({ localization, children, }) {
4
4
  return (React.createElement(LocalizationContext.Provider, { value: localization }, children));
5
5
  }
@@ -1,15 +1,16 @@
1
1
  import { ReactNode } from 'react';
2
+ import { CountryCode, LanguageCode } from '../../storefront-api-types.js';
2
3
  export interface LocalizationProviderProps {
3
4
  /** A `ReactNode` element. */
4
5
  children: ReactNode;
5
6
  /**
6
7
  * Override the `isoCode` to define the active country
7
8
  */
8
- countryCode?: string;
9
+ countryCode?: CountryCode;
9
10
  /**
10
11
  * Override the `languageCode` to define the active language
11
12
  */
12
- languageCode?: string;
13
+ languageCode?: LanguageCode;
13
14
  }
14
15
  /**
15
16
  * The `LocalizationProvider` component automatically queries the Storefront API's
@@ -1,7 +1,9 @@
1
1
  import React from 'react';
2
- import LocalizationClientProvider from './LocalizationClientProvider.client';
3
- import { useShop } from '../../foundation/useShop';
4
- import { useServerRequest } from '../../foundation/ServerRequestProvider';
2
+ import LocalizationClientProvider from './LocalizationClientProvider.client.js';
3
+ import { useShop } from '../../foundation/useShop/index.js';
4
+ import { useServerRequest } from '../../foundation/ServerRequestProvider/index.js';
5
+ import { log } from '../../utilities/log/index.js';
6
+ import { getLocalizationContextValue } from '../../foundation/ShopifyProvider/ShopifyProvider.server.js';
5
7
  /**
6
8
  * The `LocalizationProvider` component automatically queries the Storefront API's
7
9
  * [`localization`](https://shopify.dev/api/storefront/reference/common-objects/queryroot) field
@@ -10,18 +12,12 @@ import { useServerRequest } from '../../foundation/ServerRequestProvider';
10
12
  * Any descendents of this provider can use the `useLocalization` hook.
11
13
  */
12
14
  export function LocalizationProvider(props) {
15
+ if (import.meta.env.DEV) {
16
+ log.warn('<LocalizationProvider> is no longer necessary. Pass localization props directly to `<ShopifyProvider>` instead.');
17
+ }
13
18
  const { defaultLanguageCode, defaultCountryCode } = useShop();
14
- const languageCode = (props.languageCode ?? defaultLanguageCode).toUpperCase();
15
- const countryCode = (props.countryCode ?? defaultCountryCode).toUpperCase();
16
19
  const request = useServerRequest();
17
- const localization = {
18
- country: {
19
- isoCode: countryCode,
20
- },
21
- language: {
22
- isoCode: languageCode,
23
- },
24
- };
20
+ const localization = getLocalizationContextValue(defaultLanguageCode, defaultCountryCode, props.languageCode, props.countryCode);
25
21
  request.ctx.localization = localization;
26
22
  return (React.createElement(LocalizationClientProvider, { localization: localization }, props.children));
27
23
  }
@@ -1 +1 @@
1
- export { LocalizationProvider } from './LocalizationProvider.server';
1
+ export { LocalizationProvider } from './LocalizationProvider.server.js';
@@ -1 +1 @@
1
- export { LocalizationProvider } from './LocalizationProvider.server';
1
+ export { LocalizationProvider } from './LocalizationProvider.server.js';
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- import { type ShopifyImageProps } from '../Image';
3
- import { Video } from '../Video';
4
- import { ExternalVideo } from '../ExternalVideo';
5
- import type { MediaEdge as MediaEdgeType } from '../../storefront-api-types';
2
+ import { type ShopifyImageProps } from '../Image/index.js';
3
+ import { Video } from '../Video/index.js';
4
+ import { ExternalVideo } from '../ExternalVideo/index.js';
5
+ import type { MediaEdge as MediaEdgeType } from '../../storefront-api-types.js';
6
6
  import type { PartialDeep } from 'type-fest';
7
7
  export interface MediaFileProps {
8
8
  /** An object with fields that correspond to the Storefront API's [Media object](https://shopify.dev/api/storefront/reference/products/media). */
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
- import { Image } from '../Image';
3
- import { Video } from '../Video';
4
- import { ExternalVideo } from '../ExternalVideo';
5
- import { ModelViewer } from '../ModelViewer';
2
+ import { Image } from '../Image/index.js';
3
+ import { Video } from '../Video/index.js';
4
+ import { ExternalVideo } from '../ExternalVideo/index.js';
5
+ import { ModelViewer } from '../ModelViewer/index.js';
6
6
  /**
7
7
  * The `MediaFile` component renders the media for the Storefront API's
8
8
  * [Media object](https://shopify.dev/api/storefront/reference/products/media). It renders an `Image`, a
@@ -1 +1 @@
1
- export { MediaFile, MediaFileProps } from './MediaFile';
1
+ export { MediaFile, MediaFileProps } from './MediaFile.js';
@@ -1 +1 @@
1
- export { MediaFile } from './MediaFile';
1
+ export { MediaFile } from './MediaFile.js';
@@ -1,6 +1,6 @@
1
1
  import { type ElementType } from 'react';
2
- import type { Props } from '../types';
3
- import type { Metafield } from '../../storefront-api-types';
2
+ import type { Props } from '../types.js';
3
+ import type { Metafield } from '../../storefront-api-types.js';
4
4
  import type { PartialDeep } from 'type-fest';
5
5
  export interface MetafieldProps<TTag> {
6
6
  /** An object with fields that correspond to the Storefront API's [Metafield object](https://shopify.dev/api/storefront/reference/common-objects/metafield). */
@@ -1,10 +1,10 @@
1
1
  import React, { useMemo } from 'react';
2
- import { useLocalization } from '../../hooks/useLocalization/useLocalization';
3
- import { getMeasurementAsString } from '../../utilities/measurement';
4
- import { Image } from '../Image';
5
- import { Video } from '../Video';
6
- import { flattenConnection } from '../../utilities/flattenConnection/index';
7
- import { parseMetafield } from '../../utilities/parseMetafield/index';
2
+ import { useLocalization } from '../../hooks/useLocalization/useLocalization.js';
3
+ import { getMeasurementAsString } from '../../utilities/measurement.js';
4
+ import { Image } from '../Image/index.js';
5
+ import { Video } from '../Video/index.js';
6
+ import { flattenConnection } from '../../utilities/flattenConnection/index.js';
7
+ import { parseMetafield } from '../../utilities/parseMetafield/index.js';
8
8
  /**
9
9
  * The `Metafield` component renders the value of a Storefront
10
10
  * API's [Metafield object](https://shopify.dev/api/storefront/reference/common-objects/metafield).
@@ -1,4 +1,4 @@
1
- import { Rating } from '../../../../types';
1
+ import { Rating } from '../../../../types.js';
2
2
  export declare const STAR_EMPTY = "\u2606";
3
3
  export declare const STAR_FILLED = "\u2605";
4
4
  export interface StarRatingProps<TTag> {
@@ -1 +1 @@
1
- export { StarRating } from './StarRating';
1
+ export { StarRating } from './StarRating.js';
@@ -1 +1 @@
1
- export { StarRating } from './StarRating';
1
+ export { StarRating } from './StarRating.js';
@@ -1 +1 @@
1
- export { StarRating } from './StarRating';
1
+ export { StarRating } from './StarRating/index.js';
@@ -1 +1 @@
1
- export { StarRating } from './StarRating';
1
+ export { StarRating } from './StarRating/index.js';
@@ -1,2 +1,2 @@
1
- export { Metafield } from './Metafield.client';
2
- export type { MetafieldType } from './types';
1
+ export { Metafield } from './Metafield.client.js';
2
+ export type { MetafieldType } from './types.js';
@@ -1 +1 @@
1
- export { Metafield } from './Metafield.client';
1
+ export { Metafield } from './Metafield.client.js';
@@ -1,4 +1,4 @@
1
- import { Metafield } from '../../storefront-api-types';
1
+ import { Metafield } from '../../storefront-api-types.js';
2
2
  export declare type MetafieldType = Omit<Partial<Metafield>, 'value'> & {
3
3
  value?: string | number | boolean | Date | Record<string, any>;
4
4
  };
@@ -1,6 +1,6 @@
1
1
  import { ReactNode, ElementType } from 'react';
2
- import { Props } from '../types';
3
- import type { Model3d } from '../../storefront-api-types';
2
+ import { Props } from '../types.js';
3
+ import type { Model3d } from '../../storefront-api-types.js';
4
4
  import type { PartialDeep } from 'type-fest';
5
5
  interface ModelViewerProps {
6
6
  /** Any ReactNode elements. */
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useEffect, useCallback, } from 'react';
2
- import { useLoadScript } from '../../hooks/useLoadScript/useLoadScript.client';
2
+ import { useLoadScript } from '../../hooks/useLoadScript/useLoadScript.client.js';
3
3
  /**
4
4
  * The `ModelViewer` component renders a 3D model (with the `model-viewer` tag) for
5
5
  * the Storefront API's [Model3d object](https://shopify.dev/api/storefront/reference/products/model3d).
@@ -1 +1 @@
1
- export { ModelViewer } from './ModelViewer.client';
1
+ export { ModelViewer } from './ModelViewer.client.js';
@@ -1 +1 @@
1
- export { ModelViewer } from './ModelViewer.client';
1
+ export { ModelViewer } from './ModelViewer.client.js';
@@ -1,5 +1,5 @@
1
1
  import React, { type ReactNode } from 'react';
2
- import type { MoneyV2, UnitPriceMeasurement } from '../../storefront-api-types';
2
+ import type { MoneyV2, UnitPriceMeasurement } from '../../storefront-api-types.js';
3
3
  import type { PartialDeep } from 'type-fest';
4
4
  interface CustomProps<ComponentGeneric extends React.ElementType> {
5
5
  /** An HTML tag or React Component to be rendered as the base element wrapper. The default is `div`. */
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { useMoney } from '../../hooks';
2
+ import { useMoney } from '../../hooks/index.js';
3
3
  /**
4
4
  * The `Money` component renders a string of the Storefront API's
5
5
  * [MoneyV2 object](https://shopify.dev/api/storefront/reference/common-objects/moneyv2) according to the
@@ -1 +1 @@
1
- export { Money } from './Money.client';
1
+ export { Money } from './Money.client.js';
@@ -1 +1 @@
1
- export { Money } from './Money.client';
1
+ export { Money } from './Money.client.js';
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import type { Product, ProductVariant as ProductVariantType } from '../../storefront-api-types';
2
+ import type { Product, ProductVariant as ProductVariantType } from '../../storefront-api-types.js';
3
3
  import type { PartialDeep } from 'type-fest';
4
4
  declare type InitialVariantId = ProductVariantType['id'] | null;
5
5
  interface ProductOptionsProviderProps {
@@ -1,7 +1,7 @@
1
1
  import React, { useMemo, useState, useEffect, useCallback } from 'react';
2
- import { ProductOptionsContext } from './context';
3
- import { getSelectedVariant, getOptions, } from '../../hooks/useProductOptions/helpers';
4
- import { flattenConnection } from '../../utilities/flattenConnection';
2
+ import { ProductOptionsContext } from './context.js';
3
+ import { getSelectedVariant, getOptions, } from '../../hooks/useProductOptions/helpers.js';
4
+ import { flattenConnection } from '../../utilities/flattenConnection/index.js';
5
5
  export function ProductOptionsProvider({ children, data: product, initialVariantId: explicitVariantId, }) {
6
6
  // The flattened variants
7
7
  const variants = useMemo(() => flattenConnection(product.variants ?? {}), [product.variants]);
@@ -1,2 +1,2 @@
1
- import { ProductOptionsHookValue } from '../../hooks';
1
+ import type { ProductOptionsHookValue } from '../../hooks/index.js';
2
2
  export declare const ProductOptionsContext: import("react").Context<ProductOptionsHookValue | null>;
@@ -1,2 +1 @@
1
- export { ProductOptionsProvider } from './ProductOptionsProvider.client';
2
- export { useProductOptions } from '../../hooks/useProductOptions/useProductOptions.client';
1
+ export { ProductOptionsProvider } from './ProductOptionsProvider.client.js';
@@ -1,2 +1 @@
1
- export { ProductOptionsProvider } from './ProductOptionsProvider.client';
2
- export { useProductOptions } from '../../hooks/useProductOptions/useProductOptions.client';
1
+ export { ProductOptionsProvider } from './ProductOptionsProvider.client.js';
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import type { Product } from '../../storefront-api-types';
3
- import { Money } from '../Money';
2
+ import type { Product } from '../../storefront-api-types.js';
3
+ import { Money } from '../Money/index.js';
4
4
  import type { PartialDeep } from 'type-fest';
5
5
  export interface ProductPriceProps {
6
6
  data: PartialDeep<Product>;