@configura/web-ui 2.1.0-alpha.2 → 2.1.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/.eslintrc.json +5 -5
  2. package/.postcssrc.json +8 -8
  3. package/LICENSE +201 -201
  4. package/README.md +1 -1
  5. package/dist/components/CanvasWrapper.d.ts +9 -9
  6. package/dist/components/CanvasWrapper.js +8 -8
  7. package/dist/components/CfgPriceView.d.ts +6 -6
  8. package/dist/components/CfgPriceView.js +13 -13
  9. package/dist/components/ConfigurationActionsButtonRow.d.ts +14 -14
  10. package/dist/components/ConfigurationActionsButtonRow.js +16 -16
  11. package/dist/components/Configurator.d.ts +12 -12
  12. package/dist/components/Configurator.js +15 -15
  13. package/dist/components/ConfiguratorWrapper.d.ts +8 -8
  14. package/dist/components/ConfiguratorWrapper.js +5 -5
  15. package/dist/components/CurrencyPrice.d.ts +9 -9
  16. package/dist/components/CurrencyPrice.js +7 -7
  17. package/dist/components/ErrorContext.d.ts +2 -2
  18. package/dist/components/ErrorContext.js +2 -2
  19. package/dist/components/ExpandableHeadingRow.d.ts +15 -15
  20. package/dist/components/ExpandableHeadingRow.js +23 -23
  21. package/dist/components/Loading.d.ts +13 -13
  22. package/dist/components/Loading.js +20 -20
  23. package/dist/components/ProductInformation.d.ts +13 -13
  24. package/dist/components/ProductInformation.js +14 -14
  25. package/dist/components/ResetButton.d.ts +8 -8
  26. package/dist/components/ResetButton.js +7 -7
  27. package/dist/components/ShareView.d.ts +3 -3
  28. package/dist/components/ShareView.js +21 -21
  29. package/dist/components/TaskListView.d.ts +8 -8
  30. package/dist/components/TaskListView.js +69 -69
  31. package/dist/components/TaskStartView.d.ts +12 -12
  32. package/dist/components/TaskStartView.js +29 -29
  33. package/dist/components/icons/Checkmark.d.ts +6 -6
  34. package/dist/components/icons/Checkmark.js +12 -12
  35. package/dist/components/icons/Chevron.d.ts +7 -7
  36. package/dist/components/icons/Chevron.js +18 -18
  37. package/dist/components/icons/CircleXmarkIcon.d.ts +3 -3
  38. package/dist/components/icons/CircleXmarkIcon.js +8 -8
  39. package/dist/components/icons/DownloadIcon.d.ts +3 -3
  40. package/dist/components/icons/DownloadIcon.js +8 -8
  41. package/dist/components/icons/ErrorIcon.d.ts +3 -3
  42. package/dist/components/icons/ErrorIcon.js +8 -8
  43. package/dist/components/productConfiguration/CfgAdditionalProductView.d.ts +3 -3
  44. package/dist/components/productConfiguration/CfgAdditionalProductView.js +46 -46
  45. package/dist/components/productConfiguration/CfgCheckboxView.d.ts +4 -4
  46. package/dist/components/productConfiguration/CfgCheckboxView.js +7 -7
  47. package/dist/components/productConfiguration/CfgCheckboxesView.d.ts +4 -4
  48. package/dist/components/productConfiguration/CfgCheckboxesView.js +20 -20
  49. package/dist/components/productConfiguration/CfgConfigurationCommonView.d.ts +7 -7
  50. package/dist/components/productConfiguration/CfgConfigurationCommonView.js +8 -8
  51. package/dist/components/productConfiguration/CfgDropdownOptionView.d.ts +4 -4
  52. package/dist/components/productConfiguration/CfgDropdownOptionView.js +23 -23
  53. package/dist/components/productConfiguration/CfgDropdownView.d.ts +4 -4
  54. package/dist/components/productConfiguration/CfgDropdownView.js +23 -23
  55. package/dist/components/productConfiguration/CfgFeatureView.d.ts +72 -72
  56. package/dist/components/productConfiguration/CfgFeatureView.js +77 -76
  57. package/dist/components/productConfiguration/CfgGroupView.d.ts +4 -4
  58. package/dist/components/productConfiguration/CfgGroupView.js +7 -7
  59. package/dist/components/productConfiguration/CfgMiscFile.d.ts +4 -4
  60. package/dist/components/productConfiguration/CfgMiscFile.js +9 -9
  61. package/dist/components/productConfiguration/CfgMiscFiles.d.ts +4 -4
  62. package/dist/components/productConfiguration/CfgMiscFiles.js +5 -5
  63. package/dist/components/productConfiguration/CfgNote.d.ts +4 -4
  64. package/dist/components/productConfiguration/CfgNote.js +15 -15
  65. package/dist/components/productConfiguration/CfgNotes.d.ts +4 -4
  66. package/dist/components/productConfiguration/CfgNotes.js +5 -5
  67. package/dist/components/productConfiguration/CfgOptionCommonView.d.ts +6 -6
  68. package/dist/components/productConfiguration/CfgOptionCommonView.js +53 -50
  69. package/dist/components/productConfiguration/CfgOptionNumericView.d.ts +29 -29
  70. package/dist/components/productConfiguration/CfgOptionNumericView.js +132 -132
  71. package/dist/components/productConfiguration/CfgOptionPriceView.d.ts +9 -9
  72. package/dist/components/productConfiguration/CfgOptionPriceView.js +31 -31
  73. package/dist/components/productConfiguration/CfgProductConfigurationView.d.ts +24 -22
  74. package/dist/components/productConfiguration/CfgProductConfigurationView.js +50 -50
  75. package/dist/css/web-ui.css.map +1 -1
  76. package/dist/index.d.ts +29 -29
  77. package/dist/index.js +29 -29
  78. package/dist/scss/_button.scss +52 -52
  79. package/dist/scss/_configurator.scss +132 -132
  80. package/dist/scss/_expandable.scss +38 -38
  81. package/dist/scss/_feature-item.scss +146 -146
  82. package/dist/scss/_forms.scss +44 -44
  83. package/dist/scss/_hr.scss +16 -16
  84. package/dist/scss/_loading.scss +98 -98
  85. package/dist/scss/_misc-file-and-note.scss +44 -44
  86. package/dist/scss/_mixins.scss +56 -56
  87. package/dist/scss/_option-tree.scss +29 -29
  88. package/dist/scss/_product-information.scss +53 -53
  89. package/dist/scss/_range-view.scss +39 -39
  90. package/dist/scss/_slider.scss +70 -70
  91. package/dist/scss/_tasks.scss +72 -72
  92. package/dist/scss/_themed.scss +156 -156
  93. package/dist/scss/_utilities.scss +21 -21
  94. package/dist/scss/_variables.scss +6 -6
  95. package/dist/scss/icons/_checkmark.scss +46 -46
  96. package/dist/scss/icons/_chevron.scss +62 -62
  97. package/dist/scss/icons/_circle-xmark-icon.scss +24 -24
  98. package/dist/scss/icons/_download-icon.scss +24 -24
  99. package/dist/scss/icons/_error-icon.scss +24 -24
  100. package/dist/scss/web-ui.scss +11 -11
  101. package/dist/useCatParams.d.ts +17 -17
  102. package/dist/useCatParams.js +29 -29
  103. package/dist/useObservable.d.ts +4 -4
  104. package/dist/useObservable.js +18 -18
  105. package/dist/useRerender.d.ts +1 -1
  106. package/dist/useRerender.js +5 -5
  107. package/dist/useResize.d.ts +6 -6
  108. package/dist/useResize.js +47 -47
  109. package/dist/useSelected.d.ts +2 -2
  110. package/dist/useSelected.js +13 -13
  111. package/dist/useUniqueId.d.ts +1 -1
  112. package/dist/useUniqueId.js +3 -3
  113. package/dist/utilities.d.ts +5 -5
  114. package/dist/utilities.js +1 -1
  115. package/package.json +3 -3
