@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,7 +1,3 @@
1
- @use 'sass:math';
2
- @use '../abstract/dimensions';
3
- @use '../abstract/motion';
4
- @use '../abstract/typography';
5
1
  @use '../abstract/utils';
6
2
 
7
3
  .odx-calendar {
@@ -17,18 +13,19 @@
17
13
  }
18
14
 
19
15
  &-header {
20
- @include motion.transition(background-color color border-radius);
21
- @include utils.vertical-center-content();
22
- @include typography.font-weight(normal);
23
-
24
16
  background-color: var(--odx-c-background-content);
25
17
  border-bottom: 1px solid var(--odx-input-control-outline-color);
18
+ font-weight: var(--odx-typography-font-weight-normal);
19
+ letter-spacing: var(--odx-typography-font-weight-normal-letter-spacing);
20
+ transition: var(--odx-motion-transition-default);
21
+ transition-property: background-color, color, border-radius;
22
+
23
+ @include utils.vertical-center-content();
26
24
 
27
25
  .odx-action-group {
26
+ margin-block-end: var(--odx-spacing-25);
27
+ margin-block-start: 0;
28
28
  width: 100%;
29
-
30
- @include dimensions.margin(0, top);
31
- @include dimensions.margin(math.div(4, 24), bottom);
32
29
  }
33
30
 
34
31
  &__title {
@@ -37,18 +34,21 @@
37
34
  }
38
35
 
39
36
  &-cell {
40
- @include dimensions.container(1.5);
41
- @include motion.transition(background-color color border-radius box-shadow);
42
- @include utils.interactive();
43
- @include typography.font-weight(normal);
44
-
45
- border-radius: var(--odx-v-border-radius-controls);
37
+ border-radius: var(--odx-border-radius-control);
46
38
  cursor: pointer;
39
+ font-weight: var(--odx-typography-font-weight-normal);
40
+ height: var(--odx-size-225);
41
+ letter-spacing: var(--odx-typography-font-weight-normal-letter-spacing);
47
42
  position: relative;
48
43
  text-align: center;
44
+ transition: var(--odx-motion-transition-default);
45
+ transition-property: background-color, color, border-radius, box-shadow;
49
46
  vertical-align: middle;
47
+ width: var(--odx-size-225);
50
48
  z-index: 1;
51
49
 
50
+ @include utils.interactive();
51
+
52
52
  &--adjacent,
53
53
  &.is-disabled {
54
54
  color: var(--odx-input-control-color-disabled);
@@ -62,12 +62,13 @@
62
62
  }
63
63
 
64
64
  &:hover:not(.is-in-any-range) {
65
- background-color: var(--blue-700-10);
65
+ background-color: var(--odx-input-control-background-color);
66
66
  }
67
67
 
68
68
  &--is-current,
69
69
  &.is-selected:not(.is-in-any-range) {
70
- @include typography.font-weight(medium);
70
+ font-weight: var(--odx-typography-font-weight-medium);
71
+ letter-spacing: var(--odx-typography-font-weight-medium-letter-spacing);
71
72
  }
72
73
 
73
74
  &.is-selected:not(.is-in-any-range) {
@@ -82,36 +83,36 @@
82
83
  &-month {
83
84
  #{$root}__table {
84
85
  border-collapse: separate;
85
- border-spacing: dimensions.get-size(math.div(4, 24));
86
-
87
- @include dimensions.margin-x(math.div(-4, 24));
86
+ border-spacing: var(--odx-spacing-25);
87
+ margin-inline: var(--odx-spacing-negative-25);
88
88
  }
89
89
 
90
90
  #{$root}__weekdays {
91
- @include typography.font-weight(semibold);
92
- @include typography.font-size(-1);
93
- @include utils.non-interactive();
94
-
91
+ font-size: var(--odx-typography-font-size-text-sm);
92
+ font-weight: var(--odx-typography-font-weight-semibold);
93
+ letter-spacing: var(--odx-typography-font-weight-semibold-letter-spacing);
95
94
  text-align: center;
96
95
 
97
- td {
98
- @include dimensions.container(1.5);
96
+ @include utils.non-interactive();
99
97
 
98
+ td {
99
+ height: var(--odx-size-225);
100
100
  vertical-align: middle;
101
+ width: var(--odx-size-225);
101
102
  }
102
103
  }
103
104
 
104
105
  #{$root}-cell {
105
106
  &--is-current::after {
106
- @include dimensions.container(1);
107
- @include dimensions.margin(0.25);
108
-
109
- background-color: var(--blue-700-15);
110
- border-radius: 50%;
107
+ background-color: var(--odx-input-control-background-color);
108
+ border-radius: var(--odx-border-radius-circle);
111
109
  content: '';
110
+ height: var(--odx-size-150);
112
111
  left: 0;
112
+ margin: var(--odx-spacing-37);
113
113
  position: absolute;
114
114
  top: 0;
115
+ width: var(--odx-size-150);
115
116
  z-index: -1;
116
117
  }
117
118
 
@@ -127,20 +128,22 @@
127
128
  }
128
129
 
129
130
  &--is-range-start {
130
- @include typography.font-weight(medium);
131
+ font-weight: var(--odx-typography-font-weight-medium);
132
+ letter-spacing: var(--odx-typography-font-weight-medium-letter-spacing);
131
133
 
132
134
  &::before {
133
- border-bottom-left-radius: var(--odx-v-border-radius-controls);
134
- border-top-left-radius: var(--odx-v-border-radius-controls);
135
+ border-bottom-left-radius: var(--odx-border-radius-control);
136
+ border-top-left-radius: var(--odx-border-radius-control);
135
137
  }
136
138
  }
137
139
 
138
140
  &--is-range-end {
139
- @include typography.font-weight(medium);
141
+ font-weight: var(--odx-typography-font-weight-medium);
142
+ letter-spacing: var(--odx-typography-font-weight-medium-letter-spacing);
140
143
 
141
144
  &::before {
142
- border-bottom-right-radius: var(--odx-v-border-radius-controls);
143
- border-top-right-radius: var(--odx-v-border-radius-controls);
145
+ border-bottom-right-radius: var(--odx-border-radius-control);
146
+ border-top-right-radius: var(--odx-border-radius-control);
144
147
  }
145
148
  }
146
149
 
@@ -160,22 +163,24 @@
160
163
  }
161
164
 
162
165
  &--is-preview-range-start {
163
- @include typography.font-weight(medium);
166
+ font-weight: var(--odx-typography-font-weight-medium);
167
+ letter-spacing: var(--odx-typography-font-weight-medium-letter-spacing);
164
168
 
165
169
  &::before {
166
170
  background-color: var(--odx-c-selected);
167
- border-bottom-left-radius: var(--odx-v-border-radius-controls);
168
- border-top-left-radius: var(--odx-v-border-radius-controls);
171
+ border-bottom-left-radius: var(--odx-border-radius-control);
172
+ border-top-left-radius: var(--odx-border-radius-control);
169
173
  }
170
174
  }
171
175
 
172
176
  &--is-preview-range-end {
173
- @include typography.font-weight(medium);
177
+ font-weight: var(--odx-typography-font-weight-medium);
178
+ letter-spacing: var(--odx-typography-font-weight-medium-letter-spacing);
174
179
 
175
180
  &::before {
176
181
  background-color: var(--odx-c-selected);
177
- border-bottom-right-radius: var(--odx-v-border-radius-controls);
178
- border-top-right-radius: var(--odx-v-border-radius-controls);
182
+ border-bottom-right-radius: var(--odx-border-radius-control);
183
+ border-top-right-radius: var(--odx-border-radius-control);
179
184
  }
180
185
  }
181
186
 
@@ -189,7 +194,7 @@
189
194
  &-years {
190
195
  #{$root}-cell {
191
196
  &--is-current {
192
- background-color: var(--blue-700-10);
197
+ background-color: var(--odx-input-control-background-color);
193
198
  }
194
199
  }
195
200
  }
