@ikas/code-components-mcp 1.4.0-beta.2 → 1.4.0-beta.200
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/data/framework.json +208 -78
- package/data/migration.json +196 -25
- package/data/section-templates/account-info-section/children/AccountFavorites/ikas-config-snippet.json +16 -3
- package/data/section-templates/account-info-section/children/AccountOrders/index.tsx +1 -1
- package/data/section-templates/account-info-section/ikas-config-snippet.json +24 -5
- package/data/section-templates/add-to-cart/ikas-config-snippet.json +17 -0
- package/data/section-templates/add-to-cart/index.tsx +16 -2
- package/data/section-templates/add-to-cart/sub-components/QuantitySelector/index.tsx +11 -3
- package/data/section-templates/add-to-cart/utils/cartLimits.ts +24 -0
- package/data/section-templates/blog-home-section/ikas-config-snippet.json +2 -0
- package/data/section-templates/blog-home-section/index.tsx +2 -1
- package/data/section-templates/blog-post-section/ikas-config-snippet.json +2 -0
- package/data/section-templates/blog-post-section/index.tsx +3 -2
- package/data/section-templates/bundle-products/hooks/useBundleProducts.ts +7 -6
- package/data/section-templates/bundle-products/ikas-config-snippet.json +20 -0
- package/data/section-templates/cart-section/components/EmptyState/index.tsx +1 -1
- package/data/section-templates/cart-section/sub-components/CartItem/index.tsx +66 -24
- package/data/section-templates/cart-section/sub-components/CartItem/styles.css +14 -0
- package/data/section-templates/cart-section/sub-components/QuantitySelector/index.tsx +11 -3
- package/data/section-templates/cart-section/utils/cartLimits.ts +24 -0
- package/data/section-templates/cart-section/utils/cartLineLimits.ts +100 -0
- package/data/section-templates/category-images-section/children/CategoryImageItem/ikas-config-snippet.json +4 -0
- package/data/section-templates/category-images-section/ikas-config-snippet.json +16 -1
- package/data/section-templates/category-list-section/children/CardProductName/ikas-config-snippet.json +2 -1
- package/data/section-templates/category-list-section/ikas-config-snippet.json +24 -3
- package/data/section-templates/category-list-section/index.tsx +2 -1
- package/data/section-templates/component-renderer/additional/ProductDetail/index.tsx +5 -1
- package/data/section-templates/component-renderer/ikas-config-snippet.json +16 -3
- package/data/section-templates/favorites/ikas-config-snippet.json +18 -1
- package/data/section-templates/features-section/ikas-config-snippet.json +14 -1
- package/data/section-templates/footer-section/ikas-config-snippet.json +16 -1
- package/data/section-templates/forgot-password-section/components/ForgotPasswordForm/index.tsx +1 -1
- package/data/section-templates/header-section/children/Announcements/ikas-config-snippet.json +8 -1
- package/data/section-templates/header-section/children/CookieBar/ikas-config-snippet.json +3 -0
- package/data/section-templates/header-section/children/Navbar/components/CartSidebar/index.tsx +2 -1
- package/data/section-templates/header-section/children/Navbar/components/SearchModal/index.tsx +2 -1
- package/data/section-templates/header-section/children/Navbar/ikas-config-snippet.json +30 -3
- package/data/section-templates/header-section/children/Navbar/index.tsx +6 -5
- package/data/section-templates/header-section/ikas-config-snippet.json +16 -3
- package/data/section-templates/header-section/sub-components/CartItem/index.tsx +66 -24
- package/data/section-templates/header-section/sub-components/CartItem/styles.css +14 -0
- package/data/section-templates/header-section/sub-components/QuantitySelector/index.tsx +11 -3
- package/data/section-templates/header-section/utils/cartLimits.ts +24 -0
- package/data/section-templates/header-section/utils/cartLineLimits.ts +100 -0
- package/data/section-templates/hero-slider-section/children/HeroSliderItem/ikas-config-snippet.json +18 -0
- package/data/section-templates/hero-slider-section/children/HeroSliderItem/index.tsx +12 -7
- package/data/section-templates/hero-slider-section/ikas-config-snippet.json +14 -1
- package/data/section-templates/image-handling/ikas-config-snippet.json +66 -13
- package/data/section-templates/image-handling/index.tsx +5 -1
- package/data/section-templates/login-section/ikas-config-snippet.json +2 -0
- package/data/section-templates/navigation/components/CartSidebar/index.tsx +2 -1
- package/data/section-templates/navigation/components/SearchModal/index.tsx +2 -1
- package/data/section-templates/navigation/ikas-config-snippet.json +30 -3
- package/data/section-templates/navigation/index.tsx +6 -5
- package/data/section-templates/navigation/sub-components/CartItem/index.tsx +66 -24
- package/data/section-templates/navigation/sub-components/CartItem/styles.css +14 -0
- package/data/section-templates/navigation/sub-components/QuantitySelector/index.tsx +11 -3
- package/data/section-templates/navigation/utils/cartLimits.ts +24 -0
- package/data/section-templates/navigation/utils/cartLineLimits.ts +100 -0
- package/data/section-templates/product-detail-section/children/ProductDetailAddToCart/ikas-config-snippet.json +17 -0
- package/data/section-templates/product-detail-section/children/ProductDetailAddToCart/index.tsx +16 -2
- package/data/section-templates/product-detail-section/children/ProductDetailBackInStock/components/BackInStockForm/index.tsx +92 -0
- package/data/section-templates/product-detail-section/children/ProductDetailBackInStock/ikas-config-snippet.json +175 -0
- package/data/section-templates/product-detail-section/children/ProductDetailBackInStock/index.tsx +141 -0
- package/data/section-templates/product-detail-section/children/ProductDetailBackInStock/styles.css +47 -0
- package/data/section-templates/product-detail-section/children/ProductDetailBackInStock/types.ts +25 -0
- package/data/section-templates/product-detail-section/children/ProductDetailBundleFurniture/ikas-config-snippet.json +18 -0
- package/data/section-templates/product-detail-section/children/ProductDetailBundleProduct/ikas-config-snippet.json +20 -0
- package/data/section-templates/product-detail-section/children/ProductDetailDescription/ikas-config-snippet.json +28 -1
- package/data/section-templates/product-detail-section/children/ProductDetailFeatures/ikas-config-snippet.json +30 -1
- package/data/section-templates/product-detail-section/children/ProductDetailNameFavorite/ikas-config-snippet.json +18 -1
- package/data/section-templates/product-detail-section/children/ProductDetailOffer/ikas-config-snippet.json +20 -0
- package/data/section-templates/product-detail-section/children/ProductDetailOptionSet/ikas-config-snippet.json +16 -0
- package/data/section-templates/product-detail-section/children/ProductDetailPrices/ikas-config-snippet.json +16 -0
- package/data/section-templates/product-detail-section/children/ProductDetailProductGroup/ikas-config-snippet.json +16 -0
- package/data/section-templates/product-detail-section/children/ProductDetailSku/ikas-config-snippet.json +16 -0
- package/data/section-templates/product-detail-section/children/ProductDetailVariant/ikas-config-snippet.json +17 -0
- package/data/section-templates/product-detail-section/hooks/useBundleProducts.ts +7 -6
- package/data/section-templates/product-detail-section/ikas-config-snippet.json +66 -13
- package/data/section-templates/product-detail-section/index.tsx +5 -1
- package/data/section-templates/product-detail-section/sub-components/Modal/index.tsx +120 -0
- package/data/section-templates/product-detail-section/sub-components/Modal/styles.css +70 -0
- package/data/section-templates/product-detail-section/sub-components/QuantitySelector/index.tsx +11 -3
- package/data/section-templates/product-detail-section/utils/cartLimits.ts +24 -0
- package/data/section-templates/product-pricing/ikas-config-snippet.json +16 -0
- package/data/section-templates/product-slider-section/children/CardProductName/ikas-config-snippet.json +2 -1
- package/data/section-templates/product-slider-section/ikas-config-snippet.json +20 -3
- package/data/section-templates/register-section/ikas-config-snippet.json +2 -0
- package/data/section-templates/variant-selection/ikas-config-snippet.json +17 -0
- package/data/storefront-api.json +819 -1443
- package/data/storefront-types.json +9644 -6132
- package/dist/index.js +2978 -347
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { useEffect, useState } from "preact/hooks";
|
|
2
|
+
import { baseStore, bs_searchProductsById } from "@ikas/bp-storefront";
|
|
3
|
+
import { CartQuantityLimits, getProductCartLimits } from "./cartLimits";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Per-cart quantity limits for cart lines.
|
|
7
|
+
*
|
|
8
|
+
* A cart line's `IkasOrderLineVariant` carries no `salesChannels`, so the
|
|
9
|
+
* min/max per-cart limits can only be read from the full `IkasProduct`. This
|
|
10
|
+
* store batch-fetches the line products with `bs_searchProductsById` (lines
|
|
11
|
+
* register their productId one by one; the ids are flushed as ONE request on
|
|
12
|
+
* the next tick) and maps the resolved limits by product id for the cart
|
|
13
|
+
* steppers to read. Each product is fetched at most once; results stay cached
|
|
14
|
+
* for the session.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const limitsByProductId = new Map<string, CartQuantityLimits>();
|
|
18
|
+
const requestedProductIds = new Set<string>();
|
|
19
|
+
const listeners = new Set<() => void>();
|
|
20
|
+
|
|
21
|
+
let pendingProductIds: string[] = [];
|
|
22
|
+
let flushTimer: ReturnType<typeof setTimeout> | null = null;
|
|
23
|
+
|
|
24
|
+
function emit() {
|
|
25
|
+
for (const listener of listeners) listener();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
async function flush() {
|
|
29
|
+
flushTimer = null;
|
|
30
|
+
const batch = pendingProductIds;
|
|
31
|
+
pendingProductIds = [];
|
|
32
|
+
|
|
33
|
+
// bs_searchProductsById never throws — API/network failures resolve with
|
|
34
|
+
// isSuccess: false — so the retry unmark must live on the result check.
|
|
35
|
+
const result = await bs_searchProductsById(baseStore, { productIds: batch }).catch(
|
|
36
|
+
() => null,
|
|
37
|
+
);
|
|
38
|
+
if (!result?.isSuccess || !result.products) {
|
|
39
|
+
// Limits stay unenforced for now; unmark the batch so a later
|
|
40
|
+
// ensureCartLineLimits call (e.g. the next cart open) can retry.
|
|
41
|
+
for (const id of batch) requestedProductIds.delete(id);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
for (const product of result.products) {
|
|
46
|
+
limitsByProductId.set(product.id, getProductCartLimits(product));
|
|
47
|
+
}
|
|
48
|
+
emit();
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Register a cart line's productId for limit resolution. Ids already requested
|
|
53
|
+
* are skipped; new ids are collected and fetched in a single batched request
|
|
54
|
+
* on the next tick, so per-line calls do not fan out into per-line requests.
|
|
55
|
+
*/
|
|
56
|
+
export function ensureCartLineLimits(productId: string) {
|
|
57
|
+
if (requestedProductIds.has(productId)) return;
|
|
58
|
+
requestedProductIds.add(productId);
|
|
59
|
+
pendingProductIds.push(productId);
|
|
60
|
+
if (!flushTimer) flushTimer = setTimeout(flush, 0);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Resolved limits for a product — undefined until the batch fetch lands. */
|
|
64
|
+
export function getCartLineLimits(
|
|
65
|
+
productId: string | null | undefined,
|
|
66
|
+
): CartQuantityLimits | undefined {
|
|
67
|
+
return productId ? limitsByProductId.get(productId) : undefined;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Subscribe to limit resolutions; returns the unsubscribe function. */
|
|
71
|
+
export function subscribeCartLineLimits(listener: () => void) {
|
|
72
|
+
listeners.add(listener);
|
|
73
|
+
return () => {
|
|
74
|
+
listeners.delete(listener);
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Hook: resolved limits for one cart line's product — undefined until the
|
|
80
|
+
* batched fetch lands. Encapsulates the subscription protocol so components
|
|
81
|
+
* cannot get the ordering wrong.
|
|
82
|
+
*/
|
|
83
|
+
export function useCartLineLimits(
|
|
84
|
+
productId: string | null | undefined,
|
|
85
|
+
): CartQuantityLimits | undefined {
|
|
86
|
+
const [, setVersion] = useState(0);
|
|
87
|
+
const limits = getCartLineLimits(productId);
|
|
88
|
+
useEffect(() => {
|
|
89
|
+
if (!productId) return;
|
|
90
|
+
// Subscribe BEFORE registering the id: a batch already in flight can
|
|
91
|
+
// resolve between render and this effect, and its emit must not be missed.
|
|
92
|
+
const unsubscribe = subscribeCartLineLimits(() => setVersion((v) => v + 1));
|
|
93
|
+
ensureCartLineLimits(productId);
|
|
94
|
+
// Re-check once for a result that landed before the subscription armed —
|
|
95
|
+
// skipped when the arming render already saw it (no redundant re-render).
|
|
96
|
+
if (!limits && getCartLineLimits(productId)) setVersion((v) => v + 1);
|
|
97
|
+
return unsubscribe;
|
|
98
|
+
}, [productId]);
|
|
99
|
+
return limits;
|
|
100
|
+
}
|
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
"displayName": "Dark Overlay",
|
|
25
25
|
"type": "BOOLEAN",
|
|
26
26
|
"required": false,
|
|
27
|
+
"defaultValue": false,
|
|
27
28
|
"groupId": "desktop"
|
|
28
29
|
},
|
|
29
30
|
{
|
|
@@ -39,6 +40,7 @@
|
|
|
39
40
|
"displayName": "Image Fit",
|
|
40
41
|
"type": "ENUM",
|
|
41
42
|
"required": false,
|
|
43
|
+
"defaultValue": "Cover",
|
|
42
44
|
"groupId": "desktop",
|
|
43
45
|
"enumTypeId": "{{ENUM_ID:ObjectFit}}"
|
|
44
46
|
},
|
|
@@ -61,6 +63,7 @@
|
|
|
61
63
|
"displayName": "Dark Overlay",
|
|
62
64
|
"type": "BOOLEAN",
|
|
63
65
|
"required": false,
|
|
66
|
+
"defaultValue": false,
|
|
64
67
|
"groupId": "mobile"
|
|
65
68
|
},
|
|
66
69
|
{
|
|
@@ -76,6 +79,7 @@
|
|
|
76
79
|
"displayName": "Image Fit",
|
|
77
80
|
"type": "ENUM",
|
|
78
81
|
"required": false,
|
|
82
|
+
"defaultValue": "Cover",
|
|
79
83
|
"groupId": "mobile",
|
|
80
84
|
"enumTypeId": "{{ENUM_ID:ObjectFit}}"
|
|
81
85
|
}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"displayName": "Title Color",
|
|
19
19
|
"type": "COLOR",
|
|
20
20
|
"required": false,
|
|
21
|
+
"defaultValue": "#14141a",
|
|
21
22
|
"groupId": "content"
|
|
22
23
|
},
|
|
23
24
|
{
|
|
@@ -41,6 +42,7 @@
|
|
|
41
42
|
"displayName": "Mobile Column Count",
|
|
42
43
|
"type": "ENUM",
|
|
43
44
|
"required": false,
|
|
45
|
+
"defaultValue": "One",
|
|
44
46
|
"groupId": "appearance",
|
|
45
47
|
"enumTypeId": "{{ENUM_ID:NumberOfColumns}}"
|
|
46
48
|
},
|
|
@@ -49,8 +51,21 @@
|
|
|
49
51
|
"displayName": "Categories",
|
|
50
52
|
"type": "COMPONENT_LIST",
|
|
51
53
|
"required": false,
|
|
54
|
+
"defaultValue": {
|
|
55
|
+
"components": [
|
|
56
|
+
{
|
|
57
|
+
"codeComponentId": "nb34u3yu-category-image-item"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"codeComponentId": "nb34u3yu-category-image-item"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"codeComponentId": "nb34u3yu-category-image-item"
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
},
|
|
52
67
|
"filteredComponentIds": [
|
|
53
|
-
"
|
|
68
|
+
"<id-of-CategoryImageItem>"
|
|
54
69
|
]
|
|
55
70
|
}
|
|
56
71
|
],
|
|
@@ -111,6 +111,7 @@
|
|
|
111
111
|
"displayName": "Show Filters",
|
|
112
112
|
"type": "BOOLEAN",
|
|
113
113
|
"required": false,
|
|
114
|
+
"defaultValue": false,
|
|
114
115
|
"groupId": "filters"
|
|
115
116
|
},
|
|
116
117
|
{
|
|
@@ -118,6 +119,7 @@
|
|
|
118
119
|
"displayName": "Show Search",
|
|
119
120
|
"type": "BOOLEAN",
|
|
120
121
|
"required": false,
|
|
122
|
+
"defaultValue": false,
|
|
121
123
|
"groupId": "filters"
|
|
122
124
|
},
|
|
123
125
|
{
|
|
@@ -125,6 +127,7 @@
|
|
|
125
127
|
"displayName": "Image Aspect Ratio",
|
|
126
128
|
"type": "ENUM",
|
|
127
129
|
"required": false,
|
|
130
|
+
"defaultValue": "Square",
|
|
128
131
|
"groupId": "image-settings",
|
|
129
132
|
"enumTypeId": "{{ENUM_ID:AspectRatio}}"
|
|
130
133
|
},
|
|
@@ -133,6 +136,7 @@
|
|
|
133
136
|
"displayName": "Image Fit",
|
|
134
137
|
"type": "ENUM",
|
|
135
138
|
"required": false,
|
|
139
|
+
"defaultValue": "Cover",
|
|
136
140
|
"groupId": "image-settings",
|
|
137
141
|
"enumTypeId": "{{ENUM_ID:ObjectFit}}"
|
|
138
142
|
},
|
|
@@ -141,6 +145,7 @@
|
|
|
141
145
|
"displayName": "Infinite Scroll",
|
|
142
146
|
"type": "BOOLEAN",
|
|
143
147
|
"required": false,
|
|
148
|
+
"defaultValue": false,
|
|
144
149
|
"groupId": "pagination"
|
|
145
150
|
},
|
|
146
151
|
{
|
|
@@ -164,6 +169,7 @@
|
|
|
164
169
|
"displayName": "Hide Add to Cart Button",
|
|
165
170
|
"type": "BOOLEAN",
|
|
166
171
|
"required": false,
|
|
172
|
+
"defaultValue": false,
|
|
167
173
|
"groupId": "card-settings"
|
|
168
174
|
},
|
|
169
175
|
{
|
|
@@ -171,6 +177,19 @@
|
|
|
171
177
|
"displayName": "Components",
|
|
172
178
|
"type": "COMPONENT_LIST",
|
|
173
179
|
"required": false,
|
|
180
|
+
"defaultValue": {
|
|
181
|
+
"components": [
|
|
182
|
+
{
|
|
183
|
+
"codeComponentId": "nb34u3yu-card-product-name"
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"codeComponentId": "nb34u3yu-card-product-variants"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"codeComponentId": "nb34u3yu-card-product-price"
|
|
190
|
+
}
|
|
191
|
+
]
|
|
192
|
+
},
|
|
174
193
|
"privateVarMap": {
|
|
175
194
|
"product": {
|
|
176
195
|
"id": "pvm_1772808304776_3",
|
|
@@ -178,9 +197,9 @@
|
|
|
178
197
|
}
|
|
179
198
|
},
|
|
180
199
|
"filteredComponentIds": [
|
|
181
|
-
"
|
|
182
|
-
"
|
|
183
|
-
"
|
|
200
|
+
"<id-of-CardProductPrice>",
|
|
201
|
+
"<id-of-CardProductVariants>",
|
|
202
|
+
"<id-of-CardProductName>"
|
|
184
203
|
]
|
|
185
204
|
},
|
|
186
205
|
{
|
|
@@ -188,6 +207,7 @@
|
|
|
188
207
|
"displayName": "Hide Breadcrumb",
|
|
189
208
|
"type": "BOOLEAN",
|
|
190
209
|
"required": false,
|
|
210
|
+
"defaultValue": false,
|
|
191
211
|
"groupId": "appearance"
|
|
192
212
|
},
|
|
193
213
|
{
|
|
@@ -195,6 +215,7 @@
|
|
|
195
215
|
"displayName": "Is This a Brand Page?",
|
|
196
216
|
"type": "BOOLEAN",
|
|
197
217
|
"required": false,
|
|
218
|
+
"defaultValue": false,
|
|
198
219
|
"groupId": "data"
|
|
199
220
|
},
|
|
200
221
|
{
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
searchProductList,
|
|
22
22
|
getProductOptionSet,
|
|
23
23
|
IkasComponentRenderer,
|
|
24
|
+
withRoutePrefix,
|
|
24
25
|
} from "@ikas/bp-storefront";
|
|
25
26
|
import { Props } from "./types";
|
|
26
27
|
import ProductCard from "../../sub-components/ProductCard";
|
|
@@ -170,7 +171,7 @@ export function CategoryList(props: Props) {
|
|
|
170
171
|
const path = getCategoryPath(category);
|
|
171
172
|
if (path.length === 0) return [];
|
|
172
173
|
return [
|
|
173
|
-
{ label: homepageText, href: "/" } as BreadcrumbItem,
|
|
174
|
+
{ label: homepageText, href: withRoutePrefix("/") } as BreadcrumbItem,
|
|
174
175
|
...path.map(
|
|
175
176
|
(cat: any) =>
|
|
176
177
|
({
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
IkasImage,
|
|
7
7
|
isNotEmpty,
|
|
8
8
|
IkasComponentRenderer,
|
|
9
|
+
withRoutePrefix,
|
|
9
10
|
} from "@ikas/bp-storefront";
|
|
10
11
|
import { Props } from "./types";
|
|
11
12
|
import Breadcrumb from "../../sub-components/Breadcrumb";
|
|
@@ -42,7 +43,10 @@ export function ProductDetail(props: Props) {
|
|
|
42
43
|
<div className="kombos-container kombos-pd__container">
|
|
43
44
|
<Breadcrumb
|
|
44
45
|
items={[
|
|
45
|
-
{
|
|
46
|
+
{
|
|
47
|
+
label: homepageText,
|
|
48
|
+
href: withRoutePrefix("/"),
|
|
49
|
+
} as BreadcrumbItem,
|
|
46
50
|
...(isNotEmpty(categoryPath)
|
|
47
51
|
? categoryPath.map(
|
|
48
52
|
(pathItem: any) =>
|
|
@@ -10,10 +10,23 @@
|
|
|
10
10
|
"displayName": "Components",
|
|
11
11
|
"type": "COMPONENT_LIST",
|
|
12
12
|
"required": false,
|
|
13
|
+
"defaultValue": {
|
|
14
|
+
"components": [
|
|
15
|
+
{
|
|
16
|
+
"codeComponentId": "nb34u3yu-announcements"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"codeComponentId": "nb34u3yu-navbar"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"codeComponentId": "nb34u3yu-cookie-bar"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
},
|
|
13
26
|
"filteredComponentIds": [
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
27
|
+
"<id-of-Navbar>",
|
|
28
|
+
"<id-of-Announcements>",
|
|
29
|
+
"<id-of-CookieBar>"
|
|
17
30
|
]
|
|
18
31
|
},
|
|
19
32
|
{
|
|
@@ -16,6 +16,10 @@
|
|
|
16
16
|
"displayName": "Top Spacing",
|
|
17
17
|
"type": "TYPE",
|
|
18
18
|
"required": false,
|
|
19
|
+
"defaultValue": {
|
|
20
|
+
"value": 0,
|
|
21
|
+
"unit": "px"
|
|
22
|
+
},
|
|
19
23
|
"groupId": "mobile",
|
|
20
24
|
"typeId": "@ikas/bp-storefront-models-MarginTopStyleType"
|
|
21
25
|
},
|
|
@@ -24,6 +28,10 @@
|
|
|
24
28
|
"displayName": "Bottom Spacing",
|
|
25
29
|
"type": "TYPE",
|
|
26
30
|
"required": false,
|
|
31
|
+
"defaultValue": {
|
|
32
|
+
"value": 0,
|
|
33
|
+
"unit": "px"
|
|
34
|
+
},
|
|
27
35
|
"groupId": "mobile",
|
|
28
36
|
"typeId": "@ikas/bp-storefront-models-MarginBottomStyleType"
|
|
29
37
|
},
|
|
@@ -32,6 +40,10 @@
|
|
|
32
40
|
"displayName": "Top Spacing",
|
|
33
41
|
"type": "TYPE",
|
|
34
42
|
"required": false,
|
|
43
|
+
"defaultValue": {
|
|
44
|
+
"value": 0,
|
|
45
|
+
"unit": "px"
|
|
46
|
+
},
|
|
35
47
|
"groupId": "desktop",
|
|
36
48
|
"typeId": "@ikas/bp-storefront-models-MarginTopStyleType"
|
|
37
49
|
},
|
|
@@ -40,6 +52,10 @@
|
|
|
40
52
|
"displayName": "Bottom Spacing",
|
|
41
53
|
"type": "TYPE",
|
|
42
54
|
"required": false,
|
|
55
|
+
"defaultValue": {
|
|
56
|
+
"value": 0,
|
|
57
|
+
"unit": "px"
|
|
58
|
+
},
|
|
43
59
|
"groupId": "desktop",
|
|
44
60
|
"typeId": "@ikas/bp-storefront-models-MarginBottomStyleType"
|
|
45
61
|
},
|
|
@@ -47,7 +63,8 @@
|
|
|
47
63
|
"name": "hideFavoriteButton",
|
|
48
64
|
"displayName": "Hide Favorite Button",
|
|
49
65
|
"type": "BOOLEAN",
|
|
50
|
-
"required": false
|
|
66
|
+
"required": false,
|
|
67
|
+
"defaultValue": false
|
|
51
68
|
}
|
|
52
69
|
],
|
|
53
70
|
"propGroups": [
|
|
@@ -17,8 +17,21 @@
|
|
|
17
17
|
"displayName": "Specifications",
|
|
18
18
|
"type": "COMPONENT_LIST",
|
|
19
19
|
"required": false,
|
|
20
|
+
"defaultValue": {
|
|
21
|
+
"components": [
|
|
22
|
+
{
|
|
23
|
+
"codeComponentId": "nb34u3yu-feature-item"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"codeComponentId": "nb34u3yu-feature-item"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"codeComponentId": "nb34u3yu-feature-item"
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
},
|
|
20
33
|
"filteredComponentIds": [
|
|
21
|
-
"
|
|
34
|
+
"<id-of-FeatureItem>"
|
|
22
35
|
]
|
|
23
36
|
}
|
|
24
37
|
]
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"displayName": "Link Color",
|
|
40
40
|
"type": "COLOR",
|
|
41
41
|
"required": false,
|
|
42
|
+
"defaultValue": "#2e2e33",
|
|
42
43
|
"groupId": "appearance"
|
|
43
44
|
},
|
|
44
45
|
{
|
|
@@ -46,6 +47,7 @@
|
|
|
46
47
|
"displayName": "Link Hover Color",
|
|
47
48
|
"type": "COLOR",
|
|
48
49
|
"required": false,
|
|
50
|
+
"defaultValue": "#14141a",
|
|
49
51
|
"groupId": "appearance"
|
|
50
52
|
},
|
|
51
53
|
{
|
|
@@ -75,8 +77,21 @@
|
|
|
75
77
|
"displayName": "Social Media Icons",
|
|
76
78
|
"type": "COMPONENT_LIST",
|
|
77
79
|
"required": false,
|
|
80
|
+
"defaultValue": {
|
|
81
|
+
"components": [
|
|
82
|
+
{
|
|
83
|
+
"codeComponentId": "nb34u3yu-social-media-icon"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"codeComponentId": "nb34u3yu-social-media-icon"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"codeComponentId": "nb34u3yu-social-media-icon"
|
|
90
|
+
}
|
|
91
|
+
]
|
|
92
|
+
},
|
|
78
93
|
"filteredComponentIds": [
|
|
79
|
-
"
|
|
94
|
+
"<id-of-SocialMediaIcon>"
|
|
80
95
|
]
|
|
81
96
|
},
|
|
82
97
|
{
|
package/data/section-templates/forgot-password-section/components/ForgotPasswordForm/index.tsx
CHANGED
|
@@ -49,7 +49,7 @@ const ForgotPasswordForm = observer(function ForgotPasswordForm({
|
|
|
49
49
|
variant="primary"
|
|
50
50
|
size="s"
|
|
51
51
|
className="forgot-password__submit-btn"
|
|
52
|
-
onClick={() => Router.
|
|
52
|
+
onClick={() => Router.navigateToPage("INDEX")}
|
|
53
53
|
>
|
|
54
54
|
{successButtonText}
|
|
55
55
|
</Button>
|
package/data/section-templates/header-section/children/Announcements/ikas-config-snippet.json
CHANGED
|
@@ -26,8 +26,15 @@
|
|
|
26
26
|
"displayName": "Announcements",
|
|
27
27
|
"type": "COMPONENT_LIST",
|
|
28
28
|
"required": false,
|
|
29
|
+
"defaultValue": {
|
|
30
|
+
"components": [
|
|
31
|
+
{
|
|
32
|
+
"codeComponentId": "nb34u3yu-announcement"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
},
|
|
29
36
|
"filteredComponentIds": [
|
|
30
|
-
"
|
|
37
|
+
"<id-of-Announcement>"
|
|
31
38
|
]
|
|
32
39
|
},
|
|
33
40
|
{
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"displayName": "Background Color",
|
|
43
43
|
"type": "COLOR",
|
|
44
44
|
"required": false,
|
|
45
|
+
"defaultValue": "rgba(0, 0, 0, 0.7)",
|
|
45
46
|
"groupId": "appearance"
|
|
46
47
|
},
|
|
47
48
|
{
|
|
@@ -49,6 +50,7 @@
|
|
|
49
50
|
"displayName": "Text Color",
|
|
50
51
|
"type": "COLOR",
|
|
51
52
|
"required": false,
|
|
53
|
+
"defaultValue": "#ffffff",
|
|
52
54
|
"groupId": "appearance"
|
|
53
55
|
},
|
|
54
56
|
{
|
|
@@ -56,6 +58,7 @@
|
|
|
56
58
|
"displayName": "Button Text Color",
|
|
57
59
|
"type": "COLOR",
|
|
58
60
|
"required": false,
|
|
61
|
+
"defaultValue": "#ffffff",
|
|
59
62
|
"groupId": "appearance"
|
|
60
63
|
}
|
|
61
64
|
],
|
package/data/section-templates/header-section/children/Navbar/components/CartSidebar/index.tsx
CHANGED
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
getCheckoutUrlFromCartStore,
|
|
20
20
|
IkasOrderLineItem,
|
|
21
21
|
Router,
|
|
22
|
+
withRoutePrefix,
|
|
22
23
|
} from "@ikas/bp-storefront";
|
|
23
24
|
import type { AspectRatio, ObjectFit } from "../../../../global-types";
|
|
24
25
|
import CartItem from "../../../../sub-components/CartItem";
|
|
@@ -164,7 +165,7 @@ const CartSidebar = observer(function CartSidebar({
|
|
|
164
165
|
</div>
|
|
165
166
|
<div className="kombos-cart-sidebar__footer-buttons">
|
|
166
167
|
<a
|
|
167
|
-
href="/cart"
|
|
168
|
+
href={withRoutePrefix("/cart")}
|
|
168
169
|
className="kombos-cart-sidebar__view-cart-link"
|
|
169
170
|
onClick={(e: Event) => {
|
|
170
171
|
e.preventDefault();
|
package/data/section-templates/header-section/children/Navbar/components/SearchModal/index.tsx
CHANGED
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
createMediaSrcset,
|
|
13
13
|
getProductOptionSet,
|
|
14
14
|
IkasComponentRenderer,
|
|
15
|
+
withRoutePrefix,
|
|
15
16
|
} from "@ikas/bp-storefront";
|
|
16
17
|
import type { IkasProduct } from "@ikas/bp-storefront";
|
|
17
18
|
import { cx } from "../../../../utils/cx";
|
|
@@ -199,7 +200,7 @@ const SearchModal = observer(function SearchModal({
|
|
|
199
200
|
<div className="kombos-search__logo-area">
|
|
200
201
|
{logo && (
|
|
201
202
|
<a
|
|
202
|
-
href="/"
|
|
203
|
+
href={withRoutePrefix("/")}
|
|
203
204
|
className="kombos-search__logo"
|
|
204
205
|
style={{
|
|
205
206
|
"--search-logo-h-desktop": logoSizeDesktop,
|
|
@@ -17,6 +17,10 @@
|
|
|
17
17
|
"displayName": "Desktop Logo Size",
|
|
18
18
|
"type": "TYPE",
|
|
19
19
|
"required": false,
|
|
20
|
+
"defaultValue": {
|
|
21
|
+
"value": 60,
|
|
22
|
+
"unit": "px"
|
|
23
|
+
},
|
|
20
24
|
"groupId": "logo-settings",
|
|
21
25
|
"typeId": "@ikas/bp-storefront-models-HeightStyleType"
|
|
22
26
|
},
|
|
@@ -25,6 +29,10 @@
|
|
|
25
29
|
"displayName": "Mobile Logo Size",
|
|
26
30
|
"type": "TYPE",
|
|
27
31
|
"required": false,
|
|
32
|
+
"defaultValue": {
|
|
33
|
+
"value": 48,
|
|
34
|
+
"unit": "px"
|
|
35
|
+
},
|
|
28
36
|
"groupId": "logo-settings",
|
|
29
37
|
"typeId": "@ikas/bp-storefront-models-HeightStyleType"
|
|
30
38
|
},
|
|
@@ -40,6 +48,7 @@
|
|
|
40
48
|
"displayName": "Link Color",
|
|
41
49
|
"type": "COLOR",
|
|
42
50
|
"required": false,
|
|
51
|
+
"defaultValue": "#2e2e33",
|
|
43
52
|
"groupId": "navigation"
|
|
44
53
|
},
|
|
45
54
|
{
|
|
@@ -54,6 +63,7 @@
|
|
|
54
63
|
"displayName": "Link Color",
|
|
55
64
|
"type": "COLOR",
|
|
56
65
|
"required": false,
|
|
66
|
+
"defaultValue": "#2e2e33",
|
|
57
67
|
"groupId": "colored-links"
|
|
58
68
|
},
|
|
59
69
|
{
|
|
@@ -140,6 +150,7 @@
|
|
|
140
150
|
"displayName": "Hide Add to Cart Button",
|
|
141
151
|
"type": "BOOLEAN",
|
|
142
152
|
"required": false,
|
|
153
|
+
"defaultValue": false,
|
|
143
154
|
"groupId": "search-card-settings"
|
|
144
155
|
},
|
|
145
156
|
{
|
|
@@ -219,6 +230,19 @@
|
|
|
219
230
|
"displayName": "Components",
|
|
220
231
|
"type": "COMPONENT_LIST",
|
|
221
232
|
"required": false,
|
|
233
|
+
"defaultValue": {
|
|
234
|
+
"components": [
|
|
235
|
+
{
|
|
236
|
+
"codeComponentId": "nb34u3yu-card-product-name"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"codeComponentId": "nb34u3yu-card-product-variants"
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"codeComponentId": "nb34u3yu-card-product-price"
|
|
243
|
+
}
|
|
244
|
+
]
|
|
245
|
+
},
|
|
222
246
|
"privateVarMap": {
|
|
223
247
|
"product": {
|
|
224
248
|
"id": "pvm_1772803767210_2",
|
|
@@ -226,9 +250,9 @@
|
|
|
226
250
|
}
|
|
227
251
|
},
|
|
228
252
|
"filteredComponentIds": [
|
|
229
|
-
"
|
|
230
|
-
"
|
|
231
|
-
"
|
|
253
|
+
"<id-of-CardProductPrice>",
|
|
254
|
+
"<id-of-CardProductVariants>",
|
|
255
|
+
"<id-of-CardProductName>"
|
|
232
256
|
]
|
|
233
257
|
},
|
|
234
258
|
{
|
|
@@ -236,6 +260,7 @@
|
|
|
236
260
|
"displayName": "Image Ratio",
|
|
237
261
|
"type": "ENUM",
|
|
238
262
|
"required": false,
|
|
263
|
+
"defaultValue": "Square",
|
|
239
264
|
"groupId": "search-image",
|
|
240
265
|
"enumTypeId": "{{ENUM_ID:AspectRatio}}"
|
|
241
266
|
},
|
|
@@ -244,6 +269,7 @@
|
|
|
244
269
|
"displayName": "Image Fit",
|
|
245
270
|
"type": "ENUM",
|
|
246
271
|
"required": false,
|
|
272
|
+
"defaultValue": "Cover",
|
|
247
273
|
"groupId": "search-image",
|
|
248
274
|
"enumTypeId": "{{ENUM_ID:ObjectFit}}"
|
|
249
275
|
},
|
|
@@ -260,6 +286,7 @@
|
|
|
260
286
|
"displayName": "Enable Sticky",
|
|
261
287
|
"type": "BOOLEAN",
|
|
262
288
|
"required": false,
|
|
289
|
+
"defaultValue": false,
|
|
263
290
|
"description": "When enabled, the navbar stays fixed at the top of the page and remains visible while scrolling",
|
|
264
291
|
"groupId": "settings"
|
|
265
292
|
},
|