@odx/ui 3.3.0 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @odx/ui
2
2
 
3
+ ## 3.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 40bef6d: Added header navigation component
8
+ - b18ae5a: Allow any content in header. The content is projected into it's own area inside the header
9
+ - 49f971d: Add footer component
10
+
11
+ ### Patch Changes
12
+
13
+ - 17bed8a: Align main menu title with corperate guidelines
14
+
3
15
  ## 3.3.0
4
16
 
5
17
  ### Minor Changes
package/core-theme.css CHANGED
@@ -3054,7 +3054,7 @@ html body .odx-fs-italic {
3054
3054
  }
3055
3055
 
3056
3056
  .odx-brand-logo {
3057
- color: var(--odx-c-text);
3057
+ color: inherit;
3058
3058
  display: inline-block;
3059
3059
  font-weight: var(--odx-typography-font-weight-bold);
3060
3060
  letter-spacing: var(--odx-typography-font-weight-bold-letter-spacing);
@@ -3836,6 +3836,87 @@ html body .odx-fs-italic {
3836
3836
  transform: scaleY(-1);
3837
3837
  }
3838
3838
 
3839
+ :root {
3840
+ --odx-footer-min-height: calc(var(--odx-vertical-rythm-base-size) * 10);
3841
+ --odx-footer-background-color: var(--odx-c-background-content);
3842
+ --odx-footer-text-color: var(--odx-c-text);
3843
+ --odx-footer-description-color: var(--odx-c-text-disabled);
3844
+ }
3845
+ :root .odx-footer--dark {
3846
+ --odx-footer-background-color: var(--odx-c-primary);
3847
+ --odx-footer-text-color: var(--odx-c-primary-text);
3848
+ --odx-footer-description-color: var(--odx-footer-text-color);
3849
+ }
3850
+
3851
+ :root:has([odxTheme=dark]) .odx-footer--dark,
3852
+ :root:has(.odx-theme-dark) .odx-footer--dark {
3853
+ --odx-footer-background-color: var(--blue-800);
3854
+ --odx-footer-text-color: var(--black);
3855
+ --odx-footer-description-color: var(--black);
3856
+ }
3857
+
3858
+ .odx-footer {
3859
+ background-color: var(--odx-footer-background-color);
3860
+ box-sizing: border-box;
3861
+ color: var(--odx-footer-text-color);
3862
+ display: flex;
3863
+ margin-block-start: auto;
3864
+ min-height: var(--odx-footer-min-height);
3865
+ padding-top: calc(var(--odx-vertical-rythm-base-size) * 1);
3866
+ padding-right: calc(var(--odx-vertical-rythm-base-size) * 1);
3867
+ padding-bottom: calc(var(--odx-vertical-rythm-base-size) * 1);
3868
+ padding-left: calc(var(--odx-vertical-rythm-base-size) * 1);
3869
+ }
3870
+ .odx-footer__inner, .odx-footer__navigation {
3871
+ row-gap: calc(var(--odx-vertical-rythm-base-size) * 0.25);
3872
+ }
3873
+ .odx-footer__content {
3874
+ grid-area: content;
3875
+ }
3876
+ .odx-footer__inner {
3877
+ -moz-column-gap: var(--odx-grid-gutter);
3878
+ column-gap: var(--odx-grid-gutter);
3879
+ display: grid;
3880
+ grid-template-areas: "content" "navigation" "meta";
3881
+ grid-template-rows: 1fr repeat(2, auto);
3882
+ margin-inline: auto;
3883
+ max-width: var(--odx-v-max-page-width, 100%);
3884
+ width: 100%;
3885
+ }
3886
+ .odx-footer__navigation {
3887
+ align-items: center;
3888
+ -moz-column-gap: calc(var(--odx-vertical-rythm-base-size) * 1);
3889
+ column-gap: calc(var(--odx-vertical-rythm-base-size) * 1);
3890
+ display: flex;
3891
+ flex-wrap: wrap;
3892
+ grid-area: navigation;
3893
+ grid-template-rows: 1fr auto;
3894
+ }
3895
+ .odx-footer__navigation > .odx-link {
3896
+ color: var(--odx-footer-text-color);
3897
+ }
3898
+ @media (min-width: 480px) {
3899
+ .odx-footer__navigation {
3900
+ justify-content: flex-end;
3901
+ text-align: right;
3902
+ }
3903
+ }
3904
+ .odx-footer__description {
3905
+ color: var(--odx-footer-description-color);
3906
+ grid-area: meta;
3907
+ -webkit-user-select: none;
3908
+ -moz-user-select: none;
3909
+ user-select: none;
3910
+ outline-color: transparent;
3911
+ pointer-events: none;
3912
+ font-size: calc(var(--odx-typography-base-size) * (1*1/var(--odx-typography-negative-font-scaling-factor)));
3913
+ }
3914
+ @media (min-width: 480px) {
3915
+ .odx-footer__description {
3916
+ text-align: right;
3917
+ }
3918
+ }
3919
+
3839
3920
  :root {
3840
3921
  --odx-form-field-hint-color: var(--gray-500);
3841
3922
  }
@@ -4112,17 +4193,29 @@ html body .odx-fs-italic {
4112
4193
  padding-right: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4113
4194
  margin-top: calc(var(--odx-vertical-rythm-base-size) * 0);
4114
4195
  margin-bottom: calc(var(--odx-vertical-rythm-base-size) * 0);
4115
- height: calc(var(--odx-vertical-rythm-base-size) * 2);
4196
+ min-height: calc(var(--odx-vertical-rythm-base-size) * 2);
4116
4197
  display: flex;
4117
4198
  align-items: center;
4118
4199
  background-color: var(--odx-c-background-content);
4119
4200
  }
4120
4201
  .odx-header .odx-main-menu-button {
4121
- margin-left: calc(var(--odx-vertical-rythm-base-size) * -0.3333);
4122
- margin-right: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4202
+ margin-inline-end: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4203
+ margin-inline-start: calc(var(--odx-vertical-rythm-base-size) * -0.3333);
4123
4204
  }
4124
- .odx-header > .odx-logo, .odx-header__title {
4125
- margin-right: auto;
4205
+ .odx-header > * {
4206
+ margin-block: 0;
4207
+ min-height: auto;
4208
+ }
4209
+ .odx-header__content {
4210
+ margin-inline-end: auto;
4211
+ padding-right: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4212
+ padding-left: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4213
+ }
4214
+ @media (min-width: 768px) {
4215
+ .odx-header__content {
4216
+ padding-right: calc(var(--odx-vertical-rythm-base-size) * 1);
4217
+ padding-left: calc(var(--odx-vertical-rythm-base-size) * 1);
4218
+ }
4126
4219
  }
4127
4220
  .odx-header__title {
4128
4221
  overflow: hidden;
@@ -4130,13 +4223,13 @@ html body .odx-fs-italic {
4130
4223
  white-space: nowrap;
4131
4224
  }
4132
4225
  .odx-header .odx-action-group:not(:last-child) {
4133
- border-right: 1px solid var(--odx-c-separator);
4134
- margin-right: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4135
- padding-right: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4226
+ border-inline-end: 1px solid var(--odx-c-separator);
4227
+ margin-inline-end: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4228
+ padding-inline-end: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4136
4229
  }
4137
4230
  .odx-header:has(> .odx-title, > .odx-header__title) > .odx-logo {
4138
4231
  display: none;
4139
- margin-right: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4232
+ margin-inline-end: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4140
4233
  }
4141
4234
  @media (min-width: 768px) {
4142
4235
  .odx-header:has(> .odx-title, > .odx-header__title) > .odx-logo {
@@ -4144,6 +4237,31 @@ html body .odx-fs-italic {
4144
4237
  }
4145
4238
  }
4146
4239
 
4240
+ .odx-header-navigation {
4241
+ background-color: var(--odx-c-background-content);
4242
+ border-block-start: 1px solid var(--odx-c-separator);
4243
+ display: block;
4244
+ margin-block-start: -1px;
4245
+ padding-right: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4246
+ padding-left: calc(var(--odx-vertical-rythm-base-size) * 0.5);
4247
+ padding-top: calc(var(--odx-vertical-rythm-base-size) * 0.25);
4248
+ padding-bottom: calc(var(--odx-vertical-rythm-base-size) * 0.25);
4249
+ }
4250
+ .odx-header-navigation__inner {
4251
+ flex-wrap: wrap;
4252
+ height: auto;
4253
+ margin: 0;
4254
+ }
4255
+ .odx-header-navigation--centered .odx-header-navigation__inner {
4256
+ display: flex;
4257
+ justify-content: center;
4258
+ margin-inline: auto;
4259
+ max-width: var(--odx-v-max-page-width);
4260
+ }
4261
+ .odx-header-navigation__inner > .odx-button {
4262
+ margin-block: 0;
4263
+ }
4264
+
4147
4265
  .odx-inline-message {
4148
4266
  --odx-c-default: var(--blue-50);
4149
4267
  --odx-c-warning: var(--yellow-50);
@@ -4738,8 +4856,8 @@ html body .odx-fs-italic {
4738
4856
  }
4739
4857
 
4740
4858
  .odx-main-menu {
4741
- --odx-area-header-title-color: var(--odx-main-menu-highlight-color);
4742
- --odx-area-header-subtitle-color: var(--odx-c-text-inverse);
4859
+ --odx-area-header-title-color: var(--odx-main-menu-text-color);
4860
+ --odx-area-header-subtitle-color: var(--odx-main-menu-text-color);
4743
4861
  z-index: var(--odx-v-layer-6);
4744
4862
  }
4745
4863
  .odx-main-menu__inner {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odx/ui",
3
- "version": "3.3.0",
3
+ "version": "3.4.0",
4
4
  "author": "Drägerwerk AG & Co.KGaA",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "peerDependencies": {
@@ -1,7 +1,7 @@
1
1
  @use '../abstract/typography';
2
2
 
3
3
  .odx-brand-logo {
4
- color: var(--odx-c-text);
4
+ color: inherit;
5
5
  display: inline-block;
6
6
 
7
7
  @include typography.font-weight(bold);
@@ -0,0 +1,86 @@
1
+ @use '../abstract/breakpoints';
2
+ @use '../abstract/dimensions';
3
+ @use '../abstract/typography';
4
+ @use '../abstract/utils';
5
+
6
+ :root {
7
+ --odx-footer-min-height: #{dimensions.get-size(10)};
8
+ --odx-footer-background-color: var(--odx-c-background-content);
9
+ --odx-footer-text-color: var(--odx-c-text);
10
+ --odx-footer-description-color: var(--odx-c-text-disabled);
11
+
12
+ .odx-footer--dark {
13
+ --odx-footer-background-color: var(--odx-c-primary);
14
+ --odx-footer-text-color: var(--odx-c-primary-text);
15
+ --odx-footer-description-color: var(--odx-footer-text-color);
16
+ }
17
+ }
18
+
19
+ @include utils.theme-selector(dark) {
20
+ .odx-footer--dark {
21
+ --odx-footer-background-color: var(--blue-800);
22
+ --odx-footer-text-color: var(--black);
23
+ --odx-footer-description-color: var(--black);
24
+ }
25
+ }
26
+
27
+ .odx-footer {
28
+ background-color: var(--odx-footer-background-color);
29
+ box-sizing: border-box;
30
+ color: var(--odx-footer-text-color);
31
+ display: flex;
32
+ margin-block-start: auto;
33
+ min-height: var(--odx-footer-min-height);
34
+
35
+ @include dimensions.padding(1);
36
+
37
+ &__inner,
38
+ &__navigation {
39
+ row-gap: #{dimensions.get-size(0.25)};
40
+ }
41
+
42
+ &__content {
43
+ grid-area: content;
44
+ }
45
+
46
+ &__inner {
47
+ column-gap: var(--odx-grid-gutter);
48
+ display: grid;
49
+ grid-template-areas: 'content' 'navigation' 'meta';
50
+ grid-template-rows: 1fr repeat(2, auto);
51
+ margin-inline: auto;
52
+ max-width: var(--odx-v-max-page-width, 100%);
53
+ width: 100%;
54
+ }
55
+
56
+ &__navigation {
57
+ align-items: center;
58
+ column-gap: #{dimensions.get-size(1)};
59
+ display: flex;
60
+ flex-wrap: wrap;
61
+ grid-area: navigation;
62
+ grid-template-rows: 1fr auto;
63
+
64
+ > .odx-link {
65
+ color: var(--odx-footer-text-color);
66
+ }
67
+
68
+ @include breakpoints.up(phone) {
69
+ justify-content: flex-end;
70
+ text-align: right;
71
+ }
72
+ }
73
+
74
+ &__description {
75
+ color: var(--odx-footer-description-color);
76
+ grid-area: meta;
77
+ user-select: none;
78
+
79
+ @include utils.non-interactive();
80
+ @include typography.font-size(-1);
81
+
82
+ @include breakpoints.up(phone) {
83
+ text-align: right;
84
+ }
85
+ }
86
+ }
@@ -0,0 +1,35 @@
1
+ @use 'sass:math';
2
+ @use '../abstract/breakpoints';
3
+ @use '../abstract/dimensions';
4
+ @use '../abstract/utils';
5
+ @use '../abstract/typography';
6
+ @use '../layout/typography' as *;
7
+
8
+ .odx-header-navigation {
9
+ $root: &;
10
+
11
+ background-color: var(--odx-c-background-content);
12
+ border-block-start: 1px solid var(--odx-c-separator);
13
+ display: block;
14
+ margin-block-start: -1px;
15
+
16
+ @include dimensions.padding-x(0.5);
17
+ @include dimensions.padding-y(0.25);
18
+
19
+ &__inner {
20
+ flex-wrap: wrap;
21
+ height: auto;
22
+ margin: 0;
23
+
24
+ #{$root}--centered & {
25
+ display: flex;
26
+ justify-content: center;
27
+ margin-inline: auto;
28
+ max-width: var(--odx-v-max-page-width);
29
+ }
30
+
31
+ > .odx-button {
32
+ margin-block: 0;
33
+ }
34
+ }
35
+ }
@@ -8,19 +8,29 @@
8
8
  .odx-header {
9
9
  @include dimensions.padding(math.div(20, 24), 'left');
10
10
  @include dimensions.padding(0.5, 'right');
11
- @include dimensions.height(2);
11
+ @include dimensions.min-height(2);
12
12
  @include utils.vertical-center-content();
13
13
 
14
14
  background-color: var(--odx-c-background-content);
15
15
 
16
16
  .odx-main-menu-button {
17
- margin-left: dimensions.get-size(-1 * math.div(1, 3));
18
- margin-right: dimensions.get-size(0.5);
17
+ margin-inline-end: dimensions.get-size(0.5);
18
+ margin-inline-start: dimensions.get-size(-1 * math.div(1, 3));
19
19
  }
20
20
 
21
- > .odx-logo,
22
- &__title {
23
- margin-right: auto;
21
+ > * {
22
+ margin-block: 0;
23
+ min-height: auto;
24
+ }
25
+
26
+ &__content {
27
+ margin-inline-end: auto;
28
+
29
+ @include dimensions.padding-x(0.5);
30
+
31
+ @include breakpoints.up(tablet) {
32
+ @include dimensions.padding-x(1);
33
+ }
24
34
  }
25
35
 
26
36
  &__title {
@@ -30,14 +40,14 @@
30
40
  }
31
41
 
32
42
  .odx-action-group:not(:last-child) {
33
- border-right: 1px solid var(--odx-c-separator);
34
- margin-right: dimensions.get-size(0.5);
35
- padding-right: dimensions.get-size(0.5);
43
+ border-inline-end: 1px solid var(--odx-c-separator);
44
+ margin-inline-end: dimensions.get-size(0.5);
45
+ padding-inline-end: dimensions.get-size(0.5);
36
46
  }
37
47
 
38
48
  &:has(> .odx-title) > .odx-logo {
39
49
  display: none;
40
- margin-right: dimensions.get-size(0.5);
50
+ margin-inline-end: dimensions.get-size(0.5);
41
51
 
42
52
  @include breakpoints.up(tablet) {
43
53
  display: block;
@@ -25,8 +25,8 @@
25
25
  }
26
26
 
27
27
  .odx-main-menu {
28
- --odx-area-header-title-color: var(--odx-main-menu-highlight-color);
29
- --odx-area-header-subtitle-color: var(--odx-c-text-inverse);
28
+ --odx-area-header-title-color: var(--odx-main-menu-text-color);
29
+ --odx-area-header-subtitle-color: var(--odx-main-menu-text-color);
30
30
 
31
31
  z-index: var(--odx-v-layer-6);
32
32
 
package/scss/core.scss CHANGED
@@ -52,8 +52,10 @@ Layout
52
52
  @use 'components/dropdown.component';
53
53
  @use 'components/error-page.component';
54
54
  @use 'components/expandable-list-item.component';
55
+ @use 'components/footer.component';
55
56
  @use 'components/form-field.component';
56
57
  @use 'components/header.component';
58
+ @use 'components/header-navigation.component';
57
59
  @use 'components/icon.component';
58
60
  @use 'components/inline-message.component';
59
61
  @use 'components/link.component';