@@ -197,25 +202,24 @@
197
202
  &-year {
198
203
  #{$root}__body {
199
204
  display: inline-table;
200
-
201
- @include dimensions.margin-y(1.75);
205
+ margin-block: calc(var(--odx-spacing-100) * 2 + var(--odx-spacing-50) + var(--odx-spacing-12));
202
206
  }
203
207
 
204
208
  #{$root}__table {
205
- @include dimensions.margin(1.42, bottom);
209
+ margin-block-end: calc(var(--odx-spacing-100) * 2 + var(--odx-spacing-12));
206
210
  }
207
211
 
208
212
  #{$root}__season {
209
213
  display: grid;
210
- grid-gap: 50px;
214
+ grid-gap: var(--odx-size-300);
211
215
  grid-template-columns: repeat(3, 1fr);
212
216
  margin: 2px 0;
213
-
214
- @include dimensions.padding-x(1.16);
217
+ padding-inline: calc(var(--odx-spacing-150) + var(--odx-spacing-25));
215
218
  }
216
219
 
217
220
  #{$root}-cell {
218
- @include dimensions.container(math.div(5, 3));
221
+ height: var(--odx-size-250);
222
+ width: var(--odx-size-250);
219
223
  }
220
224
  }
221
225
 
@@ -226,14 +230,14 @@
226
230
 
