@mframework/layer-commerce 0.0.3
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/README.md +101 -0
- package/app/cart/useCart.ts +1 -0
- package/app/components/ChevronIcon/ChevronIcon.config.ts +17 -0
- package/app/components/DateSelect/DateSelect.config.ts +15 -0
- package/app/components/Field/Field.config.ts +14 -0
- package/app/components/FieldDate/FieldDate.config.ts +16 -0
- package/app/components/Form/Form.type.ts +8 -0
- package/app/components/Product/Product.config.ts +19 -0
- package/app/components/Product/Stock.config.ts +15 -0
- package/app/components/ProductCustomizableOption/ProductCustomizableOption.config.ts +5 -0
- package/app/components/ProductGallery/ProductGallery.config.ts +15 -0
- package/app/components/ProductReviews/ProductReviews.config.ts +8 -0
- package/app/composables/_types.ts +18 -0
- package/app/composables/adapters/abstract/cartAdapter.ts +0 -0
- package/app/composables/adapters/abstract/categoryAdapter.ts +0 -0
- package/app/composables/adapters/abstract/customerAdapter.ts +0 -0
- package/app/composables/adapters/abstract/inventoryAdapter.ts +0 -0
- package/app/composables/adapters/abstract/orderAdapter.ts +0 -0
- package/app/composables/adapters/abstract/productAdapter.ts +7 -0
- package/app/composables/cart/registry.ts +20 -0
- package/app/composables/cart/types.ts +18 -0
- package/app/composables/cart/useCart.ts +15 -0
- package/app/composables/config.ts +19 -0
- package/app/composables/defs/apiDefinitions.ts +55 -0
- package/app/composables/defs/extension.feature +40 -0
- package/app/composables/defs/extension.mocks.ts +39 -0
- package/app/composables/defs/extension.test.ts +280 -0
- package/app/composables/defs/extension.ts +236 -0
- package/app/composables/defs/index.ts +3 -0
- package/app/composables/defs/typeHelpers.ts +8 -0
- package/app/composables/defs/types.ts +136 -0
- package/app/composables/domain/product.ts +12 -0
- package/app/composables/featured-products.ts +20 -0
- package/app/composables/helpers/contextualizedNormalizers.feature +14 -0
- package/app/composables/helpers/contextualizedNormalizers.test.ts +85 -0
- package/app/composables/helpers/contextualizedNormalizers.ts +20 -0
- package/app/composables/helpers/index.ts +1 -0
- package/app/composables/index.ts +9 -0
- package/app/composables/methods/auth.ts +83 -0
- package/app/composables/methods/cart.ts +119 -0
- package/app/composables/methods/category.ts +27 -0
- package/app/composables/methods/checkout.ts +54 -0
- package/app/composables/methods/customer.ts +52 -0
- package/app/composables/methods/helpers.ts +5 -0
- package/app/composables/methods/index.ts +75 -0
- package/app/composables/methods/order.ts +39 -0
- package/app/composables/methods/product.ts +95 -0
- package/app/composables/methods/settings.ts +16 -0
- package/app/composables/models/cart.ts +95 -0
- package/app/composables/models/category.ts +13 -0
- package/app/composables/models/checkout.ts +17 -0
- package/app/composables/models/customer.ts +16 -0
- package/app/composables/models/facets.ts +25 -0
- package/app/composables/models/index.ts +94 -0
- package/app/composables/models/order.ts +43 -0
- package/app/composables/models/product.ts +73 -0
- package/app/composables/models/shared.ts +75 -0
- package/app/composables/orders.ts +69 -0
- package/app/composables/products/registry.ts +86 -0
- package/app/composables/products/types.ts +8 -0
- package/app/composables/products/useEvents.ts +26 -0
- package/app/composables/products/useGiftCards.ts +29 -0
- package/app/composables/products/useProducts.ts +12 -0
- package/app/composables/products/useSubscriptions.ts +29 -0
- package/app/composables/products.ts +30 -0
- package/app/composables/registry.ts +24 -0
- package/app/composables/useAuth.ts +43 -0
- package/app/composables/useBreakpoints/index.ts +1 -0
- package/app/composables/useBreakpoints/useBreakpoints.ts +28 -0
- package/app/composables/useCache.ts +38 -0
- package/app/composables/useCart/__tests__/useCart.spec.ts +11 -0
- package/app/composables/useCart/index.ts +1 -0
- package/app/composables/useCart/types.ts +17 -0
- package/app/composables/useCart/useCart.ts +46 -0
- package/app/composables/useCartShippingMethods/__tests__/useCartShippingMethods.spec.ts +11 -0
- package/app/composables/useCartShippingMethods/index.ts +1 -0
- package/app/composables/useCartShippingMethods/types.ts +17 -0
- package/app/composables/useCartShippingMethods/useCartShippingMethods.ts +47 -0
- package/app/composables/useCatalog.ts +26 -0
- package/app/composables/useContent.ts +26 -0
- package/app/composables/useCustomer/__tests__/useCustomer.spec.ts +25 -0
- package/app/composables/useCustomer/index.ts +2 -0
- package/app/composables/useCustomer/types.ts +17 -0
- package/app/composables/useCustomer/useCustomer.ts +40 -0
- package/app/composables/useCustomerAddress/__tests__/useCustomerAddress.spec.ts +11 -0
- package/app/composables/useCustomerAddress/index.ts +2 -0
- package/app/composables/useCustomerAddress/types.ts +17 -0
- package/app/composables/useCustomerAddress/useCustomerAddress.ts +55 -0
- package/app/composables/useCustomerOrder/__tests__/useCustomerOrder.spec.ts +11 -0
- package/app/composables/useCustomerOrder/adress.ts +10 -0
- package/app/composables/useCustomerOrder/index.ts +2 -0
- package/app/composables/useCustomerOrder/product.ts +37 -0
- package/app/composables/useCustomerOrder/types.ts +40 -0
- package/app/composables/useCustomerOrder/useCustomerOrder.ts +63 -0
- package/app/composables/useCustomerOrders/__tests__/useCustomerOrders.spec.ts +11 -0
- package/app/composables/useCustomerOrders/index.ts +2 -0
- package/app/composables/useCustomerOrders/types.ts +20 -0
- package/app/composables/useCustomerOrders/useCustomerOrders.ts +56 -0
- package/app/composables/useCustomerReturns/__tests__/useCustomerReturns.spec.ts +11 -0
- package/app/composables/useCustomerReturns/index.ts +2 -0
- package/app/composables/useCustomerReturns/types.ts +17 -0
- package/app/composables/useCustomerReturns/useCustomerReturns.ts +41 -0
- package/app/composables/useHandleError/index.ts +1 -0
- package/app/composables/useHandleError/types.ts +11 -0
- package/app/composables/useHandleError/useHandleError.ts +27 -0
- package/app/composables/useInventory.ts +29 -0
- package/app/composables/useLoading.ts +21 -0
- package/app/composables/useNotification.ts +21 -0
- package/app/composables/usePageTitle.ts +20 -0
- package/app/composables/useProduct/index.ts +2 -0
- package/app/composables/useProduct/types.ts +17 -0
- package/app/composables/useProduct/useProduct.ts +42 -0
- package/app/composables/useProductAttribute/__tests__/useProduct.mock.ts +31 -0
- package/app/composables/useProductAttribute/__tests__/useProductAttribute.spec.ts +14 -0
- package/app/composables/useProductAttribute/index.ts +1 -0
- package/app/composables/useProductAttribute/useProductAttribute.ts +37 -0
- package/app/composables/useProductRecommended/__tests__/useProductRecommended.spec.ts +12 -0
- package/app/composables/useProductRecommended/index.ts +1 -0
- package/app/composables/useProductRecommended/types.ts +17 -0
- package/app/composables/useProductRecommended/useProductRecommended.ts +43 -0
- package/app/composables/useProductReviews/__tests__/productReviews.mock.ts +20 -0
- package/app/composables/useProductReviews/__tests__/useProductReviews.spec.ts +22 -0
- package/app/composables/useProductReviews/index.ts +2 -0
- package/app/composables/useProductReviews/types.ts +17 -0
- package/app/composables/useProductReviews/useProductReviews.ts +46 -0
- package/app/composables/useProducts/__tests__/useProducts.spec.ts +11 -0
- package/app/composables/useProducts/types.ts +22 -0
- package/app/composables/useProducts/useProducts.ts +41 -0
- package/app/composables/useTax.ts +27 -0
- package/app/composables/validationRules/index.ts +1 -0
- package/app/composables/validationRules/password.feature +67 -0
- package/app/composables/validationRules/password.test.ts +89 -0
- package/app/composables/validationRules/password.ts +25 -0
- package/app/normalizers/Cart.query.ts +729 -0
- package/app/normalizers/Cart.type.ts +285 -0
- package/app/normalizers/Category.query.ts +146 -0
- package/app/normalizers/Category.type.ts +55 -0
- package/app/normalizers/CheckEmail.query.ts +28 -0
- package/app/normalizers/Checkout.query.ts +253 -0
- package/app/normalizers/Checkout.type.ts +77 -0
- package/app/normalizers/CmsBlock.query.ts +57 -0
- package/app/normalizers/CmsBlock.type.ts +25 -0
- package/app/normalizers/CmsPage.query.ts +59 -0
- package/app/normalizers/CmsPage.type.ts +26 -0
- package/app/normalizers/Config.query.ts +224 -0
- package/app/normalizers/Config.type.ts +196 -0
- package/app/normalizers/ContactForm.query.ts +49 -0
- package/app/normalizers/CreditMemo.type.ts +49 -0
- package/app/normalizers/GiftCard.type.ts +24 -0
- package/app/normalizers/Invoice.type.ts +58 -0
- package/app/normalizers/Menu.query.ts +54 -0
- package/app/normalizers/Menu.type.ts +22 -0
- package/app/normalizers/MyAccount.query.ts +268 -0
- package/app/normalizers/MyAccount.type.ts +129 -0
- package/app/normalizers/NewsletterSubscription.query.ts +38 -0
- package/app/normalizers/Order.query.ts +741 -0
- package/app/normalizers/Order.type.ts +268 -0
- package/app/normalizers/Payment.type.ts +28 -0
- package/app/normalizers/ProductAlerts.query.ts +23 -0
- package/app/normalizers/ProductCompare.query.ts +226 -0
- package/app/normalizers/ProductCompare.type.ts +90 -0
- package/app/normalizers/ProductList.query.ts +1620 -0
- package/app/normalizers/ProductList.type.ts +726 -0
- package/app/normalizers/Region.query.ts +58 -0
- package/app/normalizers/Region.type.ts +23 -0
- package/app/normalizers/Return.type.ts +50 -0
- package/app/normalizers/Review.query.ts +81 -0
- package/app/normalizers/Review.type.ts +42 -0
- package/app/normalizers/Slider.query.ts +72 -0
- package/app/normalizers/Slider.type.ts +26 -0
- package/app/normalizers/StoreInPickUp.query.ts +54 -0
- package/app/normalizers/StoreInPickUp.type.ts +59 -0
- package/app/normalizers/Subscription.type.ts +25 -0
- package/app/normalizers/Transaction.type.ts +20 -0
- package/app/normalizers/UrlRewrites.query.ts +55 -0
- package/app/normalizers/UrlRewrites.type.ts +25 -0
- package/app/normalizers/Wishlist.query.ts +202 -0
- package/app/normalizers/Wishlist.type.ts +42 -0
- package/app/pages/brand/[...slug].vue +76 -0
- package/app/pages/brands.vue +67 -0
- package/app/pages/cart.vue +142 -0
- package/app/pages/compare.vue +166 -0
- package/app/pages/departments/[...slug].vue +353 -0
- package/app/pages/departments/category/[...slug].vue +114 -0
- package/app/pages/incentive/[...id].vue +66 -0
- package/app/pages/invoice/[id].vue +309 -0
- package/app/pages/order/[id].vue +327 -0
- package/app/pages/product/[...id].vue +309 -0
- package/app/pages/product/showcases/index.vue +86 -0
- package/app/pages/shipment/[...id].vue +176 -0
- package/app/pages/shop/[...slug].vue +158 -0
- package/app/pages/shops.vue +76 -0
- package/app/pages/subscription/[...id].vue +147 -0
- package/app/pages/transaction/[...id].vue +74 -0
- package/app/routes/CategoryPage/CategoryPage.config.ts +28 -0
- package/app/routes/CategoryPage/CategoryPage.type.ts +8 -0
- package/app/routes/Checkout/Checkout.config.ts +3 -0
- package/app/routes/Checkout/Checkout.type.ts +14 -0
- package/app/routes/MyAccount/MyAccount.config.ts +1 -0
- package/app/routes/SearchPage/SearchPage.config.ts +1 -0
- package/app/routes/UrlRewrites/UrlRewrites.config.ts +5 -0
- package/app/stores/Cart/Cart.type.ts +26 -0
- package/app/stores/MyAccount/MyAccount.action.ts +7 -0
- package/app/stores/Notification/Notification.action.ts +40 -0
- package/app/stores/Notification/Notification.type.ts +16 -0
- package/app/stores/Popup/Popup.action.ts +30 -0
- package/app/stores/Product/Product.dispatcher.ts +53 -0
- package/app/stores/Product/Product.reducer.ts +12 -0
- package/app/stores/ProductList/ProductList.dispatcher.ts +35 -0
- package/app/stores/ProductList/ProductList.reducer.ts +13 -0
- package/app/stores/Store.type.ts +31 -0
- package/app/stores/Wishlist/Wishlist.type.ts +12 -0
- package/app/stores/cart.ts +218 -0
- package/app/stores/cartStore.ts +224 -0
- package/app/stores/checkout.ts +18 -0
- package/app/stores/compare.ts +65 -0
- package/app/stores/currency.js +29 -0
- package/app/stores/digital-products.js +11 -0
- package/app/stores/orders.ts +172 -0
- package/app/stores/product.ts +34 -0
- package/app/stores/productList.ts +35 -0
- package/app/stores/productListInfo.ts +0 -0
- package/app/stores/products.ts +118 -0
- package/app/stores/recentlyViewedProducts.ts +56 -0
- package/app/stores/review.ts +33 -0
- package/app/stores/storeInPickUp.ts +21 -0
- package/app/stores/user.ts +20 -0
- package/app/stores/wishlist.ts +46 -0
- package/app/types/Account.type.ts +141 -0
- package/app/types/Breadcrumbs.type.ts +23 -0
- package/app/types/CMS.type.ts +33 -0
- package/app/types/Category.type.ts +67 -0
- package/app/types/Checkout.type.ts +58 -0
- package/app/types/Common.type.ts +77 -0
- package/app/types/Config.type.ts +47 -0
- package/app/types/Device.type.ts +37 -0
- package/app/types/Direction.type.ts +23 -0
- package/app/types/Downloadable.type.ts +24 -0
- package/app/types/Error.type.ts +22 -0
- package/app/types/Field.type.ts +151 -0
- package/app/types/Global.type.ts +156 -0
- package/app/types/Graphql.type.ts +4497 -0
- package/app/types/Layout.type.ts +18 -0
- package/app/types/Menu.type.ts +39 -0
- package/app/types/MiniCart.type.ts +61 -0
- package/app/types/NotificationList.type.ts +34 -0
- package/app/types/Order.type.ts +174 -0
- package/app/types/Price.type.ts +72 -0
- package/app/types/ProductCompare.type.ts +24 -0
- package/app/types/ProductList.type.ts +351 -0
- package/app/types/Rating.type.ts +42 -0
- package/app/types/Router.type.ts +67 -0
- package/app/types/Slider.type.ts +25 -0
- package/app/types/StockStatus.type.ts +21 -0
- package/app/types/domain/index.ts +94 -0
- package/app/types/index.ts +33 -0
- package/app/types/shims.d.ts +52 -0
- package/app/types/tilework-opus.d.ts +48 -0
- package/app/utils/Address/Address.type.ts +28 -0
- package/app/utils/Address/index.ts +325 -0
- package/app/utils/Auth/IsSignedIn.ts +4 -0
- package/app/utils/Auth/Token.ts +9 -0
- package/app/utils/Base64/Base64.ts +16 -0
- package/app/utils/Base64/index.ts +12 -0
- package/app/utils/Browser/Browser.ts +29 -0
- package/app/utils/Browser/index.ts +12 -0
- package/app/utils/BrowserDatabase/BrowserDatabase.ts +70 -0
- package/app/utils/BrowserDatabase/index.ts +12 -0
- package/app/utils/CSS/CSS.ts +65 -0
- package/app/utils/CSS/index.ts +12 -0
- package/app/utils/Cache/Cache.ts +99 -0
- package/app/utils/Cart/Cart.ts +300 -0
- package/app/utils/Cart/Cart.type.ts +76 -0
- package/app/utils/Cart/Token.ts +59 -0
- package/app/utils/Cart/index.ts +13 -0
- package/app/utils/Category/Filters.ts +39 -0
- package/app/utils/Category/index.ts +12 -0
- package/app/utils/Common/index.ts +32 -0
- package/app/utils/Compare/Compare.ts +89 -0
- package/app/utils/Compare/index.ts +12 -0
- package/app/utils/Currency/Currency.ts +84 -0
- package/app/utils/Currency/index.ts +12 -0
- package/app/utils/DynamicReducer/DynamicReducer.type.ts +14 -0
- package/app/utils/DynamicReducer/Helper.ts +30 -0
- package/app/utils/DynamicReducer/index.tsx +35 -0
- package/app/utils/ElementTransition/ElementTransition.ts +100 -0
- package/app/utils/Form/Extract.ts +316 -0
- package/app/utils/Form/Form.ts +46 -0
- package/app/utils/Form/Form.type.ts +60 -0
- package/app/utils/Form/Transform.ts +33 -0
- package/app/utils/FormPortalCollector/index.ts +45 -0
- package/app/utils/History/History.type.ts +31 -0
- package/app/utils/History/index.ts +17 -0
- package/app/utils/Manipulations/Array.ts +18 -0
- package/app/utils/Manipulations/Date.ts +36 -0
- package/app/utils/Manipulations/index.ts +14 -0
- package/app/utils/Media/Media.ts +27 -0
- package/app/utils/Media/index.ts +13 -0
- package/app/utils/Menu/Menu.ts +116 -0
- package/app/utils/Menu/Menu.type.ts +37 -0
- package/app/utils/Menu/index.ts +12 -0
- package/app/utils/Mobile/index.ts +13 -0
- package/app/utils/Mobile/isMobile.ts +34 -0
- package/app/utils/Orders/Orders.ts +71 -0
- package/app/utils/Orders/Orders.type.ts +19 -0
- package/app/utils/Orders/index.ts +13 -0
- package/app/utils/Polyfill/index.ts +336 -0
- package/app/utils/Preload/CategoryPreload.ts +74 -0
- package/app/utils/Preload/ProductPreload.ts +28 -0
- package/app/utils/Preload/index.ts +75 -0
- package/app/utils/Price/Price.config.ts +189 -0
- package/app/utils/Price/Price.ts +63 -0
- package/app/utils/Price/index.ts +12 -0
- package/app/utils/Product/Extract.ts +652 -0
- package/app/utils/Product/Product.ts +575 -0
- package/app/utils/Product/Product.type.ts +260 -0
- package/app/utils/Product/Transform.ts +382 -0
- package/app/utils/Product/index.ts +12 -0
- package/app/utils/Promise/MakeCancelable.ts +44 -0
- package/app/utils/Promise/Promise.type.ts +15 -0
- package/app/utils/Promise/index.ts +13 -0
- package/app/utils/Query/Field.ts +71 -0
- package/app/utils/Query/Fragment.ts +22 -0
- package/app/utils/Query/PrepareDocument.ts +119 -0
- package/app/utils/Query/Query.type.ts +26 -0
- package/app/utils/Query/index.ts +15 -0
- package/app/utils/Request/Config.ts +21 -0
- package/app/utils/Request/DataContainer.ts +102 -0
- package/app/utils/Request/Debounce.ts +48 -0
- package/app/utils/Request/Error.ts +31 -0
- package/app/utils/Request/Hash.ts +88 -0
- package/app/utils/Request/LowPriorityLoad.ts +32 -0
- package/app/utils/Request/LowPriorityRender.ts +55 -0
- package/app/utils/Request/Mutation.ts +25 -0
- package/app/utils/Request/Query.ts +25 -0
- package/app/utils/Request/QueryDispatcher.ts +135 -0
- package/app/utils/Request/Request.ts +310 -0
- package/app/utils/Store/Store.type.ts +26 -0
- package/app/utils/Store/index.ts +71 -0
- package/app/utils/Url/Url.ts +297 -0
- package/app/utils/Url/index.ts +12 -0
- package/app/utils/Validator/Config.ts +96 -0
- package/app/utils/Validator/Validator.ts +268 -0
- package/app/utils/Validator/Validator.type.ts +47 -0
- package/app/utils/Validator/index.ts +12 -0
- package/app/utils/Wishlist/Wishlist.ts +65 -0
- package/app/utils/Wishlist/index.ts +12 -0
- package/app/utils/client.ts +280 -0
- package/app/utils/index.ts +53 -0
- package/app/utils/normalizer.ts +23 -0
- package/app/utils/normalizers/magento.ts +29 -0
- package/app/utils/normalizers/shopify.ts +29 -0
- package/nuxt.config.ts +11 -0
- package/package.json +43 -0
- package/tsconfig.json +45 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="contentPage">
|
|
3
|
+
<section data-bs-version="5.1" class="features02 essencem5 cid-uHg1VExDxg" id="features02-aq"
|
|
4
|
+
data-sortbtn="btn-primary">
|
|
5
|
+
<div class="container">
|
|
6
|
+
<div class="row">
|
|
7
|
+
<div class="col-12">
|
|
8
|
+
<div class="title-wrapper">
|
|
9
|
+
<h2 class="mbr-section-title mbr-fonts-style display-2">
|
|
10
|
+
<strong>{{ shop?.name }}</strong>
|
|
11
|
+
</h2>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
<div class="col-12">
|
|
15
|
+
<div class="card-wrapper">
|
|
16
|
+
<div class="item-img">
|
|
17
|
+
<NuxtImg loading="lazy" class="align-end text-white" v-if="shop?.image"
|
|
18
|
+
:src="`${$directus.url}/assets/${shop?.image?.filename_disk}`" :alt="shop?.name" cover />
|
|
19
|
+
<div class="card-box">
|
|
20
|
+
<div class="icon-wrapper">
|
|
21
|
+
<span class="mbr-iconfont mobi-mbri-contact-form mobi-mbri"></span>
|
|
22
|
+
</div>
|
|
23
|
+
<h4 class="card-title mbr-fonts-style display-5">
|
|
24
|
+
<strong>{{ shop?.name }}</strong>
|
|
25
|
+
</h4>
|
|
26
|
+
|
|
27
|
+
<div>
|
|
28
|
+
<div>
|
|
29
|
+
<p>Email: {{ shop?.store_email }}</p>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div>
|
|
33
|
+
<p>Phone: {{ shop?.store_phone }}</p>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<div>
|
|
37
|
+
<p>Shipping Policy: {{ shop?.store_shipping_policy }}</p>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<div>
|
|
41
|
+
<p>Address: {{ shop?.store_address }}</p>
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<div>
|
|
45
|
+
<p>Country: {{ shop?.store_country }}</p>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
<p class="card-text mbr-fonts-style display-7" v-dompurify-html="shop?.description"></p>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
</section>
|
|
56
|
+
|
|
57
|
+
<v-card elevation="0">
|
|
58
|
+
<v-tabs v-model="tab" bg-color="info" align-tabs="center">
|
|
59
|
+
<v-tab v-for="(menu, index) in shopbar?.menus" :key="index">
|
|
60
|
+
<NuxtLink :to="menu?.url">{{ menu?.name }}</NuxtLink>
|
|
61
|
+
</v-tab>
|
|
62
|
+
</v-tabs>
|
|
63
|
+
|
|
64
|
+
<v-card-text>
|
|
65
|
+
<v-tabs-window v-model="tab">
|
|
66
|
+
|
|
67
|
+
<v-tabs-window-item :value="shopbar?.menus[1]?.value">
|
|
68
|
+
<div v-for="(products, index) in shop?.products" :key="index">
|
|
69
|
+
<productCard :product="products?.products_id" />
|
|
70
|
+
</div>
|
|
71
|
+
</v-tabs-window-item>
|
|
72
|
+
|
|
73
|
+
<v-tabs-window-item :value="shopbar?.menus[2]?.value">
|
|
74
|
+
<div v-for="(showcases, index) in shop?.showcases" :key="index">
|
|
75
|
+
<showcases :product="showcases?.showcases_id" />
|
|
76
|
+
</div>
|
|
77
|
+
</v-tabs-window-item>
|
|
78
|
+
|
|
79
|
+
<v-tabs-window-item :value="shopbar?.menus[3]?.value">
|
|
80
|
+
<div v-for="(comments, index) in shop?.comments" :key="index">
|
|
81
|
+
<comments :comments="comments?.comments_id" />
|
|
82
|
+
</div>
|
|
83
|
+
</v-tabs-window-item>
|
|
84
|
+
|
|
85
|
+
<v-tabs-window-item :value="shopbar?.menus[4]?.value">
|
|
86
|
+
<div v-for="(spaces, index) in shop?.spaces" :key="index">
|
|
87
|
+
<spaces :space="spaces?.spaces_id" />
|
|
88
|
+
</div>
|
|
89
|
+
</v-tabs-window-item>
|
|
90
|
+
|
|
91
|
+
<v-tabs-window-item :value="shopbar?.menus[5]?.value">
|
|
92
|
+
<div v-for="(events, index) in shop?.events" :key="index">
|
|
93
|
+
<events :space="events?.events_id" />
|
|
94
|
+
</div>
|
|
95
|
+
</v-tabs-window-item>
|
|
96
|
+
</v-tabs-window>
|
|
97
|
+
</v-card-text>
|
|
98
|
+
</v-card>
|
|
99
|
+
</div>
|
|
100
|
+
</template>
|
|
101
|
+
|
|
102
|
+
<script setup>
|
|
103
|
+
import { ref } from 'vue'
|
|
104
|
+
import showcases from '~/components/catalog/product/relatedproducts.vue'
|
|
105
|
+
import productCard from '~/components/catalog/product/productCard.vue'
|
|
106
|
+
import comments from '@/components/placeholders/Comments.vue'
|
|
107
|
+
import spaces from '@/components/placeholders/Space.vue'
|
|
108
|
+
import events from '@/components/placeholders/Event.vue'
|
|
109
|
+
import { useContentFallback } from '../../composables/useContent'
|
|
110
|
+
|
|
111
|
+
const route = useRoute();
|
|
112
|
+
const tab = ref(null);
|
|
113
|
+
const { $directus, $readItem } = useNuxtApp()
|
|
114
|
+
|
|
115
|
+
const slug = computed(() => {
|
|
116
|
+
const s = route.params.slug
|
|
117
|
+
return Array.isArray(s) ? s[0] : s
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
const content = useContentFallback()
|
|
121
|
+
|
|
122
|
+
const { data: shopRaw } = await useAsyncData('shop', () => {
|
|
123
|
+
return content.listShops({
|
|
124
|
+
fields: ['*',
|
|
125
|
+
'media.*',
|
|
126
|
+
'spaces.spaces_id.*',
|
|
127
|
+
'events.events_id.*',
|
|
128
|
+
'products.products_id.*',
|
|
129
|
+
'products.products_id.image.*',
|
|
130
|
+
'showcases.showcases_id.*',
|
|
131
|
+
'comments.comments_id.*',
|
|
132
|
+
'shorts.shorts_id.*',
|
|
133
|
+
'image.*',
|
|
134
|
+
'country.country_id.*'
|
|
135
|
+
],
|
|
136
|
+
filter: {
|
|
137
|
+
slug: {
|
|
138
|
+
_eq: slug.value
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
limit: 1
|
|
142
|
+
})
|
|
143
|
+
})
|
|
144
|
+
|
|
145
|
+
const shop = computed(() => shopRaw.value?.[0] || null)
|
|
146
|
+
|
|
147
|
+
const { data: shopbar } = await useAsyncData('shopbar', () => {
|
|
148
|
+
return $directus.request($readItem('navigation', '55'))
|
|
149
|
+
})
|
|
150
|
+
|
|
151
|
+
definePageMeta({
|
|
152
|
+
layout: 'nolive',
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
useHead({
|
|
156
|
+
title: computed(() => shop.value?.name || 'Shop Page')
|
|
157
|
+
})
|
|
158
|
+
</script>
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="contentPage">
|
|
3
|
+
<v-card elevation="0">
|
|
4
|
+
<v-toolbar title="Shops on Meeovi" color="green"></v-toolbar>
|
|
5
|
+
<v-tabs v-model="tab" bg-color="green" align-tabs="center">
|
|
6
|
+
<v-tab v-if="shopbar?.active === 'Active'" v-for="(menu, index) in shopbar?.menus" :key="index">
|
|
7
|
+
<NuxtLink :to="menu?.url">{{ menu?.name }}</NuxtLink>
|
|
8
|
+
</v-tab>
|
|
9
|
+
</v-tabs>
|
|
10
|
+
|
|
11
|
+
<v-card-text>
|
|
12
|
+
<v-tabs-window v-model="tab">
|
|
13
|
+
<v-tabs-window-item :value="shopbar?.menus[0]?.value">
|
|
14
|
+
<section data-bs-version="5.1" class="clients1 cid-uHg1k6KLf8" id="clients1-ap">
|
|
15
|
+
<div class="container">
|
|
16
|
+
<div class="row justify-content-center">
|
|
17
|
+
<div class="card col-12 col-md-6 col-lg-4" v-for="(shop, index) in stores" :key="index">
|
|
18
|
+
<store :store="shop" />
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
</section>
|
|
23
|
+
</v-tabs-window-item>
|
|
24
|
+
|
|
25
|
+
<v-tabs-window-item :value="shopbar?.menus[1]?.value">
|
|
26
|
+
<section data-bs-version="5.1" class="clients1 cid-uHg1k6KLf8" id="clients1-ap">
|
|
27
|
+
<div class="container">
|
|
28
|
+
<div class="row justify-content-center">
|
|
29
|
+
<div class="card col-12 col-md-6 col-lg-4" v-for="(shop, index) in stores" :key="index">
|
|
30
|
+
<store :store="shop" />
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</section>
|
|
35
|
+
</v-tabs-window-item>
|
|
36
|
+
|
|
37
|
+
<v-tabs-window-item :value="shopbar?.menus[2]?.value">
|
|
38
|
+
<section data-bs-version="5.1" class="clients1 cid-uHg1k6KLf8" id="clients1-ap">
|
|
39
|
+
<div class="container">
|
|
40
|
+
<div class="row justify-content-center">
|
|
41
|
+
<div class="card col-12 col-md-6 col-lg-4" v-for="(shop, index) in stores" :key="index">
|
|
42
|
+
<store :store="shop" />
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
</div>
|
|
46
|
+
</section>
|
|
47
|
+
</v-tabs-window-item>
|
|
48
|
+
</v-tabs-window>
|
|
49
|
+
</v-card-text>
|
|
50
|
+
</v-card>
|
|
51
|
+
</div>
|
|
52
|
+
</template>
|
|
53
|
+
|
|
54
|
+
<script setup lang="ts">
|
|
55
|
+
import { ref } from 'vue'
|
|
56
|
+
import { useHead, useNuxtApp, useAsyncData } from '~/types'
|
|
57
|
+
import store from '../components/catalog/shops/stores.vue'
|
|
58
|
+
|
|
59
|
+
const tab = ref(null)
|
|
60
|
+
|
|
61
|
+
import { useContentFallback } from '../composables/useContent'
|
|
62
|
+
const content = useContentFallback()
|
|
63
|
+
|
|
64
|
+
const { data: stores } = await useAsyncData('stores', async () => {
|
|
65
|
+
return await content.listShops({ fields: ['*', { '*': ['*'] }] })
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
const { data: shopbar } = await useAsyncData('shopbar', () => {
|
|
69
|
+
const nuxtApp = useNuxtApp() as any
|
|
70
|
+
return nuxtApp.$directus ? nuxtApp.$directus.request(nuxtApp.$readItem('navigation', '55')) : null
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
useHead({
|
|
74
|
+
title: 'Shops on Meeovi',
|
|
75
|
+
})
|
|
76
|
+
</script>
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<!---->
|
|
4
|
+
<section data-bs-version="5.1" class="features14 cid-u3U56NDZtd" id="features15-7o" data-sortbtn="btn-primary">
|
|
5
|
+
<div class="container">
|
|
6
|
+
<div class="row justify-content-center">
|
|
7
|
+
<div class="card col-12 col-md-6 col-lg-4">
|
|
8
|
+
<div class="card-wrapper">
|
|
9
|
+
<span class="mbr-iconfont mobi-mbri-protect mobi-mbri m-auto"></span>
|
|
10
|
+
<div class="card-box">
|
|
11
|
+
<h4 class="card-title mbr-fonts-style mb-2 display-7"><strong>Subscribed On</strong></h4>
|
|
12
|
+
<h5 class="card-text mbr-fonts-style display-4">{{ subscription?.start_date}}</h5>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
<div class="card col-12 col-md-6 col-lg-4">
|
|
17
|
+
<div class="card-wrapper">
|
|
18
|
+
<span class="mbr-iconfont m-auto mobi-mbri-website-theme-2 mobi-mbri"></span>
|
|
19
|
+
<div class="card-box">
|
|
20
|
+
<h4 class="card-title mbr-fonts-style mb-2 display-7"><strong>Subscription #</strong></h4>
|
|
21
|
+
<h5 class="card-text mbr-fonts-style display-4">{{ subscription?.id}}</h5>
|
|
22
|
+
</div>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="card col-12 col-md-6 col-lg-4">
|
|
26
|
+
<div class="card-wrapper">
|
|
27
|
+
<span class="mbr-iconfont m-auto mobi-mbri-features mobi-mbri"></span>
|
|
28
|
+
<div class="card-box">
|
|
29
|
+
<h4 class="card-title mbr-fonts-style mb-2 display-7">
|
|
30
|
+
<strong>View or Print Invoice</strong></h4>
|
|
31
|
+
<h5 class="card-text mbr-fonts-style display-4"></h5>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</section>
|
|
40
|
+
|
|
41
|
+
<section data-bs-version="5.1" class="contacts2 cid-u3U5tKf7Hq" id="contacts2-7p" data-sortbtn="btn-primary">
|
|
42
|
+
<div class="container">
|
|
43
|
+
|
|
44
|
+
<div class="row justify-content-center mt-4">
|
|
45
|
+
<div class="card col-12 col-md-6">
|
|
46
|
+
<div class="card-wrapper">
|
|
47
|
+
<div class="image-wrapper">
|
|
48
|
+
<span class="mbr-iconfont mobi-mbri-home mobi-mbri"></span>
|
|
49
|
+
</div>
|
|
50
|
+
<div class="text-wrapper">
|
|
51
|
+
<h6 class="card-title mbr-fonts-style mb-1 display-5">
|
|
52
|
+
<strong>Shipping Address</strong></h6>
|
|
53
|
+
<p class="mbr-text mbr-fonts-style display-7">{{ subscription?.customer?.customers_id?.address }}</p>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
<div class="card col-12 col-md-6">
|
|
58
|
+
<div class="card-wrapper">
|
|
59
|
+
<div class="image-wrapper">
|
|
60
|
+
<span class="mbr-iconfont mobi-mbri-cash mobi-mbri"></span>
|
|
61
|
+
</div>
|
|
62
|
+
<div class="text-wrapper">
|
|
63
|
+
<h6 class="card-title mbr-fonts-style mb-1 display-5">
|
|
64
|
+
<strong>Payment Method</strong></h6>
|
|
65
|
+
<p class="mbr-text mbr-fonts-style display-7">
|
|
66
|
+
<NuxtLink to="mailto:info@site.com" class="text-primary">{{ subscription?.customer?.customers_id?.payment }}</NuxtLink>
|
|
67
|
+
</p>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
</div>
|
|
71
|
+
<div class="card col-12 col-md-6">
|
|
72
|
+
<div class="card-wrapper">
|
|
73
|
+
<div class="image-wrapper">
|
|
74
|
+
<span class="mbr-iconfont mobi-mbri-contact-form mobi-mbri"></span>
|
|
75
|
+
</div>
|
|
76
|
+
<div class="text-wrapper">
|
|
77
|
+
<h6 class="card-title mbr-fonts-style mb-1 display-5">
|
|
78
|
+
<strong>Order Summary</strong></h6>
|
|
79
|
+
<p class="mbr-text mbr-fonts-style display-7" v-for="customers in subscription?.customer?.customers_id">Item(s) Subtotal: ${{ customer?.subscription?.orders_id?.total_before_tax }}
|
|
80
|
+
<br>Shipping & Handling: ${{ customer?.subscription?.orders_id?.shipping_handling }}
|
|
81
|
+
<br>Total before tax: ${{ customer?.subscription?.orders_id?.total_before_tax }}
|
|
82
|
+
<br>Estimated tax to be collected: ${{ customer?.subscription?.orders_id?.tax }}
|
|
83
|
+
<br>Grand Total: ${{ customer?.subscription?.orders_id?.total_price }}</p>
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
<div class="card col-12 col-md-6">
|
|
88
|
+
<div class="card-wrapper">
|
|
89
|
+
<div class="image-wrapper">
|
|
90
|
+
<span class="mbr-iconfont mobi-mbri-bulleted-list mobi-mbri"></span>
|
|
91
|
+
</div>
|
|
92
|
+
<div class="text-wrapper">
|
|
93
|
+
<h6 class="card-title mbr-fonts-style mb-1 display-5">
|
|
94
|
+
<strong>Receipt</strong></h6>
|
|
95
|
+
<p class="mbr-text mbr-fonts-style display-7"></p>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
</section>
|
|
102
|
+
</div>
|
|
103
|
+
</template>
|
|
104
|
+
|
|
105
|
+
<script>
|
|
106
|
+
import productCard from '~/app/components/catalog/product/productCard.vue'
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
export default {
|
|
110
|
+
components: { productCard, profilebar},
|
|
111
|
+
data: () => ({
|
|
112
|
+
model: null,
|
|
113
|
+
url: process.env.DIRECTUS_URL,
|
|
114
|
+
}),
|
|
115
|
+
}
|
|
116
|
+
</script>
|
|
117
|
+
|
|
118
|
+
<script setup>
|
|
119
|
+
const route = useRoute();
|
|
120
|
+
|
|
121
|
+
const {
|
|
122
|
+
$directus,
|
|
123
|
+
$readItem
|
|
124
|
+
} = useNuxtApp()
|
|
125
|
+
const user = useSupabaseUser()
|
|
126
|
+
|
|
127
|
+
const {
|
|
128
|
+
data: subscription
|
|
129
|
+
} = await useAsyncData('subscription', () => {
|
|
130
|
+
return $directus.request($readItem('subscriptions', route.params.id, {
|
|
131
|
+
filter: {
|
|
132
|
+
user: {
|
|
133
|
+
_eq: `${user?.id}`
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
limit: 1
|
|
137
|
+
})).then(response => response?.[0])
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
useHead({
|
|
141
|
+
title: subscription?.value?.id || 'Subscription Page',
|
|
142
|
+
})
|
|
143
|
+
|
|
144
|
+
definePageMeta({
|
|
145
|
+
middleware: ['authenticated'],
|
|
146
|
+
})
|
|
147
|
+
</script>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div>
|
|
3
|
+
<!--<profilebar />-->
|
|
4
|
+
<section data-bs-version="5.1" class="features07 scalem5 cid-uhB4hw1yxB mbr-fullscreen" id="features07-9l">
|
|
5
|
+
<div class="container">
|
|
6
|
+
<div class="row">
|
|
7
|
+
<div class="col-12 col-lg-10 card">
|
|
8
|
+
<div class="title-wrapper">
|
|
9
|
+
<h2 class="mbr-section-title mbr-fonts-style display-5">
|
|
10
|
+
View Transaction</h2>
|
|
11
|
+
</div>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="col-12 col-lg-12">
|
|
14
|
+
<div class="items-wrapper">
|
|
15
|
+
<div class="item features-without-image item-mb">
|
|
16
|
+
<div class="item-wrapper">
|
|
17
|
+
<div class="card-box">
|
|
18
|
+
<div class="icon-wrapper">
|
|
19
|
+
<span class="mbr-iconfont mobi-mbri-growing-chart mobi-mbri"></span>
|
|
20
|
+
</div>
|
|
21
|
+
<h4 class="card-title mbr-fonts-style display-7">
|
|
22
|
+
Transaction Information
|
|
23
|
+
</h4>
|
|
24
|
+
<a class="card-text mbr-fonts-style display-7" :href="`/order/${transaction?.orders?.orders_id?.id}`">Order #:
|
|
25
|
+
{{ transaction?.orders?.orders_id?.id }}</a>
|
|
26
|
+
<p class="card-text mbr-fonts-style display-7">Transaction ID: {{ transaction?.id }}</p>
|
|
27
|
+
<p class="card-text mbr-fonts-style display-7">Transaction Date:
|
|
28
|
+
{{ new Date(transaction?.created_at).toLocaleDateString() }}</p>
|
|
29
|
+
<p class="card-text mbr-fonts-style display-7">Is it Closed?
|
|
30
|
+
{{ transaction?.is_closed }}</p>
|
|
31
|
+
<p class="card-text mbr-fonts-style display-7">Parent Transaction ID: {{ transaction?.parent_id }}</p>
|
|
32
|
+
<p class="card-text mbr-fonts-style display-7">Payment ID: {{ transaction?.payment_id }}</p>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
<img src="../../assets/images/background10.jpg" :alt="transaction?.id">
|
|
41
|
+
</section>
|
|
42
|
+
</div>
|
|
43
|
+
</template>
|
|
44
|
+
|
|
45
|
+
<script setup>
|
|
46
|
+
const route = useRoute();
|
|
47
|
+
|
|
48
|
+
const {
|
|
49
|
+
$directus,
|
|
50
|
+
$readItem
|
|
51
|
+
} = useNuxtApp()
|
|
52
|
+
const user = useSupabaseUser()
|
|
53
|
+
|
|
54
|
+
const {
|
|
55
|
+
data: transaction
|
|
56
|
+
} = await useAsyncData('transaction', () => {
|
|
57
|
+
return $directus.request($readItem('transactions', route.params.id, {
|
|
58
|
+
filter: {
|
|
59
|
+
user: {
|
|
60
|
+
_eq: `${user?.id}`
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
limit: 1
|
|
64
|
+
})).then(response => response?.[0])
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
useHead({
|
|
68
|
+
title: 'Transaction' + transaction?.value?.id || 'Transaction Page',
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
definePageMeta({
|
|
72
|
+
//middleware: ['auth-logged-in'],
|
|
73
|
+
})
|
|
74
|
+
</script>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type CategorySortOptions = string;
|
|
2
|
+
|
|
3
|
+
export const SortDirections = {
|
|
4
|
+
ASC: 'asc',
|
|
5
|
+
DESC: 'desc',
|
|
6
|
+
} as const
|
|
7
|
+
export const NONE_SORT_OPTION_VALUE = 'none'
|
|
8
|
+
|
|
9
|
+
export const CategoryPageLayout = {
|
|
10
|
+
GRID: 'grid',
|
|
11
|
+
LIST: 'list',
|
|
12
|
+
} as const
|
|
13
|
+
export const CategoryDisplayMode = {
|
|
14
|
+
PRODUCTS: 'products',
|
|
15
|
+
CMS: 'cms',
|
|
16
|
+
MIXED: 'mixed',
|
|
17
|
+
} as const
|
|
18
|
+
|
|
19
|
+
export default {
|
|
20
|
+
SortDirections,
|
|
21
|
+
CategoryPageLayout,
|
|
22
|
+
CategoryDisplayMode,
|
|
23
|
+
NONE_SORT_OPTION_VALUE,
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export type SortDirections = typeof SortDirections[keyof typeof SortDirections]
|
|
27
|
+
export type CategoryDisplayMode = typeof CategoryDisplayMode[keyof typeof CategoryDisplayMode]
|
|
28
|
+
export type CategoryPageLayout = typeof CategoryPageLayout[keyof typeof CategoryPageLayout]
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface CheckoutAddress {
|
|
2
|
+
company?: string
|
|
3
|
+
city?: string
|
|
4
|
+
country_id?: string
|
|
5
|
+
firstname?: string
|
|
6
|
+
lastname?: string
|
|
7
|
+
postcode?: string
|
|
8
|
+
street?: Array<string | null>
|
|
9
|
+
telephone?: string
|
|
10
|
+
region?: string
|
|
11
|
+
region_id?: number
|
|
12
|
+
region_code?: string
|
|
13
|
+
vat_id?: string
|
|
14
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const CUSTOMER = 'customer';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const NONE_SORT_OPTION_VALUE = '';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface CartItem {
|
|
2
|
+
id: string
|
|
3
|
+
productId: string
|
|
4
|
+
sku?: string
|
|
5
|
+
quantity: number
|
|
6
|
+
price?: number
|
|
7
|
+
[key: string]: any
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface IndexedCartItem extends CartItem {
|
|
11
|
+
index?: number
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface Cart {
|
|
15
|
+
id?: string
|
|
16
|
+
items?: CartItem[]
|
|
17
|
+
subtotal?: number
|
|
18
|
+
total?: number
|
|
19
|
+
tax_amount?: number
|
|
20
|
+
shipping_amount?: number
|
|
21
|
+
discount_amount?: number
|
|
22
|
+
coupon_code?: string | null
|
|
23
|
+
[key: string]: any
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export default Cart
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export function updateCustomerSignInStatus(isSignedIn: boolean, customer?: any) {
|
|
2
|
+
if (typeof window !== 'undefined' && 'CustomEvent' in window) {
|
|
3
|
+
window.dispatchEvent(new CustomEvent('mframework:auth:update', { detail: { isSignedIn, customer } }))
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export default { updateCustomerSignInStatus }
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Notification, NotificationOptions, NotificationType } from './Notification.type'
|
|
2
|
+
|
|
3
|
+
function genId() {
|
|
4
|
+
return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 9)}`
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function showNotification(message: string, type: NotificationType = NotificationType.INFO, options: NotificationOptions = {}): Notification {
|
|
8
|
+
const notification: Notification = {
|
|
9
|
+
id: genId(),
|
|
10
|
+
message,
|
|
11
|
+
type: options.type || type,
|
|
12
|
+
meta: options.meta,
|
|
13
|
+
createdAt: Date.now(),
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (typeof window !== 'undefined' && 'CustomEvent' in window) {
|
|
17
|
+
window.dispatchEvent(new CustomEvent('mframework:notification', { detail: notification }))
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return notification
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function notifyInfo(message: string, options: NotificationOptions = {}) {
|
|
24
|
+
return showNotification(message, NotificationType.INFO, options)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export function notifySuccess(message: string, options: NotificationOptions = {}) {
|
|
28
|
+
return showNotification(message, NotificationType.SUCCESS, options)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export function notifyError(message: string, options: NotificationOptions = {}) {
|
|
32
|
+
return showNotification(message, NotificationType.ERROR, options)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export default {
|
|
36
|
+
showNotification,
|
|
37
|
+
notifyInfo,
|
|
38
|
+
notifySuccess,
|
|
39
|
+
notifyError,
|
|
40
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export enum NotificationType {
|
|
2
|
+
INFO = 'info',
|
|
3
|
+
SUCCESS = 'success',
|
|
4
|
+
WARNING = 'warning',
|
|
5
|
+
ERROR = 'error',
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface Notification {
|
|
9
|
+
id: string
|
|
10
|
+
message: string
|
|
11
|
+
type: NotificationType
|
|
12
|
+
meta?: Record<string, unknown>
|
|
13
|
+
createdAt: number
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export type NotificationOptions = Partial<Pick<Notification, 'meta' | 'type'>>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface PopupPayload {
|
|
2
|
+
[key: string]: unknown
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
function genId() {
|
|
6
|
+
return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 9)}`
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function showPopup(popupId: string, payload: PopupPayload = {}) {
|
|
10
|
+
const popup = {
|
|
11
|
+
id: genId(),
|
|
12
|
+
popupId,
|
|
13
|
+
payload,
|
|
14
|
+
openedAt: Date.now(),
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (typeof window !== 'undefined' && 'CustomEvent' in window) {
|
|
18
|
+
window.dispatchEvent(new CustomEvent('mframework:popup:open', { detail: popup }))
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return popup
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export function closePopup(popupId: string) {
|
|
25
|
+
if (typeof window !== 'undefined' && 'CustomEvent' in window) {
|
|
26
|
+
window.dispatchEvent(new CustomEvent('mframework:popup:close', { detail: { popupId } }))
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export default { showPopup, closePopup }
|