@odx/ui 5.4.0 → 6.0.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.
Files changed (207) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +0 -10
  3. package/ag-grid-theme.css +1 -1
  4. package/charts-theme.css +1 -1
  5. package/core-theme.css +1 -1
  6. package/package.json +4 -1
  7. package/scss/3rdparty/ag-grid/theme.scss +9 -7
  8. package/scss/_application.scss +5 -5
  9. package/scss/_base.scss +1 -1
  10. package/scss/_breakpoints.scss +15 -3
  11. package/scss/_color-palettes-dark.scss +11 -50
  12. package/scss/_color-palettes.scss +42 -94
  13. package/scss/_colors-dark.scss +31 -37
  14. package/scss/_colors.scss +94 -95
  15. package/scss/_controls.scss +45 -45
  16. package/scss/_description-list.scss +7 -13
  17. package/scss/_dimensions.scss +23 -10
  18. package/scss/_helpers.scss +44 -22
  19. package/scss/_layout.scss +2 -4
  20. package/scss/_skeleton.scss +1 -1
  21. package/scss/_text-list.scss +4 -7
  22. package/scss/_typography.scss +3 -6
  23. package/scss/_utils.scss +13 -0
  24. package/scss/_vertical-rythm.scss +1 -1
  25. package/scss/_visuals.scss +6 -6
  26. package/scss/abstract/_breakpoints.scss +15 -3
  27. package/scss/abstract/_dimensions.scss +23 -10
  28. package/scss/abstract/_utils.scss +13 -0
  29. package/scss/accordion-item.component.scss +22 -23
  30. package/scss/action-group.component.scss +6 -6
  31. package/scss/active-indicator.scss +3 -5
  32. package/scss/ag-grid/theme.scss +9 -7
  33. package/scss/anchor-navigation.component.scss +7 -10
  34. package/scss/area-header.component.scss +33 -31
  35. package/scss/autocomplete.component.scss +1 -4
  36. package/scss/avatar.component.scss +52 -11
  37. package/scss/badge.component.scss +11 -13
  38. package/scss/bar.component.scss +14 -18
  39. package/scss/brand-logo.component.scss +2 -4
  40. package/scss/breadcrumbs.component.scss +10 -14
  41. package/scss/button-group.component.scss +4 -8
  42. package/scss/button.component.scss +39 -36
  43. package/scss/calendar.component.scss +60 -56
  44. package/scss/card.component.scss +64 -37
  45. package/scss/cdk/active-indicator.scss +3 -5
  46. package/scss/cdk/connected-overlay.scss +4 -10
  47. package/scss/chart-footer.component.scss +21 -21
  48. package/scss/chart-header.component.scss +49 -49
  49. package/scss/charts/colors/_color-palettes.scss +32 -32
  50. package/scss/charts/components/chart-footer.component.scss +21 -21
  51. package/scss/charts/components/chart-header.component.scss +49 -49
  52. package/scss/charts/components/circle-chart-table.component.scss +1 -1
  53. package/scss/charts/components/line-timeframes-chart.component.scss +4 -4
  54. package/scss/charts/components/mirror-bar-chart.component.scss +2 -2
  55. package/scss/charts/components/multi-axis-box-plot.component.scss +2 -2
  56. package/scss/checkbox.component.scss +29 -30
  57. package/scss/chip-list.component.scss +5 -6
  58. package/scss/chip.component.scss +30 -17
  59. package/scss/circle-chart-table.component.scss +1 -1
  60. package/scss/circular-progress.component.scss +7 -8
  61. package/scss/colors/_color-palettes.scss +32 -32
  62. package/scss/components/accordion-item.component.scss +22 -23
  63. package/scss/components/action-group.component.scss +6 -6
  64. package/scss/components/anchor-navigation.component.scss +7 -10
  65. package/scss/components/area-header.component.scss +33 -31
  66. package/scss/components/autocomplete.component.scss +1 -4
  67. package/scss/components/avatar.component.scss +52 -11
  68. package/scss/components/badge.component.scss +11 -13
  69. package/scss/components/bar.component.scss +14 -18
  70. package/scss/components/brand-logo.component.scss +2 -4
  71. package/scss/components/breadcrumbs.component.scss +10 -14
  72. package/scss/components/button-group.component.scss +4 -8
  73. package/scss/components/button.component.scss +39 -36
  74. package/scss/components/calendar.component.scss +60 -56
  75. package/scss/components/card.component.scss +64 -37
  76. package/scss/components/chart-footer.component.scss +21 -21
  77. package/scss/components/chart-header.component.scss +49 -49
  78. package/scss/components/checkbox.component.scss +29 -30
  79. package/scss/components/chip-list.component.scss +5 -6
  80. package/scss/components/chip.component.scss +30 -17
  81. package/scss/components/circle-chart-table.component.scss +1 -1
  82. package/scss/components/circular-progress.component.scss +7 -8
  83. package/scss/components/content-box.component.scss +10 -7
  84. package/scss/components/datepicker.component.scss +1 -3
  85. package/scss/components/daterangepicker.component.scss +6 -3
  86. package/scss/components/dropdown.component.scss +5 -9
  87. package/scss/components/error-page.component.scss +5 -12
  88. package/scss/components/expandable-list-item.component.scss +6 -6
  89. package/scss/components/footer.component.scss +5 -7
  90. package/scss/components/form-field.component.scss +65 -58
  91. package/scss/components/header-navigation.component.scss +2 -10
  92. package/scss/components/header.component.scss +11 -13
  93. package/scss/components/icon.component.scss +8 -8
  94. package/scss/components/inline-message.component.scss +9 -15
  95. package/scss/components/line-timeframes-chart.component.scss +4 -4
  96. package/scss/components/link.component.scss +5 -5
  97. package/scss/components/list-item.component.scss +16 -18
  98. package/scss/components/list.component.scss +1 -3
  99. package/scss/components/loading-spinner.component.scss +4 -6
  100. package/scss/components/logo.component.scss +6 -10
  101. package/scss/components/main-menu-item.component.scss +15 -24
  102. package/scss/components/main-menu.component.scss +28 -41
  103. package/scss/components/mainfilter-group.component.scss +23 -27
  104. package/scss/components/menu.component.scss +7 -11
  105. package/scss/components/mirror-bar-chart.component.scss +2 -2
  106. package/scss/components/modal.component.scss +37 -43
  107. package/scss/components/multi-axis-box-plot.component.scss +2 -2
  108. package/scss/components/navigation-back.component.scss +5 -6
  109. package/scss/components/notification-center.component.scss +14 -18
  110. package/scss/components/notification-item.component.scss +6 -11
  111. package/scss/components/option.component.scss +11 -15
  112. package/scss/components/paginator.component.scss +5 -8
  113. package/scss/components/progress.component.scss +4 -8
  114. package/scss/components/radio-button.component.scss +23 -23
  115. package/scss/components/radio-group.component.scss +2 -4
  116. package/scss/components/rail-navigation-item.component.scss +19 -22
  117. package/scss/components/rail-navigation.component.scss +7 -12
  118. package/scss/components/rich-list-item-header.component.scss +4 -9
  119. package/scss/components/rich-list-item.component.scss +9 -17
  120. package/scss/components/search-bar.component.scss +13 -15
  121. package/scss/components/select.component.scss +9 -12
  122. package/scss/components/slider.component.scss +11 -14
  123. package/scss/components/spinbox.component.scss +23 -25
  124. package/scss/components/switch.component.scss +98 -123
  125. package/scss/components/tab-bar-item.component.scss +17 -19
  126. package/scss/components/tab-bar.component.scss +23 -28
  127. package/scss/components/table.component.scss +12 -19
  128. package/scss/components/timepicker.component.scss +5 -10
  129. package/scss/components/toast-item.component.scss +9 -15
  130. package/scss/components/toast.component.scss +5 -8
  131. package/scss/components/toggle-button-group.component.scss +13 -14
  132. package/scss/components/toggle-button.component.scss +15 -17
  133. package/scss/components/tooltip.component.scss +8 -13
  134. package/scss/components/wizard-step.component.scss +13 -17
  135. package/scss/components/wizard.component.scss +2 -4
  136. package/scss/connected-overlay.scss +4 -10
  137. package/scss/content-box.component.scss +10 -7
  138. package/scss/core.scss +2 -0
  139. package/scss/datepicker.component.scss +1 -3
  140. package/scss/daterangepicker.component.scss +6 -3
  141. package/scss/dropdown.component.scss +5 -9
  142. package/scss/error-page.component.scss +5 -12
  143. package/scss/expandable-list-item.component.scss +6 -6
  144. package/scss/footer.component.scss +5 -7
  145. package/scss/form-field.component.scss +65 -58
  146. package/scss/header-navigation.component.scss +2 -10
  147. package/scss/header.component.scss +11 -13
  148. package/scss/icon.component.scss +8 -8
  149. package/scss/inline-message.component.scss +9 -15
  150. package/scss/layout/_application.scss +5 -5
  151. package/scss/layout/_base.scss +1 -1
  152. package/scss/layout/_description-list.scss +7 -13
  153. package/scss/layout/_helpers.scss +44 -22
  154. package/scss/layout/_layout.scss +2 -4
  155. package/scss/layout/_text-list.scss +4 -7
  156. package/scss/layout/_typography.scss +62 -70
  157. package/scss/line-timeframes-chart.component.scss +4 -4
  158. package/scss/link.component.scss +5 -5
  159. package/scss/list-item.component.scss +16 -18
  160. package/scss/list.component.scss +1 -3
  161. package/scss/loading-spinner.component.scss +4 -6
  162. package/scss/logo.component.scss +6 -10
  163. package/scss/main-menu-item.component.scss +15 -24
  164. package/scss/main-menu.component.scss +28 -41
  165. package/scss/mainfilter-group.component.scss +23 -27
  166. package/scss/menu.component.scss +7 -11
  167. package/scss/mirror-bar-chart.component.scss +2 -2
  168. package/scss/modal.component.scss +37 -43
  169. package/scss/multi-axis-box-plot.component.scss +2 -2
  170. package/scss/navigation-back.component.scss +5 -6
  171. package/scss/notification-center.component.scss +14 -18
  172. package/scss/notification-item.component.scss +6 -11
  173. package/scss/option.component.scss +11 -15
  174. package/scss/paginator.component.scss +5 -8
  175. package/scss/progress.component.scss +4 -8
  176. package/scss/radio-button.component.scss +23 -23
  177. package/scss/radio-group.component.scss +2 -4
  178. package/scss/rail-navigation-item.component.scss +19 -22
  179. package/scss/rail-navigation.component.scss +7 -12
  180. package/scss/rich-list-item-header.component.scss +4 -9
  181. package/scss/rich-list-item.component.scss +9 -17
  182. package/scss/search-bar.component.scss +13 -15
  183. package/scss/select.component.scss +9 -12
  184. package/scss/skeleton/_skeleton.scss +1 -1
  185. package/scss/slider.component.scss +11 -14
  186. package/scss/spinbox.component.scss +23 -25
  187. package/scss/switch.component.scss +98 -123
  188. package/scss/tab-bar-item.component.scss +17 -19
  189. package/scss/tab-bar.component.scss +23 -28
  190. package/scss/table.component.scss +12 -19
  191. package/scss/theme.scss +9 -7
  192. package/scss/timepicker.component.scss +5 -10
  193. package/scss/toast-item.component.scss +9 -15
  194. package/scss/toast.component.scss +5 -8
  195. package/scss/toggle-button-group.component.scss +13 -14
  196. package/scss/toggle-button.component.scss +15 -17
  197. package/scss/tooltip.component.scss +8 -13
  198. package/scss/variables/_color-palettes-dark.scss +49 -49
  199. package/scss/variables/_color-palettes.scss +84 -84
  200. package/scss/variables/_colors-dark.scss +31 -37
  201. package/scss/variables/_colors.scss +94 -95
  202. package/scss/variables/_controls.scss +45 -45
  203. package/scss/variables/_typography.scss +3 -6
  204. package/scss/variables/_vertical-rythm.scss +1 -1
  205. package/scss/variables/_visuals.scss +6 -6
  206. package/scss/wizard-step.component.scss +13 -17
  207. package/scss/wizard.component.scss +2 -4