227
231
  #{$root}__year-row {
228
232
  display: grid;
229
- grid-gap: 36px;
233
+ grid-gap: var(--odx-size-225);
230
234
  grid-template-columns: repeat(3, 1fr);
231
235
  margin: 2px 0;
232
236
  }
233
237
 
234
238
  #{$root}-cell {
235
- height: dimensions.get-size(math.div(5, 3));
236
- width: dimensions.get-size(2);
239
+ block-size: var(--odx-size-250);
240
+ inline-size: var(--odx-control-height-lg);
237
241
  }
238
242
  }
239
243
  }
@@ -1,7 +1,4 @@
1
- @use 'sass:math';
2
1
  @use '../abstract/breakpoints';
3
- @use '../abstract/dimensions';
4
- @use '../abstract/motion';
5
2
  @use '../abstract/typography';
6
3
  @use '../abstract/utils';
7
4
  @use '../layout/typography' as *;
@@ -20,24 +17,25 @@
20
17
  $root: &;
21
18
  $main-padding: var(--odx-card-main-padding);
22
19
 
23
- --odx-card-main-padding: #{dimensions.get-size(math.div(12, 24))};
24
- --odx-card-gap: #{dimensions.get-size(math.div(12, 24))};
20
+ --odx-card-main-padding: var(--odx-spacing-75);
21
+ --odx-card-gap: var(--odx-spacing-75);
25
22
 
26
23
  background-color: var(--odx-c-background-content);
27
24
  behavior: button;
28
25
  border: var(--odx-v-outline-width-bold) solid transparent;
29
- border-radius: var(--odx-v-border-radius);
26
+ border-radius: var(--odx-border-radius-md);
30
27
  container-name: card-root;
31
28
  container-type: inline-size;
32
29
  display: block;
33
30
  padding: $main-padding;
34
31
  position: relative;
32
+ transition: var(--odx-motion-transition-default);
33
+ transition-property: box-shadow, color, border-color;
35
34
 
36
- @include motion.transition(box-shadow color border-color);
37
35
  @include utils.interactive();
38
36
 
39
37
  &--image-card {
40
- --odx-card-main-padding: #{dimensions.get-size(1)};
38
+ --odx-card-main-padding: var(--odx-spacing-150);
41
39
 
42
40
  overflow: clip;
43
41
  }
@@ -63,15 +61,13 @@
63
61
 
64
62
  #{$root}--launch-tile &,
65
63
  #{$root}--launch-tile-centered & {
66
- @include dimensions.padding-y(0.5);
67
- @include dimensions.padding-x(math.div(8, 24));
68
-
69
- gap: dimensions.get-size(math.div(16, 24));
64
+ gap: var(--odx-spacing-100);
65
+ padding-block: var(--odx-size-125);
66
+ padding-inline: var(--odx-control-spacing-inline-lg);
70
67
 
