@gfed-medusa/sf-lib-common 1.0.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 (266) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/dist/apollo-client-BuznVAE4.js +66 -0
  4. package/dist/apollo-client-BuznVAE4.js.map +1 -0
  5. package/dist/cart-CLJvIUQC.js +103 -0
  6. package/dist/cart-CLJvIUQC.js.map +1 -0
  7. package/dist/cart-D99u8SUJ.js +16 -0
  8. package/dist/cart-D99u8SUJ.js.map +1 -0
  9. package/dist/cart-XQIczSA1.js +42 -0
  10. package/dist/cart-XQIczSA1.js.map +1 -0
  11. package/dist/cart-button-NgoZb9LI.js +12 -0
  12. package/dist/cart-button-NgoZb9LI.js.map +1 -0
  13. package/dist/cart-dropdown-_ZpvhX--.js +195 -0
  14. package/dist/cart-dropdown-_ZpvhX--.js.map +1 -0
  15. package/dist/cart-p3ffQQ5R.js +142 -0
  16. package/dist/cart-p3ffQQ5R.js.map +1 -0
  17. package/dist/categories-BCbIwAcV.js +16 -0
  18. package/dist/categories-BCbIwAcV.js.map +1 -0
  19. package/dist/collections-Buw8B8l9.js +20 -0
  20. package/dist/collections-Buw8B8l9.js.map +1 -0
  21. package/dist/collections-Dkcq21tC.js +22 -0
  22. package/dist/collections-Dkcq21tC.js.map +1 -0
  23. package/dist/components/breadcrumbs/index.d.ts +22 -0
  24. package/dist/components/breadcrumbs/index.d.ts.map +1 -0
  25. package/dist/components/breadcrumbs/index.js +54 -0
  26. package/dist/components/breadcrumbs/index.js.map +1 -0
  27. package/dist/components/cart-button/index.d.ts +7 -0
  28. package/dist/components/cart-button/index.d.ts.map +1 -0
  29. package/dist/components/cart-button/index.js +18 -0
  30. package/dist/components/cart-dropdown/index.d.ts +12 -0
  31. package/dist/components/cart-dropdown/index.d.ts.map +1 -0
  32. package/dist/components/cart-dropdown/index.js +19 -0
  33. package/dist/components/cart-mismatch-banner/index.d.ts +11 -0
  34. package/dist/components/cart-mismatch-banner/index.d.ts.map +1 -0
  35. package/dist/components/cart-mismatch-banner/index.js +55 -0
  36. package/dist/components/cart-mismatch-banner/index.js.map +1 -0
  37. package/dist/components/country-select/index.d.ts +14 -0
  38. package/dist/components/country-select/index.d.ts.map +1 -0
  39. package/dist/components/country-select/index.js +31 -0
  40. package/dist/components/country-select/index.js.map +1 -0
  41. package/dist/components/delete-button/index.d.ts +15 -0
  42. package/dist/components/delete-button/index.d.ts.map +1 -0
  43. package/dist/components/delete-button/index.js +12 -0
  44. package/dist/components/error-message/index.d.ts +13 -0
  45. package/dist/components/error-message/index.d.ts.map +1 -0
  46. package/dist/components/error-message/index.js +15 -0
  47. package/dist/components/error-message/index.js.map +1 -0
  48. package/dist/components/footer/index.d.ts +7 -0
  49. package/dist/components/footer/index.d.ts.map +1 -0
  50. package/dist/components/footer/index.js +115 -0
  51. package/dist/components/footer/index.js.map +1 -0
  52. package/dist/components/free-shipping-price-nudge/index.d.ts +17 -0
  53. package/dist/components/free-shipping-price-nudge/index.d.ts.map +1 -0
  54. package/dist/components/free-shipping-price-nudge/index.js +182 -0
  55. package/dist/components/free-shipping-price-nudge/index.js.map +1 -0
  56. package/dist/components/interactive-link/index.d.ts +17 -0
  57. package/dist/components/interactive-link/index.d.ts.map +1 -0
  58. package/dist/components/interactive-link/index.js +25 -0
  59. package/dist/components/interactive-link/index.js.map +1 -0
  60. package/dist/components/layout-country-select/index.d.ts +16 -0
  61. package/dist/components/layout-country-select/index.d.ts.map +1 -0
  62. package/dist/components/layout-country-select/index.js +14 -0
  63. package/dist/components/line-item-options/index.d.ts +17 -0
  64. package/dist/components/line-item-options/index.d.ts.map +1 -0
  65. package/dist/components/line-item-options/index.js +3 -0
  66. package/dist/components/line-item-price/index.d.ts +17 -0
  67. package/dist/components/line-item-price/index.d.ts.map +1 -0
  68. package/dist/components/line-item-price/index.js +3 -0
  69. package/dist/components/localized-client-link/index.d.ts +24 -0
  70. package/dist/components/localized-client-link/index.d.ts.map +1 -0
  71. package/dist/components/localized-client-link/index.js +5 -0
  72. package/dist/components/modal/index.d.ts +39 -0
  73. package/dist/components/modal/index.d.ts.map +1 -0
  74. package/dist/components/modal/index.js +4 -0
  75. package/dist/components/nav/index.d.ts +7 -0
  76. package/dist/components/nav/index.d.ts.map +1 -0
  77. package/dist/components/nav/index.js +85 -0
  78. package/dist/components/nav/index.js.map +1 -0
  79. package/dist/components/portable-text/index.d.ts +13 -0
  80. package/dist/components/portable-text/index.d.ts.map +1 -0
  81. package/dist/components/portable-text/index.js +3 -0
  82. package/dist/components/preview-price/index.d.ts +12 -0
  83. package/dist/components/preview-price/index.d.ts.map +1 -0
  84. package/dist/components/preview-price/index.js +3 -0
  85. package/dist/components/product-card/index.d.ts +65 -0
  86. package/dist/components/product-card/index.d.ts.map +1 -0
  87. package/dist/components/product-card/index.js +146 -0
  88. package/dist/components/product-card/index.js.map +1 -0
  89. package/dist/components/product-preview/index.d.ts +15 -0
  90. package/dist/components/product-preview/index.d.ts.map +1 -0
  91. package/dist/components/product-preview/index.js +38 -0
  92. package/dist/components/product-preview/index.js.map +1 -0
  93. package/dist/components/search-modal/index.d.ts +12 -0
  94. package/dist/components/search-modal/index.d.ts.map +1 -0
  95. package/dist/components/search-modal/index.js +12 -0
  96. package/dist/components/side-menu/index.d.ts +12 -0
  97. package/dist/components/side-menu/index.d.ts.map +1 -0
  98. package/dist/components/side-menu/index.js +16 -0
  99. package/dist/components/submit-button/index.d.ts +20 -0
  100. package/dist/components/submit-button/index.d.ts.map +1 -0
  101. package/dist/components/submit-button/index.js +24 -0
  102. package/dist/components/submit-button/index.js.map +1 -0
  103. package/dist/components/thumbnail/index.d.ts +15 -0
  104. package/dist/components/thumbnail/index.d.ts.map +1 -0
  105. package/dist/components/thumbnail/index.js +3 -0
  106. package/dist/cookies-DANAjt8U.js +38 -0
  107. package/dist/cookies-DANAjt8U.js.map +1 -0
  108. package/dist/customer-GZZNI4eh.js +25 -0
  109. package/dist/customer-GZZNI4eh.js.map +1 -0
  110. package/dist/data-types-C_rGnTUp.js +10 -0
  111. package/dist/data-types-C_rGnTUp.js.map +1 -0
  112. package/dist/delete-button-Bfog7z-I.js +28 -0
  113. package/dist/delete-button-Bfog7z-I.js.map +1 -0
  114. package/dist/footer-BqaZhjlE.js +76 -0
  115. package/dist/footer-BqaZhjlE.js.map +1 -0
  116. package/dist/footer-fWFeFSUp.js +16 -0
  117. package/dist/footer-fWFeFSUp.js.map +1 -0
  118. package/dist/get-percentage-diff-CxGe_n9N.js +8 -0
  119. package/dist/get-percentage-diff-CxGe_n9N.js.map +1 -0
  120. package/dist/get-product-price-DxBbPmOZ.js +47 -0
  121. package/dist/get-product-price-DxBbPmOZ.js.map +1 -0
  122. package/dist/graphql-BWZPPI_N.d.ts +1368 -0
  123. package/dist/graphql-BWZPPI_N.d.ts.map +1 -0
  124. package/dist/layout-country-select-DrwpoVMM.js +90 -0
  125. package/dist/layout-country-select-DrwpoVMM.js.map +1 -0
  126. package/dist/lib/config/medusa.d.ts +7 -0
  127. package/dist/lib/config/medusa.d.ts.map +1 -0
  128. package/dist/lib/config/medusa.js +3 -0
  129. package/dist/lib/context/apollo-context.d.ts +10 -0
  130. package/dist/lib/context/apollo-context.d.ts.map +1 -0
  131. package/dist/lib/context/apollo-context.js +18 -0
  132. package/dist/lib/context/apollo-context.js.map +1 -0
  133. package/dist/lib/context/modal-context.d.ts +20 -0
  134. package/dist/lib/context/modal-context.d.ts.map +1 -0
  135. package/dist/lib/context/modal-context.js +5 -0
  136. package/dist/lib/data/cart.d.ts +24 -0
  137. package/dist/lib/data/cart.d.ts.map +1 -0
  138. package/dist/lib/data/cart.js +13 -0
  139. package/dist/lib/data/categories.d.ts +19 -0
  140. package/dist/lib/data/categories.d.ts.map +1 -0
  141. package/dist/lib/data/categories.js +6 -0
  142. package/dist/lib/data/collections.d.ts +14 -0
  143. package/dist/lib/data/collections.d.ts.map +1 -0
  144. package/dist/lib/data/collections.js +8 -0
  145. package/dist/lib/data/cookies.d.ts +15 -0
  146. package/dist/lib/data/cookies.d.ts.map +1 -0
  147. package/dist/lib/data/cookies.js +3 -0
  148. package/dist/lib/data/customer.d.ts +7 -0
  149. package/dist/lib/data/customer.d.ts.map +1 -0
  150. package/dist/lib/data/customer.js +8 -0
  151. package/dist/lib/data/footer.d.ts +75 -0
  152. package/dist/lib/data/footer.d.ts.map +1 -0
  153. package/dist/lib/data/footer.js +5 -0
  154. package/dist/lib/data/regions.d.ts +8 -0
  155. package/dist/lib/data/regions.d.ts.map +1 -0
  156. package/dist/lib/data/regions.js +5 -0
  157. package/dist/lib/data/search.d.ts +9 -0
  158. package/dist/lib/data/search.d.ts.map +1 -0
  159. package/dist/lib/data/search.js +8 -0
  160. package/dist/lib/gql/apollo-client.d.ts +18 -0
  161. package/dist/lib/gql/apollo-client.d.ts.map +1 -0
  162. package/dist/lib/gql/apollo-client.js +3 -0
  163. package/dist/lib/gql/fragments/cart.d.ts +14 -0
  164. package/dist/lib/gql/fragments/cart.d.ts.map +1 -0
  165. package/dist/lib/gql/fragments/cart.js +4 -0
  166. package/dist/lib/gql/fragments/product.d.ts +13 -0
  167. package/dist/lib/gql/fragments/product.d.ts.map +1 -0
  168. package/dist/lib/gql/fragments/product.js +3 -0
  169. package/dist/lib/gql/mutations/cart.d.ts +9 -0
  170. package/dist/lib/gql/mutations/cart.d.ts.map +1 -0
  171. package/dist/lib/gql/mutations/cart.js +5 -0
  172. package/dist/lib/gql/mutations/customer.d.ts +1 -0
  173. package/dist/lib/gql/mutations/customer.js +1 -0
  174. package/dist/lib/gql/queries/cart.d.ts +7 -0
  175. package/dist/lib/gql/queries/cart.d.ts.map +1 -0
  176. package/dist/lib/gql/queries/cart.js +5 -0
  177. package/dist/lib/gql/queries/collections.d.ts +7 -0
  178. package/dist/lib/gql/queries/collections.d.ts.map +1 -0
  179. package/dist/lib/gql/queries/collections.js +4 -0
  180. package/dist/lib/gql/queries/footer.d.ts +7 -0
  181. package/dist/lib/gql/queries/footer.d.ts.map +1 -0
  182. package/dist/lib/gql/queries/footer.js +3 -0
  183. package/dist/lib/gql/queries/product.d.ts +8 -0
  184. package/dist/lib/gql/queries/product.d.ts.map +1 -0
  185. package/dist/lib/gql/queries/product.js +4 -0
  186. package/dist/lib/hooks/use-apollo.d.ts +7 -0
  187. package/dist/lib/hooks/use-apollo.d.ts.map +1 -0
  188. package/dist/lib/hooks/use-apollo.js +4 -0
  189. package/dist/lib/hooks/use-search.d.ts +22 -0
  190. package/dist/lib/hooks/use-search.d.ts.map +1 -0
  191. package/dist/lib/hooks/use-search.js +9 -0
  192. package/dist/lib/hooks/use-toggle-state.d.ts +2 -0
  193. package/dist/lib/hooks/use-toggle-state.js +43 -0
  194. package/dist/lib/hooks/use-toggle-state.js.map +1 -0
  195. package/dist/lib/utils/data-types.d.ts +7 -0
  196. package/dist/lib/utils/data-types.d.ts.map +1 -0
  197. package/dist/lib/utils/data-types.js +3 -0
  198. package/dist/lib/utils/env.d.ts +5 -0
  199. package/dist/lib/utils/env.d.ts.map +1 -0
  200. package/dist/lib/utils/env.js +8 -0
  201. package/dist/lib/utils/env.js.map +1 -0
  202. package/dist/lib/utils/get-percentage-diff.d.ts +5 -0
  203. package/dist/lib/utils/get-percentage-diff.d.ts.map +1 -0
  204. package/dist/lib/utils/get-percentage-diff.js +3 -0
  205. package/dist/lib/utils/get-product-price.d.ts +42 -0
  206. package/dist/lib/utils/get-product-price.d.ts.map +1 -0
  207. package/dist/lib/utils/get-product-price.js +3 -0
  208. package/dist/lib/utils/medusa-error.d.ts +5 -0
  209. package/dist/lib/utils/medusa-error.d.ts.map +1 -0
  210. package/dist/lib/utils/medusa-error.js +3 -0
  211. package/dist/lib/utils/money.d.ts +18 -0
  212. package/dist/lib/utils/money.d.ts.map +1 -0
  213. package/dist/lib/utils/money.js +3 -0
  214. package/dist/lib/utils/normalize-functions.d.ts +8 -0
  215. package/dist/lib/utils/normalize-functions.d.ts.map +1 -0
  216. package/dist/lib/utils/normalize-functions.js +3 -0
  217. package/dist/line-item-options-B3rbud31.js +16 -0
  218. package/dist/line-item-options-B3rbud31.js.map +1 -0
  219. package/dist/line-item-price-BBlC_T8m.js +47 -0
  220. package/dist/line-item-price-BBlC_T8m.js.map +1 -0
  221. package/dist/localized-client-link-C3mE37Ub.js +22 -0
  222. package/dist/localized-client-link-C3mE37Ub.js.map +1 -0
  223. package/dist/medusa-C1jfAM1B.js +12 -0
  224. package/dist/medusa-C1jfAM1B.js.map +1 -0
  225. package/dist/medusa-error-Cf_eEPhR.js +17 -0
  226. package/dist/medusa-error-Cf_eEPhR.js.map +1 -0
  227. package/dist/modal-C-crvjtF.js +102 -0
  228. package/dist/modal-C-crvjtF.js.map +1 -0
  229. package/dist/modal-context-D-ugwFUM.js +20 -0
  230. package/dist/modal-context-D-ugwFUM.js.map +1 -0
  231. package/dist/money-BrwiFQUW.js +15 -0
  232. package/dist/money-BrwiFQUW.js.map +1 -0
  233. package/dist/normalize-functions-BIuKc_-k.js +15 -0
  234. package/dist/normalize-functions-BIuKc_-k.js.map +1 -0
  235. package/dist/portable-text-DSWXgovn.js +330 -0
  236. package/dist/portable-text-DSWXgovn.js.map +1 -0
  237. package/dist/preview-price-D_GqXrT4.js +20 -0
  238. package/dist/preview-price-D_GqXrT4.js.map +1 -0
  239. package/dist/prices-IWR3xm6o.d.ts +20 -0
  240. package/dist/prices-IWR3xm6o.d.ts.map +1 -0
  241. package/dist/product-Cgtch-vz.js +90 -0
  242. package/dist/product-Cgtch-vz.js.map +1 -0
  243. package/dist/product-DMWvgZkb.js +47 -0
  244. package/dist/product-DMWvgZkb.js.map +1 -0
  245. package/dist/regions-CF6DH579.js +34 -0
  246. package/dist/regions-CF6DH579.js.map +1 -0
  247. package/dist/search-CKhI5RO4.js +21 -0
  248. package/dist/search-CKhI5RO4.js.map +1 -0
  249. package/dist/search-modal-D1tgUDXQ.js +137 -0
  250. package/dist/search-modal-D1tgUDXQ.js.map +1 -0
  251. package/dist/side-menu-ByDXpZJO.js +97 -0
  252. package/dist/side-menu-ByDXpZJO.js.map +1 -0
  253. package/dist/thumbnail-CXIliWAD.js +44 -0
  254. package/dist/thumbnail-CXIliWAD.js.map +1 -0
  255. package/dist/types/graphql.d.ts +2 -0
  256. package/dist/types/graphql.js +14516 -0
  257. package/dist/types/graphql.js.map +1 -0
  258. package/dist/types/prices.d.ts +2 -0
  259. package/dist/types/prices.js +1 -0
  260. package/dist/use-apollo-q4uz05i-.js +11 -0
  261. package/dist/use-apollo-q4uz05i-.js.map +1 -0
  262. package/dist/use-search-BTEnFlC0.js +67 -0
  263. package/dist/use-search-BTEnFlC0.js.map +1 -0
  264. package/dist/use-toggle-state-zIAKMNfR.d.ts +23 -0
  265. package/dist/use-toggle-state-zIAKMNfR.d.ts.map +1 -0
  266. package/package.json +94 -0
