@odx/ui 1.0.0-rc.2 → 1.0.0-rc.21

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 (73) hide show
  1. package/323d385340fb9fee6450.svg +6 -0
  2. package/README.md +4 -4
  3. package/core-icons.css +43 -0
  4. package/core-icons.woff2 +0 -0
  5. package/core-theme.css +1 -1
  6. package/package.json +2 -1
  7. package/scss/abstract/_breakpoints.scss +12 -6
  8. package/scss/abstract/_dimensions.scss +2 -1
  9. package/scss/abstract/_motion.scss +3 -1
  10. package/scss/abstract/_utils.scss +18 -8
  11. package/scss/assets/fonts/PangeaText-MediumWeb.woff2 +0 -0
  12. package/scss/assets/fonts/PangeaText-RegularWeb.woff2 +0 -0
  13. package/scss/assets/fonts/PangeaText-SemiBoldWeb.woff2 +0 -0
  14. package/scss/assets/images/logo.svg +6 -0
  15. package/scss/cdk/active-indicator.scss +25 -0
  16. package/scss/cdk/connected-overlay.scss +36 -0
  17. package/scss/components/accordion-item.component.scss +5 -8
  18. package/scss/components/action-group.component.scss +3 -3
  19. package/scss/components/area-header.component.scss +15 -23
  20. package/scss/components/avatar.component.scss +6 -1
  21. package/scss/components/badge.component.scss +5 -14
  22. package/scss/components/bar.component.scss +86 -0
  23. package/scss/components/breadcrumbs.component.scss +26 -0
  24. package/scss/components/button-group.component.scss +9 -5
  25. package/scss/components/button.component.scss +26 -2
  26. package/scss/components/checkbox.component.scss +2 -1
  27. package/scss/components/chip.component.scss +52 -0
  28. package/scss/components/circular-progress.component.scss +75 -0
  29. package/scss/components/content-box.component.scss +20 -16
  30. package/scss/components/dropdown.component.scss +28 -0
  31. package/scss/components/expandable-list-item.component.scss +66 -0
  32. package/scss/components/form-field.component.scss +41 -9
  33. package/scss/components/header.component.scss +10 -4
  34. package/scss/components/icon.component.scss +1 -1
  35. package/scss/components/inline-message.component.scss +33 -0
  36. package/scss/components/launch-tile.component.scss +119 -0
  37. package/scss/components/list-item.component.scss +107 -0
  38. package/scss/components/list.component.scss +3 -0
  39. package/scss/components/loading-spinner.component.scss +54 -0
  40. package/scss/components/main-menu-item.component.scss +2 -1
  41. package/scss/components/main-menu.component.scss +6 -4
  42. package/scss/components/mainfilter-group.component.scss +80 -0
  43. package/scss/components/menu.component.scss +52 -0
  44. package/scss/components/modal.component.scss +79 -10
  45. package/scss/components/progress.component.scss +41 -0
  46. package/scss/components/radio-button.component.scss +1 -1
  47. package/scss/components/rail-navigation-item.component.scss +60 -0
  48. package/scss/components/rail-navigation.component.scss +32 -0
  49. package/scss/components/select.component.scss +107 -0
  50. package/scss/components/slider.component.scss +131 -0
  51. package/scss/components/spinbox.component.scss +124 -0
  52. package/scss/components/switch.component.scss +4 -4
  53. package/scss/components/tab-bar-item.component.scss +53 -0
  54. package/scss/components/tab-bar.component.scss +124 -0
  55. package/scss/components/toast-item.component.scss +77 -0
  56. package/scss/components/toast.component.scss +33 -0
  57. package/scss/components/toggle-button-group.component.scss +43 -4
  58. package/scss/components/toggle-button.component.scss +51 -29
  59. package/scss/components/tooltip.component.scss +34 -0
  60. package/scss/core.scss +34 -10
  61. package/scss/layout/_base.scss +6 -0
  62. package/scss/layout/_content.scss +25 -0
  63. package/scss/layout/_description-list.scss +30 -0
  64. package/scss/layout/_helpers.scss +6 -16
  65. package/scss/layout/_layout.scss +4 -0
  66. package/scss/layout/_text-list.scss +18 -0
  67. package/scss/layout/_typography.scss +23 -26
  68. package/scss/reset.scss +5 -0
  69. package/scss/variables/_color-palettes.scss +3 -2
  70. package/scss/variables/_colors.scss +9 -1
  71. package/scss/variables/_controls.scss +11 -2
  72. package/scss/variables/_typography.scss +2 -2
  73. package/scss/variables/_visuals.scss +12 -5
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@odx/ui",
3
- "version": "1.0.0-rc.2",
3
+ "version": "1.0.0-rc.21",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "files": [
7
7
  "*.css",
8
8
  "*.woff2",
9
+ "*.svg",
9
10
  "scss"
10
11
  ],