71
68
  @include breakpoints.up(phone) {
72
- @include dimensions.padding(1, bottom);
73
-
74
- gap: dimensions.get-size(1);
69
+ gap: var(--odx-spacing-150);
70
+ padding-block-end: var(--odx-spacing-150);
75
71
  }
76
72
  }
77
73
  }
@@ -82,29 +78,56 @@
82
78
  display: block;
83
79
  margin: $img-margin $img-margin 0 $img-margin;
84
80
  max-height: var(--odx-card-image-max-height);
85
- max-width: max-content;
81
+
82
+ /* allow the image container to span the card width (including the card padding)
83
+ so aspect-ratio can compute height. We compute width as 100% + 2 * padding
84
+ and keep the negative margins so the element visually spans the card edges. */
85
+ max-width: none;
86
86
  overflow: clip;
87
+ width: calc(100% + (#{$main-padding} * 2));
88
+
89
+ &__img {
90
+ aspect-ratio: var(--odx-card-image-aspect-ratio);
91
+ display: block;
92
+ max-height: var(--odx-card-image-max-height);
93
+ overflow: hidden;
94
+ position: relative; /* required for ngOptimizedImage's img[fill] */
95
+ width: 100%;
96
+ }
97
+
98
+ /* Fallback when aspect-ratio is "auto": ensure the image area has a usable height
99
+ so ngSrc[fill] (absolutely positioned img) has a non-zero container. The
100
+ host gets the class `has-aspect-auto` from the component when
101
+ imageRatio resolves to 'auto'. The fallback height can be overridden by
102
+ setting --odx-card-image-fallback-height. */
103
+ &.has-aspect-auto.has-fill {
104
+ #{$root}-image__img {
105
+ max-height: var(--odx-card-image-max-height);
106
+ min-height: var(--odx-card-image-fallback-height, 200px);
107
+ }
108
+ }
87
109
 
88
110
  img {
89
111
  aspect-ratio: var(--odx-card-image-aspect-ratio);
90
112
  display: block;
91
113
  height: auto;
92
114
  max-width: 100%;
93
- object-fit: cover;
115
+ object-fit: var(--odx-card-image-object-fit);
94
116
  }
95
117
  }
96
118
 
97
119
  .odx-chip-list-row:has(.odx-chip) {
98
120
  left: $main-padding;
99
- padding: dimensions.get-size(math.div(6, 24)) 0;
121
+ padding: var(--odx-spacing-37) 0;
100
122
  position: absolute;
101
123
  top: $main-padding;
102
- width: calc(100% - dimensions.get-size(math.div(40, 24)) - #{$main-padding} - dimensions.get-size(math.div(30, 24)));
124
+ width: calc(100% - var(--odx-size-250) - #{$main-padding} - calc(var(--odx-vertical-rythm-base-size) * (30 / 24)));
125
+ z-index: var(--odx-z-level-foreground);
103
126
  }
104
127
 
105
128
  &__content {
106
129
  #{$root}--default & {
107
- padding-right: dimensions.get-size(math.div(40, 24));
130
+ padding-right: var(--odx-size-250);
108
131
  }
109
132
 
110
133
  #{$root}--launch-tile &,
@@ -118,26 +141,32 @@
118
141
 
119
142
  &__title {
120
143
  #{$root}--default & {
121
- padding-right: dimensions.get-size(math.div(36, 24));
144
+ padding-right: var(--odx-size-225);
145
+ }
146
+
147
+ #{$root}--launch-tile & {
148
+ @include breakpoints.container-down(card-root, phone) {
149
+ margin-inline-end: var(--odx-size-225);
150
+ }
122
151
  }
123
152
 
124
153
  #{$root}--launch-tile &,
125
154
  #{$root}--launch-tile-centered & {
126
- font-size: dimensions.get-size(math.div(20, 24));
127
- line-height: dimensions.get-size(math.div(30, 24));
155
+ font-size: var(--odx-size-125);
156
+ font-weight: var(--odx-typography-font-weight-medium);
157
+ letter-spacing: var(--odx-typography-font-weight-medium-letter-spacing);
158
+ line-height: calc(var(--odx-spacing-150) + var(--odx-spacing-25) + var(--odx-spacing-12));
128
159
  overflow-wrap: anywhere;
129
160
 
130
- @include typography.font-weight(medium);
131
161
  @include typography.line-clamp(3);
132
162
 
133
163
  @include breakpoints.up(phone) {
134
- @include dimensions.margin-y(math.div(9, 24));
135
-
136
- font-size: dimensions.get-size(math.div(25, 24));
164
+ font-size: calc(var(--odx-size-125) + var(--odx-spacing-25));
165
+ margin-block: calc(var(--odx-spacing-75) - var(--odx-spacing-12));
137
166
  }
138
167
 
139
168
  @include breakpoints.container-down(card-root, phone) {
140
- margin-inline-end: dimensions.get-size(math.div(36, 24));
169
+ margin-inline-end: var(--odx-size-225);
141
170
  }
142
171
  }