@@ -0,0 +1,85 @@
1
+ import "../../medusa-C1jfAM1B.js";
2
+ import "../../apollo-client-BuznVAE4.js";
3
+ import "../../product-Cgtch-vz.js";
4
+ import "../../cart-p3ffQQ5R.js";
5
+ import "../../cart-XQIczSA1.js";
6
+ import "../../cart-D99u8SUJ.js";
7
+ import "../../cookies-DANAjt8U.js";
8
+ import { n as listRegions } from "../../regions-CF6DH579.js";
9
+ import "../../cart-CLJvIUQC.js";
10
+ import "../../delete-button-Bfog7z-I.js";
11
+ import "../../line-item-options-B3rbud31.js";
12
+ import "../../line-item-price-BBlC_T8m.js";
13
+ import { t as LocalizedClientLink } from "../../localized-client-link-C3mE37Ub.js";
14
+ import "../../thumbnail-CXIliWAD.js";
15
+ import "../../cart-dropdown-_ZpvhX--.js";
16
+ import { t as CartButton } from "../../cart-button-NgoZb9LI.js";
17
+ import "../../product-DMWvgZkb.js";
18
+ import "../../layout-country-select-DrwpoVMM.js";
19
+ import "../../modal-context-D-ugwFUM.js";
20
+ import "../../modal-C-crvjtF.js";
21
+ import "../../search-CKhI5RO4.js";
22
+ import "../../use-search-BTEnFlC0.js";
23
+ import { t as SearchModal } from "../../search-modal-D1tgUDXQ.js";
24
+ import { t as SideMenu } from "../../side-menu-ByDXpZJO.js";
25
+ import { Suspense } from "react";
26
+ import { jsx, jsxs } from "react/jsx-runtime";
27
+
28
+ //#region src/components/nav/index.tsx
29
+ async function Nav() {
30
+ return /* @__PURE__ */ jsx("div", {
31
+ className: "group sticky inset-x-0 top-0 z-50",
32
+ children: /* @__PURE__ */ jsx("header", {
33
+ className: "border-ui-border-base relative mx-auto h-16 border-b bg-white duration-200",
34
+ children: /* @__PURE__ */ jsxs("nav", {
35
+ className: "content-container text-small-regular txt-xsmall-plus text-ui-fg-subtle flex h-full w-full items-center justify-between",
36
+ children: [
37
+ /* @__PURE__ */ jsx("div", {
38
+ className: "flex h-full flex-1 basis-0 items-center",
39
+ children: /* @__PURE__ */ jsx("div", {
40
+ className: "h-full",
41
+ children: /* @__PURE__ */ jsx(SideMenu, { regions: await listRegions().then((regions) => regions) })
42
+ })
43
+ }),
44
+ /* @__PURE__ */ jsx("div", {
45
+ className: "flex h-full items-center",
46
+ children: /* @__PURE__ */ jsx(LocalizedClientLink, {
47
+ href: "/",
48
+ className: "txt-compact-xlarge-plus hover:text-ui-fg-base uppercase",
49
+ "data-testid": "nav-store-link",
50
+ children: "Medusa Store"
51
+ })
52
+ }),
53
+ /* @__PURE__ */ jsxs("div", {
54
+ className: "flex h-full flex-1 basis-0 items-center justify-end gap-x-6",
55
+ children: [
56
+ /* @__PURE__ */ jsx(SearchModal, {}),
57
+ /* @__PURE__ */ jsx("div", {
58
+ className: "small:flex hidden h-full items-center gap-x-6",
59
+ children: /* @__PURE__ */ jsx(LocalizedClientLink, {
60
+ className: "hover:text-ui-fg-base",
61
+ href: "/account",
62
+ "data-testid": "nav-account-link",
63
+ children: "Account"
64
+ })
65
+ }),
66
+ /* @__PURE__ */ jsx(Suspense, {
67
+ fallback: /* @__PURE__ */ jsx(LocalizedClientLink, {
68
+ className: "hover:text-ui-fg-base flex gap-2",
69
+ href: "/cart",
70
+ "data-testid": "nav-cart-link",
71
+ children: "Cart (0)"
72
+ }),
73
+ children: /* @__PURE__ */ jsx(CartButton, {})
74
+ })
75
+ ]
76
+ })
77
+ ]
78
+ })
79
+ })
80
+ });
81
+ }
82
+
83
+ //#endregion
84
+ export { Nav };
85
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/nav/index.tsx"],"sourcesContent":["import { Suspense } from 'react';\n\nimport { listRegions } from '@/lib/data/regions';\nimport { Region } from '@/types/graphql';\n\nimport { CartButton } from '../cart-button';\nimport { LocalizedClientLink } from '../localized-client-link';\nimport { SearchModal } from '../search-modal';\nimport { SideMenu } from '../side-menu';\n\nasync function Nav() {\n const regions = await listRegions().then((regions: Region[]) => regions);\n\n return (\n <div className=\"group sticky inset-x-0 top-0 z-50\">\n <header className=\"border-ui-border-base relative mx-auto h-16 border-b bg-white duration-200\">\n <nav className=\"content-container text-small-regular txt-xsmall-plus text-ui-fg-subtle flex h-full w-full items-center justify-between\">\n <div className=\"flex h-full flex-1 basis-0 items-center\">\n <div className=\"h-full\">\n <SideMenu regions={regions} />\n </div>\n </div>\n\n <div className=\"flex h-full items-center\">\n <LocalizedClientLink\n href=\"/\"\n className=\"txt-compact-xlarge-plus hover:text-ui-fg-base uppercase\"\n data-testid=\"nav-store-link\"\n >\n Medusa Store\n </LocalizedClientLink>\n </div>\n\n <div className=\"flex h-full flex-1 basis-0 items-center justify-end gap-x-6\">\n <SearchModal />\n <div className=\"small:flex hidden h-full items-center gap-x-6\">\n <LocalizedClientLink\n className=\"hover:text-ui-fg-base\"\n href=\"/account\"\n data-testid=\"nav-account-link\"\n >\n Account\n </LocalizedClientLink>\n </div>\n <Suspense\n fallback={\n <LocalizedClientLink\n className=\"hover:text-ui-fg-base flex gap-2\"\n href=\"/cart\"\n data-testid=\"nav-cart-link\"\n >\n Cart (0)\n </LocalizedClientLink>\n }\n >\n <CartButton />\n </Suspense>\n </div>\n </nav>\n </header>\n </div>\n );\n}\n\nexport { Nav };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,eAAe,MAAM;AAGnB,QACE,oBAAC;EAAI,WAAU;YACb,oBAAC;GAAO,WAAU;aAChB,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAI,WAAU;gBACb,oBAAC;OAAI,WAAU;iBACb,oBAAC,YAAS,SARN,MAAM,aAAa,CAAC,MAAM,YAAsB,QAAQ,GAQ9B;QAC1B;OACF;KAEN,oBAAC;MAAI,WAAU;gBACb,oBAAC;OACC,MAAK;OACL,WAAU;OACV,eAAY;iBACb;QAEqB;OAClB;KAEN,qBAAC;MAAI,WAAU;;OACb,oBAAC,gBAAc;OACf,oBAAC;QAAI,WAAU;kBACb,oBAAC;SACC,WAAU;SACV,MAAK;SACL,eAAY;mBACb;UAEqB;SAClB;OACN,oBAAC;QACC,UACE,oBAAC;SACC,WAAU;SACV,MAAK;SACL,eAAY;mBACb;UAEqB;kBAGxB,oBAAC,eAAa;SACL;;OACP;;KACF;IACC;GACL"}
@@ -0,0 +1,13 @@
1
+ import { ar as RichTextBlock } from "../../graphql-BWZPPI_N.js";
2
+ import * as react_jsx_runtime18 from "react/jsx-runtime";
3
+
4
+ //#region src/components/portable-text/index.d.ts
5
+ type PortableTextProps = {
6
+ value: RichTextBlock[];
7
+ };
8
+ declare const PortableText: ({
9
+ value
10
+ }: PortableTextProps) => react_jsx_runtime18.JSX.Element | null;
11
+ //#endregion
12
+ export { PortableText };
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/portable-text/index.tsx"],"sourcesContent":[],"mappings":";;;;KAkCK,iBAAA;SACI;;AAHgB,cAMnB,YAJgB,EAAA,CAAA;EAAA;AACA,CAAb,EAGwB,iBAHX,EAAA,GAG4B,mBAAA,CAAA,GAAA,CAAA,OAAA,GAH5B,IAAA"}
@@ -0,0 +1,3 @@
1
+ import { t as PortableText } from "../../portable-text-DSWXgovn.js";
2
+
3
+ export { PortableText };
@@ -0,0 +1,12 @@
1
+ import { n as VariantPrice } from "../../prices-IWR3xm6o.js";
2
+ import * as react_jsx_runtime10 from "react/jsx-runtime";
3
+
4
+ //#region src/components/preview-price/index.d.ts
5
+ declare function PreviewPrice({
6
+ price
7
+ }: {
8
+ price: VariantPrice;
9
+ }): react_jsx_runtime10.JSX.Element | null;
10
+ //#endregion
11
+ export { PreviewPrice };
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/preview-price/index.tsx"],"sourcesContent":[],"mappings":";;;;iBAIS,YAAA;;;SAAiC;IAAc,mBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1,3 @@
1
+ import { t as PreviewPrice } from "../../preview-price-D_GqXrT4.js";
2
+
3
+ export { PreviewPrice };
@@ -0,0 +1,65 @@
1
+ import * as react_jsx_runtime12 from "react/jsx-runtime";
2
+ import { VariantProps } from "class-variance-authority";
3
+ import * as class_variance_authority_types0 from "class-variance-authority/types";
4
+
5
+ //#region src/components/product-card/index.d.ts
6
+ declare const productCardVariants: (props?: ({
7
+ variant?: "default" | "withAddToCart" | "minimal" | null | undefined;
8
+ size?: "sm" | "md" | "lg" | null | undefined;
9
+ } & class_variance_authority_types0.ClassProp) | undefined) => string;
10
+ interface Price {
11
+ current: string;
12
+ old?: string;
13
+ }
14
+ interface Product {
15
+ id: string;
16
+ image: {
17
+ src: string;
18
+ alt?: string;
19
+ };
20
+ localize?: {
21
+ currency: string;
22
+ locale: string;
23
+ };
24
+ title: string;
25
+ href?: string;
26
+ price: Price;
27
+ }
28
+ interface ProductCardProps extends VariantProps<typeof productCardVariants> {
29
+ product: Product;
30
+ rating?: {
31
+ average: number;
32
+ count?: number;
33
+ };
34
+ badge?: {
35
+ label: string;
36
+ variant?: 'default' | 'sale' | 'new' | 'limited';
37
+ };
38
+ variants?: {
39
+ options: {
40
+ value: string;
41
+ label?: string;
42
+ imageSrc?: string;
43
+ color?: string;
44
+ }[];
45
+ value: string;
46
+ onChange: (value: string) => void;
47
+ };
48
+ quantity?: {
49
+ value: number;
50
+ onChange: (value: number) => void;
51
+ };
52
+ className?: string;
53
+ }
54
+ declare function ProductCard({
55
+ product,
56
+ rating,
57
+ badge,
58
+ variants,
59
+ variant,
60
+ size,
61
+ className
62
+ }: ProductCardProps): react_jsx_runtime12.JSX.Element;
63
+ //#endregion
64
+ export { ProductCard };
65
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/product-card/index.tsx"],"sourcesContent":[],"mappings":";;;;;cAaM;;;IAoBL,+BAAA,CAAA;AA5BiE,UA8BxD,KAAA,CAtBJ;EAsBI,OAAA,EAAK,MAAA;EAKL,GAAA,CAAA,EAAA,MAAO;AAYH;UAZJ,OAAA,CAe6C;EAC5C,EAAA,EAAA,MAAA;EADwB,KAAA,EAAA;IAAY,GAAA,EAAA,MAAA;IAuC/B,GAAA,CAAA,EAAA,MAAW;EACzB,CAAA;EACA,QAAA,CAAA,EAAA;IACA,QAAA,EAAA,MAAA;IACA,MAAA,EAAA,MAAA;EACA,CAAA;EACA,KAAA,EAAA,MAAA;EACA,IAAA,CAAA,EAAA,MAAA;EACC,KAAA,EAlDM,KAkDN;;UA/CO,gBAAA,SAAyB,YA+ChB,CAAA,OA/CoC,mBA+CpC,CAAA,CAAA;WA9CR;;;;;;;;;;;;;;;;;;;;;;;;;iBAsCK,WAAA;;;;;;;;GAQb,mBAAgB,mBAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1,146 @@
1
+ 'use client';
2
+
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import Link from "next/link";
5
+ import Image from "next/image";
6
+ import { cn } from "@gfed-medusa/sf-lib-ui/lib/utils";
7
+ import { cva } from "class-variance-authority";
8
+ import { Badge } from "@gfed-medusa/sf-lib-ui/components/badge";
9
+ import { Button } from "@gfed-medusa/sf-lib-ui/components/button";
10
+ import { RatingCount } from "@gfed-medusa/sf-lib-ui/components/rating-count";
11
+ import { VariantSelector } from "@gfed-medusa/sf-lib-ui/components/variant-selector";
12
+
13
+ //#region src/components/product-card/index.tsx
14
+ const productCardVariants = cva("rounded-2xl border overflow-hidden transition", {
15
+ variants: {
16
+ variant: {
17
+ default: "flex flex-col shadow-sm hover:shadow-md",
18
+ withAddToCart: "flex flex-col shadow-sm hover:shadow-md",
19
+ minimal: "flex flex-col hover:shadow hover:border-muted-foreground/30"
20
+ },
21
+ size: {
22
+ sm: "w-48",
23
+ md: "w-64",
24
+ lg: "w-80"
25
+ }
26
+ },
27
+ defaultVariants: {
28
+ variant: "default",
29
+ size: "md"
30
+ }
31
+ });
32
+ const formatPrice = (price, locale = "en-GB", currency = "GBP") => {
33
+ const formatter = new Intl.NumberFormat(locale, {
34
+ style: "currency",
35
+ currency
36
+ });
37
+ return {
38
+ currentPrice: formatter.format(Number(price.current)),
39
+ oldPrice: price.old ? formatter.format(Number(price.old)) : void 0
40
+ };
41
+ };
42
+ function ProductCard({ product, rating, badge, variants, variant, size, className }) {
43
+ const { currentPrice, oldPrice } = formatPrice(product.price, product.localize?.locale, product.localize?.currency);
44
+ switch (variant) {
45
+ case "minimal": return /* @__PURE__ */ jsxs("div", {
46
+ className: cn(productCardVariants({
47
+ variant,
48
+ size
49
+ }), "w-60 overflow-hidden rounded-2xl border p-0 shadow-sm"),
50
+ children: [/* @__PURE__ */ jsx("div", {
51
+ className: "h-72 w-full overflow-hidden",
52
+ children: /* @__PURE__ */ jsx("img", {
53
+ src: product.image.src,
54
+ alt: product.image.alt ?? product.title,
55
+ className: "h-full w-full object-cover"
56
+ })
57
+ }), /* @__PURE__ */ jsxs("div", {
58
+ className: "flex flex-col gap-1 p-3",
59
+ children: [/* @__PURE__ */ jsxs("div", {
60
+ className: "flex items-center justify-between",
61
+ children: [/* @__PURE__ */ jsx("h3", {
62
+ className: "truncate text-base font-medium",
63
+ children: product.href ? /* @__PURE__ */ jsx(Link, {
64
+ href: product.href,
65
+ className: "hover:underline",
66
+ children: product.title
67
+ }) : product.title
68
+ }), /* @__PURE__ */ jsx("p", {
69
+ className: "mt-0 text-lg font-semibold text-gray-900",
70
+ children: currentPrice
71
+ })]
72
+ }), /* @__PURE__ */ jsx("p", {
73
+ className: "text-xs text-gray-500",
74
+ children: "7 colors"
75
+ })]
76
+ })]
77
+ });
78
+ default: return /* @__PURE__ */ jsxs("div", {
79
+ className: cn(productCardVariants({
80
+ variant,
81
+ size
82
+ }), className),
83
+ children: [/* @__PURE__ */ jsxs("div", {
84
+ className: "relative",
85
+ children: [/* @__PURE__ */ jsx(Image, {
86
+ src: product.image.src || "/assets/images/missing-img.webp",
87
+ alt: product.image.alt ?? product.title,
88
+ width: 500,
89
+ height: 500,
90
+ className: cn("w-full object-cover")
91
+ }), badge && /* @__PURE__ */ jsx("div", {
92
+ className: "absolute left-2 top-2",
93
+ children: /* @__PURE__ */ jsx(Badge, {
94
+ variant: "default",
95
+ children: badge.label
96
+ })
97
+ })]
98
+ }), /* @__PURE__ */ jsxs("div", {
99
+ className: "flex flex-col gap-2 p-3",
100
+ children: [
101
+ /* @__PURE__ */ jsx("h3", {
102
+ className: "truncate text-base font-medium",
103
+ children: product.href ? /* @__PURE__ */ jsx(Link, {
104
+ href: product.href,
105
+ className: "hover:underline",
106
+ children: product.title
107
+ }) : product.title
108
+ }),
109
+ /* @__PURE__ */ jsxs("div", {
110
+ className: "flex items-center gap-2",
111
+ children: [/* @__PURE__ */ jsx("p", {
112
+ className: "text-lg font-semibold",
113
+ children: currentPrice
114
+ }), oldPrice && /* @__PURE__ */ jsx("p", {
115
+ className: "text-muted-foreground text-sm line-through",
116
+ children: oldPrice
117
+ })]
118
+ }),
119
+ rating !== void 0 && /* @__PURE__ */ jsx("div", {
120
+ "data-testid": "product-card-rating",
121
+ className: "flex items-center gap-2",
122
+ children: /* @__PURE__ */ jsx(RatingCount, {
123
+ average: rating.average,
124
+ ratingCount: rating.count
125
+ })
126
+ }),
127
+ variants && /* @__PURE__ */ jsx(VariantSelector, {
128
+ options: variants.options,
129
+ value: variants.value ?? "",
130
+ onChange: variants.onChange,
131
+ type: "color"
132
+ }),
133
+ variant === "withAddToCart" && /* @__PURE__ */ jsx(Button, {
134
+ variant: "default",
135
+ className: "w-full cursor-pointer",
136
+ children: "Add to Cart"
137
+ })
138
+ ]
139
+ })]
140
+ });
141
+ }
142
+ }
143
+
144
+ //#endregion
145
+ export { ProductCard };
146
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/product-card/index.tsx"],"sourcesContent":["'use client';\n\nimport Image from 'next/image';\nimport Link from 'next/link';\n\nimport { type VariantProps, cva } from 'class-variance-authority';\n\nimport { Badge } from '@gfed-medusa/sf-lib-ui/components/badge';\nimport { Button } from '@gfed-medusa/sf-lib-ui/components/button';\nimport { RatingCount } from '@gfed-medusa/sf-lib-ui/components/rating-count';\nimport { VariantSelector } from '@gfed-medusa/sf-lib-ui/components/variant-selector';\nimport { cn } from '@gfed-medusa/sf-lib-ui/lib/utils';\n\nconst productCardVariants = cva(\n 'rounded-2xl border overflow-hidden transition',\n {\n variants: {\n variant: {\n default: 'flex flex-col shadow-sm hover:shadow-md',\n withAddToCart: 'flex flex-col shadow-sm hover:shadow-md',\n minimal: 'flex flex-col hover:shadow hover:border-muted-foreground/30',\n },\n size: {\n sm: 'w-48',\n md: 'w-64',\n lg: 'w-80',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n },\n }\n);\n\ninterface Price {\n current: string;\n old?: string;\n}\n\ninterface Product {\n id: string;\n image: {\n src: string;\n alt?: string;\n };\n localize?: {\n currency: string;\n locale: string;\n };\n title: string;\n href?: string;\n price: Price;\n}\n\ninterface ProductCardProps extends VariantProps<typeof productCardVariants> {\n product: Product;\n rating?: {\n average: number;\n count?: number;\n };\n badge?: {\n label: string;\n variant?: 'default' | 'sale' | 'new' | 'limited';\n };\n variants?: {\n options: {\n value: string;\n label?: string;\n imageSrc?: string;\n color?: string;\n }[];\n value: string;\n onChange: (value: string) => void;\n };\n quantity?: {\n value: number;\n onChange: (value: number) => void;\n };\n className?: string;\n}\n\nconst formatPrice = (price: Price, locale = 'en-GB', currency = 'GBP') => {\n const formatter = new Intl.NumberFormat(locale, {\n style: 'currency',\n currency,\n });\n\n return {\n currentPrice: formatter.format(Number(price.current)),\n oldPrice: price.old ? formatter.format(Number(price.old)) : undefined,\n };\n};\n\nexport function ProductCard({\n product,\n rating,\n badge,\n variants,\n variant,\n size,\n className,\n}: ProductCardProps) {\n const { currentPrice, oldPrice } = formatPrice(\n product.price,\n product.localize?.locale,\n product.localize?.currency\n );\n\n switch (variant) {\n case 'minimal':\n return (\n <div\n className={cn(\n productCardVariants({ variant, size }),\n 'w-60 overflow-hidden rounded-2xl border p-0 shadow-sm'\n )}\n >\n <div className=\"h-72 w-full overflow-hidden\">\n {/* eslint-disable-next-line @next/next/no-img-element -- needed for minimal variant */}\n <img\n src={product.image.src}\n alt={product.image.alt ?? product.title}\n className=\"h-full w-full object-cover\"\n />\n </div>\n\n <div className=\"flex flex-col gap-1 p-3\">\n <div className=\"flex items-center justify-between\">\n <h3 className=\"truncate text-base font-medium\">\n {product.href ? (\n <Link href={product.href} className=\"hover:underline\">\n {product.title}\n </Link>\n ) : (\n product.title\n )}\n </h3>\n <p className=\"mt-0 text-lg font-semibold text-gray-900\">\n {currentPrice}\n </p>\n </div>\n <p className=\"text-xs text-gray-500\">7 colors</p>\n </div>\n </div>\n );\n default:\n return (\n <div className={cn(productCardVariants({ variant, size }), className)}>\n {/* Image */}\n <div className=\"relative\">\n <Image\n src={product.image.src || '/assets/images/missing-img.webp'}\n alt={product.image.alt ?? product.title}\n width={500}\n height={500}\n className={cn('w-full object-cover')}\n />\n {badge && (\n <div className=\"absolute left-2 top-2\">\n <Badge variant=\"default\">{badge.label}</Badge>\n </div>\n )}\n </div>\n\n {/* Content */}\n <div className=\"flex flex-col gap-2 p-3\">\n <h3 className=\"truncate text-base font-medium\">\n {product.href ? (\n <Link href={product.href} className=\"hover:underline\">\n {product.title}\n </Link>\n ) : (\n product.title\n )}\n </h3>\n\n {/* Price */}\n <div className=\"flex items-center gap-2\">\n <p className=\"text-lg font-semibold\">{currentPrice}</p>\n {oldPrice && (\n <p className=\"text-muted-foreground text-sm line-through\">\n {oldPrice}\n </p>\n )}\n </div>\n\n {/* Rating */}\n {rating !== undefined && (\n <div\n data-testid=\"product-card-rating\"\n className=\"flex items-center gap-2\"\n >\n <RatingCount\n average={rating.average}\n ratingCount={rating.count}\n />\n </div>\n )}\n\n {/* Variant Selector */}\n {variants && (\n <VariantSelector\n options={variants.options}\n value={variants.value ?? ''}\n onChange={variants.onChange}\n type=\"color\"\n />\n )}\n\n {/* Add to Cart button */}\n {variant === 'withAddToCart' && (\n <Button variant=\"default\" className=\"w-full cursor-pointer\">\n Add to Cart\n </Button>\n )}\n </div>\n </div>\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAM,sBAAsB,IAC1B,iDACA;CACE,UAAU;EACR,SAAS;GACP,SAAS;GACT,eAAe;GACf,SAAS;GACV;EACD,MAAM;GACJ,IAAI;GACJ,IAAI;GACJ,IAAI;GACL;EACF;CACD,iBAAiB;EACf,SAAS;EACT,MAAM;EACP;CACF,CACF;AAiDD,MAAM,eAAe,OAAc,SAAS,SAAS,WAAW,UAAU;CACxE,MAAM,YAAY,IAAI,KAAK,aAAa,QAAQ;EAC9C,OAAO;EACP;EACD,CAAC;AAEF,QAAO;EACL,cAAc,UAAU,OAAO,OAAO,MAAM,QAAQ,CAAC;EACrD,UAAU,MAAM,MAAM,UAAU,OAAO,OAAO,MAAM,IAAI,CAAC,GAAG;EAC7D;;AAGH,SAAgB,YAAY,EAC1B,SACA,QACA,OACA,UACA,SACA,MACA,aACmB;CACnB,MAAM,EAAE,cAAc,aAAa,YACjC,QAAQ,OACR,QAAQ,UAAU,QAClB,QAAQ,UAAU,SACnB;AAED,SAAQ,SAAR;EACE,KAAK,UACH,QACE,qBAAC;GACC,WAAW,GACT,oBAAoB;IAAE;IAAS;IAAM,CAAC,EACtC,wDACD;cAED,oBAAC;IAAI,WAAU;cAEb,oBAAC;KACC,KAAK,QAAQ,MAAM;KACnB,KAAK,QAAQ,MAAM,OAAO,QAAQ;KAClC,WAAU;MACV;KACE,EAEN,qBAAC;IAAI,WAAU;eACb,qBAAC;KAAI,WAAU;gBACb,oBAAC;MAAG,WAAU;gBACX,QAAQ,OACP,oBAAC;OAAK,MAAM,QAAQ;OAAM,WAAU;iBACjC,QAAQ;QACJ,GAEP,QAAQ;OAEP,EACL,oBAAC;MAAE,WAAU;gBACV;OACC;MACA,EACN,oBAAC;KAAE,WAAU;eAAwB;MAAY;KAC7C;IACF;EAEV,QACE,QACE,qBAAC;GAAI,WAAW,GAAG,oBAAoB;IAAE;IAAS;IAAM,CAAC,EAAE,UAAU;cAEnE,qBAAC;IAAI,WAAU;eACb,oBAAC;KACC,KAAK,QAAQ,MAAM,OAAO;KAC1B,KAAK,QAAQ,MAAM,OAAO,QAAQ;KAClC,OAAO;KACP,QAAQ;KACR,WAAW,GAAG,sBAAsB;MACpC,EACD,SACC,oBAAC;KAAI,WAAU;eACb,oBAAC;MAAM,SAAQ;gBAAW,MAAM;OAAc;MAC1C;KAEJ,EAGN,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAG,WAAU;gBACX,QAAQ,OACP,oBAAC;OAAK,MAAM,QAAQ;OAAM,WAAU;iBACjC,QAAQ;QACJ,GAEP,QAAQ;OAEP;KAGL,qBAAC;MAAI,WAAU;iBACb,oBAAC;OAAE,WAAU;iBAAyB;QAAiB,EACtD,YACC,oBAAC;OAAE,WAAU;iBACV;QACC;OAEF;KAGL,WAAW,UACV,oBAAC;MACC,eAAY;MACZ,WAAU;gBAEV,oBAAC;OACC,SAAS,OAAO;OAChB,aAAa,OAAO;QACpB;OACE;KAIP,YACC,oBAAC;MACC,SAAS,SAAS;MAClB,OAAO,SAAS,SAAS;MACzB,UAAU,SAAS;MACnB,MAAK;OACL;KAIH,YAAY,mBACX,oBAAC;MAAO,SAAQ;MAAU,WAAU;gBAAwB;OAEnD;;KAEP;IACF"}
@@ -0,0 +1,15 @@
1
+ import { gn as Product } from "../../graphql-BWZPPI_N.js";
2
+ import * as react_jsx_runtime14 from "react/jsx-runtime";
3
+
4
+ //#region src/components/product-preview/index.d.ts
5
+ type ProductPreviewProps = {
6
+ product: Product;
7
+ isFeatured?: boolean;
8
+ };
9
+ declare function ProductPreview({
10
+ product,
11
+ isFeatured
12
+ }: ProductPreviewProps): react_jsx_runtime14.JSX.Element;
13
+ //#endregion
14
+ export { ProductPreview, ProductPreviewProps };
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/product-preview/index.tsx"],"sourcesContent":[],"mappings":";;;;KASY,mBAAA;WACD;;AADX,CAAA;AAGE,iBAEO,cAAA,CAAc;EAAA,OAAA;EAAA;AAAA,CAAA,EAA0B,mBAA1B,CAAA,EAA6C,mBAAA,CAAA,GAAA,CAAA,OAA7C"}
@@ -0,0 +1,38 @@
1
+ import { t as LocalizedClientLink } from "../../localized-client-link-C3mE37Ub.js";
2
+ import { t as Thumbnail } from "../../thumbnail-CXIliWAD.js";
3
+ import { t as PreviewPrice } from "../../preview-price-D_GqXrT4.js";
4
+ import { n as getProductPrice } from "../../get-product-price-DxBbPmOZ.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { Text } from "@medusajs/ui";
7
+
8
+ //#region src/components/product-preview/index.tsx
9
+ function ProductPreview({ product, isFeatured }) {
10
+ const { cheapestPrice } = getProductPrice({ product });
11
+ return /* @__PURE__ */ jsx(LocalizedClientLink, {
12
+ href: `/products/${product.handle}`,
13
+ className: "group",
14
+ children: /* @__PURE__ */ jsxs("div", {
15
+ "data-testid": "product-wrapper",
16
+ children: [/* @__PURE__ */ jsx(Thumbnail, {
17
+ thumbnail: product.thumbnail,
18
+ images: product.images,
19
+ size: "full",
20
+ isFeatured
21
+ }), /* @__PURE__ */ jsxs("div", {
22
+ className: "txt-compact-medium mt-4 flex justify-between",
23
+ children: [/* @__PURE__ */ jsx(Text, {
24
+ className: "text-ui-fg-subtle",
25
+ "data-testid": "product-title",
26
+ children: product.title
27
+ }), /* @__PURE__ */ jsx("div", {
28
+ className: "flex items-center gap-x-2",
29
+ children: cheapestPrice && /* @__PURE__ */ jsx(PreviewPrice, { price: cheapestPrice })
30
+ })]
31
+ })]
32
+ })
33
+ });
34
+ }
35
+
36
+ //#endregion
37
+ export { ProductPreview };
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/product-preview/index.tsx"],"sourcesContent":["import { Text } from '@medusajs/ui';\n\nimport { getProductPrice } from '@/lib/utils/get-product-price';\nimport { Product } from '@/types/graphql';\n\nimport { LocalizedClientLink } from '../localized-client-link';\nimport { PreviewPrice } from '../preview-price';\nimport { Thumbnail } from '../thumbnail';\n\nexport type ProductPreviewProps = {\n product: Product;\n isFeatured?: boolean;\n};\n\nfunction ProductPreview({ product, isFeatured }: ProductPreviewProps) {\n const { cheapestPrice } = getProductPrice({\n product,\n });\n\n return (\n <LocalizedClientLink href={`/products/${product.handle}`} className=\"group\">\n <div data-testid=\"product-wrapper\">\n <Thumbnail\n thumbnail={product.thumbnail}\n images={product.images}\n size=\"full\"\n isFeatured={isFeatured}\n />\n <div className=\"txt-compact-medium mt-4 flex justify-between\">\n <Text className=\"text-ui-fg-subtle\" data-testid=\"product-title\">\n {product.title}\n </Text>\n <div className=\"flex items-center gap-x-2\">\n {cheapestPrice && <PreviewPrice price={cheapestPrice} />}\n </div>\n </div>\n </div>\n </LocalizedClientLink>\n );\n}\n\nexport { ProductPreview };\n"],"mappings":";;;;;;;;AAcA,SAAS,eAAe,EAAE,SAAS,cAAmC;CACpE,MAAM,EAAE,kBAAkB,gBAAgB,EACxC,SACD,CAAC;AAEF,QACE,oBAAC;EAAoB,MAAM,aAAa,QAAQ;EAAU,WAAU;YAClE,qBAAC;GAAI,eAAY;cACf,oBAAC;IACC,WAAW,QAAQ;IACnB,QAAQ,QAAQ;IAChB,MAAK;IACO;KACZ,EACF,qBAAC;IAAI,WAAU;eACb,oBAAC;KAAK,WAAU;KAAoB,eAAY;eAC7C,QAAQ;MACJ,EACP,oBAAC;KAAI,WAAU;eACZ,iBAAiB,oBAAC,gBAAa,OAAO,gBAAiB;MACpD;KACF;IACF;GACc"}
@@ -0,0 +1,12 @@
1
+ import * as react_jsx_runtime11 from "react/jsx-runtime";
2
+
3
+ //#region src/components/search-modal/index.d.ts
4
+ type SearchModalProps = {
5
+ buttonClassName?: string;
6
+ };
7
+ declare function SearchModal({
8
+ buttonClassName
9
+ }: SearchModalProps): react_jsx_runtime11.JSX.Element;
10
+ //#endregion
11
+ export { SearchModal };
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/search-modal/index.tsx"],"sourcesContent":[],"mappings":";;;KAmBK,gBAAA;;;AAIqD,iBAAjD,WAAA,CAJY;EAAA;AAAA,CAAA,EAIqB,gBAJrB,CAAA,EAIqC,mBAAA,CAAA,GAAA,CAAA,OAJrC"}
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+
3
+ import "../../apollo-client-BuznVAE4.js";
4
+ import "../../product-Cgtch-vz.js";
5
+ import "../../product-DMWvgZkb.js";
6
+ import "../../modal-context-D-ugwFUM.js";
7
+ import "../../modal-C-crvjtF.js";
8
+ import "../../search-CKhI5RO4.js";
9
+ import "../../use-search-BTEnFlC0.js";
10
+ import { t as SearchModal } from "../../search-modal-D1tgUDXQ.js";
11
+
12
+ export { SearchModal };
@@ -0,0 +1,12 @@
1
+ import { tr as Region } from "../../graphql-BWZPPI_N.js";
2
+ import * as react_jsx_runtime16 from "react/jsx-runtime";
3
+
4
+ //#region src/components/side-menu/index.d.ts
5
+ declare const SideMenu: ({
6
+ regions
7
+ }: {
8
+ regions: Region[] | null;
9
+ }) => react_jsx_runtime16.JSX.Element;
10
+ //#endregion
11
+ export { SideMenu };
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/side-menu/index.tsx"],"sourcesContent":[],"mappings":";;;;cAoBM;;;WAAoC;MAAiB,mBAAA,CAAA,GAAA,CAAA"}
@@ -0,0 +1,16 @@
1
+ 'use client';
2
+
3
+ import "../../medusa-C1jfAM1B.js";
4
+ import "../../apollo-client-BuznVAE4.js";
5
+ import "../../product-Cgtch-vz.js";
6
+ import "../../cart-p3ffQQ5R.js";
7
+ import "../../cart-XQIczSA1.js";
8
+ import "../../cart-D99u8SUJ.js";
9
+ import "../../cookies-DANAjt8U.js";
10
+ import "../../regions-CF6DH579.js";
11
+ import "../../cart-CLJvIUQC.js";
12
+ import "../../localized-client-link-C3mE37Ub.js";
13
+ import "../../layout-country-select-DrwpoVMM.js";
14
+ import { t as SideMenu } from "../../side-menu-ByDXpZJO.js";
15
+
16
+ export { SideMenu };
@@ -0,0 +1,20 @@
1
+ import React from "react";
2
+ import * as react_jsx_runtime15 from "react/jsx-runtime";
3
+
4
+ //#region src/components/submit-button/index.d.ts
5
+ declare function SubmitButton({
6
+ children,
7
+ variant,
8
+ className,
9
+ 'data-testid': dataTestId,
10
+ isLoading
11
+ }: {
12
+ children: React.ReactNode;
13
+ variant?: 'primary' | 'secondary' | 'transparent' | 'danger' | null;
14
+ className?: string;
15
+ 'data-testid'?: string;
16
+ isLoading?: boolean;
17
+ }): react_jsx_runtime15.JSX.Element;
18
+ //#endregion
19
+ export { SubmitButton };
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/submit-button/index.tsx"],"sourcesContent":[],"mappings":";;;;iBAQS,YAAA;;;;iBAIQ;;;YAGL,KAAA,CAAM;;EAPT,SAAA,CAAA,EAAA,MAAY;EACnB,aAAA,CAAA,EAAA,MAAA;EACA,SAAA,CAAA,EAAA,OAAA;CACA,CAAA,EASD,mBAAA,CAAA,GAAA,CAAA,OATC"}
@@ -0,0 +1,24 @@
1
+ 'use client';
2
+
3
+ import React from "react";
4
+ import { jsx } from "react/jsx-runtime";
5
+ import { Button } from "@medusajs/ui";
6
+ import { useFormStatus } from "react-dom";
7
+
8
+ //#region src/components/submit-button/index.tsx
9
+ function SubmitButton({ children, variant = "primary", className, "data-testid": dataTestId, isLoading }) {
10
+ const { pending } = useFormStatus();
11
+ return /* @__PURE__ */ jsx(Button, {
12
+ size: "large",
13
+ className,
14
+ type: "submit",
15
+ isLoading: isLoading ?? pending,
16
+ variant: variant || "primary",
17
+ "data-testid": dataTestId,
18
+ children
19
+ });
20
+ }
21
+
22
+ //#endregion
23
+ export { SubmitButton };
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/submit-button/index.tsx"],"sourcesContent":["'use client';\n\nimport React from 'react';\n\nimport { useFormStatus } from 'react-dom';\n\nimport { Button } from '@medusajs/ui';\n\nfunction SubmitButton({\n children,\n variant = 'primary',\n className,\n 'data-testid': dataTestId,\n isLoading, // this prop is needed to override `pending` from useFormStatus due to the ff unresolved issue: https://github.com/facebook/react/issues/30368\n}: {\n children: React.ReactNode;\n variant?: 'primary' | 'secondary' | 'transparent' | 'danger' | null;\n className?: string;\n 'data-testid'?: string;\n isLoading?: boolean;\n}) {\n const { pending } = useFormStatus();\n\n return (\n <Button\n size=\"large\"\n className={className}\n type=\"submit\"\n isLoading={isLoading ?? pending}\n variant={variant || 'primary'}\n data-testid={dataTestId}\n >\n {children}\n </Button>\n );\n}\n\nexport { SubmitButton };\n"],"mappings":";;;;;;;;AAQA,SAAS,aAAa,EACpB,UACA,UAAU,WACV,WACA,eAAe,YACf,aAOC;CACD,MAAM,EAAE,YAAY,eAAe;AAEnC,QACE,oBAAC;EACC,MAAK;EACM;EACX,MAAK;EACL,WAAW,aAAa;EACxB,SAAS,WAAW;EACpB,eAAa;EAEZ;GACM"}
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+
3
+ //#region src/components/thumbnail/index.d.ts
4
+ type ThumbnailProps = {
5
+ thumbnail?: string | null;
6
+ images?: any[] | null;
7
+ size?: 'small' | 'medium' | 'large' | 'full' | 'square';
8
+ isFeatured?: boolean;
9
+ className?: string;
10
+ 'data-testid'?: string;
11
+ };
12
+ declare const Thumbnail: React.FC<ThumbnailProps>;
13
+ //#endregion
14
+ export { Thumbnail };
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/thumbnail/index.tsx"],"sourcesContent":[],"mappings":";;;KAOK,cAAA;;EAAA,MAAA,CAAA,EAAA,GAAA,EAAA,GAAc,IAAA;EAUb,IAAA,CAAA,EAAA,OA8BL,GAAA,QA9ByB,GAAA,OAAA,GAAA,MAAT,GAAM,QAAE;;;;;cAAnB,WAAW,KAAA,CAAM,GAAG"}
@@ -0,0 +1,3 @@
1
+ import { t as Thumbnail } from "../../thumbnail-CXIliWAD.js";
2
+
3
+ export { Thumbnail };
@@ -0,0 +1,38 @@
1
+ import { cookies } from "next/headers";
2
+ import "server-only";
3
+
4
+ //#region src/lib/data/cookies.ts
5
+ const getAuthHeaders = async () => {
6
+ try {
7
+ const token = (await cookies()).get("_medusa_jwt")?.value;
8
+ if (!token) return {};
9
+ return { authorization: `Bearer ${token}` };
10
+ } catch {
11
+ return {};
12
+ }
13
+ };
14
+ const getCacheTag = async (tag) => {
15
+ try {
16
+ const cacheId = (await cookies()).get("_medusa_cache_id")?.value;
17
+ if (!cacheId) return "";
18
+ return `${tag}-${cacheId}`;
19
+ } catch (error) {
20
+ return "";
21
+ }
22
+ };
23
+ const getCacheOptions = async (tag) => {
24
+ if (typeof window !== "undefined") return {};
25
+ const cacheTag = await getCacheTag(tag);
26
+ if (!cacheTag) return {};
27
+ return { tags: [`${cacheTag}`] };
28
+ };
29
+ const getCartId = async () => {
30
+ return (await cookies()).get("_medusa_cart_id")?.value;
31
+ };
32
+ const removeCartId = async () => {
33
+ (await cookies()).set("_medusa_cart_id", "", { maxAge: -1 });
34
+ };
35
+
36
+ //#endregion
37
+ export { removeCartId as a, getCartId as i, getCacheOptions as n, getCacheTag as r, getAuthHeaders as t };
38
+ //# sourceMappingURL=cookies-DANAjt8U.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookies-DANAjt8U.js","names":["nextCookies"],"sources":["../src/lib/data/cookies.ts"],"sourcesContent":["import { cookies as nextCookies } from 'next/headers';\n\nimport 'server-only';\n\nexport const getAuthHeaders = async (): Promise<\n { authorization: string } | {}\n> => {\n try {\n const cookies = await nextCookies();\n const token = cookies.get('_medusa_jwt')?.value;\n\n if (!token) {\n return {};\n }\n\n return { authorization: `Bearer ${token}` };\n } catch {\n return {};\n }\n};\n\nexport const getCacheTag = async (tag: string): Promise<string> => {\n try {\n const cookies = await nextCookies();\n const cacheId = cookies.get('_medusa_cache_id')?.value;\n\n if (!cacheId) {\n return '';\n }\n\n return `${tag}-${cacheId}`;\n } catch (error) {\n return '';\n }\n};\n\nexport const getCacheOptions = async (\n tag: string\n): Promise<{ tags: string[] } | {}> => {\n if (typeof window !== 'undefined') {\n return {};\n }\n\n const cacheTag = await getCacheTag(tag);\n\n if (!cacheTag) {\n return {};\n }\n\n return { tags: [`${cacheTag}`] };\n};\n\nexport const getCartId = async () => {\n const cookies = await nextCookies();\n return cookies.get('_medusa_cart_id')?.value;\n};\n\nexport const removeCartId = async () => {\n const cookies = await nextCookies();\n cookies.set('_medusa_cart_id', '', {\n maxAge: -1,\n });\n};\n"],"mappings":";;;;AAIA,MAAa,iBAAiB,YAEzB;AACH,KAAI;EAEF,MAAM,SADU,MAAMA,SAAa,EACb,IAAI,cAAc,EAAE;AAE1C,MAAI,CAAC,MACH,QAAO,EAAE;AAGX,SAAO,EAAE,eAAe,UAAU,SAAS;SACrC;AACN,SAAO,EAAE;;;AAIb,MAAa,cAAc,OAAO,QAAiC;AACjE,KAAI;EAEF,MAAM,WADU,MAAMA,SAAa,EACX,IAAI,mBAAmB,EAAE;AAEjD,MAAI,CAAC,QACH,QAAO;AAGT,SAAO,GAAG,IAAI,GAAG;UACV,OAAO;AACd,SAAO;;;AAIX,MAAa,kBAAkB,OAC7B,QACqC;AACrC,KAAI,OAAO,WAAW,YACpB,QAAO,EAAE;CAGX,MAAM,WAAW,MAAM,YAAY,IAAI;AAEvC,KAAI,CAAC,SACH,QAAO,EAAE;AAGX,QAAO,EAAE,MAAM,CAAC,GAAG,WAAW,EAAE;;AAGlC,MAAa,YAAY,YAAY;AAEnC,SADgB,MAAMA,SAAa,EACpB,IAAI,kBAAkB,EAAE;;AAGzC,MAAa,eAAe,YAAY;AAEtC,EADgB,MAAMA,SAAa,EAC3B,IAAI,mBAAmB,IAAI,EACjC,QAAQ,IACT,CAAC"}