@@ -1,6 +1,3 @@
1
- @use 'sass:math';
2
- @use '../abstract/dimensions';
3
- @use '../abstract/motion';
4
1
  @use '../abstract/typography';
5
2
  @use '../abstract/utils';
6
3
 
@@ -17,7 +14,7 @@
17
14
 
18
15
  cursor: pointer;
19
16
  flex: 1 1 100%;
20
- gap: dimensions.get-size(math.div(1, 3));
17
+ gap: var(--odx-spacing-50);
21
18
  height: 100%;
22
19
  max-width: var(--odx-select-max-width);
23
20
  position: relative;
@@ -33,24 +30,24 @@
33
30
 
34
31
  &__placeholder,
35
32
  &__value {
36
- @include dimensions.padding-y(math.div(4, 24));
37
33
  @include typography.prevent-text-overflow();
38
34
 
39
35
  display: flex;
40
36
  flex: 1 1 auto;
41
- gap: dimensions.get-size(math.div(4, 24));
37
+ gap: var(--odx-spacing-25);
42
38
  overflow: hidden;
39
+ padding-block: var(--odx-control-spacing-sm);
43
40
  user-select: none;
44
41
  }
45
42
 
46
43
  &__placeholder {
47
- @include typography.font-weight(normal);
48
-
49
44
  color: var(--odx-input-control-color);
45
+ font-weight: var(--odx-typography-font-weight-normal);
46
+ letter-spacing: var(--odx-typography-font-weight-normal-letter-spacing);
50
47
  opacity: 0.65;
51
48
 
52
49
  #{$root}.is-disabled & {
53
- color: inherit;
50
+ color: var(--odx-input-control-color-disabled);
54
51
  }