143
172
  }
@@ -171,11 +200,11 @@
171
200
  padding-right: unset;
172
201
 
173
202
  #{$root}--launch-tile & {
174
- @include dimensions.padding-y(1);
203
+ padding-block: var(--odx-size-250);
175
204
  }
176
205
 
177
206
  #{$root}--launch-tile-centered & {
178
- gap: dimensions.get-size(math.div(16, 24));
207
+ gap: var(--odx-spacing-100);
179
208
  }
180
209
  }
181
210
  }
@@ -183,21 +212,19 @@
183
212
  .odx-avatar {
184
213
  flex: 0 0 auto;
185
214
  height: var(--odx-card-avatar-size);
215
+ margin-block: var(--odx-spacing-25);
186
216
  width: var(--odx-card-avatar-size);
187
217
 
188
- @include dimensions.margin-y(math.div(4, 24));
189
-
190
218
  @include breakpoints.up(phone) {
191
- margin: dimensions.get-size(math.div(4, 24)) auto 0;
219
+ margin: var(--odx-spacing-25) auto 0;
192
220
  }
193
221
  }
194
222
 
195
223
  &__footer {
196
- @include dimensions.padding-x(0.5);
197
-
198
224
  display: flex;
199
- gap: dimensions.get-size(math.div(12, 24));
225
+ gap: var(--odx-spacing-75);
200
226
  justify-content: flex-end;
227
+ padding-inline: var(--odx-size-125);
201
228
 
202
229
  #{$root}--default & {
203
230
  display: block;
@@ -213,7 +240,7 @@
213
240
  justify-content: center;
214
241
  }
215
242
 
216
- padding-bottom: dimensions.get-size(math.div(12, 24));
243
+ padding-bottom: var(--odx-spacing-75);
217
244
  }
218
245
 
