@libreapps/commerce 7.5.1
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/.turbo/turbo-build.log +4 -0
- package/CHANGELOG.md +13 -0
- package/LICENSE.md +21 -0
- package/components/Icons.tsx +35 -0
- package/components/add-to-cart-widget.tsx +183 -0
- package/components/buy/buy-card.tsx +259 -0
- package/components/buy/carousel-buy-card.tsx +242 -0
- package/components/buy/multi-family/all-variants-carousel.tsx +261 -0
- package/components/buy/multi-family/family-carousel/index.tsx +77 -0
- package/components/buy/multi-family/family-carousel/slide.tsx +83 -0
- package/components/buy/multi-family/family-carousel/state.ts +87 -0
- package/components/buy/multi-family/index.ts +2 -0
- package/components/buy/single-family-selector.tsx +90 -0
- package/components/buy/title-and-byline.tsx +25 -0
- package/components/cart/cart-panel/cart-line-item.tsx +76 -0
- package/components/cart/cart-panel/index.tsx +154 -0
- package/components/cart/cart-panel/promo-code.tsx +109 -0
- package/components/cart/cart-panel/total-area.tsx +60 -0
- package/components/checkout/payment-step-form/card-icon-row.tsx +26 -0
- package/components/checkout/payment-step-form/card-icons/amex.tsx +32 -0
- package/components/checkout/payment-step-form/card-icons/diners-club.tsx +13 -0
- package/components/checkout/payment-step-form/card-icons/discover.tsx +25 -0
- package/components/checkout/payment-step-form/card-icons/jcb.tsx +26 -0
- package/components/checkout/payment-step-form/card-icons/mastercard.tsx +27 -0
- package/components/checkout/payment-step-form/card-icons/visa.tsx +25 -0
- package/components/checkout/payment-step-form/cc-button.tsx +17 -0
- package/components/checkout/payment-step-form/contact-form.tsx +50 -0
- package/components/checkout/payment-step-form/crypto-icons/btc.tsx +11 -0
- package/components/checkout/payment-step-form/crypto-icons/eth.tsx +20 -0
- package/components/checkout/payment-step-form/crypto-icons/usdt.tsx +13 -0
- package/components/checkout/payment-step-form/index.tsx +122 -0
- package/components/checkout/payment-step-form/methods/bank-transfer.tsx +79 -0
- package/components/checkout/payment-step-form/methods/card.tsx +232 -0
- package/components/checkout/payment-step-form/methods/crypto.tsx +227 -0
- package/components/checkout/payment-step-form/methods/index.ts +23 -0
- package/components/checkout/shipping-step-form.tsx +175 -0
- package/components/index.ts +11 -0
- package/components/item/product-card.tsx +48 -0
- package/components/item-selector/button.tsx +188 -0
- package/components/item-selector/carousel/index.tsx +197 -0
- package/components/item-selector/carousel/slider.tsx +40 -0
- package/components/item-selector/index.ts +5 -0
- package/components/item-selector/quantity-indicator.tsx +48 -0
- package/components/node-tabs/index.tsx +91 -0
- package/components/node-tabs/node-image.tsx +31 -0
- package/dist/components/Icons.d.ts +18 -0
- package/dist/components/Icons.js +19 -0
- package/dist/components/Icons.js.map +1 -0
- package/dist/components/add-to-cart-widget.d.ts +11 -0
- package/dist/components/add-to-cart-widget.js +85 -0
- package/dist/components/add-to-cart-widget.js.map +1 -0
- package/dist/components/buy/buy-card.d.ts +30 -0
- package/dist/components/buy/buy-card.js +109 -0
- package/dist/components/buy/buy-card.js.map +1 -0
- package/dist/components/buy/carousel-buy-card.d.ts +12 -0
- package/dist/components/buy/carousel-buy-card.js +94 -0
- package/dist/components/buy/carousel-buy-card.js.map +1 -0
- package/dist/components/buy/multi-family/all-variants-carousel.d.ts +4 -0
- package/dist/components/buy/multi-family/all-variants-carousel.js +115 -0
- package/dist/components/buy/multi-family/all-variants-carousel.js.map +1 -0
- package/dist/components/buy/multi-family/family-carousel/index.d.ts +4 -0
- package/dist/components/buy/multi-family/family-carousel/index.js +27 -0
- package/dist/components/buy/multi-family/family-carousel/index.js.map +1 -0
- package/dist/components/buy/multi-family/family-carousel/slide.d.ts +11 -0
- package/dist/components/buy/multi-family/family-carousel/slide.js +35 -0
- package/dist/components/buy/multi-family/family-carousel/slide.js.map +1 -0
- package/dist/components/buy/multi-family/family-carousel/state.d.ts +20 -0
- package/dist/components/buy/multi-family/family-carousel/state.js +59 -0
- package/dist/components/buy/multi-family/family-carousel/state.js.map +1 -0
- package/dist/components/buy/multi-family/index.d.ts +2 -0
- package/dist/components/buy/multi-family/index.js +3 -0
- package/dist/components/buy/multi-family/index.js.map +1 -0
- package/dist/components/buy/single-family-selector.d.ts +15 -0
- package/dist/components/buy/single-family-selector.js +28 -0
- package/dist/components/buy/single-family-selector.js.map +1 -0
- package/dist/components/buy/title-and-byline.d.ts +8 -0
- package/dist/components/buy/title-and-byline.js +7 -0
- package/dist/components/buy/title-and-byline.js.map +1 -0
- package/dist/components/cart/cart-panel/cart-line-item.d.ts +11 -0
- package/dist/components/cart/cart-panel/cart-line-item.js +25 -0
- package/dist/components/cart/cart-panel/cart-line-item.js.map +1 -0
- package/dist/components/cart/cart-panel/index.d.ts +19 -0
- package/dist/components/cart/cart-panel/index.js +65 -0
- package/dist/components/cart/cart-panel/index.js.map +1 -0
- package/dist/components/cart/cart-panel/promo-code.d.ts +4 -0
- package/dist/components/cart/cart-panel/promo-code.js +62 -0
- package/dist/components/cart/cart-panel/promo-code.js.map +1 -0
- package/dist/components/cart/cart-panel/total-area.d.ts +7 -0
- package/dist/components/cart/cart-panel/total-area.js +14 -0
- package/dist/components/cart/cart-panel/total-area.js.map +1 -0
- package/dist/components/checkout/payment-step-form/card-icon-row.d.ts +2 -0
- package/dist/components/checkout/payment-step-form/card-icon-row.js +14 -0
- package/dist/components/checkout/payment-step-form/card-icon-row.js.map +1 -0
- package/dist/components/checkout/payment-step-form/card-icons/amex.d.ts +4 -0
- package/dist/components/checkout/payment-step-form/card-icons/amex.js +6 -0
- package/dist/components/checkout/payment-step-form/card-icons/amex.js.map +1 -0
- package/dist/components/checkout/payment-step-form/card-icons/diners-club.d.ts +4 -0
- package/dist/components/checkout/payment-step-form/card-icons/diners-club.js +6 -0
- package/dist/components/checkout/payment-step-form/card-icons/diners-club.js.map +1 -0
- package/dist/components/checkout/payment-step-form/card-icons/discover.d.ts +4 -0
- package/dist/components/checkout/payment-step-form/card-icons/discover.js +6 -0
- package/dist/components/checkout/payment-step-form/card-icons/discover.js.map +1 -0
- package/dist/components/checkout/payment-step-form/card-icons/jcb.d.ts +4 -0
- package/dist/components/checkout/payment-step-form/card-icons/jcb.js +6 -0
- package/dist/components/checkout/payment-step-form/card-icons/jcb.js.map +1 -0
- package/dist/components/checkout/payment-step-form/card-icons/mastercard.d.ts +4 -0
- package/dist/components/checkout/payment-step-form/card-icons/mastercard.js +6 -0
- package/dist/components/checkout/payment-step-form/card-icons/mastercard.js.map +1 -0
- package/dist/components/checkout/payment-step-form/card-icons/visa.d.ts +4 -0
- package/dist/components/checkout/payment-step-form/card-icons/visa.js +6 -0
- package/dist/components/checkout/payment-step-form/card-icons/visa.js.map +1 -0
- package/dist/components/checkout/payment-step-form/cc-button.d.ts +3 -0
- package/dist/components/checkout/payment-step-form/cc-button.js +6 -0
- package/dist/components/checkout/payment-step-form/cc-button.js.map +1 -0
- package/dist/components/checkout/payment-step-form/contact-form.d.ts +5 -0
- package/dist/components/checkout/payment-step-form/contact-form.js +6 -0
- package/dist/components/checkout/payment-step-form/contact-form.js.map +1 -0
- package/dist/components/checkout/payment-step-form/crypto-icons/btc.d.ts +4 -0
- package/dist/components/checkout/payment-step-form/crypto-icons/btc.js +6 -0
- package/dist/components/checkout/payment-step-form/crypto-icons/btc.js.map +1 -0
- package/dist/components/checkout/payment-step-form/crypto-icons/eth.d.ts +4 -0
- package/dist/components/checkout/payment-step-form/crypto-icons/eth.js +6 -0
- package/dist/components/checkout/payment-step-form/crypto-icons/eth.js.map +1 -0
- package/dist/components/checkout/payment-step-form/crypto-icons/usdt.d.ts +4 -0
- package/dist/components/checkout/payment-step-form/crypto-icons/usdt.js +6 -0
- package/dist/components/checkout/payment-step-form/crypto-icons/usdt.js.map +1 -0
- package/dist/components/checkout/payment-step-form/index.d.ts +4 -0
- package/dist/components/checkout/payment-step-form/index.js +77 -0
- package/dist/components/checkout/payment-step-form/index.js.map +1 -0
- package/dist/components/checkout/payment-step-form/methods/bank-transfer.d.ts +4 -0
- package/dist/components/checkout/payment-step-form/methods/bank-transfer.js +24 -0
- package/dist/components/checkout/payment-step-form/methods/bank-transfer.js.map +1 -0
- package/dist/components/checkout/payment-step-form/methods/card.d.ts +4 -0
- package/dist/components/checkout/payment-step-form/methods/card.js +160 -0
- package/dist/components/checkout/payment-step-form/methods/card.js.map +1 -0
- package/dist/components/checkout/payment-step-form/methods/crypto.d.ts +9 -0
- package/dist/components/checkout/payment-step-form/methods/crypto.js +137 -0
- package/dist/components/checkout/payment-step-form/methods/crypto.js.map +1 -0
- package/dist/components/checkout/payment-step-form/methods/index.d.ts +6 -0
- package/dist/components/checkout/payment-step-form/methods/index.js +21 -0
- package/dist/components/checkout/payment-step-form/methods/index.js.map +1 -0
- package/dist/components/checkout/shipping-step-form.d.ts +3 -0
- package/dist/components/checkout/shipping-step-form.js +53 -0
- package/dist/components/checkout/shipping-step-form.js.map +1 -0
- package/dist/components/index.d.ts +8 -0
- package/dist/components/index.js +9 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/item/product-card.d.ts +7 -0
- package/dist/components/item/product-card.js +9 -0
- package/dist/components/item/product-card.js.map +1 -0
- package/dist/components/item-selector/button.d.ts +4 -0
- package/dist/components/item-selector/button.js +47 -0
- package/dist/components/item-selector/button.js.map +1 -0
- package/dist/components/item-selector/carousel/index.d.ts +12 -0
- package/dist/components/item-selector/carousel/index.js +74 -0
- package/dist/components/item-selector/carousel/index.js.map +1 -0
- package/dist/components/item-selector/carousel/slider.d.ts +8 -0
- package/dist/components/item-selector/carousel/slider.js +12 -0
- package/dist/components/item-selector/carousel/slider.js.map +1 -0
- package/dist/components/item-selector/index.d.ts +2 -0
- package/dist/components/item-selector/index.js +3 -0
- package/dist/components/item-selector/index.js.map +1 -0
- package/dist/components/item-selector/quantity-indicator.d.ts +9 -0
- package/dist/components/item-selector/quantity-indicator.js +16 -0
- package/dist/components/item-selector/quantity-indicator.js.map +1 -0
- package/dist/components/node-tabs/index.d.ts +14 -0
- package/dist/components/node-tabs/index.js +42 -0
- package/dist/components/node-tabs/index.js.map +1 -0
- package/dist/components/node-tabs/node-image.d.ts +6 -0
- package/dist/components/node-tabs/node-image.js +13 -0
- package/dist/components/node-tabs/node-image.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/service/context.d.ts +8 -0
- package/dist/service/context.js +19 -0
- package/dist/service/context.js.map +1 -0
- package/dist/service/debug.d.ts +10 -0
- package/dist/service/debug.js +30 -0
- package/dist/service/debug.js.map +1 -0
- package/dist/service/impls/standalone/actual-line-item.d.ts +40 -0
- package/dist/service/impls/standalone/actual-line-item.js +84 -0
- package/dist/service/impls/standalone/actual-line-item.js.map +1 -0
- package/dist/service/impls/standalone/get-instance.d.ts +2 -0
- package/dist/service/impls/standalone/get-instance.js +39 -0
- package/dist/service/impls/standalone/get-instance.js.map +1 -0
- package/dist/service/impls/standalone/index.d.ts +67 -0
- package/dist/service/impls/standalone/index.js +416 -0
- package/dist/service/impls/standalone/index.js.map +1 -0
- package/dist/service/impls/standalone/order/firebase.d.ts +2 -0
- package/dist/service/impls/standalone/order/firebase.js +13 -0
- package/dist/service/impls/standalone/order/firebase.js.map +1 -0
- package/dist/service/impls/standalone/order/index.d.ts +24 -0
- package/dist/service/impls/standalone/order/index.js +61 -0
- package/dist/service/impls/standalone/order/index.js.map +1 -0
- package/dist/service/impls/standalone/persistence.d.ts +4 -0
- package/dist/service/impls/standalone/persistence.js +22 -0
- package/dist/service/impls/standalone/persistence.js.map +1 -0
- package/dist/service/path-utils.d.ts +7 -0
- package/dist/service/path-utils.js +16 -0
- package/dist/service/path-utils.js.map +1 -0
- package/dist/service/sep.d.ts +6 -0
- package/dist/service/sep.js +6 -0
- package/dist/service/sep.js.map +1 -0
- package/dist/types/category-node.d.ts +36 -0
- package/dist/types/category-node.js +2 -0
- package/dist/types/category-node.js.map +1 -0
- package/dist/types/checkout.d.ts +33 -0
- package/dist/types/checkout.js +2 -0
- package/dist/types/checkout.js.map +1 -0
- package/dist/types/commerce-config.d.ts +11 -0
- package/dist/types/commerce-config.js +2 -0
- package/dist/types/commerce-config.js.map +1 -0
- package/dist/types/commerce-service.d.ts +109 -0
- package/dist/types/commerce-service.js +2 -0
- package/dist/types/commerce-service.js.map +1 -0
- package/dist/types/family.d.ts +16 -0
- package/dist/types/family.js +2 -0
- package/dist/types/family.js.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/item-selector.d.ts +72 -0
- package/dist/types/item-selector.js +2 -0
- package/dist/types/item-selector.js.map +1 -0
- package/dist/types/line-item.d.ts +14 -0
- package/dist/types/line-item.js +2 -0
- package/dist/types/line-item.js.map +1 -0
- package/dist/types/multi-family-selector-props.d.ts +16 -0
- package/dist/types/multi-family-selector-props.js +2 -0
- package/dist/types/multi-family-selector-props.js.map +1 -0
- package/dist/types/product.d.ts +15 -0
- package/dist/types/product.js +2 -0
- package/dist/types/product.js.map +1 -0
- package/dist/types/promo.d.ts +7 -0
- package/dist/types/promo.js +2 -0
- package/dist/types/promo.js.map +1 -0
- package/dist/types/selection-ui-specifier.d.ts +40 -0
- package/dist/types/selection-ui-specifier.js +2 -0
- package/dist/types/selection-ui-specifier.js.map +1 -0
- package/dist/types/string-mutator.d.ts +9 -0
- package/dist/types/string-mutator.js +2 -0
- package/dist/types/string-mutator.js.map +1 -0
- package/dist/types/token-separators.d.ts +6 -0
- package/dist/types/token-separators.js +2 -0
- package/dist/types/token-separators.js.map +1 -0
- package/dist/util/analytics.d.ts +9 -0
- package/dist/util/analytics.js +10 -0
- package/dist/util/analytics.js.map +1 -0
- package/dist/util/countries.d.ts +7 -0
- package/dist/util/countries.js +197 -0
- package/dist/util/countries.js.map +1 -0
- package/dist/util/error.d.ts +1 -0
- package/dist/util/error.js +22 -0
- package/dist/util/error.js.map +1 -0
- package/dist/util/index.d.ts +15 -0
- package/dist/util/index.js +54 -0
- package/dist/util/index.js.map +1 -0
- package/dist/util/item-selector-options-accessor.d.ts +3 -0
- package/dist/util/item-selector-options-accessor.js +27 -0
- package/dist/util/item-selector-options-accessor.js.map +1 -0
- package/dist/util/line-item-ref.d.ts +8 -0
- package/dist/util/line-item-ref.js +15 -0
- package/dist/util/line-item-ref.js.map +1 -0
- package/dist/util/multi-family-selector-options-accessor.d.ts +3 -0
- package/dist/util/multi-family-selector-options-accessor.js +11 -0
- package/dist/util/multi-family-selector-options-accessor.js.map +1 -0
- package/dist/util/obs-string-mutator.d.ts +8 -0
- package/dist/util/obs-string-mutator.js +15 -0
- package/dist/util/obs-string-mutator.js.map +1 -0
- package/dist/util/product-media-accessor.d.ts +29 -0
- package/dist/util/product-media-accessor.js +22 -0
- package/dist/util/product-media-accessor.js.map +1 -0
- package/dist/util/promo-codes.d.ts +3 -0
- package/dist/util/promo-codes.js +100 -0
- package/dist/util/promo-codes.js.map +1 -0
- package/dist/util/selection-ui-specifiers.d.ts +3 -0
- package/dist/util/selection-ui-specifiers.js +24 -0
- package/dist/util/selection-ui-specifiers.js.map +1 -0
- package/dist/util/square-payment.d.ts +7 -0
- package/dist/util/square-payment.js +37 -0
- package/dist/util/square-payment.js.map +1 -0
- package/dist/util/use-sync-sku-param-w-current-item.d.ts +2 -0
- package/dist/util/use-sync-sku-param-w-current-item.js +61 -0
- package/dist/util/use-sync-sku-param-w-current-item.js.map +1 -0
- package/index.ts +13 -0
- package/libreapps-ui.d.ts +108 -0
- package/package.json +67 -0
- package/service/context.tsx +45 -0
- package/service/debug.ts +41 -0
- package/service/impls/standalone/actual-line-item.ts +136 -0
- package/service/impls/standalone/get-instance.ts +64 -0
- package/service/impls/standalone/index.ts +579 -0
- package/service/impls/standalone/order/firebase.ts +14 -0
- package/service/impls/standalone/order/index.ts +129 -0
- package/service/impls/standalone/persistence.ts +33 -0
- package/service/path-utils.ts +26 -0
- package/service/sep.ts +7 -0
- package/tsconfig.json +17 -0
- package/types/README.md +2 -0
- package/types/category-node.ts +50 -0
- package/types/checkout.ts +47 -0
- package/types/commerce-config.ts +13 -0
- package/types/commerce-service.ts +128 -0
- package/types/family.ts +26 -0
- package/types/index.ts +15 -0
- package/types/item-selector.ts +97 -0
- package/types/line-item.ts +29 -0
- package/types/multi-family-selector-props.ts +20 -0
- package/types/product.ts +21 -0
- package/types/promo.ts +10 -0
- package/types/selection-ui-specifier.ts +52 -0
- package/types/string-mutator.ts +14 -0
- package/types/token-separators.ts +7 -0
- package/util/analytics.ts +21 -0
- package/util/countries.ts +196 -0
- package/util/error.ts +34 -0
- package/util/index.ts +71 -0
- package/util/item-selector-options-accessor.ts +35 -0
- package/util/line-item-ref.ts +23 -0
- package/util/multi-family-selector-options-accessor.ts +15 -0
- package/util/obs-string-mutator.ts +22 -0
- package/util/product-media-accessor.ts +58 -0
- package/util/promo-codes.ts +106 -0
- package/util/selection-ui-specifiers.ts +30 -0
- package/util/square-payment.ts +50 -0
- package/util/use-sync-sku-param-w-current-item.ts +88 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { observer } from 'mobx-react-lite';
|
|
5
|
+
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
6
|
+
import { Image, Label, RadioGroup, ScrollArea } from '@libreapps/ui/primitives';
|
|
7
|
+
import { cn } from '@libreapps/ui/util';
|
|
8
|
+
import { accessItemOptions, formatCurrencyValue } from '../../util';
|
|
9
|
+
import QuantityIndicator from './quantity-indicator';
|
|
10
|
+
const DEFAULT_CONSTRAINT = { h: 36, w: 72 }; // // Apple suggest 42px for clickability
|
|
11
|
+
const ImageRadioGroupItem = React.forwardRef(({ item, constrainTo, className, ...props }, ref) => {
|
|
12
|
+
const img = item.optionImg ? item.optionImg : item.img;
|
|
13
|
+
return (_jsx(RadioGroupPrimitive.Item, { ref: ref, "data-vaul-no-drag": true, className: cn('ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring', 'focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', className, 'overflow-hidden', img?.rounded ? `rounded-${img.rounded}` : 'rounded-sm'), ...props, id: item.sku, value: item.sku, children: img ? (_jsx(Image, { def: img, constrainTo: constrainTo, preload: true, className: '' })) : ( // placeholder so things align
|
|
14
|
+
_jsx("div", { style: { height: constrainTo.h, width: constrainTo.w } })) }));
|
|
15
|
+
});
|
|
16
|
+
ImageRadioGroupItem.displayName = 'ImageRadioGroupItem';
|
|
17
|
+
const ButtonItemSelector = observer(({ items, selectedItemRef: itemRef, selectSku, clx = '', itemClx = '', soleItemClx = '', scrollable = false, mobile = false, options = {} }) => {
|
|
18
|
+
const { showPrice, showQuantity, showFamilyInOption, buttonType, horizButtons, showButtonIfOnlyOne } = accessItemOptions(options);
|
|
19
|
+
const showImage = buttonType !== 'text';
|
|
20
|
+
const showText = buttonType !== 'image';
|
|
21
|
+
const showBoth = buttonType === 'image-and-text';
|
|
22
|
+
const labelAndPrice = (item) => ((showFamilyInOption ? (item.familyTitle + ', ' + item.optionLabel) : item.optionLabel) +
|
|
23
|
+
(showPrice ? ((showFamilyInOption ? ': ' : ', ') + formatCurrencyValue(item.price)) : ''));
|
|
24
|
+
const Item = observer(({ item, selected }) => {
|
|
25
|
+
const textClx = (selected) ? 'text-accent' : 'text-muted';
|
|
26
|
+
const cursorClx = (selected) ? 'hover:cursor-default' : 'hover:cursor-pointer';
|
|
27
|
+
const justifyClx = (showBoth) ? '' : 'justify-center';
|
|
28
|
+
// If no image, the Label must fill the entire button since it has to be
|
|
29
|
+
// clickable all the way to the border
|
|
30
|
+
const paddingClx = (showImage) ? (scrollable ? 'px-4 py-2' : 'px-2 py-2') : '';
|
|
31
|
+
let bgClx = '';
|
|
32
|
+
let borderClx = '';
|
|
33
|
+
if (scrollable) {
|
|
34
|
+
borderClx += (selected) ? 'border-foreground border ' : 'border-b border-muted-2 ';
|
|
35
|
+
}
|
|
36
|
+
else if (!showImage) {
|
|
37
|
+
borderClx += 'border rounded-lg ';
|
|
38
|
+
borderClx += (selected) ? 'border-foreground ' : 'border-muted-2 ';
|
|
39
|
+
bgClx += 'hover:bg-level-2';
|
|
40
|
+
}
|
|
41
|
+
const outerClx = ['h-10 flex items-center', justifyClx, paddingClx, bgClx, borderClx];
|
|
42
|
+
return (_jsxs("div", { className: cn(...outerClx, itemClx), "data-vaul-no-drag": true, children: [_jsx(ImageRadioGroupItem, { item: item, constrainTo: DEFAULT_CONSTRAINT, className: cn(cursorClx, (scrollable ? '' : 'border-transparent border-2 data-[state=checked]:border-foreground'), showBoth ? 'mr-2' : (showImage ? '' : 'hidden')) }), _jsxs(Label, { htmlFor: item.sku, className: cn(showQuantity ? 'flex items-center' : 'block', textClx, cursorClx, (showImage ? '' : 'self-stretch w-full flex items-center justify-center px-3 py-2'), (showText ? '' : 'hidden')), children: [_jsx("div", { className: showQuantity ? 'grow' : '', children: labelAndPrice(item) }), showQuantity && (_jsx(QuantityIndicator, { item: item, clx: 'grow-0 shrink-0 h-[20px] ml-2', iconClx: selected ? 'fill-foreground' : 'fill-muted', digitClx: 'font-semibold text-primary-fg leading-none font-sans text-xxs' }))] })] }));
|
|
43
|
+
});
|
|
44
|
+
return showButtonIfOnlyOne || items.length > 1 ? (_jsx(RadioGroup, { className: cn((scrollable ? 'shrink min-h-0 gap-0' : (mobile ? 'gap-3' : 'gap-1')), (horizButtons ? `grid grid-cols-${items.length} gap-1` : 'flex flex-col'), (mobile && showText) ? 'min-w-pr-50' : '', clx), onValueChange: selectSku, value: itemRef.item ? itemRef.item.sku : '', "data-vaul-no-drag": true, children: scrollable ? (_jsx(ScrollArea, { className: 'mt-2 w-full h-full py-0 border border-muted-2', "data-vaul-no-drag": true, children: items.map((item) => (_jsx(Item, { item: item, selected: itemRef.item?.sku === item.sku }, item.sku))) })) : (_jsx(_Fragment, { children: items.map((item) => (_jsx(Item, { item: item, selected: itemRef.item?.sku === item.sku }, item.sku))) })) })) : (_jsxs("div", { className: cn(showQuantity ? 'flex items-center' : 'block', soleItemClx), children: [_jsx("div", { className: showQuantity ? 'grow' : '', children: labelAndPrice(items[0]) }), showQuantity && (_jsx(QuantityIndicator, { item: items[0], clx: 'grow-0 shrink-0 font-semibold text-sm leading-none px-2' }))] }));
|
|
45
|
+
});
|
|
46
|
+
export default ButtonItemSelector;
|
|
47
|
+
//# sourceMappingURL=button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../../components/item-selector/button.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Dimensions } from '@libreapps/ui/types';
|
|
3
|
+
import { type CarouselOptions } from '@libreapps/ui/primitives';
|
|
4
|
+
import type { ItemSelectorProps } from '../../../types';
|
|
5
|
+
interface CarouselItemSelectorPropsExt {
|
|
6
|
+
constrainTo: Dimensions;
|
|
7
|
+
options?: CarouselOptions;
|
|
8
|
+
/** Do not show Family and / or Item title and Price */
|
|
9
|
+
imageOnly?: boolean;
|
|
10
|
+
}
|
|
11
|
+
declare const CarouselItemSelector: React.FC<ItemSelectorProps>;
|
|
12
|
+
export { type CarouselItemSelectorPropsExt, CarouselItemSelector as default };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { reaction } from 'mobx';
|
|
5
|
+
import { observer } from 'mobx-react-lite';
|
|
6
|
+
import { cn } from '@libreapps/ui/util';
|
|
7
|
+
import { ApplyTypography, Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext, MediaStack, } from '@libreapps/ui/primitives';
|
|
8
|
+
import { formatCurrencyValue, accessItemOptions } from '../../../util';
|
|
9
|
+
import QuantityIndicator from '../quantity-indicator';
|
|
10
|
+
import ItemCarouselSlider from './slider';
|
|
11
|
+
const DEFAULT_CONSTRAINT = { w: 250, h: 250 };
|
|
12
|
+
const ItemSlide = ({ item, constrainTo, clx = '' }) => (_jsx(CarouselItem, { className: cn('p-2 flex flex-col justify-center items-center', clx), children: _jsx(MediaStack, { media: item, constrainTo: constrainTo, clx: 'my-4' }) }));
|
|
13
|
+
const CarouselItemSelector = observer(({ items, selectSku, selectedItemRef: itemRef, clx = '', itemClx = '', options = {}, ext = {
|
|
14
|
+
options: { loop: true },
|
|
15
|
+
constrainTo: DEFAULT_CONSTRAINT,
|
|
16
|
+
imageOnly: false
|
|
17
|
+
} }) => {
|
|
18
|
+
const { showPrice, showQuantity, showFamilyInOption, showByline, showSlider, } = accessItemOptions(options);
|
|
19
|
+
const elbaApiRef = useRef(undefined);
|
|
20
|
+
const scrollToRef = useRef(undefined);
|
|
21
|
+
const dontRespondRef = useRef(false);
|
|
22
|
+
const setApi = (api) => { elbaApiRef.current = api; };
|
|
23
|
+
const setScrollTo = (scrollTo) => { scrollToRef.current = scrollTo; };
|
|
24
|
+
const carouselOptions = 'options' in ext ? ext.options : undefined;
|
|
25
|
+
const constrainTo = 'constrainTo' in ext ? ext.constrainTo : DEFAULT_CONSTRAINT;
|
|
26
|
+
const imageOnly = 'imageOnly' in ext ? ext.imageOnly : false;
|
|
27
|
+
const onSelect = useCallback((emblaApi) => {
|
|
28
|
+
if (dontRespondRef.current) {
|
|
29
|
+
dontRespondRef.current = false;
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const index = emblaApi.selectedScrollSnap();
|
|
33
|
+
if (index !== -1) {
|
|
34
|
+
selectSku(items[index].sku);
|
|
35
|
+
if (scrollToRef.current) {
|
|
36
|
+
scrollToRef.current(index);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
dontRespondRef.current = false;
|
|
40
|
+
}, [scrollToRef.current]);
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
return reaction(() => (itemRef.item), (item) => {
|
|
43
|
+
if (elbaApiRef.current) {
|
|
44
|
+
const index = items.findIndex((el) => (el.sku === item?.sku));
|
|
45
|
+
if (index !== -1) {
|
|
46
|
+
dontRespondRef.current = true;
|
|
47
|
+
elbaApiRef.current.scrollTo(index);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}, []);
|
|
52
|
+
const optionLabel = () => (showFamilyInOption ?
|
|
53
|
+
(itemRef.item?.familyTitle + ', ' + itemRef.item?.optionLabel)
|
|
54
|
+
:
|
|
55
|
+
itemRef.item?.optionLabel);
|
|
56
|
+
const debugBorder = (c) => {
|
|
57
|
+
return '';
|
|
58
|
+
switch (c) {
|
|
59
|
+
case 'r': return ' border border-[#ffaaaa] ';
|
|
60
|
+
case 'g': return ' border border-[#aaffaa] ';
|
|
61
|
+
case 'b': return ' border border-[#aaaaff] ';
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
const onScrollIndexChange = (index) => {
|
|
65
|
+
dontRespondRef.current = true;
|
|
66
|
+
selectSku(items[index].sku);
|
|
67
|
+
elbaApiRef.current?.scrollTo(index);
|
|
68
|
+
};
|
|
69
|
+
return (_jsxs("div", { className: cn('w-full flex flex-col items-center', clx), children: [_jsxs(Carousel, { options: showSlider ? { ...carouselOptions, loop: false } : carouselOptions, className: 'w-full px-2' + debugBorder('r'), onCarouselSelect: onSelect, setApi: setApi, children: [_jsx(CarouselContent, { children: items.map((item) => (_jsx(ItemSlide, { item: item, constrainTo: constrainTo, clx: itemClx }, item.sku))) }), !showSlider && (_jsxs(_Fragment, { children: [_jsx(CarouselPrevious, { className: 'left-1' }), _jsx(CarouselNext, { className: 'right-1' })] }))] }), (!imageOnly && itemRef.item) && (_jsxs(_Fragment, { children: [_jsxs(ApplyTypography, { className: 'flex flex-col items-center [&>*]:!m-0 !gap-1 ', children: [_jsxs("div", { className: 'flex items-center gap-1 [&>*]:!m-0 ' + debugBorder('g') +
|
|
70
|
+
(showFamilyInOption ? 'flex-col' : 'flex-row'), children: [_jsx("h6", { className: 'font-semibold', children: optionLabel() + (showPrice && !showFamilyInOption ? ',' : '') }), _jsxs("div", { className: 'flex items-center gap-1 [&>*]:!m-0 flex-row ' + debugBorder('b') +
|
|
71
|
+
(showFamilyInOption ? 'w-full justify-between' : ''), children: [showPrice && (_jsx("p", { children: formatCurrencyValue(itemRef.item.price) })), showQuantity && (_jsx(QuantityIndicator, { item: itemRef.item, clx: 'h-[22px] ml-4', iconClx: 'fill-foreground', digitClx: 'not-typography font-semibold text-primary-fg leading-none font-sans text-xs' }))] })] }), showByline && itemRef.item.byline && (_jsx("p", { children: itemRef.item.byline }))] }), showSlider && items.length > 1 && (_jsx(ItemCarouselSlider, { clx: 'mt-5 w-[320px]', numStops: items.length, setScrollTo: setScrollTo, onIndexChange: onScrollIndexChange }))] }))] }));
|
|
72
|
+
});
|
|
73
|
+
export { CarouselItemSelector as default };
|
|
74
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../components/item-selector/carousel/index.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAGvC,OAAO,EACL,eAAe,EAGf,QAAQ,EACR,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,UAAU,GACX,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtE,OAAO,iBAAiB,MAAM,uBAAuB,CAAA;AACrD,OAAO,kBAAkB,MAAM,UAAU,CAAA;AAEzC,MAAM,kBAAkB,GAAG,EAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAC,CAAA;AAS3C,MAAM,SAAS,GAIV,CAAC,EACJ,IAAI,EACJ,WAAW,EACX,GAAG,GAAC,EAAE,EACP,EAAE,EAAE,CAAC,CACJ,KAAC,YAAY,IAAC,SAAS,EAAE,EAAE,CAAC,+CAA+C,EAAE,GAAG,CAAC,YAC/E,KAAC,UAAU,IAAC,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAC,MAAM,GAAG,GACnD,CAChB,CAAA;AAED,MAAM,oBAAoB,GAAgC,QAAQ,CAAC,CAAC,EAClE,KAAK,EACL,SAAS,EACT,eAAe,EAAE,OAAO,EACxB,GAAG,GAAC,EAAE,EACN,OAAO,GAAC,EAAE,EACV,OAAO,GAAC,EAAE,EACV,GAAG,GAAC;IACF,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC;IACrB,WAAW,EAAE,kBAAkB;IAC/B,SAAS,EAAE,KAAK;CACsB,EACzC,EAAE,EAAE;IAEH,MAAM,EACJ,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,UAAU,GACX,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAA;IAE9B,MAAM,UAAU,GAAG,MAAM,CAA0B,SAAS,CAAC,CAAA;IAC7D,MAAM,WAAW,GAAG,MAAM,CAAwC,SAAS,CAAC,CAAA;IAC5E,MAAM,cAAc,GAAG,MAAM,CAAU,KAAK,CAAC,CAAA;IAE7C,MAAM,MAAM,GAAG,CAAC,GAAgB,EAAE,EAAE,GAAE,UAAU,CAAC,OAAO,GAAG,GAAG,CAAA,CAAA,CAAC,CAAA;IAC/D,MAAM,WAAW,GAAG,CAAC,QAAiC,EAAE,EAAE,GAAG,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAA,CAAA,CAAC,CAAA;IAE5F,MAAM,eAAe,GAAG,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;IAClE,MAAM,WAAW,GAAG,aAAa,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,kBAAkB,CAAA;IAC/E,MAAM,SAAS,GAAG,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAA;IAE5D,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,QAAqB,EAAE,EAAE;QACrD,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;YAC3B,cAAc,CAAC,OAAO,GAAG,KAAK,CAAA;YAC9B,OAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,EAAE,CAAA;QAC3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;YAC3B,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxB,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QACD,cAAc,CAAC,OAAO,GAAG,KAAK,CAAA;IAChC,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAE,CAAC,CAAA;IAE1B,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,QAAQ,CACb,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EACpB,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;gBAC7D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBACjB,cAAc,CAAC,OAAO,GAAG,IAAI,CAAA;oBAC7B,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;QACH,CAAC,CACF,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,CACxB,kBAAkB,CAAC,CAAC;QAClB,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;QAC9D,CAAC;YACD,OAAO,CAAC,IAAI,EAAE,WAAW,CAC5B,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,CAAkB,EAAU,EAAE;QAChD,OAAO,EAAE,CAAA;QAEV,QAAQ,CAAC,EAAE,CAAC;YACV,KAAK,GAAG,CAAC,CAAC,OAAO,2BAA2B,CAAA;YAC5C,KAAK,GAAG,CAAC,CAAC,OAAO,2BAA2B,CAAA;YAC5C,KAAK,GAAG,CAAC,CAAC,OAAO,2BAA2B,CAAA;QAC9C,CAAC;IACH,CAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,CAAC,KAAa,EAAE,EAAE;QAC5C,cAAc,CAAC,OAAO,GAAG,IAAI,CAAA;QAC7B,SAAS,CAAC,KAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA;QAC5B,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC,CAAA;IAED,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,mCAAmC,EAAE,GAAG,CAAC,aAC1D,MAAC,QAAQ,IACP,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,EAAC,GAAG,eAAe,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,eAAe,EACzE,SAAS,EAAE,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,EAC3C,gBAAgB,EAAE,QAAQ,EAC1B,MAAM,EAAE,MAAM,aAEd,KAAC,eAAe,cACf,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,SAAS,IAAgB,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,IAA5D,IAAI,CAAC,GAAG,CAAwD,CACjF,CAAC,GACgB,EACjB,CAAC,UAAU,IAAI,CAAC,8BACf,KAAC,gBAAgB,IAAC,SAAS,EAAC,QAAQ,GAAE,EACtC,KAAC,YAAY,IAAC,SAAS,EAAC,SAAS,GAAE,IAClC,CAAC,IACK,EAEV,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,8BAChC,MAAC,eAAe,IAAC,SAAS,EAAC,+CAA+C,aACxE,eAAK,SAAS,EACZ,qCAAqC,GAAG,WAAW,CAAC,GAAG,CAAC;oCACxD,CAAC,kBAAkB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,aAE9C,aAAI,SAAS,EAAC,eAAe,YAC1B,WAAW,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAC3D,EACL,eAAK,SAAS,EACZ,8CAA8C,GAAI,WAAW,CAAC,GAAG,CAAC;4CAClE,CAAC,kBAAkB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,aAEnD,SAAS,IAAI,CAAC,sBAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAK,CAAC,EAC/D,YAAY,IAAI,CACf,KAAC,iBAAiB,IAChB,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,GAAG,EAAC,eAAe,EACnB,OAAO,EAAC,iBAAiB,EACzB,QAAQ,EAAC,6EAA6E,GACtF,CACH,IACG,IACF,EACL,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,sBAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAK,CAAC,IACpD,EACjB,UAAU,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACjC,KAAC,kBAAkB,IACjB,GAAG,EAAC,gBAAgB,EACpB,QAAQ,EAAE,KAAK,CAAC,MAAM,EACtB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,mBAAmB,GAClC,CACH,IACA,CAAC,IACA,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,OAAO,EAEL,oBAAoB,IAAI,OAAO,EAChC,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import React, { useEffect, useState } from 'react';
|
|
4
|
+
import { Slider } from '@libreapps/ui/primitives';
|
|
5
|
+
const ItemCarouselSlider = ({ clx = '', setScrollTo, onIndexChange, numStops, }) => {
|
|
6
|
+
const [index, setIndex] = useState(0);
|
|
7
|
+
useEffect(() => { setScrollTo(setIndex); }, [setScrollTo]);
|
|
8
|
+
const onValueChange = (v) => { setIndex(v[0]); onIndexChange(v[0]); };
|
|
9
|
+
return (_jsx(Slider, { className: clx, thumbClx: 'w-8 border-muted border-2 bg-level-1 focus-visible:ring-0 focus-visible:ring-offset-0 transition-none', trackBgClx: 'bg-level-3', rangeBgClx: 'bg-level-3', thumbSlidingClx: 'bg-muted-2', defaultValue: [0], min: 0, max: numStops - 1, step: 1, value: [index], onValueChange: onValueChange }));
|
|
10
|
+
};
|
|
11
|
+
export default ItemCarouselSlider;
|
|
12
|
+
//# sourceMappingURL=slider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider.js","sourceRoot":"","sources":["../../../../components/item-selector/carousel/slider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAEjD,MAAM,kBAAkB,GAKnB,CAAC,EACJ,GAAG,GAAC,EAAE,EACN,WAAW,EACX,aAAa,EACb,QAAQ,GACT,EAAE,EAAE;IAEH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,CAAC,CAAC,CAAA;IAC7C,SAAS,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEzD,MAAM,aAAa,GAAG,CAAC,CAAW,EAAE,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,CAAA;IAE9E,OAAO,CACL,KAAC,MAAM,IACL,SAAS,EAAE,GAAG,EACd,QAAQ,EAAC,uGAAuG,EAChH,UAAU,EAAC,YAAY,EACvB,UAAU,EAAC,YAAY,EACvB,eAAe,EAAC,YAAY,EAC5B,YAAY,EAAE,CAAC,CAAC,CAAC,EACjB,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,QAAQ,GAAG,CAAC,EACjB,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,KAAK,CAAC,EACd,aAAa,EAAE,aAAa,GAC5B,CACH,CAAA;AACH,CAAC,CAAA;AAED,eAAe,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/item-selector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,EACL,OAAO,IAAI,oBAAoB,EAEhC,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { observer } from 'mobx-react-lite';
|
|
5
|
+
import {} from 'lucide-react';
|
|
6
|
+
import { cn } from '@libreapps/ui/util';
|
|
7
|
+
// Generalize this.
|
|
8
|
+
const BagIcon = (props) => (_jsx("svg", { fill: "currentColor", viewBox: '0 0 20 23', ...props, children: _jsx("path", { fillRule: "evenodd", d: "M5 5a5 5 0 0 1 10 0v1h-2V5a3 3 0 1 0-6 0v1H5V5Zm0 1v4h2V6h6v4h2V6h3.5a1 1 0 0 1 1 1v15a1 1 0 0 1-1 1h-17a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1H5Z", clipRule: "evenodd" }) }));
|
|
9
|
+
const QuantityIndicator = observer(({ item, clx = '', iconClx = '', digitClx = '' }) => {
|
|
10
|
+
if (!item.isInCart) {
|
|
11
|
+
return _jsx("div", {});
|
|
12
|
+
}
|
|
13
|
+
return (_jsxs("div", { className: cn('relative aspect-square flex items-center justify-center', clx), children: [_jsxs("div", { className: cn('z-above-content flex flex-col justify-center items-center', 'absolute left-0 right-0 top-0 bottom-0', digitClx), children: [_jsx("div", { className: 'h-[1px] w-full' }), _jsx("div", { style: { color: 'black' /* tailwind bug */ }, children: item.quantity })] }), _jsx(BagIcon, { className: cn('relative -top-[12%] h-full ', iconClx), "aria-hidden": "true" })] }));
|
|
14
|
+
}); // -top-[3px]
|
|
15
|
+
export default QuantityIndicator;
|
|
16
|
+
//# sourceMappingURL=quantity-indicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quantity-indicator.js","sourceRoot":"","sources":["../../../components/item-selector/quantity-indicator.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE1C,OAAO,EAAoB,MAAM,cAAc,CAAA;AAE/C,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAGrC,mBAAmB;AACrB,MAAM,OAAO,GAA0B,CAAC,KAAkB,EAAE,EAAE,CAAC,CAC7D,cAAK,IAAI,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,KAAK,KAAK,YACpD,eAAM,QAAQ,EAAC,SAAS,EAAC,CAAC,EAAC,2IAA2I,EAAC,QAAQ,EAAC,SAAS,GAAE,GACvL,CACP,CAAA;AAED,MAAM,iBAAiB,GAKlB,QAAQ,CAAC,CAAC,EACb,IAAI,EACJ,GAAG,GAAC,EAAE,EACN,OAAO,GAAC,EAAE,EACV,QAAQ,GAAC,EAAE,EACZ,EAAE,EAAE;IAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,eAAO,CAAA;IAChB,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,yDAAyD,EAAE,GAAG,CAAC,aAChF,eAAK,SAAS,EAAE,EAAE,CAChB,2DAA2D,EAC3D,wCAAwC,EACxC,QAAQ,CACT,aACC,cAAK,SAAS,EAAC,gBAAgB,GAAG,EAClC,cAAK,KAAK,EAAE,EAAC,KAAK,EAAE,OAAO,CAAC,kBAAkB,EAAC,YAAG,IAAI,CAAC,QAAQ,GAAO,IAClE,EACN,KAAC,OAAO,IAAC,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,OAAO,CAAG,iBAAc,MAAM,GAAG,IACnF,CACP,CAAA;AACH,CAAC,CAAC,CAAA,CAAC,cAAc;AAEjB,eAAe,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { CategoryNode, StringMutator, StringArrayMutator } from '../../types';
|
|
3
|
+
declare const NodeTabs: React.FC<{
|
|
4
|
+
levelNodes: CategoryNode[];
|
|
5
|
+
mutator: StringMutator | StringArrayMutator;
|
|
6
|
+
multiple?: boolean;
|
|
7
|
+
className?: string;
|
|
8
|
+
buttonClx?: string;
|
|
9
|
+
itemClx?: string;
|
|
10
|
+
mobile?: boolean;
|
|
11
|
+
tabSize?: string;
|
|
12
|
+
show?: 'image' | 'label' | 'image-and-label';
|
|
13
|
+
}>;
|
|
14
|
+
export default NodeTabs;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import React, { useState } from 'react';
|
|
4
|
+
import { ToggleGroup, ToggleGroupItem } from "@libreapps/ui/primitives";
|
|
5
|
+
import { cn } from '@libreapps/ui/util';
|
|
6
|
+
import NodeImage from './node-image';
|
|
7
|
+
const NodeTabs = ({ levelNodes, mutator, multiple = false, buttonClx = '', itemClx = '', className = '', mobile = false, tabSize, show = 'image-and-label' }) => {
|
|
8
|
+
const [last, setLast] = useState(undefined);
|
|
9
|
+
const handleChangeMultiple = (selected) => {
|
|
10
|
+
mutator.set(selected);
|
|
11
|
+
setLast(selected.length === 1 ? selected[0] : undefined);
|
|
12
|
+
};
|
|
13
|
+
const handleChangeSingle = (selected) => {
|
|
14
|
+
mutator.set(selected);
|
|
15
|
+
if (selected) {
|
|
16
|
+
setLast(selected);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const roundedToSpread = {};
|
|
20
|
+
if (multiple) {
|
|
21
|
+
roundedToSpread.rounded = 'xl';
|
|
22
|
+
}
|
|
23
|
+
const val = multiple ?
|
|
24
|
+
mutator.get()
|
|
25
|
+
:
|
|
26
|
+
mutator.get();
|
|
27
|
+
return (_jsx(ToggleGroup, { type: multiple ? 'multiple' : 'single', value: val, variant: 'default', size: tabSize ? tabSize : (mobile ? 'sm' : 'default'), onValueChange: multiple ? handleChangeMultiple : handleChangeSingle, className: className, ...roundedToSpread, children: levelNodes.map((treeNode, index) => {
|
|
28
|
+
const roundedToSpread = {};
|
|
29
|
+
if (!multiple) {
|
|
30
|
+
roundedToSpread.rounded = 'none';
|
|
31
|
+
if (index === 0) {
|
|
32
|
+
roundedToSpread.rounded = 'llg';
|
|
33
|
+
}
|
|
34
|
+
else if (index === levelNodes.length - 1) {
|
|
35
|
+
roundedToSpread.rounded = 'rlg';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return (_jsx(ToggleGroupItem, { value: treeNode.skuToken, disabled: (last && last === treeNode.skuToken || treeNode.skuToken === mutator.get()), "aria-label": `Select ${treeNode.label}`, ...roundedToSpread, className: buttonClx, children: _jsxs("span", { className: cn('flex flex-row justify-center gap-1 h-6 items-center', itemClx), children: [!(show === 'label') && (_jsx(NodeImage, { treeNode: treeNode })), (!(show === 'image') || !treeNode.img) && (_jsx("span", { className: 'whitespace-nowrap', children: treeNode.label }))] }) }, treeNode.skuToken));
|
|
39
|
+
}) }));
|
|
40
|
+
};
|
|
41
|
+
export default NodeTabs;
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../components/node-tabs/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import Image from 'next/image';
|
|
4
|
+
const ICON_SIZE = 20;
|
|
5
|
+
const NodeImage = ({ treeNode: { img, imgAR: ar, label } }) => {
|
|
6
|
+
if (!img) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
// treat as URL
|
|
10
|
+
return (typeof img === 'string') ? (_jsx(Image, { src: img, alt: `Toggle ${label}`, className: 'block mr-1 ', width: ar ? ar * ICON_SIZE : ICON_SIZE, height: ICON_SIZE })) : img;
|
|
11
|
+
};
|
|
12
|
+
export default NodeImage;
|
|
13
|
+
//# sourceMappingURL=node-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-image.js","sourceRoot":"","sources":["../../../components/node-tabs/node-image.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,MAAM,YAAY,CAAA;AAI9B,MAAM,SAAS,GAAG,EAAE,CAAA;AAEpB,MAAM,SAAS,GAEV,CAAC,EACJ,QAAQ,EAAE,EACR,GAAG,EACH,KAAK,EAAE,EAAE,EACT,KAAK,EACN,EACF,EAAE,EAAE;IAEH,IAAI,CAAC,GAAG,EAAE,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC;IACvB,eAAe;IACjB,OAAO,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CACjC,KAAC,KAAK,IACJ,GAAG,EAAE,GAAa,EAClB,GAAG,EAAE,UAAU,KAAK,EAAE,EACtB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,EAAE,CAAC,CAAC,CAAE,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,EACvC,MAAM,EAAE,SAAS,GACjB,CACH,CAAC,CAAC,CAAE,GAAuB,CAAA;AAC9B,CAAC,CAAA;AAED,eAAe,SAAS,CAAA"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './service/context';
|
|
2
|
+
export * from './components';
|
|
3
|
+
export type { StandaloneServiceOptions as ServiceOptions } from './service/impls/standalone';
|
|
4
|
+
export { useSyncSkuParamWithCurrentItem, getFacetValuesMutator, formatCurrencyValue, ProductMediaAccessor, LineItemRef } from './util';
|
|
5
|
+
export * from './util/selection-ui-specifiers';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './service/context';
|
|
2
|
+
export * from './components';
|
|
3
|
+
export { useSyncSkuParamWithCurrentItem, getFacetValuesMutator, formatCurrencyValue, ProductMediaAccessor, LineItemRef } from './util';
|
|
4
|
+
export * from './util/selection-ui-specifiers';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAG5B,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,WAAW,EACZ,MAAM,QAAQ,CAAA;AAEf,cAAc,gCAAgC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React, { type PropsWithChildren } from 'react';
|
|
2
|
+
import type CommerceService from '../types/commerce-service';
|
|
3
|
+
import type { CommerceConfig } from '../types';
|
|
4
|
+
declare const useCommerce: () => CommerceService;
|
|
5
|
+
declare const CommerceProvider: React.FC<PropsWithChildren & {
|
|
6
|
+
config: CommerceConfig;
|
|
7
|
+
}>;
|
|
8
|
+
export { useCommerce, CommerceProvider };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import React, { createContext, useContext, useRef, } from 'react';
|
|
4
|
+
// https://dev.to/ivandotv/mobx-server-side-rendering-with-next-js-4m18
|
|
5
|
+
import { enableStaticRendering } from 'mobx-react-lite';
|
|
6
|
+
enableStaticRendering(typeof window === "undefined");
|
|
7
|
+
import { getInstance } from './impls/standalone';
|
|
8
|
+
const CommerceContext = createContext(undefined);
|
|
9
|
+
const useCommerce = () => {
|
|
10
|
+
return useContext(CommerceContext);
|
|
11
|
+
};
|
|
12
|
+
const CommerceProvider = ({ children, config }) => {
|
|
13
|
+
// TODO: Inject Promo fixture here from siteDef
|
|
14
|
+
const service = getInstance(config);
|
|
15
|
+
const valueRef = useRef(service);
|
|
16
|
+
return (_jsx(CommerceContext.Provider, { value: valueRef.current, children: children }));
|
|
17
|
+
};
|
|
18
|
+
export { useCommerce, CommerceProvider };
|
|
19
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../service/context.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AACZ,OAAO,KAAK,EAAE,EACZ,aAAa,EACb,UAAU,EACV,MAAM,GAEP,MAAM,OAAO,CAAA;AAEd,uEAAuE;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AACvD,qBAAqB,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,CAAA;AAIpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEhD,MAAM,eAAe,GAAG,aAAa,CAA8B,SAAS,CAAC,CAAA;AAE7E,MAAM,WAAW,GAAG,GAAoB,EAAE;IACxC,OAAO,UAAU,CAAC,eAAe,CAAoB,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,gBAAgB,GAEjB,CAAC,EACJ,QAAQ,EACR,MAAM,EACP,EAAE,EAAE;IAED,+CAA+C;IACjD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,QAAQ,GAAG,MAAM,CAAkB,OAAO,CAAC,CAAA;IAEjD,OAAO,CACL,KAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,YAC9C,QAAQ,GACgB,CAC5B,CAAA;AACH,CAAC,CAAA;AAED,OAAO,EACL,WAAW,EACX,gBAAgB,EACjB,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CategoryNode, CategoryNodeRole, Family, LineItem } from '../types';
|
|
2
|
+
export declare const categoryNodeDump: (node: CategoryNode, level?: number) => void;
|
|
3
|
+
export declare const selectedFamiliesDump: (result: Family[]) => string;
|
|
4
|
+
export declare const peekDump: (result: {
|
|
5
|
+
role: CategoryNodeRole;
|
|
6
|
+
family: Family | undefined;
|
|
7
|
+
families: Family[] | undefined;
|
|
8
|
+
node: CategoryNode | undefined;
|
|
9
|
+
item: LineItem | undefined;
|
|
10
|
+
} | string) => string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Node recursion
|
|
2
|
+
export const categoryNodeDump = (node, level = 0) => {
|
|
3
|
+
const spacers = [];
|
|
4
|
+
for (let i = 0; i < level; i++) {
|
|
5
|
+
spacers.push('----');
|
|
6
|
+
}
|
|
7
|
+
console.log("NODE:" + spacers.join(''), node.skuToken);
|
|
8
|
+
node.subNodes?.forEach((sn) => { categoryNodeDump(sn, level + 1); });
|
|
9
|
+
};
|
|
10
|
+
export const selectedFamiliesDump = (result) => {
|
|
11
|
+
const toDisplay = result.map((c) => (c.id));
|
|
12
|
+
return JSON.stringify(toDisplay, null, 2);
|
|
13
|
+
};
|
|
14
|
+
export const peekDump = (result) => {
|
|
15
|
+
if (typeof result === 'string') {
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
const toDisplay = {
|
|
19
|
+
role: result.role,
|
|
20
|
+
item: result.item ? result.item.sku : 'UNDEF',
|
|
21
|
+
family: result.family ? result.family.id : 'UNDEF',
|
|
22
|
+
families: result.families ? result.families.map((f) => (f.id)) : 'UNDEF',
|
|
23
|
+
node: result.node ?
|
|
24
|
+
(result.node.skuToken + (result.node.label ? (': ' + result.node.label) : ''))
|
|
25
|
+
:
|
|
26
|
+
'UNDEF'
|
|
27
|
+
};
|
|
28
|
+
return JSON.stringify(toDisplay, null, 2);
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../service/debug.ts"],"names":[],"mappings":"AAEE,iBAAiB;AACnB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAkB,EAAE,QAAgB,CAAC,EAAQ,EAAE;IAC9E,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtD,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,EAAgB,EAAE,EAAE,GAAE,gBAAgB,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA,CAAA,CAAC,CAAC,CAAA;AACjF,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,MAAgB,EAAU,EAAE;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,MAMf,EAAU,EAAE;IAEpB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAA;IACf,CAAC;IAED,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO;QAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;QAClD,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;QACxE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9E,CAAC;gBACD,OAAO;KACV,CAAA;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAC3C,CAAC,CAAA"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ImageDef, MediaTransform, VideoDef } from '@libreapps/ui/types';
|
|
2
|
+
import type { Product, LineItem, CommerceService } from '../../../types';
|
|
3
|
+
interface ActualLineItemSnapshot {
|
|
4
|
+
sku: string;
|
|
5
|
+
familyId: string;
|
|
6
|
+
title: string;
|
|
7
|
+
price: number;
|
|
8
|
+
quantity: number;
|
|
9
|
+
timeAdded: number;
|
|
10
|
+
timeModified: number;
|
|
11
|
+
}
|
|
12
|
+
declare class ActualLineItem implements LineItem {
|
|
13
|
+
qu: number;
|
|
14
|
+
id: string;
|
|
15
|
+
sku: string;
|
|
16
|
+
fullTitle?: string;
|
|
17
|
+
optionLabel: string;
|
|
18
|
+
optionLabelShort?: string;
|
|
19
|
+
familyTitle: string;
|
|
20
|
+
familyId: string;
|
|
21
|
+
byline?: string;
|
|
22
|
+
desc?: string;
|
|
23
|
+
price: number;
|
|
24
|
+
img?: ImageDef;
|
|
25
|
+
video?: VideoDef;
|
|
26
|
+
animation?: string;
|
|
27
|
+
mediaTransform?: MediaTransform;
|
|
28
|
+
optionImg?: ImageDef;
|
|
29
|
+
timeAdded: number;
|
|
30
|
+
timeModified: number;
|
|
31
|
+
constructor(prod: Product, snap?: ActualLineItemSnapshot);
|
|
32
|
+
get title(): string;
|
|
33
|
+
takeSnapshot: (cmmc: CommerceService) => ActualLineItemSnapshot;
|
|
34
|
+
get canDecrement(): boolean;
|
|
35
|
+
get quantity(): number;
|
|
36
|
+
get isInCart(): boolean;
|
|
37
|
+
increment(): void;
|
|
38
|
+
decrement(): void;
|
|
39
|
+
}
|
|
40
|
+
export { type ActualLineItemSnapshot, ActualLineItem as default };
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { action, computed, makeObservable, observable, } from 'mobx';
|
|
2
|
+
class ActualLineItem {
|
|
3
|
+
constructor(prod, snap) {
|
|
4
|
+
this.qu = 0;
|
|
5
|
+
this.timeAdded = 0; // Timestamp when added
|
|
6
|
+
this.timeModified = 0; // Timestamp quantity last modified (0 if not in cart)
|
|
7
|
+
this.takeSnapshot = (cmmc) => {
|
|
8
|
+
const title = this.fullTitle ?
|
|
9
|
+
this.fullTitle
|
|
10
|
+
:
|
|
11
|
+
((cmmc.getFamilyById(this.familyId)?.title ?? this.familyTitle) + ', ' + this.optionLabel);
|
|
12
|
+
return {
|
|
13
|
+
sku: this.sku,
|
|
14
|
+
familyId: this.familyId,
|
|
15
|
+
title,
|
|
16
|
+
price: this.price,
|
|
17
|
+
quantity: this.qu,
|
|
18
|
+
timeAdded: this.timeAdded,
|
|
19
|
+
timeModified: this.timeModified
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
this.id = prod.id;
|
|
23
|
+
this.sku = prod.sku;
|
|
24
|
+
this.fullTitle = prod.fullTitle;
|
|
25
|
+
this.optionLabel = prod.optionLabel;
|
|
26
|
+
this.optionLabelShort = prod.optionLabelShort;
|
|
27
|
+
this.familyTitle = prod.familyTitle;
|
|
28
|
+
this.familyId = prod.familyId;
|
|
29
|
+
this.byline = prod.byline;
|
|
30
|
+
this.desc = prod.desc;
|
|
31
|
+
this.price = prod.price;
|
|
32
|
+
this.img = prod.img;
|
|
33
|
+
this.video = prod.video;
|
|
34
|
+
this.animation = prod.animation;
|
|
35
|
+
this.optionImg = prod.optionImg;
|
|
36
|
+
this.mediaTransform = prod.mediaTransform;
|
|
37
|
+
if (snap) {
|
|
38
|
+
this.qu = snap.quantity;
|
|
39
|
+
this.timeAdded = snap.timeAdded;
|
|
40
|
+
this.timeModified = snap.timeModified;
|
|
41
|
+
}
|
|
42
|
+
makeObservable(this, {
|
|
43
|
+
qu: observable,
|
|
44
|
+
timeAdded: observable,
|
|
45
|
+
timeModified: observable,
|
|
46
|
+
canDecrement: computed,
|
|
47
|
+
isInCart: computed,
|
|
48
|
+
title: computed,
|
|
49
|
+
increment: action,
|
|
50
|
+
decrement: action,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
// TODO: create a way to pass template strings to the ui conf per sku path!
|
|
54
|
+
get title() {
|
|
55
|
+
return this.fullTitle ? this.fullTitle : (this.familyTitle + ', ' + this.optionLabel);
|
|
56
|
+
}
|
|
57
|
+
get canDecrement() { return this.qu > 0; }
|
|
58
|
+
get quantity() { return this.qu; }
|
|
59
|
+
get isInCart() { return this.qu > 0; }
|
|
60
|
+
increment() {
|
|
61
|
+
if (this.qu === 0) {
|
|
62
|
+
this.timeAdded = new Date().getTime();
|
|
63
|
+
this.timeModified = this.timeAdded;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this.timeModified = new Date().getTime();
|
|
67
|
+
}
|
|
68
|
+
this.qu++;
|
|
69
|
+
}
|
|
70
|
+
decrement() {
|
|
71
|
+
if (this.canDecrement) {
|
|
72
|
+
this.qu--;
|
|
73
|
+
if (this.qu === 0) {
|
|
74
|
+
this.timeAdded = 0;
|
|
75
|
+
this.timeModified = 0;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.timeModified = new Date().getTime();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export { ActualLineItem as default };
|
|
84
|
+
//# sourceMappingURL=actual-line-item.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actual-line-item.js","sourceRoot":"","sources":["../../../../service/impls/standalone/actual-line-item.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { enableStaticRendering } from 'mobx-react-lite';
|
|
2
|
+
import { StandaloneService } from './index';
|
|
3
|
+
import { initSelectionUI } from '../../../util';
|
|
4
|
+
import { readSnapshot, writeSnapshotsOnChange } from './persistence';
|
|
5
|
+
enableStaticRendering(typeof window === "undefined");
|
|
6
|
+
const _LOG = false;
|
|
7
|
+
const _log = (s) => {
|
|
8
|
+
if (!_LOG)
|
|
9
|
+
return;
|
|
10
|
+
const d = new Date();
|
|
11
|
+
console.log(`TIMESTAMPED: ${d.getUTCMinutes()}:${d.getUTCSeconds()}:${d.getUTCMilliseconds()}`);
|
|
12
|
+
console.log(s);
|
|
13
|
+
};
|
|
14
|
+
// https://dev.to/ivandotv/mobx-server-side-rendering-with-next-js-4m18
|
|
15
|
+
let instance = undefined;
|
|
16
|
+
export const getInstance = ({ families, rootNode, options, uiSpecifiers }) => {
|
|
17
|
+
if (!options) {
|
|
18
|
+
throw new Error('cmmc getInstance(): Standalone Commerce Service requires config options!');
|
|
19
|
+
}
|
|
20
|
+
if (typeof window === "undefined") {
|
|
21
|
+
if (uiSpecifiers) {
|
|
22
|
+
initSelectionUI(uiSpecifiers);
|
|
23
|
+
}
|
|
24
|
+
_log("NEW INSTANCE: SERVER"); //////////
|
|
25
|
+
return new StandaloneService(families, rootNode, options);
|
|
26
|
+
}
|
|
27
|
+
// Client side, create the store only once in the client
|
|
28
|
+
if (!instance) {
|
|
29
|
+
if (uiSpecifiers) {
|
|
30
|
+
initSelectionUI(uiSpecifiers);
|
|
31
|
+
}
|
|
32
|
+
_log("NEW INSTANCE: CLIENT"); ///////////
|
|
33
|
+
const snapShot = readSnapshot(options.localStorageKey);
|
|
34
|
+
instance = new StandaloneService(families, rootNode, options, snapShot);
|
|
35
|
+
writeSnapshotsOnChange(instance, options.localStorageKey);
|
|
36
|
+
}
|
|
37
|
+
return instance;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=get-instance.js.map
|