55
52
  }
56
53
 
@@ -72,10 +69,10 @@
72
69
  }
73
70
 
74
71
  &__indicator {
75
- @include motion.transition(transform opacity);
76
- @include dimensions.margin(math.div(-2, 24), right);
77
-
72
+ margin-inline-end: var(--odx-spacing-negative-12);
78
73
  margin-left: auto;
74
+ transition: var(--odx-motion-transition-default);
75
+ transition-property: transform, opacity;
79
76
 
80
77
  #{$root}.is-readonly & {
81
78
  opacity: 0;
@@ -1,6 +1,3 @@
1
- @use 'sass:math';
2
- @use '../abstract/dimensions';
3
- @use '../abstract/motion';
4
1
  @use '../abstract/utils';
5
2
 
6
3
  .odx-slider {
@@ -9,8 +6,8 @@
9
6
  --odx-control-background-color-hover: var(--cyan-600);
10
7
 
11
8
  $root: &;
12
- $thumb-size: dimensions.get-size(math.div(20, 24));
13
- $track-height: dimensions.get-size(math.div(4, 24));
9
+ $thumb-size: var(--odx-size-125);
10
+ $track-height: var(--odx-spacing-25);
14
11
 
15
12
  appearance: none;
16
13
  box-sizing: border-box;
@@ -24,28 +21,28 @@
24
21
  }
25
22
 
26
23
  background-color: var(--odx-control-background-color);
27
- border-radius: 2px;
24
+ border-radius: var(--odx-border-radius-sm);
28
25
  }
