@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,195 +0,0 @@
1
- import { t as convertToLocale } from "./money-DVQGzXns.js";
2
- import { t as DeleteButton } from "./delete-button-Bnm5bof2.js";
3
- import { t as LineItemOptions } from "./line-item-options-l_eRZIIq.js";
4
- import { t as LineItemPrice } from "./line-item-price-BlTwskFC.js";
5
- import { t as LocalizedClientLink } from "./localized-client-link-CthmRcvb.js";
6
- import { t as Thumbnail } from "./thumbnail-C0TU3rh-.js";
7
- import { Fragment, useEffect, useRef, useState } from "react";
8
- import { usePathname } from "next/navigation";
9
- import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
- import { Popover, PopoverButton, PopoverPanel, Transition } from "@headlessui/react";
11
- import { Button } from "@medusajs/ui";
12
-
13
- //#region src/components/cart-dropdown/index.tsx
14
- const CartDropdown = ({ cart: cartState }) => {
15
- const [activeTimer, setActiveTimer] = useState(void 0);
16
- const [cartDropdownOpen, setCartDropdownOpen] = useState(false);
17
- const open = () => setCartDropdownOpen(true);
18
- const close = () => setCartDropdownOpen(false);
19
- const totalItems = cartState?.items?.reduce((acc, item) => {
20
- return acc + item.quantity;
21
- }, 0) || 0;
22
- const subtotal = cartState?.subtotal ?? 0;
23
- const itemRef = useRef(totalItems || 0);
24
- const timedOpen = () => {
25
- open();
26
- setActiveTimer(setTimeout(close, 5e3));
27
- };
28
- const openAndCancel = () => {
29
- if (activeTimer) clearTimeout(activeTimer);
30
- open();
31
- };
32
- useEffect(() => {
33
- return () => {
34
- if (activeTimer) clearTimeout(activeTimer);
35
- };
36
- }, [activeTimer]);
37
- const pathname = usePathname();
38
- useEffect(() => {
39
- if (itemRef.current !== totalItems && !pathname.includes("/cart")) timedOpen();
40
- }, [totalItems, itemRef.current]);
41
- return /* @__PURE__ */ jsx("div", {
42
- className: "z-50 h-full",
43
- onMouseEnter: openAndCancel,
44
- onMouseLeave: close,
45
- children: /* @__PURE__ */ jsxs(Popover, {
46
- className: "relative h-full",
47
- children: [/* @__PURE__ */ jsx(PopoverButton, {
48
- className: "h-full",
49
- children: /* @__PURE__ */ jsx(LocalizedClientLink, {
50
- className: "hover:text-ui-fg-base",
51
- href: "/cart",
52
- "data-testid": "nav-cart-link",
53
- children: `Cart (${totalItems})`
54
- })
55
- }), /* @__PURE__ */ jsx(Transition, {
56
- show: cartDropdownOpen,
57
- as: Fragment,
58
- enter: "transition ease-out duration-200",
59
- enterFrom: "opacity-0 translate-y-1",
60
- enterTo: "opacity-100 translate-y-0",
61
- leave: "transition ease-in duration-150",
62
- leaveFrom: "opacity-100 translate-y-0",
63
- leaveTo: "opacity-0 translate-y-1",
64
- children: /* @__PURE__ */ jsxs(PopoverPanel, {
65
- static: true,
66
- className: "text-ui-fg-base small:block absolute top-[calc(100%+1px)] right-0 hidden w-[420px] border-x border-b border-gray-200 bg-white",
67
- "data-testid": "nav-cart-dropdown",
68
- children: [/* @__PURE__ */ jsx("div", {
69
- className: "flex items-center justify-center p-4",
70
- children: /* @__PURE__ */ jsx("h3", {
71
- className: "text-large-semi",
72
- children: "Cart"
73
- })
74
- }), cartState && cartState.items?.length ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
75
- className: "no-scrollbar grid max-h-[402px] grid-cols-1 gap-y-8 overflow-y-scroll p-px px-4",
76
- children: cartState.items.sort((a, b) => {
77
- return (a.createdAt ?? "") > (b.createdAt ?? "") ? -1 : 1;
78
- }).map((item) => /* @__PURE__ */ jsxs("div", {
79
- className: "grid grid-cols-[122px_1fr] gap-x-4",
80
- "data-testid": "cart-item",
81
- children: [/* @__PURE__ */ jsx(LocalizedClientLink, {
82
- href: `/products/${item.productHandle}`,
83
- className: "w-24",
84
- children: /* @__PURE__ */ jsx(Thumbnail, {
85
- thumbnail: item.thumbnail,
86
- images: item.variant?.product?.images,
87
- size: "square"
88
- })
89
- }), /* @__PURE__ */ jsxs("div", {
90
- className: "flex flex-1 flex-col justify-between",
91
- children: [/* @__PURE__ */ jsx("div", {
92
- className: "flex flex-1 flex-col",
93
- children: /* @__PURE__ */ jsxs("div", {
94
- className: "flex items-start justify-between",
95
- children: [/* @__PURE__ */ jsxs("div", {
96
- className: "mr-4 flex w-[180px] flex-col overflow-ellipsis whitespace-nowrap",
97
- children: [
98
- /* @__PURE__ */ jsx("h3", {
99
- className: "text-base-regular overflow-hidden text-ellipsis",
100
- children: /* @__PURE__ */ jsx(LocalizedClientLink, {
101
- href: `/products/${item.productHandle}`,
102
- "data-testid": "product-link",
103
- children: item.title
104
- })
105
- }),
106
- /* @__PURE__ */ jsx(LineItemOptions, {
107
- variant: item.variant,
108
- "data-testid": "cart-item-variant",
109
- "data-value": item.variant
110
- }),
111
- /* @__PURE__ */ jsxs("span", {
112
- "data-testid": "cart-item-quantity",
113
- "data-value": item.quantity,
114
- children: ["Quantity: ", item.quantity]
115
- })
116
- ]
117
- }), /* @__PURE__ */ jsx("div", {
118
- className: "flex justify-end",
119
- children: /* @__PURE__ */ jsx(LineItemPrice, {
120
- item,
121
- style: "tight",
122
- currencyCode: cartState.currencyCode
123
- })
124
- })]
125
- })
126
- }), /* @__PURE__ */ jsx(DeleteButton, {
127
- id: item.id,
128
- className: "mt-1",
129
- "data-testid": "cart-item-remove-button",
130
- children: "Remove"
131
- })]
132
- })]
133
- }, item.id))
134
- }), /* @__PURE__ */ jsxs("div", {
135
- className: "text-small-regular flex flex-col gap-y-4 p-4",
136
- children: [/* @__PURE__ */ jsxs("div", {
137
- className: "flex items-center justify-between",
138
- children: [/* @__PURE__ */ jsxs("span", {
139
- className: "text-ui-fg-base font-semibold",
140
- children: [
141
- "Subtotal",
142
- " ",
143
- /* @__PURE__ */ jsx("span", {
144
- className: "font-normal",
145
- children: "(excl. taxes)"
146
- })
147
- ]
148
- }), /* @__PURE__ */ jsx("span", {
149
- className: "text-large-semi",
150
- "data-testid": "cart-subtotal",
151
- "data-value": subtotal,
152
- children: convertToLocale({
153
- amount: subtotal,
154
- currency_code: cartState.currencyCode
155
- })
156
- })]
157
- }), /* @__PURE__ */ jsx(LocalizedClientLink, {
158
- href: "/cart",
159
- passHref: true,
160
- children: /* @__PURE__ */ jsx(Button, {
161
- className: "w-full",
162
- size: "large",
163
- "data-testid": "go-to-cart-button",
164
- children: "Go to cart"
165
- })
166
- })]
167
- })] }) : /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", {
168
- className: "flex flex-col items-center justify-center gap-y-4 py-16",
169
- children: [
170
- /* @__PURE__ */ jsx("div", {
171
- className: "text-small-regular flex h-6 w-6 items-center justify-center rounded-full bg-gray-900 text-white",
172
- children: /* @__PURE__ */ jsx("span", { children: "0" })
173
- }),
174
- /* @__PURE__ */ jsx("span", { children: "Your shopping bag is empty." }),
175
- /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(LocalizedClientLink, {
176
- href: "/store",
177
- children: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
178
- className: "sr-only",
179
- children: "Go to all products page"
180
- }), /* @__PURE__ */ jsx(Button, {
181
- onClick: close,
182
- children: "Explore products"
183
- })] })
184
- }) })
185
- ]
186
- }) })]
187
- })
188
- })]
189
- })
190
- });
191
- };
192
-
193
- //#endregion
194
- export { CartDropdown as t };
195
- //# sourceMappingURL=cart-dropdown-D_PUJarp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cart-dropdown-D_PUJarp.js","names":[],"sources":["../src/components/cart-dropdown/index.tsx"],"sourcesContent":["'use client';\n\nimport { Fragment, useEffect, useRef, useState } from 'react';\n\nimport { usePathname } from 'next/navigation';\n\nimport {\n Popover,\n PopoverButton,\n PopoverPanel,\n Transition,\n} from '@headlessui/react';\nimport { Button } from '@medusajs/ui';\n\nimport { convertToLocale } from '@/lib/utils/money';\nimport { Cart } from '@/types/graphql';\n\nimport { DeleteButton } from '../delete-button';\nimport { LineItemOptions } from '../line-item-options';\nimport { LineItemPrice } from '../line-item-price';\nimport { LocalizedClientLink } from '../localized-client-link';\nimport { Thumbnail } from '../thumbnail';\n\nconst CartDropdown = ({ cart: cartState }: { cart?: Cart | null }) => {\n const [activeTimer, setActiveTimer] = useState<NodeJS.Timeout | undefined>(\n undefined\n );\n const [cartDropdownOpen, setCartDropdownOpen] = useState(false);\n\n const open = () => setCartDropdownOpen(true);\n const close = () => setCartDropdownOpen(false);\n\n const totalItems =\n cartState?.items?.reduce((acc, item) => {\n return acc + item.quantity;\n }, 0) || 0;\n\n const subtotal = cartState?.subtotal ?? 0;\n const itemRef = useRef<number>(totalItems || 0);\n\n const timedOpen = () => {\n open();\n\n const timer = setTimeout(close, 5000);\n\n setActiveTimer(timer);\n };\n\n const openAndCancel = () => {\n if (activeTimer) {\n clearTimeout(activeTimer);\n }\n\n open();\n };\n\n // Clean up the timer when the component unmounts\n useEffect(() => {\n return () => {\n if (activeTimer) {\n clearTimeout(activeTimer);\n }\n };\n }, [activeTimer]);\n\n const pathname = usePathname();\n\n // open cart dropdown when modifying the cart items, but only if we're not on the cart page\n useEffect(() => {\n if (itemRef.current !== totalItems && !pathname.includes('/cart')) {\n timedOpen();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [totalItems, itemRef.current]);\n\n return (\n <div\n className=\"z-50 h-full\"\n onMouseEnter={openAndCancel}\n onMouseLeave={close}\n >\n <Popover className=\"relative h-full\">\n <PopoverButton className=\"h-full\">\n <LocalizedClientLink\n className=\"hover:text-ui-fg-base\"\n href=\"/cart\"\n data-testid=\"nav-cart-link\"\n >{`Cart (${totalItems})`}</LocalizedClientLink>\n </PopoverButton>\n <Transition\n show={cartDropdownOpen}\n as={Fragment}\n enter=\"transition ease-out duration-200\"\n enterFrom=\"opacity-0 translate-y-1\"\n enterTo=\"opacity-100 translate-y-0\"\n leave=\"transition ease-in duration-150\"\n leaveFrom=\"opacity-100 translate-y-0\"\n leaveTo=\"opacity-0 translate-y-1\"\n >\n <PopoverPanel\n static\n className=\"text-ui-fg-base small:block absolute top-[calc(100%+1px)] right-0 hidden w-[420px] border-x border-b border-gray-200 bg-white\"\n data-testid=\"nav-cart-dropdown\"\n >\n <div className=\"flex items-center justify-center p-4\">\n <h3 className=\"text-large-semi\">Cart</h3>\n </div>\n {cartState && cartState.items?.length ? (\n <>\n <div className=\"no-scrollbar grid max-h-[402px] grid-cols-1 gap-y-8 overflow-y-scroll p-px px-4\">\n {cartState.items\n .sort((a, b) => {\n return (a.createdAt ?? '') > (b.createdAt ?? '') ? -1 : 1;\n })\n .map((item) => (\n <div\n className=\"grid grid-cols-[122px_1fr] gap-x-4\"\n key={item.id}\n data-testid=\"cart-item\"\n >\n <LocalizedClientLink\n href={`/products/${item.productHandle}`}\n className=\"w-24\"\n >\n <Thumbnail\n thumbnail={item.thumbnail}\n images={item.variant?.product?.images}\n size=\"square\"\n />\n </LocalizedClientLink>\n <div className=\"flex flex-1 flex-col justify-between\">\n <div className=\"flex flex-1 flex-col\">\n <div className=\"flex items-start justify-between\">\n <div className=\"mr-4 flex w-[180px] flex-col overflow-ellipsis whitespace-nowrap\">\n <h3 className=\"text-base-regular overflow-hidden text-ellipsis\">\n <LocalizedClientLink\n href={`/products/${item.productHandle}`}\n data-testid=\"product-link\"\n >\n {item.title}\n </LocalizedClientLink>\n </h3>\n <LineItemOptions\n variant={item.variant}\n data-testid=\"cart-item-variant\"\n data-value={item.variant}\n />\n <span\n data-testid=\"cart-item-quantity\"\n data-value={item.quantity}\n >\n Quantity: {item.quantity}\n </span>\n </div>\n <div className=\"flex justify-end\">\n <LineItemPrice\n item={item}\n style=\"tight\"\n currencyCode={cartState.currencyCode}\n />\n </div>\n </div>\n </div>\n <DeleteButton\n id={item.id}\n className=\"mt-1\"\n data-testid=\"cart-item-remove-button\"\n >\n Remove\n </DeleteButton>\n </div>\n </div>\n ))}\n </div>\n <div className=\"text-small-regular flex flex-col gap-y-4 p-4\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-ui-fg-base font-semibold\">\n Subtotal{' '}\n <span className=\"font-normal\">(excl. taxes)</span>\n </span>\n <span\n className=\"text-large-semi\"\n data-testid=\"cart-subtotal\"\n data-value={subtotal}\n >\n {convertToLocale({\n amount: subtotal,\n currency_code: cartState.currencyCode,\n })}\n </span>\n </div>\n <LocalizedClientLink href=\"/cart\" passHref>\n <Button\n className=\"w-full\"\n size=\"large\"\n data-testid=\"go-to-cart-button\"\n >\n Go to cart\n </Button>\n </LocalizedClientLink>\n </div>\n </>\n ) : (\n <div>\n <div className=\"flex flex-col items-center justify-center gap-y-4 py-16\">\n <div className=\"text-small-regular flex h-6 w-6 items-center justify-center rounded-full bg-gray-900 text-white\">\n <span>0</span>\n </div>\n <span>Your shopping bag is empty.</span>\n <div>\n <LocalizedClientLink href=\"/store\">\n <>\n <span className=\"sr-only\">Go to all products page</span>\n <Button onClick={close}>Explore products</Button>\n </>\n </LocalizedClientLink>\n </div>\n </div>\n </div>\n )}\n </PopoverPanel>\n </Transition>\n </Popover>\n </div>\n );\n};\n\nexport { CartDropdown };\n"],"mappings":";;;;;;;;;;;;;AAuBA,MAAM,gBAAgB,EAAE,MAAM,gBAAwC;CACpE,MAAM,CAAC,aAAa,kBAAkB,SACpC,OACD;CACD,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,MAAM;CAE/D,MAAM,aAAa,oBAAoB,KAAK;CAC5C,MAAM,cAAc,oBAAoB,MAAM;CAE9C,MAAM,aACJ,WAAW,OAAO,QAAQ,KAAK,SAAS;AACtC,SAAO,MAAM,KAAK;IACjB,EAAE,IAAI;CAEX,MAAM,WAAW,WAAW,YAAY;CACxC,MAAM,UAAU,OAAe,cAAc,EAAE;CAE/C,MAAM,kBAAkB;AACtB,QAAM;AAIN,iBAFc,WAAW,OAAO,IAAK,CAEhB;;CAGvB,MAAM,sBAAsB;AAC1B,MAAI,YACF,cAAa,YAAY;AAG3B,QAAM;;AAIR,iBAAgB;AACd,eAAa;AACX,OAAI,YACF,cAAa,YAAY;;IAG5B,CAAC,YAAY,CAAC;CAEjB,MAAM,WAAW,aAAa;AAG9B,iBAAgB;AACd,MAAI,QAAQ,YAAY,cAAc,CAAC,SAAS,SAAS,QAAQ,CAC/D,YAAW;IAGZ,CAAC,YAAY,QAAQ,QAAQ,CAAC;AAEjC,QACE,oBAAC;EACC,WAAU;EACV,cAAc;EACd,cAAc;YAEd,qBAAC;GAAQ,WAAU;cACjB,oBAAC;IAAc,WAAU;cACvB,oBAAC;KACC,WAAU;KACV,MAAK;KACL,eAAY;eACZ,SAAS,WAAW;MAAyB;KACjC,EAChB,oBAAC;IACC,MAAM;IACN,IAAI;IACJ,OAAM;IACN,WAAU;IACV,SAAQ;IACR,OAAM;IACN,WAAU;IACV,SAAQ;cAER,qBAAC;KACC;KACA,WAAU;KACV,eAAY;gBAEZ,oBAAC;MAAI,WAAU;gBACb,oBAAC;OAAG,WAAU;iBAAkB;QAAS;OACrC,EACL,aAAa,UAAU,OAAO,SAC7B,8CACE,oBAAC;MAAI,WAAU;gBACZ,UAAU,MACR,MAAM,GAAG,MAAM;AACd,eAAQ,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM,KAAK;QACxD,CACD,KAAK,SACJ,qBAAC;OACC,WAAU;OAEV,eAAY;kBAEZ,oBAAC;QACC,MAAM,aAAa,KAAK;QACxB,WAAU;kBAEV,oBAAC;SACC,WAAW,KAAK;SAChB,QAAQ,KAAK,SAAS,SAAS;SAC/B,MAAK;UACL;SACkB,EACtB,qBAAC;QAAI,WAAU;mBACb,oBAAC;SAAI,WAAU;mBACb,qBAAC;UAAI,WAAU;qBACb,qBAAC;WAAI,WAAU;;YACb,oBAAC;aAAG,WAAU;uBACZ,oBAAC;cACC,MAAM,aAAa,KAAK;cACxB,eAAY;wBAEX,KAAK;eACc;cACnB;YACL,oBAAC;aACC,SAAS,KAAK;aACd,eAAY;aACZ,cAAY,KAAK;cACjB;YACF,qBAAC;aACC,eAAY;aACZ,cAAY,KAAK;wBAClB,cACY,KAAK;cACX;;YACH,EACN,oBAAC;WAAI,WAAU;qBACb,oBAAC;YACO;YACN,OAAM;YACN,cAAc,UAAU;aACxB;YACE;WACF;UACF,EACN,oBAAC;SACC,IAAI,KAAK;SACT,WAAU;SACV,eAAY;mBACb;UAEc;SACX;SArDD,KAAK,GAsDN,CACN;OACA,EACN,qBAAC;MAAI,WAAU;iBACb,qBAAC;OAAI,WAAU;kBACb,qBAAC;QAAK,WAAU;;SAAgC;SACrC;SACT,oBAAC;UAAK,WAAU;oBAAc;WAAoB;;SAC7C,EACP,oBAAC;QACC,WAAU;QACV,eAAY;QACZ,cAAY;kBAEX,gBAAgB;SACf,QAAQ;SACR,eAAe,UAAU;SAC1B,CAAC;SACG;QACH,EACN,oBAAC;OAAoB,MAAK;OAAQ;iBAChC,oBAAC;QACC,WAAU;QACV,MAAK;QACL,eAAY;kBACb;SAEQ;QACW;OAClB,IACL,GAEH,oBAAC,mBACC,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAI,WAAU;kBACb,oBAAC,oBAAK,MAAQ;SACV;OACN,oBAAC,oBAAK,gCAAkC;OACxC,oBAAC,mBACC,oBAAC;QAAoB,MAAK;kBACxB,8CACE,oBAAC;SAAK,WAAU;mBAAU;UAA8B,EACxD,oBAAC;SAAO,SAAS;mBAAO;UAAyB,IAChD;SACiB,GAClB;;OACF,GACF;MAEK;KACJ;IACL;GACN"}
@@ -1,103 +0,0 @@
1
- import { t as sdk } from "./medusa-TumrpCF2.js";
2
- import { i as graphqlMutation, r as graphqlFetch } from "./apollo-client-Bw50r80c.js";
3
- import { r as UPDATE_CART_MUTATION, t as DELETE_LINE_ITEM_MUTATION } from "./cart-IHaLnQC4.js";
4
- import { t as GET_CART_QUERY } from "./cart-DH8urwwT.js";
5
- import { t as medusaError } from "./medusa-error-DDhA6RGC.js";
6
- import { i as getCartId, n as getCacheOptions, r as getCacheTag, t as getAuthHeaders } from "./cookies-lksVIe4_.js";
7
- import { t as getRegion } from "./regions-r1AvxfT8.js";
8
- import { redirect } from "next/navigation";
9
- import { revalidateTag } from "next/cache";
10
-
11
- //#region src/lib/data/cart.ts
12
- /**
13
- * Retrieves a cart by its ID. If no ID is provided, it will use the cart ID from the cookies.
14
- * @param cartId - optional - The ID of the cart to retrieve.
15
- * @returns The cart object if found, or null if not found.
16
- */
17
- const retrieveCart = async (cartId) => {
18
- const id = cartId || await getCartId();
19
- if (!id) return null;
20
- try {
21
- return (await graphqlFetch({
22
- query: GET_CART_QUERY,
23
- variables: { id }
24
- }))?.cart ?? null;
25
- } catch (error) {
26
- console.error("Failed to fetch cart:", error);
27
- return null;
28
- }
29
- };
30
- const updateCart = async (data) => {
31
- const cartId = await getCartId();
32
- if (!cartId) throw new Error("No existing cart found, please create one before updating");
33
- try {
34
- const cart = (await graphqlMutation({
35
- mutation: UPDATE_CART_MUTATION,
36
- variables: {
37
- id: cartId,
38
- data
39
- }
40
- }))?.updateCart ?? null;
41
- if (cart) {
42
- revalidateTag(await getCacheTag("carts"));
43
- revalidateTag(await getCacheTag("fulfillment"));
44
- }
45
- return cart;
46
- } catch (err) {
47
- medusaError(err);
48
- }
49
- };
50
- const deleteLineItem = async (lineId) => {
51
- if (!lineId) throw new Error("Missing lineItem ID when deleting line item");
52
- const cartId = await getCartId();
53
- if (!cartId) throw new Error("Missing cart ID when deleting line item");
54
- try {
55
- const deletedLineItem = (await graphqlMutation({
56
- mutation: DELETE_LINE_ITEM_MUTATION,
57
- variables: {
58
- cartId,
59
- lineItemId: lineId
60
- }
61
- }))?.deleteLineItem ?? null;
62
- if (deletedLineItem) {
63
- revalidateTag(await getCacheTag("carts"));
64
- revalidateTag(await getCacheTag("fulfillment"));
65
- }
66
- return deletedLineItem;
67
- } catch (error) {
68
- console.error("GraphQL deleteLineItem error:", error.message);
69
- throw error;
70
- }
71
- };
72
- /**
73
- * Updates the countrycode param and revalidates the regions cache
74
- * @param regionId
75
- * @param countryCode
76
- */
77
- async function updateRegion(countryCode, currentPath) {
78
- const cartId = await getCartId();
79
- const region = await getRegion(countryCode);
80
- if (!region) throw new Error(`Region not found for country code: ${countryCode}`);
81
- if (cartId) {
82
- await updateCart({ regionId: region.id });
83
- revalidateTag(await getCacheTag("carts"));
84
- }
85
- revalidateTag(await getCacheTag("regions"));
86
- revalidateTag(await getCacheTag("products"));
87
- redirect(`/${countryCode}${currentPath}`);
88
- }
89
- async function listCartOptions() {
90
- const cartId = await getCartId();
91
- const headers = { ...await getAuthHeaders() };
92
- const next = { ...await getCacheOptions("shippingOptions") };
93
- return await sdk.client.fetch("/store/shipping-options", {
94
- query: { cart_id: cartId },
95
- next,
96
- headers,
97
- cache: "force-cache"
98
- });
99
- }
100
-
101
- //#endregion
102
- export { updateRegion as i, listCartOptions as n, retrieveCart as r, deleteLineItem as t };
103
- //# sourceMappingURL=cart-xkcyWLfU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cart-xkcyWLfU.js","names":["error: any"],"sources":["../src/lib/data/cart.ts"],"sourcesContent":["'use server';\n\nimport { revalidateTag } from 'next/cache';\nimport { redirect } from 'next/navigation';\n\nimport { HttpTypes } from '@medusajs/types';\n\nimport { sdk } from '@/lib/config/medusa';\nimport { graphqlFetch, graphqlMutation } from '@/lib/gql/apollo-client';\nimport {\n DELETE_LINE_ITEM_MUTATION,\n UPDATE_CART_MUTATION,\n} from '@/lib/gql/mutations/cart';\nimport { GET_CART_QUERY } from '@/lib/gql/queries/cart';\nimport { medusaError } from '@/lib/utils/medusa-error';\nimport {\n Cart,\n DeleteLineItemMutation,\n DeleteLineItemMutationVariables,\n GetCartQuery,\n GetCartQueryVariables,\n UpdateCartMutation,\n UpdateCartMutationVariables,\n} from '@/types/graphql';\n\nimport {\n getAuthHeaders,\n getCacheOptions,\n getCacheTag,\n getCartId,\n} from './cookies';\nimport { getRegion } from './regions';\n\n/**\n * Retrieves a cart by its ID. If no ID is provided, it will use the cart ID from the cookies.\n * @param cartId - optional - The ID of the cart to retrieve.\n * @returns The cart object if found, or null if not found.\n */\nexport const retrieveCart = async (cartId?: string): Promise<Cart | null> => {\n const id = cartId || (await getCartId());\n if (!id) {\n return null;\n }\n\n try {\n const data = await graphqlFetch<GetCartQuery, GetCartQueryVariables>({\n query: GET_CART_QUERY,\n variables: { id },\n });\n\n return data?.cart ?? null;\n } catch (error) {\n console.error('Failed to fetch cart:', error);\n return null;\n }\n};\n\nconst updateCart = async (\n data: UpdateCartMutationVariables['data']\n): Promise<UpdateCartMutation['updateCart'] | null> => {\n const cartId = await getCartId();\n\n if (!cartId) {\n throw new Error(\n 'No existing cart found, please create one before updating'\n );\n }\n\n try {\n const result = await graphqlMutation<\n UpdateCartMutation,\n UpdateCartMutationVariables\n >({\n mutation: UPDATE_CART_MUTATION,\n variables: {\n id: cartId,\n data,\n },\n });\n\n const cart = result?.updateCart ?? null;\n\n if (cart) {\n const cartCacheTag = await getCacheTag('carts');\n revalidateTag(cartCacheTag);\n\n const fulfillmentCacheTag = await getCacheTag('fulfillment');\n revalidateTag(fulfillmentCacheTag);\n }\n\n return cart;\n } catch (err) {\n medusaError(err);\n }\n};\n\nexport const deleteLineItem = async (\n lineId: string\n): Promise<DeleteLineItemMutation['deleteLineItem'] | null> => {\n if (!lineId) {\n throw new Error('Missing lineItem ID when deleting line item');\n }\n\n const cartId = await getCartId();\n\n if (!cartId) {\n throw new Error('Missing cart ID when deleting line item');\n }\n\n try {\n const result = await graphqlMutation<\n DeleteLineItemMutation,\n DeleteLineItemMutationVariables\n >({\n mutation: DELETE_LINE_ITEM_MUTATION,\n variables: {\n cartId,\n lineItemId: lineId,\n },\n });\n\n const deletedLineItem = result?.deleteLineItem ?? null;\n\n if (deletedLineItem) {\n const cartCacheTag = await getCacheTag('carts');\n revalidateTag(cartCacheTag);\n\n const fulfillmentCacheTag = await getCacheTag('fulfillment');\n revalidateTag(fulfillmentCacheTag);\n }\n\n return deletedLineItem;\n } catch (error: any) {\n console.error('GraphQL deleteLineItem error:', error.message);\n throw error;\n }\n};\n\n/**\n * Updates the countrycode param and revalidates the regions cache\n * @param regionId\n * @param countryCode\n */\nexport async function updateRegion(countryCode: string, currentPath: string) {\n const cartId = await getCartId();\n const region = await getRegion(countryCode);\n\n if (!region) {\n throw new Error(`Region not found for country code: ${countryCode}`);\n }\n\n if (cartId) {\n await updateCart({ regionId: region.id });\n const cartCacheTag = await getCacheTag('carts');\n revalidateTag(cartCacheTag);\n }\n\n const regionCacheTag = await getCacheTag('regions');\n revalidateTag(regionCacheTag);\n\n const productsCacheTag = await getCacheTag('products');\n revalidateTag(productsCacheTag);\n\n redirect(`/${countryCode}${currentPath}`);\n}\n\nexport async function listCartOptions() {\n const cartId = await getCartId();\n const headers = {\n ...(await getAuthHeaders()),\n };\n const next = {\n ...(await getCacheOptions('shippingOptions')),\n };\n\n return await sdk.client.fetch<{\n shipping_options: HttpTypes.StoreCartShippingOption[];\n }>('/store/shipping-options', {\n query: { cart_id: cartId },\n next,\n headers,\n cache: 'force-cache',\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAsCA,MAAa,eAAe,OAAO,WAA0C;CAC3E,MAAM,KAAK,UAAW,MAAM,WAAW;AACvC,KAAI,CAAC,GACH,QAAO;AAGT,KAAI;AAMF,UALa,MAAM,aAAkD;GACnE,OAAO;GACP,WAAW,EAAE,IAAI;GAClB,CAAC,GAEW,QAAQ;UACd,OAAO;AACd,UAAQ,MAAM,yBAAyB,MAAM;AAC7C,SAAO;;;AAIX,MAAM,aAAa,OACjB,SACqD;CACrD,MAAM,SAAS,MAAM,WAAW;AAEhC,KAAI,CAAC,OACH,OAAM,IAAI,MACR,4DACD;AAGH,KAAI;EAYF,MAAM,QAXS,MAAM,gBAGnB;GACA,UAAU;GACV,WAAW;IACT,IAAI;IACJ;IACD;GACF,CAAC,GAEmB,cAAc;AAEnC,MAAI,MAAM;AAER,iBADqB,MAAM,YAAY,QAAQ,CACpB;AAG3B,iBAD4B,MAAM,YAAY,cAAc,CAC1B;;AAGpC,SAAO;UACA,KAAK;AACZ,cAAY,IAAI;;;AAIpB,MAAa,iBAAiB,OAC5B,WAC6D;AAC7D,KAAI,CAAC,OACH,OAAM,IAAI,MAAM,8CAA8C;CAGhE,MAAM,SAAS,MAAM,WAAW;AAEhC,KAAI,CAAC,OACH,OAAM,IAAI,MAAM,0CAA0C;AAG5D,KAAI;EAYF,MAAM,mBAXS,MAAM,gBAGnB;GACA,UAAU;GACV,WAAW;IACT;IACA,YAAY;IACb;GACF,CAAC,GAE8B,kBAAkB;AAElD,MAAI,iBAAiB;AAEnB,iBADqB,MAAM,YAAY,QAAQ,CACpB;AAG3B,iBAD4B,MAAM,YAAY,cAAc,CAC1B;;AAGpC,SAAO;UACAA,OAAY;AACnB,UAAQ,MAAM,iCAAiC,MAAM,QAAQ;AAC7D,QAAM;;;;;;;;AASV,eAAsB,aAAa,aAAqB,aAAqB;CAC3E,MAAM,SAAS,MAAM,WAAW;CAChC,MAAM,SAAS,MAAM,UAAU,YAAY;AAE3C,KAAI,CAAC,OACH,OAAM,IAAI,MAAM,sCAAsC,cAAc;AAGtE,KAAI,QAAQ;AACV,QAAM,WAAW,EAAE,UAAU,OAAO,IAAI,CAAC;AAEzC,gBADqB,MAAM,YAAY,QAAQ,CACpB;;AAI7B,eADuB,MAAM,YAAY,UAAU,CACtB;AAG7B,eADyB,MAAM,YAAY,WAAW,CACvB;AAE/B,UAAS,IAAI,cAAc,cAAc;;AAG3C,eAAsB,kBAAkB;CACtC,MAAM,SAAS,MAAM,WAAW;CAChC,MAAM,UAAU,EACd,GAAI,MAAM,gBAAgB,EAC3B;CACD,MAAM,OAAO,EACX,GAAI,MAAM,gBAAgB,kBAAkB,EAC7C;AAED,QAAO,MAAM,IAAI,OAAO,MAErB,2BAA2B;EAC5B,OAAO,EAAE,SAAS,QAAQ;EAC1B;EACA;EACA,OAAO;EACR,CAAC"}
@@ -1,16 +0,0 @@
1
- import { r as graphqlFetch } from "./apollo-client-Bw50r80c.js";
2
- import { t as GET_PRODUCT_CATEGORIES_QUERY } from "./product-C3HQUIgX.js";
3
-
4
- //#region src/lib/data/categories.ts
5
- const listCategories = async () => {
6
- try {
7
- return (await graphqlFetch({ query: GET_PRODUCT_CATEGORIES_QUERY }))?.productCategories || [];
8
- } catch (error) {
9
- console.error("Error fetching categories from BFF:", error);
10
- return [];
11
- }
12
- };
13
-
14
- //#endregion
15
- export { listCategories as t };
16
- //# sourceMappingURL=categories-B-RYCIZ3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"categories-B-RYCIZ3.js","names":[],"sources":["../src/lib/data/categories.ts"],"sourcesContent":["import { graphqlFetch } from '@/lib/gql/apollo-client';\nimport { GET_PRODUCT_CATEGORIES_QUERY } from '@/lib/gql/queries/product';\nimport {\n GetProductCategoriesQuery,\n GetProductCategoriesQueryVariables,\n} from '@/types/graphql';\n\nexport const listCategories = async () => {\n try {\n const data = await graphqlFetch<\n GetProductCategoriesQuery,\n GetProductCategoriesQueryVariables\n >({\n query: GET_PRODUCT_CATEGORIES_QUERY,\n });\n\n return data?.productCategories || [];\n } catch (error) {\n console.error('Error fetching categories from BFF:', error);\n return [];\n }\n};\n"],"mappings":";;;;AAOA,MAAa,iBAAiB,YAAY;AACxC,KAAI;AAQF,UAPa,MAAM,aAGjB,EACA,OAAO,8BACR,CAAC,GAEW,qBAAqB,EAAE;UAC7B,OAAO;AACd,UAAQ,MAAM,uCAAuC,MAAM;AAC3D,SAAO,EAAE"}
@@ -1,22 +0,0 @@
1
- import { r as graphqlFetch } from "./apollo-client-Bw50r80c.js";
2
- import { t as GET_COLLECTIONS_QUERY } from "./collections-DMv3UYgC.js";
3
-
4
- //#region src/lib/data/collections.ts
5
- const listCollections = async (queryParams = {}) => {
6
- try {
7
- return { collections: (await graphqlFetch({
8
- query: GET_COLLECTIONS_QUERY,
9
- variables: {
10
- limit: parseInt(queryParams.limit || "100"),
11
- offset: parseInt(queryParams.offset || "0")
12
- }
13
- }))?.collections };
14
- } catch (error) {
15
- console.error("Error fetching collections from BFF:", error);
16
- return { collections: [] };
17
- }
18
- };
19
-
20
- //#endregion
21
- export { listCollections as t };
22
- //# sourceMappingURL=collections-BgyvhW2p.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collections-BgyvhW2p.js","names":[],"sources":["../src/lib/data/collections.ts"],"sourcesContent":["'use server';\n\nimport { graphqlFetch } from '@/lib/gql/apollo-client';\nimport { GET_COLLECTIONS_QUERY } from '@/lib/gql/queries/collections';\nimport {\n GetCollectionsQuery,\n GetCollectionsQueryVariables,\n} from '@/types/graphql';\n\nexport const listCollections = async (\n queryParams: Record<string, string> = {}\n) => {\n try {\n const limit = parseInt(queryParams.limit || '100');\n const offset = parseInt(queryParams.offset || '0');\n\n const data = await graphqlFetch<\n GetCollectionsQuery,\n GetCollectionsQueryVariables\n >({\n query: GET_COLLECTIONS_QUERY,\n variables: { limit, offset },\n });\n\n return {\n collections: data?.collections,\n };\n } catch (error) {\n console.error('Error fetching collections from BFF:', error);\n return { collections: [] };\n }\n};\n"],"mappings":";;;;AASA,MAAa,kBAAkB,OAC7B,cAAsC,EAAE,KACrC;AACH,KAAI;AAYF,SAAO,EACL,cATW,MAAM,aAGjB;GACA,OAAO;GACP,WAAW;IAAE,OARD,SAAS,YAAY,SAAS,MAAM;IAQ5B,QAPP,SAAS,YAAY,UAAU,IAAI;IAOpB;GAC7B,CAAC,GAGmB,aACpB;UACM,OAAO;AACd,UAAQ,MAAM,wCAAwC,MAAM;AAC5D,SAAO,EAAE,aAAa,EAAE,EAAE"}
@@ -1,20 +0,0 @@
1
- import { i as PRODUCT_COLLECTION_FRAGMENT, t as COLLECTION_PRODUCTS_FRAGMENT } from "./product-COu5D1mS.js";
2
- import { gql } from "@apollo/client";
3
-
4
- //#region src/lib/gql/queries/collections.ts
5
- const GET_COLLECTIONS_QUERY = gql`
6
- query GetCollections($limit: Int, $offset: Int) {
7
- collections(limit: $limit, offset: $offset) {
8
- ...ProductCollection
9
- products {
10
- ...CollectionProducts
11
- }
12
- }
13
- }
14
- ${PRODUCT_COLLECTION_FRAGMENT}
15
- ${COLLECTION_PRODUCTS_FRAGMENT}
16
- `;
17
-
18
- //#endregion
19
- export { GET_COLLECTIONS_QUERY as t };
20
- //# sourceMappingURL=collections-DMv3UYgC.js.map
@@ -1,38 +0,0 @@
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-lksVIe4_.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cookies-lksVIe4_.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"}
@@ -1,42 +0,0 @@
1
- import { gql } from "@apollo/client";
2
-
3
- //#region src/lib/gql/fragments/customer.ts
4
- const CUSTOMER_ADDRESS_FRAGMENT = gql`
5
- fragment CustomerAddress on CustomerAddress {
6
- id
7
- addressName
8
- isDefaultShipping
9
- isDefaultBilling
10
- customerId
11
- company
12
- firstName
13
- lastName
14
- address1
15
- address2
16
- city
17
- countryCode
18
- province
19
- postalCode
20
- phone
21
- }
22
- `;
23
- const CUSTOMER_FRAGMENT = gql`
24
- fragment Customer on Customer {
25
- id
26
- email
27
- defaultBillingAddressId
28
- defaultShippingAddressId
29
- companyName
30
- firstName
31
- lastName
32
- phone
33
- addresses {
34
- ...CustomerAddress
35
- }
36
- }
37
- ${CUSTOMER_ADDRESS_FRAGMENT}
38
- `;
39
-
40
- //#endregion
41
- export { CUSTOMER_FRAGMENT as n, CUSTOMER_ADDRESS_FRAGMENT as t };
42
- //# sourceMappingURL=customer-CgN4zI00.js.map
@@ -1,38 +0,0 @@
1
- import { i as graphqlMutation, n as createServerApolloClient, r as graphqlFetch } from "./apollo-client-Bw50r80c.js";
2
- import { n as TRANSFER_CART_MUTATION } from "./cart-IHaLnQC4.js";
3
- import { t as medusaError } from "./medusa-error-DDhA6RGC.js";
4
- import { i as getCartId, r as getCacheTag } from "./cookies-lksVIe4_.js";
5
- import { t as GET_CUSTOMER_QUERY } from "./customer-DIJz6m7L.js";
6
- import { revalidateTag } from "next/cache";
7
- import { cookies } from "next/headers";
8
-
9
- //#region src/lib/data/customer.ts
10
- const transferCart = async () => {
11
- const cartId = await getCartId();
12
- if (!cartId) return null;
13
- try {
14
- const cart = (await graphqlMutation({
15
- mutation: TRANSFER_CART_MUTATION,
16
- variables: { cartId }
17
- }))?.transferCart ?? null;
18
- if (cart) revalidateTag(await getCacheTag("carts"));
19
- return cart;
20
- } catch (err) {
21
- medusaError(err);
22
- }
23
- };
24
- const retrieveCustomer = async () => {
25
- const apolloClient = createServerApolloClient((await cookies()).toString());
26
- try {
27
- return await graphqlFetch({
28
- query: GET_CUSTOMER_QUERY,
29
- fetchPolicy: "network-only"
30
- }, apolloClient).then((response) => response?.me ?? null);
31
- } catch {
32
- return null;
33
- }
34
- };
35
-
36
- //#endregion
37
- export { transferCart as n, retrieveCustomer as t };
38
- //# sourceMappingURL=customer-ClewjBBr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"customer-ClewjBBr.js","names":[],"sources":["../src/lib/data/customer.ts"],"sourcesContent":["import { revalidateTag } from 'next/cache';\nimport { cookies } from 'next/headers';\n\nimport {\n Customer,\n GetCustomerQuery,\n GetCustomerQueryVariables,\n TransferCartMutation,\n TransferCartMutationVariables,\n} from '@/types/graphql';\n\nimport {\n createServerApolloClient,\n graphqlFetch,\n graphqlMutation,\n} from '../gql/apollo-client';\nimport { TRANSFER_CART_MUTATION } from '../gql/mutations/cart';\nimport { GET_CUSTOMER_QUERY } from '../gql/queries/customer';\nimport { medusaError } from '../utils/medusa-error';\nimport { getCacheTag, getCartId } from './cookies';\n\nexport const transferCart = async (): Promise<\n TransferCartMutation['transferCart'] | null\n> => {\n const cartId = await getCartId();\n\n if (!cartId) {\n return null;\n }\n\n try {\n const result = await graphqlMutation<\n TransferCartMutation,\n TransferCartMutationVariables\n >({\n mutation: TRANSFER_CART_MUTATION,\n variables: {\n cartId,\n },\n });\n\n const cart = result?.transferCart ?? null;\n\n if (cart) {\n const cartCacheTag = await getCacheTag('carts');\n revalidateTag(cartCacheTag);\n }\n\n return cart;\n } catch (err) {\n medusaError(err);\n }\n};\n\nexport const retrieveCustomer = async (): Promise<Customer | null> => {\n const cookieHeader = (await cookies()).toString();\n const apolloClient = createServerApolloClient(cookieHeader);\n\n try {\n const customer = await graphqlFetch<\n GetCustomerQuery,\n GetCustomerQueryVariables\n >(\n {\n query: GET_CUSTOMER_QUERY,\n fetchPolicy: 'network-only',\n },\n apolloClient\n ).then((response) => response?.me ?? null);\n\n return customer;\n } catch {\n return null;\n }\n};\n"],"mappings":";;;;;;;;;AAqBA,MAAa,eAAe,YAEvB;CACH,MAAM,SAAS,MAAM,WAAW;AAEhC,KAAI,CAAC,OACH,QAAO;AAGT,KAAI;EAWF,MAAM,QAVS,MAAM,gBAGnB;GACA,UAAU;GACV,WAAW,EACT,QACD;GACF,CAAC,GAEmB,gBAAgB;AAErC,MAAI,KAEF,eADqB,MAAM,YAAY,QAAQ,CACpB;AAG7B,SAAO;UACA,KAAK;AACZ,cAAY,IAAI;;;AAIpB,MAAa,mBAAmB,YAAsC;CAEpE,MAAM,eAAe,0BADC,MAAM,SAAS,EAAE,UAAU,CACU;AAE3D,KAAI;AAYF,SAXiB,MAAM,aAIrB;GACE,OAAO;GACP,aAAa;GACd,EACD,aACD,CAAC,MAAM,aAAa,UAAU,MAAM,KAAK;SAGpC;AACN,SAAO"}
@@ -1,16 +0,0 @@
1
- import { n as CUSTOMER_FRAGMENT } from "./customer-CgN4zI00.js";
2
- import { gql } from "@apollo/client";
3
-
4
- //#region src/lib/gql/queries/customer.ts
5
- const GET_CUSTOMER_QUERY = gql`
6
- query GetCustomer {
7
- me {
8
- ...Customer
9
- }
10
- }
11
- ${CUSTOMER_FRAGMENT}
12
- `;
13
-
14
- //#endregion
15
- export { GET_CUSTOMER_QUERY as t };
16
- //# sourceMappingURL=customer-DIJz6m7L.js.map
@@ -1,10 +0,0 @@
1
- //#region src/lib/utils/data-types.ts
2
- const isObject = (input) => input instanceof Object;
3
- const isArray = (input) => Array.isArray(input);
4
- const isEmpty = (input) => {
5
- return input === null || input === void 0 || isObject(input) && Object.keys(input).length === 0 || isArray(input) && input.length === 0 || typeof input === "string" && input.trim().length === 0;
6
- };
7
-
8
- //#endregion
9
- export { isEmpty as n, isObject as r, isArray as t };
10
- //# sourceMappingURL=data-types-CTPJXmJH.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"data-types-CTPJXmJH.js","names":[],"sources":["../src/lib/utils/data-types.ts"],"sourcesContent":["export const isObject = (input: any) => input instanceof Object;\nexport const isArray = (input: any) => Array.isArray(input);\nexport const isEmpty = (input: any) => {\n return (\n input === null ||\n input === undefined ||\n (isObject(input) && Object.keys(input).length === 0) ||\n (isArray(input) && (input as any[]).length === 0) ||\n (typeof input === 'string' && input.trim().length === 0)\n );\n};\n"],"mappings":";AAAA,MAAa,YAAY,UAAe,iBAAiB;AACzD,MAAa,WAAW,UAAe,MAAM,QAAQ,MAAM;AAC3D,MAAa,WAAW,UAAe;AACrC,QACE,UAAU,QACV,UAAU,UACT,SAAS,MAAM,IAAI,OAAO,KAAK,MAAM,CAAC,WAAW,KACjD,QAAQ,MAAM,IAAK,MAAgB,WAAW,KAC9C,OAAO,UAAU,YAAY,MAAM,MAAM,CAAC,WAAW"}
@@ -1,28 +0,0 @@
1
- import { t as deleteLineItem } from "./cart-xkcyWLfU.js";
2
- import { useState } from "react";
3
- import { jsx, jsxs } from "react/jsx-runtime";
4
- import { clx } from "@medusajs/ui";
5
- import { Spinner, Trash } from "@medusajs/icons";
6
-
7
- //#region src/components/delete-button/index.tsx
8
- const DeleteButton = ({ id, children, className }) => {
9
- const [isDeleting, setIsDeleting] = useState(false);
10
- const handleDelete = async (id$1) => {
11
- setIsDeleting(true);
12
- await deleteLineItem(id$1).catch((err) => {
13
- setIsDeleting(false);
14
- });
15
- };
16
- return /* @__PURE__ */ jsx("div", {
17
- className: clx("text-small-regular flex items-center justify-between", className),
18
- children: /* @__PURE__ */ jsxs("button", {
19
- className: "text-ui-fg-subtle hover:text-ui-fg-base flex cursor-pointer gap-x-1",
20
- onClick: () => handleDelete(id),
21
- children: [isDeleting ? /* @__PURE__ */ jsx(Spinner, { className: "animate-spin" }) : /* @__PURE__ */ jsx(Trash, {}), /* @__PURE__ */ jsx("span", { children })]
22
- })
23
- });
24
- };
25
-
26
- //#endregion
27
- export { DeleteButton as t };
28
- //# sourceMappingURL=delete-button-Bnm5bof2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delete-button-Bnm5bof2.js","names":["id"],"sources":["../src/components/delete-button/index.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Spinner, Trash } from '@medusajs/icons';\nimport { clx } from '@medusajs/ui';\n\nimport { deleteLineItem } from '@/lib/data/cart';\n\nconst DeleteButton = ({\n id,\n children,\n className,\n}: {\n id: string;\n children?: React.ReactNode;\n className?: string;\n}) => {\n const [isDeleting, setIsDeleting] = useState(false);\n\n const handleDelete = async (id: string) => {\n setIsDeleting(true);\n await deleteLineItem(id).catch((err) => {\n setIsDeleting(false);\n });\n };\n\n return (\n <div\n className={clx(\n 'text-small-regular flex items-center justify-between',\n className\n )}\n >\n <button\n className=\"text-ui-fg-subtle hover:text-ui-fg-base flex cursor-pointer gap-x-1\"\n onClick={() => handleDelete(id)}\n >\n {isDeleting ? <Spinner className=\"animate-spin\" /> : <Trash />}\n <span>{children}</span>\n </button>\n </div>\n );\n};\n\nexport { DeleteButton };\n"],"mappings":";;;;;;;AAOA,MAAM,gBAAgB,EACpB,IACA,UACA,gBAKI;CACJ,MAAM,CAAC,YAAY,iBAAiB,SAAS,MAAM;CAEnD,MAAM,eAAe,OAAO,SAAe;AACzC,gBAAc,KAAK;AACnB,QAAM,eAAeA,KAAG,CAAC,OAAO,QAAQ;AACtC,iBAAc,MAAM;IACpB;;AAGJ,QACE,oBAAC;EACC,WAAW,IACT,wDACA,UACD;YAED,qBAAC;GACC,WAAU;GACV,eAAe,aAAa,GAAG;cAE9B,aAAa,oBAAC,WAAQ,WAAU,iBAAiB,GAAG,oBAAC,UAAQ,EAC9D,oBAAC,UAAM,WAAgB;IAChB;GACL"}
@@ -1,16 +0,0 @@
1
- import { r as graphqlFetch } from "./apollo-client-Bw50r80c.js";
2
- import { t as GET_FOOTER_QUERY } from "./footer-DCtgtjKS.js";
3
-
4
- //#region src/lib/data/footer.ts
5
- const getFooterContent = async () => {
6
- try {
7
- return (await graphqlFetch({ query: GET_FOOTER_QUERY }))?.footer || null;
8
- } catch (error) {
9
- console.error("Error fetching footer content:", error);
10
- return null;
11
- }
12
- };
13
-
14
- //#endregion
15
- export { getFooterContent as t };
16
- //# sourceMappingURL=footer-BvNV-R9D.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"footer-BvNV-R9D.js","names":[],"sources":["../src/lib/data/footer.ts"],"sourcesContent":["import { graphqlFetch } from '@/lib/gql/apollo-client';\nimport { GET_FOOTER_QUERY } from '@/lib/gql/queries/footer';\nimport { GetFooterQuery, GetFooterQueryVariables } from '@/types/graphql';\n\nexport const getFooterContent = async () => {\n try {\n const data = await graphqlFetch<GetFooterQuery, GetFooterQueryVariables>({\n query: GET_FOOTER_QUERY,\n });\n return data?.footer || null;\n } catch (error) {\n console.error('Error fetching footer content:', error);\n return null;\n }\n};\n"],"mappings":";;;;AAIA,MAAa,mBAAmB,YAAY;AAC1C,KAAI;AAIF,UAHa,MAAM,aAAsD,EACvE,OAAO,kBACR,CAAC,GACW,UAAU;UAChB,OAAO;AACd,UAAQ,MAAM,kCAAkC,MAAM;AACtD,SAAO"}