@gfed-medusa/sf-lib-common 1.1.0 → 2.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 (254) hide show
  1. package/dist/components/breadcrumbs/index.d.ts +4 -6
  2. package/dist/components/breadcrumbs/index.d.ts.map +1 -1
  3. package/dist/components/breadcrumbs/index.js.map +1 -1
  4. package/dist/components/cart-button/index.d.ts +2 -2
  5. package/dist/components/cart-button/index.d.ts.map +1 -1
  6. package/dist/components/cart-button/index.js +11 -17
  7. package/dist/components/cart-button/index.js.map +1 -0
  8. package/dist/components/cart-dropdown/index.d.ts +3 -3
  9. package/dist/components/cart-dropdown/index.d.ts.map +1 -1
  10. package/dist/components/cart-dropdown/index.js +193 -16
  11. package/dist/components/cart-dropdown/index.js.map +1 -0
  12. package/dist/components/cart-mismatch-banner/index.d.ts +3 -3
  13. package/dist/components/cart-mismatch-banner/index.d.ts.map +1 -1
  14. package/dist/components/cart-mismatch-banner/index.js +1 -8
  15. package/dist/components/cart-mismatch-banner/index.js.map +1 -1
  16. package/dist/components/country-select/index.d.ts +1 -1
  17. package/dist/components/delete-button/index.d.ts +2 -2
  18. package/dist/components/delete-button/index.js +27 -11
  19. package/dist/components/delete-button/index.js.map +1 -0
  20. package/dist/components/error-message/index.d.ts +2 -2
  21. package/dist/components/error-message/index.d.ts.map +1 -1
  22. package/dist/components/footer/index.d.ts +2 -2
  23. package/dist/components/footer/index.d.ts.map +1 -1
  24. package/dist/components/footer/index.js +5 -10
  25. package/dist/components/footer/index.js.map +1 -1
  26. package/dist/components/free-shipping-price-nudge/index.d.ts +3 -3
  27. package/dist/components/free-shipping-price-nudge/index.d.ts.map +1 -1
  28. package/dist/components/free-shipping-price-nudge/index.js +2 -2
  29. package/dist/components/interactive-link/index.d.ts +2 -2
  30. package/dist/components/interactive-link/index.js +1 -1
  31. package/dist/components/layout-country-select/index.d.ts +4 -4
  32. package/dist/components/layout-country-select/index.js +89 -11
  33. package/dist/components/layout-country-select/index.js.map +1 -0
  34. package/dist/components/line-item-options/index.d.ts +3 -3
  35. package/dist/components/line-item-options/index.js +15 -2
  36. package/dist/components/line-item-options/index.js.map +1 -0
  37. package/dist/components/line-item-price/index.d.ts +3 -3
  38. package/dist/components/line-item-price/index.d.ts.map +1 -1
  39. package/dist/components/line-item-price/index.js +46 -2
  40. package/dist/components/line-item-price/index.js.map +1 -0
  41. package/dist/components/localized-client-link/index.d.ts +5 -12
  42. package/dist/components/localized-client-link/index.d.ts.map +1 -1
  43. package/dist/components/localized-client-link/index.js +19 -2
  44. package/dist/components/localized-client-link/index.js.map +1 -0
  45. package/dist/components/modal/index.d.ts +2 -2
  46. package/dist/components/modal/index.js +101 -3
  47. package/dist/components/modal/index.js.map +1 -0
  48. package/dist/components/nav/index.d.ts +2 -2
  49. package/dist/components/nav/index.js +6 -25
  50. package/dist/components/nav/index.js.map +1 -1
  51. package/dist/components/portable-text/index.d.ts +3 -3
  52. package/dist/components/portable-text/index.js +329 -2
  53. package/dist/components/portable-text/index.js.map +1 -0
  54. package/dist/components/preview-price/index.d.ts +1 -1
  55. package/dist/components/preview-price/index.js +19 -2
  56. package/dist/components/preview-price/index.js.map +1 -0
  57. package/dist/components/product-card/index.d.ts +2 -2
  58. package/dist/components/product-card/index.d.ts.map +1 -1
  59. package/dist/components/product-card/index.js +3 -4
  60. package/dist/components/product-card/index.js.map +1 -1
  61. package/dist/components/product-preview/index.d.ts +3 -3
  62. package/dist/components/product-preview/index.d.ts.map +1 -1
  63. package/dist/components/product-preview/index.js +4 -4
  64. package/dist/components/search-modal/index.d.ts +2 -2
  65. package/dist/components/search-modal/index.d.ts.map +1 -1
  66. package/dist/components/search-modal/index.js +135 -9
  67. package/dist/components/search-modal/index.js.map +1 -0
  68. package/dist/components/side-menu/index.d.ts +3 -3
  69. package/dist/components/side-menu/index.js +96 -13
  70. package/dist/components/side-menu/index.js.map +1 -0
  71. package/dist/components/thumbnail/index.js +43 -2
  72. package/dist/components/thumbnail/index.js.map +1 -0
  73. package/dist/lib/config/medusa.js +11 -2
  74. package/dist/lib/config/medusa.js.map +1 -0
  75. package/dist/lib/context/apollo-context.js +1 -2
  76. package/dist/lib/context/apollo-context.js.map +1 -1
  77. package/dist/lib/context/modal-context.d.ts +2 -2
  78. package/dist/lib/context/modal-context.js +19 -2
  79. package/dist/lib/context/modal-context.js.map +1 -0
  80. package/dist/lib/data/cart.d.ts +1 -1
  81. package/dist/lib/data/cart.d.ts.map +1 -1
  82. package/dist/lib/data/cart.js +102 -10
  83. package/dist/lib/data/cart.js.map +1 -0
  84. package/dist/lib/data/categories.d.ts +1 -1
  85. package/dist/lib/data/categories.js +15 -5
  86. package/dist/lib/data/categories.js.map +1 -0
  87. package/dist/lib/data/collections.d.ts +1 -1
  88. package/dist/lib/data/collections.js +21 -5
  89. package/dist/lib/data/collections.js.map +1 -0
  90. package/dist/lib/data/cookies.d.ts +2 -1
  91. package/dist/lib/data/cookies.d.ts.map +1 -1
  92. package/dist/lib/data/cookies.js +45 -2
  93. package/dist/lib/data/cookies.js.map +1 -0
  94. package/dist/lib/data/customer.d.ts +1 -1
  95. package/dist/lib/data/customer.d.ts.map +1 -1
  96. package/dist/lib/data/customer.js +39 -9
  97. package/dist/lib/data/customer.js.map +1 -0
  98. package/dist/lib/data/footer.js +15 -4
  99. package/dist/lib/data/footer.js.map +1 -0
  100. package/dist/lib/data/orders.d.ts +1 -1
  101. package/dist/lib/data/orders.js +4 -4
  102. package/dist/lib/data/regions.d.ts +1 -1
  103. package/dist/lib/data/regions.js +33 -4
  104. package/dist/lib/data/regions.js.map +1 -0
  105. package/dist/lib/data/search.d.ts +1 -1
  106. package/dist/lib/data/search.js +20 -5
  107. package/dist/lib/data/search.js.map +1 -0
  108. package/dist/lib/gql/apollo-client.js +66 -2
  109. package/dist/lib/gql/apollo-client.js.map +1 -0
  110. package/dist/lib/gql/fragments/cart.d.ts +9 -9
  111. package/dist/lib/gql/fragments/cart.d.ts.map +1 -1
  112. package/dist/lib/gql/fragments/cart.js +141 -3
  113. package/dist/{cart-BNoIGQmw.js.map → lib/gql/fragments/cart.js.map} +1 -1
  114. package/dist/lib/gql/fragments/customer.d.ts +3 -3
  115. package/dist/lib/gql/fragments/customer.js +41 -2
  116. package/dist/{customer-CgN4zI00.js.map → lib/gql/fragments/customer.js.map} +1 -1
  117. package/dist/lib/gql/fragments/product.d.ts +8 -8
  118. package/dist/lib/gql/fragments/product.js +89 -2
  119. package/dist/{product-COu5D1mS.js.map → lib/gql/fragments/product.js.map} +1 -1
  120. package/dist/lib/gql/mutations/cart.d.ts +4 -4
  121. package/dist/lib/gql/mutations/cart.d.ts.map +1 -1
  122. package/dist/lib/gql/mutations/cart.js +41 -4
  123. package/dist/{cart-IHaLnQC4.js.map → lib/gql/mutations/cart.js.map} +1 -1
  124. package/dist/lib/gql/mutations/customer.js +0 -1
  125. package/dist/lib/gql/queries/cart.d.ts +2 -2
  126. package/dist/lib/gql/queries/cart.d.ts.map +1 -1
  127. package/dist/lib/gql/queries/cart.js +15 -4
  128. package/dist/{cart-DH8urwwT.js.map → lib/gql/queries/cart.js.map} +1 -1
  129. package/dist/lib/gql/queries/collections.d.ts +2 -2
  130. package/dist/lib/gql/queries/collections.d.ts.map +1 -1
  131. package/dist/lib/gql/queries/collections.js +19 -3
  132. package/dist/{collections-DMv3UYgC.js.map → lib/gql/queries/collections.js.map} +1 -1
  133. package/dist/lib/gql/queries/customer.d.ts +2 -2
  134. package/dist/lib/gql/queries/customer.d.ts.map +1 -1
  135. package/dist/lib/gql/queries/customer.js +15 -3
  136. package/dist/{customer-DIJz6m7L.js.map → lib/gql/queries/customer.js.map} +1 -1
  137. package/dist/lib/gql/queries/footer.d.ts +2 -2
  138. package/dist/lib/gql/queries/footer.d.ts.map +1 -1
  139. package/dist/lib/gql/queries/footer.js +21 -2
  140. package/dist/lib/gql/queries/footer.js.map +1 -0
  141. package/dist/lib/gql/queries/product.d.ts +3 -3
  142. package/dist/lib/gql/queries/product.d.ts.map +1 -1
  143. package/dist/lib/gql/queries/product.js +46 -3
  144. package/dist/{product-C3HQUIgX.js.map → lib/gql/queries/product.js.map} +1 -1
  145. package/dist/lib/hooks/use-apollo.d.ts +2 -2
  146. package/dist/lib/hooks/use-apollo.js +10 -3
  147. package/dist/lib/hooks/use-apollo.js.map +1 -0
  148. package/dist/lib/hooks/use-search.d.ts +1 -1
  149. package/dist/lib/hooks/use-search.js +66 -6
  150. package/dist/lib/hooks/use-search.js.map +1 -0
  151. package/dist/lib/hooks/use-toggle-state.d.ts +23 -2
  152. package/dist/lib/hooks/use-toggle-state.d.ts.map +1 -0
  153. package/dist/lib/utils/data-types.js +9 -2
  154. package/dist/lib/utils/data-types.js.map +1 -0
  155. package/dist/lib/utils/env.js +1 -1
  156. package/dist/lib/utils/env.js.map +1 -1
  157. package/dist/lib/utils/get-percentage-diff.js +7 -2
  158. package/dist/lib/utils/get-percentage-diff.js.map +1 -0
  159. package/dist/lib/utils/get-product-price.d.ts +1 -1
  160. package/dist/lib/utils/get-product-price.js +46 -2
  161. package/dist/lib/utils/get-product-price.js.map +1 -0
  162. package/dist/lib/utils/medusa-error.js +16 -2
  163. package/dist/lib/utils/medusa-error.js.map +1 -0
  164. package/dist/lib/utils/money.js +14 -2
  165. package/dist/lib/utils/money.js.map +1 -0
  166. package/dist/lib/utils/normalize-functions.d.ts +1 -1
  167. package/dist/lib/utils/normalize-functions.js +69 -2
  168. package/dist/lib/utils/normalize-functions.js.map +1 -0
  169. package/dist/types/graphql.d.ts +1368 -2
  170. package/dist/types/graphql.d.ts.map +1 -0
  171. package/dist/types/prices.d.ts +20 -2
  172. package/dist/types/prices.d.ts.map +1 -0
  173. package/dist/types/prices.js +0 -1
  174. package/package.json +12 -12
  175. package/dist/apollo-client-Bw50r80c.js +0 -66
  176. package/dist/apollo-client-Bw50r80c.js.map +0 -1
  177. package/dist/cart-BNoIGQmw.js +0 -142
  178. package/dist/cart-DH8urwwT.js +0 -16
  179. package/dist/cart-IHaLnQC4.js +0 -42
  180. package/dist/cart-button-Dj_zRxop.js +0 -12
  181. package/dist/cart-button-Dj_zRxop.js.map +0 -1
  182. package/dist/cart-dropdown-D_PUJarp.js +0 -195
  183. package/dist/cart-dropdown-D_PUJarp.js.map +0 -1
  184. package/dist/cart-xkcyWLfU.js +0 -103
  185. package/dist/cart-xkcyWLfU.js.map +0 -1
  186. package/dist/categories-B-RYCIZ3.js +0 -16
  187. package/dist/categories-B-RYCIZ3.js.map +0 -1
  188. package/dist/collections-BgyvhW2p.js +0 -22
  189. package/dist/collections-BgyvhW2p.js.map +0 -1
  190. package/dist/collections-DMv3UYgC.js +0 -20
  191. package/dist/cookies-lksVIe4_.js +0 -38
  192. package/dist/cookies-lksVIe4_.js.map +0 -1
  193. package/dist/customer-CgN4zI00.js +0 -42
  194. package/dist/customer-ClewjBBr.js +0 -38
  195. package/dist/customer-ClewjBBr.js.map +0 -1
  196. package/dist/customer-DIJz6m7L.js +0 -16
  197. package/dist/data-types-CTPJXmJH.js +0 -10
  198. package/dist/data-types-CTPJXmJH.js.map +0 -1
  199. package/dist/delete-button-Bnm5bof2.js +0 -28
  200. package/dist/delete-button-Bnm5bof2.js.map +0 -1
  201. package/dist/footer-BvNV-R9D.js +0 -16
  202. package/dist/footer-BvNV-R9D.js.map +0 -1
  203. package/dist/footer-DCtgtjKS.js +0 -76
  204. package/dist/footer-DCtgtjKS.js.map +0 -1
  205. package/dist/get-percentage-diff-B_UVOFgE.js +0 -8
  206. package/dist/get-percentage-diff-B_UVOFgE.js.map +0 -1
  207. package/dist/get-product-price-DKWc76ev.js +0 -47
  208. package/dist/get-product-price-DKWc76ev.js.map +0 -1
  209. package/dist/graphql-CdTGi4Pp.d.ts +0 -1368
  210. package/dist/graphql-CdTGi4Pp.d.ts.map +0 -1
  211. package/dist/layout-country-select-C7Ra-opl.js +0 -90
  212. package/dist/layout-country-select-C7Ra-opl.js.map +0 -1
  213. package/dist/line-item-options-l_eRZIIq.js +0 -16
  214. package/dist/line-item-options-l_eRZIIq.js.map +0 -1
  215. package/dist/line-item-price-BlTwskFC.js +0 -47
  216. package/dist/line-item-price-BlTwskFC.js.map +0 -1
  217. package/dist/localized-client-link-CthmRcvb.js +0 -22
  218. package/dist/localized-client-link-CthmRcvb.js.map +0 -1
  219. package/dist/medusa-TumrpCF2.js +0 -12
  220. package/dist/medusa-TumrpCF2.js.map +0 -1
  221. package/dist/medusa-error-DDhA6RGC.js +0 -17
  222. package/dist/medusa-error-DDhA6RGC.js.map +0 -1
  223. package/dist/modal-BASYY-YM.js +0 -102
  224. package/dist/modal-BASYY-YM.js.map +0 -1
  225. package/dist/modal-context-02cA-7jy.js +0 -20
  226. package/dist/modal-context-02cA-7jy.js.map +0 -1
  227. package/dist/money-DVQGzXns.js +0 -15
  228. package/dist/money-DVQGzXns.js.map +0 -1
  229. package/dist/normalize-functions-Bqr-JkYn.js +0 -70
  230. package/dist/normalize-functions-Bqr-JkYn.js.map +0 -1
  231. package/dist/portable-text-CuI022GH.js +0 -330
  232. package/dist/portable-text-CuI022GH.js.map +0 -1
  233. package/dist/preview-price-_4sxkXQs.js +0 -20
  234. package/dist/preview-price-_4sxkXQs.js.map +0 -1
  235. package/dist/prices-eO1YBciD.d.ts +0 -20
  236. package/dist/prices-eO1YBciD.d.ts.map +0 -1
  237. package/dist/product-C3HQUIgX.js +0 -47
  238. package/dist/product-COu5D1mS.js +0 -90
  239. package/dist/regions-r1AvxfT8.js +0 -34
  240. package/dist/regions-r1AvxfT8.js.map +0 -1
  241. package/dist/search-D7Gw7jAk.js +0 -21
  242. package/dist/search-D7Gw7jAk.js.map +0 -1
  243. package/dist/search-modal-DaXadYWM.js +0 -137
  244. package/dist/search-modal-DaXadYWM.js.map +0 -1
  245. package/dist/side-menu-B6IjTd5M.js +0 -97
  246. package/dist/side-menu-B6IjTd5M.js.map +0 -1
  247. package/dist/thumbnail-C0TU3rh-.js +0 -44
  248. package/dist/thumbnail-C0TU3rh-.js.map +0 -1
  249. package/dist/use-apollo-BxAFd1Y5.js +0 -11
  250. package/dist/use-apollo-BxAFd1Y5.js.map +0 -1
  251. package/dist/use-search-VX-u8o1D.js +0 -67
  252. package/dist/use-search-VX-u8o1D.js.map +0 -1
  253. package/dist/use-toggle-state-DI4Gwlfj.d.ts +0 -23
  254. package/dist/use-toggle-state-DI4Gwlfj.d.ts.map +0 -1