29
26
 
30
27
  @mixin track-progress() {
31
- border-radius: 2px;
28
+ border-radius: var(--odx-border-radius-sm);
32
29
  height: $track-height;
33
30
  position: relative;
34
31
  }
35
32
 
36
33
  @mixin thumb() {
37
- @include motion.transition(background-color);
38
-
39
- @include utils.with-outline() {
40
- outline-color: var(--white);
41
- }
42
-
43
34
  appearance: none;
44
35
  background-color: var(--odx-control-background-color-selected);
45
- border-radius: 50%;
36
+ border-radius: var(--odx-border-radius-circle);
46
37
  height: $thumb-size;
47
38
  margin-top: calc(#{$thumb-size} / -2 + #{$track-height} / 2);
39
+ transition: var(--odx-motion-transition-default);
40
+ transition-property: background-color;
48
41
  width: $thumb-size;
42
+
43
+ @include utils.with-outline() {
44
+ outline-color: var(--white);
45
+ }
49
46
  }
50
47
 
51
48
  @mixin thumb-focus() {
@@ -1,16 +1,11 @@
1
- @use 'sass:math';
2
- @use '../layout/helpers';
3
- @use '../abstract/dimensions';
4
- @use '../abstract/typography';
5
1
  @use '../abstract/utils';
6
- @use '../abstract/motion';
7
2
 
8
3
  .odx-form-field__control:has(.odx-spinbox) {
9
4
  background-color: transparent !important;
10
5
  outline-color: transparent !important;
11
6
 
12
7
  .odx-form-field-control {
13
- @include dimensions.padding(math.div(2, 24));
8
+ padding: var(--odx-spacing-12);
14
9
  }
15
10
 
16
11
  &::after {
@@ -33,21 +28,18 @@
33
28
  align-items: stretch;
34
29
  display: flex;
35
30
  flex: 1;
36
- gap: 1px;
31
+ gap: var(--odx-border-width-thin);
37
32
 
38
33
  &__input {
39
- @include typography.font-weight(medium);
40
- @include dimensions.padding-x(math.div(8, 24));
41
-
42
34
  appearance: textfield;
35
+ font-weight: var(--odx-typography-font-weight-medium);
36
+ letter-spacing: var(--odx-typography-font-weight-medium-letter-spacing);
37
+ padding-inline: var(--odx-control-spacing-inline-lg);
43
38
  text-align: center;
44
39
  width: 100%;
45
40
 
46
- &::placeholder {
47
- @include typography.font-weight(normal);
48
-
49
- color: var(--odx-input-control-color);
50
- opacity: 0.65;
41
+ #{$root}.is-disabled & {
42
+ color: var(--odx-input-control-color-disabled);
51
43
  }
52
44
 
53
45
  &::-webkit-inner-spin-button {
@@ -57,12 +49,13 @@
57
49
 
58
50
  &__input,
59
51
  &__action {
60
- @include motion.transition(background-color border-color color);
61
- @include utils.with-outline();
62
-
63
52
  background-color: var(--odx-input-control-background-color);
64
53
  border: 1px solid var(--odx-input-control-outline-color);
65
54
  position: relative;
55
+ transition: var(--odx-motion-transition-default);
56
+ transition-property: background-color, border-color, color;
57
+
58
+ @include utils.with-outline();
66
59
 
67
60
  #{$root}.has-error & {
68
61
  background-color: var(--odx-input-control-background-color-error);
@@ -70,12 +63,12 @@
70
63
  }
71
64
 
72
65
  #{$root} &:hover {
73
- background-color: var(--odx-input-control-background-color-hover);
66
+ background-color: var(--odx-color-background-transparent-hover);
74
67
  border-color: var(--odx-input-control-outline-color-hover);
75
68
  }
76
69
 
77
70
  #{$root} &:active {
78
- background-color: var(--odx-input-control-outline-color-hover);
71
+ background-color: var(--odx-color-background-transparent-pressed);
79
72
  border-color: var(--odx-input-control-outline-color-hover);
80
73
  }
81
74
 
@@ -85,7 +78,7 @@
85
78
  }
86
79
 
87
80
  #{$root} &:focus-visible {
88
- border-radius: var(--odx-v-border-radius-controls);
81
+ border-radius: var(--odx-border-radius-control);
89
82
  border-width: 0;
90
83
  box-shadow: inset 0 0 0 calc(var(--odx-v-outline-width-bold) + var(--odx-v-outline-box-shadow-width)) var(--odx-c-focus-inner);
91
84
  outline-color: var(--odx-c-focus-outline);
@@ -96,16 +89,17 @@
96
89
  @include utils.non-interactive();
97
90
 
98
91
  background-color: var(--odx-input-control-background-color-disabled);
99
- border-color: var(--odx-input-control-outline-color-disabled) !important;
100
- color: var(--odx-input-control-color-disabled);
92
+ border-color: var(--odx-color-stroke-disabled-rest) !important;
101
93
  }
102
94
  }
103
95
 
104
96
  &__action {
105
- border-radius: var(--odx-v-border-radius-controls);
106
- flex: 0 0 dimensions.get-size(math.div(36, 24));
97
+ border-radius: var(--odx-border-radius-control);
98
+ display: grid;
99
+ flex: 0 0 var(--odx-size-225);
107
100
  height: 100%;
108
101
  margin: 0;
102
+ place-content: center;
109
103
 
110
104
  &::before {
111
105
  position: static;
@@ -128,5 +122,9 @@
128
122
 
129
123
  color: var(--odx-input-control-color-disabled);
130
124
  }
125
+
126
+ #{$root}.is-disabled & {
127
+ color: var(--odx-color-foreground-disabled-rest);
128
+ }
131
129
  }