@@ -1,39 +1,39 @@
1
- @mixin classes($errorColor) {
2
- .cfgRangeView {
3
- &__inputs {
4
- display: flex;
5
- align-items: center;
6
- }
7
-
8
- &__number-input {
9
- font-size: 1.5em;
10
- flex-grow: 1;
11
- text-align: right;
12
- }
13
-
14
- &__unit-label {
15
- font-size: 1.5em;
16
- margin-left: 0.3em;
17
- }
18
-
19
- &__slider-input.cfgSlider {
20
- margin-left: 1em;
21
- flex-grow: 3;
22
- }
23
-
24
- &__error {
25
- display: flex;
26
- align-items: center;
27
-
28
- margin-top: 1em;
29
- font-size: 1.5em;
30
- color: $errorColor;
31
-
32
- .cfgErrorIcon {
33
- padding-right: 0.25em;
34
- width: 1.25em;
35
- height: 1em;
36
- }
37
- }
38
- }
39
- }
1
+ @mixin classes($errorColor) {
2
+ .cfgRangeView {
3
+ &__inputs {
4
+ display: flex;
5
+ align-items: center;
6
+ }
7
+
8
+ &__number-input {
9
+ font-size: 1.5em;
10
+ flex-grow: 1;
11
+ text-align: right;
12
+ }
13
+
14
+ &__unit-label {
15
+ font-size: 1.5em;
16
+ margin-left: 0.3em;
17
+ }
18
+
19
+ &__slider-input.cfgSlider {
20
+ margin-left: 1em;
21
+ flex-grow: 3;
22
+ }
23
+
24
+ &__error {
25
+ display: flex;
26
+ align-items: center;
27
+
28
+ margin-top: 1em;
29
+ font-size: 1.5em;
30
+ color: $errorColor;
31
+
32
+ .cfgErrorIcon {
33
+ padding-right: 0.25em;
34
+ width: 1.25em;
35
+ height: 1em;
36
+ }
37
+ }
38
+ }
39
+ }
@@ -1,70 +1,70 @@
1
- @use "mixins";
2
-
3
- // The origins of this SCSS file is here:
4
- // https://css-tricks.com/sliding-nightmare-understanding-range-input/
5
-
6
- $trackHeight: 0.2em !default;
7
- $thumbDiameter: 2.8em !default;
8
-
9
- @mixin track($trackColor) {
10
- box-sizing: border-box;
11
- border: none;
12
- height: $trackHeight;
13
- background: $trackColor;
14
- }
15
-
16
- @mixin thumb($thumbColor, $thumbShadowColor) {
17
- box-sizing: border-box;
18
- border: none;
19
- width: $thumbDiameter;
20
- height: $thumbDiameter;
21
- border-radius: 50%;
22
- background: $thumbColor;
23
- box-shadow: 0 0.15em 0.45em 0.05em $thumbShadowColor;
24
- }
25
-
26
- @mixin classes($trackColor, $thumbColor, $thumbShadowColor) {
27
- .cfgSlider {
28
- @include mixins.cfgRootStyles;
29
-
30
- &,
31
- &::-webkit-slider-thumb {
32
- -webkit-appearance: none;
33
- }
34
-
35
- flex: 1;
36
- margin: 0;
37
- padding: 0;
38
- min-height: $thumbDiameter;
39
- background: transparent;
40
- font: inherit;
41
-
42
- &::-webkit-slider-runnable-track {
43
- @include track($trackColor);
44
- }
45
- &::-moz-range-track {
46
- @include track($trackColor);
47
- }
48
- &::-ms-track {
49
- @include track($trackColor);
50
- }
51
-
52
- &::-webkit-slider-thumb {
53
- margin-top: 0.5 * ($trackHeight - $thumbDiameter);
54
- @include thumb($thumbColor, $thumbShadowColor);
55
- }
56
- &::-moz-range-thumb {
57
- @include thumb($thumbColor, $thumbShadowColor);
58
- }
59
- &::-ms-thumb {
60
- margin-top: 0;
61
- @include thumb($thumbColor, $thumbShadowColor);
62
- }
63
-
64
- &::-ms-tooltip {
65
- display: none;
66
- }
67
-
68
- @content;
69
- }
70
- }
1
+ @use "mixins";
2
+
3
+ // The origins of this SCSS file is here:
4
+ // https://css-tricks.com/sliding-nightmare-understanding-range-input/
5
+
6
+ $trackHeight: 0.2em !default;
7
+ $thumbDiameter: 2.8em !default;
8
+
9
+ @mixin track($trackColor) {
10
+ box-sizing: border-box;
11
+ border: none;
12
+ height: $trackHeight;
13
+ background: $trackColor;
14
+ }
15
+
16
+ @mixin thumb($thumbColor, $thumbShadowColor) {
17
+ box-sizing: border-box;
18
+ border: none;
19
+ width: $thumbDiameter;
20
+ height: $thumbDiameter;
21
+ border-radius: 50%;
22
+ background: $thumbColor;
23
+ box-shadow: 0 0.15em 0.45em 0.05em $thumbShadowColor;
24
+ }
25
+
26
+ @mixin classes($trackColor, $thumbColor, $thumbShadowColor) {
27
+ .cfgSlider {
28
+ @include mixins.cfgRootStyles;
29
+
30
+ &,
31
+ &::-webkit-slider-thumb {
32
+ -webkit-appearance: none;
33
+ }
34
+
35
+ flex: 1;
36
+ margin: 0;
37
+ padding: 0;
38
+ min-height: $thumbDiameter;
39
+ background: transparent;
40
+ font: inherit;
41
+
42
+ &::-webkit-slider-runnable-track {
43
+ @include track($trackColor);
44
+ }
45
+ &::-moz-range-track {
46
+ @include track($trackColor);
47
+ }
48
+ &::-ms-track {
49
+ @include track($trackColor);
50
+ }
51
+
52
+ &::-webkit-slider-thumb {
53
+ margin-top: 0.5 * ($trackHeight - $thumbDiameter);
54
+ @include thumb($thumbColor, $thumbShadowColor);
55
+ }
56
+ &::-moz-range-thumb {
57
+ @include thumb($thumbColor, $thumbShadowColor);
58
+ }
59
+ &::-ms-thumb {
60
+ margin-top: 0;
61
+ @include thumb($thumbColor, $thumbShadowColor);
62
+ }
63
+
64
+ &::-ms-tooltip {
65
+ display: none;
66
+ }
67
+
68
+ @content;
69
+ }
70
+ }
@@ -1,72 +1,72 @@
1
- @use "mixins";
2
-
3
- @mixin classes($borderColor, $linkColor) {
4
- $preview-size: 4.8em;
5
- $line-width: 0.1em;
6
- $icon-size: 2em;
7
-
8
- .cfgTaskList {
9
- ul {
10
- list-style-type: none;
11
- padding: 0;
12
- margin: 1em 0 0 0;
13
- border-bottom: 0.1em solid $borderColor;
14
- }
15
-
16
- &__item {
17
- padding: 0 1.5em 0 1.7em;
18
- margin-bottom: 1em;
19
- display: flex;
20
- align-items: center;
21
- }
22
-
23
- &__preview {
24
- border: 0.1em solid $borderColor;
25
- border-radius: 10%;
26
- width: $preview-size;
27
- height: $preview-size;
28
- flex-shrink: 0;
29
-
30
- img {
31
- object-fit: cover;
32
- position: relative;
33
- left: 0.1 * $preview-size - $line-width;
34
- top: 0.1 * $preview-size - $line-width;
35
- width: 0.8 * $preview-size;
36
- height: 0.8 * $preview-size;
37
- }
38
- }
39
-
40
- &__icon {
41
- flex-shrink: 0;
42
- width: $icon-size + 2em;
43
- height: $icon-size;
44
- padding-left: 1em;
45
- padding-right: 1em;
46
-
47
- .cfgLoadingSizer {
48
- font-size: 0.75em;
49
- }
50
- }
51
-
52
- &__status {
53
- flex-grow: 1;
54
- font-size: 1.5em;
55
- }
56
-
57
- &__abort {
58
- @include mixins.noButtonLook;
59
- cursor: pointer;
60
- width: $icon-size;
61
- height: $icon-size;
62
- flex-shrink: 0;
63
- }
64
-
65
- &__restart {
66
- @include mixins.noButtonLook;
67
- cursor: pointer;
68
- text-decoration: underline;
69
- color: $linkColor;
70
- }
71
- }
72
- }
1
+ @use "mixins";
2
+
3
+ @mixin classes($borderColor, $linkColor) {
4
+ $preview-size: 4.8em;
5
+ $line-width: 0.1em;
6
+ $icon-size: 2em;
7
+
8
+ .cfgTaskList {
9
+ ul {
10
+ list-style-type: none;
11
+ padding: 0;
12
+ margin: 1em 0 0 0;
13
+ border-bottom: 0.1em solid $borderColor;
14
+ }
15
+
16
+ &__item {
17
+ padding: 0 1.5em 0 1.7em;
18
+ margin-bottom: 1em;
19
+ display: flex;
20
+ align-items: center;
21
+ }
22
+
23
+ &__preview {
24
+ border: 0.1em solid $borderColor;
25
+ border-radius: 10%;
26
+ width: $preview-size;
27
+ height: $preview-size;
28
+ flex-shrink: 0;
29
+
30
+ img {
31
+ object-fit: cover;
32
+ position: relative;
33
+ left: 0.1 * $preview-size - $line-width;
34
+ top: 0.1 * $preview-size - $line-width;
35
+ width: 0.8 * $preview-size;
36
+ height: 0.8 * $preview-size;
37
+ }
38
+ }
39
+
40
+ &__icon {
41
+ flex-shrink: 0;
42
+ width: $icon-size + 2em;
43
+ height: $icon-size;
44
+ padding-left: 1em;
45
+ padding-right: 1em;
46
+
47
+ .cfgLoadingSizer {
48
+ font-size: 0.75em;
49
+ }
50
+ }
51
+
52
+ &__status {
53
+ flex-grow: 1;
54
+ font-size: 1.5em;
55
+ }
56
+
57
+ &__abort {
58
+ @include mixins.noButtonLook;
59
+ cursor: pointer;
60
+ width: $icon-size;
61
+ height: $icon-size;
62
+ flex-shrink: 0;
63
+ }
64
+
65
+ &__restart {
66
+ @include mixins.noButtonLook;
67
+ cursor: pointer;
68
+ text-decoration: underline;
69
+ color: $linkColor;
70
+ }
71
+ }
72
+ }
@@ -1,156 +1,156 @@
1
- @use "sass:map";
2
- @use "sass:color";
3
-
4
- @use "variables" as v;
5
-
6
- // Components
7
- @use "button";
8
- @use "forms";
9
-
10
- @use "configurator";
11
- @use "expandable";
12
- @use "feature-item";
13
- @use "hr";
14
- @use "loading";
15
- @use "misc-file-and-note";
16
- @use "option-tree";
17
- @use "product-information";
18
- @use "range-view";
19
- @use "slider";
20
- @use "tasks";
21
-
22
- // Icons
23
- @use "icons/checkmark";
24
- @use "icons/chevron";
25
- @use "icons/circle-xmark-icon";
26
- @use "icons/download-icon";
27
- @use "icons/error-icon";
28
-
29
- // Utilities
30
- @use "utilities";
31
-
32
- /* Colors */
33
-
34
- $black: hsl(0, 0%, 0%) !default;
35
- $white: hsl(0, 0%, 100%) !default;
36
- $darkGrey: hsl(0, 0%, 15%) !default;
37
-
38
- /* Specific colors */
39
-
40
- $border: hsl(252, 5%, 79%) !default;
41
- $borderDark: hsl(0, 0%, 73%) !default;
42
- $icon: hsl(252, 5%, 50%) !default;
43
- $focusOutlineOuter: hsl(0, 0%, 13%) !default;
44
- $sliderTrack: #666 !default;
45
- $spinner2: hsla(0, 0%, 0%, 0.15);
46
- $grayText: hsl(0, 0%, 50%) !default;
47
- $text: hsl(0, 0%, 20%) !default;
48
- $link: hsl(209, 100%, 35%) !default;
49
- $error: hsl(10, 72%, 41%) !default;
50
-
51
- /* As convention we assume the default theme when naming colors,
52
- as attempts at generic naming often leads to confusion */
53
- $lightTheme: (
54
- "black": $black,
55
- "border": $border,
56
- "borderDark": $borderDark,
57
- "checkButtonChecked": $black,
58
- "checkButtonUnchecked": $border,
59
- "chevronActive": $black,
60
- "chevronPassive": $borderDark,
61
- "divider": $border,
62
- "dividerDark": $borderDark,
63
- "error": $error,
64
- "focusOutlineInner": $white,
65
- "focusOutlineOuter": $text,
66
- "grayText": $grayText,
67
- "icon": $icon,
68
- "link": $link,
69
- "overlayBackground": $white,
70
- "sliderThumb": $white,
71
- "sliderThumbShadow": $sliderTrack,
72
- "sliderTrack": $sliderTrack,
73
- "spinner1": $black,
74
- "spinner2": $spinner2,
75
- "text": $text,
76
- "white": $white,
77
- ) !default;
78
-
79
- @function invertLightness($color) {
80
- @return color.change(
81
- $color,
82
- $lightness: 100 - color.lightness($color) * 0.8
83
- ); // We scale with 80% to have a bit more contrast
84
- }
85
-
86
- @function invertLightnessList($list) {
87
- @each $key, $color in $list {
88
- $list: map.set($list, $key, invertLightness($color));
89
- }
90
- @return $list;
91
- }
92
-
93
- $darkTheme: invertLightnessList($lightTheme);
94
-
95
- $themes: (
96
- "light": $lightTheme,
97
- "dark": $darkTheme,
98
- );
99
-
100
- @mixin themed($ct, $baseFontSize: v.$baseFontSize, $overlayingZIndex: v.$overlayingZIndex) {
101
- a {
102
- color: map.get($ct, "link");
103
- }
104
-
105
- @include button.classes(
106
- map.get($ct, "text"),
107
- map.get($ct, "borderDark"),
108
- map.get($ct, "focusOutlineInner"),
109
- map.get($ct, "focusOutlineOuter"),
110
- map.get($ct, "grayText"),
111
- map.get($ct, "border")
112
- );
113
- @include checkmark.classes(
114
- map.get($ct, "checkButtonChecked"),
115
- map.get($ct, "checkButtonUnchecked")
116
- );
117
- @include chevron.classes(map.get($ct, "chevronActive"), map.get($ct, "chevronPassive"));
118
- @include circle-xmark-icon.classes(map.get($ct, "icon"));
119
- @include configurator.classes(
120
- $baseFontSize,
121
- map.get($ct, "text"),
122
- map.get($ct, "grayText"),
123
- map.get($ct, "divider")
124
- );
125
- @include download-icon.classes(map.get($ct, "link"));
126
- @include expandable.classes;
127
- @include error-icon.classes(map.get($ct, "error"));
128
- @include feature-item.classes(
129
- map.get($ct, "text"),
130
- map.get($ct, "grayText"),
131
- map.get($ct, "checkButtonUnchecked"),
132
- map.get($ct, "checkButtonChecked"),
133
- map.get($ct, "focusOutlineInner"),
134
- map.get($ct, "focusOutlineOuter"),
135
- map.get($ct, "dividerDark")
136
- );
137
- @include forms.classes(map.get($ct, "borderDark"));
138
- @include hr.classes(map.get($ct, "divider"));
139
- @include loading.classes(
140
- map.get($ct, "black"),
141
- map.get($ct, "spinner1"),
142
- map.get($ct, "spinner2"),
143
- map.get($ct, "overlayBackground"),
144
- $overlayingZIndex
145
- );
146
- @include misc-file-and-note.classes(map.get($ct, "grayText"), map.get($ct, "link"));
147
- @include option-tree.classes;
148
- @include product-information.classes(map.get($ct, "text"));
149
- @include range-view.classes(map.get($ct, "error"));
150
- @include slider.classes(
151
- map.get($ct, "sliderTrack"),
152
- map.get($ct, "sliderThumb"),
153
- map.get($ct, "sliderThumbShadow")
154
- );
155
- @include tasks.classes(map.get($ct, "border"), map.get($ct, "link"));
156
- }
1
+ @use "sass:map";
2
+ @use "sass:color";
3
+
4
+ @use "variables" as v;
5
+
6
+ // Components
7
+ @use "button";
8
+ @use "forms";
9
+
10
+ @use "configurator";
11
+ @use "expandable";
12
+ @use "feature-item";
13
+ @use "hr";
14
+ @use "loading";
15
+ @use "misc-file-and-note";
16
+ @use "option-tree";
17
+ @use "product-information";
18
+ @use "range-view";
19
+ @use "slider";
20
+ @use "tasks";
21
+
22
+ // Icons
23
+ @use "icons/checkmark";
24
+ @use "icons/chevron";
25
+ @use "icons/circle-xmark-icon";
26
+ @use "icons/download-icon";
27
+ @use "icons/error-icon";
28
+
29
+ // Utilities
30
+ @use "utilities";
31
+
32
+ /* Colors */
33
+
34
+ $black: hsl(0, 0%, 0%) !default;
35
+ $white: hsl(0, 0%, 100%) !default;
36
+ $darkGrey: hsl(0, 0%, 15%) !default;
37
+
38
+ /* Specific colors */
39
+
40
+ $border: hsl(252, 5%, 79%) !default;
41
+ $borderDark: hsl(0, 0%, 73%) !default;
42
+ $icon: hsl(252, 5%, 50%) !default;
43
+ $focusOutlineOuter: hsl(0, 0%, 13%) !default;
44
+ $sliderTrack: #666 !default;
45
+ $spinner2: hsla(0, 0%, 0%, 0.15);
46
+ $grayText: hsl(0, 0%, 50%) !default;
47
+ $text: hsl(0, 0%, 20%) !default;
48
+ $link: hsl(209, 100%, 35%) !default;
49
+ $error: hsl(10, 72%, 41%) !default;
50
+
51
+ /* As convention we assume the default theme when naming colors,
52
+ as attempts at generic naming often leads to confusion */
53
+ $lightTheme: (
54
+ "black": $black,
55
+ "border": $border,
56
+ "borderDark": $borderDark,
57
+ "checkButtonChecked": $black,
58
+ "checkButtonUnchecked": $border,
59
+ "chevronActive": $black,
60
+ "chevronPassive": $borderDark,
61
+ "divider": $border,
62
+ "dividerDark": $borderDark,
63
+ "error": $error,
64
+ "focusOutlineInner": $white,
65
+ "focusOutlineOuter": $text,
66
+ "grayText": $grayText,
67
+ "icon": $icon,
68
+ "link": $link,
69
+ "overlayBackground": $white,
70
+ "sliderThumb": $white,
71
+ "sliderThumbShadow": $sliderTrack,
72
+ "sliderTrack": $sliderTrack,
73
+ "spinner1": $black,
74
+ "spinner2": $spinner2,
75
+ "text": $text,
76
+ "white": $white,
77
+ ) !default;
78
+
79
+ @function invertLightness($color) {
80
+ @return color.change(
81
+ $color,
82
+ $lightness: 100 - color.lightness($color) * 0.8
83
+ ); // We scale with 80% to have a bit more contrast
84
+ }
85
+
86
+ @function invertLightnessList($list) {
87
+ @each $key, $color in $list {
88
+ $list: map.set($list, $key, invertLightness($color));
89
+ }
90
+ @return $list;
91
+ }
92
+
93
+ $darkTheme: invertLightnessList($lightTheme);
94
+
95
+ $themes: (
96
+ "light": $lightTheme,
97
+ "dark": $darkTheme,
98
+ );
99
+
100
+ @mixin themed($ct, $baseFontSize: v.$baseFontSize, $overlayingZIndex: v.$overlayingZIndex) {
101
+ a {
102
+ color: map.get($ct, "link");
103
+ }
104
+
105
+ @include button.classes(
106
+ map.get($ct, "text"),
107
+ map.get($ct, "borderDark"),
108
+ map.get($ct, "focusOutlineInner"),
109
+ map.get($ct, "focusOutlineOuter"),
110
+ map.get($ct, "grayText"),
111
+ map.get($ct, "border")
112
+ );
113
+ @include checkmark.classes(
114
+ map.get($ct, "checkButtonChecked"),
115
+ map.get($ct, "checkButtonUnchecked")
116
+ );
117
+ @include chevron.classes(map.get($ct, "chevronActive"), map.get($ct, "chevronPassive"));
118
+ @include circle-xmark-icon.classes(map.get($ct, "icon"));
119
+ @include configurator.classes(
120
+ $baseFontSize,
121
+ map.get($ct, "text"),
122
+ map.get($ct, "grayText"),
123
+ map.get($ct, "divider")
124
+ );
125
+ @include download-icon.classes(map.get($ct, "link"));
126
+ @include expandable.classes;
127
+ @include error-icon.classes(map.get($ct, "error"));
128
+ @include feature-item.classes(
129
+ map.get($ct, "text"),
130
+ map.get($ct, "grayText"),
131
+ map.get($ct, "checkButtonUnchecked"),
132
+ map.get($ct, "checkButtonChecked"),
133
+ map.get($ct, "focusOutlineInner"),
134
+ map.get($ct, "focusOutlineOuter"),
135
+ map.get($ct, "dividerDark")
136
+ );
137
+ @include forms.classes(map.get($ct, "borderDark"));
138
+ @include hr.classes(map.get($ct, "divider"));
139
+ @include loading.classes(
140
+ map.get($ct, "black"),
141
+ map.get($ct, "spinner1"),
142
+ map.get($ct, "spinner2"),
143
+ map.get($ct, "overlayBackground"),
144
+ $overlayingZIndex
145
+ );
146
+ @include misc-file-and-note.classes(map.get($ct, "grayText"), map.get($ct, "link"));
147
+ @include option-tree.classes;
148
+ @include product-information.classes(map.get($ct, "text"));
149
+ @include range-view.classes(map.get($ct, "error"));
150
+ @include slider.classes(
151
+ map.get($ct, "sliderTrack"),
152
+ map.get($ct, "sliderThumb"),
153
+ map.get($ct, "sliderThumbShadow")
154
+ );
155
+ @include tasks.classes(map.get($ct, "border"), map.get($ct, "link"));
156
+ }