@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,12 +1,10 @@
|
|
|
1
|
-
import * as react0 from "react";
|
|
2
|
-
import * as lucide_react0 from "lucide-react";
|
|
3
1
|
import * as react_jsx_runtime0 from "react/jsx-runtime";
|
|
4
2
|
|
|
5
3
|
//#region src/components/breadcrumbs/index.d.ts
|
|
6
|
-
declare const SEPARATOR_ICONS: {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
4
|
+
declare const SEPARATOR_ICONS: Record<string, React.ComponentType<{
|
|
5
|
+
size?: number;
|
|
6
|
+
className?: string;
|
|
7
|
+
}>>;
|
|
10
8
|
interface BreadcrumbsProps {
|
|
11
9
|
separatorIcon?: keyof typeof SEPARATOR_ICONS;
|
|
12
10
|
iconSize?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/breadcrumbs/index.tsx"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/breadcrumbs/index.tsx"],"sourcesContent":[],"mappings":";;;cAiBM,iBAAiB,eAAe,KAAA,CAAM;;;AAwCzB,CAAA,CAAA,CAAA;AAxCU,UAKnB,gBAAA,CAAgB;EA+BjB,aAAA,CAAW,EAAA,MAAA,OA9BW,eA8BX;EAClB,QAAA,CAAA,EAAA,MAAA;EACA,aAAA,CAAA,EAAA,MAAA;;iBAFO,WAAA,CAIN;EAAA,aAAA;EAAA,QAAA;EAAA;AAAA,CAAA,EAAA,gBAAA,CAAA,EAAgB,kBAAA,CAAA,GAAA,CAAA,OAAhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["segments: string[]"],"sources":["../../../src/components/breadcrumbs/index.tsx"],"sourcesContent":["'use client';\n\nimport { Fragment } from 'react';\n\nimport { usePathname } from 'next/navigation';\n\nimport { SlashIcon, Tally1 } from 'lucide-react';\n\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from '@gfed-medusa/sf-lib-ui/components/breadcrumb';\n\nconst SEPARATOR_ICONS = {\n verticalLine: Tally1,\n slash: SlashIcon,\n}
|
|
1
|
+
{"version":3,"file":"index.js","names":["SEPARATOR_ICONS: Record<string, React.ComponentType<{ size?: number; className?: string }>>","segments: string[]"],"sources":["../../../src/components/breadcrumbs/index.tsx"],"sourcesContent":["'use client';\n\nimport { Fragment } from 'react';\n\nimport { usePathname } from 'next/navigation';\n\nimport { SlashIcon, Tally1 } from 'lucide-react';\n\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from '@gfed-medusa/sf-lib-ui/components/breadcrumb';\n\nconst SEPARATOR_ICONS: Record<string, React.ComponentType<{ size?: number; className?: string }>> = {\n verticalLine: Tally1,\n slash: SlashIcon,\n};\n\ninterface BreadcrumbsProps {\n separatorIcon?: keyof typeof SEPARATOR_ICONS;\n iconSize?: number;\n iconClassName?: string;\n}\n\nconst formatSegmentLabel = (segment: string): string =>\n segment.charAt(0).toUpperCase() + segment.slice(1).replace(/-/g, ' ');\n\nconst createBreadcrumbItems = (segments: string[]) => [\n { label: 'Home', href: '/' },\n ...segments.map((segment, index) => ({\n href: '/' + segments.slice(0, index + 1).join('/'),\n label: formatSegmentLabel(segment),\n })),\n];\n\n// Helper function to check if a string is a locale code (e.g., 'en', 'en-US')\nconst isLocaleCode = (segment: string): boolean =>\n /^[a-zA-Z]{2}(-[a-zA-Z]{2})?$/.test(segment);\n\nconst getPathSegments = (pathname: string): string[] => {\n const segments: string[] = pathname.split('/').filter(Boolean);\n\n if (segments.length > 0 && isLocaleCode(segments[0] ?? '')) {\n segments.shift();\n }\n\n return segments;\n};\n\nfunction Breadcrumbs({\n iconClassName,\n iconSize,\n separatorIcon,\n}: BreadcrumbsProps) {\n const pathname = usePathname();\n const pathSegments = getPathSegments(pathname);\n const breadcrumbItems = createBreadcrumbItems(pathSegments);\n const SeparatorIcon = separatorIcon ? SEPARATOR_ICONS[separatorIcon] : null;\n\n return (\n <Breadcrumb className=\"mt-3\">\n <BreadcrumbList className=\"lg:gap-6\">\n {breadcrumbItems.map((item, index) => {\n const isLast = index === breadcrumbItems.length - 1;\n\n return (\n <Fragment key={item.href}>\n <BreadcrumbItem className=\"text-sm\">\n {isLast ? (\n <BreadcrumbPage>{item.label}</BreadcrumbPage>\n ) : (\n <BreadcrumbLink href={item.href}>{item.label}</BreadcrumbLink>\n )}\n </BreadcrumbItem>\n {!isLast && (\n <BreadcrumbSeparator>\n {SeparatorIcon && (\n <SeparatorIcon size={iconSize} className={iconClassName} />\n )}\n </BreadcrumbSeparator>\n )}\n </Fragment>\n );\n })}\n </BreadcrumbList>\n </Breadcrumb>\n );\n}\n\nexport { Breadcrumbs };\n"],"mappings":";;;;;;;;;AAiBA,MAAMA,kBAA8F;CAClG,cAAc;CACd,OAAO;CACR;AAQD,MAAM,sBAAsB,YAC1B,QAAQ,OAAO,EAAE,CAAC,aAAa,GAAG,QAAQ,MAAM,EAAE,CAAC,QAAQ,MAAM,IAAI;AAEvE,MAAM,yBAAyB,aAAuB,CACpD;CAAE,OAAO;CAAQ,MAAM;CAAK,EAC5B,GAAG,SAAS,KAAK,SAAS,WAAW;CACnC,MAAM,MAAM,SAAS,MAAM,GAAG,QAAQ,EAAE,CAAC,KAAK,IAAI;CAClD,OAAO,mBAAmB,QAAQ;CACnC,EAAE,CACJ;AAGD,MAAM,gBAAgB,YACpB,+BAA+B,KAAK,QAAQ;AAE9C,MAAM,mBAAmB,aAA+B;CACtD,MAAMC,WAAqB,SAAS,MAAM,IAAI,CAAC,OAAO,QAAQ;AAE9D,KAAI,SAAS,SAAS,KAAK,aAAa,SAAS,MAAM,GAAG,CACxD,UAAS,OAAO;AAGlB,QAAO;;AAGT,SAAS,YAAY,EACnB,eACA,UACA,iBACmB;CAGnB,MAAM,kBAAkB,sBADH,gBADJ,aAAa,CACgB,CACa;CAC3D,MAAM,gBAAgB,gBAAgB,gBAAgB,iBAAiB;AAEvE,QACE,oBAAC;EAAW,WAAU;YACpB,oBAAC;GAAe,WAAU;aACvB,gBAAgB,KAAK,MAAM,UAAU;IACpC,MAAM,SAAS,UAAU,gBAAgB,SAAS;AAElD,WACE,qBAAC,uBACC,oBAAC;KAAe,WAAU;eACvB,SACC,oBAAC,4BAAgB,KAAK,QAAuB,GAE7C,oBAAC;MAAe,MAAM,KAAK;gBAAO,KAAK;OAAuB;MAEjD,EAChB,CAAC,UACA,oBAAC,iCACE,iBACC,oBAAC;KAAc,MAAM;KAAU,WAAW;MAAiB,GAEzC,KAbX,KAAK,KAeT;KAEb;IACa;GACN"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime1 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/components/cart-button/index.d.ts
|
|
4
|
-
declare function CartButton(): Promise<
|
|
4
|
+
declare function CartButton(): Promise<react_jsx_runtime1.JSX.Element>;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { CartButton };
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/cart-button/index.tsx"],"sourcesContent":[],"mappings":";;;iBAIe,UAAA,CAAA,GAAU,QAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/cart-button/index.tsx"],"sourcesContent":[],"mappings":";;;iBAIe,UAAA,CAAA,GAAU,QAAA,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import "../../
|
|
2
|
-
import "
|
|
3
|
-
import "
|
|
4
|
-
import "../../cart-BNoIGQmw.js";
|
|
5
|
-
import "../../cart-IHaLnQC4.js";
|
|
6
|
-
import "../../cart-DH8urwwT.js";
|
|
7
|
-
import "../../cookies-lksVIe4_.js";
|
|
8
|
-
import "../../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 "../../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";
|
|
1
|
+
import { retrieveCart } from "../../lib/data/cart.js";
|
|
2
|
+
import { CartDropdown } from "../cart-dropdown/index.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
17
4
|
|
|
18
|
-
|
|
5
|
+
//#region src/components/cart-button/index.tsx
|
|
6
|
+
async function CartButton() {
|
|
7
|
+
return /* @__PURE__ */ jsx(CartDropdown, { cart: await retrieveCart().catch(() => null) });
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
//#endregion
|
|
11
|
+
export { CartButton };
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/cart-button/index.tsx"],"sourcesContent":["import { retrieveCart } from '@/lib/data/cart';\n\nimport { CartDropdown } from '../cart-dropdown';\n\nasync function CartButton() {\n const cart = await retrieveCart().catch(() => null);\n\n return <CartDropdown cart={cart} />;\n}\n\nexport { CartButton };\n"],"mappings":";;;;;AAIA,eAAe,aAAa;AAG1B,QAAO,oBAAC,gBAAa,MAFR,MAAM,cAAc,CAAC,YAAY,KAAK,GAEhB"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as
|
|
1
|
+
import { Cart } from "../../types/graphql.js";
|
|
2
|
+
import * as react_jsx_runtime2 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/cart-dropdown/index.d.ts
|
|
5
5
|
declare const CartDropdown: ({
|
|
6
6
|
cart: cartState
|
|
7
7
|
}: {
|
|
8
8
|
cart?: Cart | null;
|
|
9
|
-
}) =>
|
|
9
|
+
}) => react_jsx_runtime2.JSX.Element;
|
|
10
10
|
//#endregion
|
|
11
11
|
export { CartDropdown };
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/cart-dropdown/index.tsx"],"sourcesContent":[],"mappings":";;;;cAuBM;QAAgB;;SAA8B;MAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/cart-dropdown/index.tsx"],"sourcesContent":[],"mappings":";;;;cAuBM;QAAgB;;SAA8B;MAAa,kBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -1,19 +1,196 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import "../../
|
|
4
|
-
import "
|
|
5
|
-
import "
|
|
6
|
-
import "
|
|
7
|
-
import "
|
|
8
|
-
import "
|
|
9
|
-
import "
|
|
10
|
-
import "
|
|
11
|
-
import "
|
|
12
|
-
import "
|
|
13
|
-
import "
|
|
14
|
-
import "../../line-item-price-BlTwskFC.js";
|
|
15
|
-
import "../../localized-client-link-CthmRcvb.js";
|
|
16
|
-
import "../../thumbnail-C0TU3rh-.js";
|
|
17
|
-
import { t as CartDropdown } from "../../cart-dropdown-D_PUJarp.js";
|
|
3
|
+
import { convertToLocale } from "../../lib/utils/money.js";
|
|
4
|
+
import { DeleteButton } from "../delete-button/index.js";
|
|
5
|
+
import { LineItemOptions } from "../line-item-options/index.js";
|
|
6
|
+
import { LineItemPrice } from "../line-item-price/index.js";
|
|
7
|
+
import { LocalizedClientLink } from "../localized-client-link/index.js";
|
|
8
|
+
import { Thumbnail } from "../thumbnail/index.js";
|
|
9
|
+
import { Fragment, useEffect, useRef, useState } from "react";
|
|
10
|
+
import { usePathname } from "next/navigation";
|
|
11
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
12
|
+
import { Popover, PopoverButton, PopoverPanel, Transition } from "@headlessui/react";
|
|
13
|
+
import { Button } from "@medusajs/ui";
|
|
18
14
|
|
|
19
|
-
|
|
15
|
+
//#region src/components/cart-dropdown/index.tsx
|
|
16
|
+
const CartDropdown = ({ cart: cartState }) => {
|
|
17
|
+
const [activeTimer, setActiveTimer] = useState(void 0);
|
|
18
|
+
const [cartDropdownOpen, setCartDropdownOpen] = useState(false);
|
|
19
|
+
const open = () => setCartDropdownOpen(true);
|
|
20
|
+
const close = () => setCartDropdownOpen(false);
|
|
21
|
+
const totalItems = cartState?.items?.reduce((acc, item) => {
|
|
22
|
+
return acc + item.quantity;
|
|
23
|
+
}, 0) || 0;
|
|
24
|
+
const subtotal = cartState?.subtotal ?? 0;
|
|
25
|
+
const itemRef = useRef(totalItems || 0);
|
|
26
|
+
const timedOpen = () => {
|
|
27
|
+
open();
|
|
28
|
+
setActiveTimer(setTimeout(close, 5e3));
|
|
29
|
+
};
|
|
30
|
+
const openAndCancel = () => {
|
|
31
|
+
if (activeTimer) clearTimeout(activeTimer);
|
|
32
|
+
open();
|
|
33
|
+
};
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
return () => {
|
|
36
|
+
if (activeTimer) clearTimeout(activeTimer);
|
|
37
|
+
};
|
|
38
|
+
}, [activeTimer]);
|
|
39
|
+
const pathname = usePathname();
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (itemRef.current !== totalItems && !pathname.includes("/cart")) timedOpen();
|
|
42
|
+
}, [totalItems, itemRef.current]);
|
|
43
|
+
return /* @__PURE__ */ jsx("div", {
|
|
44
|
+
className: "z-50 h-full",
|
|
45
|
+
onMouseEnter: openAndCancel,
|
|
46
|
+
onMouseLeave: close,
|
|
47
|
+
children: /* @__PURE__ */ jsxs(Popover, {
|
|
48
|
+
className: "relative h-full",
|
|
49
|
+
children: [/* @__PURE__ */ jsx(PopoverButton, {
|
|
50
|
+
className: "h-full",
|
|
51
|
+
children: /* @__PURE__ */ jsx(LocalizedClientLink, {
|
|
52
|
+
className: "hover:text-ui-fg-base",
|
|
53
|
+
href: "/cart",
|
|
54
|
+
"data-testid": "nav-cart-link",
|
|
55
|
+
children: `Cart (${totalItems})`
|
|
56
|
+
})
|
|
57
|
+
}), /* @__PURE__ */ jsx(Transition, {
|
|
58
|
+
show: cartDropdownOpen,
|
|
59
|
+
as: Fragment,
|
|
60
|
+
enter: "transition ease-out duration-200",
|
|
61
|
+
enterFrom: "opacity-0 translate-y-1",
|
|
62
|
+
enterTo: "opacity-100 translate-y-0",
|
|
63
|
+
leave: "transition ease-in duration-150",
|
|
64
|
+
leaveFrom: "opacity-100 translate-y-0",
|
|
65
|
+
leaveTo: "opacity-0 translate-y-1",
|
|
66
|
+
children: /* @__PURE__ */ jsxs(PopoverPanel, {
|
|
67
|
+
static: true,
|
|
68
|
+
className: "text-ui-fg-base small:block absolute top-[calc(100%+1px)] right-0 hidden w-[420px] border-x border-b border-gray-200 bg-white",
|
|
69
|
+
"data-testid": "nav-cart-dropdown",
|
|
70
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
71
|
+
className: "flex items-center justify-center p-4",
|
|
72
|
+
children: /* @__PURE__ */ jsx("h3", {
|
|
73
|
+
className: "text-large-semi",
|
|
74
|
+
children: "Cart"
|
|
75
|
+
})
|
|
76
|
+
}), cartState && cartState.items?.length ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
|
|
77
|
+
className: "no-scrollbar grid max-h-[402px] grid-cols-1 gap-y-8 overflow-y-scroll p-px px-4",
|
|
78
|
+
children: cartState.items.sort((a, b) => {
|
|
79
|
+
return (a.createdAt ?? "") > (b.createdAt ?? "") ? -1 : 1;
|
|
80
|
+
}).map((item) => /* @__PURE__ */ jsxs("div", {
|
|
81
|
+
className: "grid grid-cols-[122px_1fr] gap-x-4",
|
|
82
|
+
"data-testid": "cart-item",
|
|
83
|
+
children: [/* @__PURE__ */ jsx(LocalizedClientLink, {
|
|
84
|
+
href: `/products/${item.productHandle}`,
|
|
85
|
+
className: "w-24",
|
|
86
|
+
children: /* @__PURE__ */ jsx(Thumbnail, {
|
|
87
|
+
thumbnail: item.thumbnail,
|
|
88
|
+
images: item.variant?.product?.images,
|
|
89
|
+
size: "square"
|
|
90
|
+
})
|
|
91
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
92
|
+
className: "flex flex-1 flex-col justify-between",
|
|
93
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
94
|
+
className: "flex flex-1 flex-col",
|
|
95
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
96
|
+
className: "flex items-start justify-between",
|
|
97
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
98
|
+
className: "mr-4 flex w-[180px] flex-col overflow-ellipsis whitespace-nowrap",
|
|
99
|
+
children: [
|
|
100
|
+
/* @__PURE__ */ jsx("h3", {
|
|
101
|
+
className: "text-base-regular overflow-hidden text-ellipsis",
|
|
102
|
+
children: /* @__PURE__ */ jsx(LocalizedClientLink, {
|
|
103
|
+
href: `/products/${item.productHandle}`,
|
|
104
|
+
"data-testid": "product-link",
|
|
105
|
+
children: item.title
|
|
106
|
+
})
|
|
107
|
+
}),
|
|
108
|
+
/* @__PURE__ */ jsx(LineItemOptions, {
|
|
109
|
+
variant: item.variant,
|
|
110
|
+
"data-testid": "cart-item-variant",
|
|
111
|
+
"data-value": item.variant
|
|
112
|
+
}),
|
|
113
|
+
/* @__PURE__ */ jsxs("span", {
|
|
114
|
+
"data-testid": "cart-item-quantity",
|
|
115
|
+
"data-value": item.quantity,
|
|
116
|
+
children: ["Quantity: ", item.quantity]
|
|
117
|
+
})
|
|
118
|
+
]
|
|
119
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
120
|
+
className: "flex justify-end",
|
|
121
|
+
children: /* @__PURE__ */ jsx(LineItemPrice, {
|
|
122
|
+
item,
|
|
123
|
+
style: "tight",
|
|
124
|
+
currencyCode: cartState.currencyCode
|
|
125
|
+
})
|
|
126
|
+
})]
|
|
127
|
+
})
|
|
128
|
+
}), /* @__PURE__ */ jsx(DeleteButton, {
|
|
129
|
+
id: item.id,
|
|
130
|
+
className: "mt-1",
|
|
131
|
+
"data-testid": "cart-item-remove-button",
|
|
132
|
+
children: "Remove"
|
|
133
|
+
})]
|
|
134
|
+
})]
|
|
135
|
+
}, item.id))
|
|
136
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
137
|
+
className: "text-small-regular flex flex-col gap-y-4 p-4",
|
|
138
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
139
|
+
className: "flex items-center justify-between",
|
|
140
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
141
|
+
className: "text-ui-fg-base font-semibold",
|
|
142
|
+
children: [
|
|
143
|
+
"Subtotal",
|
|
144
|
+
" ",
|
|
145
|
+
/* @__PURE__ */ jsx("span", {
|
|
146
|
+
className: "font-normal",
|
|
147
|
+
children: "(excl. taxes)"
|
|
148
|
+
})
|
|
149
|
+
]
|
|
150
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
151
|
+
className: "text-large-semi",
|
|
152
|
+
"data-testid": "cart-subtotal",
|
|
153
|
+
"data-value": subtotal,
|
|
154
|
+
children: convertToLocale({
|
|
155
|
+
amount: subtotal,
|
|
156
|
+
currency_code: cartState.currencyCode
|
|
157
|
+
})
|
|
158
|
+
})]
|
|
159
|
+
}), /* @__PURE__ */ jsx(LocalizedClientLink, {
|
|
160
|
+
href: "/cart",
|
|
161
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
162
|
+
className: "w-full",
|
|
163
|
+
size: "large",
|
|
164
|
+
"data-testid": "go-to-cart-button",
|
|
165
|
+
children: "Go to cart"
|
|
166
|
+
})
|
|
167
|
+
})]
|
|
168
|
+
})] }) : /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsxs("div", {
|
|
169
|
+
className: "flex flex-col items-center justify-center gap-y-4 py-16",
|
|
170
|
+
children: [
|
|
171
|
+
/* @__PURE__ */ jsx("div", {
|
|
172
|
+
className: "text-small-regular flex h-6 w-6 items-center justify-center rounded-full bg-gray-900 text-white",
|
|
173
|
+
children: /* @__PURE__ */ jsx("span", { children: "0" })
|
|
174
|
+
}),
|
|
175
|
+
/* @__PURE__ */ jsx("span", { children: "Your shopping bag is empty." }),
|
|
176
|
+
/* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(LocalizedClientLink, {
|
|
177
|
+
href: "/store",
|
|
178
|
+
children: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
|
|
179
|
+
className: "sr-only",
|
|
180
|
+
children: "Go to all products page"
|
|
181
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
182
|
+
onClick: close,
|
|
183
|
+
children: "Explore products"
|
|
184
|
+
})] })
|
|
185
|
+
}) })
|
|
186
|
+
]
|
|
187
|
+
}) })]
|
|
188
|
+
})
|
|
189
|
+
})]
|
|
190
|
+
})
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
//#endregion
|
|
195
|
+
export { CartDropdown };
|
|
196
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/cart-dropdown/index.tsx"],"sourcesContent":["'use client';\n\nimport { Fragment, useEffect, useRef, useState } from 'react';\n\nimport { usePathname } from 'next/navigation';\n\nimport {\n Popover,\n PopoverButton,\n PopoverPanel,\n Transition,\n} from '@headlessui/react';\nimport { Button } from '@medusajs/ui';\n\nimport { convertToLocale } from '@/lib/utils/money';\nimport { Cart } from '@/types/graphql';\n\nimport { DeleteButton } from '../delete-button';\nimport { LineItemOptions } from '../line-item-options';\nimport { LineItemPrice } from '../line-item-price';\nimport { LocalizedClientLink } from '../localized-client-link';\nimport { Thumbnail } from '../thumbnail';\n\nconst CartDropdown = ({ cart: cartState }: { cart?: Cart | null }) => {\n const [activeTimer, setActiveTimer] = useState<NodeJS.Timeout | undefined>(\n undefined\n );\n const [cartDropdownOpen, setCartDropdownOpen] = useState(false);\n\n const open = () => setCartDropdownOpen(true);\n const close = () => setCartDropdownOpen(false);\n\n const totalItems =\n cartState?.items?.reduce((acc, item) => {\n return acc + item.quantity;\n }, 0) || 0;\n\n const subtotal = cartState?.subtotal ?? 0;\n const itemRef = useRef<number>(totalItems || 0);\n\n const timedOpen = () => {\n open();\n\n const timer = setTimeout(close, 5000);\n\n setActiveTimer(timer);\n };\n\n const openAndCancel = () => {\n if (activeTimer) {\n clearTimeout(activeTimer);\n }\n\n open();\n };\n\n // Clean up the timer when the component unmounts\n useEffect(() => {\n return () => {\n if (activeTimer) {\n clearTimeout(activeTimer);\n }\n };\n }, [activeTimer]);\n\n const pathname = usePathname();\n\n // open cart dropdown when modifying the cart items, but only if we're not on the cart page\n useEffect(() => {\n if (itemRef.current !== totalItems && !pathname.includes('/cart')) {\n timedOpen();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [totalItems, itemRef.current]);\n\n return (\n <div\n className=\"z-50 h-full\"\n onMouseEnter={openAndCancel}\n onMouseLeave={close}\n >\n <Popover className=\"relative h-full\">\n <PopoverButton className=\"h-full\">\n <LocalizedClientLink\n className=\"hover:text-ui-fg-base\"\n href=\"/cart\"\n data-testid=\"nav-cart-link\"\n >{`Cart (${totalItems})`}</LocalizedClientLink>\n </PopoverButton>\n <Transition\n show={cartDropdownOpen}\n as={Fragment}\n enter=\"transition ease-out duration-200\"\n enterFrom=\"opacity-0 translate-y-1\"\n enterTo=\"opacity-100 translate-y-0\"\n leave=\"transition ease-in duration-150\"\n leaveFrom=\"opacity-100 translate-y-0\"\n leaveTo=\"opacity-0 translate-y-1\"\n >\n <PopoverPanel\n static\n className=\"text-ui-fg-base small:block absolute top-[calc(100%+1px)] right-0 hidden w-[420px] border-x border-b border-gray-200 bg-white\"\n data-testid=\"nav-cart-dropdown\"\n >\n <div className=\"flex items-center justify-center p-4\">\n <h3 className=\"text-large-semi\">Cart</h3>\n </div>\n {cartState && cartState.items?.length ? (\n <>\n <div className=\"no-scrollbar grid max-h-[402px] grid-cols-1 gap-y-8 overflow-y-scroll p-px px-4\">\n {cartState.items\n .sort((a, b) => {\n return (a.createdAt ?? '') > (b.createdAt ?? '') ? -1 : 1;\n })\n .map((item) => (\n <div\n className=\"grid grid-cols-[122px_1fr] gap-x-4\"\n key={item.id}\n data-testid=\"cart-item\"\n >\n <LocalizedClientLink\n href={`/products/${item.productHandle}`}\n className=\"w-24\"\n >\n <Thumbnail\n thumbnail={item.thumbnail}\n images={item.variant?.product?.images}\n size=\"square\"\n />\n </LocalizedClientLink>\n <div className=\"flex flex-1 flex-col justify-between\">\n <div className=\"flex flex-1 flex-col\">\n <div className=\"flex items-start justify-between\">\n <div className=\"mr-4 flex w-[180px] flex-col overflow-ellipsis whitespace-nowrap\">\n <h3 className=\"text-base-regular overflow-hidden text-ellipsis\">\n <LocalizedClientLink\n href={`/products/${item.productHandle}`}\n data-testid=\"product-link\"\n >\n {item.title}\n </LocalizedClientLink>\n </h3>\n <LineItemOptions\n variant={item.variant}\n data-testid=\"cart-item-variant\"\n data-value={item.variant}\n />\n <span\n data-testid=\"cart-item-quantity\"\n data-value={item.quantity}\n >\n Quantity: {item.quantity}\n </span>\n </div>\n <div className=\"flex justify-end\">\n <LineItemPrice\n item={item}\n style=\"tight\"\n currencyCode={cartState.currencyCode}\n />\n </div>\n </div>\n </div>\n <DeleteButton\n id={item.id}\n className=\"mt-1\"\n data-testid=\"cart-item-remove-button\"\n >\n Remove\n </DeleteButton>\n </div>\n </div>\n ))}\n </div>\n <div className=\"text-small-regular flex flex-col gap-y-4 p-4\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-ui-fg-base font-semibold\">\n Subtotal{' '}\n <span className=\"font-normal\">(excl. taxes)</span>\n </span>\n <span\n className=\"text-large-semi\"\n data-testid=\"cart-subtotal\"\n data-value={subtotal}\n >\n {convertToLocale({\n amount: subtotal,\n currency_code: cartState.currencyCode,\n })}\n </span>\n </div>\n <LocalizedClientLink href=\"/cart\">\n <Button\n className=\"w-full\"\n size=\"large\"\n data-testid=\"go-to-cart-button\"\n >\n Go to cart\n </Button>\n </LocalizedClientLink>\n </div>\n </>\n ) : (\n <div>\n <div className=\"flex flex-col items-center justify-center gap-y-4 py-16\">\n <div className=\"text-small-regular flex h-6 w-6 items-center justify-center rounded-full bg-gray-900 text-white\">\n <span>0</span>\n </div>\n <span>Your shopping bag is empty.</span>\n <div>\n <LocalizedClientLink href=\"/store\">\n <>\n <span className=\"sr-only\">Go to all products page</span>\n <Button onClick={close}>Explore products</Button>\n </>\n </LocalizedClientLink>\n </div>\n </div>\n </div>\n )}\n </PopoverPanel>\n </Transition>\n </Popover>\n </div>\n );\n};\n\nexport { CartDropdown };\n"],"mappings":";;;;;;;;;;;;;;;AAuBA,MAAM,gBAAgB,EAAE,MAAM,gBAAwC;CACpE,MAAM,CAAC,aAAa,kBAAkB,SACpC,OACD;CACD,MAAM,CAAC,kBAAkB,uBAAuB,SAAS,MAAM;CAE/D,MAAM,aAAa,oBAAoB,KAAK;CAC5C,MAAM,cAAc,oBAAoB,MAAM;CAE9C,MAAM,aACJ,WAAW,OAAO,QAAQ,KAAK,SAAS;AACtC,SAAO,MAAM,KAAK;IACjB,EAAE,IAAI;CAEX,MAAM,WAAW,WAAW,YAAY;CACxC,MAAM,UAAU,OAAe,cAAc,EAAE;CAE/C,MAAM,kBAAkB;AACtB,QAAM;AAIN,iBAFc,WAAW,OAAO,IAAK,CAEhB;;CAGvB,MAAM,sBAAsB;AAC1B,MAAI,YACF,cAAa,YAAY;AAG3B,QAAM;;AAIR,iBAAgB;AACd,eAAa;AACX,OAAI,YACF,cAAa,YAAY;;IAG5B,CAAC,YAAY,CAAC;CAEjB,MAAM,WAAW,aAAa;AAG9B,iBAAgB;AACd,MAAI,QAAQ,YAAY,cAAc,CAAC,SAAS,SAAS,QAAQ,CAC/D,YAAW;IAGZ,CAAC,YAAY,QAAQ,QAAQ,CAAC;AAEjC,QACE,oBAAC;EACC,WAAU;EACV,cAAc;EACd,cAAc;YAEd,qBAAC;GAAQ,WAAU;cACjB,oBAAC;IAAc,WAAU;cACvB,oBAAC;KACC,WAAU;KACV,MAAK;KACL,eAAY;eACZ,SAAS,WAAW;MAAyB;KACjC,EAChB,oBAAC;IACC,MAAM;IACN,IAAI;IACJ,OAAM;IACN,WAAU;IACV,SAAQ;IACR,OAAM;IACN,WAAU;IACV,SAAQ;cAER,qBAAC;KACC;KACA,WAAU;KACV,eAAY;gBAEZ,oBAAC;MAAI,WAAU;gBACb,oBAAC;OAAG,WAAU;iBAAkB;QAAS;OACrC,EACL,aAAa,UAAU,OAAO,SAC7B,8CACE,oBAAC;MAAI,WAAU;gBACZ,UAAU,MACR,MAAM,GAAG,MAAM;AACd,eAAQ,EAAE,aAAa,OAAO,EAAE,aAAa,MAAM,KAAK;QACxD,CACD,KAAK,SACJ,qBAAC;OACC,WAAU;OAEV,eAAY;kBAEZ,oBAAC;QACC,MAAM,aAAa,KAAK;QACxB,WAAU;kBAEV,oBAAC;SACC,WAAW,KAAK;SAChB,QAAQ,KAAK,SAAS,SAAS;SAC/B,MAAK;UACL;SACkB,EACtB,qBAAC;QAAI,WAAU;mBACb,oBAAC;SAAI,WAAU;mBACb,qBAAC;UAAI,WAAU;qBACb,qBAAC;WAAI,WAAU;;YACb,oBAAC;aAAG,WAAU;uBACZ,oBAAC;cACC,MAAM,aAAa,KAAK;cACxB,eAAY;wBAEX,KAAK;eACc;cACnB;YACL,oBAAC;aACC,SAAS,KAAK;aACd,eAAY;aACZ,cAAY,KAAK;cACjB;YACF,qBAAC;aACC,eAAY;aACZ,cAAY,KAAK;wBAClB,cACY,KAAK;cACX;;YACH,EACN,oBAAC;WAAI,WAAU;qBACb,oBAAC;YACO;YACN,OAAM;YACN,cAAc,UAAU;aACxB;YACE;WACF;UACF,EACN,oBAAC;SACC,IAAI,KAAK;SACT,WAAU;SACV,eAAY;mBACb;UAEc;SACX;SArDD,KAAK,GAsDN,CACN;OACA,EACN,qBAAC;MAAI,WAAU;iBACb,qBAAC;OAAI,WAAU;kBACb,qBAAC;QAAK,WAAU;;SAAgC;SACrC;SACT,oBAAC;UAAK,WAAU;oBAAc;WAAoB;;SAC7C,EACP,oBAAC;QACC,WAAU;QACV,eAAY;QACZ,cAAY;kBAEX,gBAAgB;SACf,QAAQ;SACR,eAAe,UAAU;SAC1B,CAAC;SACG;QACH,EACN,oBAAC;OAAoB,MAAK;iBACxB,oBAAC;QACC,WAAU;QACV,MAAK;QACL,eAAY;kBACb;SAEQ;QACW;OAClB,IACL,GAEH,oBAAC,mBACC,qBAAC;MAAI,WAAU;;OACb,oBAAC;QAAI,WAAU;kBACb,oBAAC,oBAAK,MAAQ;SACV;OACN,oBAAC,oBAAK,gCAAkC;OACxC,oBAAC,mBACC,oBAAC;QAAoB,MAAK;kBACxB,8CACE,oBAAC;SAAK,WAAU;mBAAU;UAA8B,EACxD,oBAAC;SAAO,SAAS;mBAAO;UAAyB,IAChD;SACiB,GAClB;;OACF,GACF;MAEK;KACJ;IACL;GACN"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as
|
|
1
|
+
import { Cart, Customer } from "../../types/graphql.js";
|
|
2
|
+
import * as react_jsx_runtime3 from "react/jsx-runtime";
|
|
3
3
|
|
|
4
4
|
//#region src/components/cart-mismatch-banner/index.d.ts
|
|
5
5
|
declare function CartMismatchBanner(props: {
|
|
6
6
|
customer: Customer;
|
|
7
7
|
cart: Cart;
|
|
8
|
-
}):
|
|
8
|
+
}): react_jsx_runtime3.JSX.Element | undefined;
|
|
9
9
|
//#endregion
|
|
10
10
|
export { CartMismatchBanner };
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/cart-mismatch-banner/index.tsx"],"sourcesContent":[],"mappings":";;;;iBAWS,kBAAA;YAAsC;EAAtC,IAAA,EAAsD,IAAtD;CAAsC,CAAA,EAAsB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/cart-mismatch-banner/index.tsx"],"sourcesContent":[],"mappings":";;;;iBAWS,kBAAA;YAAsC;EAAtC,IAAA,EAAsD,IAAtD;CAAsC,CAAA,EAAsB,kBAAA,CAAA,GAAA,CAAA,OAAA,GAAtB,SAAA"}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import "../../
|
|
4
|
-
import "../../product-COu5D1mS.js";
|
|
5
|
-
import "../../cart-BNoIGQmw.js";
|
|
6
|
-
import "../../cart-IHaLnQC4.js";
|
|
7
|
-
import "../../cookies-lksVIe4_.js";
|
|
8
|
-
import "../../customer-CgN4zI00.js";
|
|
9
|
-
import "../../customer-DIJz6m7L.js";
|
|
10
|
-
import { n as transferCart } from "../../customer-ClewjBBr.js";
|
|
3
|
+
import { transferCart } from "../../lib/data/customer.js";
|
|
11
4
|
import { useState } from "react";
|
|
12
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
6
|
import { Button } from "@medusajs/ui";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/cart-mismatch-banner/index.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\n\nimport { ExclamationCircleSolid } from '@medusajs/icons';\nimport { Button } from '@medusajs/ui';\n\nimport { transferCart } from '@/lib/data/customer';\nimport { Customer } from '@/types/graphql';\nimport { Cart } from '@/types/graphql';\n\nfunction CartMismatchBanner(props: { customer: Customer; cart: Cart }) {\n const { customer, cart } = props;\n const [isPending, setIsPending] = useState(false);\n const [actionText, setActionText] = useState('Run transfer again');\n\n if (!customer || !!cart.customerId) {\n return;\n }\n\n const handleSubmit = async () => {\n try {\n setIsPending(true);\n setActionText('Transferring..');\n\n await transferCart();\n } catch {\n setActionText('Run transfer again');\n setIsPending(false);\n }\n };\n\n return (\n <div className=\"small:gap-2 small:p-4 mt-2 flex items-center justify-center gap-1 bg-orange-300 p-2 text-center text-sm text-orange-800\">\n <div className=\"small:flex-row small:gap-2 flex flex-col items-center gap-1\">\n <span className=\"flex items-center gap-1\">\n <ExclamationCircleSolid className=\"inline\" />\n Something went wrong when we tried to transfer your cart\n </span>\n\n <span>·</span>\n\n <Button\n variant=\"transparent\"\n className=\"bg-transparent p-0 text-orange-950 hover:bg-transparent focus:bg-transparent active:bg-transparent disabled:text-orange-500\"\n size=\"base\"\n disabled={isPending}\n onClick={handleSubmit}\n >\n {actionText}\n </Button>\n </div>\n </div>\n );\n}\n\nexport { CartMismatchBanner };\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/cart-mismatch-banner/index.tsx"],"sourcesContent":["'use client';\n\nimport { useState } from 'react';\n\nimport { ExclamationCircleSolid } from '@medusajs/icons';\nimport { Button } from '@medusajs/ui';\n\nimport { transferCart } from '@/lib/data/customer';\nimport { Customer } from '@/types/graphql';\nimport { Cart } from '@/types/graphql';\n\nfunction CartMismatchBanner(props: { customer: Customer; cart: Cart }) {\n const { customer, cart } = props;\n const [isPending, setIsPending] = useState(false);\n const [actionText, setActionText] = useState('Run transfer again');\n\n if (!customer || !!cart.customerId) {\n return;\n }\n\n const handleSubmit = async () => {\n try {\n setIsPending(true);\n setActionText('Transferring..');\n\n await transferCart();\n } catch {\n setActionText('Run transfer again');\n setIsPending(false);\n }\n };\n\n return (\n <div className=\"small:gap-2 small:p-4 mt-2 flex items-center justify-center gap-1 bg-orange-300 p-2 text-center text-sm text-orange-800\">\n <div className=\"small:flex-row small:gap-2 flex flex-col items-center gap-1\">\n <span className=\"flex items-center gap-1\">\n <ExclamationCircleSolid className=\"inline\" />\n Something went wrong when we tried to transfer your cart\n </span>\n\n <span>·</span>\n\n <Button\n variant=\"transparent\"\n className=\"bg-transparent p-0 text-orange-950 hover:bg-transparent focus:bg-transparent active:bg-transparent disabled:text-orange-500\"\n size=\"base\"\n disabled={isPending}\n onClick={handleSubmit}\n >\n {actionText}\n </Button>\n </div>\n </div>\n );\n}\n\nexport { CartMismatchBanner };\n"],"mappings":";;;;;;;;;AAWA,SAAS,mBAAmB,OAA2C;CACrE,MAAM,EAAE,UAAU,SAAS;CAC3B,MAAM,CAAC,WAAW,gBAAgB,SAAS,MAAM;CACjD,MAAM,CAAC,YAAY,iBAAiB,SAAS,qBAAqB;AAElE,KAAI,CAAC,YAAY,CAAC,CAAC,KAAK,WACtB;CAGF,MAAM,eAAe,YAAY;AAC/B,MAAI;AACF,gBAAa,KAAK;AAClB,iBAAc,iBAAiB;AAE/B,SAAM,cAAc;UACd;AACN,iBAAc,qBAAqB;AACnC,gBAAa,MAAM;;;AAIvB,QACE,oBAAC;EAAI,WAAU;YACb,qBAAC;GAAI,WAAU;;IACb,qBAAC;KAAK,WAAU;gBACd,oBAAC,0BAAuB,WAAU,WAAW;MAExC;IAEP,oBAAC,oBAAK,MAAQ;IAEd,oBAAC;KACC,SAAQ;KACR,WAAU;KACV,MAAK;KACL,UAAU;KACV,SAAS;eAER;MACM;;IACL;GACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime4 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/components/delete-button/index.d.ts
|
|
4
4
|
declare const DeleteButton: ({
|
|
@@ -9,7 +9,7 @@ declare const DeleteButton: ({
|
|
|
9
9
|
id: string;
|
|
10
10
|
children?: React.ReactNode;
|
|
11
11
|
className?: string;
|
|
12
|
-
}) =>
|
|
12
|
+
}) => react_jsx_runtime4.JSX.Element;
|
|
13
13
|
//#endregion
|
|
14
14
|
export { DeleteButton };
|
|
15
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,12 +1,28 @@
|
|
|
1
|
-
import "../../
|
|
2
|
-
import "
|
|
3
|
-
import "
|
|
4
|
-
import "
|
|
5
|
-
import "
|
|
6
|
-
import "../../cart-DH8urwwT.js";
|
|
7
|
-
import "../../cookies-lksVIe4_.js";
|
|
8
|
-
import "../../regions-r1AvxfT8.js";
|
|
9
|
-
import "../../cart-xkcyWLfU.js";
|
|
10
|
-
import { t as DeleteButton } from "../../delete-button-Bnm5bof2.js";
|
|
1
|
+
import { deleteLineItem } from "../../lib/data/cart.js";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { clx } from "@medusajs/ui";
|
|
5
|
+
import { Spinner, Trash } from "@medusajs/icons";
|
|
11
6
|
|
|
12
|
-
|
|
7
|
+
//#region src/components/delete-button/index.tsx
|
|
8
|
+
const DeleteButton = ({ id, children, className }) => {
|
|
9
|
+
const [isDeleting, setIsDeleting] = useState(false);
|
|
10
|
+
const handleDelete = async (id$1) => {
|
|
11
|
+
setIsDeleting(true);
|
|
12
|
+
await deleteLineItem(id$1).catch((err) => {
|
|
13
|
+
setIsDeleting(false);
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
return /* @__PURE__ */ jsx("div", {
|
|
17
|
+
className: clx("text-small-regular flex items-center justify-between", className),
|
|
18
|
+
children: /* @__PURE__ */ jsxs("button", {
|
|
19
|
+
className: "text-ui-fg-subtle hover:text-ui-fg-base flex cursor-pointer gap-x-1",
|
|
20
|
+
onClick: () => handleDelete(id),
|
|
21
|
+
children: [isDeleting ? /* @__PURE__ */ jsx(Spinner, { className: "animate-spin" }) : /* @__PURE__ */ jsx(Trash, {}), /* @__PURE__ */ jsx("span", { children })]
|
|
22
|
+
})
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
export { DeleteButton };
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["id"],"sources":["../../../src/components/delete-button/index.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Spinner, Trash } from '@medusajs/icons';\nimport { clx } from '@medusajs/ui';\n\nimport { deleteLineItem } from '@/lib/data/cart';\n\nconst DeleteButton = ({\n id,\n children,\n className,\n}: {\n id: string;\n children?: React.ReactNode;\n className?: string;\n}) => {\n const [isDeleting, setIsDeleting] = useState(false);\n\n const handleDelete = async (id: string) => {\n setIsDeleting(true);\n await deleteLineItem(id).catch((err) => {\n setIsDeleting(false);\n });\n };\n\n return (\n <div\n className={clx(\n 'text-small-regular flex items-center justify-between',\n className\n )}\n >\n <button\n className=\"text-ui-fg-subtle hover:text-ui-fg-base flex cursor-pointer gap-x-1\"\n onClick={() => handleDelete(id)}\n >\n {isDeleting ? <Spinner className=\"animate-spin\" /> : <Trash />}\n <span>{children}</span>\n </button>\n </div>\n );\n};\n\nexport { DeleteButton };\n"],"mappings":";;;;;;;AAOA,MAAM,gBAAgB,EACpB,IACA,UACA,gBAKI;CACJ,MAAM,CAAC,YAAY,iBAAiB,SAAS,MAAM;CAEnD,MAAM,eAAe,OAAO,SAAe;AACzC,gBAAc,KAAK;AACnB,QAAM,eAAeA,KAAG,CAAC,OAAO,QAAQ;AACtC,iBAAc,MAAM;IACpB;;AAGJ,QACE,oBAAC;EACC,WAAW,IACT,wDACA,UACD;YAED,qBAAC;GACC,WAAU;GACV,eAAe,aAAa,GAAG;cAE9B,aAAa,oBAAC,WAAQ,WAAU,iBAAiB,GAAG,oBAAC,UAAQ,EAC9D,oBAAC,UAAM,WAAgB;IAChB;GACL"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime21 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/components/error-message/index.d.ts
|
|
4
4
|
declare const ErrorMessage: ({
|
|
@@ -7,7 +7,7 @@ declare const ErrorMessage: ({
|
|
|
7
7
|
}: {
|
|
8
8
|
error?: string | null;
|
|
9
9
|
"data-testid"?: string;
|
|
10
|
-
}) =>
|
|
10
|
+
}) => react_jsx_runtime21.JSX.Element | null;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { ErrorMessage };
|
|
13
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/error-message/index.tsx"],"sourcesContent":[],"mappings":";;;cAAM;;iBAAgB;AAMrB;;;AAAA,CAAA,EAAA,GAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/error-message/index.tsx"],"sourcesContent":[],"mappings":";;;cAAM;;iBAAgB;AAMrB;;;AAAA,CAAA,EAAA,GAAA,mBAAA,CAAA,GAAA,CAAA,OAAA,GAaA,IAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react_jsx_runtime17 from "react/jsx-runtime";
|
|
2
2
|
|
|
3
3
|
//#region src/components/footer/index.d.ts
|
|
4
|
-
declare function Footer(): Promise<
|
|
4
|
+
declare function Footer(): Promise<react_jsx_runtime17.JSX.Element>;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { Footer as default };
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/footer/index.tsx"],"sourcesContent":[],"mappings":";;;iBAU8B,MAAA,CAAA,GAAM,QAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/footer/index.tsx"],"sourcesContent":[],"mappings":";;;iBAU8B,MAAA,CAAA,GAAM,QAAA,mBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import "
|
|
2
|
-
import "../../
|
|
3
|
-
import {
|
|
4
|
-
import "../../
|
|
5
|
-
import {
|
|
6
|
-
import "../../collections-DMv3UYgC.js";
|
|
7
|
-
import { t as listCollections } from "../../collections-BgyvhW2p.js";
|
|
8
|
-
import "../../footer-DCtgtjKS.js";
|
|
9
|
-
import { t as getFooterContent } from "../../footer-BvNV-R9D.js";
|
|
10
|
-
import { t as PortableText } from "../../portable-text-CuI022GH.js";
|
|
1
|
+
import { LocalizedClientLink } from "../localized-client-link/index.js";
|
|
2
|
+
import { listCategories } from "../../lib/data/categories.js";
|
|
3
|
+
import { listCollections } from "../../lib/data/collections.js";
|
|
4
|
+
import { getFooterContent } from "../../lib/data/footer.js";
|
|
5
|
+
import { PortableText } from "../portable-text/index.js";
|
|
11
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
7
|
import { Text, clx } from "@medusajs/ui";
|
|
13
8
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/footer/index.tsx"],"sourcesContent":["import { Text, clx } from '@medusajs/ui';\n\nimport { listCategories } from '@/lib/data/categories';\nimport { listCollections } from '@/lib/data/collections';\nimport { getFooterContent } from '@/lib/data/footer';\nimport { RichTextBlock } from '@/types/graphql';\n\nimport { LocalizedClientLink } from '../localized-client-link';\nimport { PortableText } from '../portable-text';\n\nexport default async function Footer() {\n const { collections } = await listCollections();\n const productCategories = await listCategories();\n const footerContent = await getFooterContent();\n\n return (\n <footer className=\"border-ui-border-base w-full border-t\">\n <div className=\"content-container flex w-full flex-col\">\n <div className=\"xsmall:flex-row flex flex-col items-start justify-between gap-y-6 py-40\">\n <div>\n <LocalizedClientLink\n href=\"/\"\n className=\"txt-compact-xlarge-plus text-ui-fg-subtle hover:text-ui-fg-base uppercase\"\n >\n {footerContent?.storeName || 'Medusa Store'}\n </LocalizedClientLink>\n </div>\n <div className=\"text-small-regular grid grid-cols-2 gap-10 sm:grid-cols-3 md:gap-x-16\">\n {productCategories && productCategories?.length > 0 && (\n <div className=\"flex flex-col gap-y-2\">\n <span className=\"txt-ui-fg-base txt-small-plus\">\n Categories\n </span>\n <ul\n className=\"grid grid-cols-1 gap-2\"\n data-testid=\"footer-categories\"\n >\n {productCategories?.slice(0, 6).map((c) => {\n if (c.parentCategory) {\n return;\n }\n\n const children =\n c.categoryChildren?.map((child) => ({\n name: child.name,\n handle: child.handle,\n id: child.id,\n })) || null;\n\n return (\n <li\n className=\"txt-small text-ui-fg-subtle flex flex-col gap-2\"\n key={c.id}\n >\n <LocalizedClientLink\n className={clx(\n 'hover:text-ui-fg-base',\n children && 'txt-small-plus'\n )}\n href={`/categories/${c.handle}`}\n data-testid=\"category-link\"\n >\n {c.name}\n </LocalizedClientLink>\n {children && (\n <ul className=\"ml-3 grid grid-cols-1 gap-2\">\n {children &&\n children.map((child) => (\n <li key={child.id}>\n <LocalizedClientLink\n className=\"hover:text-ui-fg-base\"\n href={`/categories/${child.handle}`}\n data-testid=\"category-link\"\n >\n {child.name}\n </LocalizedClientLink>\n </li>\n ))}\n </ul>\n )}\n </li>\n );\n })}\n </ul>\n </div>\n )}\n {collections && collections.length > 0 && (\n <div className=\"flex flex-col gap-y-2\">\n <span className=\"txt-ui-fg-base txt-small-plus\">\n Collections\n </span>\n <ul\n className={clx(\n 'txt-small text-ui-fg-subtle grid grid-cols-1 gap-2',\n {\n 'grid-cols-2': (collections?.length || 0) > 3,\n }\n )}\n >\n {collections?.slice(0, 6).map((c) => (\n <li key={c.id}>\n <LocalizedClientLink\n className=\"hover:text-ui-fg-base\"\n href={`/collections/${c.handle}`}\n >\n {c.title}\n </LocalizedClientLink>\n </li>\n ))}\n </ul>\n </div>\n )}\n <div className=\"flex flex-col gap-y-2\">\n <span className=\"txt-ui-fg-base txt-small-plus\">Medusa</span>\n <ul className=\"txt-small text-ui-fg-subtle grid grid-cols-1 gap-y-2\">\n {footerContent?.social &&\n footerContent?.social.map(\n (social: { text: string; url: string }, index: number) => (\n <li key={index}>\n <a\n href={social.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"hover:text-ui-fg-base capitalize\"\n >\n {social.text}\n </a>\n </li>\n )\n )}\n </ul>\n </div>\n </div>\n </div>\n <div className=\"text-ui-fg-muted mb-16 flex w-full flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <Text className=\"txt-compact-small\">\n ©{`${new Date().getFullYear()} ${footerContent?.copyright}`}\n </Text>\n <div className=\"flex items-center gap-4\">\n {footerContent?.poweredByCta && (\n <PortableText\n value={footerContent.poweredByCta.text as RichTextBlock[]}\n />\n )}\n </div>\n </div>\n </div>\n </footer>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/footer/index.tsx"],"sourcesContent":["import { Text, clx } from '@medusajs/ui';\n\nimport { listCategories } from '@/lib/data/categories';\nimport { listCollections } from '@/lib/data/collections';\nimport { getFooterContent } from '@/lib/data/footer';\nimport { RichTextBlock } from '@/types/graphql';\n\nimport { LocalizedClientLink } from '../localized-client-link';\nimport { PortableText } from '../portable-text';\n\nexport default async function Footer() {\n const { collections } = await listCollections();\n const productCategories = await listCategories();\n const footerContent = await getFooterContent();\n\n return (\n <footer className=\"border-ui-border-base w-full border-t\">\n <div className=\"content-container flex w-full flex-col\">\n <div className=\"xsmall:flex-row flex flex-col items-start justify-between gap-y-6 py-40\">\n <div>\n <LocalizedClientLink\n href=\"/\"\n className=\"txt-compact-xlarge-plus text-ui-fg-subtle hover:text-ui-fg-base uppercase\"\n >\n {footerContent?.storeName || 'Medusa Store'}\n </LocalizedClientLink>\n </div>\n <div className=\"text-small-regular grid grid-cols-2 gap-10 sm:grid-cols-3 md:gap-x-16\">\n {productCategories && productCategories?.length > 0 && (\n <div className=\"flex flex-col gap-y-2\">\n <span className=\"txt-ui-fg-base txt-small-plus\">\n Categories\n </span>\n <ul\n className=\"grid grid-cols-1 gap-2\"\n data-testid=\"footer-categories\"\n >\n {productCategories?.slice(0, 6).map((c) => {\n if (c.parentCategory) {\n return;\n }\n\n const children =\n c.categoryChildren?.map((child) => ({\n name: child.name,\n handle: child.handle,\n id: child.id,\n })) || null;\n\n return (\n <li\n className=\"txt-small text-ui-fg-subtle flex flex-col gap-2\"\n key={c.id}\n >\n <LocalizedClientLink\n className={clx(\n 'hover:text-ui-fg-base',\n children && 'txt-small-plus'\n )}\n href={`/categories/${c.handle}`}\n data-testid=\"category-link\"\n >\n {c.name}\n </LocalizedClientLink>\n {children && (\n <ul className=\"ml-3 grid grid-cols-1 gap-2\">\n {children &&\n children.map((child) => (\n <li key={child.id}>\n <LocalizedClientLink\n className=\"hover:text-ui-fg-base\"\n href={`/categories/${child.handle}`}\n data-testid=\"category-link\"\n >\n {child.name}\n </LocalizedClientLink>\n </li>\n ))}\n </ul>\n )}\n </li>\n );\n })}\n </ul>\n </div>\n )}\n {collections && collections.length > 0 && (\n <div className=\"flex flex-col gap-y-2\">\n <span className=\"txt-ui-fg-base txt-small-plus\">\n Collections\n </span>\n <ul\n className={clx(\n 'txt-small text-ui-fg-subtle grid grid-cols-1 gap-2',\n {\n 'grid-cols-2': (collections?.length || 0) > 3,\n }\n )}\n >\n {collections?.slice(0, 6).map((c) => (\n <li key={c.id}>\n <LocalizedClientLink\n className=\"hover:text-ui-fg-base\"\n href={`/collections/${c.handle}`}\n >\n {c.title}\n </LocalizedClientLink>\n </li>\n ))}\n </ul>\n </div>\n )}\n <div className=\"flex flex-col gap-y-2\">\n <span className=\"txt-ui-fg-base txt-small-plus\">Medusa</span>\n <ul className=\"txt-small text-ui-fg-subtle grid grid-cols-1 gap-y-2\">\n {footerContent?.social &&\n footerContent?.social.map(\n (social: { text: string; url: string }, index: number) => (\n <li key={index}>\n <a\n href={social.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"hover:text-ui-fg-base capitalize\"\n >\n {social.text}\n </a>\n </li>\n )\n )}\n </ul>\n </div>\n </div>\n </div>\n <div className=\"text-ui-fg-muted mb-16 flex w-full flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <Text className=\"txt-compact-small\">\n ©{`${new Date().getFullYear()} ${footerContent?.copyright}`}\n </Text>\n <div className=\"flex items-center gap-4\">\n {footerContent?.poweredByCta && (\n <PortableText\n value={footerContent.poweredByCta.text as RichTextBlock[]}\n />\n )}\n </div>\n </div>\n </div>\n </footer>\n );\n}\n"],"mappings":";;;;;;;;;AAUA,eAA8B,SAAS;CACrC,MAAM,EAAE,gBAAgB,MAAM,iBAAiB;CAC/C,MAAM,oBAAoB,MAAM,gBAAgB;CAChD,MAAM,gBAAgB,MAAM,kBAAkB;AAE9C,QACE,oBAAC;EAAO,WAAU;YAChB,qBAAC;GAAI,WAAU;cACb,qBAAC;IAAI,WAAU;eACb,oBAAC,mBACC,oBAAC;KACC,MAAK;KACL,WAAU;eAET,eAAe,aAAa;MACT,GAClB,EACN,qBAAC;KAAI,WAAU;;MACZ,qBAAqB,mBAAmB,SAAS,KAChD,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAK,WAAU;kBAAgC;SAEzC,EACP,oBAAC;QACC,WAAU;QACV,eAAY;kBAEX,mBAAmB,MAAM,GAAG,EAAE,CAAC,KAAK,MAAM;AACzC,aAAI,EAAE,eACJ;SAGF,MAAM,WACJ,EAAE,kBAAkB,KAAK,WAAW;UAClC,MAAM,MAAM;UACZ,QAAQ,MAAM;UACd,IAAI,MAAM;UACX,EAAE,IAAI;AAET,gBACE,qBAAC;UACC,WAAU;qBAGV,oBAAC;WACC,WAAW,IACT,yBACA,YAAY,iBACb;WACD,MAAM,eAAe,EAAE;WACvB,eAAY;qBAEX,EAAE;YACiB,EACrB,YACC,oBAAC;WAAG,WAAU;qBACX,YACC,SAAS,KAAK,UACZ,oBAAC,kBACC,oBAAC;YACC,WAAU;YACV,MAAM,eAAe,MAAM;YAC3B,eAAY;sBAEX,MAAM;aACa,IAPf,MAAM,GAQV,CACL;YACD;YA1BF,EAAE,GA4BJ;UAEP;SACC;QACD;MAEP,eAAe,YAAY,SAAS,KACnC,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAK,WAAU;kBAAgC;SAEzC,EACP,oBAAC;QACC,WAAW,IACT,sDACA,EACE,gBAAgB,aAAa,UAAU,KAAK,GAC7C,CACF;kBAEA,aAAa,MAAM,GAAG,EAAE,CAAC,KAAK,MAC7B,oBAAC,kBACC,oBAAC;SACC,WAAU;SACV,MAAM,gBAAgB,EAAE;mBAEvB,EAAE;UACiB,IANf,EAAE,GAON,CACL;SACC;QACD;MAER,qBAAC;OAAI,WAAU;kBACb,oBAAC;QAAK,WAAU;kBAAgC;SAAa,EAC7D,oBAAC;QAAG,WAAU;kBACX,eAAe,UACd,eAAe,OAAO,KACnB,QAAuC,UACtC,oBAAC,kBACC,oBAAC;SACC,MAAM,OAAO;SACb,QAAO;SACP,KAAI;SACJ,WAAU;mBAET,OAAO;UACN,IARG,MASJ,CAER;SACA;QACD;;MACF;KACF,EACN,qBAAC;IAAI,WAAU;eACb,qBAAC;KAAK,WAAU;gBAAoB,KAChC,oBAAG,IAAI,MAAM,EAAC,aAAa,CAAC,GAAG,eAAe;MAC3C,EACP,oBAAC;KAAI,WAAU;eACZ,eAAe,gBACd,oBAAC,gBACC,OAAO,cAAc,aAAa,OAClC;MAEA;KACF;IACF;GACC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import * as
|
|
1
|
+
import { Cart } from "../../types/graphql.js";
|
|
2
|
+
import * as react_jsx_runtime22 from "react/jsx-runtime";
|
|
3
3
|
import { StoreCartShippingOption } from "@medusajs/types";
|
|
4
4
|
|
|
5
5
|
//#region src/components/free-shipping-price-nudge/index.d.ts
|
|
@@ -11,7 +11,7 @@ declare function ShippingPriceNudge({
|
|
|
11
11
|
variant?: 'popup' | 'inline';
|
|
12
12
|
cart: Cart;
|
|
13
13
|
shippingOptions: StoreCartShippingOption[];
|
|
14
|
-
}):
|
|
14
|
+
}): react_jsx_runtime22.JSX.Element | undefined;
|
|
15
15
|
//#endregion
|
|
16
16
|
export { ShippingPriceNudge };
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/free-shipping-price-nudge/index.tsx"],"sourcesContent":[],"mappings":";;;;;iBA0ES,kBAAA;;;;;;QAMD;EANC,eAAA,EAOU,uBAPQ,EAAA;CACzB,CAAA,EAOD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/components/free-shipping-price-nudge/index.tsx"],"sourcesContent":[],"mappings":";;;;;iBA0ES,kBAAA;;;;;;QAMD;EANC,eAAA,EAOU,uBAPQ,EAAA;CACzB,CAAA,EAOD,mBAAA,CAAA,GAAA,CAAA,OAAA,GAPC,SAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { convertToLocale } from "../../lib/utils/money.js";
|
|
4
|
+
import { LocalizedClientLink } from "../localized-client-link/index.js";
|
|
5
5
|
import { useState } from "react";
|
|
6
6
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
import { Button, clx } from "@medusajs/ui";
|