132
130
  }
@@ -1,28 +1,60 @@
1
- @use 'sass:math';
2
- @use '../layout/helpers';
3
- @use '../abstract/dimensions';
4
- @use '../abstract/typography';
5
1
  @use '../abstract/utils';
6
- @use '../abstract/motion';
7
-
8
- @mixin track-color($background, $stroke: null) {
9
- background-color: $background;
10
-
11
- @if $stroke {
12
- border-color: $stroke;
13
- } @else {
14
- border-color: $background;
15
- }
16
- }
17
2
 
18
3
  .odx-switch {
19
4
  $root: &;
20
5
 
6
+ --switch-border-color: var(--odx-color-stroke-control-rest);
7
+ --switch-track-width: var(--odx-size-225);
8
+ --switch-track-height: var(--odx-size-50);
9
+ --switch-track-size: var(--odx-size-125);
10
+ --switch-border: var(--odx-border-width-thin) solid var(--switch-border-color);
11
+ --switch-thumb-position: calc((var(--switch-track-width) - var(--switch-track-size)) / 2 * -1);
12
+ --switch-mask-position: calc(var(--switch-thumb-position) - 1px);
13
+ --switch-icon-color: var(--odx-c-text);
14
+ --switch-thumb-bg-color: var(--odx-control-background-color);
15
+
21
16
  color: var(--odx-c-text);
22
17
  display: inline-block;
23
18
 
19
+ &:not(.is-disabled):hover {
20
+ --switch-thumb-bg-color: var(--odx-color-background-control-hover);
21
+ --switch-border-color: var(--odx-color-stroke-control-hover);
22
+ }
23
+
24
+ &.is-active,
25
+ &__input:indeterminate,
26
+ &__input:checked {
27
+ --switch-thumb-position: calc((var(--switch-track-width) - var(--switch-track-size)) / 2);
28
+ --switch-icon-color: var(--odx-color-foreground-inverse-static);
29
+ --switch-thumb-bg-color: var(--odx-control-background-color-selected);
30
+ --switch-border-color: var(--odx-control-background-color-selected);
31
+ }
32
+
33
+ &.is-active:not(.is-disabled):hover {
34
+ --switch-thumb-bg-color: var(--odx-color-background-control-selected-hover);
35
+ --switch-border-color: var(--odx-control-outline-color-hover);
36
+ }
37
+
24
38
  &.is-disabled {
25
39
  color: var(--odx-control-color-disabled);
40
+ --switch-thumb-bg-color: var(--odx-c-secondary-disabled);
41
+ --switch-border-color: var(--odx-c-secondary-disabled);
42
+ }
43
+
44
+ &.is-disabled.is-active,
45
+ &.is-disabled ~ #{$root}__input:checked,
46
+ &.is-disabled ~ #{$root}__input:indeterminate {
47
+ --switch-thumb-bg-color: var(--odx-color-background-disabled-selected);
48
+ --switch-border-color: var(--odx-color-background-disabled-selected);
49
+ }
50
+
51
+ &.has-error {
52
+ --switch-thumb-bg-color: var(--odx-input-control-background-color-error);
53
+ }
54
+
55
+ &.is-disabled:not(.is-active) {
56
+ --switch-thumb-bg-color: var(--odx-control-background-color-disabled);
57
+ --switch-border-color: var(--odx-control-background-color-disabled);
26
58
  }
