@gfed-medusa/sf-lib-common 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/breadcrumbs/index.d.ts +4 -6
- package/dist/components/breadcrumbs/index.d.ts.map +1 -1
- package/dist/components/breadcrumbs/index.js.map +1 -1
- package/dist/components/cart-button/index.d.ts +2 -2
- package/dist/components/cart-button/index.d.ts.map +1 -1
- package/dist/components/cart-button/index.js +11 -17
- package/dist/components/cart-button/index.js.map +1 -0
- package/dist/components/cart-dropdown/index.d.ts +3 -3
- package/dist/components/cart-dropdown/index.d.ts.map +1 -1
- package/dist/components/cart-dropdown/index.js +193 -16
- package/dist/components/cart-dropdown/index.js.map +1 -0
- package/dist/components/cart-mismatch-banner/index.d.ts +3 -3
- package/dist/components/cart-mismatch-banner/index.d.ts.map +1 -1
- package/dist/components/cart-mismatch-banner/index.js +1 -8
- package/dist/components/cart-mismatch-banner/index.js.map +1 -1
- package/dist/components/country-select/index.d.ts +1 -1
- package/dist/components/delete-button/index.d.ts +2 -2
- package/dist/components/delete-button/index.js +27 -11
- package/dist/components/delete-button/index.js.map +1 -0
- package/dist/components/error-message/index.d.ts +2 -2
- package/dist/components/error-message/index.d.ts.map +1 -1
- package/dist/components/footer/index.d.ts +2 -2
- package/dist/components/footer/index.d.ts.map +1 -1
- package/dist/components/footer/index.js +5 -10
- package/dist/components/footer/index.js.map +1 -1
- package/dist/components/free-shipping-price-nudge/index.d.ts +3 -3
- package/dist/components/free-shipping-price-nudge/index.d.ts.map +1 -1
- package/dist/components/free-shipping-price-nudge/index.js +2 -2
- package/dist/components/interactive-link/index.d.ts +2 -2
- package/dist/components/interactive-link/index.js +1 -1
- package/dist/components/layout-country-select/index.d.ts +4 -4
- package/dist/components/layout-country-select/index.js +89 -11
- package/dist/components/layout-country-select/index.js.map +1 -0
- package/dist/components/line-item-options/index.d.ts +3 -3
- package/dist/components/line-item-options/index.js +15 -2
- package/dist/components/line-item-options/index.js.map +1 -0
- package/dist/components/line-item-price/index.d.ts +3 -3
- package/dist/components/line-item-price/index.d.ts.map +1 -1
- package/dist/components/line-item-price/index.js +46 -2
- package/dist/components/line-item-price/index.js.map +1 -0
- package/dist/components/localized-client-link/index.d.ts +5 -12
- package/dist/components/localized-client-link/index.d.ts.map +1 -1
- package/dist/components/localized-client-link/index.js +19 -2
- package/dist/components/localized-client-link/index.js.map +1 -0
- package/dist/components/modal/index.d.ts +2 -2
- package/dist/components/modal/index.js +101 -3
- package/dist/components/modal/index.js.map +1 -0
- package/dist/components/nav/index.d.ts +2 -2
- package/dist/components/nav/index.js +6 -25
- package/dist/components/nav/index.js.map +1 -1
- package/dist/components/portable-text/index.d.ts +3 -3
- package/dist/components/portable-text/index.js +329 -2
- package/dist/components/portable-text/index.js.map +1 -0
- package/dist/components/preview-price/index.d.ts +1 -1
- package/dist/components/preview-price/index.js +19 -2
- package/dist/components/preview-price/index.js.map +1 -0
- package/dist/components/product-card/index.d.ts +2 -2
- package/dist/components/product-card/index.d.ts.map +1 -1
- package/dist/components/product-card/index.js +3 -4
- package/dist/components/product-card/index.js.map +1 -1
- package/dist/components/product-preview/index.d.ts +3 -3
- package/dist/components/product-preview/index.d.ts.map +1 -1
- package/dist/components/product-preview/index.js +4 -4
- package/dist/components/search-modal/index.d.ts +2 -2
- package/dist/components/search-modal/index.d.ts.map +1 -1
- package/dist/components/search-modal/index.js +135 -9
- package/dist/components/search-modal/index.js.map +1 -0
- package/dist/components/side-menu/index.d.ts +3 -3
- package/dist/components/side-menu/index.js +96 -13
- package/dist/components/side-menu/index.js.map +1 -0
- package/dist/components/thumbnail/index.js +43 -2
- package/dist/components/thumbnail/index.js.map +1 -0
- package/dist/lib/config/medusa.js +11 -2
- package/dist/lib/config/medusa.js.map +1 -0
- package/dist/lib/context/apollo-context.js +1 -2
- package/dist/lib/context/apollo-context.js.map +1 -1
- package/dist/lib/context/modal-context.d.ts +2 -2
- package/dist/lib/context/modal-context.js +19 -2
- package/dist/lib/context/modal-context.js.map +1 -0
- package/dist/lib/data/cart.d.ts +1 -1
- package/dist/lib/data/cart.d.ts.map +1 -1
- package/dist/lib/data/cart.js +102 -10
- package/dist/lib/data/cart.js.map +1 -0
- package/dist/lib/data/categories.d.ts +1 -1
- package/dist/lib/data/categories.js +15 -5
- package/dist/lib/data/categories.js.map +1 -0
- package/dist/lib/data/collections.d.ts +1 -1
- package/dist/lib/data/collections.js +21 -5
- package/dist/lib/data/collections.js.map +1 -0
- package/dist/lib/data/cookies.d.ts +2 -1
- package/dist/lib/data/cookies.d.ts.map +1 -1
- package/dist/lib/data/cookies.js +45 -2
- package/dist/lib/data/cookies.js.map +1 -0
- package/dist/lib/data/customer.d.ts +1 -1
- package/dist/lib/data/customer.d.ts.map +1 -1
- package/dist/lib/data/customer.js +39 -9
- package/dist/lib/data/customer.js.map +1 -0
- package/dist/lib/data/footer.js +15 -4
- package/dist/lib/data/footer.js.map +1 -0
- package/dist/lib/data/orders.d.ts +1 -1
- package/dist/lib/data/orders.js +4 -4
- package/dist/lib/data/regions.d.ts +1 -1
- package/dist/lib/data/regions.js +33 -4
- package/dist/lib/data/regions.js.map +1 -0
- package/dist/lib/data/search.d.ts +1 -1
- package/dist/lib/data/search.js +20 -5
- package/dist/lib/data/search.js.map +1 -0
- package/dist/lib/gql/apollo-client.js +66 -2
- package/dist/lib/gql/apollo-client.js.map +1 -0
- package/dist/lib/gql/fragments/cart.d.ts +9 -9
- package/dist/lib/gql/fragments/cart.d.ts.map +1 -1
- package/dist/lib/gql/fragments/cart.js +141 -3
- package/dist/{cart-BNoIGQmw.js.map → lib/gql/fragments/cart.js.map} +1 -1
- package/dist/lib/gql/fragments/customer.d.ts +3 -3
- package/dist/lib/gql/fragments/customer.js +41 -2
- package/dist/{customer-CgN4zI00.js.map → lib/gql/fragments/customer.js.map} +1 -1
- package/dist/lib/gql/fragments/product.d.ts +8 -8
- package/dist/lib/gql/fragments/product.js +89 -2
- package/dist/{product-COu5D1mS.js.map → lib/gql/fragments/product.js.map} +1 -1
- package/dist/lib/gql/mutations/cart.d.ts +4 -4
- package/dist/lib/gql/mutations/cart.d.ts.map +1 -1
- package/dist/lib/gql/mutations/cart.js +41 -4
- package/dist/{cart-IHaLnQC4.js.map → lib/gql/mutations/cart.js.map} +1 -1
- package/dist/lib/gql/mutations/customer.js +0 -1
- package/dist/lib/gql/queries/cart.d.ts +2 -2
- package/dist/lib/gql/queries/cart.d.ts.map +1 -1
- package/dist/lib/gql/queries/cart.js +15 -4
- package/dist/{cart-DH8urwwT.js.map → lib/gql/queries/cart.js.map} +1 -1
- package/dist/lib/gql/queries/collections.d.ts +2 -2
- package/dist/lib/gql/queries/collections.d.ts.map +1 -1
- package/dist/lib/gql/queries/collections.js +19 -3
- package/dist/{collections-DMv3UYgC.js.map → lib/gql/queries/collections.js.map} +1 -1
- package/dist/lib/gql/queries/customer.d.ts +2 -2
- package/dist/lib/gql/queries/customer.d.ts.map +1 -1
- package/dist/lib/gql/queries/customer.js +15 -3
- package/dist/{customer-DIJz6m7L.js.map → lib/gql/queries/customer.js.map} +1 -1
- package/dist/lib/gql/queries/footer.d.ts +2 -2
- package/dist/lib/gql/queries/footer.d.ts.map +1 -1
- package/dist/lib/gql/queries/footer.js +21 -2
- package/dist/lib/gql/queries/footer.js.map +1 -0
- package/dist/lib/gql/queries/product.d.ts +3 -3
- package/dist/lib/gql/queries/product.d.ts.map +1 -1
- package/dist/lib/gql/queries/product.js +46 -3
- package/dist/{product-C3HQUIgX.js.map → lib/gql/queries/product.js.map} +1 -1
- package/dist/lib/hooks/use-apollo.d.ts +2 -2
- package/dist/lib/hooks/use-apollo.js +10 -3
- package/dist/lib/hooks/use-apollo.js.map +1 -0
- package/dist/lib/hooks/use-search.d.ts +1 -1
- package/dist/lib/hooks/use-search.js +66 -6
- package/dist/lib/hooks/use-search.js.map +1 -0
- package/dist/lib/hooks/use-toggle-state.d.ts +23 -2
- package/dist/lib/hooks/use-toggle-state.d.ts.map +1 -0
- package/dist/lib/utils/data-types.js +9 -2
- package/dist/lib/utils/data-types.js.map +1 -0
- package/dist/lib/utils/env.js +1 -1
- package/dist/lib/utils/env.js.map +1 -1
- package/dist/lib/utils/get-percentage-diff.js +7 -2
- package/dist/lib/utils/get-percentage-diff.js.map +1 -0
- package/dist/lib/utils/get-product-price.d.ts +1 -1
- package/dist/lib/utils/get-product-price.js +46 -2
- package/dist/lib/utils/get-product-price.js.map +1 -0
- package/dist/lib/utils/medusa-error.js +16 -2
- package/dist/lib/utils/medusa-error.js.map +1 -0
- package/dist/lib/utils/money.js +14 -2
- package/dist/lib/utils/money.js.map +1 -0
- package/dist/lib/utils/normalize-functions.d.ts +1 -1
- package/dist/lib/utils/normalize-functions.js +69 -2
- package/dist/lib/utils/normalize-functions.js.map +1 -0
- package/dist/types/graphql.d.ts +1368 -2
- package/dist/types/graphql.d.ts.map +1 -0
- package/dist/types/prices.d.ts +20 -2
- package/dist/types/prices.d.ts.map +1 -0
- package/dist/types/prices.js +0 -1
- package/package.json +12 -12
- package/dist/apollo-client-Bw50r80c.js +0 -66
- package/dist/apollo-client-Bw50r80c.js.map +0 -1
- package/dist/cart-BNoIGQmw.js +0 -142
- package/dist/cart-DH8urwwT.js +0 -16
- package/dist/cart-IHaLnQC4.js +0 -42
- package/dist/cart-button-Dj_zRxop.js +0 -12
- package/dist/cart-button-Dj_zRxop.js.map +0 -1
- package/dist/cart-dropdown-D_PUJarp.js +0 -195
- package/dist/cart-dropdown-D_PUJarp.js.map +0 -1
- package/dist/cart-xkcyWLfU.js +0 -103
- package/dist/cart-xkcyWLfU.js.map +0 -1
- package/dist/categories-B-RYCIZ3.js +0 -16
- package/dist/categories-B-RYCIZ3.js.map +0 -1
- package/dist/collections-BgyvhW2p.js +0 -22
- package/dist/collections-BgyvhW2p.js.map +0 -1
- package/dist/collections-DMv3UYgC.js +0 -20
- package/dist/cookies-lksVIe4_.js +0 -38
- package/dist/cookies-lksVIe4_.js.map +0 -1
- package/dist/customer-CgN4zI00.js +0 -42
- package/dist/customer-ClewjBBr.js +0 -38
- package/dist/customer-ClewjBBr.js.map +0 -1
- package/dist/customer-DIJz6m7L.js +0 -16
- package/dist/data-types-CTPJXmJH.js +0 -10
- package/dist/data-types-CTPJXmJH.js.map +0 -1
- package/dist/delete-button-Bnm5bof2.js +0 -28
- package/dist/delete-button-Bnm5bof2.js.map +0 -1
- package/dist/footer-BvNV-R9D.js +0 -16
- package/dist/footer-BvNV-R9D.js.map +0 -1
- package/dist/footer-DCtgtjKS.js +0 -76
- package/dist/footer-DCtgtjKS.js.map +0 -1
- package/dist/get-percentage-diff-B_UVOFgE.js +0 -8
- package/dist/get-percentage-diff-B_UVOFgE.js.map +0 -1
- package/dist/get-product-price-DKWc76ev.js +0 -47
- package/dist/get-product-price-DKWc76ev.js.map +0 -1
- package/dist/graphql-CdTGi4Pp.d.ts +0 -1368
- package/dist/graphql-CdTGi4Pp.d.ts.map +0 -1
- package/dist/layout-country-select-C7Ra-opl.js +0 -90
- package/dist/layout-country-select-C7Ra-opl.js.map +0 -1
- package/dist/line-item-options-l_eRZIIq.js +0 -16
- package/dist/line-item-options-l_eRZIIq.js.map +0 -1
- package/dist/line-item-price-BlTwskFC.js +0 -47
- package/dist/line-item-price-BlTwskFC.js.map +0 -1
- package/dist/localized-client-link-CthmRcvb.js +0 -22
- package/dist/localized-client-link-CthmRcvb.js.map +0 -1
- package/dist/medusa-TumrpCF2.js +0 -12
- package/dist/medusa-TumrpCF2.js.map +0 -1
- package/dist/medusa-error-DDhA6RGC.js +0 -17
- package/dist/medusa-error-DDhA6RGC.js.map +0 -1
- package/dist/modal-BASYY-YM.js +0 -102
- package/dist/modal-BASYY-YM.js.map +0 -1
- package/dist/modal-context-02cA-7jy.js +0 -20
- package/dist/modal-context-02cA-7jy.js.map +0 -1
- package/dist/money-DVQGzXns.js +0 -15
- package/dist/money-DVQGzXns.js.map +0 -1
- package/dist/normalize-functions-Bqr-JkYn.js +0 -70
- package/dist/normalize-functions-Bqr-JkYn.js.map +0 -1
- package/dist/portable-text-CuI022GH.js +0 -330
- package/dist/portable-text-CuI022GH.js.map +0 -1
- package/dist/preview-price-_4sxkXQs.js +0 -20
- package/dist/preview-price-_4sxkXQs.js.map +0 -1
- package/dist/prices-eO1YBciD.d.ts +0 -20
- package/dist/prices-eO1YBciD.d.ts.map +0 -1
- package/dist/product-C3HQUIgX.js +0 -47
- package/dist/product-COu5D1mS.js +0 -90
- package/dist/regions-r1AvxfT8.js +0 -34
- package/dist/regions-r1AvxfT8.js.map +0 -1
- package/dist/search-D7Gw7jAk.js +0 -21
- package/dist/search-D7Gw7jAk.js.map +0 -1
- package/dist/search-modal-DaXadYWM.js +0 -137
- package/dist/search-modal-DaXadYWM.js.map +0 -1
- package/dist/side-menu-B6IjTd5M.js +0 -97
- package/dist/side-menu-B6IjTd5M.js.map +0 -1
- package/dist/thumbnail-C0TU3rh-.js +0 -44
- package/dist/thumbnail-C0TU3rh-.js.map +0 -1
- package/dist/use-apollo-BxAFd1Y5.js +0 -11
- package/dist/use-apollo-BxAFd1Y5.js.map +0 -1
- package/dist/use-search-VX-u8o1D.js +0 -67
- package/dist/use-search-VX-u8o1D.js.map +0 -1
- package/dist/use-toggle-state-DI4Gwlfj.d.ts +0 -23
- package/dist/use-toggle-state-DI4Gwlfj.d.ts.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime15 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/components/interactive-link/index.d.ts
|
|
4
4
|
type InteractiveLinkProps = {
|
|
@@ -11,7 +11,7 @@ declare const InteractiveLink: ({
|
|
|
11
11
|
children,
|
|
12
12
|
onClick,
|
|
13
13
|
...props
|
|
14
|
-
}: InteractiveLinkProps) =>
|
|
14
|
+
}: InteractiveLinkProps) => react_jsx_runtime15.JSX.Element;
|
|
15
15
|
//#endregion
|
|
16
16
|
export { InteractiveLink };
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LocalizedClientLink } from "../localized-client-link/index.js";
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Text } from "@medusajs/ui";
|
|
4
4
|
import { ArrowUpRightMini } from "@medusajs/icons";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import * as
|
|
1
|
+
import { Region } from "../../types/graphql.js";
|
|
2
|
+
import { StateType } from "../../lib/hooks/use-toggle-state.js";
|
|
3
|
+
import * as react_jsx_runtime19 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/components/layout-country-select/index.d.ts
|
|
6
6
|
type CountrySelectProps = {
|
|
@@ -10,7 +10,7 @@ type CountrySelectProps = {
|
|
|
10
10
|
declare const LayoutCountrySelect: ({
|
|
11
11
|
toggleState,
|
|
12
12
|
regions
|
|
13
|
-
}: CountrySelectProps) =>
|
|
13
|
+
}: CountrySelectProps) => react_jsx_runtime19.JSX.Element;
|
|
14
14
|
//#endregion
|
|
15
15
|
export { LayoutCountrySelect };
|
|
16
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,14 +1,92 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import "../../
|
|
4
|
-
import "
|
|
5
|
-
import "
|
|
6
|
-
import "
|
|
7
|
-
import "
|
|
8
|
-
import "
|
|
9
|
-
import "../../cookies-lksVIe4_.js";
|
|
10
|
-
import "../../regions-r1AvxfT8.js";
|
|
11
|
-
import "../../cart-xkcyWLfU.js";
|
|
12
|
-
import { t as LayoutCountrySelect } from "../../layout-country-select-C7Ra-opl.js";
|
|
3
|
+
import { updateRegion } from "../../lib/data/cart.js";
|
|
4
|
+
import { Fragment, useEffect, useMemo, useState } from "react";
|
|
5
|
+
import { useParams, usePathname } from "next/navigation";
|
|
6
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { Listbox, ListboxButton, ListboxOption, ListboxOptions, Transition } from "@headlessui/react";
|
|
8
|
+
import ReactCountryFlag from "react-country-flag";
|
|
13
9
|
|
|
14
|
-
|
|
10
|
+
//#region src/components/layout-country-select/index.tsx
|
|
11
|
+
const LayoutCountrySelect = ({ toggleState, regions }) => {
|
|
12
|
+
const [current, setCurrent] = useState(void 0);
|
|
13
|
+
const { countryCode } = useParams();
|
|
14
|
+
const currentPath = usePathname().split(`/${countryCode}`)[1] ?? "gb";
|
|
15
|
+
const { state, close } = toggleState;
|
|
16
|
+
const options = useMemo(() => {
|
|
17
|
+
return regions.map((r) => {
|
|
18
|
+
return r.countries?.map((c) => ({
|
|
19
|
+
country: c?.iso2 ?? void 0,
|
|
20
|
+
region: r.id,
|
|
21
|
+
label: c?.name ?? void 0
|
|
22
|
+
}));
|
|
23
|
+
}).flat().sort((a, b) => (a?.label ?? "").localeCompare(b?.label ?? ""));
|
|
24
|
+
}, [regions]);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (countryCode) {
|
|
27
|
+
const option = options?.find((o) => o?.country === countryCode);
|
|
28
|
+
setCurrent(option);
|
|
29
|
+
}
|
|
30
|
+
}, [options, countryCode]);
|
|
31
|
+
const handleChange = (option) => {
|
|
32
|
+
updateRegion(option.country, currentPath);
|
|
33
|
+
close();
|
|
34
|
+
};
|
|
35
|
+
return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs(Listbox, {
|
|
36
|
+
as: "span",
|
|
37
|
+
onChange: handleChange,
|
|
38
|
+
defaultValue: countryCode ? options?.find((o) => o?.country === countryCode) : void 0,
|
|
39
|
+
children: [/* @__PURE__ */ jsx(ListboxButton, {
|
|
40
|
+
className: "w-full py-1",
|
|
41
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
42
|
+
className: "txt-compact-small flex items-start gap-x-2",
|
|
43
|
+
children: [/* @__PURE__ */ jsx("span", { children: "Shipping to:" }), current && /* @__PURE__ */ jsxs("span", {
|
|
44
|
+
className: "txt-compact-small flex items-center gap-x-2",
|
|
45
|
+
children: [/* @__PURE__ */ jsx(ReactCountryFlag, {
|
|
46
|
+
svg: true,
|
|
47
|
+
style: {
|
|
48
|
+
width: "16px",
|
|
49
|
+
height: "16px"
|
|
50
|
+
},
|
|
51
|
+
countryCode: current.country ?? ""
|
|
52
|
+
}), current.label]
|
|
53
|
+
})]
|
|
54
|
+
})
|
|
55
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
56
|
+
className: "relative flex w-full min-w-[320px]",
|
|
57
|
+
children: /* @__PURE__ */ jsx(Transition, {
|
|
58
|
+
show: state,
|
|
59
|
+
as: Fragment,
|
|
60
|
+
leave: "transition ease-in duration-150",
|
|
61
|
+
leaveFrom: "opacity-100",
|
|
62
|
+
leaveTo: "opacity-0",
|
|
63
|
+
children: /* @__PURE__ */ jsx(ListboxOptions, {
|
|
64
|
+
className: "text-small-regular no-scrollbar rounded-rounded xsmall:left-auto xsmall:right-0 absolute -bottom-[calc(100%-36px)] left-0 z-[900] max-h-[442px] w-full overflow-y-scroll bg-white text-black uppercase drop-shadow-md",
|
|
65
|
+
static: true,
|
|
66
|
+
children: options?.map((o, index) => {
|
|
67
|
+
return /* @__PURE__ */ jsxs(ListboxOption, {
|
|
68
|
+
value: o,
|
|
69
|
+
className: "flex cursor-pointer items-center gap-x-2 px-3 py-2 hover:bg-gray-200",
|
|
70
|
+
children: [
|
|
71
|
+
/* @__PURE__ */ jsx(ReactCountryFlag, {
|
|
72
|
+
svg: true,
|
|
73
|
+
style: {
|
|
74
|
+
width: "16px",
|
|
75
|
+
height: "16px"
|
|
76
|
+
},
|
|
77
|
+
countryCode: o?.country ?? ""
|
|
78
|
+
}),
|
|
79
|
+
" ",
|
|
80
|
+
o?.label
|
|
81
|
+
]
|
|
82
|
+
}, index);
|
|
83
|
+
})
|
|
84
|
+
})
|
|
85
|
+
})
|
|
86
|
+
})]
|
|
87
|
+
}) });
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
//#endregion
|
|
91
|
+
export { LayoutCountrySelect };
|
|
92
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/layout-country-select/index.tsx"],"sourcesContent":["'use client';\n\nimport { Fragment, useEffect, useMemo, useState } from 'react';\n\nimport { useParams, usePathname } from 'next/navigation';\n\nimport ReactCountryFlag from 'react-country-flag';\n\nimport {\n Listbox,\n ListboxButton,\n ListboxOption,\n ListboxOptions,\n Transition,\n} from '@headlessui/react';\n\nimport { updateRegion } from '@/lib/data/cart';\nimport { StateType } from '@/lib/hooks/use-toggle-state';\nimport { Region } from '@/types/graphql';\n\ntype CountryOption = {\n country: string;\n region: string;\n label: string;\n};\n\ntype CountrySelectProps = {\n toggleState: StateType;\n regions: Region[];\n};\n\nconst LayoutCountrySelect = ({ toggleState, regions }: CountrySelectProps) => {\n const [current, setCurrent] = useState<\n | { country: string | undefined; region: string; label: string | undefined }\n | undefined\n >(undefined);\n\n const { countryCode } = useParams();\n const currentPath = usePathname().split(`/${countryCode}`)[1] ?? 'gb';\n\n const { state, close } = toggleState;\n\n const options = useMemo(() => {\n return regions\n .map((r) => {\n return r.countries?.map((c) => ({\n country: c?.iso2 ?? undefined,\n region: r.id,\n label: c?.name ?? undefined,\n }));\n })\n .flat()\n .sort((a, b) => (a?.label ?? '').localeCompare(b?.label ?? ''));\n }, [regions]);\n\n useEffect(() => {\n if (countryCode) {\n const option = options?.find((o) => o?.country === countryCode);\n setCurrent(option);\n }\n }, [options, countryCode]);\n\n const handleChange = (option: CountryOption) => {\n updateRegion(option.country, currentPath);\n close();\n };\n\n return (\n <div>\n <Listbox\n as=\"span\"\n onChange={handleChange}\n defaultValue={\n countryCode\n ? options?.find(\n (o): o is CountryOption => o?.country === countryCode\n )\n : undefined\n }\n >\n <ListboxButton className=\"w-full py-1\">\n <div className=\"txt-compact-small flex items-start gap-x-2\">\n <span>Shipping to:</span>\n {current && (\n <span className=\"txt-compact-small flex items-center gap-x-2\">\n {/* @ts-ignore */}\n <ReactCountryFlag\n svg\n style={{\n width: '16px',\n height: '16px',\n }}\n countryCode={current.country ?? ''}\n />\n {current.label}\n </span>\n )}\n </div>\n </ListboxButton>\n <div className=\"relative flex w-full min-w-[320px]\">\n <Transition\n show={state}\n as={Fragment}\n leave=\"transition ease-in duration-150\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <ListboxOptions\n className=\"text-small-regular no-scrollbar rounded-rounded xsmall:left-auto xsmall:right-0 absolute -bottom-[calc(100%-36px)] left-0 z-[900] max-h-[442px] w-full overflow-y-scroll bg-white text-black uppercase drop-shadow-md\"\n static\n >\n {options?.map((o, index) => {\n return (\n <ListboxOption\n key={index}\n value={o}\n className=\"flex cursor-pointer items-center gap-x-2 px-3 py-2 hover:bg-gray-200\"\n >\n {/* @ts-ignore */}\n <ReactCountryFlag\n svg\n style={{\n width: '16px',\n height: '16px',\n }}\n countryCode={o?.country ?? ''}\n />{' '}\n {o?.label}\n </ListboxOption>\n );\n })}\n </ListboxOptions>\n </Transition>\n </div>\n </Listbox>\n </div>\n );\n};\n\nexport { LayoutCountrySelect };\n"],"mappings":";;;;;;;;;;AA+BA,MAAM,uBAAuB,EAAE,aAAa,cAAkC;CAC5E,MAAM,CAAC,SAAS,cAAc,SAG5B,OAAU;CAEZ,MAAM,EAAE,gBAAgB,WAAW;CACnC,MAAM,cAAc,aAAa,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM;CAEjE,MAAM,EAAE,OAAO,UAAU;CAEzB,MAAM,UAAU,cAAc;AAC5B,SAAO,QACJ,KAAK,MAAM;AACV,UAAO,EAAE,WAAW,KAAK,OAAO;IAC9B,SAAS,GAAG,QAAQ;IACpB,QAAQ,EAAE;IACV,OAAO,GAAG,QAAQ;IACnB,EAAE;IACH,CACD,MAAM,CACN,MAAM,GAAG,OAAO,GAAG,SAAS,IAAI,cAAc,GAAG,SAAS,GAAG,CAAC;IAChE,CAAC,QAAQ,CAAC;AAEb,iBAAgB;AACd,MAAI,aAAa;GACf,MAAM,SAAS,SAAS,MAAM,MAAM,GAAG,YAAY,YAAY;AAC/D,cAAW,OAAO;;IAEnB,CAAC,SAAS,YAAY,CAAC;CAE1B,MAAM,gBAAgB,WAA0B;AAC9C,eAAa,OAAO,SAAS,YAAY;AACzC,SAAO;;AAGT,QACE,oBAAC,mBACC,qBAAC;EACC,IAAG;EACH,UAAU;EACV,cACE,cACI,SAAS,MACN,MAA0B,GAAG,YAAY,YAC3C,GACD;aAGN,oBAAC;GAAc,WAAU;aACvB,qBAAC;IAAI,WAAU;eACb,oBAAC,oBAAK,iBAAmB,EACxB,WACC,qBAAC;KAAK,WAAU;gBAEd,oBAAC;MACC;MACA,OAAO;OACL,OAAO;OACP,QAAQ;OACT;MACD,aAAa,QAAQ,WAAW;OAChC,EACD,QAAQ;MACJ;KAEL;IACQ,EAChB,oBAAC;GAAI,WAAU;aACb,oBAAC;IACC,MAAM;IACN,IAAI;IACJ,OAAM;IACN,WAAU;IACV,SAAQ;cAER,oBAAC;KACC,WAAU;KACV;eAEC,SAAS,KAAK,GAAG,UAAU;AAC1B,aACE,qBAAC;OAEC,OAAO;OACP,WAAU;;QAGV,oBAAC;SACC;SACA,OAAO;UACL,OAAO;UACP,QAAQ;UACT;SACD,aAAa,GAAG,WAAW;UAC3B;QAAC;QACF,GAAG;;SAbC,MAcS;OAElB;MACa;KACN;IACT;GACE,GACN"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as
|
|
1
|
+
import { Maybe, ProductVariant } from "../../types/graphql.js";
|
|
2
|
+
import * as react_jsx_runtime18 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/line-item-options/index.d.ts
|
|
5
5
|
type LineItemOptionsProps = {
|
|
@@ -11,7 +11,7 @@ declare const LineItemOptions: ({
|
|
|
11
11
|
variant,
|
|
12
12
|
"data-testid": dataTestid,
|
|
13
13
|
"data-value": dataValue
|
|
14
|
-
}: LineItemOptionsProps) =>
|
|
14
|
+
}: LineItemOptionsProps) => react_jsx_runtime18.JSX.Element;
|
|
15
15
|
//#endregion
|
|
16
16
|
export { LineItemOptions };
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Text } from "@medusajs/ui";
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
//#region src/components/line-item-options/index.tsx
|
|
5
|
+
const LineItemOptions = ({ variant, "data-testid": dataTestid, "data-value": dataValue }) => {
|
|
6
|
+
return /* @__PURE__ */ jsxs(Text, {
|
|
7
|
+
"data-testid": dataTestid,
|
|
8
|
+
"data-value": dataValue,
|
|
9
|
+
className: "txt-medium text-ui-fg-subtle inline-block w-full overflow-hidden text-ellipsis",
|
|
10
|
+
children: ["Variant: ", variant?.title]
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
//#endregion
|
|
15
|
+
export { LineItemOptions };
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/line-item-options/index.tsx"],"sourcesContent":["import { Text } from '@medusajs/ui';\n\nimport { Maybe, ProductVariant } from '@/types/graphql';\n\ntype LineItemOptionsProps = {\n variant?: Maybe<ProductVariant>;\n 'data-testid'?: string;\n 'data-value'?: Maybe<ProductVariant>;\n};\n\nconst LineItemOptions = ({\n variant,\n 'data-testid': dataTestid,\n 'data-value': dataValue,\n}: LineItemOptionsProps) => {\n return (\n <Text\n data-testid={dataTestid}\n data-value={dataValue}\n className=\"txt-medium text-ui-fg-subtle inline-block w-full overflow-hidden text-ellipsis\"\n >\n Variant: {variant?.title}\n </Text>\n );\n};\n\nexport { LineItemOptions };\n"],"mappings":";;;;AAUA,MAAM,mBAAmB,EACvB,SACA,eAAe,YACf,cAAc,gBACY;AAC1B,QACE,qBAAC;EACC,eAAa;EACb,cAAY;EACZ,WAAU;aACX,aACW,SAAS;GACd"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as
|
|
1
|
+
import { LineItem } from "../../types/graphql.js";
|
|
2
|
+
import * as react_jsx_runtime20 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/line-item-price/index.d.ts
|
|
5
5
|
type LineItemPriceProps = {
|
|
@@ -11,7 +11,7 @@ declare const LineItemPrice: ({
|
|
|
11
11
|
item,
|
|
12
12
|
style,
|
|
13
13
|
currencyCode
|
|
14
|
-
}: LineItemPriceProps) =>
|
|
14
|
+
}: LineItemPriceProps) => react_jsx_runtime20.JSX.Element;
|
|
15
15
|
//#endregion
|
|
16
16
|
export { LineItemPrice };
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/line-item-price/index.tsx"],"sourcesContent":[],"mappings":";;;;KAMK,kBAAA;QACG;;EADH,YAAA,EAAA,MAAA;AACW,CAAA;cAKV,aAAiB,EAAA,CAAA;EAAA,IAAA;EAAA,KAAA;EAAA;AAAA,CAAA,EAIpB,kBAJoB,EAAA,GAIF,
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/line-item-price/index.tsx"],"sourcesContent":[],"mappings":";;;;KAMK,kBAAA;QACG;;EADH,YAAA,EAAA,MAAA;AACW,CAAA;cAKV,aAAiB,EAAA,CAAA;EAAA,IAAA;EAAA,KAAA;EAAA;AAAA,CAAA,EAIpB,kBAJoB,EAAA,GAIF,mBAAA,CAAA,GAAA,CAAA,OAJE"}
|
|
@@ -1,3 +1,47 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { convertToLocale } from "../../lib/utils/money.js";
|
|
2
|
+
import { getPercentageDiff } from "../../lib/utils/get-percentage-diff.js";
|
|
3
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { clx } from "@medusajs/ui";
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
//#region src/components/line-item-price/index.tsx
|
|
7
|
+
const LineItemPrice = ({ item, style = "default", currencyCode }) => {
|
|
8
|
+
const { total, originalTotal } = item;
|
|
9
|
+
const originalPrice = originalTotal;
|
|
10
|
+
const currentPrice = total;
|
|
11
|
+
const hasReducedPrice = currentPrice && originalPrice && currentPrice < originalPrice;
|
|
12
|
+
return /* @__PURE__ */ jsx("div", {
|
|
13
|
+
className: "text-ui-fg-subtle flex flex-col items-end gap-x-2",
|
|
14
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
15
|
+
className: "text-left",
|
|
16
|
+
children: [hasReducedPrice && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("p", { children: [style === "default" && /* @__PURE__ */ jsx("span", {
|
|
17
|
+
className: "text-ui-fg-subtle",
|
|
18
|
+
children: "Original: "
|
|
19
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
20
|
+
className: "text-ui-fg-muted line-through",
|
|
21
|
+
"data-testid": "product-original-price",
|
|
22
|
+
children: convertToLocale({
|
|
23
|
+
amount: originalPrice,
|
|
24
|
+
currency_code: currencyCode
|
|
25
|
+
})
|
|
26
|
+
})] }), style === "default" && /* @__PURE__ */ jsxs("span", {
|
|
27
|
+
className: "text-ui-fg-interactive",
|
|
28
|
+
children: [
|
|
29
|
+
"-",
|
|
30
|
+
getPercentageDiff(originalPrice, currentPrice || 0),
|
|
31
|
+
"%"
|
|
32
|
+
]
|
|
33
|
+
})] }), /* @__PURE__ */ jsx("span", {
|
|
34
|
+
className: clx("text-base-regular", { "text-ui-fg-interactive": hasReducedPrice }),
|
|
35
|
+
"data-testid": "product-price",
|
|
36
|
+
children: convertToLocale({
|
|
37
|
+
amount: currentPrice ?? 0,
|
|
38
|
+
currency_code: currencyCode
|
|
39
|
+
})
|
|
40
|
+
})]
|
|
41
|
+
})
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
export { LineItemPrice };
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/line-item-price/index.tsx"],"sourcesContent":["import { clx } from '@medusajs/ui';\n\nimport { getPercentageDiff } from '@/lib/utils/get-percentage-diff';\nimport { convertToLocale } from '@/lib/utils/money';\nimport { LineItem } from '@/types/graphql';\n\ntype LineItemPriceProps = {\n item: LineItem;\n style?: 'default' | 'tight';\n currencyCode: string;\n};\n\nconst LineItemPrice = ({\n item,\n style = 'default',\n currencyCode,\n}: LineItemPriceProps) => {\n const { total, originalTotal } = item;\n const originalPrice = originalTotal;\n const currentPrice = total;\n const hasReducedPrice =\n currentPrice && originalPrice && currentPrice < originalPrice;\n\n return (\n <div className=\"text-ui-fg-subtle flex flex-col items-end gap-x-2\">\n <div className=\"text-left\">\n {hasReducedPrice && (\n <>\n <p>\n {style === 'default' && (\n <span className=\"text-ui-fg-subtle\">Original: </span>\n )}\n <span\n className=\"text-ui-fg-muted line-through\"\n data-testid=\"product-original-price\"\n >\n {convertToLocale({\n amount: originalPrice,\n currency_code: currencyCode,\n })}\n </span>\n </p>\n {style === 'default' && (\n <span className=\"text-ui-fg-interactive\">\n -{getPercentageDiff(originalPrice, currentPrice || 0)}%\n </span>\n )}\n </>\n )}\n <span\n className={clx('text-base-regular', {\n 'text-ui-fg-interactive': hasReducedPrice,\n })}\n data-testid=\"product-price\"\n >\n {convertToLocale({\n amount: currentPrice ?? 0,\n currency_code: currencyCode,\n })}\n </span>\n </div>\n </div>\n );\n};\n\nexport { LineItemPrice };\n"],"mappings":";;;;;;AAYA,MAAM,iBAAiB,EACrB,MACA,QAAQ,WACR,mBACwB;CACxB,MAAM,EAAE,OAAO,kBAAkB;CACjC,MAAM,gBAAgB;CACtB,MAAM,eAAe;CACrB,MAAM,kBACJ,gBAAgB,iBAAiB,eAAe;AAElD,QACE,oBAAC;EAAI,WAAU;YACb,qBAAC;GAAI,WAAU;cACZ,mBACC,4CACE,qBAAC,kBACE,UAAU,aACT,oBAAC;IAAK,WAAU;cAAoB;KAAiB,EAEvD,oBAAC;IACC,WAAU;IACV,eAAY;cAEX,gBAAgB;KACf,QAAQ;KACR,eAAe;KAChB,CAAC;KACG,IACL,EACH,UAAU,aACT,qBAAC;IAAK,WAAU;;KAAyB;KACrC,kBAAkB,eAAe,gBAAgB,EAAE;KAAC;;KACjD,IAER,EAEL,oBAAC;IACC,WAAW,IAAI,qBAAqB,EAClC,0BAA0B,iBAC3B,CAAC;IACF,eAAY;cAEX,gBAAgB;KACf,QAAQ,gBAAgB;KACxB,eAAe;KAChB,CAAC;KACG;IACH;GACF"}
|
|
@@ -1,24 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
import * as
|
|
1
|
+
import { AnchorHTMLAttributes, DetailedHTMLProps } from "react";
|
|
2
|
+
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/localized-client-link/index.d.ts
|
|
5
|
-
|
|
5
|
+
type LocalizedClientLinkProps = DetailedHTMLProps<AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>;
|
|
6
6
|
/**
|
|
7
|
-
* Use this component to create
|
|
7
|
+
* Use this component to create an anchor link that persists the current country code in the url,
|
|
8
8
|
* without having to explicitly pass it as a prop.
|
|
9
9
|
*/
|
|
10
10
|
declare const LocalizedClientLink: ({
|
|
11
11
|
children,
|
|
12
12
|
href,
|
|
13
13
|
...props
|
|
14
|
-
}:
|
|
15
|
-
children?: React.ReactNode;
|
|
16
|
-
href: string;
|
|
17
|
-
className?: string;
|
|
18
|
-
onClick?: () => void;
|
|
19
|
-
passHref?: true;
|
|
20
|
-
[x: string]: any;
|
|
21
|
-
}) => react_jsx_runtime21.JSX.Element;
|
|
14
|
+
}: LocalizedClientLinkProps) => react_jsx_runtime0.JSX.Element;
|
|
22
15
|
//#endregion
|
|
23
16
|
export { LocalizedClientLink };
|
|
24
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/localized-client-link/index.tsx"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/localized-client-link/index.tsx"],"sourcesContent":[],"mappings":";;;;KAMK,wBAAA,GAA2B,kBAC9B,qBAAqB,oBACrB;;;AAN8D;;cAa1D,mBARJ,EAAA,CAAA;EAAA,QAAA;EAAA,IAAA;EAAA,GAAA;AAAA,CAAA,EAYC,wBAZD,EAAA,GAYyB,kBAAA,CAAA,GAAA,CAAA,OAZzB"}
|
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { useParams } from "next/navigation";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
//#region src/components/localized-client-link/index.tsx
|
|
7
|
+
/**
|
|
8
|
+
* Use this component to create an anchor link that persists the current country code in the url,
|
|
9
|
+
* without having to explicitly pass it as a prop.
|
|
10
|
+
*/
|
|
11
|
+
const LocalizedClientLink = ({ children, href, ...props }) => {
|
|
12
|
+
const { countryCode } = useParams();
|
|
13
|
+
return /* @__PURE__ */ jsx("a", {
|
|
14
|
+
href: `/${countryCode}${href}`,
|
|
15
|
+
...props,
|
|
16
|
+
children
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
export { LocalizedClientLink };
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/localized-client-link/index.tsx"],"sourcesContent":["'use client';\n\nimport { AnchorHTMLAttributes, DetailedHTMLProps } from 'react';\n\nimport { useParams } from 'next/navigation';\n\ntype LocalizedClientLinkProps = DetailedHTMLProps<\n AnchorHTMLAttributes<HTMLAnchorElement>,\n HTMLAnchorElement\n>;\n\n/**\n * Use this component to create an anchor link that persists the current country code in the url,\n * without having to explicitly pass it as a prop.\n */\nconst LocalizedClientLink = ({\n children,\n href,\n ...props\n}: LocalizedClientLinkProps) => {\n const { countryCode } = useParams();\n\n return (\n <a href={`/${countryCode}${href}`} {...props}>\n {children}\n </a>\n );\n};\n\nexport { LocalizedClientLink };\n"],"mappings":";;;;;;;;;;AAeA,MAAM,uBAAuB,EAC3B,UACA,MACA,GAAG,YAC2B;CAC9B,MAAM,EAAE,gBAAgB,WAAW;AAEnC,QACE,oBAAC;EAAE,MAAM,IAAI,cAAc;EAAQ,GAAI;EACpC;GACC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import * as
|
|
2
|
+
import * as react_jsx_runtime5 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/modal/index.d.ts
|
|
5
5
|
type ModalProps = {
|
|
@@ -20,7 +20,7 @@ declare const Modal: {
|
|
|
20
20
|
children,
|
|
21
21
|
"data-testid": dataTestId,
|
|
22
22
|
"aria-label": ariaLabel
|
|
23
|
-
}: ModalProps):
|
|
23
|
+
}: ModalProps): react_jsx_runtime5.JSX.Element;
|
|
24
24
|
Title: React.FC<{
|
|
25
25
|
children: React.ReactNode;
|
|
26
26
|
}>;
|
|
@@ -1,4 +1,102 @@
|
|
|
1
|
-
import "../../modal-context
|
|
2
|
-
import {
|
|
1
|
+
import { ModalProvider, useModal } from "../../lib/context/modal-context.js";
|
|
2
|
+
import React, { Fragment } from "react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { Dialog, Transition } from "@headlessui/react";
|
|
5
|
+
import { clx } from "@medusajs/ui";
|
|
6
|
+
import { X } from "@gfed-medusa/sf-lib-ui/icons/x";
|
|
3
7
|
|
|
4
|
-
|
|
8
|
+
//#region src/components/modal/index.tsx
|
|
9
|
+
const Modal = ({ isOpen, close, size = "medium", search = false, children, "data-testid": dataTestId, "aria-label": ariaLabel }) => {
|
|
10
|
+
return /* @__PURE__ */ jsx(Transition, {
|
|
11
|
+
appear: true,
|
|
12
|
+
show: isOpen,
|
|
13
|
+
as: Fragment,
|
|
14
|
+
children: /* @__PURE__ */ jsxs(Dialog, {
|
|
15
|
+
as: "div",
|
|
16
|
+
className: "relative z-[75]",
|
|
17
|
+
onClose: close,
|
|
18
|
+
"aria-label": ariaLabel,
|
|
19
|
+
children: [/* @__PURE__ */ jsx(Transition.Child, {
|
|
20
|
+
as: Fragment,
|
|
21
|
+
enter: "ease-out duration-300",
|
|
22
|
+
enterFrom: "opacity-0",
|
|
23
|
+
enterTo: "opacity-100",
|
|
24
|
+
leave: "ease-in duration-200",
|
|
25
|
+
leaveFrom: "opacity-100",
|
|
26
|
+
leaveTo: "opacity-0",
|
|
27
|
+
children: /* @__PURE__ */ jsx("div", { className: "fixed inset-0 h-screen bg-opacity-75 backdrop-blur-md" })
|
|
28
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
29
|
+
className: "fixed inset-0 overflow-y-hidden",
|
|
30
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
31
|
+
className: clx("flex h-full min-h-full justify-center p-4 text-center", {
|
|
32
|
+
"items-center": !search,
|
|
33
|
+
"items-start": search
|
|
34
|
+
}),
|
|
35
|
+
children: /* @__PURE__ */ jsx(Transition.Child, {
|
|
36
|
+
as: Fragment,
|
|
37
|
+
enter: "ease-out duration-300",
|
|
38
|
+
enterFrom: "opacity-0 scale-95",
|
|
39
|
+
enterTo: "opacity-100 scale-100",
|
|
40
|
+
leave: "ease-in duration-200",
|
|
41
|
+
leaveFrom: "opacity-100 scale-100",
|
|
42
|
+
leaveTo: "opacity-0 scale-95",
|
|
43
|
+
children: /* @__PURE__ */ jsx(Dialog.Panel, {
|
|
44
|
+
"data-testid": dataTestId,
|
|
45
|
+
className: clx("flex h-fit max-h-[75vh] w-full transform flex-col justify-start p-5 text-left align-middle transition-all", {
|
|
46
|
+
"max-w-md": size === "small",
|
|
47
|
+
"max-w-xl": size === "medium",
|
|
48
|
+
"max-w-3xl": size === "large",
|
|
49
|
+
"bg-transparent shadow-none": search,
|
|
50
|
+
"rounded-rounded border bg-white shadow-xl": !search
|
|
51
|
+
}),
|
|
52
|
+
children: /* @__PURE__ */ jsx(ModalProvider, {
|
|
53
|
+
close,
|
|
54
|
+
children
|
|
55
|
+
})
|
|
56
|
+
})
|
|
57
|
+
})
|
|
58
|
+
})
|
|
59
|
+
})]
|
|
60
|
+
})
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
const Title = ({ children }) => {
|
|
64
|
+
const { close } = useModal();
|
|
65
|
+
return /* @__PURE__ */ jsxs(Dialog.Title, {
|
|
66
|
+
className: "flex items-center justify-between",
|
|
67
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
68
|
+
className: "text-large-semi",
|
|
69
|
+
children
|
|
70
|
+
}), /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx("button", {
|
|
71
|
+
onClick: close,
|
|
72
|
+
"data-testid": "close-modal-button",
|
|
73
|
+
children: /* @__PURE__ */ jsx(X, { size: 20 })
|
|
74
|
+
}) })]
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
const Description = ({ children }) => {
|
|
78
|
+
return /* @__PURE__ */ jsx(Dialog.Description, {
|
|
79
|
+
className: "text-small-regular text-ui-fg-base flex h-full items-center justify-center pb-4 pt-2",
|
|
80
|
+
children
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
const Body = ({ children }) => {
|
|
84
|
+
return /* @__PURE__ */ jsx("div", {
|
|
85
|
+
className: "flex justify-center",
|
|
86
|
+
children
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
const Footer = ({ children }) => {
|
|
90
|
+
return /* @__PURE__ */ jsx("div", {
|
|
91
|
+
className: "flex items-center justify-end gap-x-4",
|
|
92
|
+
children
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
Modal.Title = Title;
|
|
96
|
+
Modal.Description = Description;
|
|
97
|
+
Modal.Body = Body;
|
|
98
|
+
Modal.Footer = Footer;
|
|
99
|
+
|
|
100
|
+
//#endregion
|
|
101
|
+
export { Modal };
|
|
102
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["Title: React.FC<{ children: React.ReactNode }>","Description: React.FC<{ children: React.ReactNode }>","Body: React.FC<{ children: React.ReactNode }>","Footer: React.FC<{ children: React.ReactNode }>"],"sources":["../../../src/components/modal/index.tsx"],"sourcesContent":["import React, { Fragment } from 'react';\n\nimport { X } from '@gfed-medusa/sf-lib-ui/icons/x';\nimport { Dialog, Transition } from '@headlessui/react';\nimport { clx } from '@medusajs/ui';\n\nimport { ModalProvider, useModal } from '@/lib/context/modal-context';\n\ntype ModalProps = {\n isOpen: boolean;\n close: () => void;\n size?: 'small' | 'medium' | 'large';\n search?: boolean;\n children: React.ReactNode;\n 'data-testid'?: string;\n 'aria-label'?: string;\n};\n\nconst Modal = ({\n isOpen,\n close,\n size = 'medium',\n search = false,\n children,\n 'data-testid': dataTestId,\n 'aria-label': ariaLabel,\n}: ModalProps) => {\n return (\n <Transition appear show={isOpen} as={Fragment}>\n <Dialog\n as=\"div\"\n className=\"relative z-[75]\"\n onClose={close}\n aria-label={ariaLabel}\n >\n <Transition.Child\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0\"\n enterTo=\"opacity-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100\"\n leaveTo=\"opacity-0\"\n >\n <div className=\"fixed inset-0 h-screen bg-opacity-75 backdrop-blur-md\" />\n </Transition.Child>\n\n <div className=\"fixed inset-0 overflow-y-hidden\">\n <div\n className={clx(\n 'flex h-full min-h-full justify-center p-4 text-center',\n {\n 'items-center': !search,\n 'items-start': search,\n }\n )}\n >\n <Transition.Child\n as={Fragment}\n enter=\"ease-out duration-300\"\n enterFrom=\"opacity-0 scale-95\"\n enterTo=\"opacity-100 scale-100\"\n leave=\"ease-in duration-200\"\n leaveFrom=\"opacity-100 scale-100\"\n leaveTo=\"opacity-0 scale-95\"\n >\n <Dialog.Panel\n data-testid={dataTestId}\n className={clx(\n 'flex h-fit max-h-[75vh] w-full transform flex-col justify-start p-5 text-left align-middle transition-all',\n {\n 'max-w-md': size === 'small',\n 'max-w-xl': size === 'medium',\n 'max-w-3xl': size === 'large',\n 'bg-transparent shadow-none': search,\n 'rounded-rounded border bg-white shadow-xl': !search,\n }\n )}\n >\n <ModalProvider close={close}>{children}</ModalProvider>\n </Dialog.Panel>\n </Transition.Child>\n </div>\n </div>\n </Dialog>\n </Transition>\n );\n};\n\nconst Title: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n const { close } = useModal();\n\n return (\n <Dialog.Title className=\"flex items-center justify-between\">\n <div className=\"text-large-semi\">{children}</div>\n <div>\n <button onClick={close} data-testid=\"close-modal-button\">\n <X size={20} />\n </button>\n </div>\n </Dialog.Title>\n );\n};\n\nconst Description: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return (\n <Dialog.Description className=\"text-small-regular text-ui-fg-base flex h-full items-center justify-center pb-4 pt-2\">\n {children}\n </Dialog.Description>\n );\n};\n\nconst Body: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return <div className=\"flex justify-center\">{children}</div>;\n};\n\nconst Footer: React.FC<{ children: React.ReactNode }> = ({ children }) => {\n return (\n <div className=\"flex items-center justify-end gap-x-4\">{children}</div>\n );\n};\n\nModal.Title = Title;\nModal.Description = Description;\nModal.Body = Body;\nModal.Footer = Footer;\n\nexport { Modal };\n"],"mappings":";;;;;;;;AAkBA,MAAM,SAAS,EACb,QACA,OACA,OAAO,UACP,SAAS,OACT,UACA,eAAe,YACf,cAAc,gBACE;AAChB,QACE,oBAAC;EAAW;EAAO,MAAM;EAAQ,IAAI;YACnC,qBAAC;GACC,IAAG;GACH,WAAU;GACV,SAAS;GACT,cAAY;cAEZ,oBAAC,WAAW;IACV,IAAI;IACJ,OAAM;IACN,WAAU;IACV,SAAQ;IACR,OAAM;IACN,WAAU;IACV,SAAQ;cAER,oBAAC,SAAI,WAAU,0DAA0D;KACxD,EAEnB,oBAAC;IAAI,WAAU;cACb,oBAAC;KACC,WAAW,IACT,yDACA;MACE,gBAAgB,CAAC;MACjB,eAAe;MAChB,CACF;eAED,oBAAC,WAAW;MACV,IAAI;MACJ,OAAM;MACN,WAAU;MACV,SAAQ;MACR,OAAM;MACN,WAAU;MACV,SAAQ;gBAER,oBAAC,OAAO;OACN,eAAa;OACb,WAAW,IACT,6GACA;QACE,YAAY,SAAS;QACrB,YAAY,SAAS;QACrB,aAAa,SAAS;QACtB,8BAA8B;QAC9B,6CAA6C,CAAC;QAC/C,CACF;iBAED,oBAAC;QAAqB;QAAQ;SAAyB;QAC1C;OACE;MACf;KACF;IACC;GACE;;AAIjB,MAAMA,SAAkD,EAAE,eAAe;CACvE,MAAM,EAAE,UAAU,UAAU;AAE5B,QACE,qBAAC,OAAO;EAAM,WAAU;aACtB,oBAAC;GAAI,WAAU;GAAmB;IAAe,EACjD,oBAAC,mBACC,oBAAC;GAAO,SAAS;GAAO,eAAY;aAClC,oBAAC,KAAE,MAAM,KAAM;IACR,GACL;GACO;;AAInB,MAAMC,eAAwD,EAAE,eAAe;AAC7E,QACE,oBAAC,OAAO;EAAY,WAAU;EAC3B;GACkB;;AAIzB,MAAMC,QAAiD,EAAE,eAAe;AACtE,QAAO,oBAAC;EAAI,WAAU;EAAuB;GAAe;;AAG9D,MAAMC,UAAmD,EAAE,eAAe;AACxE,QACE,oBAAC;EAAI,WAAU;EAAyC;GAAe;;AAI3E,MAAM,QAAQ;AACd,MAAM,cAAc;AACpB,MAAM,OAAO;AACb,MAAM,SAAS"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime6 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/components/nav/index.d.ts
|
|
4
|
-
declare function Nav(): Promise<
|
|
4
|
+
declare function Nav(): Promise<react_jsx_runtime6.JSX.Element>;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { Nav };
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,27 +1,8 @@
|
|
|
1
|
-
import "../../
|
|
2
|
-
import "
|
|
3
|
-
import "
|
|
4
|
-
import "
|
|
5
|
-
import "
|
|
6
|
-
import "../../cart-DH8urwwT.js";
|
|
7
|
-
import "../../cookies-lksVIe4_.js";
|
|
8
|
-
import { n as listRegions } from "../../regions-r1AvxfT8.js";
|
|
9
|
-
import "../../cart-xkcyWLfU.js";
|
|
10
|
-
import "../../delete-button-Bnm5bof2.js";
|
|
11
|
-
import "../../line-item-options-l_eRZIIq.js";
|
|
12
|
-
import "../../line-item-price-BlTwskFC.js";
|
|
13
|
-
import { t as LocalizedClientLink } from "../../localized-client-link-CthmRcvb.js";
|
|
14
|
-
import "../../thumbnail-C0TU3rh-.js";
|
|
15
|
-
import "../../cart-dropdown-D_PUJarp.js";
|
|
16
|
-
import { t as CartButton } from "../../cart-button-Dj_zRxop.js";
|
|
17
|
-
import "../../product-C3HQUIgX.js";
|
|
18
|
-
import "../../layout-country-select-C7Ra-opl.js";
|
|
19
|
-
import "../../modal-context-02cA-7jy.js";
|
|
20
|
-
import "../../modal-BASYY-YM.js";
|
|
21
|
-
import "../../search-D7Gw7jAk.js";
|
|
22
|
-
import "../../use-search-VX-u8o1D.js";
|
|
23
|
-
import { t as SearchModal } from "../../search-modal-DaXadYWM.js";
|
|
24
|
-
import { t as SideMenu } from "../../side-menu-B6IjTd5M.js";
|
|
1
|
+
import { listRegions } from "../../lib/data/regions.js";
|
|
2
|
+
import { LocalizedClientLink } from "../localized-client-link/index.js";
|
|
3
|
+
import { CartButton } from "../cart-button/index.js";
|
|
4
|
+
import { SearchModal } from "../search-modal/index.js";
|
|
5
|
+
import { SideMenu } from "../side-menu/index.js";
|
|
25
6
|
import { Suspense } from "react";
|
|
26
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
27
8
|
|
|
@@ -38,7 +19,7 @@ async function Nav() {
|
|
|
38
19
|
className: "flex h-full flex-1 basis-0 items-center",
|
|
39
20
|
children: /* @__PURE__ */ jsx("div", {
|
|
40
21
|
className: "h-full",
|
|
41
|
-
children: /* @__PURE__ */ jsx(SideMenu, { regions: await listRegions().then((regions) => regions) })
|
|
22
|
+
children: /* @__PURE__ */ jsx(SideMenu, { regions: await listRegions().then((regions) => regions).catch(() => null) })
|
|
42
23
|
})
|
|
43
24
|
}),
|
|
44
25
|
/* @__PURE__ */ jsx("div", {
|
|
@@ -1 +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":"
|
|
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()\n .then((regions: Region[]) => regions)\n .catch(() => null);\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;AAKnB,QACE,oBAAC;EAAI,WAAU;YACb,oBAAC;GAAO,WAAU;aAChB,qBAAC;IAAI,WAAU;;KACb,oBAAC;MAAI,WAAU;gBACb,oBAAC;OAAI,WAAU;iBACb,oBAAC,YAAS,SAVN,MAAM,aAAa,CAChC,MAAM,YAAsB,QAAQ,CACpC,YAAY,KAAK,GAQsB;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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as
|
|
1
|
+
import { RichTextBlock } from "../../types/graphql.js";
|
|
2
|
+
import * as react_jsx_runtime8 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/portable-text/index.d.ts
|
|
5
5
|
type PortableTextProps = {
|
|
@@ -7,7 +7,7 @@ type PortableTextProps = {
|
|
|
7
7
|
};
|
|
8
8
|
declare const PortableText: ({
|
|
9
9
|
value
|
|
10
|
-
}: PortableTextProps) =>
|
|
10
|
+
}: PortableTextProps) => react_jsx_runtime8.JSX.Element | null;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { PortableText };
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|