@enadhq/enad-react-sdk 0.0.6 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/package.json +70 -18
  2. package/dist/client/cart/components/cart-drawer.d.mts +0 -19
  3. package/dist/client/cart/components/cart-drawer.mjs +0 -180
  4. package/dist/client/cart/components/cart-drawer.mjs.map +0 -1
  5. package/dist/client/cart/components/cart-trigger.d.mts +0 -5
  6. package/dist/client/cart/components/cart-trigger.mjs +0 -18
  7. package/dist/client/cart/components/cart-trigger.mjs.map +0 -1
  8. package/dist/client/cart/constants/session.d.mts +0 -3
  9. package/dist/client/cart/constants/session.mjs +0 -5
  10. package/dist/client/cart/constants/session.mjs.map +0 -1
  11. package/dist/client/cart/contexts/cart.d.mts +0 -27
  12. package/dist/client/cart/contexts/cart.mjs +0 -22
  13. package/dist/client/cart/contexts/cart.mjs.map +0 -1
  14. package/dist/client/cart/hooks/useCart.d.mts +0 -29
  15. package/dist/client/cart/hooks/useCart.mjs +0 -26
  16. package/dist/client/cart/hooks/useCart.mjs.map +0 -1
  17. package/dist/client/cart/hooks/useCartActions.d.mts +0 -26
  18. package/dist/client/cart/hooks/useCartActions.mjs +0 -58
  19. package/dist/client/cart/hooks/useCartActions.mjs.map +0 -1
  20. package/dist/client/cart/queries/addToCartQueryFn.d.mts +0 -10
  21. package/dist/client/cart/queries/addToCartQueryFn.mjs +0 -27
  22. package/dist/client/cart/queries/addToCartQueryFn.mjs.map +0 -1
  23. package/dist/client/cart/queries/getCartQueryFn.d.mts +0 -7
  24. package/dist/client/cart/queries/getCartQueryFn.mjs +0 -34
  25. package/dist/client/cart/queries/getCartQueryFn.mjs.map +0 -1
  26. package/dist/client/cart/queries/removeCartItemQueryFn.d.mts +0 -9
  27. package/dist/client/cart/queries/removeCartItemQueryFn.mjs +0 -24
  28. package/dist/client/cart/queries/removeCartItemQueryFn.mjs.map +0 -1
  29. package/dist/client/cart/queries/updateCartItemQueryFn.d.mts +0 -10
  30. package/dist/client/cart/queries/updateCartItemQueryFn.mjs +0 -27
  31. package/dist/client/cart/queries/updateCartItemQueryFn.mjs.map +0 -1
  32. package/dist/client/cart/types/cart.d.mts +0 -36
  33. package/dist/client/cart/types/cart.mjs +0 -1
  34. package/dist/client/cart/types/cart.mjs.map +0 -1
  35. package/dist/client/cart/utils/session.d.mts +0 -6
  36. package/dist/client/cart/utils/session.mjs +0 -21
  37. package/dist/client/cart/utils/session.mjs.map +0 -1
  38. package/dist/client/cms/storyblok/preview/registerStoryblokBridge.d.mts +0 -6
  39. package/dist/client/cms/storyblok/preview/registerStoryblokBridge.mjs +0 -24
  40. package/dist/client/cms/storyblok/preview/registerStoryblokBridge.mjs.map +0 -1
  41. package/dist/client/cms/storyblok/preview/storyblok-preview-syncer.d.mts +0 -22
  42. package/dist/client/cms/storyblok/preview/storyblok-preview-syncer.mjs +0 -79
  43. package/dist/client/cms/storyblok/preview/storyblok-preview-syncer.mjs.map +0 -1
  44. package/dist/client/global/auth/withAuth.d.mts +0 -6
  45. package/dist/client/global/auth/withAuth.mjs +0 -25
  46. package/dist/client/global/auth/withAuth.mjs.map +0 -1
  47. package/dist/client/global/config/index.d.mts +0 -17
  48. package/dist/client/global/config/index.mjs +0 -34
  49. package/dist/client/global/config/index.mjs.map +0 -1
  50. package/dist/client/global/constants/tags.d.mts +0 -16
  51. package/dist/client/global/constants/tags.mjs +0 -18
  52. package/dist/client/global/constants/tags.mjs.map +0 -1
  53. package/dist/client/global/providers/enad-provider.d.mts +0 -23
  54. package/dist/client/global/providers/enad-provider.mjs +0 -11
  55. package/dist/client/global/providers/enad-provider.mjs.map +0 -1
  56. package/dist/client/search/actions/searchAction.d.mts +0 -5
  57. package/dist/client/search/actions/searchAction.mjs +0 -18
  58. package/dist/client/search/actions/searchAction.mjs.map +0 -1
  59. package/dist/client/search/components/search-bar.d.mts +0 -2
  60. package/dist/client/search/components/search-bar.mjs +0 -1
  61. package/dist/client/search/components/search-bar.mjs.map +0 -1
  62. package/dist/client/search/hooks/useSearch.d.mts +0 -18
  63. package/dist/client/search/hooks/useSearch.mjs +0 -37
  64. package/dist/client/search/hooks/useSearch.mjs.map +0 -1
  65. package/dist/client/user/actions/createResetPasswordLinkAction.d.mts +0 -14
  66. package/dist/client/user/actions/createResetPasswordLinkAction.mjs +0 -30
  67. package/dist/client/user/actions/createResetPasswordLinkAction.mjs.map +0 -1
  68. package/dist/client/user/actions/getUserAction.d.mts +0 -5
  69. package/dist/client/user/actions/getUserAction.mjs +0 -19
  70. package/dist/client/user/actions/getUserAction.mjs.map +0 -1
  71. package/dist/client/user/actions/logInUserAction.d.mts +0 -15
  72. package/dist/client/user/actions/logInUserAction.mjs +0 -34
  73. package/dist/client/user/actions/logInUserAction.mjs.map +0 -1
  74. package/dist/client/user/actions/logoutUserAction.d.mts +0 -3
  75. package/dist/client/user/actions/logoutUserAction.mjs +0 -10
  76. package/dist/client/user/actions/logoutUserAction.mjs.map +0 -1
  77. package/dist/client/user/actions/registerOrganisationAction.d.mts +0 -12
  78. package/dist/client/user/actions/registerOrganisationAction.mjs +0 -18
  79. package/dist/client/user/actions/registerOrganisationAction.mjs.map +0 -1
  80. package/dist/client/user/actions/registerUserAction.d.mts +0 -18
  81. package/dist/client/user/actions/registerUserAction.mjs +0 -42
  82. package/dist/client/user/actions/registerUserAction.mjs.map +0 -1
  83. package/dist/client/user/actions/registerUserWithoutRedirectAction.d.mts +0 -44
  84. package/dist/client/user/actions/registerUserWithoutRedirectAction.mjs +0 -58
  85. package/dist/client/user/actions/registerUserWithoutRedirectAction.mjs.map +0 -1
  86. package/dist/client/user/actions/updatePasswordAction.d.mts +0 -21
  87. package/dist/client/user/actions/updatePasswordAction.mjs +0 -37
  88. package/dist/client/user/actions/updatePasswordAction.mjs.map +0 -1
  89. package/dist/client/user/api/userRoute.d.mts +0 -9
  90. package/dist/client/user/api/userRoute.mjs +0 -65
  91. package/dist/client/user/api/userRoute.mjs.map +0 -1
  92. package/dist/client/user/clients/enad.d.mts +0 -6
  93. package/dist/client/user/clients/enad.mjs +0 -19
  94. package/dist/client/user/clients/enad.mjs.map +0 -1
  95. package/dist/client/user/components/login-form.d.mts +0 -20
  96. package/dist/client/user/components/login-form.mjs +0 -113
  97. package/dist/client/user/components/login-form.mjs.map +0 -1
  98. package/dist/client/user/components/reset-password-form.d.mts +0 -15
  99. package/dist/client/user/components/reset-password-form.mjs +0 -86
  100. package/dist/client/user/components/reset-password-form.mjs.map +0 -1
  101. package/dist/client/user/components/sign-out.d.mts +0 -5
  102. package/dist/client/user/components/sign-out.mjs +0 -23
  103. package/dist/client/user/components/sign-out.mjs.map +0 -1
  104. package/dist/client/user/components/signup-form.d.mts +0 -15
  105. package/dist/client/user/components/signup-form.mjs +0 -155
  106. package/dist/client/user/components/signup-form.mjs.map +0 -1
  107. package/dist/client/user/components/signup-organisation-form.d.mts +0 -20
  108. package/dist/client/user/components/signup-organisation-form.mjs +0 -813
  109. package/dist/client/user/components/signup-organisation-form.mjs.map +0 -1
  110. package/dist/client/user/components/update-password-form.d.mts +0 -11
  111. package/dist/client/user/components/update-password-form.mjs +0 -69
  112. package/dist/client/user/components/update-password-form.mjs.map +0 -1
  113. package/dist/client/user/hooks/index.d.mts +0 -3
  114. package/dist/client/user/hooks/index.mjs +0 -2
  115. package/dist/client/user/hooks/index.mjs.map +0 -1
  116. package/dist/client/user/hooks/useUser.d.mts +0 -16
  117. package/dist/client/user/hooks/useUser.mjs +0 -32
  118. package/dist/client/user/hooks/useUser.mjs.map +0 -1
  119. package/dist/client/user/types/user.d.mts +0 -202
  120. package/dist/client/user/types/user.mjs +0 -1
  121. package/dist/client/user/types/user.mjs.map +0 -1
  122. package/dist/client/user/utils/userCookieService.d.mts +0 -20
  123. package/dist/client/user/utils/userCookieService.mjs +0 -51
  124. package/dist/client/user/utils/userCookieService.mjs.map +0 -1
  125. package/dist/client/wishlist/actions/addItemsToWishlistAction.d.mts +0 -7
  126. package/dist/client/wishlist/actions/addItemsToWishlistAction.mjs +0 -20
  127. package/dist/client/wishlist/actions/addItemsToWishlistAction.mjs.map +0 -1
  128. package/dist/client/wishlist/actions/createOrGetShareTokenAction.d.mts +0 -6
  129. package/dist/client/wishlist/actions/createOrGetShareTokenAction.mjs +0 -20
  130. package/dist/client/wishlist/actions/createOrGetShareTokenAction.mjs.map +0 -1
  131. package/dist/client/wishlist/actions/createWishlistAction.d.mts +0 -6
  132. package/dist/client/wishlist/actions/createWishlistAction.mjs +0 -16
  133. package/dist/client/wishlist/actions/createWishlistAction.mjs.map +0 -1
  134. package/dist/client/wishlist/actions/deleteItemsFromWishlistAction.d.mts +0 -7
  135. package/dist/client/wishlist/actions/deleteItemsFromWishlistAction.mjs +0 -20
  136. package/dist/client/wishlist/actions/deleteItemsFromWishlistAction.mjs.map +0 -1
  137. package/dist/client/wishlist/actions/deleteWishlistAction.d.mts +0 -5
  138. package/dist/client/wishlist/actions/deleteWishlistAction.mjs +0 -16
  139. package/dist/client/wishlist/actions/deleteWishlistAction.mjs.map +0 -1
  140. package/dist/client/wishlist/actions/getSharedWishlistAction.d.mts +0 -6
  141. package/dist/client/wishlist/actions/getSharedWishlistAction.mjs +0 -20
  142. package/dist/client/wishlist/actions/getSharedWishlistAction.mjs.map +0 -1
  143. package/dist/client/wishlist/actions/getSpecificWishlistAction.d.mts +0 -6
  144. package/dist/client/wishlist/actions/getSpecificWishlistAction.mjs +0 -20
  145. package/dist/client/wishlist/actions/getSpecificWishlistAction.mjs.map +0 -1
  146. package/dist/client/wishlist/actions/getUserWishlists.d.mts +0 -7
  147. package/dist/client/wishlist/actions/getUserWishlists.mjs +0 -25
  148. package/dist/client/wishlist/actions/getUserWishlists.mjs.map +0 -1
  149. package/dist/client/wishlist/actions/revokeShareTokenAction.d.mts +0 -5
  150. package/dist/client/wishlist/actions/revokeShareTokenAction.mjs +0 -20
  151. package/dist/client/wishlist/actions/revokeShareTokenAction.mjs.map +0 -1
  152. package/dist/client/wishlist/actions/updateWishlistAction.d.mts +0 -6
  153. package/dist/client/wishlist/actions/updateWishlistAction.mjs +0 -20
  154. package/dist/client/wishlist/actions/updateWishlistAction.mjs.map +0 -1
  155. package/dist/client/wishlist/hooks/index.d.mts +0 -3
  156. package/dist/client/wishlist/hooks/index.mjs +0 -2
  157. package/dist/client/wishlist/hooks/index.mjs.map +0 -1
  158. package/dist/client/wishlist/hooks/useWishlist.d.mts +0 -98
  159. package/dist/client/wishlist/hooks/useWishlist.mjs +0 -66
  160. package/dist/client/wishlist/hooks/useWishlist.mjs.map +0 -1
  161. package/dist/client/wishlist/hooks/useWishlistActions.d.mts +0 -48
  162. package/dist/client/wishlist/hooks/useWishlistActions.mjs +0 -101
  163. package/dist/client/wishlist/hooks/useWishlistActions.mjs.map +0 -1
  164. package/dist/client/wishlist/wishlist-drawer.d.mts +0 -19
  165. package/dist/client/wishlist/wishlist-drawer.mjs +0 -180
  166. package/dist/client/wishlist/wishlist-drawer.mjs.map +0 -1
  167. package/dist/styles.css +0 -959
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enadhq/enad-react-sdk",
3
- "version": "0.0.6",
3
+ "version": "1.0.0",
4
4
  "sideEffects": [
5
5
  "**/*.css"
6
6
  ],