219
246
  .odx-button {
@@ -1,21 +1,21 @@
1
- .odx-chart-footer {
2
- align-items: center;
3
- display: flex;
4
- gap: calc(var(--odx-vertical-rythm-base-size) * 0.75);
5
- justify-content: flex-end;
6
- padding: calc(var(--odx-vertical-rythm-base-size) * 0.5) 0;
7
- width: 100%;
8
-
9
- .legend-item {
10
- align-items: center;
11
- display: flex;
12
- font-size: calc(var(--odx-typography-base-size) * 0.875);
13
- gap: calc(var(--odx-vertical-rythm-base-size) * 0.25);
14
- }
15
-
16
- .legend-dot {
17
- border-radius: 50%;
18
- height: calc(var(--odx-vertical-rythm-base-size) * 0.375);
19
- width: calc(var(--odx-vertical-rythm-base-size) * 0.375);
20
- }
21
- }
1
+ .odx-chart-footer {
2
+ align-items: center;
3
+ display: flex;
4
+ gap: var(--odx-spacing-100);
5
+ justify-content: flex-end;
6
+ padding: calc(var(--odx-vertical-rythm-base-size) * 0.5) 0;
7
+ width: 100%;
8
+
9
+ .legend-item {
10
+ align-items: center;
11
+ display: flex;
12
+ font-size: calc(var(--odx-typography-base-size) * 0.875);
13
+ gap: var(--odx-control-spacing-inline-md);
14
+ }
15
+
16
+ .legend-dot {
17
+ border-radius: 50%;
18
+ height: calc(var(--odx-vertical-rythm-base-size) * 0.375);
19
+ width: calc(var(--odx-vertical-rythm-base-size) * 0.375);
20
+ }
21
+ }
@@ -1,49 +1,49 @@
1
- .odx-chart-header {
2
- display: flex;
3
- padding: calc(var(--odx-vertical-rythm-base-size) * 0.5) 0;
4
- width: 100%;
5
-
6
- .odx-chart-header__actions {
7
- display: none;
8
- gap: calc(var(--odx-vertical-rythm-base-size) * 0.5);
9
- margin-left: auto;
10
- }
11
- }
12
-
13
- .odx-chart-header--center {
14
- align-items: center;
15
- display: flex;
16
- gap: calc(var(--odx-vertical-rythm-base-size) * 0.5);
17
- justify-content: center;
18
- min-height: calc(var(--odx-vertical-rythm-base-size) * 1.5);
19
- padding: calc(var(--odx-vertical-rythm-base-size) * 0.5) 0;
20
- }
21
-
22
- .odx-chart-header--split,
23
- .odx-chart-header--controls,
24
- .odx-chart-header--toggle,
25
- .odx-chart-header--textlink {
26
- align-items: center;
27
- display: flex;
28
- gap: calc(var(--odx-vertical-rythm-base-size) * 0.5);
29
- justify-content: space-between;
30
- min-height: calc(var(--odx-vertical-rythm-base-size) * 1.5);
31
- padding: calc(var(--odx-vertical-rythm-base-size) * 0.5) 0;
32
-
33
- .odx-chart-header__actions {
34
- align-items: center;
35
- display: flex;
36
- }
37
- }
38
-
39
- .odx-chart-header--controls {
40
- .odx-chart-header__actions form {
41
- align-items: center;
42
- display: flex;
43
- gap: calc(var(--odx-vertical-rythm-base-size) * 0.5);
44
-
45
- .odx-select__trigger {
46
- padding: 0 calc(var(--odx-vertical-rythm-base-size) * 0.3);
47
- }
48
- }
49
- }
1
+ .odx-chart-header {
2
+ display: flex;
3
+ padding: calc(var(--odx-vertical-rythm-base-size) * 0.5) 0;
4
+ width: 100%;
5
+
6
+ .odx-chart-header__actions {
7
+ display: none;
8
+ gap: var(--odx-spacing-75);
9
+ margin-left: auto;
10
+ }
11
+ }
12
+
13
+ .odx-chart-header--center {
14
+ align-items: center;
15
+ display: flex;
16
+ gap: var(--odx-spacing-75);
17
+ justify-content: center;
18
+ min-height: calc(var(--odx-vertical-rythm-base-size) * 1.5);
19
+ padding: calc(var(--odx-vertical-rythm-base-size) * 0.5) 0;
20
+ }
21
+
22
+ .odx-chart-header--split,
23
+ .odx-chart-header--controls,
24
+ .odx-chart-header--toggle,
25
+ .odx-chart-header--textlink {
26
+ align-items: center;
27
+ display: flex;
28
+ gap: var(--odx-spacing-75);
29
+ justify-content: space-between;
30
+ min-height: calc(var(--odx-vertical-rythm-base-size) * 1.5);
31
+ padding: calc(var(--odx-vertical-rythm-base-size) * 0.5) 0;
32
+
33
+ .odx-chart-header__actions {
34
+ align-items: center;
35
+ display: flex;
36
+ }
37
+ }
38
+
39
+ .odx-chart-header--controls {
40
+ .odx-chart-header__actions form {
41
+ align-items: center;
42
+ display: flex;
43
+ gap: var(--odx-spacing-75);
44
+
45
+ .odx-select__trigger {
46
+ padding: 0 calc(var(--odx-vertical-rythm-base-size) * 0.3);
47
+ }
48
+ }
49
+ }