@configura/web-ui 1.4.0-alpha.3 → 1.5.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/CfgPriceView.d.ts +7 -0
- package/dist/components/CfgPriceView.js +13 -0
- package/dist/components/ProductInformation.d.ts +4 -1
- package/dist/components/ProductInformation.js +10 -19
- package/dist/components/TaskListView.d.ts +9 -0
- package/dist/components/TaskListView.js +50 -0
- package/dist/components/TaskStartView.d.ts +13 -0
- package/dist/components/TaskStartView.js +22 -0
- package/dist/components/icons/Checkmark.d.ts +4 -3
- package/dist/components/icons/Checkmark.js +4 -4
- package/dist/components/icons/Chevron.d.ts +2 -1
- package/dist/components/icons/Chevron.js +2 -2
- package/dist/components/icons/CircleXmarkIcon.d.ts +4 -0
- package/dist/components/icons/CircleXmarkIcon.js +8 -0
- package/dist/components/icons/DownloadIcon.d.ts +4 -0
- package/dist/components/icons/DownloadIcon.js +8 -0
- package/dist/components/icons/ErrorIcon.d.ts +4 -0
- package/dist/components/icons/ErrorIcon.js +8 -0
- package/dist/components/productConfiguration/CfgAdditionalProductView.js +2 -2
- package/dist/components/productConfiguration/CfgCheckboxView.d.ts +1 -0
- package/dist/components/productConfiguration/CfgCheckboxesView.d.ts +1 -0
- package/dist/components/productConfiguration/CfgCheckboxesView.js +2 -1
- package/dist/components/productConfiguration/CfgDropdownOptionView.d.ts +1 -0
- package/dist/components/productConfiguration/CfgDropdownOptionView.js +2 -1
- package/dist/components/productConfiguration/CfgDropdownView.d.ts +1 -0
- package/dist/components/productConfiguration/CfgDropdownView.js +2 -1
- package/dist/components/productConfiguration/CfgFeatureView.d.ts +2 -0
- package/dist/components/productConfiguration/CfgFeatureView.js +3 -1
- package/dist/components/productConfiguration/CfgGroupView.js +1 -7
- package/dist/components/productConfiguration/CfgOptionNumericView.js +4 -2
- package/dist/components/productConfiguration/CfgProductConfigurationView.js +1 -1
- package/dist/css/web-ui.css +1 -1
- package/dist/css/web-ui.css.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/scss/_configurator.scss +53 -33
- package/dist/scss/_feature-item.scss +19 -6
- package/dist/scss/_forms.scss +42 -0
- package/dist/scss/_range-view.scss +33 -22
- package/dist/scss/_tasks.scss +71 -0
- package/dist/scss/_themed.scss +37 -14
- package/dist/scss/icons/_circle-xmark-icon.scss +24 -0
- package/dist/scss/icons/_download-icon.scss +24 -0
- package/dist/scss/icons/_error-icon.scss +24 -0
- package/package.json +3 -3
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { CurrencyPrice } from "./CurrencyPrice.js";
|
|
3
|
+
export const CfgPriceView = (props) => {
|
|
4
|
+
const { price, lang } = props;
|
|
5
|
+
if (price === undefined) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
const { listPrice, currency, fractionDigits } = price;
|
|
9
|
+
if (listPrice === 0 || currency === "") {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return (React.createElement(CurrencyPrice, { currency: currency, language: lang, price: listPrice, fractionDigits: fractionDigits }));
|
|
13
|
+
};
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { CfgPrice } from "@configura/web-api";
|
|
2
|
+
import React, { ReactElement } from "react";
|
|
2
3
|
import { CssProps } from "../utilities.js";
|
|
3
4
|
interface Props {
|
|
4
5
|
description: string | undefined;
|
|
5
6
|
lang: string | undefined;
|
|
6
7
|
styleNr: string | undefined;
|
|
7
8
|
price: CfgPrice | undefined;
|
|
9
|
+
leftContent?: ReactElement;
|
|
10
|
+
rightContent?: ReactElement;
|
|
8
11
|
}
|
|
9
|
-
export declare
|
|
12
|
+
export declare const ProductInformation: React.FC<Props & CssProps>;
|
|
10
13
|
export {};
|
|
11
14
|
//# sourceMappingURL=ProductInformation.d.ts.map
|
|
@@ -1,23 +1,14 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import {
|
|
3
|
-
export
|
|
4
|
-
const { styleNr, price, description, lang } = props;
|
|
2
|
+
import { CfgPriceView } from "./CfgPriceView.js";
|
|
3
|
+
export const ProductInformation = (props) => {
|
|
4
|
+
const { styleNr, price, description, lang, leftContent, rightContent } = props;
|
|
5
5
|
return (React.createElement("div", { className: `cfgProductInfo ${props.className || ""}`, style: props.style },
|
|
6
6
|
React.createElement("div", { className: "cfgProductInfo__left" },
|
|
7
7
|
React.createElement("h2", { className: "cfgProductInfo__name cfgTextOverflow" }, description),
|
|
8
|
-
React.createElement("div", { className: "cfgProductInfo__number cfgTextOverflow" }, styleNr)
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}
|
|
16
|
-
const { listPrice, currency, fractionDigits } = price;
|
|
17
|
-
if (listPrice === 0 || currency === "") {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
return (React.createElement("div", { className: "cfgProductInfo__right" },
|
|
21
|
-
React.createElement("div", { className: "cfgProductInfo__name cfgProductInfo__name--right" },
|
|
22
|
-
React.createElement(CurrencyPrice, { currency: currency, language: lang, price: listPrice, fractionDigits: fractionDigits }))));
|
|
23
|
-
}
|
|
8
|
+
React.createElement("div", { className: "cfgProductInfo__number cfgTextOverflow" }, styleNr),
|
|
9
|
+
leftContent),
|
|
10
|
+
React.createElement("div", { className: "cfgProductInfo__right" },
|
|
11
|
+
React.createElement("div", { className: "cfgProductInfo__name cfgProductInfo__name--right" },
|
|
12
|
+
React.createElement(CfgPriceView, { price: price, lang: lang })),
|
|
13
|
+
rightContent)));
|
|
14
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TaskHandler } from "@configura/web-api";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { CssProps } from "../utilities.js";
|
|
4
|
+
declare type Props = {
|
|
5
|
+
taskHandler: TaskHandler;
|
|
6
|
+
};
|
|
7
|
+
export declare const TaskListView: React.FC<Props & CssProps>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=TaskListView.d.ts.map
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { isRenderFormat } from "@configura/web-api";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { CircleXmarkIcon } from "./icons/CircleXmarkIcon.js";
|
|
4
|
+
import { DownloadIcon } from "./icons/DownloadIcon.js";
|
|
5
|
+
import { ErrorIcon } from "./icons/ErrorIcon.js";
|
|
6
|
+
import { Loading } from "./Loading.js";
|
|
7
|
+
export const TaskListView = (props) => {
|
|
8
|
+
var _a;
|
|
9
|
+
const tasks = props.taskHandler.tasks;
|
|
10
|
+
return (React.createElement("div", { className: `cfgTaskList ${(_a = props.className) !== null && _a !== void 0 ? _a : ""}`, style: props.style }, 0 < tasks.length && (React.createElement("ul", null, tasks.map((task) => (React.createElement(TaskView, { task: task, key: task.uuid })))))));
|
|
11
|
+
};
|
|
12
|
+
const spinner = (React.createElement("span", { className: "cfgLoadingSizer" },
|
|
13
|
+
React.createElement(Loading, null)));
|
|
14
|
+
const TaskView = (props) => {
|
|
15
|
+
const { task } = props;
|
|
16
|
+
const { status, format, url, previewUrl } = task;
|
|
17
|
+
let icon;
|
|
18
|
+
let statusMessage;
|
|
19
|
+
switch (status) {
|
|
20
|
+
case "pending":
|
|
21
|
+
icon = spinner;
|
|
22
|
+
statusMessage = `Pending ${format.toUpperCase()} ${isRenderFormat(format) ? "render" : "export"}...`;
|
|
23
|
+
break;
|
|
24
|
+
case "running":
|
|
25
|
+
icon = spinner;
|
|
26
|
+
statusMessage = `${isRenderFormat(format) ? "Rendering" : "Exporting"} ${format.toUpperCase()}...`;
|
|
27
|
+
break;
|
|
28
|
+
case "finished":
|
|
29
|
+
icon = React.createElement(DownloadIcon, null);
|
|
30
|
+
statusMessage = `Download ${format.toUpperCase()}`;
|
|
31
|
+
break;
|
|
32
|
+
case "failed":
|
|
33
|
+
icon = React.createElement(ErrorIcon, null);
|
|
34
|
+
statusMessage = `Failed ${isRenderFormat(format) ? "rendering" : "export"} ${format.toUpperCase()}`;
|
|
35
|
+
break;
|
|
36
|
+
default:
|
|
37
|
+
icon = undefined;
|
|
38
|
+
statusMessage = "";
|
|
39
|
+
}
|
|
40
|
+
return (React.createElement("li", { className: "cfgTaskList__item" },
|
|
41
|
+
React.createElement("div", { className: "cfgTaskList__preview" }, previewUrl && React.createElement("img", { src: previewUrl, alt: `Preview of ${statusMessage}` })),
|
|
42
|
+
React.createElement("div", { className: "cfgTaskList__icon" }, url === undefined ? (icon) : (React.createElement("a", { href: url, title: statusMessage }, icon))),
|
|
43
|
+
React.createElement("div", { className: "cfgTaskList__status" },
|
|
44
|
+
url === undefined ? (statusMessage) : (React.createElement("a", { href: url, title: statusMessage }, statusMessage)),
|
|
45
|
+
status === "failed" && (React.createElement(React.Fragment, null,
|
|
46
|
+
" ",
|
|
47
|
+
React.createElement("button", { className: "cfgTaskList__restart", onClick: () => task.restart() }, "Restart")))),
|
|
48
|
+
React.createElement("button", { className: "cfgTaskList__abort", onClick: () => task.abort() },
|
|
49
|
+
React.createElement(CircleXmarkIcon, null))));
|
|
50
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CfgProduct, RenderOrExportFormat, RenderTaskParams, TaskHandler } from "@configura/web-api";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { CssProps } from "../utilities.js";
|
|
4
|
+
declare type Props = {
|
|
5
|
+
taskHandler: TaskHandler;
|
|
6
|
+
product: CfgProduct;
|
|
7
|
+
renderTaskParams: (() => RenderTaskParams) | RenderTaskParams | undefined;
|
|
8
|
+
getPreviewUrl: (() => Promise<string>) | undefined;
|
|
9
|
+
formats?: RenderOrExportFormat[];
|
|
10
|
+
};
|
|
11
|
+
export declare const TaskStartView: React.FC<Props & CssProps>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=TaskStartView.d.ts.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export const TaskStartView = (props) => {
|
|
3
|
+
var _a, _b;
|
|
4
|
+
const { taskHandler, product, renderTaskParams, getPreviewUrl } = props;
|
|
5
|
+
const formats = (_a = props.formats) !== null && _a !== void 0 ? _a : taskHandler.availableFormats;
|
|
6
|
+
if (formats.length === 0) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
return (React.createElement("div", { className: `cfgTaskStart ${(_b = props.className) !== null && _b !== void 0 ? _b : ""}`, style: props.style },
|
|
10
|
+
React.createElement("div", { className: "cfgFormSelect" },
|
|
11
|
+
React.createElement("select", { value: "", onChange: (event) => {
|
|
12
|
+
const index = event.target.selectedIndex;
|
|
13
|
+
if (index === 0) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
taskHandler.start(formats[index - 1], product, typeof renderTaskParams === "function"
|
|
17
|
+
? renderTaskParams()
|
|
18
|
+
: renderTaskParams, getPreviewUrl);
|
|
19
|
+
} },
|
|
20
|
+
React.createElement("option", { value: "" }, "Export"),
|
|
21
|
+
formats.map((format) => (React.createElement("option", { value: format, key: format }, format)))))));
|
|
22
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import { CssProps } from "../../utilities";
|
|
2
|
-
export declare
|
|
3
|
+
export declare const CheckmarkWithBorder: React.FC<{
|
|
3
4
|
active: boolean;
|
|
4
|
-
} & CssProps
|
|
5
|
-
export declare
|
|
5
|
+
} & CssProps>;
|
|
6
|
+
export declare const Checkmark: React.FC<CssProps>;
|
|
6
7
|
//# sourceMappingURL=Checkmark.d.ts.map
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
export
|
|
2
|
+
export const CheckmarkWithBorder = (props) => {
|
|
3
3
|
const { active } = props;
|
|
4
4
|
return (React.createElement("div", { className: `cfgCheckmark__border ${props.className || ""} ${active ? "cfgCheckmark__border--active" : ""}`, style: props.style }, active && React.createElement(Checkmark, null)));
|
|
5
|
-
}
|
|
6
|
-
export
|
|
5
|
+
};
|
|
6
|
+
export const Checkmark = (props) => {
|
|
7
7
|
return (React.createElement("span", { className: `cfgCheckmark ${props.className || ""}`, style: props.style },
|
|
8
8
|
React.createElement("svg", { height: "100%", preserveAspectRatio: "xMidYMid", version: "1.1", viewBox: "0 0 100 100", width: "100%", xmlns: "http://www.w3.org/2000/svg" },
|
|
9
9
|
React.createElement("g", { className: "cfgCheckmark__container" },
|
|
10
10
|
React.createElement("line", { className: "cfgCheckmark__line cfgCheckmark__lineLeft", x1: "10", y1: "30", x2: "30", y2: "30" }),
|
|
11
11
|
React.createElement("line", { className: "cfgCheckmark__line cfgCheckmark__lineRight", x1: "90", y1: "50", x2: "50", y2: "50" })))));
|
|
12
|
-
}
|
|
12
|
+
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
1
2
|
import { CssProps } from "../../utilities";
|
|
2
3
|
export interface Props {
|
|
3
4
|
active: boolean;
|
|
4
5
|
up?: boolean;
|
|
5
6
|
}
|
|
6
|
-
export declare
|
|
7
|
+
export declare const Chevron: React.FC<Props & CssProps>;
|
|
7
8
|
//# sourceMappingURL=Chevron.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
export
|
|
2
|
+
export const Chevron = (props) => {
|
|
3
3
|
const { active } = props;
|
|
4
4
|
let { up } = props;
|
|
5
5
|
if (up === undefined) {
|
|
@@ -15,4 +15,4 @@ export function Chevron(props) {
|
|
|
15
15
|
React.createElement("g", { className: `cfgChevron__container ${containerClass}` },
|
|
16
16
|
React.createElement("line", { className: `cfgChevron__line ${leftLineClass}`, x1: "10", y1: "50", x2: "50", y2: "50" }),
|
|
17
17
|
React.createElement("line", { className: `cfgChevron__line ${rightLineClass}`, x1: "90", y1: "50", x2: "50", y2: "50" })))));
|
|
18
|
-
}
|
|
18
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export const CircleXmarkIcon = (props) => {
|
|
3
|
+
return (React.createElement("span", { className: `cfgCircleXmarkIcon ${props.className || ""}`, style: props.style },
|
|
4
|
+
React.createElement("svg", { preserveAspectRatio: "xMidYMid", width: "100%", height: "100%", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
5
|
+
React.createElement("path", { d: "M6 6L10 10" }),
|
|
6
|
+
React.createElement("path", { d: "M6 10L10 6" }),
|
|
7
|
+
React.createElement("circle", { cx: "8", cy: "8", r: "7.25" }))));
|
|
8
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export const DownloadIcon = (props) => {
|
|
3
|
+
return (React.createElement("span", { className: `cfgDownloadIcon ${props.className || ""}`, style: props.style },
|
|
4
|
+
React.createElement("svg", { preserveAspectRatio: "xMidYMid", width: "100%", height: "100%", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
5
|
+
React.createElement("path", { d: "M1.5 11.5V14.5H14.5V11.5" }),
|
|
6
|
+
React.createElement("path", { d: "M8 1V11" }),
|
|
7
|
+
React.createElement("path", { d: "M5 9L8 12L11 9" }))));
|
|
8
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export const ErrorIcon = (props) => {
|
|
3
|
+
return (React.createElement("span", { className: `cfgErrorIcon ${props.className || ""}`, style: props.style },
|
|
4
|
+
React.createElement("svg", { preserveAspectRatio: "xMidYMid", width: "100%", height: "100%", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
5
|
+
React.createElement("path", { d: "M8 11L8 11.5" }),
|
|
6
|
+
React.createElement("path", { d: "M8 8.5L8 4.5" }),
|
|
7
|
+
React.createElement("circle", { cx: "8", cy: "8", r: "7.25" }))));
|
|
8
|
+
};
|
|
@@ -8,8 +8,8 @@ export const CfgAdditionalProductView = React.memo((props) => {
|
|
|
8
8
|
const [open, setOpen] = useState(false);
|
|
9
9
|
const openOrSelected = optional ? selected : open;
|
|
10
10
|
const noChildren = configuration.features.length === 0 && additionalProducts.length === 0;
|
|
11
|
-
const AdditionalProductComponent = additionalProductComponent
|
|
12
|
-
return (React.createElement("li", { className: "cfgFeatureItem" },
|
|
11
|
+
const AdditionalProductComponent = additionalProductComponent !== null && additionalProductComponent !== void 0 ? additionalProductComponent : CfgAdditionalProductView;
|
|
12
|
+
return (React.createElement("li", { className: "cfgFeatureItem cfgAdditionalProduct" },
|
|
13
13
|
React.createElement(ExpandableHeadingRow, { heading: description || partNumber, expandable: optional || (!noChildren && permanentlyExpandedLevels <= 0), open: openOrSelected, onClick: () => {
|
|
14
14
|
if (optional) {
|
|
15
15
|
product.setSelected(!selected);
|
|
@@ -11,6 +11,7 @@ export declare const CfgCheckboxViewMemo: React.NamedExoticComponent<Passthrough
|
|
|
11
11
|
option: CfgOption;
|
|
12
12
|
} & {
|
|
13
13
|
additionalProductComponent?: React.ComponentType<import("./CfgFeatureView.js").CfgAdditionalProductViewProps> | undefined;
|
|
14
|
+
featureFlattenComponent?: React.ComponentType<import("./CfgFeatureView.js").CfgFeatureViewProps> | undefined;
|
|
14
15
|
featureGroupComponent?: React.ComponentType<import("./CfgFeatureView.js").CfgFeatureViewProps> | undefined;
|
|
15
16
|
featureSelectManyComponent?: React.ComponentType<import("./CfgFeatureView.js").CfgFeatureViewProps> | undefined;
|
|
16
17
|
featureSelectOneComponent?: React.ComponentType<import("./CfgFeatureView.js").CfgFeatureViewProps> | undefined;
|
|
@@ -4,6 +4,7 @@ import { CfgFeatureViewProps } from "./CfgFeatureView.js";
|
|
|
4
4
|
export declare const CfgCheckboxesView: React.FC<CfgFeatureViewProps & CssProps>;
|
|
5
5
|
export declare const CfgCheckboxesViewMemo: React.NamedExoticComponent<import("./CfgProductConfigurationView.js").PassthroughProps & {
|
|
6
6
|
additionalProductComponent?: React.ComponentType<import("./CfgFeatureView.js").CfgAdditionalProductViewProps> | undefined;
|
|
7
|
+
featureFlattenComponent?: React.ComponentType<CfgFeatureViewProps> | undefined;
|
|
7
8
|
featureGroupComponent?: React.ComponentType<CfgFeatureViewProps> | undefined;
|
|
8
9
|
featureSelectManyComponent?: React.ComponentType<CfgFeatureViewProps> | undefined;
|
|
9
10
|
featureSelectOneComponent?: React.ComponentType<CfgFeatureViewProps> | undefined;
|
|
@@ -3,6 +3,7 @@ import React from "react";
|
|
|
3
3
|
import { CfgCheckboxViewMemo } from "./CfgCheckboxView.js";
|
|
4
4
|
import { forwardProps } from "./CfgFeatureView.js";
|
|
5
5
|
export const CfgCheckboxesView = (props) => {
|
|
6
|
+
var _a;
|
|
6
7
|
const { feature } = props;
|
|
7
8
|
if (feature.selectionType !== SelectionType.SelectMany) {
|
|
8
9
|
throw Error(`Unsupported selection type expected: ${SelectionType.SelectMany}, got: ${feature.selectionType}`);
|
|
@@ -11,7 +12,7 @@ export const CfgCheckboxesView = (props) => {
|
|
|
11
12
|
if (options.length === 0) {
|
|
12
13
|
return null;
|
|
13
14
|
}
|
|
14
|
-
return (React.createElement("li", { className: `cfgFeatureItem cfgFeatureItem--optional ${props.className
|
|
15
|
+
return (React.createElement("li", { className: `cfgFeatureItem cfgFeatureItem--optional ${(_a = props.className) !== null && _a !== void 0 ? _a : ""}`, style: props.style },
|
|
15
16
|
React.createElement("h3", { className: "cfgFeatureItemOptional__header" }, description),
|
|
16
17
|
React.createElement("ul", { className: "cfgOptionTree" }, options.map((option) => (React.createElement(CfgCheckboxViewMemo, Object.assign({ option: option, key: option.key }, forwardProps(props))))))));
|
|
17
18
|
};
|
|
@@ -11,6 +11,7 @@ export declare const CfgDropdownOptionViewMemo: React.NamedExoticComponent<Passt
|
|
|
11
11
|
option: CfgOption;
|
|
12
12
|
} & {
|
|
13
13
|
additionalProductComponent?: React.ComponentType<import("./CfgFeatureView.js").CfgAdditionalProductViewProps> | undefined;
|
|
14
|
+
featureFlattenComponent?: React.ComponentType<import("./CfgFeatureView.js").CfgFeatureViewProps> | undefined;
|
|
14
15
|
featureGroupComponent?: React.ComponentType<import("./CfgFeatureView.js").CfgFeatureViewProps> | undefined;
|
|
15
16
|
featureSelectManyComponent?: React.ComponentType<import("./CfgFeatureView.js").CfgFeatureViewProps> | undefined;
|
|
16
17
|
featureSelectOneComponent?: React.ComponentType<import("./CfgFeatureView.js").CfgFeatureViewProps> | undefined;
|
|
@@ -6,11 +6,12 @@ import { CfgOptionFeaturesView } from "./CfgOptionFeaturesView.js";
|
|
|
6
6
|
import { CfgOptionNumericView } from "./CfgOptionNumericView.js";
|
|
7
7
|
import { CfgOptionPriceView } from "./CfgOptionPriceView.js";
|
|
8
8
|
export const CfgDropdownOptionView = (props) => {
|
|
9
|
+
var _a;
|
|
9
10
|
const { option, upchargeDisplayMode } = props;
|
|
10
11
|
const { code, thumbnail, description, selected } = option;
|
|
11
12
|
const optionClasses = selected ? "cfgFeatureItemOption--checked" : "";
|
|
12
13
|
const uniqueId = useUuid();
|
|
13
|
-
return (React.createElement("li", { className: `cfgFeatureItem cfgMb1 ${props.className
|
|
14
|
+
return (React.createElement("li", { className: `cfgFeatureItem cfgMb1 ${(_a = props.className) !== null && _a !== void 0 ? _a : ""}`, style: props.style },
|
|
14
15
|
React.createElement("label", { className: `cfgFeatureItemOption ${optionClasses}`, htmlFor: uniqueId },
|
|
15
16
|
React.createElement("input", { checked: selected, className: "cfgFeatureItem__hiddenInput", id: uniqueId, name: uniqueId, onChange: () => {
|
|
16
17
|
option.setSelected(true);
|
|
@@ -4,6 +4,7 @@ import { CfgFeatureViewProps } from "./CfgFeatureView.js";
|
|
|
4
4
|
export declare const CfgDropdownView: React.FC<CfgFeatureViewProps & CssProps>;
|
|
5
5
|
export declare const CfgDropdownViewMemo: React.NamedExoticComponent<import("./CfgProductConfigurationView.js").PassthroughProps & {
|
|
6
6
|
additionalProductComponent?: React.ComponentType<import("./CfgFeatureView.js").CfgAdditionalProductViewProps> | undefined;
|
|
7
|
+
featureFlattenComponent?: React.ComponentType<CfgFeatureViewProps> | undefined;
|
|
7
8
|
featureGroupComponent?: React.ComponentType<CfgFeatureViewProps> | undefined;
|
|
8
9
|
featureSelectManyComponent?: React.ComponentType<CfgFeatureViewProps> | undefined;
|
|
9
10
|
featureSelectOneComponent?: React.ComponentType<CfgFeatureViewProps> | undefined;
|
|
@@ -4,13 +4,14 @@ import { ExpandableHeadingRow } from "../ExpandableHeadingRow.js";
|
|
|
4
4
|
import { CfgDropdownOptionViewMemo } from "./CfgDropdownOptionView.js";
|
|
5
5
|
import { forwardProps } from "./CfgFeatureView.js";
|
|
6
6
|
export const CfgDropdownView = (props) => {
|
|
7
|
+
var _a;
|
|
7
8
|
const { feature } = props;
|
|
8
9
|
if (feature.selectionType !== SelectionType.SelectOne) {
|
|
9
10
|
throw Error(`Unsupported selection type expected: ${SelectionType.SelectOne}, got: ${feature.selectionType}`);
|
|
10
11
|
}
|
|
11
12
|
const { description, preview, options } = feature;
|
|
12
13
|
const [open, setOpen] = useState(false);
|
|
13
|
-
return (React.createElement("li", { className: `cfgFeatureItem ${props.className
|
|
14
|
+
return (React.createElement("li", { className: `cfgFeatureItem ${(_a = props.className) !== null && _a !== void 0 ? _a : ""}`, style: props.style },
|
|
14
15
|
React.createElement(ExpandableHeadingRow, { heading: description, open: open, onClick: () => setOpen((prev) => !prev) }, preview && (React.createElement("div", { className: "cfgThumbnailPlaceholder" },
|
|
15
16
|
React.createElement("img", { alt: `Preview for ${description}`, className: "cfgThumbnailImage", src: preview })))),
|
|
16
17
|
React.createElement("div", { className: "cfgFeatureItem__subTree" },
|
|
@@ -11,6 +11,7 @@ export declare type CfgAdditionalProductViewProps = CfgProductConfigurationCompo
|
|
|
11
11
|
};
|
|
12
12
|
export declare type CfgProductConfigurationComponentAndPassthroughProps = PassthroughProps & {
|
|
13
13
|
additionalProductComponent?: React.ComponentType<CfgAdditionalProductViewProps>;
|
|
14
|
+
featureFlattenComponent?: React.ComponentType<CfgFeatureViewProps>;
|
|
14
15
|
featureGroupComponent?: React.ComponentType<CfgFeatureViewProps>;
|
|
15
16
|
featureSelectManyComponent?: React.ComponentType<CfgFeatureViewProps>;
|
|
16
17
|
featureSelectOneComponent?: React.ComponentType<CfgFeatureViewProps>;
|
|
@@ -19,6 +20,7 @@ export declare const forwardProps: (props: CfgProductConfigurationComponentAndPa
|
|
|
19
20
|
export declare const CfgFeatureView: React.FC<CfgFeatureViewProps & CssProps>;
|
|
20
21
|
export declare const CfgFeatureViewMemo: React.NamedExoticComponent<PassthroughProps & {
|
|
21
22
|
additionalProductComponent?: React.ComponentType<CfgAdditionalProductViewProps> | undefined;
|
|
23
|
+
featureFlattenComponent?: React.ComponentType<CfgFeatureViewProps> | undefined;
|
|
22
24
|
featureGroupComponent?: React.ComponentType<CfgFeatureViewProps> | undefined;
|
|
23
25
|
featureSelectManyComponent?: React.ComponentType<CfgFeatureViewProps> | undefined;
|
|
24
26
|
featureSelectOneComponent?: React.ComponentType<CfgFeatureViewProps> | undefined;
|
|
@@ -7,6 +7,7 @@ export const forwardProps = (props) => {
|
|
|
7
7
|
return {
|
|
8
8
|
upchargeDisplayMode: props.upchargeDisplayMode,
|
|
9
9
|
additionalProductComponent: props.additionalProductComponent,
|
|
10
|
+
featureFlattenComponent: props.featureFlattenComponent,
|
|
10
11
|
featureGroupComponent: props.featureGroupComponent,
|
|
11
12
|
featureSelectManyComponent: props.featureSelectManyComponent,
|
|
12
13
|
featureSelectOneComponent: props.featureSelectOneComponent,
|
|
@@ -14,8 +15,9 @@ export const forwardProps = (props) => {
|
|
|
14
15
|
};
|
|
15
16
|
export const CfgFeatureView = (props) => {
|
|
16
17
|
const { feature } = props;
|
|
18
|
+
const FlattenComponent = props.featureFlattenComponent || CfgGroupViewMemo;
|
|
17
19
|
if (!feature.visible) {
|
|
18
|
-
return
|
|
20
|
+
return React.createElement(FlattenComponent, Object.assign({}, props));
|
|
19
21
|
}
|
|
20
22
|
const GroupComponent = props.featureGroupComponent || CfgGroupViewMemo;
|
|
21
23
|
const SelectManyComponent = props.featureSelectManyComponent || CfgCheckboxesViewMemo;
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
import { SelectionType } from "@configura/web-api";
|
|
2
1
|
import React from "react";
|
|
3
2
|
import { CfgFeatureViewMemo, forwardProps } from "./CfgFeatureView.js";
|
|
4
3
|
export const CfgGroupView = (props) => {
|
|
5
4
|
const { feature } = props;
|
|
6
|
-
|
|
7
|
-
throw Error(`Unsupported selection type expected: ${SelectionType.Group}, got: ${feature.selectionType}`);
|
|
8
|
-
}
|
|
9
|
-
return (React.createElement(React.Fragment, null, feature.options.map((o) => {
|
|
10
|
-
return o.features.map((f) => (React.createElement(CfgFeatureViewMemo, Object.assign({ key: f.key, feature: f }, forwardProps(props)))));
|
|
11
|
-
})));
|
|
5
|
+
return (React.createElement(React.Fragment, null, feature.selectedOptions.map((o) => o.features.map((f) => (React.createElement(CfgFeatureViewMemo, Object.assign({ key: f.key, feature: f }, forwardProps(props))))))));
|
|
12
6
|
};
|
|
13
7
|
export const CfgGroupViewMemo = React.memo(CfgGroupView);
|
|
@@ -12,6 +12,7 @@ import React, { useEffect, useState } from "react";
|
|
|
12
12
|
import { useRerender } from "../../useRerender.js";
|
|
13
13
|
import { useUuid } from "../../useUniqueId.js";
|
|
14
14
|
import { Checkmark } from "../icons/Checkmark.js";
|
|
15
|
+
import { ErrorIcon } from "../icons/ErrorIcon.js";
|
|
15
16
|
export const CfgOptionNumericView = (props) => {
|
|
16
17
|
const { option } = props;
|
|
17
18
|
const { isUseNumericValue } = option;
|
|
@@ -108,10 +109,11 @@ export const RangeView = (props) => {
|
|
|
108
109
|
};
|
|
109
110
|
return (React.createElement("div", { className: `cfgRangeView cfgMt1 ${props.className || ""}`, style: props.style },
|
|
110
111
|
React.createElement("div", { className: "cfgRangeView__inputs" },
|
|
111
|
-
React.createElement("input", Object.assign({}, inputProps, { type: "number", value: isNaN(inputValue) ? "" : inputValue, onChange: getOnChange(false), className: "cfgRangeView__number-input" })),
|
|
112
|
+
React.createElement("input", Object.assign({}, inputProps, { type: "number", value: isNaN(inputValue) ? "" : inputValue, onChange: getOnChange(false), className: "cfgInput cfgRangeView__number-input" })),
|
|
112
113
|
React.createElement("span", { className: "cfgRangeView__unit-label" }, unit),
|
|
113
114
|
React.createElement("input", Object.assign({}, inputProps, { type: "range", className: "cfgSlider cfgRangeView__slider-input", value: currentValue, onChange: getOnChange(true) }))),
|
|
114
115
|
showRangeError && (React.createElement("div", { className: "cfgRangeView__error" },
|
|
115
|
-
|
|
116
|
+
React.createElement(ErrorIcon, null),
|
|
117
|
+
" Value not allowed, allowed values are ",
|
|
116
118
|
legend))));
|
|
117
119
|
};
|
|
@@ -41,5 +41,5 @@ export const CfgProductConfigurationView = React.memo((props) => {
|
|
|
41
41
|
}, [configuration, rerender]);
|
|
42
42
|
return (React.createElement(React.Fragment, null,
|
|
43
43
|
React.createElement("ul", { className: `cfgOptionTree cfgOptionTree--topLevel ${props.className || ""}`, style: props.style }, features.map((f) => (React.createElement(CfgFeatureViewMemo, Object.assign({ feature: f, key: f.key }, forwardProps(props)))))),
|
|
44
|
-
additionalProducts !== undefined && (React.createElement("ul", { className: `
|
|
44
|
+
additionalProducts !== undefined && (React.createElement("ul", { className: `cfgOptionTree cfgOptionTree--topLevel` }, additionalProducts.map((additionalProduct) => (React.createElement(AdditionalProductComponent, Object.assign({ key: additionalProduct.key }, forwardProps(props), { additionalProductComponent: AdditionalProductComponent, product: additionalProduct, permanentlyExpandedLevels: permanentlyExpandedAdditionalProductLevels !== null && permanentlyExpandedAdditionalProductLevels !== void 0 ? permanentlyExpandedAdditionalProductLevels : 0 }))))))));
|
|
45
45
|
});
|
package/dist/css/web-ui.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.cfgRangeView__inputs{display:flex;align-items:center}.cfgRangeView__number-input{font-size:1.5em;flex-grow:1;text-align:right}.cfgRangeView__unit-label{font-size:1.5em;margin-left:.3em}.cfgRangeView__slider-input.cfgSlider{margin-left:1em;flex-grow:3}.cfgRangeView__error{margin-top:1em;font-size:1.5em;color:#b00}.cfgMl1{margin-left:1em}.cfgMt1{margin-top:1em}.cfgMb1{margin-bottom:1em}.cfgTextOverflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cfgButton{box-sizing:border-box;display:inline-block;background-color:transparent;color:#333;border-radius:.3em;border:.1em solid #bababa;font-size:1.3em;font-weight:500;outline:none;padding:.4em .8em}.cfgButton:after,.cfgButton:before{box-sizing:inherit}.cfgButton *{box-sizing:border-box}.cfgButton :after,.cfgButton :before{box-sizing:inherit}.cfgButton:focus{box-shadow:0 0 0 .075em #fff,0 0 0 .2em #333}.cfgButtonRow{box-sizing:border-box}.cfgButtonRow:after,.cfgButtonRow:before{box-sizing:inherit}.cfgButtonRow *{box-sizing:border-box}.cfgButtonRow :after,.cfgButtonRow :before{box-sizing:inherit}.cfgButtonRow__button:nth-child(n+2){margin-left:1em}.cfgConfigurator{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:10px;color:#333;min-width:0}.cfgConfigurator:after,.cfgConfigurator:before{box-sizing:inherit}.cfgConfigurator *{box-sizing:border-box}.cfgConfigurator :after,.cfgConfigurator :before{box-sizing:inherit}.cfgConfiguratorHeader{border-bottom:.1em solid #c8c7cc;padding:1.7em 1.7em 1.9em;position:relative}.cfgConfiguratorHeader__actions{margin-top:1em}.cfgConfiguratorTree{padding-top:1em}.cfgCanvasWrapper{box-sizing:border-box;position:relative;height:50rem;-webkit-user-select:none;user-select:none}.cfgCanvasWrapper:after,.cfgCanvasWrapper:before{box-sizing:inherit}.cfgCanvasWrapper *{box-sizing:border-box}.cfgCanvasWrapper :after,.cfgCanvasWrapper :before{box-sizing:inherit}.cfgCanvasWrapper canvas{outline:none}.cfgConfiguratorWrapper{box-sizing:border-box;color:#333;height:100%;width:100%}.cfgConfiguratorWrapper:after,.cfgConfiguratorWrapper:before{box-sizing:inherit}.cfgConfiguratorWrapper *{box-sizing:border-box}.cfgConfiguratorWrapper :after,.cfgConfiguratorWrapper :before{box-sizing:inherit}@media screen and (orientation:landscape){.cfgConfiguratorWrapper{display:flex;flex-direction:row}.cfgConfiguratorWrapper>.cfgConfigurator{flex:0 1 40%;height:100%}.cfgConfiguratorWrapper .cfgCanvasWrapper{flex:0 1 60%;height:85vh;overflow:hidden;position:sticky;top:0}}.cfgExpandableHeadingRow{box-sizing:border-box;-webkit-appearance:none;appearance:none;font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;padding:0;align-items:stretch;display:flex;height:3.9em;outline:0;position:relative;width:100%}.cfgExpandableHeadingRow:after,.cfgExpandableHeadingRow:before{box-sizing:inherit}.cfgExpandableHeadingRow *{box-sizing:border-box}.cfgExpandableHeadingRow :after,.cfgExpandableHeadingRow :before{box-sizing:inherit}.cfgExpandableHeadingRow--expandable{cursor:pointer}.cfgExpandableHeadingRow__title{align-items:center;display:flex;flex:1 1 auto;font-size:1.5em;font-weight:500;justify-content:flex-start}.cfgExpandableHeadingRow__icon{align-items:center;display:flex;flex:0 0 5em;justify-content:center;padding:0 1.5em}.cfgHr{box-sizing:border-box;border:0;border-bottom:.1em solid #c8c7cc;padding:0;margin:0}.cfgHr:after,.cfgHr:before{box-sizing:inherit}.cfgHr *{box-sizing:border-box}.cfgHr :after,.cfgHr :before{box-sizing:inherit}.cfgThumbnailImage{border-radius:.7em;display:inline-block;height:3em;width:3em}.cfgThumbnailPlaceholder{align-items:center;display:flex;flex:0 0 4.2em;justify-content:flex-start}.cfgFeatureItem{box-sizing:border-box;color:#333}.cfgFeatureItem:after,.cfgFeatureItem:before{box-sizing:inherit}.cfgFeatureItem *{box-sizing:border-box}.cfgFeatureItem :after,.cfgFeatureItem :before{box-sizing:inherit}.cfgFeatureItem__dropdown{-webkit-appearance:none;appearance:none;font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;padding:0;align-items:stretch;display:flex;height:3.9em;outline:0;position:relative;width:100%;cursor:pointer}.cfgFeatureItem--optional{margin-top:1em}.cfgFeatureItem__hiddenInput{left:-99999px;opacity:0;position:absolute;z-index:-1}.cfgFeatureItem__radio{border:.2em solid #c8c7cc;border-radius:50%}.cfgFeatureItem__checkbox,.cfgFeatureItem__radio{align-items:center;display:flex;flex:0 0 auto;height:2.2em;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:2.2em}.cfgFeatureItem__checkbox{border:.2em solid #c8c7cc;border-radius:.3em}.cfgFeatureItem__hiddenInput:focus~.cfgFeatureItem__checkbox,.cfgFeatureItem__hiddenInput:focus~.cfgFeatureItem__radio{box-shadow:0 0 0 .075em #fff,0 0 0 .2em #333}.cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__radio{border:.2em solid #000;border-radius:50%}.cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__checkbox,.cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__radio{align-items:center;display:flex;flex:0 0 auto;height:2.2em;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:2.2em}.cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__checkbox{border:.2em solid #000;border-radius:.3em}.cfgFeatureItemOption__titleWrapper,.cfgFeatureItemOptional__titleWrapper{flex:1 1 auto;margin-left:1em}.cfgFeatureItemOption__title,.cfgFeatureItemOptional__title{font-size:1.5em}.cfgFeatureItemOption__price{font-weight:600;font-size:.75em;color:grey}.cfgOptionTree--subLevel .cfgFeatureItem__hr{display:none}.cfgFeatureItemOption,.cfgFeatureItemOptional{align-items:center;display:flex}.cfgFeatureItemOptional{justify-content:center;margin-top:.5em}.cfgFeatureItemOptional__header{font-size:1.2em;font-weight:600;margin:0 0 .3em;padding:0;text-transform:uppercase}.cfgAdditionalProduct .cfgFeatureItem:last-child .cfgFeatureItem__hr{margin-bottom:-.1em}.cfgOptionTree{box-sizing:border-box;list-style:none;margin:0;padding:0}.cfgOptionTree:after,.cfgOptionTree:before{box-sizing:inherit}.cfgOptionTree *{box-sizing:border-box}.cfgOptionTree :after,.cfgOptionTree :before{box-sizing:inherit}.cfgOptionTree--topLevel{padding-left:1.7em}.cfgOptionTree--indent{margin-left:3.2em}.cfgOptionTree--compThumb{margin-left:4.2em}.cfgProductInfo{box-sizing:border-box;color:#333;display:flex}.cfgProductInfo:after,.cfgProductInfo:before{box-sizing:inherit}.cfgProductInfo *{box-sizing:border-box}.cfgProductInfo :after,.cfgProductInfo :before{box-sizing:inherit}.cfgProductInfo__left{flex:1 1 auto;min-width:0;overflow:hidden}.cfgProductInfo__right{align-items:flex-end;display:flex;flex-direction:column;flex:1 0 auto;margin-left:1em;max-width:.333333333;min-width:0}.cfgProductInfo__name{display:block;font-size:1.6em;font-weight:600;line-height:1.33;margin:0}.cfgProductInfo__number{font-size:1.3em;font-weight:400;line-height:1.38;margin:0}.cfgCenteredLoading{box-sizing:border-box;align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;width:100%}.cfgCenteredLoading:after,.cfgCenteredLoading:before{box-sizing:inherit}.cfgCenteredLoading *{box-sizing:border-box}.cfgCenteredLoading :after,.cfgCenteredLoading :before{box-sizing:inherit}.cfgOverlayLoading{box-sizing:border-box;align-items:center;background-color:#fff;bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:1000}.cfgOverlayLoading:after,.cfgOverlayLoading:before{box-sizing:inherit}.cfgOverlayLoading *{box-sizing:border-box}.cfgOverlayLoading :after,.cfgOverlayLoading :before{box-sizing:inherit}.cfgOverlayLoading--clickThrough{background-color:transparent;pointer-events:none}.cfgOverlayLoading--clickThrough .cfgLoadingWithText{padding:2em 2em 1.8em;border-radius:.8em;background-color:#fff;opacity:.8;border:.1em solid rgba(0,0,0,.15)}.cfgOverlayLoading--fullWindow{position:fixed;z-index:1001}.cfgLoadingWithText{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;text-align:center}.cfgLoadingWithText:after,.cfgLoadingWithText:before{box-sizing:inherit}.cfgLoadingWithText *{box-sizing:border-box}.cfgLoadingWithText :after,.cfgLoadingWithText :before{box-sizing:inherit}.cfgLoadingWithText__text{color:#000;font-weight:600;margin-top:.5em;font-size:1.6em}.cfgLoading{box-sizing:border-box;animation:rotate 1.1s linear 0s infinite;border-radius:100%;border:.5em solid rgba(0,0,0,.15);border-bottom-color:#000;display:inline-block;height:3em;width:3em}.cfgLoading:after,.cfgLoading:before{box-sizing:inherit}.cfgLoading *{box-sizing:border-box}.cfgLoading :after,.cfgLoading :before{box-sizing:inherit}.cfgLoading--small{border-width:.4em;height:2em;width:2em}.cfgSlider{box-sizing:border-box;flex:1;margin:0;padding:0;min-height:2.8em;background:transparent;font:inherit}.cfgSlider:after,.cfgSlider:before{box-sizing:inherit}.cfgSlider *{box-sizing:border-box}.cfgSlider :after,.cfgSlider :before{box-sizing:inherit}.cfgSlider,.cfgSlider::-webkit-slider-thumb{-webkit-appearance:none}.cfgSlider::-webkit-slider-runnable-track{box-sizing:border-box;border:none;height:.2em;background:#666}.cfgSlider::-moz-range-track{box-sizing:border-box;border:none;height:.2em;background:#666}.cfgSlider::-ms-track{box-sizing:border-box;border:none;height:.2em;background:#666}.cfgSlider::-webkit-slider-thumb{margin-top:-1.3em;box-sizing:border-box;border:none;width:2.8em;height:2.8em;border-radius:50%;background:#fff;box-shadow:0 .15em .45em .05em #666}.cfgSlider::-moz-range-thumb{box-sizing:border-box;border:none;width:2.8em;height:2.8em;border-radius:50%;background:#fff;box-shadow:0 .15em .45em .05em #666}.cfgSlider::-ms-thumb{margin-top:0;box-sizing:border-box;border:none;width:2.8em;height:2.8em;border-radius:50%;background:#fff;box-shadow:0 .15em .45em .05em #666}.cfgSlider::-ms-tooltip{display:none}.cfgCheckmark{box-sizing:border-box;display:inline-block;width:100%;height:100%}.cfgCheckmark:after,.cfgCheckmark:before{box-sizing:inherit}.cfgCheckmark *{box-sizing:border-box}.cfgCheckmark :after,.cfgCheckmark :before{box-sizing:inherit}.cfgCheckmark__container{transition:transform .4s;transform:translateY(17px)}.cfgCheckmark__line{stroke:#000;stroke-linecap:round;stroke-width:12;transform-origin:50px 50px;transition:transform .4s,stroke .4s}.cfgCheckmark__lineLeft{stroke:#000;transform:rotate(40deg) translateY(24px) translateX(18px)}.cfgCheckmark__lineRight{stroke:#000;transform:rotate(-50deg) translateY(-2px) translateX(-3px)}.cfgCheckmark__border{border:.2em solid #c8c7cc;border-radius:.3em}.cfgCheckmark__border,.cfgCheckmark__border--active{align-items:center;display:flex;flex:0 0 auto;height:2.2em;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:2.2em}.cfgCheckmark__border--active{border:.2em solid #000;border-radius:.3em}.cfgChevron{box-sizing:border-box;display:inline-block;width:100%}.cfgChevron:after,.cfgChevron:before{box-sizing:inherit}.cfgChevron *{box-sizing:border-box}.cfgChevron :after,.cfgChevron :before{box-sizing:inherit}.cfgChevron__container{transition:transform .4s}.cfgChevron__container--down{transform:translateY(13px)}.cfgChevron__container--up{transform:translateY(-13px)}.cfgChevron__line{stroke-linecap:round;stroke-width:10;transform-origin:50px 50px;transition:transform .4s,stroke .4s}.cfgChevron__lineLeft--active,.cfgChevron__lineRight--active{stroke:#000}.cfgChevron__lineLeft--passive,.cfgChevron__lineRight--passive{stroke:#bababa}.cfgChevron__lineLeft--down{transform:rotate(40deg)}.cfgChevron__lineLeft--up,.cfgChevron__lineRight--down{transform:rotate(-40deg)}.cfgChevron__lineRight--up{transform:rotate(40deg)}.cfgDarkTheme .cfgButton{box-sizing:border-box;display:inline-block;background-color:transparent;color:#d6d6d6;border-radius:.3em;border:.1em solid #6a6a6a;font-size:1.3em;font-weight:500;outline:none;padding:.4em .8em}.cfgDarkTheme .cfgButton:after,.cfgDarkTheme .cfgButton:before{box-sizing:inherit}.cfgDarkTheme .cfgButton *{box-sizing:border-box}.cfgDarkTheme .cfgButton :after,.cfgDarkTheme .cfgButton :before{box-sizing:inherit}.cfgDarkTheme .cfgButton:focus{box-shadow:0 0 0 .075em #333,0 0 0 .2em #d6d6d6}.cfgDarkTheme .cfgButtonRow{box-sizing:border-box}.cfgDarkTheme .cfgButtonRow:after,.cfgDarkTheme .cfgButtonRow:before{box-sizing:inherit}.cfgDarkTheme .cfgButtonRow *{box-sizing:border-box}.cfgDarkTheme .cfgButtonRow :after,.cfgDarkTheme .cfgButtonRow :before{box-sizing:inherit}.cfgDarkTheme .cfgButtonRow__button:nth-child(n+2){margin-left:1em}.cfgDarkTheme .cfgConfigurator{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:10px;color:#d6d6d6;min-width:0}.cfgDarkTheme .cfgConfigurator:after,.cfgDarkTheme .cfgConfigurator:before{box-sizing:inherit}.cfgDarkTheme .cfgConfigurator *{box-sizing:border-box}.cfgDarkTheme .cfgConfigurator :after,.cfgDarkTheme .cfgConfigurator :before{box-sizing:inherit}.cfgDarkTheme .cfgConfiguratorHeader{border-bottom:.1em solid #5b5963;padding:1.7em 1.7em 1.9em;position:relative}.cfgDarkTheme .cfgConfiguratorHeader__actions{margin-top:1em}.cfgDarkTheme .cfgConfiguratorTree{padding-top:1em}.cfgDarkTheme .cfgCanvasWrapper{box-sizing:border-box;position:relative;height:50rem;-webkit-user-select:none;user-select:none}.cfgDarkTheme .cfgCanvasWrapper:after,.cfgDarkTheme .cfgCanvasWrapper:before{box-sizing:inherit}.cfgDarkTheme .cfgCanvasWrapper *{box-sizing:border-box}.cfgDarkTheme .cfgCanvasWrapper :after,.cfgDarkTheme .cfgCanvasWrapper :before{box-sizing:inherit}.cfgDarkTheme .cfgCanvasWrapper canvas{outline:none}.cfgDarkTheme .cfgConfiguratorWrapper{box-sizing:border-box;color:#d6d6d6;height:100%;width:100%}.cfgDarkTheme .cfgConfiguratorWrapper:after,.cfgDarkTheme .cfgConfiguratorWrapper:before{box-sizing:inherit}.cfgDarkTheme .cfgConfiguratorWrapper *{box-sizing:border-box}.cfgDarkTheme .cfgConfiguratorWrapper :after,.cfgDarkTheme .cfgConfiguratorWrapper :before{box-sizing:inherit}@media screen and (orientation:landscape){.cfgDarkTheme .cfgConfiguratorWrapper{display:flex;flex-direction:row}.cfgDarkTheme .cfgConfiguratorWrapper>.cfgConfigurator{flex:0 1 40%;height:100%}.cfgDarkTheme .cfgConfiguratorWrapper .cfgCanvasWrapper{flex:0 1 60%;height:85vh;overflow:hidden;position:sticky;top:0}}.cfgDarkTheme .cfgExpandableHeadingRow{box-sizing:border-box;-webkit-appearance:none;appearance:none;font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;padding:0;align-items:stretch;display:flex;height:3.9em;outline:0;position:relative;width:100%}.cfgDarkTheme .cfgExpandableHeadingRow:after,.cfgDarkTheme .cfgExpandableHeadingRow:before{box-sizing:inherit}.cfgDarkTheme .cfgExpandableHeadingRow *{box-sizing:border-box}.cfgDarkTheme .cfgExpandableHeadingRow :after,.cfgDarkTheme .cfgExpandableHeadingRow :before{box-sizing:inherit}.cfgDarkTheme .cfgExpandableHeadingRow--expandable{cursor:pointer}.cfgDarkTheme .cfgExpandableHeadingRow__title{align-items:center;display:flex;flex:1 1 auto;font-size:1.5em;font-weight:500;justify-content:flex-start}.cfgDarkTheme .cfgExpandableHeadingRow__icon{align-items:center;display:flex;flex:0 0 5em;justify-content:center;padding:0 1.5em}.cfgDarkTheme .cfgHr{box-sizing:border-box;border:0;border-bottom:.1em solid #5b5963;padding:0;margin:0}.cfgDarkTheme .cfgHr:after,.cfgDarkTheme .cfgHr:before{box-sizing:inherit}.cfgDarkTheme .cfgHr *{box-sizing:border-box}.cfgDarkTheme .cfgHr :after,.cfgDarkTheme .cfgHr :before{box-sizing:inherit}.cfgDarkTheme .cfgThumbnailImage{border-radius:.7em;display:inline-block;height:3em;width:3em}.cfgDarkTheme .cfgThumbnailPlaceholder{align-items:center;display:flex;flex:0 0 4.2em;justify-content:flex-start}.cfgDarkTheme .cfgFeatureItem{box-sizing:border-box;color:#d6d6d6}.cfgDarkTheme .cfgFeatureItem:after,.cfgDarkTheme .cfgFeatureItem:before{box-sizing:inherit}.cfgDarkTheme .cfgFeatureItem *{box-sizing:border-box}.cfgDarkTheme .cfgFeatureItem :after,.cfgDarkTheme .cfgFeatureItem :before{box-sizing:inherit}.cfgDarkTheme .cfgFeatureItem__dropdown{-webkit-appearance:none;appearance:none;font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;padding:0;align-items:stretch;display:flex;height:3.9em;outline:0;position:relative;width:100%;cursor:pointer}.cfgDarkTheme .cfgFeatureItem--optional{margin-top:1em}.cfgDarkTheme .cfgFeatureItem__hiddenInput{left:-99999px;opacity:0;position:absolute;z-index:-1}.cfgDarkTheme .cfgFeatureItem__radio{border:.2em solid #5b5963;border-radius:50%}.cfgDarkTheme .cfgFeatureItem__checkbox,.cfgDarkTheme .cfgFeatureItem__radio{align-items:center;display:flex;flex:0 0 auto;height:2.2em;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:2.2em}.cfgDarkTheme .cfgFeatureItem__checkbox{border:.2em solid #5b5963;border-radius:.3em}.cfgDarkTheme .cfgFeatureItem__hiddenInput:focus~.cfgFeatureItem__checkbox,.cfgDarkTheme .cfgFeatureItem__hiddenInput:focus~.cfgFeatureItem__radio{box-shadow:0 0 0 .075em #333,0 0 0 .2em #d6d6d6}.cfgDarkTheme .cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__radio{border:.2em solid #fff;border-radius:50%}.cfgDarkTheme .cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__checkbox,.cfgDarkTheme .cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__radio{align-items:center;display:flex;flex:0 0 auto;height:2.2em;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:2.2em}.cfgDarkTheme .cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__checkbox{border:.2em solid #fff;border-radius:.3em}.cfgDarkTheme .cfgFeatureItemOption__titleWrapper,.cfgDarkTheme .cfgFeatureItemOptional__titleWrapper{flex:1 1 auto;margin-left:1em}.cfgDarkTheme .cfgFeatureItemOption__title,.cfgDarkTheme .cfgFeatureItemOptional__title{font-size:1.5em}.cfgDarkTheme .cfgFeatureItemOption__price{font-weight:600;font-size:.75em;color:#999}.cfgDarkTheme .cfgOptionTree--subLevel .cfgFeatureItem__hr{display:none}.cfgDarkTheme .cfgFeatureItemOption{align-items:center;display:flex}.cfgDarkTheme .cfgFeatureItemOptional{align-items:center;display:flex;justify-content:center;margin-top:.5em}.cfgDarkTheme .cfgFeatureItemOptional__header{font-size:1.2em;font-weight:600;margin:0 0 .3em;padding:0;text-transform:uppercase}.cfgDarkTheme .cfgAdditionalProduct .cfgFeatureItem:last-child .cfgFeatureItem__hr{margin-bottom:-.1em}.cfgDarkTheme .cfgOptionTree{box-sizing:border-box;list-style:none;margin:0;padding:0}.cfgDarkTheme .cfgOptionTree:after,.cfgDarkTheme .cfgOptionTree:before{box-sizing:inherit}.cfgDarkTheme .cfgOptionTree *{box-sizing:border-box}.cfgDarkTheme .cfgOptionTree :after,.cfgDarkTheme .cfgOptionTree :before{box-sizing:inherit}.cfgDarkTheme .cfgOptionTree--topLevel{padding-left:1.7em}.cfgDarkTheme .cfgOptionTree--indent{margin-left:3.2em}.cfgDarkTheme .cfgOptionTree--compThumb{margin-left:4.2em}.cfgDarkTheme .cfgProductInfo{box-sizing:border-box;color:#d6d6d6;display:flex}.cfgDarkTheme .cfgProductInfo:after,.cfgDarkTheme .cfgProductInfo:before{box-sizing:inherit}.cfgDarkTheme .cfgProductInfo *{box-sizing:border-box}.cfgDarkTheme .cfgProductInfo :after,.cfgDarkTheme .cfgProductInfo :before{box-sizing:inherit}.cfgDarkTheme .cfgProductInfo__left{flex:1 1 auto;min-width:0;overflow:hidden}.cfgDarkTheme .cfgProductInfo__right{align-items:flex-end;display:flex;flex-direction:column;flex:1 0 auto;margin-left:1em;max-width:.333333333;min-width:0}.cfgDarkTheme .cfgProductInfo__name{display:block;font-size:1.6em;font-weight:600;line-height:1.33;margin:0}.cfgDarkTheme .cfgProductInfo__number{font-size:1.3em;font-weight:400;line-height:1.38;margin:0}.cfgDarkTheme .cfgCenteredLoading{box-sizing:border-box;align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;width:100%}.cfgDarkTheme .cfgCenteredLoading:after,.cfgDarkTheme .cfgCenteredLoading:before{box-sizing:inherit}.cfgDarkTheme .cfgCenteredLoading *{box-sizing:border-box}.cfgDarkTheme .cfgCenteredLoading :after,.cfgDarkTheme .cfgCenteredLoading :before{box-sizing:inherit}.cfgDarkTheme .cfgOverlayLoading{box-sizing:border-box;align-items:center;background-color:#333;bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:1000}.cfgDarkTheme .cfgOverlayLoading:after,.cfgDarkTheme .cfgOverlayLoading:before{box-sizing:inherit}.cfgDarkTheme .cfgOverlayLoading *{box-sizing:border-box}.cfgDarkTheme .cfgOverlayLoading :after,.cfgDarkTheme .cfgOverlayLoading :before{box-sizing:inherit}.cfgDarkTheme .cfgOverlayLoading--clickThrough{background-color:transparent;pointer-events:none}.cfgDarkTheme .cfgOverlayLoading--clickThrough .cfgLoadingWithText{padding:2em 2em 1.8em;border-radius:.8em;background-color:#333;opacity:.8;border:.1em solid hsla(0,0%,100%,.15)}.cfgDarkTheme .cfgOverlayLoading--fullWindow{position:fixed;z-index:1001}.cfgDarkTheme .cfgLoadingWithText{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;text-align:center}.cfgDarkTheme .cfgLoadingWithText:after,.cfgDarkTheme .cfgLoadingWithText:before{box-sizing:inherit}.cfgDarkTheme .cfgLoadingWithText *{box-sizing:border-box}.cfgDarkTheme .cfgLoadingWithText :after,.cfgDarkTheme .cfgLoadingWithText :before{box-sizing:inherit}.cfgDarkTheme .cfgLoadingWithText__text{color:#fff;font-weight:600;margin-top:.5em;font-size:1.6em}.cfgDarkTheme .cfgLoading{box-sizing:border-box;animation:rotate 1.1s linear 0s infinite;border-radius:100%;border:.5em solid hsla(0,0%,100%,.15);border-bottom-color:#fff;display:inline-block;height:3em;width:3em}.cfgDarkTheme .cfgLoading:after,.cfgDarkTheme .cfgLoading:before{box-sizing:inherit}.cfgDarkTheme .cfgLoading *{box-sizing:border-box}.cfgDarkTheme .cfgLoading :after,.cfgDarkTheme .cfgLoading :before{box-sizing:inherit}.cfgDarkTheme .cfgLoading--small{border-width:.4em;height:2em;width:2em}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.cfgDarkTheme .cfgSlider{box-sizing:border-box;flex:1;margin:0;padding:0;min-height:2.8em;background:transparent;font:inherit}.cfgDarkTheme .cfgSlider:after,.cfgDarkTheme .cfgSlider:before{box-sizing:inherit}.cfgDarkTheme .cfgSlider *{box-sizing:border-box}.cfgDarkTheme .cfgSlider :after,.cfgDarkTheme .cfgSlider :before{box-sizing:inherit}.cfgDarkTheme .cfgSlider,.cfgDarkTheme .cfgSlider::-webkit-slider-thumb{-webkit-appearance:none}.cfgDarkTheme .cfgSlider::-webkit-slider-runnable-track{box-sizing:border-box;border:none;height:.2em;background:#adadad}.cfgDarkTheme .cfgSlider::-moz-range-track{box-sizing:border-box;border:none;height:.2em;background:#adadad}.cfgDarkTheme .cfgSlider::-ms-track{box-sizing:border-box;border:none;height:.2em;background:#adadad}.cfgDarkTheme .cfgSlider::-webkit-slider-thumb{margin-top:-1.3em;box-sizing:border-box;border:none;width:2.8em;height:2.8em;border-radius:50%;background:#333;box-shadow:0 .15em .45em .05em #adadad}.cfgDarkTheme .cfgSlider::-moz-range-thumb{box-sizing:border-box;border:none;width:2.8em;height:2.8em;border-radius:50%;background:#333;box-shadow:0 .15em .45em .05em #adadad}.cfgDarkTheme .cfgSlider::-ms-thumb{margin-top:0;box-sizing:border-box;border:none;width:2.8em;height:2.8em;border-radius:50%;background:#333;box-shadow:0 .15em .45em .05em #adadad}.cfgDarkTheme .cfgSlider::-ms-tooltip{display:none}.cfgDarkTheme .cfgCheckmark{box-sizing:border-box;display:inline-block;width:100%;height:100%}.cfgDarkTheme .cfgCheckmark:after,.cfgDarkTheme .cfgCheckmark:before{box-sizing:inherit}.cfgDarkTheme .cfgCheckmark *{box-sizing:border-box}.cfgDarkTheme .cfgCheckmark :after,.cfgDarkTheme .cfgCheckmark :before{box-sizing:inherit}.cfgDarkTheme .cfgCheckmark__container{transition:transform .4s;transform:translateY(17px)}.cfgDarkTheme .cfgCheckmark__line{stroke:#fff;stroke-linecap:round;stroke-width:12;transform-origin:50px 50px;transition:transform .4s,stroke .4s}.cfgDarkTheme .cfgCheckmark__lineLeft{stroke:#fff;transform:rotate(40deg) translateY(24px) translateX(18px)}.cfgDarkTheme .cfgCheckmark__lineRight{stroke:#fff;transform:rotate(-50deg) translateY(-2px) translateX(-3px)}.cfgDarkTheme .cfgCheckmark__border{border:.2em solid #5b5963;border-radius:.3em}.cfgDarkTheme .cfgCheckmark__border,.cfgDarkTheme .cfgCheckmark__border--active{align-items:center;display:flex;flex:0 0 auto;height:2.2em;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:2.2em}.cfgDarkTheme .cfgCheckmark__border--active{border:.2em solid #fff;border-radius:.3em}.cfgDarkTheme .cfgChevron{box-sizing:border-box;display:inline-block;width:100%}.cfgDarkTheme .cfgChevron:after,.cfgDarkTheme .cfgChevron:before{box-sizing:inherit}.cfgDarkTheme .cfgChevron *{box-sizing:border-box}.cfgDarkTheme .cfgChevron :after,.cfgDarkTheme .cfgChevron :before{box-sizing:inherit}.cfgDarkTheme .cfgChevron__container{transition:transform .4s}.cfgDarkTheme .cfgChevron__container--down{transform:translateY(13px)}.cfgDarkTheme .cfgChevron__container--up{transform:translateY(-13px)}.cfgDarkTheme .cfgChevron__line{stroke-linecap:round;stroke-width:10;transform-origin:50px 50px;transition:transform .4s,stroke .4s}.cfgDarkTheme .cfgChevron__lineLeft--active,.cfgDarkTheme .cfgChevron__lineRight--active{stroke:#fff}.cfgDarkTheme .cfgChevron__lineLeft--passive,.cfgDarkTheme .cfgChevron__lineRight--passive{stroke:#6a6a6a}.cfgDarkTheme .cfgChevron__lineLeft--down{transform:rotate(40deg)}.cfgDarkTheme .cfgChevron__lineLeft--up,.cfgDarkTheme .cfgChevron__lineRight--down{transform:rotate(-40deg)}.cfgDarkTheme .cfgChevron__lineRight--up{transform:rotate(40deg)}
|
|
1
|
+
.cfgMl1{margin-left:1em}.cfgMt1{margin-top:1em}.cfgMb1{margin-bottom:1em}.cfgTextOverflow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}a{color:#005cb3}.cfgButton{box-sizing:border-box;display:inline-block;background-color:transparent;color:#333;border-radius:.3em;border:.1em solid #bababa;font-size:1.3em;font-weight:500;outline:none;padding:.4em .8em}.cfgButton:after,.cfgButton:before{box-sizing:inherit}.cfgButton *{box-sizing:border-box}.cfgButton :after,.cfgButton :before{box-sizing:inherit}.cfgButton:focus{box-shadow:0 0 0 .075em #fff,0 0 0 .2em #333}.cfgButtonRow{box-sizing:border-box}.cfgButtonRow:after,.cfgButtonRow:before{box-sizing:inherit}.cfgButtonRow *{box-sizing:border-box}.cfgButtonRow :after,.cfgButtonRow :before{box-sizing:inherit}.cfgButtonRow__button:nth-child(n+2){margin-left:1em}.cfgCheckmark{box-sizing:border-box;display:inline-block;width:100%;height:100%}.cfgCheckmark:after,.cfgCheckmark:before{box-sizing:inherit}.cfgCheckmark *{box-sizing:border-box}.cfgCheckmark :after,.cfgCheckmark :before{box-sizing:inherit}.cfgCheckmark__container{transition:transform .4s;transform:translateY(17px)}.cfgCheckmark__line{stroke:#000;stroke-linecap:round;stroke-width:12;transform-origin:50px 50px;transition:transform .4s,stroke .4s}.cfgCheckmark__lineLeft{stroke:#000;transform:rotate(40deg) translateY(24px) translateX(18px)}.cfgCheckmark__lineRight{stroke:#000;transform:rotate(-50deg) translateY(-2px) translateX(-3px)}.cfgCheckmark__border{border:.2em solid #c8c7cc;border-radius:.3em}.cfgCheckmark__border,.cfgCheckmark__border--active{align-items:center;display:flex;flex:0 0 auto;height:2.2em;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:2.2em}.cfgCheckmark__border--active{border:.2em solid #000;border-radius:.3em}.cfgChevron{box-sizing:border-box;display:inline-block;width:100%}.cfgChevron:after,.cfgChevron:before{box-sizing:inherit}.cfgChevron *{box-sizing:border-box}.cfgChevron :after,.cfgChevron :before{box-sizing:inherit}.cfgChevron__container{transition:transform .4s}.cfgChevron__container--down{transform:translateY(13px)}.cfgChevron__container--up{transform:translateY(-13px)}.cfgChevron__line{stroke-linecap:round;stroke-width:10;transform-origin:50px 50px;transition:transform .4s,stroke .4s}.cfgChevron__lineLeft--active,.cfgChevron__lineRight--active{stroke:#000}.cfgChevron__lineLeft--passive,.cfgChevron__lineRight--passive{stroke:#bababa}.cfgChevron__lineLeft--down{transform:rotate(40deg)}.cfgChevron__lineLeft--up,.cfgChevron__lineRight--down{transform:rotate(-40deg)}.cfgChevron__lineRight--up{transform:rotate(40deg)}.cfgCircleXmarkIcon{box-sizing:border-box;display:inline-block;width:100%;height:100%}.cfgCircleXmarkIcon:after,.cfgCircleXmarkIcon:before{box-sizing:inherit}.cfgCircleXmarkIcon *{box-sizing:border-box}.cfgCircleXmarkIcon :after,.cfgCircleXmarkIcon :before{box-sizing:inherit}.cfgCircleXmarkIcon circle,.cfgCircleXmarkIcon path{stroke:#7c7986;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}.cfgConfiguratorWrapper{box-sizing:border-box;color:#333;display:flex;height:85vh;flex-direction:column}.cfgConfiguratorWrapper:after,.cfgConfiguratorWrapper:before{box-sizing:inherit}.cfgConfiguratorWrapper *{box-sizing:border-box}.cfgConfiguratorWrapper :after,.cfgConfiguratorWrapper :before{box-sizing:inherit}@media screen and (orientation:landscape){.cfgConfiguratorWrapper{flex-direction:row}}.cfgConfiguratorWrapper .cfgTaskStart{margin-top:.5em;font-size:1.2em;font-weight:500}.cfgConfiguratorWrapper .cfgTaskStart .cfgFormSelect{padding:.5em}.cfgConfiguratorWrapper .cfgTaskStart .cfgFormSelect:after{right:.5em}.cfgCanvasWrapper{box-sizing:border-box;position:relative;height:50rem;-webkit-user-select:none;user-select:none;flex:1 1 auto;overflow:hidden}.cfgCanvasWrapper:after,.cfgCanvasWrapper:before{box-sizing:inherit}.cfgCanvasWrapper *{box-sizing:border-box}.cfgCanvasWrapper :after,.cfgCanvasWrapper :before{box-sizing:inherit}.cfgCanvasWrapper canvas{outline:none}@media screen and (orientation:landscape){.cfgCanvasWrapper{height:100%;flex:0 1 60%}}.cfgConfigurator{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:10px;color:#333;min-width:0;height:100%;display:flex;flex-direction:column;flex:0 0 50%;overflow:auto}.cfgConfigurator:after,.cfgConfigurator:before{box-sizing:inherit}.cfgConfigurator *{box-sizing:border-box}.cfgConfigurator :after,.cfgConfigurator :before{box-sizing:inherit}@media screen and (orientation:landscape){.cfgConfigurator{height:100%;flex:0 1 40%}}.cfgConfiguratorHeader{border-bottom:.1em solid #c8c7cc;padding:1.7em 1.7em 1.9em;position:relative}.cfgConfiguratorHeader__actions{margin-top:1em}.cfgConfiguratorTree{padding-top:1em;overflow-y:auto;-webkit-overflow-scrolling:touch}.cfgDownloadIcon{box-sizing:border-box;display:inline-block;width:100%;height:100%}.cfgDownloadIcon:after,.cfgDownloadIcon:before{box-sizing:inherit}.cfgDownloadIcon *{box-sizing:border-box}.cfgDownloadIcon :after,.cfgDownloadIcon :before{box-sizing:inherit}.cfgDownloadIcon circle,.cfgDownloadIcon path{stroke:#005cb3;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}.cfgExpandableHeadingRow{box-sizing:border-box;-webkit-appearance:none;appearance:none;font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;padding:0;align-items:stretch;display:flex;height:3.9em;outline:0;position:relative;width:100%}.cfgExpandableHeadingRow:after,.cfgExpandableHeadingRow:before{box-sizing:inherit}.cfgExpandableHeadingRow *{box-sizing:border-box}.cfgExpandableHeadingRow :after,.cfgExpandableHeadingRow :before{box-sizing:inherit}.cfgExpandableHeadingRow--expandable{cursor:pointer}.cfgExpandableHeadingRow__title{align-items:center;display:flex;flex:1 1 auto;font-size:1.5em;font-weight:500;justify-content:flex-start}.cfgExpandableHeadingRow__icon{align-items:center;display:flex;flex:0 0 5em;justify-content:center;padding:0 1.5em}.cfgErrorIcon{box-sizing:border-box;display:inline-block;width:100%;height:100%}.cfgErrorIcon:after,.cfgErrorIcon:before{box-sizing:inherit}.cfgErrorIcon *{box-sizing:border-box}.cfgErrorIcon :after,.cfgErrorIcon :before{box-sizing:inherit}.cfgErrorIcon circle,.cfgErrorIcon path{stroke:#b4361d;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}.cfgThumbnailImage{border-radius:.7em;display:inline-block;height:3em;width:3em}.cfgThumbnailPlaceholder{align-items:center;display:flex;flex:0 0 4.2em;justify-content:flex-start}.cfgFeatureItem{box-sizing:border-box;color:#333}.cfgFeatureItem:after,.cfgFeatureItem:before{box-sizing:inherit}.cfgFeatureItem *{box-sizing:border-box}.cfgFeatureItem :after,.cfgFeatureItem :before{box-sizing:inherit}.cfgFeatureItem__dropdown{-webkit-appearance:none;appearance:none;font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;padding:0;align-items:stretch;display:flex;height:3.9em;outline:0;position:relative;width:100%;cursor:pointer}.cfgFeatureItem--optional{margin-top:1em}.cfgFeatureItem__hiddenInput{left:-99999px;opacity:0;position:absolute;z-index:-1}.cfgFeatureItem__radio{border:.2em solid #c8c7cc;border-radius:50%}.cfgFeatureItem__checkbox,.cfgFeatureItem__radio{align-items:center;display:flex;flex:0 0 auto;height:2.2em;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:2.2em}.cfgFeatureItem__checkbox{border:.2em solid #c8c7cc;border-radius:.3em}.cfgFeatureItem__hiddenInput:focus~.cfgFeatureItem__checkbox,.cfgFeatureItem__hiddenInput:focus~.cfgFeatureItem__radio{box-shadow:0 0 0 .075em #fff,0 0 0 .2em #333}.cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__radio{border:.2em solid #000;border-radius:50%}.cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__checkbox,.cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__radio{align-items:center;display:flex;flex:0 0 auto;height:2.2em;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:2.2em}.cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__checkbox{border:.2em solid #000;border-radius:.3em}.cfgFeatureItem.cfgAdditionalProduct>.cfgExpandableHeadingRow>.cfgExpandableHeadingRow__title{font-weight:600}.cfgFeatureItem.cfgAdditionalProduct>.cfgFeatureItem__hr{border-bottom-color:#bababa}.cfgFeatureItem.cfgAdditionalProduct .cfgFeatureItem:last-child .cfgFeatureItem__hr{margin-bottom:-.1em}.cfgFeatureItemOption__titleWrapper,.cfgFeatureItemOptional__titleWrapper{flex:1 1 auto;margin-left:1em}.cfgFeatureItemOption__title,.cfgFeatureItemOptional__title{font-size:1.5em}.cfgFeatureItemOption__price{font-weight:600;font-size:.75em;color:grey}.cfgOptionTree--subLevel .cfgFeatureItem__hr{display:none}.cfgFeatureItemOption,.cfgFeatureItemOptional{align-items:center;display:flex}.cfgFeatureItemOptional{justify-content:center;margin-top:.5em}.cfgFeatureItemOptional__header{font-size:1.2em;font-weight:600;margin:0 0 .3em;padding:0;text-transform:uppercase}.cfgFormSelect,.cfgInput{border:.1em solid #bababa;padding:.3em .4em;border-radius:.3em}.cfgFormSelect{cursor:pointer;position:relative}.cfgFormSelect select{-webkit-appearance:none;appearance:none;padding:0 1em 0 0;margin:0;width:100%;background-color:transparent;font-family:inherit;font-size:inherit;font-weight:inherit;cursor:inherit;line-height:inherit;outline:none;border:none}.cfgFormSelect:after{position:absolute;right:.35em;top:50%;margin-top:-.55em;content:"";width:1em;height:1em;background-color:#bababa;-webkit-clip-path:polygon(50% 80%,90% 40%,100% 50%,50% 100%,0 50%,10% 40%);clip-path:polygon(50% 80%,90% 40%,100% 50%,50% 100%,0 50%,10% 40%);justify-self:end}.cfgHr{box-sizing:border-box;border:0;border-bottom:.1em solid #c8c7cc;padding:0;margin:0}.cfgHr:after,.cfgHr:before{box-sizing:inherit}.cfgHr *{box-sizing:border-box}.cfgHr :after,.cfgHr :before{box-sizing:inherit}.cfgCenteredLoading{box-sizing:border-box;align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;width:100%}.cfgCenteredLoading:after,.cfgCenteredLoading:before{box-sizing:inherit}.cfgCenteredLoading *{box-sizing:border-box}.cfgCenteredLoading :after,.cfgCenteredLoading :before{box-sizing:inherit}.cfgOverlayLoading{box-sizing:border-box;align-items:center;background-color:#fff;bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:1000}.cfgOverlayLoading:after,.cfgOverlayLoading:before{box-sizing:inherit}.cfgOverlayLoading *{box-sizing:border-box}.cfgOverlayLoading :after,.cfgOverlayLoading :before{box-sizing:inherit}.cfgOverlayLoading--clickThrough{background-color:transparent;pointer-events:none}.cfgOverlayLoading--clickThrough .cfgLoadingWithText{padding:2em 2em 1.8em;border-radius:.8em;background-color:#fff;opacity:.8;border:.1em solid rgba(0,0,0,.15)}.cfgOverlayLoading--fullWindow{position:fixed;z-index:1001}.cfgLoadingWithText{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;text-align:center}.cfgLoadingWithText:after,.cfgLoadingWithText:before{box-sizing:inherit}.cfgLoadingWithText *{box-sizing:border-box}.cfgLoadingWithText :after,.cfgLoadingWithText :before{box-sizing:inherit}.cfgLoadingWithText__text{color:#000;font-weight:600;margin-top:.5em;font-size:1.6em}.cfgLoading{box-sizing:border-box;animation:rotate 1.1s linear 0s infinite;border-radius:100%;border:.5em solid rgba(0,0,0,.15);border-bottom-color:#000;display:inline-block;height:3em;width:3em}.cfgLoading:after,.cfgLoading:before{box-sizing:inherit}.cfgLoading *{box-sizing:border-box}.cfgLoading :after,.cfgLoading :before{box-sizing:inherit}.cfgLoading--small{border-width:.4em;height:2em;width:2em}.cfgOptionTree{box-sizing:border-box;list-style:none;margin:0;padding:0}.cfgOptionTree:after,.cfgOptionTree:before{box-sizing:inherit}.cfgOptionTree *{box-sizing:border-box}.cfgOptionTree :after,.cfgOptionTree :before{box-sizing:inherit}.cfgOptionTree--topLevel{padding-left:1.7em}.cfgOptionTree--indent{margin-left:3.2em}.cfgOptionTree--compThumb{margin-left:4.2em}.cfgProductInfo{box-sizing:border-box;color:#333;display:flex}.cfgProductInfo:after,.cfgProductInfo:before{box-sizing:inherit}.cfgProductInfo *{box-sizing:border-box}.cfgProductInfo :after,.cfgProductInfo :before{box-sizing:inherit}.cfgProductInfo__left{flex:1 1 auto;min-width:0;overflow:hidden}.cfgProductInfo__right{align-items:flex-end;display:flex;flex-direction:column;flex:1 0 auto;margin-left:1em;max-width:.333333333;min-width:0}.cfgProductInfo__name{display:block;font-size:1.6em;font-weight:600;line-height:1.33;margin:0}.cfgProductInfo__number{font-size:1.3em;font-weight:400;line-height:1.38;margin:0}.cfgRangeView__inputs{display:flex;align-items:center}.cfgRangeView__number-input{font-size:1.5em;flex-grow:1;text-align:right}.cfgRangeView__unit-label{font-size:1.5em;margin-left:.3em}.cfgRangeView__slider-input.cfgSlider{margin-left:1em;flex-grow:3}.cfgRangeView__error{display:flex;align-items:center;margin-top:1em;font-size:1.5em;color:#b4361d}.cfgRangeView__error .cfgErrorIcon{padding-right:.25em;width:1.25em;height:1em}.cfgSlider{box-sizing:border-box;flex:1;margin:0;padding:0;min-height:2.8em;background:transparent;font:inherit}.cfgSlider:after,.cfgSlider:before{box-sizing:inherit}.cfgSlider *{box-sizing:border-box}.cfgSlider :after,.cfgSlider :before{box-sizing:inherit}.cfgSlider,.cfgSlider::-webkit-slider-thumb{-webkit-appearance:none}.cfgSlider::-webkit-slider-runnable-track{box-sizing:border-box;border:none;height:.2em;background:#666}.cfgSlider::-moz-range-track{box-sizing:border-box;border:none;height:.2em;background:#666}.cfgSlider::-ms-track{box-sizing:border-box;border:none;height:.2em;background:#666}.cfgSlider::-webkit-slider-thumb{margin-top:-1.3em;box-sizing:border-box;border:none;width:2.8em;height:2.8em;border-radius:50%;background:#fff;box-shadow:0 .15em .45em .05em #666}.cfgSlider::-moz-range-thumb{box-sizing:border-box;border:none;width:2.8em;height:2.8em;border-radius:50%;background:#fff;box-shadow:0 .15em .45em .05em #666}.cfgSlider::-ms-thumb{margin-top:0;box-sizing:border-box;border:none;width:2.8em;height:2.8em;border-radius:50%;background:#fff;box-shadow:0 .15em .45em .05em #666}.cfgSlider::-ms-tooltip{display:none}.cfgTaskList ul{list-style-type:none;padding:0;border-bottom:.1em solid #c8c7cc}.cfgTaskList__item{padding:0 1.5em 0 1.7em;margin-bottom:1em;display:flex;align-items:center}.cfgTaskList__preview{border:.1em solid #c8c7cc;border-radius:10%;width:4.8em;height:4.8em;flex-shrink:0}.cfgTaskList__preview img{object-fit:cover;position:relative;left:.38em;top:.38em;width:3.84em;height:3.84em}.cfgTaskList__icon{flex-shrink:0;width:4em;height:2em;padding-left:1em;padding-right:1em}.cfgTaskList__icon .cfgLoadingSizer{font-size:.75em}.cfgTaskList__status{flex-grow:1;font-size:1.5em}.cfgTaskList__abort{color:inherit;width:2em;height:2em;flex-shrink:0}.cfgTaskList__abort,.cfgTaskList__restart{-webkit-appearance:none;appearance:none;font-family:inherit;font-size:inherit;background:none;border:none;padding:0;cursor:pointer}.cfgTaskList__restart{color:inherit;text-decoration:underline;color:#005cb3}.cfgDarkTheme a{color:#70baff}.cfgDarkTheme .cfgButton{box-sizing:border-box;display:inline-block;background-color:transparent;color:#d6d6d6;border-radius:.3em;border:.1em solid #6a6a6a;font-size:1.3em;font-weight:500;outline:none;padding:.4em .8em}.cfgDarkTheme .cfgButton:after,.cfgDarkTheme .cfgButton:before{box-sizing:inherit}.cfgDarkTheme .cfgButton *{box-sizing:border-box}.cfgDarkTheme .cfgButton :after,.cfgDarkTheme .cfgButton :before{box-sizing:inherit}.cfgDarkTheme .cfgButton:focus{box-shadow:0 0 0 .075em #333,0 0 0 .2em #d6d6d6}.cfgDarkTheme .cfgButtonRow{box-sizing:border-box}.cfgDarkTheme .cfgButtonRow:after,.cfgDarkTheme .cfgButtonRow:before{box-sizing:inherit}.cfgDarkTheme .cfgButtonRow *{box-sizing:border-box}.cfgDarkTheme .cfgButtonRow :after,.cfgDarkTheme .cfgButtonRow :before{box-sizing:inherit}.cfgDarkTheme .cfgButtonRow__button:nth-child(n+2){margin-left:1em}.cfgDarkTheme .cfgCheckmark{box-sizing:border-box;display:inline-block;width:100%;height:100%}.cfgDarkTheme .cfgCheckmark:after,.cfgDarkTheme .cfgCheckmark:before{box-sizing:inherit}.cfgDarkTheme .cfgCheckmark *{box-sizing:border-box}.cfgDarkTheme .cfgCheckmark :after,.cfgDarkTheme .cfgCheckmark :before{box-sizing:inherit}.cfgDarkTheme .cfgCheckmark__container{transition:transform .4s;transform:translateY(17px)}.cfgDarkTheme .cfgCheckmark__line{stroke:#fff;stroke-linecap:round;stroke-width:12;transform-origin:50px 50px;transition:transform .4s,stroke .4s}.cfgDarkTheme .cfgCheckmark__lineLeft{stroke:#fff;transform:rotate(40deg) translateY(24px) translateX(18px)}.cfgDarkTheme .cfgCheckmark__lineRight{stroke:#fff;transform:rotate(-50deg) translateY(-2px) translateX(-3px)}.cfgDarkTheme .cfgCheckmark__border{border:.2em solid #5b5963;border-radius:.3em}.cfgDarkTheme .cfgCheckmark__border,.cfgDarkTheme .cfgCheckmark__border--active{align-items:center;display:flex;flex:0 0 auto;height:2.2em;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:2.2em}.cfgDarkTheme .cfgCheckmark__border--active{border:.2em solid #fff;border-radius:.3em}.cfgDarkTheme .cfgChevron{box-sizing:border-box;display:inline-block;width:100%}.cfgDarkTheme .cfgChevron:after,.cfgDarkTheme .cfgChevron:before{box-sizing:inherit}.cfgDarkTheme .cfgChevron *{box-sizing:border-box}.cfgDarkTheme .cfgChevron :after,.cfgDarkTheme .cfgChevron :before{box-sizing:inherit}.cfgDarkTheme .cfgChevron__container{transition:transform .4s}.cfgDarkTheme .cfgChevron__container--down{transform:translateY(13px)}.cfgDarkTheme .cfgChevron__container--up{transform:translateY(-13px)}.cfgDarkTheme .cfgChevron__line{stroke-linecap:round;stroke-width:10;transform-origin:50px 50px;transition:transform .4s,stroke .4s}.cfgDarkTheme .cfgChevron__lineLeft--active,.cfgDarkTheme .cfgChevron__lineRight--active{stroke:#fff}.cfgDarkTheme .cfgChevron__lineLeft--passive,.cfgDarkTheme .cfgChevron__lineRight--passive{stroke:#6a6a6a}.cfgDarkTheme .cfgChevron__lineLeft--down{transform:rotate(40deg)}.cfgDarkTheme .cfgChevron__lineLeft--up,.cfgDarkTheme .cfgChevron__lineRight--down{transform:rotate(-40deg)}.cfgDarkTheme .cfgChevron__lineRight--up{transform:rotate(40deg)}.cfgDarkTheme .cfgCircleXmarkIcon{box-sizing:border-box;display:inline-block;width:100%;height:100%}.cfgDarkTheme .cfgCircleXmarkIcon:after,.cfgDarkTheme .cfgCircleXmarkIcon:before{box-sizing:inherit}.cfgDarkTheme .cfgCircleXmarkIcon *{box-sizing:border-box}.cfgDarkTheme .cfgCircleXmarkIcon :after,.cfgDarkTheme .cfgCircleXmarkIcon :before{box-sizing:inherit}.cfgDarkTheme .cfgCircleXmarkIcon circle,.cfgDarkTheme .cfgCircleXmarkIcon path{stroke:#96949e;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}.cfgDarkTheme .cfgConfiguratorWrapper{box-sizing:border-box;color:#d6d6d6;display:flex;height:85vh;flex-direction:column}.cfgDarkTheme .cfgConfiguratorWrapper:after,.cfgDarkTheme .cfgConfiguratorWrapper:before{box-sizing:inherit}.cfgDarkTheme .cfgConfiguratorWrapper *{box-sizing:border-box}.cfgDarkTheme .cfgConfiguratorWrapper :after,.cfgDarkTheme .cfgConfiguratorWrapper :before{box-sizing:inherit}@media screen and (orientation:landscape){.cfgDarkTheme .cfgConfiguratorWrapper{flex-direction:row}}.cfgDarkTheme .cfgConfiguratorWrapper .cfgTaskStart{margin-top:.5em;font-size:1.2em;font-weight:500}.cfgDarkTheme .cfgConfiguratorWrapper .cfgTaskStart .cfgFormSelect{padding:.5em}.cfgDarkTheme .cfgConfiguratorWrapper .cfgTaskStart .cfgFormSelect:after{right:.5em}.cfgDarkTheme .cfgCanvasWrapper{box-sizing:border-box;position:relative;height:50rem;-webkit-user-select:none;user-select:none;flex:1 1 auto;overflow:hidden}.cfgDarkTheme .cfgCanvasWrapper:after,.cfgDarkTheme .cfgCanvasWrapper:before{box-sizing:inherit}.cfgDarkTheme .cfgCanvasWrapper *{box-sizing:border-box}.cfgDarkTheme .cfgCanvasWrapper :after,.cfgDarkTheme .cfgCanvasWrapper :before{box-sizing:inherit}.cfgDarkTheme .cfgCanvasWrapper canvas{outline:none}@media screen and (orientation:landscape){.cfgDarkTheme .cfgCanvasWrapper{height:100%;flex:0 1 60%}}.cfgDarkTheme .cfgConfigurator{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;font-size:10px;color:#d6d6d6;min-width:0;height:100%;display:flex;flex-direction:column;flex:0 0 50%;overflow:auto}.cfgDarkTheme .cfgConfigurator:after,.cfgDarkTheme .cfgConfigurator:before{box-sizing:inherit}.cfgDarkTheme .cfgConfigurator *{box-sizing:border-box}.cfgDarkTheme .cfgConfigurator :after,.cfgDarkTheme .cfgConfigurator :before{box-sizing:inherit}@media screen and (orientation:landscape){.cfgDarkTheme .cfgConfigurator{height:100%;flex:0 1 40%}}.cfgDarkTheme .cfgConfiguratorHeader{border-bottom:.1em solid #5b5963;padding:1.7em 1.7em 1.9em;position:relative}.cfgDarkTheme .cfgConfiguratorHeader__actions{margin-top:1em}.cfgDarkTheme .cfgConfiguratorTree{padding-top:1em;overflow-y:auto;-webkit-overflow-scrolling:touch}.cfgDarkTheme .cfgDownloadIcon{box-sizing:border-box;display:inline-block;width:100%;height:100%}.cfgDarkTheme .cfgDownloadIcon:after,.cfgDarkTheme .cfgDownloadIcon:before{box-sizing:inherit}.cfgDarkTheme .cfgDownloadIcon *{box-sizing:border-box}.cfgDarkTheme .cfgDownloadIcon :after,.cfgDarkTheme .cfgDownloadIcon :before{box-sizing:inherit}.cfgDarkTheme .cfgDownloadIcon circle,.cfgDarkTheme .cfgDownloadIcon path{stroke:#70baff;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}.cfgDarkTheme .cfgExpandableHeadingRow{box-sizing:border-box;-webkit-appearance:none;appearance:none;font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;padding:0;align-items:stretch;display:flex;height:3.9em;outline:0;position:relative;width:100%}.cfgDarkTheme .cfgExpandableHeadingRow:after,.cfgDarkTheme .cfgExpandableHeadingRow:before{box-sizing:inherit}.cfgDarkTheme .cfgExpandableHeadingRow *{box-sizing:border-box}.cfgDarkTheme .cfgExpandableHeadingRow :after,.cfgDarkTheme .cfgExpandableHeadingRow :before{box-sizing:inherit}.cfgDarkTheme .cfgExpandableHeadingRow--expandable{cursor:pointer}.cfgDarkTheme .cfgExpandableHeadingRow__title{align-items:center;display:flex;flex:1 1 auto;font-size:1.5em;font-weight:500;justify-content:flex-start}.cfgDarkTheme .cfgExpandableHeadingRow__icon{align-items:center;display:flex;flex:0 0 5em;justify-content:center;padding:0 1.5em}.cfgDarkTheme .cfgErrorIcon{box-sizing:border-box;display:inline-block;width:100%;height:100%}.cfgDarkTheme .cfgErrorIcon:after,.cfgDarkTheme .cfgErrorIcon:before{box-sizing:inherit}.cfgDarkTheme .cfgErrorIcon *{box-sizing:border-box}.cfgDarkTheme .cfgErrorIcon :after,.cfgDarkTheme .cfgErrorIcon :before{box-sizing:inherit}.cfgDarkTheme .cfgErrorIcon circle,.cfgDarkTheme .cfgErrorIcon path{stroke:#e8836f;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}.cfgDarkTheme .cfgThumbnailImage{border-radius:.7em;display:inline-block;height:3em;width:3em}.cfgDarkTheme .cfgThumbnailPlaceholder{align-items:center;display:flex;flex:0 0 4.2em;justify-content:flex-start}.cfgDarkTheme .cfgFeatureItem{box-sizing:border-box;color:#d6d6d6}.cfgDarkTheme .cfgFeatureItem:after,.cfgDarkTheme .cfgFeatureItem:before{box-sizing:inherit}.cfgDarkTheme .cfgFeatureItem *{box-sizing:border-box}.cfgDarkTheme .cfgFeatureItem :after,.cfgDarkTheme .cfgFeatureItem :before{box-sizing:inherit}.cfgDarkTheme .cfgFeatureItem__dropdown{-webkit-appearance:none;appearance:none;font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;padding:0;align-items:stretch;display:flex;height:3.9em;outline:0;position:relative;width:100%;cursor:pointer}.cfgDarkTheme .cfgFeatureItem--optional{margin-top:1em}.cfgDarkTheme .cfgFeatureItem__hiddenInput{left:-99999px;opacity:0;position:absolute;z-index:-1}.cfgDarkTheme .cfgFeatureItem__radio{border:.2em solid #5b5963;border-radius:50%}.cfgDarkTheme .cfgFeatureItem__checkbox,.cfgDarkTheme .cfgFeatureItem__radio{align-items:center;display:flex;flex:0 0 auto;height:2.2em;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:2.2em}.cfgDarkTheme .cfgFeatureItem__checkbox{border:.2em solid #5b5963;border-radius:.3em}.cfgDarkTheme .cfgFeatureItem__hiddenInput:focus~.cfgFeatureItem__checkbox,.cfgDarkTheme .cfgFeatureItem__hiddenInput:focus~.cfgFeatureItem__radio{box-shadow:0 0 0 .075em #333,0 0 0 .2em #d6d6d6}.cfgDarkTheme .cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__radio{border:.2em solid #fff;border-radius:50%}.cfgDarkTheme .cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__checkbox,.cfgDarkTheme .cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__radio{align-items:center;display:flex;flex:0 0 auto;height:2.2em;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;width:2.2em}.cfgDarkTheme .cfgFeatureItem__hiddenInput:checked~.cfgFeatureItem__checkbox{border:.2em solid #fff;border-radius:.3em}.cfgDarkTheme .cfgFeatureItem.cfgAdditionalProduct>.cfgExpandableHeadingRow>.cfgExpandableHeadingRow__title{font-weight:600}.cfgDarkTheme .cfgFeatureItem.cfgAdditionalProduct>.cfgFeatureItem__hr{border-bottom-color:#6a6a6a}.cfgDarkTheme .cfgFeatureItem.cfgAdditionalProduct .cfgFeatureItem:last-child .cfgFeatureItem__hr{margin-bottom:-.1em}.cfgDarkTheme .cfgFeatureItemOption__titleWrapper,.cfgDarkTheme .cfgFeatureItemOptional__titleWrapper{flex:1 1 auto;margin-left:1em}.cfgDarkTheme .cfgFeatureItemOption__title,.cfgDarkTheme .cfgFeatureItemOptional__title{font-size:1.5em}.cfgDarkTheme .cfgFeatureItemOption__price{font-weight:600;font-size:.75em;color:#999}.cfgDarkTheme .cfgOptionTree--subLevel .cfgFeatureItem__hr{display:none}.cfgDarkTheme .cfgFeatureItemOption{align-items:center;display:flex}.cfgDarkTheme .cfgFeatureItemOptional{align-items:center;display:flex;justify-content:center;margin-top:.5em}.cfgDarkTheme .cfgFeatureItemOptional__header{font-size:1.2em;font-weight:600;margin:0 0 .3em;padding:0;text-transform:uppercase}.cfgDarkTheme .cfgFormSelect,.cfgDarkTheme .cfgInput{border:.1em solid #6a6a6a;padding:.3em .4em;border-radius:.3em}.cfgDarkTheme .cfgFormSelect{cursor:pointer;position:relative}.cfgDarkTheme .cfgFormSelect select{-webkit-appearance:none;appearance:none;padding:0 1em 0 0;margin:0;width:100%;background-color:transparent;font-family:inherit;font-size:inherit;font-weight:inherit;cursor:inherit;line-height:inherit;outline:none;border:none}.cfgDarkTheme .cfgFormSelect:after{position:absolute;right:.35em;top:50%;margin-top:-.55em;content:"";width:1em;height:1em;background-color:#6a6a6a;-webkit-clip-path:polygon(50% 80%,90% 40%,100% 50%,50% 100%,0 50%,10% 40%);clip-path:polygon(50% 80%,90% 40%,100% 50%,50% 100%,0 50%,10% 40%);justify-self:end}.cfgDarkTheme .cfgHr{box-sizing:border-box;border:0;border-bottom:.1em solid #5b5963;padding:0;margin:0}.cfgDarkTheme .cfgHr:after,.cfgDarkTheme .cfgHr:before{box-sizing:inherit}.cfgDarkTheme .cfgHr *{box-sizing:border-box}.cfgDarkTheme .cfgHr :after,.cfgDarkTheme .cfgHr :before{box-sizing:inherit}.cfgDarkTheme .cfgCenteredLoading{box-sizing:border-box;align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;width:100%}.cfgDarkTheme .cfgCenteredLoading:after,.cfgDarkTheme .cfgCenteredLoading:before{box-sizing:inherit}.cfgDarkTheme .cfgCenteredLoading *{box-sizing:border-box}.cfgDarkTheme .cfgCenteredLoading :after,.cfgDarkTheme .cfgCenteredLoading :before{box-sizing:inherit}.cfgDarkTheme .cfgOverlayLoading{box-sizing:border-box;align-items:center;background-color:#333;bottom:0;display:flex;flex-direction:column;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:1000}.cfgDarkTheme .cfgOverlayLoading:after,.cfgDarkTheme .cfgOverlayLoading:before{box-sizing:inherit}.cfgDarkTheme .cfgOverlayLoading *{box-sizing:border-box}.cfgDarkTheme .cfgOverlayLoading :after,.cfgDarkTheme .cfgOverlayLoading :before{box-sizing:inherit}.cfgDarkTheme .cfgOverlayLoading--clickThrough{background-color:transparent;pointer-events:none}.cfgDarkTheme .cfgOverlayLoading--clickThrough .cfgLoadingWithText{padding:2em 2em 1.8em;border-radius:.8em;background-color:#333;opacity:.8;border:.1em solid hsla(0,0%,100%,.15)}.cfgDarkTheme .cfgOverlayLoading--fullWindow{position:fixed;z-index:1001}.cfgDarkTheme .cfgLoadingWithText{box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol;text-align:center}.cfgDarkTheme .cfgLoadingWithText:after,.cfgDarkTheme .cfgLoadingWithText:before{box-sizing:inherit}.cfgDarkTheme .cfgLoadingWithText *{box-sizing:border-box}.cfgDarkTheme .cfgLoadingWithText :after,.cfgDarkTheme .cfgLoadingWithText :before{box-sizing:inherit}.cfgDarkTheme .cfgLoadingWithText__text{color:#fff;font-weight:600;margin-top:.5em;font-size:1.6em}.cfgDarkTheme .cfgLoading{box-sizing:border-box;animation:rotate 1.1s linear 0s infinite;border-radius:100%;border:.5em solid hsla(0,0%,100%,.15);border-bottom-color:#fff;display:inline-block;height:3em;width:3em}.cfgDarkTheme .cfgLoading:after,.cfgDarkTheme .cfgLoading:before{box-sizing:inherit}.cfgDarkTheme .cfgLoading *{box-sizing:border-box}.cfgDarkTheme .cfgLoading :after,.cfgDarkTheme .cfgLoading :before{box-sizing:inherit}.cfgDarkTheme .cfgLoading--small{border-width:.4em;height:2em;width:2em}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.cfgDarkTheme .cfgOptionTree{box-sizing:border-box;list-style:none;margin:0;padding:0}.cfgDarkTheme .cfgOptionTree:after,.cfgDarkTheme .cfgOptionTree:before{box-sizing:inherit}.cfgDarkTheme .cfgOptionTree *{box-sizing:border-box}.cfgDarkTheme .cfgOptionTree :after,.cfgDarkTheme .cfgOptionTree :before{box-sizing:inherit}.cfgDarkTheme .cfgOptionTree--topLevel{padding-left:1.7em}.cfgDarkTheme .cfgOptionTree--indent{margin-left:3.2em}.cfgDarkTheme .cfgOptionTree--compThumb{margin-left:4.2em}.cfgDarkTheme .cfgProductInfo{box-sizing:border-box;color:#d6d6d6;display:flex}.cfgDarkTheme .cfgProductInfo:after,.cfgDarkTheme .cfgProductInfo:before{box-sizing:inherit}.cfgDarkTheme .cfgProductInfo *{box-sizing:border-box}.cfgDarkTheme .cfgProductInfo :after,.cfgDarkTheme .cfgProductInfo :before{box-sizing:inherit}.cfgDarkTheme .cfgProductInfo__left{flex:1 1 auto;min-width:0;overflow:hidden}.cfgDarkTheme .cfgProductInfo__right{align-items:flex-end;display:flex;flex-direction:column;flex:1 0 auto;margin-left:1em;max-width:.333333333;min-width:0}.cfgDarkTheme .cfgProductInfo__name{display:block;font-size:1.6em;font-weight:600;line-height:1.33;margin:0}.cfgDarkTheme .cfgProductInfo__number{font-size:1.3em;font-weight:400;line-height:1.38;margin:0}.cfgDarkTheme .cfgRangeView__inputs{display:flex;align-items:center}.cfgDarkTheme .cfgRangeView__number-input{font-size:1.5em;flex-grow:1;text-align:right}.cfgDarkTheme .cfgRangeView__unit-label{font-size:1.5em;margin-left:.3em}.cfgDarkTheme .cfgRangeView__slider-input.cfgSlider{margin-left:1em;flex-grow:3}.cfgDarkTheme .cfgRangeView__error{display:flex;align-items:center;margin-top:1em;font-size:1.5em;color:#e8836f}.cfgDarkTheme .cfgRangeView__error .cfgErrorIcon{padding-right:.25em;width:1.25em;height:1em}.cfgDarkTheme .cfgSlider{box-sizing:border-box;flex:1;margin:0;padding:0;min-height:2.8em;background:transparent;font:inherit}.cfgDarkTheme .cfgSlider:after,.cfgDarkTheme .cfgSlider:before{box-sizing:inherit}.cfgDarkTheme .cfgSlider *{box-sizing:border-box}.cfgDarkTheme .cfgSlider :after,.cfgDarkTheme .cfgSlider :before{box-sizing:inherit}.cfgDarkTheme .cfgSlider,.cfgDarkTheme .cfgSlider::-webkit-slider-thumb{-webkit-appearance:none}.cfgDarkTheme .cfgSlider::-webkit-slider-runnable-track{box-sizing:border-box;border:none;height:.2em;background:#adadad}.cfgDarkTheme .cfgSlider::-moz-range-track{box-sizing:border-box;border:none;height:.2em;background:#adadad}.cfgDarkTheme .cfgSlider::-ms-track{box-sizing:border-box;border:none;height:.2em;background:#adadad}.cfgDarkTheme .cfgSlider::-webkit-slider-thumb{margin-top:-1.3em;box-sizing:border-box;border:none;width:2.8em;height:2.8em;border-radius:50%;background:#333;box-shadow:0 .15em .45em .05em #adadad}.cfgDarkTheme .cfgSlider::-moz-range-thumb{box-sizing:border-box;border:none;width:2.8em;height:2.8em;border-radius:50%;background:#333;box-shadow:0 .15em .45em .05em #adadad}.cfgDarkTheme .cfgSlider::-ms-thumb{margin-top:0;box-sizing:border-box;border:none;width:2.8em;height:2.8em;border-radius:50%;background:#333;box-shadow:0 .15em .45em .05em #adadad}.cfgDarkTheme .cfgSlider::-ms-tooltip{display:none}.cfgDarkTheme .cfgTaskList ul{list-style-type:none;padding:0;border-bottom:.1em solid #5b5963}.cfgDarkTheme .cfgTaskList__item{padding:0 1.5em 0 1.7em;margin-bottom:1em;display:flex;align-items:center}.cfgDarkTheme .cfgTaskList__preview{border:.1em solid #5b5963;border-radius:10%;width:4.8em;height:4.8em;flex-shrink:0}.cfgDarkTheme .cfgTaskList__preview img{object-fit:cover;position:relative;left:.38em;top:.38em;width:3.84em;height:3.84em}.cfgDarkTheme .cfgTaskList__icon{flex-shrink:0;width:4em;height:2em;padding-left:1em;padding-right:1em}.cfgDarkTheme .cfgTaskList__icon .cfgLoadingSizer{font-size:.75em}.cfgDarkTheme .cfgTaskList__status{flex-grow:1;font-size:1.5em}.cfgDarkTheme .cfgTaskList__abort{color:inherit;width:2em;height:2em;flex-shrink:0}.cfgDarkTheme .cfgTaskList__abort,.cfgDarkTheme .cfgTaskList__restart{-webkit-appearance:none;appearance:none;font-family:inherit;font-size:inherit;background:none;border:none;padding:0;cursor:pointer}.cfgDarkTheme .cfgTaskList__restart{color:inherit;text-decoration:underline;color:#70baff}
|