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