11
12
  "publishConfig": {
@@ -2,15 +2,21 @@
2
2
  @use 'sass:list';
3
3
  @use 'sass:map';
4
4
 
5
- $breakpoints: () !default;
5
+ $breakpoints: (
6
+ 'phone-s': 360px,
7
+ 'phone': 480px,
8
+ 'tablet': 768px,
9
+ 'desktop-s': 960px,
10
+ 'desktop': 1200px,
11
+ ) !default;
6
12
 
7
13
  @function get-breakpoint-names() {
8
14
  @return map.keys($breakpoints);
9
15
  }
10
16
 
11
- @function _get-value($breakpoint) {
17
+ @function get-breakpoint-value($breakpoint) {
12
18
  @if $breakpoint and not map.has-key($breakpoints, $breakpoint) {
13
- @error "Invalid breakpoint, `#{$breakpoint}` doesn't exist. Choose one of #{map.keys(breakpoints.$values)}.";
19
+ @error "Invalid breakpoint, `#{$breakpoint}` doesn't exist.";
14
20
  }
15
21
 
16
22
  @return map.get($breakpoints, $breakpoint);
@@ -18,7 +24,7 @@ $breakpoints: () !default;
18
24
 
19
25
  @function _get-next-value($breakpoint) {
20
26
  @if $breakpoint and not map.has-key($breakpoints, $breakpoint) {
21
- @error "Invalid breakpoint, `#{$breakpoint}` doesn't exist. Choose one of #{map.keys(breakpoints.$values)}.";
27
+ @error "Invalid breakpoint, `#{$breakpoint}` doesn't exist.";
22
28
  }
23
29
 
24
30
  $keys: get-breakpoint-names();
@@ -28,13 +34,13 @@ $breakpoints: () !default;
28
34
  }
29
35
 
30
36
  @function _get-min-value($breakpoint) {
31
- $value: _get-value($breakpoint);
37
+ $value: get-breakpoint-value($breakpoint);
32
38
 
33
39
  @return if($value != 0, $value, null);
34
40
  }
35
41
 
36
42
  @function _get-max-value($breakpoint) {
37
- $value: _get-value($breakpoint);
43
+ $value: get-breakpoint-value($breakpoint);
38
44
 
39
45
  @return if($value > 0, $value - 1, null);
40
46
  }
@@ -1,9 +1,10 @@
1
1
  @use 'sass:math';
2
2
 
3
3
  @function _get-line-height-factor($factor, $line-height-factor) {
4
- @if $line-height-factor == null {
4
+ @if not $line-height-factor {
5
5
  @return $factor;
6
6
  }
7
+
7
8
  @return $line-height-factor;
8
9
  }
9
10
 
@@ -1,8 +1,10 @@
1
+ @use 'sass:list';
2
+
1
3
  @mixin transition($properties, $duration: var(--odx-v-transition-duration), $delay: 0ms) {
2
4
  $props: ();
3
5
 
4
6
  @each $prop in $properties {
5
- $props: append($props, $prop, comma);
7
+ $props: list.append($props, $prop, comma);
6
8
  }
7
9
 
8
10
  transition: all $duration $delay var(--odx-v-transition-easing-fn);
@@ -51,17 +51,22 @@
51
51
 
52
52
  @mixin visually-hidden() {
53
53
  appearance: none;
54
- height: 0;
55
- margin: 0;
56
- opacity: 0;
57
- outline: none !important;
54
+ border: 0;
55
+ clip: rect(0 0 0 0);
56
+ height: 1px;
57
+ left: 0;
58
+ margin: -1px;
59
+ outline: 0;
60
+ overflow: hidden;
58
61
  padding: 0;
59
62
  position: absolute;
60
- width: 0;
63
+ white-space: nowrap;
64
+ width: 1px;
61
65
  }
62
66
 
63
67
  @mixin _focus-styles($with-background) {
64
68
  outline-color: var(--odx-c-focus-outline);
69
+
65
70
  @if $with-background {
66
71
  &,
67
72
  &:hover {
@@ -91,12 +96,17 @@
91
96
  }
92
97
 
93
98
  @mixin with-outline {
94
- outline: var(--odx-v-outline);
95
- outline-offset: var(--odx-v-outline-offset);
99
+ outline: var(--odx-v-outline-width) solid transparent;
100
+ outline-offset: calc(-1 * var(--odx-v-outline-width));
101
+ }
102
+
103
+ @mixin with-outline-bold {
104
+ outline-offset: calc(-1 * var(--odx-v-outline-width-bold));
105
+ outline-width: var(--odx-v-outline-width-bold);
96
106
  }
97
107
 
98
108
  @mixin interactive($with-background: true, $focus-within: false) {
99
- @include with-outline;
109
+ @include with-outline();
100
110
  @include focus-state($with-background, $focus-within);
101
111
 
102
112
  cursor: pointer;
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 74 29">
2
+ <path
3
+ fill="#000000"
4
+ d="M29.717 2.887c0 1.4-1.127 2.535-2.512 2.535a2.522 2.522 0 0 1-2.514-2.533c0-1.4 1.124-2.534 2.514-2.534a2.523 2.523 0 0 1 2.512 2.532ZM9.827.848H0v2.554h7.779c.903 0 1.635.732 1.644 1.637v14.62a1.65 1.65 0 0 1-1.644 1.64H4.823l.001-15.516H0v18.174h9.827c2.303 0 4.17-1.868 4.192-4.187V5.036C13.998 2.717 12.13.848 9.827.848Zm13.968 6.18c-2.705-.01-4.327.186-5.537.464-1.649.414-2.318.972-2.638 1.24a2.134 2.134 0 0 1-.145.114v15.111h4.596V11.452c-.027-1.55 2.264-2.062 3.722-.984l.002-3.44Zm42.037 1.694c.324-.269.992-.823 2.634-1.235 1.205-.275 2.833-.475 5.534-.464v3.44c-1.457-1.079-3.75-.566-3.726.984v12.509h-4.593V8.84c.04-.028.09-.068.15-.12ZM31.507 21.278h-2.135c-.987.018-1.716-.705-1.737-1.76a37.415 37.415 0 0 1 0-1.91c.014-.968.75-1.743 1.737-1.73h2.135v5.4Zm.679-14.253h-7.447v3.438s2.625-.894 4.448-.894c2.222 0 2.34 1.13 2.322 1.635v2.022h-4.484c-2.048 0-3.709 1.67-3.718 3.734v3.246c0 2.07 1.665 3.75 3.718 3.75h9.077v-13.01c-.015-2.318-1.883-3.92-3.916-3.92Zm1.074-1.604a2.521 2.521 0 0 0 2.512-2.534A2.52 2.52 0 0 0 33.26.355a2.522 2.522 0 0 0-2.513 2.532 2.523 2.523 0 0 0 2.513 2.534ZM43.7 9.605c-1.776 0-1.974 1.253-1.974 1.975v1.67c0 .725.198 1.976 1.974 1.974 1.778-.001 1.975-1.25 1.975-1.975v-1.67c0-.722-.197-1.974-1.975-1.974Zm2.281 8.092H41.33c-2.038.01-3.916-1.604-3.914-3.919V10.98C37.405 8.927 39 7.014 41.3 7.025h8.566v6.72c.004 2.05-1.601 3.96-3.884 3.952Zm-.117 6.877c0 .719-.21 1.971-2.084 1.971-1.869 0-2.078-1.252-2.078-1.97v-1.673c0-.723.21-1.977 2.078-1.977 1.875 0 2.084 1.255 2.084 1.977v1.672Zm.473-6.234-5.21.002c-2.29-.003-3.892 1.868-3.885 3.92v2.785c-.005 2.305 1.88 3.956 3.917 3.953h5.204c2.288 0 3.902-1.915 3.89-3.953v-2.785a3.916 3.916 0 0 0-3.916-3.922Zm9.41-3.326h3.946v-3.449c0-.723-.253-1.975-1.972-1.975-1.722 0-1.973 1.252-1.973 1.975v3.449Zm-.59-7.99 5.173-.001c2.03 0 3.926 1.602 3.923 3.92v6.699h-8.417v2.072c.008.906.696 1.66 2.522 1.66 2.81.005 5.761-.846 5.761-.846v3.428h-8.76c-2.233.004-4.123-1.6-4.118-3.918v-9.093c0-2.33 1.879-3.93 3.916-3.921Z"
5
+ />
6
+ </svg>
@@ -0,0 +1,25 @@
1
+ @use '../abstract/motion';
2
+
3
+ .odx-cdk-active-indicator {
4
+ @include motion.transition(all);
5
+
6
+ opacity: 0;
7
+ pointer-events: none;
8
+ position: absolute;
9
+ transform-origin: 0 0;
10
+ z-index: var(--odx-v-layer-1);
11
+
12
+ &--horizontal {
13
+ left: 0;
14
+ width: 0;
15
+ }
16
+
17
+ &--vertical {
18
+ height: 0;
19
+ top: 0;
20
+ }
21
+
22
+ &--is-active {
23
+ opacity: 1;
24
+ }
25
+ }
@@ -0,0 +1,36 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/motion';
4
+ @use '../abstract/typography';
5
+ @use '../abstract/utils';
6
+
7
+ .odx-cdk-connected-overlay {
8
+ @include motion.transition(opacity visibility);
9
+
10
+ display: block;
11
+ position: fixed;
12
+ z-index: var(--odx-v-layer-3);
13
+
14
+ &.is-hidden {
15
+ opacity: 0;
16
+ visibility: hidden;
17
+ }
18
+
19
+ &__content {
20
+ left: 0 !important;
21
+ position: relative !important;
22
+ top: 0 !important;
23
+
24
+ > * {
25
+ max-height: inherit;
26
+ }
27
+ }
28
+ }
29
+
30
+ .odx-cdk-connected-overlay-arrow {
31
+ height: dimensions.get-size(0.5);
32
+ position: fixed;
33
+ transform: rotate(45deg);
34
+ width: dimensions.get-size(0.5);
35
+ z-index: var(--odx-v-layer-1);
36
+ }
@@ -7,17 +7,15 @@
7
7
  .odx-accordion-item {
8
8
  $root: &;
9
9
 
10
- @include dimensions.padding(math.div(1, 6), 'bottom');
10
+ @include motion.transition(color);
11
+ @include dimensions.padding(math.div(6, 24), top);
12
+ @include dimensions.padding(math.div(5, 24), bottom);
11
13
 
12
14
  border-bottom: 1px solid var(--odx-input-control-outline-color);
13
15
  display: block;
14
16
 
15
- &:not(:last-child) {
16
- @include dimensions.margin(1, 'bottom');
17
- }
18
-
19
17
  &__panel {
20
- @include dimensions.padding-x(math.div(4, 24));
18
+ @include dimensions.padding-x(math.div(8, 24));
21
19
  @include dimensions.line-height(1.5, 1);
22
20
  @include motion.transition(background-color outline-color);
23
21
  @include utils.interactive(true);
@@ -46,8 +44,7 @@
46
44
  }
47
45
 
48
46
  &__slot {
49
- @include dimensions.padding-x(math.div(4, 24));
50
- @include dimensions.padding-y(math.div(8, 24));
47
+ @include dimensions.padding(math.div(8, 24));
51
48
 
52
49
  overflow: hidden;
53
50
  }
@@ -12,14 +12,14 @@
12
12
  flex-direction: row-reverse;
13
13
  }
14
14
 
15
- > .odx-button:not(.odx-button--success, .odx-button--danger, .odx-button--confirmation) {
15
+ > .odx-button:not(.odx-button--primary, .odx-button--success, .odx-button--danger, .odx-button--confirmation, .odx-auth-sign-in) {
16
16
  /* stylelint-disable-next-line scss/at-extend-no-missing-placeholder */
17
17
  @extend .odx-button--ghost;
18
18
 
19
- color: var(--odx-c-control-text);
19
+ color: var(--odx-c-text);
20
20
 
21
21
  &:hover {
22
- color: var(--odx-c-control-text);
22
+ color: var(--odx-c-text);
23
23
  }
24
24
 
25
25
  &:focus-visible {
@@ -12,7 +12,11 @@
12
12
  }
13
13
 
14
14
  .odx-area-header {
15
- @include dimensions.padding-x(1);
15
+ @include dimensions.padding-x(0.5);
16
+
17
+ @include breakpoints.up(phone) {
18
+ @include dimensions.padding-x(1);
19
+ }
16
20
 
17
21
  &,
18
22
  &__container {
@@ -24,13 +28,6 @@
24
28
  flex: 0 0 auto;
25
29
  }
26
30
 
27
- &__container,
28
- &__inner,
29
- &__title,
30
- &__subtitle {
31
- @include typography.prevent-text-overflow();
32
- }
33
-
34
31
  &__title,
35
32
  &__subtitle {
36
33
  display: block;
@@ -39,23 +36,26 @@
39
36
  &__container {
40
37
  display: flex;
41
38
  flex: 1 1 auto;
39
+ overflow: hidden;
42
40
  }
43
41
 
44
42
  &__inner {
45
43
  align-self: center;
46
44
  flex: 1 1 auto;
45
+ overflow: hidden;
47
46
  }
48
47
 
49
48
  &__title {
50
49
  @extend .odx-title;
51
- @extend .odx-title--6;
50
+ @extend .odx-title-6;
52
51
 
53
52
  color: var(--odx-area-header-title-color);
54
53
  }
55
54
 
56
55
  &__subtitle {
56
+ @include typography.prevent-text-overflow();
57
57
  @extend .odx-subtitle;
58
- @extend .odx-title--6;
58
+ @extend .odx-subtitle-6;
59
59
 
60
60
  color: var(--odx-area-header-subtitle-color);
61
61
  }
@@ -74,10 +74,6 @@
74
74
 
75
75
  &--small,
76
76
  &--medium {
77
- .odx-area-header__subtitle {
78
- display: none;
79
- }
80
-
81
77
  .odx-avatar {
82
78
  @extend .odx-avatar--small;
83
79
  }
@@ -101,19 +97,15 @@
101
97
  }
102
98
 
103
99
  .odx-area-header__title {
104
- @extend .odx-title--5;
100
+ @extend .odx-title-5;
105
101
  }
106
102
  }
107
103
 
108
104
  &--large {
109
- @include dimensions.padding-y(0.25);
110
-
111
- @include breakpoints.up(tablet) {
112
- @include dimensions.padding-y(0.5);
113
- }
105
+ @include dimensions.padding-y(0.5);
114
106
 
115
107
  .odx-area-header__title {
116
- @extend .odx-title--4;
108
+ @extend .odx-title-4;
117
109
 
118
110
  @include breakpoints.down(tablet) {
119
111
  @include dimensions.line-height(1);
@@ -139,11 +131,11 @@
139
131
  }
140
132
 
141
133
  .odx-area-header__title {
142
- @extend .odx-title--2;
134
+ @extend .odx-title-2;
143
135
  }
144
136
 
145
137
  .odx-area-header__subtitle {
146
- @extend .odx-title--5;
138
+ @extend .odx-subtitle-5;
147
139
  }
148
140
 
149
141
  .odx-avatar {
@@ -25,6 +25,7 @@
25
25
  border-radius: 50%;
26
26
  color: var(--odx-c-text);
27
27
  position: relative;
28
+ user-select: none;
28
29
  vertical-align: middle;
29
30
 
30
31
  &--small {
@@ -47,6 +48,10 @@
47
48
  }
48
49
  }
49
50
 
51
+ &--rectangle {
52
+ border-radius: var(--odx-v-border-radius-controls);
53
+ }
54
+
50
55
  img {
51
56
  height: 100%;
52
57
  left: 0;
@@ -54,6 +59,6 @@
54
59
  position: absolute;
55
60
  top: 0;
56
61
  width: 100%;
57
- z-index: 2;
62
+ z-index: var(--odx-v-layer-1);
58
63
  }
59
64
  }
@@ -18,25 +18,11 @@
18
18
 
19
19
  border-radius: $badge-size;
20
20
  height: $badge-size;
21
- left: 0;
22
21
  min-width: $badge-size;
23
22
  outline: 1px solid transparent;
24
- top: 0;
25
23
  vertical-align: middle;
26
24
  z-index: 9999;
27
25
 
28
- &::before {
29
- content: attr(data-value);
30
- }
31
-
32
- &[data-value='0'] {
33
- display: none;
34
- }
35
-
36
- &[data-value^='-']::before {
37
- content: '';
38
- }
39
-
40
26
  &,
41
27
  &--highlight {
42
28
  background-color: var(--odx-c-highlight);
@@ -56,4 +42,9 @@
56
42
  &--contrast {
57
43
  outline-color: var(--odx-badge-contrast-color);
58
44
  }
45
+
46
+ .odx-badge-overlay > & {
47
+ display: flex;
48
+ margin: calc(#{$badge-size} / -2);
49
+ }
59
50
  }
@@ -0,0 +1,86 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/utils';
4
+ @use '../abstract/typography';
5
+ @use '../abstract/motion';
6
+ @use './dropdown.component' as dropdown;
7
+
8
+ :root {
9
+ --odx-bar-background-color: var(--cyan-500);
10
+ --odx-bar-background-color-hover: var(--cyan-600);
11
+ --odx-bar-background-color-active: var(--cyan-700);
12
+ --odx-bar-text-color: var(--white);
13
+ --odx-bar-text-color-disabled: var(--cyan-700);
14
+ }
15
+
16
+ .odx-bar {
17
+ @include dimensions.padding-x(math.div(12, 24));
18
+ @include dimensions.padding-y(math.div(6, 24));
19
+
20
+ align-items: center;
21
+ background-color: var(--odx-bar-background-color);
22
+ border-radius: dimensions.get-size(math.div(6, 24));
23
+ box-shadow: 0 2px 6px rgb(0 25 66 / 50%);
24
+ color: var(--odx-bar-text-color);
25
+ display: inline-flex;
26
+ gap: dimensions.get-size(math.div(12, 24));
27
+ width: max-content;
28
+
29
+ &-button {
30
+ $button: &;
31
+
32
+ @include motion.transition(background-color color outline);
33
+ @include utils.with-outline-bold();
34
+
35
+ align-items: center;
36
+ background-color: var(--odx-bar-background-color);
37
+ border-radius: var(--odx-v-border-radius-controls);
38
+ display: inline-flex;
39
+ font-size: dimensions.get-size(math.div(4, 3));
40
+ height: dimensions.get-size(math.div(36, 24));
41
+ outline-color: transparent;
42
+ outline-style: solid;
43
+
44
+ &:hover {
45
+ background-color: var(--odx-bar-background-color-hover);
46
+ }
47
+
48
+ &#{dropdown.$dropdown-open-selector},
49
+ &:active {
50
+ background-color: var(--odx-bar-background-color-active);
51
+ }
52
+
53
+ &:focus-visible {
54
+ outline-color: var(--odx-bar-background-color-active);
55
+ }
56
+
57
+ &--default {
58
+ @include dimensions.padding-x(math.div(28, 24));
59
+ }
60
+
61
+ &--small {
62
+ @include dimensions.padding-x(math.div(2, 24));
63
+ }
64
+
65
+ &.is-disabled {
66
+ @include utils.non-interactive();
67
+
68
+ color: var(--odx-bar-text-color-disabled);
69
+ }
70
+ }
71
+
72
+ &-label {
73
+ display: inline;
74
+ }
75
+
76
+ .odx-bar-parent & {
77
+ bottom: dimensions.get-size(math.div(16, 24));
78
+ left: 50%;
79
+ position: absolute;
80
+ transform: translateX(-50%);
81
+ }
82
+ }
83
+
84
+ .odx-bar-parent {
85
+ position: relative;
86
+ }
@@ -0,0 +1,26 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/utils';
4
+ @use '../abstract/typography';
5
+
6
+ .odx-breadcrumbs {
7
+ @include dimensions.padding-x(1);
8
+ @include dimensions.padding-y(math.div(12, 24));
9
+ @include utils.vertical-center-content();
10
+
11
+ flex-wrap: wrap;
12
+ gap: dimensions.get-size(math.div(8, 24));
13
+
14
+ .odx-link {
15
+ &:last-child {
16
+ @include typography.font-weight(bold);
17
+
18
+ color: var(--odx-c-text);
19
+ }
20
+ }
21
+
22
+ .odx-icon {
23
+ color: var(--gray-500);
24
+ font-size: dimensions.get-size(math.div(12, 24));
25
+ }
26
+ }
@@ -4,6 +4,7 @@
4
4
  @mixin buttons-radius($vertical: false, $reversed: false) {
5
5
  $start: 'first';
6
6
  $end: 'last';
7
+
7
8
  @if $reversed {
8
9
  $start: 'last';
9
10
  $end: 'first';
@@ -66,11 +67,11 @@
66
67
  justify-content: flex-start;
67
68
  }
68
69
 
69
- &:not(#{&}--vertical, #{&}--reverse) .odx-button {
70
+ &:not(#{&}--vertical, #{&}--reverse) > .odx-button {
70
71
  @include buttons-radius();
71
72
  }
72
73
 
73
- &:not(#{&}--vertical)#{&}--reverse .odx-button {
74
+ &:not(#{&}--vertical)#{&}--reverse > .odx-button {
74
75
  @include buttons-radius(false, true);
75
76
  }
76
77
 
@@ -79,19 +80,22 @@
79
80
 
80
81
  flex-direction: column;
81
82
 
82
- .odx-button {
83
+ > .odx-button {
83
84
  @include dimensions.height(math.div(35, 24));
84
85
  }
85
86
  }
86
87
 
87
88
  &:not(#{&}--reverse)#{&}--vertical {
88
- .odx-button {
89
+ > .odx-button {
89
90
  @include buttons-radius(true);
90
91
  }
91
92
  }
92
93
 
93
94
  &#{&}--reverse#{&}--vertical {
94
- .odx-button {
95
+ display: inline-flex;
96
+ flex-direction: column-reverse;
97
+
98
+ > .odx-button {
95
99
  @include buttons-radius(true, true);
96
100
  }
97
101
  }
@@ -1,9 +1,12 @@
1
+ @use 'sass:map';
1
2
  @use 'sass:math';
3
+ @use '../abstract/breakpoints';
2
4
  @use '../abstract/dimensions';
3
5
  @use '../abstract/motion';
4
6
  @use '../abstract/typography';
5
7
  @use '../abstract/utils';
6
8
  @use 'avatar.component' as avatar;
9
+ @use 'dropdown.component' as dropdown;
7
10
  @use 'icon.component';
8
11
 
9
12
  .odx-button {
@@ -19,6 +22,7 @@
19
22
  @include typography.font-weight(medium);
20
23
  @include utils.center-content(true);
21
24
  @include utils.interactive($with-background: false);
25
+ @include utils.with-outline-bold();
22
26
 
23
27
  border-radius: var(--odx-v-border-radius-controls);
24
28
  min-width: dimensions.get-size(1.5);
@@ -41,10 +45,26 @@
41
45
  }
42
46
 
43
47
  > .odx-avatar {
44
- @include avatar.avatar-size(1.5, math.div(32, 24), 0, 1);
48
+ @include avatar.avatar-size(1.5, math.div(32, 24), -1, 1);
45
49
  @include dimensions.margin-x(-2 * $icon-margin);
46
50
  }
47
51
 
52
+ &[data-breakpoint]:has(> .odx-icon, > .odx-avatar) {
53
+ min-width: dimensions.get-size(1.5);
54
+ }
55
+
56
+ @each $breakpoint in breakpoints.get-breakpoint-names() {
57
+ @include breakpoints.down($breakpoint) {
58
+ &[data-breakpoint='#{$breakpoint}'] {
59
+ font-size: 0;
60
+
61
+ > .odx-icon {
62
+ @include dimensions.margin-x(-$icon-margin);
63
+ }
64
+ }
65
+ }
66
+ }
67
+
48
68
  &--highlight:focus-visible {
49
69
  outline-color: var(--blue-400);
50
70
  }
@@ -58,6 +78,7 @@
58
78
  background-color: var(--odx-c-#{$variant}-hover);
59
79
  }
60
80
 
81
+ &#{dropdown.$dropdown-open-selector},
61
82
  &:active {
62
83
  background-color: var(--odx-c-#{$variant}-active);
63
84
  }
@@ -71,9 +92,10 @@
71
92
  }
72
93
 
73
94
  &--ghost {
95
+ @include utils.with-outline();
96
+
74
97
  background-color: transparent;
75
98
  color: var(--odx-c-link);
76
- outline-width: 1px;
77
99
 
78
100
  &:hover {
79
101
  background-color: var(--blue-700-5);
@@ -84,6 +106,7 @@
84
106
  color: var(--odx-c-link-active);
85
107
  }
86
108
 
109
+ &#{dropdown.$dropdown-open-selector},
87
110
  &:focus-visible,
88
111
  &:active {
89
112
  background-color: var(--odx-c-focus);
@@ -98,6 +121,7 @@
98
121
 
99
122
  &--small {
100
123
  $icon-margin: math.div(1, 8);
124
+
101
125
  @include dimensions.height(1);
102
126
  @include dimensions.padding-x(2 * $icon-margin);
103
127
  @include typography.font-size(-1);