27
59
 
28
60
  &.is-readonly {
@@ -30,16 +62,16 @@
30
62
  }
31
63
 
32
64
  &__label {
33
- @include dimensions.line-height(1);
34
- @include motion.transition(background-color color);
35
- @include typography.font-size(0);
36
-
37
65
  align-items: center;
38
- border-radius: dimensions.get-size(0.5);
39
66
  color: inherit;
67
+ cursor: pointer;
40
68
  display: inline-flex;
41
- min-height: dimensions.get-size(1);
69
+ font-size: var(--odx-typography-font-size-text-md);
70
+ line-height: var(--odx-typography-line-height-text-md);
71
+ min-block-size: var(--odx-spacing-150);
42
72
  padding: 0 2px;
73
+ transition: var(--odx-motion-transition-default);
74
+ transition-property: background-color, color;
43
75
  user-select: auto;
44
76
  user-select: none;
45
77
  vertical-align: top;
@@ -49,8 +81,8 @@
49
81
  }
50
82
 
51
83
  &:has(#{$root}__content:not(:empty)) {
52
- border-bottom-right-radius: var(--odx-v-border-radius-controls);
53
- border-top-right-radius: var(--odx-v-border-radius-controls);
84
+ border-bottom-right-radius: var(--odx-border-radius-control);
85
+ border-top-right-radius: var(--odx-border-radius-control);
54
86
  }
55
87
  }
56
88
 
@@ -58,122 +90,66 @@
58
90
  @include utils.visually-hidden();
59
91
 
60
92
  &:focus-visible {
61
- ~ #{$root}__track #{$root}__thumb {
93
+ ~ #{$root}__thumb-container #{$root}__thumb {
62
94
  border-width: 0;
63
95
  box-shadow: inset 0 0 0 calc(var(--odx-v-outline-box-shadow-width)) var(--odx-c-focus-inner);
64
- outline-color: var(--odx-c-focus-outline);
96
+ outline-color: var(--odx-color-stroke-focus-outer);
65
97
  outline-offset: 0;
66
98
  outline-width: var(--odx-v-outline-width-bold);
67
99
  }
68
100
  }
69
101
  }
70
102
 
71
- &__track {
72
- $track-width: dimensions.get-size(1.5);
73
- $track-height: dimensions.get-size(math.div(1, 6));
74
- $track-size: dimensions.get-size(math.div(20, 24));
75
- $border: 1px solid var(--odx-control-outline-color);
76
-
77
- @include motion.transition(background-color color);
78
-
79
- background-color: var(--odx-control-background-color);
80
- border: $border;
81
- border-radius: calc(#{$track-height} / 2);
82
- height: $track-height;
83
- position: relative;
84
- width: $track-width;
103
+ &__thumb-container {
104
+ display: grid;
105
+ grid-area: 1 / 1;
106
+ height: var(--switch-track-size);
107
+ margin: var(--odx-spacing-12);
108
+ place-items: center;
85
109
 
86
- #{$root}__thumb {
87
- @include motion.transition(background-color transform border-color);
88
-
89
- @include utils.with-outline() {
90
- outline-color: var(--odx-c-background-content);
91
- }
92
-
93
- align-items: center;
94
- background-color: var(--odx-control-background-color);
95
- border-radius: 50%;
96
- box-sizing: border-box;
97
- color: var(--odx-c-text);
98
- display: flex;
99
- font-size: dimensions.get-size(math.div(12, 24));
100
- height: $track-size;
101
- justify-content: center;
102
- position: absolute;
103
- top: calc(#{$track-size} / -2 + 50%);
104
- transform: translateX(-1px);
105
- width: $track-size;
106
-
107
- #{$root}__icon {
108
- font-size: dimensions.get-size(math.div(12, 24));
109
- }
110
+ & > * {
111
+ grid-area: 1 / 1;
110
112
  }
113
+ }
111
114
 
112
- #{$root}:hover & #{$root}__thumb {
113
- background-color: var(--odx-control-background-color-hover);
114
- }
115
-
116
- #{$root}.is-active:not(.is-disabled):hover & #{$root}__thumb {
117
- @include track-color(var(--odx-c-highlight-hover));
118
- }
119
-
120
- #{$root}.is-active &,
121
- #{$root}__input:indeterminate ~ &,
122
- #{$root}__input:checked ~ & {
123
- @include track-color(var(--odx-control-background-color-selected));
124
-
125
- #{$root}__thumb {
126
- @include track-color(var(--odx-control-background-color-selected));
127
-
128
- color: var(--odx-control-color-selected);
129
- transform: translateX(calc((#{$track-width} - #{$track-size}) - 1px));
130
- }
131
- }
132
-
133
- #{$root}.has-error & {
134
- @include track-color(var(--odx-control-background-color-error));
135
-
136
- #{$root}__thumb {
137
- @include track-color(var(--odx-control-background-color-error));
138
- }
139
- }
140
-
141
- #{$root}.has-error:hover & {
142
- outline-color: var(--odx-control-outline-color-error-hover);
143
- }
144
-
145
- #{$root}.is-disabled & {
146
- @include track-color(var(--odx-c-secondary-disabled));
147
-
148
- #{$root}__thumb {
149
- @include track-color(var(--odx-c-secondary-disabled));
150
-
151
- outline-color: transparent;
152
- }
115
+ &__thumb {
116
+ align-items: center;
117
+ background-color: var(--switch-thumb-bg-color);
118
+ border-radius: var(--odx-border-radius-circle);
119
+ box-sizing: border-box;
120
+ color: var(--switch-icon-color);
121
+ display: flex;
122
+ font-size: var(--odx-size-75);
123
+ height: var(--switch-track-size);
124
+ justify-content: center;
125
+ transform: translateX(calc(var(--switch-thumb-position)));
126
+ transition: var(--odx-motion-transition-default);
127
+ transition-property: background-color, transform, border-color;
128
+ width: var(--switch-track-size);
129
+
130
+ @include utils.with-outline(var(--odx-border-width-thin)) {
131
+ outline-color: var(--switch-border-color);
153
132
  }
154
133
 
155
- #{$root}.is-disabled.is-active &,
156
- #{$root}.is-disabled ~ #{$root}__input:checked,
157
- #{$root}.is-disabled ~ #{$root}__input:indeterminate {
158
- @include track-color(var(--odx-control-background-color-disabled-selected));
159
-
160
- #{$root}__thumb {
161
- @include track-color(var(--odx-control-background-color-disabled-selected));
162
- }
134
+ #{$root}__icon {
135
+ font-size: var(--odx-size-75);
163
136
  }