@@ -12,21 +12,56 @@
12
12
  "types": "./dist/index.d.mts",
13
13
  "exports": {
14
14
  "./styles.css": "./dist/styles.css",
15
+ "./client/global": {
16
+ "types": "./dist/client/global/index.d.ts",
17
+ "import": "./dist/client/global/index.mjs",
18
+ "default": "./dist/client/global/index.mjs"
19
+ },
20
+ "./client/cart": {
21
+ "types": "./dist/client/cart/index.d.ts",
22
+ "import": "./dist/client/cart/index.mjs",
23
+ "default": "./dist/client/cart/index.mjs"
24
+ },
25
+ "./client/icons": {
26
+ "types": "./dist/client/icons/index.d.ts",
27
+ "import": "./dist/client/icons/index.mjs",
28
+ "default": "./dist/client/icons/index.mjs"
29
+ },
30
+ "./client/search": {
31
+ "types": "./dist/client/search/index.d.ts",
32
+ "import": "./dist/client/search/index.mjs",
33
+ "default": "./dist/client/search/index.mjs"
34
+ },
35
+ "./client/storefront": {
36
+ "types": "./dist/client/storefront/index.d.ts",
37
+ "import": "./dist/client/storefront/index.mjs",
38
+ "default": "./dist/client/storefront/index.mjs"
39
+ },
40
+ "./client/user": {
41
+ "types": "./dist/client/user/index.d.ts",
42
+ "import": "./dist/client/user/index.mjs",
43
+ "default": "./dist/client/user/index.mjs"
44
+ },
45
+ "./client/wishlist": {
46
+ "types": "./dist/client/wishlist/index.d.ts",
47
+ "import": "./dist/client/wishlist/index.mjs",
48
+ "default": "./dist/client/wishlist/index.mjs"
49
+ },
50
+ "./client/theme": {
51
+ "types": "./dist/client/theme/index.d.ts",
52
+ "import": "./dist/client/theme/index.mjs",
53
+ "default": "./dist/client/theme/index.mjs"
54
+ },
15
55
  "./client/*": {
16
56
  "types": "./dist/client/*.d.ts",
17
57
  "import": "./dist/client/*.mjs",
18
58
  "default": "./dist/client/*.mjs"
19
59
  }
20
60
  },
