@hanzo/commerce 7.3.2 → 7.3.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/components/Icons.tsx +34 -34
- package/components/add-to-cart-widget.tsx +183 -183
- package/components/buy/buy-card.tsx +259 -259
- package/components/buy/carousel-buy-card.tsx +242 -242
- package/components/buy/multi-family/all-variants-carousel.tsx +261 -261
- package/components/buy/multi-family/family-carousel/index.tsx +77 -77
- package/components/buy/multi-family/family-carousel/slide.tsx +83 -83
- package/components/buy/multi-family/family-carousel/state.ts +87 -87
- package/components/buy/multi-family/index.ts +2 -2
- package/components/buy/single-family-selector.tsx +90 -90
- package/components/buy/title-and-byline.tsx +25 -25
- package/components/cart/cart-panel/cart-line-item.tsx +76 -76
- package/components/cart/cart-panel/index.tsx +154 -154
- package/components/cart/cart-panel/promo-code.tsx +106 -106
- package/components/cart/cart-panel/total-area.tsx +60 -60
- package/components/checkout/payment-step-form/card-icon-row.tsx +26 -26
- package/components/checkout/payment-step-form/card-icons/amex.tsx +32 -32
- package/components/checkout/payment-step-form/card-icons/diners-club.tsx +13 -13
- package/components/checkout/payment-step-form/card-icons/discover.tsx +25 -25
- package/components/checkout/payment-step-form/card-icons/jcb.tsx +26 -26
- package/components/checkout/payment-step-form/card-icons/mastercard.tsx +27 -27
- package/components/checkout/payment-step-form/card-icons/visa.tsx +25 -25
- package/components/checkout/payment-step-form/cc-button.tsx +17 -17
- package/components/checkout/payment-step-form/contact-form.tsx +49 -49
- package/components/checkout/payment-step-form/crypto-icons/btc.tsx +11 -11
- package/components/checkout/payment-step-form/crypto-icons/eth.tsx +20 -20
- package/components/checkout/payment-step-form/crypto-icons/usdt.tsx +13 -13
- package/components/checkout/payment-step-form/index.tsx +122 -122
- package/components/checkout/payment-step-form/methods/bank-transfer.tsx +79 -79
- package/components/checkout/payment-step-form/methods/card.tsx +232 -232
- package/components/checkout/payment-step-form/methods/crypto.tsx +227 -227
- package/components/checkout/payment-step-form/methods/index.ts +22 -22
- package/components/checkout/shipping-step-form.tsx +172 -172
- package/components/index.ts +11 -11
- package/components/item/product-card.tsx +48 -48
- package/components/item-selector/button.tsx +188 -188
- package/components/item-selector/carousel/index.tsx +197 -197
- package/components/item-selector/carousel/slider.tsx +40 -40
- package/components/item-selector/index.ts +5 -5
- package/components/item-selector/quantity-indicator.tsx +48 -48
- package/components/node-tabs/index.tsx +91 -91
- package/components/node-tabs/node-image.tsx +31 -31
- package/index.ts +12 -12
- package/package.json +60 -60
- package/service/context.tsx +45 -45
- package/service/debug.ts +41 -41
- package/service/impls/standalone/actual-line-item.ts +135 -135
- package/service/impls/standalone/get-instance.ts +64 -64
- package/service/impls/standalone/index.ts +579 -579
- package/service/impls/standalone/order/firebase.ts +14 -14
- package/service/impls/standalone/order/index.ts +128 -128
- package/service/impls/standalone/persistence.ts +33 -33
- package/service/path-utils.ts +25 -25
- package/service/sep.ts +6 -6
- package/tsconfig.json +10 -10
- package/types/README.md +1 -1
- package/types/category-node.ts +49 -49
- package/types/checkout.ts +46 -46
- package/types/commerce-config.ts +13 -13
- package/types/commerce-service.ts +127 -127
- package/types/family.ts +25 -25
- package/types/index.ts +15 -15
- package/types/item-selector.ts +96 -96
- package/types/line-item.ts +29 -29
- package/types/multi-family-selector-props.ts +19 -19
- package/types/product.ts +20 -20
- package/types/promo.ts +9 -9
- package/types/selection-ui-specifier.ts +51 -51
- package/types/string-mutator.ts +13 -13
- package/types/token-separators.ts +7 -7
- package/util/analytics.ts +20 -20
- package/util/countries.ts +195 -195
- package/util/error.ts +34 -34
- package/util/index.ts +70 -70
- package/util/item-selector-options-accessor.ts +34 -34
- package/util/line-item-ref.ts +23 -23
- package/util/multi-family-selector-options-accessor.ts +14 -14
- package/util/obs-string-mutator.ts +22 -22
- package/util/product-media-accessor.ts +58 -58
- package/util/promo-codes.ts +108 -108
- package/util/selection-ui-specifiers.ts +29 -29
- package/util/square-payment.ts +42 -42
- package/util/use-sync-sku-param-w-current-item.ts +88 -88
package/types/product.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import type { ImageDef, MediaStackDef } from '@hanzo/ui/types'
|
|
2
|
-
|
|
3
|
-
interface Product extends MediaStackDef {
|
|
4
|
-
id: string // DB index // not a logical aspect of our domain. may not be necessary at all
|
|
5
|
-
sku: string // human visible on orders etc.
|
|
6
|
-
fullTitle?: string
|
|
7
|
-
optionLabel: string
|
|
8
|
-
optionLabelShort?: string
|
|
9
|
-
familyId: string // skuPath, eg LXB-AU-B
|
|
10
|
-
familyTitle: string
|
|
11
|
-
byline?: string
|
|
12
|
-
desc?: string
|
|
13
|
-
price: number
|
|
14
|
-
// image to by uses as an image button in a list of choices
|
|
15
|
-
// defaults to (MediaStackDef's) img
|
|
16
|
-
optionImg?: ImageDef
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export {
|
|
20
|
-
type Product as default
|
|
1
|
+
import type { ImageDef, MediaStackDef } from '@hanzo/ui/types'
|
|
2
|
+
|
|
3
|
+
interface Product extends MediaStackDef {
|
|
4
|
+
id: string // DB index // not a logical aspect of our domain. may not be necessary at all
|
|
5
|
+
sku: string // human visible on orders etc.
|
|
6
|
+
fullTitle?: string
|
|
7
|
+
optionLabel: string
|
|
8
|
+
optionLabelShort?: string
|
|
9
|
+
familyId: string // skuPath, eg LXB-AU-B
|
|
10
|
+
familyTitle: string
|
|
11
|
+
byline?: string
|
|
12
|
+
desc?: string
|
|
13
|
+
price: number
|
|
14
|
+
// image to by uses as an image button in a list of choices
|
|
15
|
+
// defaults to (MediaStackDef's) img
|
|
16
|
+
optionImg?: ImageDef
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export {
|
|
20
|
+
type Product as default
|
|
21
21
|
}
|
package/types/promo.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
interface Promo {
|
|
2
|
-
type: 'percent' | 'amount'
|
|
3
|
-
code: string
|
|
4
|
-
value: number,
|
|
5
|
-
skus?: string[]
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
type Promo as default
|
|
1
|
+
interface Promo {
|
|
2
|
+
type: 'percent' | 'amount'
|
|
3
|
+
code: string
|
|
4
|
+
value: number,
|
|
5
|
+
skus?: string[]
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
type Promo as default
|
|
10
10
|
}
|
|
@@ -1,52 +1,52 @@
|
|
|
1
|
-
import type { ItemSelectorOptions } from './item-selector'
|
|
2
|
-
|
|
3
|
-
type SingleFamilySelector = 'buttons' | 'carousel'
|
|
4
|
-
type MultiFamilySelector = 'family-carousel' | 'all-variants-carousel'
|
|
5
|
-
|
|
6
|
-
type MultiFamilySelectorOptions = {
|
|
7
|
-
/**
|
|
8
|
-
* Show title of parent node of families.
|
|
9
|
-
* eg,
|
|
10
|
-
* Lux Credit
|
|
11
|
-
* Black Card
|
|
12
|
-
*
|
|
13
|
-
* vs just Black Card
|
|
14
|
-
*
|
|
15
|
-
* ( parent CategoryNode.label)
|
|
16
|
-
*
|
|
17
|
-
* (goes to one line if only one family)
|
|
18
|
-
* default: true
|
|
19
|
-
* */
|
|
20
|
-
showParentTitle?: boolean
|
|
21
|
-
|
|
22
|
-
/** parent CategoryNode.subNodesLabel
|
|
23
|
-
*
|
|
24
|
-
* default: 'none'
|
|
25
|
-
*/
|
|
26
|
-
parentByline?: 'none' | 'own-line' | 'comma-sep' | 'colon-sep'
|
|
27
|
-
|
|
28
|
-
/** show horiz image buttons of
|
|
29
|
-
* all sibling items below item info
|
|
30
|
-
* default: true*/
|
|
31
|
-
showItemSwatches?: boolean
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
interface SelectionUISpecifier {
|
|
35
|
-
multiFamily?: {
|
|
36
|
-
type: MultiFamilySelector
|
|
37
|
-
selectorOptions?: MultiFamilySelectorOptions
|
|
38
|
-
itemOptions?: ItemSelectorOptions
|
|
39
|
-
}
|
|
40
|
-
singleFamily?: {
|
|
41
|
-
type: SingleFamilySelector
|
|
42
|
-
options?: ItemSelectorOptions
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export {
|
|
47
|
-
type SelectionUISpecifier,
|
|
48
|
-
type ItemSelectorOptions,
|
|
49
|
-
type SingleFamilySelector,
|
|
50
|
-
type MultiFamilySelector,
|
|
51
|
-
type MultiFamilySelectorOptions
|
|
1
|
+
import type { ItemSelectorOptions } from './item-selector'
|
|
2
|
+
|
|
3
|
+
type SingleFamilySelector = 'buttons' | 'carousel'
|
|
4
|
+
type MultiFamilySelector = 'family-carousel' | 'all-variants-carousel'
|
|
5
|
+
|
|
6
|
+
type MultiFamilySelectorOptions = {
|
|
7
|
+
/**
|
|
8
|
+
* Show title of parent node of families.
|
|
9
|
+
* eg,
|
|
10
|
+
* Lux Credit
|
|
11
|
+
* Black Card
|
|
12
|
+
*
|
|
13
|
+
* vs just Black Card
|
|
14
|
+
*
|
|
15
|
+
* ( parent CategoryNode.label)
|
|
16
|
+
*
|
|
17
|
+
* (goes to one line if only one family)
|
|
18
|
+
* default: true
|
|
19
|
+
* */
|
|
20
|
+
showParentTitle?: boolean
|
|
21
|
+
|
|
22
|
+
/** parent CategoryNode.subNodesLabel
|
|
23
|
+
*
|
|
24
|
+
* default: 'none'
|
|
25
|
+
*/
|
|
26
|
+
parentByline?: 'none' | 'own-line' | 'comma-sep' | 'colon-sep'
|
|
27
|
+
|
|
28
|
+
/** show horiz image buttons of
|
|
29
|
+
* all sibling items below item info
|
|
30
|
+
* default: true*/
|
|
31
|
+
showItemSwatches?: boolean
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
interface SelectionUISpecifier {
|
|
35
|
+
multiFamily?: {
|
|
36
|
+
type: MultiFamilySelector
|
|
37
|
+
selectorOptions?: MultiFamilySelectorOptions
|
|
38
|
+
itemOptions?: ItemSelectorOptions
|
|
39
|
+
}
|
|
40
|
+
singleFamily?: {
|
|
41
|
+
type: SingleFamilySelector
|
|
42
|
+
options?: ItemSelectorOptions
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export {
|
|
47
|
+
type SelectionUISpecifier,
|
|
48
|
+
type ItemSelectorOptions,
|
|
49
|
+
type SingleFamilySelector,
|
|
50
|
+
type MultiFamilySelector,
|
|
51
|
+
type MultiFamilySelectorOptions
|
|
52
52
|
}
|
package/types/string-mutator.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
interface StringMutator {
|
|
2
|
-
get(): string | null
|
|
3
|
-
set(v: string | null): void
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
interface StringArrayMutator {
|
|
7
|
-
get(): string[] | null
|
|
8
|
-
set(v: string[] | null): void
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export type {
|
|
12
|
-
StringMutator,
|
|
13
|
-
StringArrayMutator
|
|
1
|
+
interface StringMutator {
|
|
2
|
+
get(): string | null
|
|
3
|
+
set(v: string | null): void
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
interface StringArrayMutator {
|
|
7
|
+
get(): string[] | null
|
|
8
|
+
set(v: string[] | null): void
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export type {
|
|
12
|
+
StringMutator,
|
|
13
|
+
StringArrayMutator
|
|
14
14
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
interface TokenSeparators {
|
|
2
|
-
readonly tok: string
|
|
3
|
-
readonly subTok: string
|
|
4
|
-
readonly decimal: string
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export { type TokenSeparators as default }
|
|
1
|
+
interface TokenSeparators {
|
|
2
|
+
readonly tok: string
|
|
3
|
+
readonly subTok: string
|
|
4
|
+
readonly decimal: string
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export { type TokenSeparators as default }
|
package/util/analytics.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
declare global {
|
|
2
|
-
interface Window {
|
|
3
|
-
fbq: Function;
|
|
4
|
-
gtag: Function;
|
|
5
|
-
}
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
// https://developers.facebook.com/docs/meta-pixel/reference
|
|
9
|
-
const sendFBEvent = (name: string, options = {}) => {
|
|
10
|
-
window.fbq('track', name, options)
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag
|
|
14
|
-
const sendGAEvent = (name: string, options = {}) => {
|
|
15
|
-
window.gtag('event', name, options)
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export {
|
|
19
|
-
sendFBEvent,
|
|
20
|
-
sendGAEvent,
|
|
1
|
+
declare global {
|
|
2
|
+
interface Window {
|
|
3
|
+
fbq: Function;
|
|
4
|
+
gtag: Function;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// https://developers.facebook.com/docs/meta-pixel/reference
|
|
9
|
+
const sendFBEvent = (name: string, options = {}) => {
|
|
10
|
+
window.fbq('track', name, options)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
// https://developers.google.com/analytics/devguides/collection/ga4/ecommerce?client_type=gtag
|
|
14
|
+
const sendGAEvent = (name: string, options = {}) => {
|
|
15
|
+
window.gtag('event', name, options)
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export {
|
|
19
|
+
sendFBEvent,
|
|
20
|
+
sendGAEvent,
|
|
21
21
|
}
|