137
+ }
164
138
 
165
- #{$root}.is-disabled:not(.is-active) & {
166
- @include track-color(var(--odx-control-background-color-disabled));
167
-
168
- #{$root}__thumb {
169
- @include track-color(var(--odx-control-background-color-disabled));
170
- }
171
- }
139
+ &__track {
140
+ background-color: var(--switch-thumb-bg-color);
141
+ border: var(--switch-border);
142
+ border-radius: calc(var(--switch-track-height) / 2);
143
+ height: var(--switch-track-height);
144
+ mask-image: radial-gradient(circle closest-side at center, transparent calc(var(--switch-track-size) / 2 + var(--odx-border-width-thin)), black 0);
145
+ mask-position: calc(var(--switch-mask-position));
146
+ mask-size: calc(100% + 2 * var(--odx-border-width-thin));
147
+ transition: var(--odx-motion-transition-reduced);
148
+ width: var(--switch-track-width);
172
149
  }
173
150
 
174
151
  &__content {
175
- @include dimensions.margin(0.5, left);
176
-
152
+ margin-inline-start: var(--odx-spacing-75);
177
153
  padding-left: 2px;
178
154
 
179
155
  &:empty {
@@ -183,9 +159,8 @@
183
159
  }
184
160
 
185
161
  &__required {
186
- @include typography.font-size(0);
187
-
188
162
  color: var(--odx-c-error-text);
163
+ font-size: var(--odx-typography-font-size-text-md);
189
164
  margin-left: 2px;
190
165
  vertical-align: top;
191
166
 
@@ -1,24 +1,22 @@
1
- @use 'sass:math';
2
- @use '../abstract/dimensions';
3
- @use '../abstract/motion';
4
- @use '../abstract/typography';
5
- @use '../abstract//utils';
1
+ @use '../abstract/utils';
6
2
 
7
3
  .odx-tab-bar-item {
8
- @include dimensions.height(2, math.div(32, 24));
9
- @include dimensions.padding-x(math.div(4, 24));
10
- @include utils.vertical-center-content();
11
- @include motion.transition(background-color);
12
- @include utils.with-outline();
13
-
14
4
  align-items: center;
15
5
  background-color: transparent;
16
- border-radius: var(--odx-v-border-radius-controls);
6
+ border-radius: var(--odx-border-radius-control);
17
7
  cursor: pointer;
18
- min-inline-size: dimensions.get-size(math.div(72, 24));
8
+ margin-block: var(--odx-spacing-50);
9
+ min-block-size: var(--odx-control-height-sm);
10
+ min-inline-size: var(--odx-size-450);
11
+ padding-inline: var(--odx-spacing-25);
19
12
  scroll-snap-align: center;
13
+ transition: var(--odx-motion-transition-default);
14
+ transition-property: background-color;
20
15
  user-select: none;
21
16
 
17
+ @include utils.vertical-center-content();
18
+ @include utils.with-outline();
19
+
22
20
  &__label {
23
21
  flex: 1;
24
22
  }
@@ -28,19 +26,19 @@
28
26
  }
29
27
 
30
28
  .odx-icon {
31
- @include dimensions.container(1, 1);
32
- @include dimensions.margin-x(math.div(4, 24));
33
-
34
- font-size: dimensions.get-size(1);
29
+ font-size: var(--odx-size-150);
30
+ height: var(--odx-size-150);
31
+ margin-inline: var(--odx-spacing-25);
32
+ width: var(--odx-size-150);
35
33
 
36
34
  &:first-child {
37
35
  margin-inline-start: 0;
38
36
  }
39
37
 
40
38
  &:last-child:not(:first-child) {
41
- @include motion.transition(color);
42
-
43
39
  margin-inline-end: 0;
40
+ transition: var(--odx-motion-transition-default);
41
+ transition-property: color;
44
42
 
45
43
  &:hover {
46
44
  color: var(--odx-c-highlight);
@@ -1,22 +1,18 @@
1
- @use 'sass:math';
2
- @use '../abstract/dimensions';
3
- @use '../abstract/motion';
4
1
  @use '../abstract/utils';
5
2
 
6
3
  .odx-tab-bar {
7
4
  $root: &;
8
5
 
9
- @include dimensions.height(2);
10
-
11
- border-bottom: 1px solid;
12
- border-bottom-color: var(--odx-control-outline-color-hover);
6
+ border-bottom: var(--odx-border-width-thin) solid;
7
+ border-bottom-color: var(--odx-color-stroke-neutral-subtle);
13
8
  display: flex;
9
+ min-block-size: var(--odx-control-height-lg);
14
10
  overflow: hidden;
15
11
  position: relative;
16
12
 
17
13
  &__inner {
18
- $gradient-start: dimensions.get-size(1);
19
- $gradient-end: dimensions.get-size(3);
14
+ $gradient-start: var(--odx-spacing-150);
15
+ $gradient-end: var(--odx-size-450);
20
16
  $mask-color: #000000;
21
17
 
22
18
  display: flex;
@@ -47,49 +43,49 @@
47
43
  }
48
44
 
49
45
  &__panel {
50
- @include motion.transition(transform);
51
- @include dimensions.padding-x(math.div(12, 24));
52
-
53
46
  display: flex;
54
47
  flex: 0 0 auto;
55
- gap: dimensions.get-size(math.div(8, 24));
48
+ gap: var(--odx-spacing-50);
49
+ padding-inline: var(--odx-spacing-75);
56
50
  position: relative;
51
+ transition: var(--odx-motion-transition-default);
52
+ transition-property: transform;
57
53
  }
58
54
 
59
55
  &__action {
60
- @include dimensions.height(2);
61
- @include motion.transition(opacity width padding);
62
- @include utils.center-content();
63
-
64
56
  background-color: transparent;
65
57
  cursor: pointer;
58
+ min-block-size: var(--odx-control-height-lg);
66
59
  opacity: 0;
67
60
  overflow: hidden;
68
61
  padding: 0;
69
62
  pointer-events: none;
70
63
  position: absolute;
71
64
  top: 0;
65
+ transition: var(--odx-motion-transition-default);
66
+ transition-property: opacity, width, padding;
72
67
  user-select: none;
73
68
  width: 0;
74
- z-index: var(--odx-v-layer-2);
69
+ z-index: var(--odx-z-level-interactive);
75
70
 
76
- &.is-active {
77
- @include dimensions.padding(math.div(8, 24), (right, left));
71
+ @include utils.center-content();
78
72
 
73
+ &.is-active {
79
74
  opacity: 1;
75
+ padding-inline: var(--odx-control-spacing-inline-lg);
80
76
  pointer-events: all;
81
77
  transform: scaleX(1);
82
- width: dimensions.get-size(1.5);
78
+ width: var(--odx-size-225);
83
79
  }
84
80
 
85
81
  .odx-icon {
86
- @include dimensions.container(1, 1);
87
-
88
82
  align-items: center;
89
83
  color: var(--odx-c-highlight);
90
84
  display: flex;
91
- font-size: dimensions.get-size(math.div(32, 24));
85
+ font-size: var(--odx-size-200);
86
+ height: var(--odx-size-150);
92
87
  justify-content: center;
88
+ width: var(--odx-size-150);
93
89
  }
94
90
 
95
91
  &--prev {
@@ -112,12 +108,11 @@
112
108
  }
113
109
 
114
110
  .odx-tab-bar__indicator {
115
- @include dimensions.margin(math.div(4, 24), left);
116
-
117
111
  background-color: var(--odx-c-highlight);
112
+ block-size: var(--odx-spacing-25);
118
113
  bottom: -1px;
119
- height: dimensions.get-size(math.div(4, 24));
120
- width: dimensions.get-size(2) !important;
114
+ margin-inline-start: var(--odx-spacing-25);
115
+ width: var(--odx-size-300) !important;
121
116
  }
122
117
 
123
118
  &:focus-visible {