21
- "license": "MIT",
22
- "scripts": {
23
- "build:pack": "tsup",
24
- "dev:pack": "tsup --watch",
25
- "check-types": "tsc --noEmit",
26
- "lint": "eslint src --max-warnings 0",
27
- "build:styles": "tailwindcss -i ./src/styles.css -o ./dist/styles.css --minify",
28
- "dev:styles": "tailwindcss -i ./src/styles.css -o ./dist/styles.css --watch"
61
+ "bin": {
62
+ "enad-theme": "./dist/client/theme/cli.mjs"
29
63
  },
64
+ "license": "MIT",
30
65
  "peerDependencies": {
31
66
  "@tanstack/react-query": "^5.0.0",
32
67
  "next": "^16.0.0",
@@ -34,31 +69,48 @@
34
69
  "react-dom": "^19"
35
70
  },
36
71
  "devDependencies": {
37
- "@repo/eslint-config": "workspace:*",
38
- "@repo/tailwind-config": "workspace:*",
39
- "@repo/typescript-config": "workspace:*",
72
+ "@storybook/addon-docs": "^10.0.2",
40
73
  "@storybook/addon-essentials": "^8.6.14",
41
74
  "@storybook/react": "^10.0.2",
42
- "@storybook/addon-docs": "^10.0.2",
43
75
  "@tailwindcss/cli": "^4.1.5",
44
76
  "@types/node": "^24.10.0",
45
77
  "@types/react": "^19.1.0",
46
78
  "eslint": "^9.38.0",
79
+ "msw": "^2.11.6",
80
+ "msw-storybook-addon": "^2.0.6",
47
81
  "next": "^16.0.0",
48
82
  "react-dom": "^19",
49
83
  "tailwindcss": "^4.1.5",
50
84
  "tsup": "^8.5.0",
51
85
  "typescript": "5.9.2",
52
- "msw": "^2.11.6",
53
- "msw-storybook-addon": "^2.0.6"
86
+ "@repo/eslint-config": "0.0.0",
87
+ "@repo/tailwind-config": "0.0.0",
88
+ "@repo/typescript-config": "0.0.0"
54
89
  },
55
90
  "dependencies": {
56
- "@enadhq/enad-ts-sdk": "workspace:*",
57
91
  "@hookform/resolvers": "^3.9.1",
92
+ "@hugeicons/core-free-icons": "^4.0.0",
93
+ "@hugeicons/react": "^1.1.6",
94
+ "@msgpack/msgpack": "^3.1.3",
95
+ "@phosphor-icons/react": "^2.1.10",
58
96
  "@storyblok/react": "^4.0.0",
59
97
  "@tanstack/react-query": "^5.90.5",
98
+ "class-variance-authority": "^0.7.1",
99
+ "clsx": "^2.1.1",
100
+ "embla-carousel-react": "^8.6.0",
60
101
  "lucide-react": "^0.552.0",
102
+ "radix-ui": "^1.4.3",
61
103
  "react-hook-form": "^7.53.0",
62
- "zod": "^4.1.12"
104
+ "tailwind-merge": "^3.5.0",
105
+ "zod": "^4.1.12",
106
+ "@enadhq/enad-ts-sdk": "0.16.3"
107
+ },
108
+ "scripts": {
109
+ "build:pack": "tsup && tsc --project tsconfig.build.json",
110
+ "dev:pack": "tsup --watch",
111
+ "check-types": "tsc --noEmit",
112
+ "lint": "eslint src --max-warnings 0",
113
+ "build:styles": "tailwindcss -i ./src/styles.css -o ./dist/styles.css --minify",
114
+ "dev:styles": "tailwindcss -i ./src/styles.css -o ./dist/styles.css --watch"
63
115
  }
64
- }
116
+ }
@@ -1,19 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
-
3
- interface CartDrawerProps {
4
- isOpen: boolean;
5
- onClose: () => void;
6
- labels?: {
7
- title?: string;
8
- emptyCartMessage?: string;
9
- continueShopping?: string;
10
- subtotal?: string;
11
- discount?: string;
12
- tax?: string;
13
- total?: string;
14
- proceedToCheckout?: string;
15
- };
16
- }
17
- declare function CartDrawer({ isOpen, onClose, labels }: CartDrawerProps): react_jsx_runtime.JSX.Element;
18
-
19
- export { CartDrawer };
@@ -1,180 +0,0 @@
1
- "use client";
2
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
- import { X, Minus, Plus, Trash2 } from "lucide-react";
4
- import Link from "next/link";
5
- import { useCart } from "../../cart/hooks/useCart";
6
- const Button = ({
7
- variant = "default",
8
- size = "default",
9
- className = "",
10
- children,
11
- ...props
12
- }) => {
13
- const baseClasses = "inline-flex items-center justify-center font-medium transition-colors disabled:opacity-50 disabled:pointer-events-none";
14
- const variantClasses = {
15
- default: "bg-(--enad-button-bg) text-(--enad-button-color) hover:bg-(--enad-button-hover-bg)",
16
- ghost: "bg-transparent hover:bg-(--enad-border-color)",
17
- outline: "border border-(--enad-border-color) bg-transparent hover:bg-(--enad-border-color)"
18
- };
19
- const sizeClasses = {
20
- default: "h-10 px-4 py-2 rounded-(--enad-border-radius)",
21
- lg: "h-12 px-6 py-3 rounded-(--enad-border-radius)",
22
- icon: "h-5 w-5 rounded-(--enad-border-radius)"
23
- };
24
- return /* @__PURE__ */ jsx(
25
- "button",
26
- {
27
- className: `${baseClasses} ${variantClasses[variant]} ${sizeClasses[size]} ${className}`,
28
- ...props,
29
- children
30
- }
31
- );
32
- };
33
- function CartDrawer({ isOpen, onClose, labels = {} }) {
34
- const {
35
- title = "Shopping Cart",
36
- emptyCartMessage = "Your cart is empty",
37
- continueShopping = "Continue Shopping",
38
- subtotal = "Subtotal",
39
- discount = "Discount",
40
- tax = "Tax",
41
- total = "Total",
42
- proceedToCheckout = "Proceed to Checkout"
43
- } = labels;
44
- const { cart, removeItem, updateItem } = useCart();
45
- const items = cart?.items || [];
46
- const totals = cart?.totals;
47
- const handleUpdateQuantity = (itemId, newQuantity) => {
48
- updateItem({ itemId, quantity: newQuantity });
49
- };
50
- const handleRemoveItem = (itemId) => {
51
- removeItem({ itemId });
52
- };
53
- const formatPrice = (amount) => {
54
- return `${(amount / 100).toFixed(2)} ${cart?.currencyCode || "USD"}`;
55
- };
56
- return /* @__PURE__ */ jsxs(Fragment, { children: [
57
- /* @__PURE__ */ jsx(
58
- "div",
59
- {
60
- className: `fixed font-enad inset-0 bg-black/60 backdrop-blur-sm z-50 transition-opacity duration-300 ${isOpen ? "opacity-100" : "opacity-0 pointer-events-none"}`,
61
- onClick: onClose
62
- }
63
- ),
64
- /* @__PURE__ */ jsx(
65
- "div",
66
- {
67
- className: `fixed top-0 right-0 h-full w-full md:w-[480px] bg-(--enad-surface) z-50 transform transition-transform duration-300 ease-in-out ${isOpen ? "translate-x-0" : "translate-x-full"}`,
68
- children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col h-full", children: [
69
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between p-6", children: [
70
- /* @__PURE__ */ jsx(
71
- "h2",
72
- {
73
- className: "text-xl font-bold tracking-wider uppercase text-(--enad-text-primary-color)",
74
- style: { fontFamily: "var(--font-oswald)" },
75
- children: title
76
- }
77
- ),
78
- /* @__PURE__ */ jsx(Button, { variant: "ghost", size: "icon", onClick: onClose, children: /* @__PURE__ */ jsx(X, { className: "h-5 w-5" }) })
79
- ] }),
80
- /* @__PURE__ */ jsx("div", { className: "flex-1 overflow-y-auto p-6", children: items.length === 0 ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center h-full text-center", children: [
81
- /* @__PURE__ */ jsx("p", { className: "text-(--enad-text-muted-color) mb-4", children: emptyCartMessage }),
82
- /* @__PURE__ */ jsx(Button, { onClick: onClose, variant: "outline", children: continueShopping })
83
- ] }) : /* @__PURE__ */ jsx("div", { className: "space-y-6", children: items.map((item) => /* @__PURE__ */ jsxs("div", { className: "flex gap-4", children: [
84
- /* @__PURE__ */ jsx("div", { className: "relative w-24 h-24 flex-shrink-0 bg-(--enad-border-color) rounded-(--enad-border-radius) overflow-hidden", children: item.imageUrl ? /* @__PURE__ */ jsx(
85
- "img",
86
- {
87
- src: item.imageUrl || "/placeholder.svg",
88
- alt: item.displayName,
89
- className: "object-cover"
90
- }
91
- ) : /* @__PURE__ */ jsx("div", { className: "w-full h-full bg-(--enad-border-color)" }) }),
92
- /* @__PURE__ */ jsxs("div", { className: "flex flex-1 min-w-0 justify-between flex-col", children: [
93
- /* @__PURE__ */ jsxs("div", { className: "flex justify-between gap-2 mb-2", children: [
94
- /* @__PURE__ */ jsx(
95
- Link,
96
- {
97
- href: `/products/${item.customAttributes?.productSlug || item.productVariantId}`,
98
- className: "font-medium text-sm text-(--enad-link-color) hover:text-(--enad-link-hover-color) transition-colors",
99
- onClick: onClose,
100
- children: item.displayName
101
- }
102
- ),
103
- /* @__PURE__ */ jsx(
104
- Button,
105
- {
106
- variant: "ghost",
107
- size: "icon",
108
- className: "h-5 w-5 flex-shrink-0",
109
- onClick: () => handleRemoveItem(item.id),
110
- children: /* @__PURE__ */ jsx(Trash2, { className: "h-4 w-4" })
111
- }
112
- )
113
- ] }),
114
- /* @__PURE__ */ jsxs("div", { children: [
115
- /* @__PURE__ */ jsx("p", { className: "text-sm text-(--enad-text-muted-color) mb-1", children: formatPrice(item.salePriceAmount) }),
116
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
117
- /* @__PURE__ */ jsx(
118
- Button,
119
- {
120
- variant: "outline",
121
- size: "icon",
122
- className: "h-5 w-5 bg-transparent",
123
- onClick: () => handleUpdateQuantity(item.id, item.quantity - 1),
124
- disabled: item.quantity <= 1,
125
- children: /* @__PURE__ */ jsx(Minus, { className: "h-3 w-3" })
126
- }
127
- ),
128
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium w-8 text-center text-(--enad-text-primary-color)", children: item.quantity }),
129
- /* @__PURE__ */ jsx(
130
- Button,
131
- {
132
- variant: "outline",
133
- size: "icon",
134
- className: "h-5 w-5 bg-transparent",
135
- onClick: () => handleUpdateQuantity(item.id, item.quantity + 1),
136
- children: /* @__PURE__ */ jsx(Plus, { className: "h-3 w-3" })
137
- }
138
- )
139
- ] })
140
- ] })
141
- ] })
142
- ] }, item.id)) }) }),
143
- items.length > 0 && totals && /* @__PURE__ */ jsxs("div", { className: " p-6 space-y-4", children: [
144
- /* @__PURE__ */ jsxs("div", { className: "flex justify-between text-sm", children: [
145
- /* @__PURE__ */ jsx("span", { className: "text-(--enad-text-muted-color)", children: subtotal }),
146
- /* @__PURE__ */ jsx("span", { className: "text-(--enad-text-primary-color)", children: formatPrice(totals.subTotal) })
147
- ] }),
148
- totals.discountTotal > 0 && /* @__PURE__ */ jsxs("div", { className: "flex justify-between text-sm", children: [
149
- /* @__PURE__ */ jsx("span", { className: "text-(--enad-text-muted-color)", children: discount }),
150
- /* @__PURE__ */ jsxs("span", { className: "text-(--enad-success-color)", children: [
151
- "-",
152
- formatPrice(totals.discountTotal)
153
- ] })
154
- ] }),
155
- totals.taxTotal > 0 && /* @__PURE__ */ jsxs("div", { className: "flex justify-between text-sm", children: [
156
- /* @__PURE__ */ jsx("span", { className: "text-(--enad-text-muted-color)", children: tax }),
157
- /* @__PURE__ */ jsx("span", { className: "text-(--enad-text-primary-color)", children: formatPrice(totals.taxTotal) })
158
- ] }),
159
- /* @__PURE__ */ jsxs("div", { className: "flex justify-between text-lg font-bold pt-4 border-t border-(--enad-border-color)", children: [
160
- /* @__PURE__ */ jsx("span", { className: "text-(--enad-text-primary-color)", children: total }),
161
- /* @__PURE__ */ jsx("span", { className: "text-(--enad-text-primary-color)", children: formatPrice(totals.grandTotal) })
162
- ] }),
163
- /* @__PURE__ */ jsx(
164
- Button,
165
- {
166
- className: "w-full py-6 text-sm font-medium uppercase tracking-wider",
167
- size: "lg",
168
- children: proceedToCheckout
169
- }
170
- )
171
- ] })
172
- ] })
173
- }
174
- )
175
- ] });
176
- }
177
- export {
178
- CartDrawer
179
- };
180
- //# sourceMappingURL=cart-drawer.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/cart/components/cart-drawer.tsx"],"sourcesContent":["\"use client\"\n\nimport { X, Minus, Plus, Trash2 } from \"lucide-react\"\nimport Link from \"next/link\"\nimport { useCart } from \"../../cart/hooks/useCart\"\n\ninterface CartDrawerProps {\n isOpen: boolean\n onClose: () => void\n labels?: {\n title?: string\n emptyCartMessage?: string\n continueShopping?: string\n subtotal?: string\n discount?: string\n tax?: string\n total?: string\n proceedToCheckout?: string\n }\n}\n\n// Inline Button Component\ninterface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: \"ghost\" | \"outline\" | \"default\"\n size?: \"icon\" | \"lg\" | \"default\"\n children: React.ReactNode\n}\n\nconst Button = ({\n variant = \"default\",\n size = \"default\",\n className = \"\",\n children,\n ...props\n}: ButtonProps) => {\n const baseClasses =\n \"inline-flex items-center justify-center font-medium transition-colors disabled:opacity-50 disabled:pointer-events-none\"\n\n const variantClasses = {\n default: \"bg-(--enad-button-bg) text-(--enad-button-color) hover:bg-(--enad-button-hover-bg)\",\n ghost: \"bg-transparent hover:bg-(--enad-border-color)\",\n outline: \"border border-(--enad-border-color) bg-transparent hover:bg-(--enad-border-color)\",\n }\n\n const sizeClasses = {\n default: \"h-10 px-4 py-2 rounded-(--enad-border-radius)\",\n lg: \"h-12 px-6 py-3 rounded-(--enad-border-radius)\",\n icon: \"h-5 w-5 rounded-(--enad-border-radius)\",\n }\n\n return (\n <button\n className={`${baseClasses} ${variantClasses[variant]} ${sizeClasses[size]} ${className}`}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nexport function CartDrawer({ isOpen, onClose, labels = {} }: CartDrawerProps) {\n const {\n title = \"Shopping Cart\",\n emptyCartMessage = \"Your cart is empty\",\n continueShopping = \"Continue Shopping\",\n subtotal = \"Subtotal\",\n discount = \"Discount\",\n tax = \"Tax\",\n total = \"Total\",\n proceedToCheckout = \"Proceed to Checkout\",\n } = labels\n const { cart, removeItem, updateItem } = useCart()\n\n const items = cart?.items || []\n const totals = cart?.totals\n\n const handleUpdateQuantity = (itemId: string, newQuantity: number) => {\n updateItem({ itemId, quantity: newQuantity })\n }\n\n const handleRemoveItem = (itemId: string) => {\n removeItem({ itemId })\n }\n\n const formatPrice = (amount: number) => {\n return `${(amount / 100).toFixed(2)} ${cart?.currencyCode || \"USD\"}`\n }\n\n return (\n <>\n {/* Backdrop */}\n <div\n className={`fixed font-enad inset-0 bg-black/60 backdrop-blur-sm z-50 transition-opacity duration-300 ${\n isOpen ? \"opacity-100\" : \"opacity-0 pointer-events-none\"\n }`}\n onClick={onClose}\n />\n\n {/* Drawer */}\n <div\n className={`fixed top-0 right-0 h-full w-full md:w-[480px] bg-(--enad-surface) z-50 transform transition-transform duration-300 ease-in-out ${\n isOpen ? \"translate-x-0\" : \"translate-x-full\"\n }`}\n >\n <div className=\"flex flex-col h-full\">\n {/* Header */}\n <div className=\"flex items-center justify-between p-6\">\n <h2\n className=\"text-xl font-bold tracking-wider uppercase text-(--enad-text-primary-color)\"\n style={{ fontFamily: \"var(--font-oswald)\" }}\n >\n {title}\n </h2>\n <Button variant=\"ghost\" size=\"icon\" onClick={onClose}>\n <X className=\"h-5 w-5\" />\n </Button>\n </div>\n\n {/* Cart Items */}\n <div className=\"flex-1 overflow-y-auto p-6\">\n {items.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center h-full text-center\">\n <p className=\"text-(--enad-text-muted-color) mb-4\">{emptyCartMessage}</p>\n <Button onClick={onClose} variant=\"outline\">\n {continueShopping}\n </Button>\n </div>\n ) : (\n <div className=\"space-y-6\">\n {items.map((item) => (\n <div key={item.id} className=\"flex gap-4\">\n {/* Product Image */}\n <div className=\"relative w-24 h-24 flex-shrink-0 bg-(--enad-border-color) rounded-(--enad-border-radius) overflow-hidden\">\n {item.imageUrl ? (\n <img\n src={item.imageUrl || \"/placeholder.svg\"}\n alt={item.displayName}\n className=\"object-cover\"\n />\n ) : (\n <div className=\"w-full h-full bg-(--enad-border-color)\" />\n )}\n </div>\n\n {/* Product Info */}\n <div className=\"flex flex-1 min-w-0 justify-between flex-col\">\n <div className=\"flex justify-between gap-2 mb-2\">\n <Link\n href={`/products/${item.customAttributes?.productSlug || item.productVariantId}`}\n className=\"font-medium text-sm text-(--enad-link-color) hover:text-(--enad-link-hover-color) transition-colors\"\n onClick={onClose}\n >\n {item.displayName}\n </Link>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-5 w-5 flex-shrink-0\"\n onClick={() => handleRemoveItem(item.id)}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div>\n <p className=\"text-sm text-(--enad-text-muted-color) mb-1\">\n {formatPrice(item.salePriceAmount)}\n </p>\n\n {/* Quantity Controls */}\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-5 w-5 bg-transparent\"\n onClick={() => handleUpdateQuantity(item.id, item.quantity - 1)}\n disabled={item.quantity <= 1}\n >\n <Minus className=\"h-3 w-3\" />\n </Button>\n <span className=\"text-sm font-medium w-8 text-center text-(--enad-text-primary-color)\">\n {item.quantity}\n </span>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-5 w-5 bg-transparent\"\n onClick={() => handleUpdateQuantity(item.id, item.quantity + 1)}\n >\n <Plus className=\"h-3 w-3\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n\n {/* Footer with Totals */}\n {items.length > 0 && totals && (\n <div className=\" p-6 space-y-4\">\n {/* Subtotal */}\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-(--enad-text-muted-color)\">{subtotal}</span>\n <span className=\"text-(--enad-text-primary-color)\">\n {formatPrice(totals.subTotal)}\n </span>\n </div>\n\n {/* Discount */}\n {totals.discountTotal > 0 && (\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-(--enad-text-muted-color)\">{discount}</span>\n <span className=\"text-(--enad-success-color)\">\n -{formatPrice(totals.discountTotal)}\n </span>\n </div>\n )}\n\n {/* Tax */}\n {totals.taxTotal > 0 && (\n <div className=\"flex justify-between text-sm\">\n <span className=\"text-(--enad-text-muted-color)\">{tax}</span>\n <span className=\"text-(--enad-text-primary-color)\">\n {formatPrice(totals.taxTotal)}\n </span>\n </div>\n )}\n\n {/* Total */}\n <div className=\"flex justify-between text-lg font-bold pt-4 border-t border-(--enad-border-color)\">\n <span className=\"text-(--enad-text-primary-color)\">{total}</span>\n <span className=\"text-(--enad-text-primary-color)\">\n {formatPrice(totals.grandTotal)}\n </span>\n </div>\n\n {/* Checkout Button */}\n <Button\n className=\"w-full py-6 text-sm font-medium uppercase tracking-wider\"\n size=\"lg\"\n >\n {proceedToCheckout}\n </Button>\n </div>\n )}\n </div>\n </div>\n </>\n )\n}\n"],"mappings":"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","names":[]}
@@ -1,5 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
-
3
- declare const CartTrigger: () => react_jsx_runtime.JSX.Element;
4
-
5
- export { CartTrigger };
@@ -1,18 +0,0 @@
1
- "use client";
2
- import { jsx } from "react/jsx-runtime";
3
- import { useState } from "react";
4
- const CartTrigger = () => {
5
- const [isOpen, setIsOpen] = useState(false);
6
- return /* @__PURE__ */ jsx(
7
- "button",
8
- {
9
- className: "mb-4 px-4 py-2 bg-(--enad-button-bg) hover:bg-(--enad-button-hover-bg) text-(--enad-button-color) rounded-(--enad-border-radius)",
10
- onClick: () => setIsOpen((prev) => !prev),
11
- children: "Toggle Cart"
12
- }
13
- );
14
- };
15
- export {
16
- CartTrigger
17
- };
18
- //# sourceMappingURL=cart-trigger.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/cart/components/cart-trigger.tsx"],"sourcesContent":["\"use client\"\nimport { useState } from \"react\"\n\nexport const CartTrigger = () => {\n const [isOpen, setIsOpen] = useState(false)\n\n return (\n <button\n className=\"mb-4 px-4 py-2 bg-(--enad-button-bg) hover:bg-(--enad-button-hover-bg) text-(--enad-button-color) rounded-(--enad-border-radius)\"\n onClick={() => setIsOpen((prev) => !prev)}\n >\n Toggle Cart\n </button>\n )\n}\n"],"mappings":";AAOI;AANJ,SAAS,gBAAgB;AAElB,MAAM,cAAc,MAAM;AAC/B,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAE1C,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,SAAS,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI;AAAA,MACzC;AAAA;AAAA,EAED;AAEJ;","names":[]}
@@ -1,3 +0,0 @@
1
- declare const CART_SESSION_KEY = "brink_cart_session";
2
-
3
- export { CART_SESSION_KEY };
@@ -1,5 +0,0 @@
1
- const CART_SESSION_KEY = "brink_cart_session";
2
- export {
3
- CART_SESSION_KEY
4
- };
5
- //# sourceMappingURL=session.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/cart/constants/session.ts"],"sourcesContent":["export const CART_SESSION_KEY = \"brink_cart_session\"\n"],"mappings":"AAAO,MAAM,mBAAmB;","names":[]}
@@ -1,27 +0,0 @@
1
- import React__default from 'react';
2
-
3
- /**
4
- * BrinkConfig defines the configuration needed for the cart context.
5
- */
6
- interface BrinkConfig {
7
- /**
8
- * Brink environment identifier.
9
- */
10
- env: string;
11
- /**
12
- * Store group identifier.
13
- */
14
- storeGroupId: string;
15
- /**
16
- * Country code (e.g., "US").
17
- */
18
- countryCode: string;
19
- /**
20
- * Language code (e.g., "en").
21
- */
22
- languageCode: string;
23
- }
24
- declare const CartProvider: React__default.FC<React__default.PropsWithChildren<BrinkConfig>>;
25
- declare const useBrinkConfig: () => BrinkConfig;
26
-
27
- export { type BrinkConfig, CartProvider, useBrinkConfig };
@@ -1,22 +0,0 @@
1
- import { jsx } from "react/jsx-runtime";
2
- import { createContext, useContext } from "react";
3
- const CartContext = createContext(void 0);
4
- const CartProvider = ({
5
- children,
6
- env,
7
- storeGroupId,
8
- countryCode,
9
- languageCode
10
- }) => {
11
- return /* @__PURE__ */ jsx(CartContext.Provider, { value: { env, storeGroupId, countryCode, languageCode }, children });
12
- };
13
- const useBrinkConfig = () => {
14
- const context = useContext(CartContext);
15
- if (!context) throw new Error("useBrinkConfig must be used inside a CartProvider");
16
- return context;
17
- };
18
- export {
19
- CartProvider,
20
- useBrinkConfig
21
- };
22
- //# sourceMappingURL=cart.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/cart/contexts/cart.tsx"],"sourcesContent":["import React, { createContext, useContext } from \"react\"\n\n/**\n * BrinkConfig defines the configuration needed for the cart context.\n */\nexport interface BrinkConfig {\n /**\n * Brink environment identifier.\n */\n env: string\n /**\n * Store group identifier.\n */\n storeGroupId: string\n /**\n * Country code (e.g., \"US\").\n */\n countryCode: string\n /**\n * Language code (e.g., \"en\").\n */\n languageCode: string\n}\n\nconst CartContext = createContext<BrinkConfig | undefined>(undefined)\n\nexport const CartProvider: React.FC<React.PropsWithChildren<BrinkConfig>> = ({\n children,\n env,\n storeGroupId,\n countryCode,\n languageCode,\n}) => {\n return (\n <CartContext.Provider value={{ env, storeGroupId, countryCode, languageCode }}>\n {children}\n </CartContext.Provider>\n )\n}\n\nexport const useBrinkConfig = (): BrinkConfig => {\n const context = useContext(CartContext)\n if (!context) throw new Error(\"useBrinkConfig must be used inside a CartProvider\")\n return context\n}\n"],"mappings":"AAkCI;AAlCJ,SAAgB,eAAe,kBAAkB;AAwBjD,MAAM,cAAc,cAAuC,MAAS;AAE7D,MAAM,eAA+D,CAAC;AAAA,EAC3E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SACE,oBAAC,YAAY,UAAZ,EAAqB,OAAO,EAAE,KAAK,cAAc,aAAa,aAAa,GACzE,UACH;AAEJ;AAEO,MAAM,iBAAiB,MAAmB;AAC/C,QAAM,UAAU,WAAW,WAAW;AACtC,MAAI,CAAC,QAAS,OAAM,IAAI,MAAM,mDAAmD;AACjF,SAAO;AACT;","names":[]}
@@ -1,29 +0,0 @@
1
- import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { CartResponse, Cart } from '../types/cart.mjs';
3
-
4
- /**
5
- * Hook to manage cart state and actions.
6
- * Provides the current cart, loading states, and functions to modify the cart.
7
- */
8
- declare const useCart: () => {
9
- addItem: _tanstack_react_query.UseMutateAsyncFunction<CartResponse, Error, {
10
- productVariantId: string;
11
- quantity?: number;
12
- }, unknown>;
13
- updateItem: _tanstack_react_query.UseMutateAsyncFunction<CartResponse, Error, {
14
- itemId: string;
15
- quantity: number;
16
- }, unknown>;
17
- removeItem: _tanstack_react_query.UseMutateAsyncFunction<CartResponse, Error, {
18
- itemId: string;
19
- }, unknown>;
20
- isAdding: boolean;
21
- isUpdating: boolean;
22
- isRemoving: boolean;
23
- cart: Cart | undefined;
24
- isLoading: boolean;
25
- isFetching: boolean;
26
- refreshCart: (options?: _tanstack_react_query.RefetchOptions) => Promise<_tanstack_react_query.QueryObserverResult<CartResponse, Error>>;
27
- };
28
-
29
- export { useCart };
@@ -1,26 +0,0 @@
1
- import { useQuery } from "@tanstack/react-query";
2
- import { CACHE_TAGS } from "../../global/constants/tags";
3
- import { useBrinkConfig } from "../contexts/cart";
4
- import { getCartQueryFn } from "../queries/getCartQueryFn";
5
- import { useCartActions } from "./useCartActions";
6
- const useCart = () => {
7
- const brinkConfig = useBrinkConfig();
8
- const getCartQuery = useQuery({
9
- queryKey: [CACHE_TAGS.cart],
10
- queryFn: getCartQueryFn(brinkConfig),
11
- refetchOnMount: false
12
- });
13
- const currentCart = getCartQuery.data;
14
- const cartActions = useCartActions(brinkConfig, currentCart);
15
- return {
16
- cart: currentCart?.cart,
17
- isLoading: getCartQuery.isLoading,
18
- isFetching: getCartQuery.isFetching,
19
- refreshCart: getCartQuery.refetch,
20
- ...cartActions
21
- };
22
- };
23
- export {
24
- useCart
25
- };
26
- //# sourceMappingURL=useCart.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/cart/hooks/useCart.tsx"],"sourcesContent":["import { useQuery } from \"@tanstack/react-query\"\nimport { CACHE_TAGS } from \"../../global/constants/tags\"\nimport { useBrinkConfig } from \"../contexts/cart\"\nimport { getCartQueryFn } from \"../queries/getCartQueryFn\"\nimport { useCartActions } from \"./useCartActions\"\n\n/**\n * Hook to manage cart state and actions.\n * Provides the current cart, loading states, and functions to modify the cart.\n */\nexport const useCart = () => {\n const brinkConfig = useBrinkConfig()\n\n const getCartQuery = useQuery({\n queryKey: [CACHE_TAGS.cart],\n queryFn: getCartQueryFn(brinkConfig),\n refetchOnMount: false,\n })\n\n const currentCart = getCartQuery.data\n\n const cartActions = useCartActions(brinkConfig, currentCart)\n\n return {\n cart: currentCart?.cart,\n isLoading: getCartQuery.isLoading,\n isFetching: getCartQuery.isFetching,\n refreshCart: getCartQuery.refetch,\n ...cartActions,\n }\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAC/B,SAAS,sBAAsB;AAMxB,MAAM,UAAU,MAAM;AAC3B,QAAM,cAAc,eAAe;AAEnC,QAAM,eAAe,SAAS;AAAA,IAC5B,UAAU,CAAC,WAAW,IAAI;AAAA,IAC1B,SAAS,eAAe,WAAW;AAAA,IACnC,gBAAgB;AAAA,EAClB,CAAC;AAED,QAAM,cAAc,aAAa;AAEjC,QAAM,cAAc,eAAe,aAAa,WAAW;AAE3D,SAAO;AAAA,IACL,MAAM,aAAa;AAAA,IACnB,WAAW,aAAa;AAAA,IACxB,YAAY,aAAa;AAAA,IACzB,aAAa,aAAa;AAAA,IAC1B,GAAG;AAAA,EACL;AACF;","names":[]}
@@ -1,26 +0,0 @@
1
- import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { BrinkConfig } from '../contexts/cart.mjs';
3
- import { CartResponse } from '../types/cart.mjs';
4
- import 'react';
5
-
6
- /**
7
- * Hook to provide cart action mutations: add, update, and remove items.
8
- */
9
- declare const useCartActions: (brinkConfig: BrinkConfig, currentCart: CartResponse | undefined) => {
10
- addItem: _tanstack_react_query.UseMutateAsyncFunction<CartResponse, Error, {
11
- productVariantId: string;
12
- quantity?: number;
13
- }, unknown>;
14
- updateItem: _tanstack_react_query.UseMutateAsyncFunction<CartResponse, Error, {
15
- itemId: string;
16
- quantity: number;
17
- }, unknown>;
18
- removeItem: _tanstack_react_query.UseMutateAsyncFunction<CartResponse, Error, {
19
- itemId: string;
20
- }, unknown>;
21
- isAdding: boolean;
22
- isUpdating: boolean;
23
- isRemoving: boolean;
24
- };
25
-
26
- export { useCartActions };
@@ -1,58 +0,0 @@
1
- import { useMutation, useQueryClient } from "@tanstack/react-query";
2
- import { CACHE_TAGS } from "../../global/constants/tags";
3
- import { addToCartQueryFn } from "../queries/addToCartQueryFn";
4
- import { removeCartItemQueryFn } from "../queries/removeCartItemQueryFn";
5
- import { updateCartItemFn } from "../queries/updateCartItemQueryFn";
6
- const useCartActions = (brinkConfig, currentCart) => {
7
- const queryClient = useQueryClient();
8
- const addItemMutation = useMutation({
9
- mutationFn: async ({
10
- productVariantId,
11
- quantity = 1
12
- }) => {
13
- const existingItem = currentCart?.cart.items.find(
14
- (i) => i.productVariantId === productVariantId
15
- );
16
- if (existingItem) {
17
- return updateCartItemFn(brinkConfig)({
18
- itemId: existingItem.id,
19
- quantity: existingItem.quantity + quantity
20
- });
21
- } else {
22
- return addToCartQueryFn(brinkConfig)({ productVariantId, quantity });
23
- }
24
- },
25
- onSuccess: (data) => {
26
- queryClient.setQueryData([CACHE_TAGS.cart], data);
27
- }
28
- });
29
- const updateItemMutation = useMutation({
30
- mutationFn: async ({ itemId, quantity }) => {
31
- if (quantity <= 0) {
32
- return removeCartItemQueryFn(brinkConfig)({ itemId });
33
- }
34
- return updateCartItemFn(brinkConfig)({ itemId, quantity });
35
- },
36
- onSuccess: (data) => {
37
- queryClient.setQueryData([CACHE_TAGS.cart], data);
38
- }
39
- });
40
- const removeItemMutation = useMutation({
41
- mutationFn: async ({ itemId }) => removeCartItemQueryFn(brinkConfig)({ itemId }),
42
- onSuccess: (data) => {
43
- queryClient.setQueryData([CACHE_TAGS.cart], data);
44
- }
45
- });
46
- return {
47
- addItem: addItemMutation.mutateAsync,
48
- updateItem: updateItemMutation.mutateAsync,
49
- removeItem: removeItemMutation.mutateAsync,
50
- isAdding: addItemMutation.isPending,
51
- isUpdating: updateItemMutation.isPending,
52
- isRemoving: removeItemMutation.isPending
53
- };
54
- };
55
- export {
56
- useCartActions
57
- };
58
- //# sourceMappingURL=useCartActions.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../src/client/cart/hooks/useCartActions.tsx"],"sourcesContent":["// cartService.ts\nimport { useMutation, useQueryClient } from \"@tanstack/react-query\"\nimport { CACHE_TAGS } from \"../../global/constants/tags\"\nimport { BrinkConfig } from \"../contexts/cart\"\nimport { addToCartQueryFn } from \"../queries/addToCartQueryFn\"\nimport { removeCartItemQueryFn } from \"../queries/removeCartItemQueryFn\"\nimport { updateCartItemFn } from \"../queries/updateCartItemQueryFn\"\nimport { CartResponse } from \"../types/cart\"\n\n/**\n * Hook to provide cart action mutations: add, update, and remove items.\n */\nexport const useCartActions = (brinkConfig: BrinkConfig, currentCart: CartResponse | undefined) => {\n const queryClient = useQueryClient()\n\n // Logic for adding item\n const addItemMutation = useMutation({\n mutationFn: async ({\n productVariantId,\n quantity = 1,\n }: {\n productVariantId: string\n quantity?: number\n }) => {\n const existingItem = currentCart?.cart.items.find(\n (i) => i.productVariantId === productVariantId\n )\n\n // If we already have the item, increment quantity instead of adding a new one.\n if (existingItem) {\n return updateCartItemFn(brinkConfig)({\n itemId: existingItem.id,\n quantity: existingItem.quantity + quantity,\n })\n } else {\n return addToCartQueryFn(brinkConfig)({ productVariantId, quantity })\n }\n },\n onSuccess: (data) => {\n queryClient.setQueryData([CACHE_TAGS.cart], data)\n },\n })\n\n // Update item mutation\n const updateItemMutation = useMutation({\n mutationFn: async ({ itemId, quantity }: { itemId: string; quantity: number }) => {\n // If quantity is zero or less, remove the item\n if (quantity <= 0) {\n return removeCartItemQueryFn(brinkConfig)({ itemId })\n }\n return updateCartItemFn(brinkConfig)({ itemId, quantity })\n },\n onSuccess: (data) => {\n queryClient.setQueryData([CACHE_TAGS.cart], data)\n },\n })\n\n // Remove item mutation\n const removeItemMutation = useMutation({\n mutationFn: async ({ itemId }: { itemId: string }) =>\n removeCartItemQueryFn(brinkConfig)({ itemId }),\n onSuccess: (data) => {\n queryClient.setQueryData([CACHE_TAGS.cart], data)\n },\n })\n\n return {\n addItem: addItemMutation.mutateAsync,\n updateItem: updateItemMutation.mutateAsync,\n removeItem: removeItemMutation.mutateAsync,\n isAdding: addItemMutation.isPending,\n isUpdating: updateItemMutation.isPending,\n isRemoving: removeItemMutation.isPending,\n }\n}\n"],"mappings":"AACA,SAAS,aAAa,sBAAsB;AAC5C,SAAS,kBAAkB;AAE3B,SAAS,wBAAwB;AACjC,SAAS,6BAA6B;AACtC,SAAS,wBAAwB;AAM1B,MAAM,iBAAiB,CAAC,aAA0B,gBAA0C;AACjG,QAAM,cAAc,eAAe;AAGnC,QAAM,kBAAkB,YAAY;AAAA,IAClC,YAAY,OAAO;AAAA,MACjB;AAAA,MACA,WAAW;AAAA,IACb,MAGM;AACJ,YAAM,eAAe,aAAa,KAAK,MAAM;AAAA,QAC3C,CAAC,MAAM,EAAE,qBAAqB;AAAA,MAChC;AAGA,UAAI,cAAc;AAChB,eAAO,iBAAiB,WAAW,EAAE;AAAA,UACnC,QAAQ,aAAa;AAAA,UACrB,UAAU,aAAa,WAAW;AAAA,QACpC,CAAC;AAAA,MACH,OAAO;AACL,eAAO,iBAAiB,WAAW,EAAE,EAAE,kBAAkB,SAAS,CAAC;AAAA,MACrE;AAAA,IACF;AAAA,IACA,WAAW,CAAC,SAAS;AACnB,kBAAY,aAAa,CAAC,WAAW,IAAI,GAAG,IAAI;AAAA,IAClD;AAAA,EACF,CAAC;AAGD,QAAM,qBAAqB,YAAY;AAAA,IACrC,YAAY,OAAO,EAAE,QAAQ,SAAS,MAA4C;AAEhF,UAAI,YAAY,GAAG;AACjB,eAAO,sBAAsB,WAAW,EAAE,EAAE,OAAO,CAAC;AAAA,MACtD;AACA,aAAO,iBAAiB,WAAW,EAAE,EAAE,QAAQ,SAAS,CAAC;AAAA,IAC3D;AAAA,IACA,WAAW,CAAC,SAAS;AACnB,kBAAY,aAAa,CAAC,WAAW,IAAI,GAAG,IAAI;AAAA,IAClD;AAAA,EACF,CAAC;AAGD,QAAM,qBAAqB,YAAY;AAAA,IACrC,YAAY,OAAO,EAAE,OAAO,MAC1B,sBAAsB,WAAW,EAAE,EAAE,OAAO,CAAC;AAAA,IAC/C,WAAW,CAAC,SAAS;AACnB,kBAAY,aAAa,CAAC,WAAW,IAAI,GAAG,IAAI;AAAA,IAClD;AAAA,EACF,CAAC;AAED,SAAO;AAAA,IACL,SAAS,gBAAgB;AAAA,IACzB,YAAY,mBAAmB;AAAA,IAC/B,YAAY,mBAAmB;AAAA,IAC/B,UAAU,gBAAgB;AAAA,IAC1B,YAAY,mBAAmB;AAAA,IAC/B,YAAY,mBAAmB;AAAA,EACjC;AACF;","names":[]}
@@ -1,10 +0,0 @@
1
- import { BrinkConfig } from '../contexts/cart.mjs';
2
- import { CartResponse } from '../types/cart.mjs';
3
- import 'react';
4
-
5
- declare const addToCartQueryFn: (brinkConfig: BrinkConfig) => ({ productVariantId, quantity, }: {
6
- productVariantId: string;
7
- quantity?: number;
8
- }) => Promise<CartResponse>;
9
-
10
- export { addToCartQueryFn };