@@ -1,330 +0,0 @@
1
- import { Fragment } from "react";
2
- import { jsx, jsxs } from "react/jsx-runtime";
3
- import { Heading, Text } from "@medusajs/ui";
4
- import { ArrowUpRightMini } from "@medusajs/icons";
5
- import Image from "next/image";
6
- import { PlaceholderImage } from "@gfed-medusa/sf-lib-ui/icons/placeholder-image";
7
- import { Back } from "@gfed-medusa/sf-lib-ui/icons/back";
8
- import { Bancontact } from "@gfed-medusa/sf-lib-ui/icons/bancontact";
9
- import { ChevronDown } from "@gfed-medusa/sf-lib-ui/icons/chevron-down";
10
- import { Eye } from "@gfed-medusa/sf-lib-ui/icons/eye";
11
- import { EyeOff } from "@gfed-medusa/sf-lib-ui/icons/eye-off";
12
- import { FastDelivery } from "@gfed-medusa/sf-lib-ui/icons/fast-delivery";
13
- import { Ideal } from "@gfed-medusa/sf-lib-ui/icons/ideal";
14
- import { MapPin } from "@gfed-medusa/sf-lib-ui/icons/map-pin";
15
- import { Medusa } from "@gfed-medusa/sf-lib-ui/icons/medusa";
16
- import { NextJs } from "@gfed-medusa/sf-lib-ui/icons/nextjs";
17
- import { Package } from "@gfed-medusa/sf-lib-ui/icons/package";
18
- import { PayPal } from "@gfed-medusa/sf-lib-ui/icons/paypal";
19
- import { Refresh } from "@gfed-medusa/sf-lib-ui/icons/refresh";
20
- import { Spinner as Spinner$1 } from "@gfed-medusa/sf-lib-ui/icons/spinner";
21
- import { Trash as Trash$1 } from "@gfed-medusa/sf-lib-ui/icons/trash";
22
- import { User } from "@gfed-medusa/sf-lib-ui/icons/user";
23
- import { X } from "@gfed-medusa/sf-lib-ui/icons/x";
24
-
25
- //#region src/components/portable-text/index.tsx
26
- const PortableText = ({ value }) => {
27
- if (!value || !Array.isArray(value)) return null;
28
- const getBlockType = (block) => {
29
- if (block.__typename) {
30
- const typename = block.__typename.toLowerCase();
31
- if (typename === "textblock") return "block";
32
- return typename.replace("block", "");
33
- }
34
- return "unknown";
35
- };
36
- const renderSpan = (span, markDefs) => {
37
- if (!span.text) return null;
38
- let content = span.text;
39
- const marks = span.marks || [];
40
- marks.forEach((mark) => {
41
- if (typeof mark === "string") switch (mark) {
42
- case "strong":
43
- content = /* @__PURE__ */ jsx("strong", { children: content });
44
- break;
45
- case "em":
46
- content = /* @__PURE__ */ jsx("em", { children: content });
47
- break;
48
- case "code":
49
- content = /* @__PURE__ */ jsx("code", {
50
- className: "bg-ui-bg-subtle rounded px-1 py-0.5 font-mono text-sm",
51
- children: content
52
- });
53
- break;
54
- case "underline":
55
- content = /* @__PURE__ */ jsx("u", { children: content });
56
- break;
57
- case "superscript":
58
- content = /* @__PURE__ */ jsx("sup", { children: content });
59
- break;
60
- case "subscript":
61
- content = /* @__PURE__ */ jsx("sub", { children: content });
62
- break;
63
- }
64
- });
65
- const getMarkByKey = (key) => {
66
- return markDefs?.find((def) => def._key === key);
67
- };
68
- const linkMark = marks.find((mark) => {
69
- if (typeof mark === "object") return mark;
70
- if (typeof mark === "string") {
71
- const markDef = getMarkByKey(mark);
72
- return markDef && (markDef._type === "link" || markDef.__typename === "LinkMark");
73
- }
74
- return false;
75
- });
76
- const iconLinkMark = marks.find((mark) => {
77
- if (typeof mark === "object") return mark;
78
- if (typeof mark === "string") {
79
- const markDef = getMarkByKey(mark);
80
- return markDef && (markDef._type === "iconlink" || markDef.__typename === "IconLinkMark");
81
- }
82
- return false;
83
- });
84
- const resolvedIconLinkMark = typeof iconLinkMark === "string" ? (() => {
85
- const mark = getMarkByKey(iconLinkMark);
86
- return mark && (mark.__typename === "IconLinkMark" || mark._type === "iconlink") ? mark : void 0;
87
- })() : iconLinkMark ? iconLinkMark : void 0;
88
- const resolvedLinkMark = typeof linkMark === "string" ? getMarkByKey(linkMark) : linkMark;
89
- if (resolvedIconLinkMark) return renderIconLink(resolvedIconLinkMark, content);
90
- if (resolvedLinkMark) return /* @__PURE__ */ jsx("a", {
91
- href: resolvedLinkMark.href,
92
- target: resolvedLinkMark.target ?? "",
93
- className: "text-ui-fg-interactive hover:underline",
94
- children: content
95
- });
96
- return content;
97
- };
98
- const renderIconLink = (mark, children) => {
99
- const renderIcon = () => {
100
- switch (mark.iconType) {
101
- case "class": return mark.iconClass ? /* @__PURE__ */ jsx("i", { className: mark.iconClass }) : null;
102
- case "component": switch (mark.iconComponent) {
103
- case "ArrowUpRightMini": return /* @__PURE__ */ jsx(ArrowUpRightMini, {
104
- fill: mark.iconFill ?? "",
105
- className: "h-4 w-4"
106
- });
107
- case "Back": return /* @__PURE__ */ jsx(Back, {
108
- size: 16,
109
- fill: mark.iconFill ?? ""
110
- });
111
- case "Bancontact": return /* @__PURE__ */ jsx(Bancontact, {
112
- size: 16,
113
- fill: mark.iconFill ?? ""
114
- });
115
- case "ChevronDown": return /* @__PURE__ */ jsx(ChevronDown, {
116
- size: 16,
117
- fill: mark.iconFill ?? ""
118
- });
119
- case "Eye": return /* @__PURE__ */ jsx(Eye, {
120
- size: 16,
121
- fill: mark.iconFill ?? ""
122
- });
123
- case "EyeOff": return /* @__PURE__ */ jsx(EyeOff, {
124
- size: 16,
125
- fill: mark.iconFill ?? ""
126
- });
127
- case "FastDelivery": return /* @__PURE__ */ jsx(FastDelivery, {
128
- size: 16,
129
- fill: mark.iconFill ?? ""
130
- });
131
- case "Ideal": return /* @__PURE__ */ jsx(Ideal, {
132
- size: 16,
133
- fill: mark.iconFill ?? ""
134
- });
135
- case "MapPin": return /* @__PURE__ */ jsx(MapPin, {
136
- size: 16,
137
- fill: mark.iconFill ?? ""
138
- });
139
- case "Medusa": return /* @__PURE__ */ jsx(Medusa, {
140
- size: 16,
141
- fill: mark.iconFill ?? ""
142
- });
143
- case "NextJs": return /* @__PURE__ */ jsx(NextJs, {
144
- size: 16,
145
- fill: mark.iconFill ?? ""
146
- });
147
- case "Package": return /* @__PURE__ */ jsx(Package, {
148
- size: 16,
149
- fill: mark.iconFill ?? ""
150
- });
151
- case "PayPal": return /* @__PURE__ */ jsx(PayPal, {});
152
- case "PlaceholderImage": return /* @__PURE__ */ jsx(PlaceholderImage, {
153
- size: 16,
154
- fill: mark.iconFill ?? ""
155
- });
156
- case "Refresh": return /* @__PURE__ */ jsx(Refresh, {
157
- size: 16,
158
- fill: mark.iconFill ?? ""
159
- });
160
- case "Spinner": return /* @__PURE__ */ jsx(Spinner$1, {
161
- size: 16,
162
- fill: mark.iconFill ?? ""
163
- });
164
- case "Trash": return /* @__PURE__ */ jsx(Trash$1, {
165
- size: 16,
166
- fill: mark.iconFill ?? ""
167
- });
168
- case "User": return /* @__PURE__ */ jsx(User, {
169
- size: 16,
170
- fill: mark.iconFill ?? ""
171
- });
172
- case "X": return /* @__PURE__ */ jsx(X, {
173
- size: 16,
174
- fill: mark.iconFill ?? ""
175
- });
176
- default: return null;
177
- }
178
- case "sanity": return mark.iconImage?.asset?.url ? /* @__PURE__ */ jsx(Image, {
179
- src: mark.iconImage.asset.url,
180
- alt: mark.iconImage.alt || "Icon",
181
- width: 16,
182
- height: 16,
183
- className: "h-4 w-4"
184
- }) : null;
185
- case "url": return mark.iconUrl ? /* @__PURE__ */ jsx(Image, {
186
- src: mark.iconUrl,
187
- alt: "Icon",
188
- width: 16,
189
- height: 16,
190
- className: "h-4 w-4"
191
- }) : null;
192
- default: return null;
193
- }
194
- };
195
- return /* @__PURE__ */ jsxs("a", {
196
- href: mark.href,
197
- target: mark.target ?? "",
198
- className: "text-ui-fg-interactive inline-flex items-center gap-1 hover:underline",
199
- children: [children, renderIcon()]
200
- });
201
- };
202
- const renderTextBlock = (block) => {
203
- const style = block.style || "normal";
204
- const children = block.children || [];
205
- const markDefs = block.markDefs || [];
206
- const content = children.map((child, index) => /* @__PURE__ */ jsx(Fragment, { children: renderSpan(child, markDefs) }, child._key || index));
207
- switch (style) {
208
- case "h1": return /* @__PURE__ */ jsx("h1", {
209
- className: "mt-8 mb-6 text-4xl font-bold",
210
- children: content
211
- });
212
- case "h2": return /* @__PURE__ */ jsx(Heading, {
213
- level: "h2",
214
- className: "mt-6 mb-4 text-3xl font-semibold",
215
- children: content
216
- });
217
- case "h3": return /* @__PURE__ */ jsx(Heading, {
218
- level: "h3",
219
- className: "mt-6 mb-4 text-2xl font-semibold",
220
- children: content
221
- });
222
- case "h4": return /* @__PURE__ */ jsx("h4", {
223
- className: "mt-4 mb-3 text-xl font-semibold",
224
- children: content
225
- });
226
- case "h5": return /* @__PURE__ */ jsx("h5", {
227
- className: "mt-4 mb-3 text-lg font-semibold",
228
- children: content
229
- });
230
- case "h6": return /* @__PURE__ */ jsx("h6", {
231
- className: "mt-4 mb-2 text-base font-semibold",
232
- children: content
233
- });
234
- case "blockquote": return /* @__PURE__ */ jsx("blockquote", {
235
- className: "border-ui-border-base my-4 border-l-4 py-2 pl-4 italic",
236
- children: /* @__PURE__ */ jsx(Text, { children: content })
237
- });
238
- default: return /* @__PURE__ */ jsx(Text, {
239
- className: "mb-4 leading-relaxed",
240
- children: content
241
- });
242
- }
243
- };
244
- const renderImage = (image) => {
245
- if (!image.asset?.url) return null;
246
- return /* @__PURE__ */ jsx("div", {
247
- className: "my-6",
248
- children: /* @__PURE__ */ jsx(Image, {
249
- src: image.asset.url,
250
- alt: image.alt || "",
251
- width: 800,
252
- height: 400,
253
- className: "h-auto w-full rounded-lg"
254
- })
255
- });
256
- };
257
- const renderFileBlock = (file) => {
258
- if (!file.asset?.url) return null;
259
- return /* @__PURE__ */ jsx("div", {
260
- className: "my-6",
261
- children: /* @__PURE__ */ jsxs("a", {
262
- href: file.asset.url,
263
- target: "_blank",
264
- rel: "noopener noreferrer",
265
- className: "border-ui-border-base text-ui-fg-interactive hover:bg-ui-bg-subtle inline-flex items-center gap-2 rounded-lg border p-4",
266
- children: [
267
- /* @__PURE__ */ jsx("span", { children: "📎" }),
268
- /* @__PURE__ */ jsx("span", { children: file.asset.originalFilename || "Download file" }),
269
- file.asset.size && /* @__PURE__ */ jsxs("span", {
270
- className: "text-ui-fg-muted text-sm",
271
- children: [
272
- "(",
273
- Math.round(file.asset.size / 1024),
274
- " KB)"
275
- ]
276
- })
277
- ]
278
- })
279
- });
280
- };
281
- const renderList = (items, listType) => {
282
- return /* @__PURE__ */ jsx(listType === "bullet" ? "ul" : "ol", {
283
- className: listType === "bullet" ? "list-disc pl-6 mb-4 space-y-1" : "list-decimal pl-6 mb-4 space-y-1",
284
- children: items.map((item) => {
285
- const markDefs = item.markDefs || [];
286
- return /* @__PURE__ */ jsx("li", {
287
- className: "leading-relaxed",
288
- children: item.children?.map((child, childIndex) => /* @__PURE__ */ jsx(Fragment, { children: renderSpan(child, markDefs) }, child._key || childIndex))
289
- }, item._key);
290
- })
291
- });
292
- };
293
- const renderBlock = (block) => {
294
- const blockType = getBlockType(block);
295
- if (blockType === "block" || blockType === "textblock" || blockType === "text") return renderTextBlock(block);
296
- if (blockType === "image" || blockType === "imageblock") return renderImage(block);
297
- if (blockType === "file" || blockType === "fileblock") return renderFileBlock(block);
298
- return null;
299
- };
300
- const processedContent = [];
301
- let currentListItems = [];
302
- let currentListType = null;
303
- value.forEach((block, index) => {
304
- if (getBlockType(block) === "block" && block.listItem) {
305
- const textBlock = block;
306
- const listItem = textBlock.listItem || null;
307
- if (currentListType !== listItem) {
308
- if (currentListItems.length > 0 && currentListType) processedContent.push(/* @__PURE__ */ jsx(Fragment, { children: renderList(currentListItems, currentListType) }, `list-${index}`));
309
- currentListItems = [textBlock];
310
- currentListType = listItem;
311
- } else currentListItems.push(textBlock);
312
- } else {
313
- if (currentListItems.length > 0 && currentListType) {
314
- processedContent.push(/* @__PURE__ */ jsx(Fragment, { children: renderList(currentListItems, currentListType) }, `list-${index}`));
315
- currentListItems = [];
316
- currentListType = null;
317
- }
318
- processedContent.push(/* @__PURE__ */ jsx(Fragment, { children: renderBlock(block) }, block._key || index));
319
- }
320
- });
321
- if (currentListItems.length > 0 && currentListType) processedContent.push(/* @__PURE__ */ jsx(Fragment, { children: renderList(currentListItems, currentListType) }, "final-list"));
322
- return /* @__PURE__ */ jsx("div", {
323
- className: "prose prose-ui max-w-none",
324
- children: processedContent
325
- });
326
- };
327
-
328
- //#endregion
329
- export { PortableText as t };
330
- //# sourceMappingURL=portable-text-CuI022GH.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"portable-text-CuI022GH.js","names":["content: ReactNode","resolvedIconLinkMark: IconLinkMark | undefined","Spinner","Trash","processedContent: ReactNode[]","currentListItems: TextBlock[]","currentListType: string | null"],"sources":["../src/components/portable-text/index.tsx"],"sourcesContent":["import { Fragment, ReactNode } from 'react';\n\nimport Image from 'next/image';\n\nimport { Back } from '@gfed-medusa/sf-lib-ui/icons/back';\nimport { Bancontact } from '@gfed-medusa/sf-lib-ui/icons/bancontact';\nimport { ChevronDown } from '@gfed-medusa/sf-lib-ui/icons/chevron-down';\nimport { Eye } from '@gfed-medusa/sf-lib-ui/icons/eye';\nimport { EyeOff } from '@gfed-medusa/sf-lib-ui/icons/eye-off';\nimport { FastDelivery } from '@gfed-medusa/sf-lib-ui/icons/fast-delivery';\nimport { Ideal } from '@gfed-medusa/sf-lib-ui/icons/ideal';\nimport { MapPin } from '@gfed-medusa/sf-lib-ui/icons/map-pin';\nimport { Medusa } from '@gfed-medusa/sf-lib-ui/icons/medusa';\nimport { NextJs } from '@gfed-medusa/sf-lib-ui/icons/nextjs';\nimport { Package } from '@gfed-medusa/sf-lib-ui/icons/package';\nimport { PayPal } from '@gfed-medusa/sf-lib-ui/icons/paypal';\nimport { PlaceholderImage } from '@gfed-medusa/sf-lib-ui/icons/placeholder-image';\nimport { Refresh } from '@gfed-medusa/sf-lib-ui/icons/refresh';\nimport { Spinner } from '@gfed-medusa/sf-lib-ui/icons/spinner';\nimport { Trash } from '@gfed-medusa/sf-lib-ui/icons/trash';\nimport { User } from '@gfed-medusa/sf-lib-ui/icons/user';\nimport { X } from '@gfed-medusa/sf-lib-ui/icons/x';\nimport { ArrowUpRightMini } from '@medusajs/icons';\nimport { Heading, Text } from '@medusajs/ui';\n\nimport {\n FileBlock,\n IconLinkMark,\n ImageBlock,\n RichTextBlock,\n Span,\n TextBlock,\n} from '@/types/graphql';\n\ntype PortableTextProps = {\n value: RichTextBlock[];\n};\n\nconst PortableText = ({ value }: PortableTextProps) => {\n if (!value || !Array.isArray(value)) {\n return null;\n }\n\n const getBlockType = (block: RichTextBlock): string => {\n if (block.__typename) {\n const typename = block.__typename.toLowerCase();\n if (typename === 'textblock') return 'block';\n return typename.replace('block', '');\n }\n return 'unknown';\n };\n\n const renderSpan = (\n span: Span,\n markDefs: TextBlock['markDefs']\n ): ReactNode => {\n if (!span.text) return null;\n\n let content: ReactNode = span.text;\n const marks = span.marks || [];\n\n marks.forEach((mark) => {\n if (typeof mark === 'string') {\n switch (mark) {\n case 'strong':\n content = <strong>{content}</strong>;\n break;\n case 'em':\n content = <em>{content}</em>;\n break;\n case 'code':\n content = (\n <code className=\"bg-ui-bg-subtle rounded px-1 py-0.5 font-mono text-sm\">\n {content}\n </code>\n );\n break;\n case 'underline':\n content = <u>{content}</u>;\n break;\n case 'superscript':\n content = <sup>{content}</sup>;\n break;\n case 'subscript':\n content = <sub>{content}</sub>;\n break;\n }\n }\n });\n\n // Handle marks that reference markDefs by _key\n const getMarkByKey = (key: string) => {\n return markDefs?.find((def) => def._key === key);\n };\n\n // Find link marks (both direct objects and references)\n const linkMark = marks.find((mark) => {\n if (typeof mark === 'object') {\n return mark;\n }\n if (typeof mark === 'string') {\n const markDef = getMarkByKey(mark);\n return (\n markDef &&\n (markDef._type === 'link' || markDef.__typename === 'LinkMark')\n );\n }\n return false;\n });\n\n // Find icon link marks (both direct objects and references)\n const iconLinkMark = marks.find((mark) => {\n if (typeof mark === 'object') {\n return mark;\n }\n if (typeof mark === 'string') {\n const markDef = getMarkByKey(mark);\n return (\n markDef &&\n (markDef._type === 'iconlink' ||\n markDef.__typename === 'IconLinkMark')\n );\n }\n return false;\n });\n\n // Get the actual mark object (either direct or from markDefs)\n const resolvedIconLinkMark: IconLinkMark | undefined =\n typeof iconLinkMark === 'string'\n ? (() => {\n const mark = getMarkByKey(iconLinkMark);\n return mark &&\n (mark.__typename === 'IconLinkMark' || mark._type === 'iconlink')\n ? (mark as IconLinkMark)\n : undefined;\n })()\n : iconLinkMark\n ? (iconLinkMark as IconLinkMark)\n : undefined;\n const resolvedLinkMark =\n typeof linkMark === 'string' ? getMarkByKey(linkMark) : linkMark;\n\n if (resolvedIconLinkMark) {\n return renderIconLink(resolvedIconLinkMark, content);\n }\n\n if (resolvedLinkMark) {\n return (\n <a\n href={resolvedLinkMark.href}\n target={resolvedLinkMark.target ?? ''}\n className=\"text-ui-fg-interactive hover:underline\"\n >\n {content}\n </a>\n );\n }\n\n return content;\n };\n\n const renderIconLink = (\n mark: IconLinkMark,\n children: ReactNode\n ): ReactNode => {\n const renderIcon = () => {\n switch (mark.iconType) {\n case 'class':\n return mark.iconClass ? <i className={mark.iconClass} /> : null;\n case 'component':\n switch (mark.iconComponent) {\n case 'ArrowUpRightMini':\n return (\n <ArrowUpRightMini\n fill={mark.iconFill ?? ''}\n className=\"h-4 w-4\"\n />\n );\n case 'Back':\n return <Back size={16} fill={mark.iconFill ?? ''} />;\n case 'Bancontact':\n return <Bancontact size={16} fill={mark.iconFill ?? ''} />;\n case 'ChevronDown':\n return <ChevronDown size={16} fill={mark.iconFill ?? ''} />;\n case 'Eye':\n return <Eye size={16} fill={mark.iconFill ?? ''} />;\n case 'EyeOff':\n return <EyeOff size={16} fill={mark.iconFill ?? ''} />;\n case 'FastDelivery':\n return <FastDelivery size={16} fill={mark.iconFill ?? ''} />;\n case 'Ideal':\n return <Ideal size={16} fill={mark.iconFill ?? ''} />;\n case 'MapPin':\n return <MapPin size={16} fill={mark.iconFill ?? ''} />;\n case 'Medusa':\n return <Medusa size={16} fill={mark.iconFill ?? ''} />;\n case 'NextJs':\n return <NextJs size={16} fill={mark.iconFill ?? ''} />;\n case 'Package':\n return <Package size={16} fill={mark.iconFill ?? ''} />;\n case 'PayPal':\n return <PayPal />;\n case 'PlaceholderImage':\n return <PlaceholderImage size={16} fill={mark.iconFill ?? ''} />;\n case 'Refresh':\n return <Refresh size={16} fill={mark.iconFill ?? ''} />;\n case 'Spinner':\n return <Spinner size={16} fill={mark.iconFill ?? ''} />;\n case 'Trash':\n return <Trash size={16} fill={mark.iconFill ?? ''} />;\n case 'User':\n return <User size={16} fill={mark.iconFill ?? ''} />;\n case 'X':\n return <X size={16} fill={mark.iconFill ?? ''} />;\n default:\n return null;\n }\n case 'sanity':\n return mark.iconImage?.asset?.url ? (\n <Image\n src={mark.iconImage.asset.url}\n alt={mark.iconImage.alt || 'Icon'}\n width={16}\n height={16}\n className=\"h-4 w-4\"\n />\n ) : null;\n case 'url':\n return mark.iconUrl ? (\n <Image\n src={mark.iconUrl}\n alt=\"Icon\"\n width={16}\n height={16}\n className=\"h-4 w-4\"\n />\n ) : null;\n default:\n return null;\n }\n };\n\n return (\n <a\n href={mark.href}\n target={mark.target ?? ''}\n className=\"text-ui-fg-interactive inline-flex items-center gap-1 hover:underline\"\n >\n {children}\n {renderIcon()}\n </a>\n );\n };\n\n const renderTextBlock = (block: TextBlock): ReactNode => {\n const style = block.style || 'normal';\n const children = block.children || [];\n const markDefs = block.markDefs || [];\n\n const content = children.map((child, index) => (\n <Fragment key={child._key || index}>\n {renderSpan(child, markDefs)}\n </Fragment>\n ));\n\n switch (style) {\n case 'h1':\n return <h1 className=\"mt-8 mb-6 text-4xl font-bold\">{content}</h1>;\n case 'h2':\n return (\n <Heading level=\"h2\" className=\"mt-6 mb-4 text-3xl font-semibold\">\n {content}\n </Heading>\n );\n case 'h3':\n return (\n <Heading level=\"h3\" className=\"mt-6 mb-4 text-2xl font-semibold\">\n {content}\n </Heading>\n );\n case 'h4':\n return <h4 className=\"mt-4 mb-3 text-xl font-semibold\">{content}</h4>;\n case 'h5':\n return <h5 className=\"mt-4 mb-3 text-lg font-semibold\">{content}</h5>;\n case 'h6':\n return <h6 className=\"mt-4 mb-2 text-base font-semibold\">{content}</h6>;\n case 'blockquote':\n return (\n <blockquote className=\"border-ui-border-base my-4 border-l-4 py-2 pl-4 italic\">\n <Text>{content}</Text>\n </blockquote>\n );\n default:\n return <Text className=\"mb-4 leading-relaxed\">{content}</Text>;\n }\n };\n\n const renderImage = (image: ImageBlock): ReactNode => {\n if (!image.asset?.url) return null;\n\n return (\n <div className=\"my-6\">\n <Image\n src={image.asset.url}\n alt={image.alt || ''}\n width={800}\n height={400}\n className=\"h-auto w-full rounded-lg\"\n />\n </div>\n );\n };\n\n const renderFileBlock = (file: FileBlock): ReactNode => {\n if (!file.asset?.url) return null;\n\n return (\n <div className=\"my-6\">\n <a\n href={file.asset.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"border-ui-border-base text-ui-fg-interactive hover:bg-ui-bg-subtle inline-flex items-center gap-2 rounded-lg border p-4\"\n >\n <span>📎</span>\n <span>{file.asset.originalFilename || 'Download file'}</span>\n {file.asset.size && (\n <span className=\"text-ui-fg-muted text-sm\">\n ({Math.round(file.asset.size / 1024)} KB)\n </span>\n )}\n </a>\n </div>\n );\n };\n\n const renderList = (items: TextBlock[], listType: string): ReactNode => {\n const ListComponent = listType === 'bullet' ? 'ul' : 'ol';\n const listClass =\n listType === 'bullet'\n ? 'list-disc pl-6 mb-4 space-y-1'\n : 'list-decimal pl-6 mb-4 space-y-1';\n\n return (\n <ListComponent className={listClass}>\n {items.map((item) => {\n const markDefs = item.markDefs || [];\n return (\n <li key={item._key} className=\"leading-relaxed\">\n {item.children?.map((child, childIndex) => (\n <Fragment key={child._key || childIndex}>\n {renderSpan(child, markDefs)}\n </Fragment>\n ))}\n </li>\n );\n })}\n </ListComponent>\n );\n };\n\n const renderBlock = (block: RichTextBlock): ReactNode => {\n const blockType = getBlockType(block);\n\n if (\n blockType === 'block' ||\n blockType === 'textblock' ||\n blockType === 'text'\n ) {\n return renderTextBlock(block as TextBlock);\n }\n\n if (blockType === 'image' || blockType === 'imageblock') {\n return renderImage(block as ImageBlock);\n }\n\n if (blockType === 'file' || blockType === 'fileblock') {\n return renderFileBlock(block as FileBlock);\n }\n\n return null;\n };\n\n // Process blocks and group consecutive list items\n const processedContent: ReactNode[] = [];\n let currentListItems: TextBlock[] = [];\n let currentListType: string | null = null;\n\n value.forEach((block: RichTextBlock, index: number) => {\n const blockType = getBlockType(block);\n\n if (blockType === 'block' && (block as TextBlock).listItem) {\n const textBlock = block as TextBlock;\n const listItem = textBlock.listItem || null;\n if (currentListType !== listItem) {\n if (currentListItems.length > 0 && currentListType) {\n processedContent.push(\n <Fragment key={`list-${index}`}>\n {renderList(currentListItems, currentListType)}\n </Fragment>\n );\n }\n currentListItems = [textBlock];\n currentListType = listItem;\n } else {\n currentListItems.push(textBlock);\n }\n } else {\n if (currentListItems.length > 0 && currentListType) {\n processedContent.push(\n <Fragment key={`list-${index}`}>\n {renderList(currentListItems, currentListType)}\n </Fragment>\n );\n currentListItems = [];\n currentListType = null;\n }\n processedContent.push(\n <Fragment key={block._key || index}>{renderBlock(block)}</Fragment>\n );\n }\n });\n\n if (currentListItems.length > 0 && currentListType) {\n processedContent.push(\n <Fragment key=\"final-list\">\n {renderList(currentListItems, currentListType)}\n </Fragment>\n );\n }\n\n return <div className=\"prose prose-ui max-w-none\">{processedContent}</div>;\n};\n\nexport { PortableText };\n"],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
- import { Text, clx } from "@medusajs/ui";
3
-
4
- //#region src/components/preview-price/index.tsx
5
- function PreviewPrice({ price }) {
6
- if (!price) return null;
7
- return /* @__PURE__ */ jsxs(Fragment, { children: [price.price_type === "sale" && /* @__PURE__ */ jsx(Text, {
8
- className: "text-ui-fg-muted line-through",
9
- "data-testid": "original-price",
10
- children: price.original_price
11
- }), /* @__PURE__ */ jsx(Text, {
12
- className: clx("text-ui-fg-muted", { "text-ui-fg-interactive": price.price_type === "sale" }),
13
- "data-testid": "price",
14
- children: price.calculated_price
15
- })] });
16
- }
17
-
18
- //#endregion
19
- export { PreviewPrice as t };
20
- //# sourceMappingURL=preview-price-_4sxkXQs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"preview-price-_4sxkXQs.js","names":[],"sources":["../src/components/preview-price/index.tsx"],"sourcesContent":["import { Text, clx } from '@medusajs/ui';\n\nimport { VariantPrice } from '@/types/prices';\n\nfunction PreviewPrice({ price }: { price: VariantPrice }) {\n if (!price) {\n return null;\n }\n\n return (\n <>\n {price.price_type === 'sale' && (\n <Text\n className=\"text-ui-fg-muted line-through\"\n data-testid=\"original-price\"\n >\n {price.original_price}\n </Text>\n )}\n <Text\n className={clx('text-ui-fg-muted', {\n 'text-ui-fg-interactive': price.price_type === 'sale',\n })}\n data-testid=\"price\"\n >\n {price.calculated_price}\n </Text>\n </>\n );\n}\n\nexport { PreviewPrice };\n"],"mappings":";;;;AAIA,SAAS,aAAa,EAAE,SAAkC;AACxD,KAAI,CAAC,MACH,QAAO;AAGT,QACE,4CACG,MAAM,eAAe,UACpB,oBAAC;EACC,WAAU;EACV,eAAY;YAEX,MAAM;GACF,EAET,oBAAC;EACC,WAAW,IAAI,oBAAoB,EACjC,0BAA0B,MAAM,eAAe,QAChD,CAAC;EACF,eAAY;YAEX,MAAM;GACF,IACN"}
@@ -1,20 +0,0 @@
1
- import { StorePrice } from "@medusajs/types";
2
-
3
- //#region src/types/prices.d.ts
4
- type VariantPrice = {
5
- calculated_price_number: number;
6
- calculated_price: string;
7
- original_price_number: number;
8
- original_price: string;
9
- currency_code: string;
10
- price_type: string;
11
- percentage_diff: string;
12
- };
13
- type StoreFreeShippingPrice = StorePrice & {
14
- target_reached: boolean;
15
- target_remaining: number;
16
- remaining_percentage: number;
17
- };
18
- //#endregion
19
- export { VariantPrice as n, StoreFreeShippingPrice as t };
20
- //# sourceMappingURL=prices-eO1YBciD.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prices-eO1YBciD.d.ts","names":[],"sources":["../src/types/prices.ts"],"sourcesContent":[],"mappings":";;;KAEY,YAAA;;EAAA,gBAAY,EAAA,MAAA;EAUZ,qBAAA,EAAA,MAAsB;;;;;;KAAtB,sBAAA,GAAyB"}
@@ -1,47 +0,0 @@
1
- import { a as PRODUCT_HIT_FRAGMENT, r as PRODUCT_CATEGORY_FRAGMENT } from "./product-COu5D1mS.js";
2
- import { gql } from "@apollo/client";
3
-
4
- //#region src/lib/gql/queries/product.ts
5
- const SEARCH_SUGGESTIONS_QUERY = gql`
6
- query SearchSuggestions($query: String!) {
7
- searchProducts(query: $query) {
8
- items {
9
- ...ProductHit
10
- }
11
- }
12
- }
13
- ${PRODUCT_HIT_FRAGMENT}
14
- `;
15
- const GET_PRODUCT_CATEGORIES_QUERY = gql`
16
- query GetProductCategories(
17
- $limit: Int
18
- $offset: Int
19
- $q: String
20
- $handle: String
21
- $parent_category_id: String
22
- ) {
23
- productCategories(
24
- limit: $limit
25
- offset: $offset
26
- q: $q
27
- handle: $handle
28
- parent_category_id: $parent_category_id
29
- ) {
30
- ...ProductCategory
31
- parentCategory {
32
- ...ProductCategory
33
- }
34
- categoryChildren {
35
- ...ProductCategory
36
- }
37
- products {
38
- count
39
- }
40
- }
41
- }
42
- ${PRODUCT_CATEGORY_FRAGMENT}
43
- `;
44
-
45
- //#endregion
46
- export { SEARCH_SUGGESTIONS_QUERY as n, GET_PRODUCT_CATEGORIES_QUERY as t };
47
- //# sourceMappingURL=product-C3HQUIgX.js.map
@@ -1,90 +0,0 @@
1
- import { gql } from "@apollo/client";
2
-
3
- //#region src/lib/gql/fragments/product.ts
4
- const PRICE_FRAGMENT = gql`
5
- fragment Price on Price {
6
- amount
7
- currencyCode
8
- priceType
9
- }
10
- `;
11
- const PRODUCT_VARIANT_FRAGMENT = gql`
12
- fragment ProductVariant on ProductVariant {
13
- id
14
- sku
15
- inventoryQuantity
16
- allowBackorder
17
- manageInventory
18
- title
19
- options {
20
- id
21
- optionId
22
- value
23
- }
24
- price {
25
- ...Price
26
- }
27
- originalPrice {
28
- ...Price
29
- }
30
- }
31
- ${PRICE_FRAGMENT}
32
- `;
33
- const PRODUCT_HIT_FRAGMENT = gql`
34
- fragment ProductHit on ProductHit {
35
- id
36
- title
37
- description
38
- handle
39
- thumbnail
40
- }
41
- `;
42
- const PRODUCT_CATEGORY_FRAGMENT = gql`
43
- fragment ProductCategory on ProductCategory {
44
- id
45
- name
46
- description
47
- handle
48
- }
49
- `;
50
- const PRODUCT_COLLECTION_FRAGMENT = gql`
51
- fragment ProductCollection on Collection {
52
- id
53
- title
54
- handle
55
- }
56
- `;
57
- const PRODUCT_IMAGE_FRAGMENT = gql`
58
- fragment ProductImage on ProductImage {
59
- id
60
- url
61
- }
62
- `;
63
- const COLLECTION_PRODUCTS_FRAGMENT = gql`
64
- fragment CollectionProducts on ProductList {
65
- count
66
- items {
67
- id
68
- title
69
- handle
70
- thumbnail
71
- images {
72
- ...ProductImage
73
- }
74
- variants {
75
- price {
76
- ...Price
77
- }
78
- originalPrice {
79
- ...Price
80
- }
81
- }
82
- }
83
- }
84
- ${PRODUCT_IMAGE_FRAGMENT}
85
- ${PRICE_FRAGMENT}
86
- `;
87
-
88
- //#endregion
89
- export { PRODUCT_HIT_FRAGMENT as a, PRODUCT_COLLECTION_FRAGMENT as i, PRICE_FRAGMENT as n, PRODUCT_IMAGE_FRAGMENT as o, PRODUCT_CATEGORY_FRAGMENT as r, PRODUCT_VARIANT_FRAGMENT as s, COLLECTION_PRODUCTS_FRAGMENT as t };
90
- //# sourceMappingURL=product-COu5D1mS.js.map
@@ -1,34 +0,0 @@
1
- import { t as sdk } from "./medusa-TumrpCF2.js";
2
- import { t as medusaError } from "./medusa-error-DDhA6RGC.js";
3
- import { n as getCacheOptions } from "./cookies-lksVIe4_.js";
4
- import { n as normalizeRegion } from "./normalize-functions-Bqr-JkYn.js";
5
-
6
- //#region src/lib/data/regions.ts
7
- const regionMap = /* @__PURE__ */ new Map();
8
- const listRegions = async () => {
9
- const next = { ...await getCacheOptions("regions") };
10
- return sdk.client.fetch(`/store/regions`, {
11
- method: "GET",
12
- next,
13
- cache: "force-cache"
14
- }).then(({ regions }) => regions.map(normalizeRegion)).catch(medusaError);
15
- };
16
- const getRegion = async (countryCode) => {
17
- try {
18
- if (regionMap.has(countryCode)) return regionMap.get(countryCode) ?? null;
19
- const regions = await listRegions();
20
- if (!regions) return null;
21
- regions.forEach((region) => {
22
- region.countries?.forEach((c) => {
23
- regionMap.set(c?.iso2 ?? "", region);
24
- });
25
- });
26
- return countryCode ? regionMap.get(countryCode) ?? null : regionMap.get("us") ?? null;
27
- } catch (e) {
28
- return null;
29
- }
30
- };
31
-
32
- //#endregion
33
- export { listRegions as n, getRegion as t };
34
- //# sourceMappingURL=regions-r1AvxfT8.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"regions-r1AvxfT8.js","names":["e: any"],"sources":["../src/lib/data/regions.ts"],"sourcesContent":["import { HttpTypes } from '@medusajs/types';\n\nimport { sdk } from '@/lib/config/medusa';\nimport { medusaError } from '@/lib/utils/medusa-error';\nimport { normalizeRegion } from '@/lib/utils/normalize-functions';\nimport { Region } from '@/types/graphql';\n\nimport { getCacheOptions } from './cookies';\n\nconst regionMap = new Map<string, Region>();\n\nexport const listRegions = async () => {\n const next = {\n ...(await getCacheOptions('regions')),\n };\n\n return sdk.client\n .fetch<{ regions: HttpTypes.StoreRegion[] }>(`/store/regions`, {\n method: 'GET',\n next,\n cache: 'force-cache',\n })\n .then(({ regions }) => regions.map(normalizeRegion))\n .catch(medusaError);\n};\n\nexport const getRegion = async (\n countryCode: string\n): Promise<Region | null> => {\n try {\n if (regionMap.has(countryCode)) {\n return regionMap.get(countryCode) ?? null;\n }\n\n const regions = await listRegions();\n\n if (!regions) return null;\n\n regions.forEach((region) => {\n region.countries?.forEach((c) => {\n regionMap.set(c?.iso2 ?? '', region);\n });\n });\n\n const region = countryCode\n ? (regionMap.get(countryCode) ?? null)\n : (regionMap.get('us') ?? null);\n\n return region;\n } catch (e: any) {\n return null;\n }\n};\n"],"mappings":";;;;;;AASA,MAAM,4BAAY,IAAI,KAAqB;AAE3C,MAAa,cAAc,YAAY;CACrC,MAAM,OAAO,EACX,GAAI,MAAM,gBAAgB,UAAU,EACrC;AAED,QAAO,IAAI,OACR,MAA4C,kBAAkB;EAC7D,QAAQ;EACR;EACA,OAAO;EACR,CAAC,CACD,MAAM,EAAE,cAAc,QAAQ,IAAI,gBAAgB,CAAC,CACnD,MAAM,YAAY;;AAGvB,MAAa,YAAY,OACvB,gBAC2B;AAC3B,KAAI;AACF,MAAI,UAAU,IAAI,YAAY,CAC5B,QAAO,UAAU,IAAI,YAAY,IAAI;EAGvC,MAAM,UAAU,MAAM,aAAa;AAEnC,MAAI,CAAC,QAAS,QAAO;AAErB,UAAQ,SAAS,WAAW;AAC1B,UAAO,WAAW,SAAS,MAAM;AAC/B,cAAU,IAAI,GAAG,QAAQ,IAAI,OAAO;KACpC;IACF;AAMF,SAJe,cACV,UAAU,IAAI,YAAY,IAAI,OAC9B,UAAU,IAAI,KAAK,IAAI;UAGrBA,GAAQ;AACf,SAAO"}
@@ -1,21 +0,0 @@
1
- import { r as graphqlFetch } from "./apollo-client-Bw50r80c.js";
2
- import { n as SEARCH_SUGGESTIONS_QUERY } from "./product-C3HQUIgX.js";
3
-
4
- //#region src/lib/data/search.ts
5
- const searchSuggestions = async (params) => {
6
- try {
7
- const response = await graphqlFetch({
8
- query: SEARCH_SUGGESTIONS_QUERY,
9
- variables: { query: params.query }
10
- });
11
- if (!response?.searchProducts) throw new Error("No search results returned");
12
- return response.searchProducts;
13
- } catch (error) {
14
- console.error("Search error:", error);
15
- throw new Error(`Failed to search suggestions: ${error instanceof Error ? error.message : "Unknown error"}`);
16
- }
17
- };
18
-
19
- //#endregion
20
- export { searchSuggestions as t };
21
- //# sourceMappingURL=search-D7Gw7jAk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-D7Gw7jAk.js","names":[],"sources":["../src/lib/data/search.ts"],"sourcesContent":["'use server';\n\nimport { graphqlFetch } from '@/lib/gql/apollo-client';\nimport { SEARCH_SUGGESTIONS_QUERY } from '@/lib/gql/queries/product';\nimport {\n ProductHit,\n SearchSuggestionsQuery,\n SearchSuggestionsQueryVariables,\n} from '@/types/graphql';\n\nexport const searchSuggestions = async (\n params: SearchSuggestionsQueryVariables\n): Promise<{ items: ProductHit[] }> => {\n try {\n const response = await graphqlFetch<\n SearchSuggestionsQuery,\n SearchSuggestionsQueryVariables\n >({\n query: SEARCH_SUGGESTIONS_QUERY,\n variables: {\n query: params.query,\n },\n });\n\n if (!response?.searchProducts) {\n throw new Error('No search results returned');\n }\n\n return response.searchProducts;\n } catch (error) {\n console.error('Search error:', error);\n throw new Error(\n `Failed to search suggestions: ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n};\n"],"mappings":";;;;AAUA,MAAa,oBAAoB,OAC/B,WACqC;AACrC,KAAI;EACF,MAAM,WAAW,MAAM,aAGrB;GACA,OAAO;GACP,WAAW,EACT,OAAO,OAAO,OACf;GACF,CAAC;AAEF,MAAI,CAAC,UAAU,eACb,OAAM,IAAI,MAAM,6BAA6B;AAG/C,SAAO,SAAS;UACT,OAAO;AACd,UAAQ,MAAM,iBAAiB,MAAM;AACrC,QAAM,IAAI,MACR,iCAAiC,iBAAiB,QAAQ,MAAM,UAAU,kBAC3E"}