@aotearoan/neon 22.4.0 → 22.5.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 (69) hide show
  1. package/dist/common/enums/NeonInputIndicatorStyle.cjs.js +2 -0
  2. package/dist/common/enums/NeonInputIndicatorStyle.cjs.js.map +1 -0
  3. package/dist/common/enums/NeonInputIndicatorStyle.es.js +5 -0
  4. package/dist/common/enums/NeonInputIndicatorStyle.es.js.map +1 -0
  5. package/dist/components/navigation/link/NeonLink.cjs.js +1 -1
  6. package/dist/components/navigation/link/NeonLink.cjs.js.map +1 -1
  7. package/dist/components/navigation/link/NeonLink.es.js +23 -22
  8. package/dist/components/navigation/link/NeonLink.es.js.map +1 -1
  9. package/dist/components/navigation/link/NeonLink.vue.cjs.js +1 -1
  10. package/dist/components/navigation/link/NeonLink.vue.cjs.js.map +1 -1
  11. package/dist/components/navigation/link/NeonLink.vue.es.js +14 -11
  12. package/dist/components/navigation/link/NeonLink.vue.es.js.map +1 -1
  13. package/dist/components/presentation/tabs/NeonTabs.cjs.js +1 -1
  14. package/dist/components/presentation/tabs/NeonTabs.cjs.js.map +1 -1
  15. package/dist/components/presentation/tabs/NeonTabs.es.js +35 -18
  16. package/dist/components/presentation/tabs/NeonTabs.es.js.map +1 -1
  17. package/dist/components/presentation/tabs/NeonTabs.vue.cjs.js +1 -1
  18. package/dist/components/presentation/tabs/NeonTabs.vue.cjs.js.map +1 -1
  19. package/dist/components/presentation/tabs/NeonTabs.vue.es.js +55 -42
  20. package/dist/components/presentation/tabs/NeonTabs.vue.es.js.map +1 -1
  21. package/dist/components/user-input/field-group/NeonFieldGroup.cjs.js +1 -1
  22. package/dist/components/user-input/field-group/NeonFieldGroup.cjs.js.map +1 -1
  23. package/dist/components/user-input/field-group/NeonFieldGroup.es.js +22 -4
  24. package/dist/components/user-input/field-group/NeonFieldGroup.es.js.map +1 -1
  25. package/dist/components/user-input/field-group/NeonFieldGroup.vue.cjs.js +1 -1
  26. package/dist/components/user-input/field-group/NeonFieldGroup.vue.cjs.js.map +1 -1
  27. package/dist/components/user-input/field-group/NeonFieldGroup.vue.es.js +15 -10
  28. package/dist/components/user-input/field-group/NeonFieldGroup.vue.es.js.map +1 -1
  29. package/dist/components/user-input/number/NeonNumber.vue.cjs.js +1 -1
  30. package/dist/components/user-input/number/NeonNumber.vue.cjs.js.map +1 -1
  31. package/dist/components/user-input/number/NeonNumber.vue.es.js +7 -6
  32. package/dist/components/user-input/number/NeonNumber.vue.es.js.map +1 -1
  33. package/dist/neon.cjs.js +1 -1
  34. package/dist/neon.es.js +99 -97
  35. package/dist/neon.es.js.map +1 -1
  36. package/dist/src/common/enums/NeonInputIndicatorStyle.d.ts +10 -0
  37. package/dist/src/common/models/NeonTabModel.d.ts +2 -0
  38. package/dist/src/components/feedback/alert/NeonAlert.d.ts +1 -0
  39. package/dist/src/components/feedback/alert/container/NeonAlertContainer.d.ts +1 -0
  40. package/dist/src/components/feedback/dialog/NeonDialog.d.ts +6 -12
  41. package/dist/src/components/feedback/note/NeonNote.d.ts +9 -8
  42. package/dist/src/components/layout/card-list/NeonCardList.d.ts +4 -8
  43. package/dist/src/components/layout/modal/NeonModal.d.ts +1 -0
  44. package/dist/src/components/navigation/action-menu/NeonActionMenu.d.ts +3 -6
  45. package/dist/src/components/navigation/dropdown-menu/NeonDropdownMenu.d.ts +7 -0
  46. package/dist/src/components/navigation/link/NeonLink.d.ts +1 -0
  47. package/dist/src/components/navigation/menu/NeonMenu.d.ts +8 -0
  48. package/dist/src/components/navigation/mobile-menu/NeonMobileMenu.d.ts +8 -0
  49. package/dist/src/components/navigation/tree-menu/NeonTreeMenu.d.ts +1 -0
  50. package/dist/src/components/presentation/badge/NeonBadge.d.ts +1 -0
  51. package/dist/src/components/presentation/dropdown/NeonDropdown.d.ts +8 -2
  52. package/dist/src/components/presentation/image-carousel/NeonImageCarousel.d.ts +2 -0
  53. package/dist/src/components/presentation/tabs/NeonTabs.d.ts +374 -0
  54. package/dist/src/components/user-input/button/NeonButton.d.ts +1 -0
  55. package/dist/src/components/user-input/date-picker/NeonDatePicker.d.ts +3 -0
  56. package/dist/src/components/user-input/field-group/NeonFieldGroup.d.ts +55 -1
  57. package/dist/src/components/user-input/file/NeonFile.d.ts +2 -4
  58. package/dist/src/components/user-input/filter-list/NeonFilterList.d.ts +1 -0
  59. package/dist/src/components/user-input/number/NeonNumber.d.ts +32 -1
  60. package/dist/src/components/user-input/search/NeonSearch.d.ts +30 -6
  61. package/dist/src/components/user-input/select/NeonSelect.d.ts +6 -0
  62. package/dist/src/neon.d.ts +1 -0
  63. package/package.json +1 -1
  64. package/src/sass/components/_field-group.scss +121 -34
  65. package/src/sass/components/_input-indicator.scss +13 -9
  66. package/src/sass/components/_input.scss +36 -28
  67. package/src/sass/components/_tabs.scss +50 -30
  68. package/src/sass/includes/_dependencies.scss +1 -1
  69. package/src/sass/variables.scss +24 -5
@@ -1407,6 +1407,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
1407
1407
  default: boolean;
1408
1408
  };
1409
1409
  }>, {
1410
+ neonLink: import("vue").Ref<HTMLAnchorElement | null, HTMLAnchorElement | null>;
1410
1411
  routerUrl: import("vue").ComputedRef<string | undefined>;
1411
1412
  sanitizedAttributes: import("vue").ComputedRef<{
1412
1413
  [x: string]: unknown;
@@ -2196,6 +2197,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
2196
2197
  default: boolean;
2197
2198
  };
2198
2199
  }>, {
2200
+ neonLink: import("vue").Ref<HTMLAnchorElement | null, HTMLAnchorElement | null>;
2199
2201
  routerUrl: import("vue").ComputedRef<string | undefined>;
2200
2202
  sanitizedAttributes: import("vue").ComputedRef<{
2201
2203
  [x: string]: unknown;
@@ -3722,6 +3724,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
3722
3724
  default: boolean;
3723
3725
  };
3724
3726
  }>, {
3727
+ neonLink: import("vue").Ref<HTMLAnchorElement | null, HTMLAnchorElement | null>;
3725
3728
  routerUrl: import("vue").ComputedRef<string | undefined>;
3726
3729
  sanitizedAttributes: import("vue").ComputedRef<{
3727
3730
  [x: string]: unknown;
@@ -4511,6 +4514,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
4511
4514
  default: boolean;
4512
4515
  };
4513
4516
  }>, {
4517
+ neonLink: import("vue").Ref<HTMLAnchorElement | null, HTMLAnchorElement | null>;
4514
4518
  routerUrl: import("vue").ComputedRef<string | undefined>;
4515
4519
  sanitizedAttributes: import("vue").ComputedRef<{
4516
4520
  [x: string]: unknown;
@@ -6226,6 +6230,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
6226
6230
  default: boolean;
6227
6231
  };
6228
6232
  }>, {
6233
+ neonLink: import("vue").Ref<HTMLAnchorElement | null, HTMLAnchorElement | null>;
6229
6234
  routerUrl: import("vue").ComputedRef<string | undefined>;
6230
6235
  sanitizedAttributes: import("vue").ComputedRef<{
6231
6236
  [x: string]: unknown;
@@ -7015,6 +7020,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
7015
7020
  default: boolean;
7016
7021
  };
7017
7022
  }>, {
7023
+ neonLink: import("vue").Ref<HTMLAnchorElement | null, HTMLAnchorElement | null>;
7018
7024
  routerUrl: import("vue").ComputedRef<string | undefined>;
7019
7025
  sanitizedAttributes: import("vue").ComputedRef<{
7020
7026
  [x: string]: unknown;
@@ -74,6 +74,7 @@ export { NeonDropdownPlacement } from './common/enums/NeonDropdownPlacement';
74
74
  export { NeonDropdownStyle } from './common/enums/NeonDropdownStyle';
75
75
  export { NeonFunctionalColor } from './common/enums/NeonFunctionalColor';
76
76
  export { NeonHorizontalPosition } from './common/enums/NeonHorizontalPosition';
77
+ export { NeonInputIndicatorStyle } from './common/enums/NeonInputIndicatorStyle';
77
78
  export { NeonInputMode } from './common/enums/NeonInputMode';
78
79
  export { NeonInputType } from './common/enums/NeonInputType';
79
80
  export { NeonLabelSize } from './common/enums/NeonLabelSize';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@aotearoan/neon",
3
3
  "description": "Neon is a lightweight design library of Vue 3 components with minimal dependencies.",
4
- "version": "22.4.0",
4
+ "version": "22.5.0",
5
5
  "main": "./dist/neon.cjs.js",
6
6
  "module": "./dist/neon.es.js",
7
7
  "types": "./dist/src/neon.d.ts",
@@ -1,60 +1,147 @@
1
+ @use '../includes/palettes';
2
+
1
3
  @mixin field-group {
2
4
  .neon-field-group {
3
5
  display: flex;
4
6
  flex-direction: row;
5
7
  justify-content: flex-start;
6
8
 
7
- & > *,
8
- & > .neon-input,
9
- & > .neon-select {
10
- &,
11
- & > input,
12
- & .neon-button {
13
- border-radius: 0;
14
- min-height: 100%;
15
- }
16
-
17
- &:first-child {
9
+ &.neon-field-group--external {
10
+ & > *,
11
+ & > .neon-input,
12
+ & > .neon-select {
18
13
  &,
19
14
  & > input,
20
15
  & .neon-button {
21
- border-top-left-radius: var(--neon-border-radius);
22
- border-bottom-left-radius: var(--neon-border-radius);
16
+ border-radius: 0;
17
+ min-height: 100%;
18
+ }
19
+
20
+ &:first-child {
21
+ &,
22
+ & > input,
23
+ & .neon-button {
24
+ border-top-left-radius: var(--neon-border-radius-input);
25
+ border-bottom-left-radius: var(--neon-border-radius-input);
26
+ }
27
+ }
28
+
29
+ &:not(:first-child) {
30
+ &,
31
+ & > input,
32
+ & .neon-button {
33
+ &:not(:focus) {
34
+ border-left: none;
35
+ }
36
+ }
37
+
38
+ & > input,
39
+ & .neon-button {
40
+ &:focus {
41
+ margin-left: calc(-1 * var(--neon-border-width));
42
+ margin-right: calc(-1 * var(--neon-border-width));
43
+ width: calc(100% + 2 * var(--neon-border-width));
44
+ }
45
+ }
46
+ }
47
+
48
+ &:last-child {
49
+ &,
50
+ & > input,
51
+ & .neon-button {
52
+ border-top-right-radius: var(--neon-border-radius-input);
53
+ border-bottom-right-radius: var(--neon-border-radius-input);
54
+ }
23
55
  }
24
56
  }
25
57
 
26
- &:not(:first-child) {
27
- &,
28
- & > input,
29
- & .neon-button {
30
- &:not(:focus) {
31
- border-left: none;
58
+ & > .neon-input {
59
+ & > input:focus {
60
+ max-width: 100%;
61
+ }
62
+ }
63
+ }
64
+
65
+ &.neon-field-group--internal {
66
+ border: var(--neon-border-width-input) var(--neon-border-style) var(--neon-border-color-input);
67
+ border-radius: var(--neon-border-radius-input);
68
+
69
+ .neon-input-indicator {
70
+ background-color: var(--neon-background-color-input);
71
+
72
+ &:not(:last-child) {
73
+ .neon-input-indicator__label {
74
+ padding-right: 0;
75
+ }
76
+
77
+ .neon-input-indicator__icon {
78
+ min-width: 16rem;
79
+ margin-left: var(--neon-space-12);
80
+ width: 16rem;
81
+
82
+ svg {
83
+ width: 16rem;
84
+ min-width: 16rem;
85
+ }
32
86
  }
33
87
  }
88
+ }
34
89
 
35
- & > input,
36
- & .neon-button {
37
- &:focus {
38
- margin-left: calc(-1 * var(--neon-border-width));
39
- margin-right: calc(-1 * var(--neon-border-width));
40
- width: calc(100% + 2 * var(--neon-border-width));
90
+ @each $color in palettes.$neon-functional-colors {
91
+ &.neon-field-group--#{$color} {
92
+ &:focus-within {
93
+ border-color: var(--neon-color-#{$color});
94
+
95
+ .neon-input-indicator {
96
+ background-color: rgba(var(--neon-rgb-#{$color}), var(--neon-opacity-input-background-active));
97
+ }
41
98
  }
42
99
  }
43
100
  }
44
101
 
45
- &:last-child {
102
+ &.neon-field-group--disabled {
103
+ border-color: var(--neon-color-disabled-border);
104
+
105
+ .neon-input-indicator {
106
+ background-color: var(--neon-color-disabled-background);
107
+
108
+ }
109
+ }
110
+
111
+ & > *,
112
+ & > .neon-input-indicator,
113
+ & > .neon-input {
46
114
  &,
47
- & > input,
48
- & .neon-button {
49
- border-top-right-radius: var(--neon-border-radius);
50
- border-bottom-right-radius: var(--neon-border-radius);
115
+ & > input {
116
+ border-radius: 0;
117
+ border: none;
118
+ min-height: 100%;
119
+ }
120
+ }
121
+
122
+ & > .neon-input {
123
+ & > input:focus {
124
+ max-width: 100%;
51
125
  }
52
126
  }
53
- }
54
127
 
55
- & > .neon-input {
56
- & > input:focus {
57
- max-width: 100%;
128
+ & > *,
129
+ & > .neon-input {
130
+ &:first-child {
131
+ &,
132
+ & > input {
133
+ border-top-left-radius: var(--neon-border-radius-input);
134
+ border-bottom-left-radius: var(--neon-border-radius-input);
135
+ }
136
+ }
137
+
138
+ &:last-child {
139
+ &,
140
+ & > input {
141
+ border-top-right-radius: var(--neon-border-radius-input);
142
+ border-bottom-right-radius: var(--neon-border-radius-input);
143
+ }
144
+ }
58
145
  }
59
146
  }
60
147
  }
@@ -20,13 +20,16 @@
20
20
  display: flex;
21
21
  align-items: center;
22
22
  justify-content: center;
23
+ font-weight: var(--neon-font-weight-input-indicator);
24
+ padding-left: var(--neon-space-12);
25
+ padding-right: var(--neon-space-12);
23
26
  }
24
27
 
25
28
  &--s {
26
29
  height: var(--neon-size-s);
27
30
 
28
31
  .neon-input-indicator__label {
29
- @include layout.padding-horizontal(0.33, 0.33);
32
+ font-size: var(--neon-font-size-input-indicator-s);
30
33
  }
31
34
 
32
35
  .neon-input-indicator__label,
@@ -35,8 +38,8 @@
35
38
  }
36
39
 
37
40
  .neon-icon {
38
- width: var(--neon-font-size-m);
39
- height: var(--neon-font-size-m);
41
+ width: var(--neon-font-size-input-indicator-s);
42
+ height: var(--neon-font-size-input-indicator-s);
40
43
  }
41
44
  }
42
45
 
@@ -44,7 +47,7 @@
44
47
  height: var(--neon-size-m);
45
48
 
46
49
  .neon-input-indicator__label {
47
- @include layout.padding-horizontal(0.5, 0.5);
50
+ font-size: var(--neon-font-size-input-indicator-m);
48
51
  }
49
52
 
50
53
  .neon-input-indicator__label,
@@ -53,8 +56,8 @@
53
56
  }
54
57
 
55
58
  .neon-icon {
56
- width: var(--neon-font-size-l);
57
- height: var(--neon-font-size-l);
59
+ width: var(--neon-font-size-input-indicator-m);
60
+ height: var(--neon-font-size-input-indicator-m);
58
61
  }
59
62
  }
60
63
 
@@ -62,7 +65,7 @@
62
65
  height: var(--neon-size-l);
63
66
 
64
67
  .neon-input-indicator__label {
65
- @include layout.padding-horizontal(0.5, 0.5);
68
+ font-size: var(--neon-font-size-input-indicator-l);
66
69
  }
67
70
 
68
71
  .neon-input-indicator__label,
@@ -71,8 +74,8 @@
71
74
  }
72
75
 
73
76
  .neon-icon {
74
- width: var(--neon-font-size-l);
75
- height: var(--neon-font-size-l);
77
+ width: var(--neon-font-size-input-indicator-l);
78
+ height: var(--neon-font-size-input-indicator-l);
76
79
  }
77
80
  }
78
81
 
@@ -80,6 +83,7 @@
80
83
  border: var(--neon-border-width) var(--neon-border-style) var(--neon-color-disabled-border);
81
84
  background-color: var(--neon-color-disabled-background);
82
85
  color: var(--neon-color-disabled-text);
86
+ cursor: not-allowed;
83
87
  }
84
88
  }
85
89
  }
@@ -1,9 +1,9 @@
1
1
  @use '../includes/palettes';
2
2
 
3
- @mixin input-size($size, $font-size) {
3
+ @mixin input-size($size) {
4
4
  .neon-input__text,
5
5
  .neon-input__textarea {
6
- font-size: var(--neon-font-size-#{$font-size});
6
+ font-size: var(--neon-font-size-input-#{$size});
7
7
  }
8
8
 
9
9
  .neon-input__text {
@@ -19,31 +19,32 @@
19
19
  position: absolute;
20
20
 
21
21
  @if ($size == 's') {
22
- width: calc(var(--neon-size-#{$size}) - var(--neon-space-10));
23
- height: calc(var(--neon-size-#{$size}) - var(--neon-space-10));
24
- top: calc(1.25 * var(--neon-space-4));
25
- right: calc(1.25 * var(--neon-space-4));
22
+ width: calc(var(--neon-size-#{$size}) - 2.5 * var(--neon-base-space));
23
+ height: calc(var(--neon-size-#{$size}) - 2.5 * var(--neon-base-space));
24
+ top: calc(1.25 * var(--neon-base-space));
25
+ right: calc(1.25 * var(--neon-base-space));
26
26
 
27
- padding: var(--neon-space-2);
27
+ padding: calc(0.5 * var(--neon-base-space));
28
28
  &.neon-icon--name-close {
29
- padding: var(--neon-space-4);
29
+ padding: var(--neon-base-space);
30
30
  }
31
31
  } @else {
32
- width: calc(var(--neon-size-#{$size}) - var(--neon-space-12));
33
- height: calc(var(--neon-size-#{$size}) - var(--neon-space-12));
34
- top: var(--neon-space-6);
35
- right: var(--neon-space-6);
32
+ width: calc(var(--neon-size-#{$size}) - 3 * var(--neon-base-space));
33
+ height: calc(var(--neon-size-#{$size}) - 3 * var(--neon-base-space));
34
+ top: calc(1.5 * var(--neon-base-space));
35
+ right: calc(1.5 * var(--neon-base-space));
36
36
 
37
- padding: var(--neon-space-4);
37
+ padding: calc(1 * var(--neon-base-space));
38
38
 
39
39
  &.neon-icon--name-close {
40
40
  @if ($size == 'l') {
41
- padding: calc(2.25 * var(--neon-space-4));
41
+ padding: calc(2.25 * var(--neon-base-space));
42
42
  } @else {
43
- padding: calc(1.5 * var(--neon-space-4));
43
+ padding: calc(1.5 * var(--neon-base-space));
44
44
  }
45
45
  }
46
46
  }
47
+
47
48
  cursor: default;
48
49
  border-radius: 50%;
49
50
 
@@ -63,10 +64,14 @@
63
64
  @mixin input {
64
65
  .neon-input {
65
66
  width: 100%;
66
- position: relative;
67
+
68
+ &,
69
+ &__textarea,
70
+ &__textarea-wrapper {
71
+ position: relative;
72
+ }
67
73
 
68
74
  @each $color in palettes.$neon-functional-colors {
69
- $input-rgb: var(--neon-rgb-#{$color});
70
75
  &.neon-input--#{$color} {
71
76
  &.neon-input--focused {
72
77
  .neon-input__text,
@@ -109,23 +114,23 @@
109
114
  }
110
115
 
111
116
  &--s {
112
- @include input-size('s', 's');
117
+ @include input-size('s');
113
118
  }
114
119
 
115
120
  &--m {
116
- @include input-size('m', 'm');
121
+ @include input-size('m');
117
122
  }
118
123
 
119
124
  &--l {
120
- @include input-size('l', 'm');
125
+ @include input-size('l');
121
126
  }
122
127
 
123
128
  &__text,
124
129
  &__textarea {
125
130
  border-radius: var(--neon-border-radius-input);
126
131
  border: var(--neon-border-width-input) var(--neon-border-style);
127
- padding: var(--neon-space-4) var(--neon-space-10);
128
- line-height: var(--neon-line-height-one);
132
+ padding: var(--neon-base-space) calc(2 * var(--neon-base-space));
133
+ line-height: var(--neon-line-height-input);
129
134
  outline: none;
130
135
  font-family: var(--neon-font-family-body);
131
136
  width: 100%;
@@ -133,21 +138,24 @@
133
138
  color: var(--neon-color-input);
134
139
  background-color: var(--neon-background-color-input);
135
140
  box-shadow: var(--neon-inset-shadow);
141
+ font-weight: var(--neon-font-weight-input);
136
142
 
137
143
  &::placeholder {
138
144
  font-family: var(--neon-font-family-body);
139
- letter-spacing: var(--neon-letter-spacing-s);
145
+ font-size: var(--neon-font-size-placeholder);
146
+ font-style: var(--neon-font-style-placeholder);
147
+ font-weight: var(--neon-font-weight-placeholder);
140
148
  color: var(--neon-color-placeholder);
141
149
  }
142
150
 
143
151
  &-counter {
144
- position: absolute;
145
- bottom: var(--neon-space-8);
146
- right: var(--neon-space-8);
152
+ align-self: flex-end;
147
153
  user-select: none;
148
- font-size: var(--neon-font-size-s);
154
+ font-size: var(--neon-font-size-xs);
155
+ font-weight: var(--neon-font-weight-normal);
149
156
  letter-spacing: var(--neon-letter-spacing-s);
150
- color: var(--neon-color-placeholder);
157
+ color: var(--neon-color-text-tertiary);
158
+ margin-bottom: var(--neon-space-4);
151
159
  }
152
160
  }
153
161
 
@@ -11,7 +11,7 @@
11
11
  $tab-hover-color: var(--neon-color-tab-hover-#{$color});
12
12
 
13
13
  .neon-tabs__menu-item {
14
- &--selected {
14
+ &.neon-tabs__menu-item {
15
15
  .neon-tabs__menu-item-container:before {
16
16
  background-color: $tab-selected-color;
17
17
  }
@@ -24,13 +24,17 @@
24
24
  }
25
25
  }
26
26
 
27
+ .neon-tabs__menu-item-container:focus {
28
+ background-color: rgba(var(--neon-rgb-#{$color}), var(--neon-opacity-tab-focus));
29
+ }
30
+
27
31
  &-container:focus:before {
28
32
  background-color: $tab-hover-color;
29
33
  }
30
34
  }
31
35
 
32
36
  .neon-tab {
33
- &:focus:before {
37
+ &:focus-visible:before {
34
38
  background-color: $tab-hover-color;
35
39
  }
36
40
  }
@@ -38,13 +42,17 @@
38
42
  }
39
43
 
40
44
  .neon-tabs__menu-items {
45
+ height: var(--neon-height-tabs);
41
46
  display: flex;
42
47
  flex-direction: row;
43
48
  align-items: center;
44
- font-weight: var(--neon-font-weight-medium);
45
49
  }
46
50
 
47
51
  .neon-tabs__menu-item {
52
+ --neon-border-width-link: 0rem;
53
+ --neon-border-width-link-hover: 0rem;
54
+
55
+ text-decoration: none;
48
56
  position: relative;
49
57
  display: flex;
50
58
  flex-direction: row;
@@ -56,6 +64,12 @@
56
64
  transition: color ease-in-out var(--neon-animation-speed-fast);
57
65
  @include svg.color-with-svg(var(--neon-color-low-contrast));
58
66
 
67
+ font-weight: var(--neon-font-weight-tabs);
68
+
69
+ &--selected {
70
+ font-weight: var(--neon-font-weight-tabs-selected);
71
+ }
72
+
59
73
  &:focus {
60
74
  outline: none;
61
75
  }
@@ -84,6 +98,7 @@
84
98
  position: absolute;
85
99
  height: var(--neon-border-width-tabs);
86
100
  bottom: 0;
101
+ left: 0;
87
102
  border-radius: var(--neon-border-radius-tabs);
88
103
  transition: all ease-in-out var(--neon-animation-speed-fast);
89
104
  }
@@ -92,7 +107,6 @@
92
107
 
93
108
  &.neon-tabs--s {
94
109
  .neon-tabs__menu-items {
95
- height: var(--neon-size-s);
96
110
  font-size: var(--neon-font-size-m);
97
111
 
98
112
  svg {
@@ -105,7 +119,6 @@
105
119
 
106
120
  &.neon-tabs--m {
107
121
  .neon-tabs__menu-items {
108
- height: var(--neon-size-m);
109
122
  font-size: var(--neon-font-size-l);
110
123
 
111
124
  svg {
@@ -118,7 +131,6 @@
118
131
 
119
132
  &.neon-tabs--l {
120
133
  .neon-tabs__menu-items {
121
- height: var(--neon-size-l);
122
134
  font-size: var(--neon-font-size-l);
123
135
 
124
136
  svg {
@@ -129,29 +141,48 @@
129
141
  }
130
142
  }
131
143
 
144
+ .neon-tabs__menu-items--full-width-mobile {
145
+ @include responsive.responsive(mobile-large) {
146
+ margin: 0 calc(-1 * var(--neon-gutter-mobile));
147
+ max-width: calc(100% + 2 * var(--neon-gutter-mobile));
148
+ width: calc(100% + 2 * var(--neon-gutter-mobile));
149
+ }
150
+ }
151
+
132
152
  .neon-tabs__menu-items--underlined {
133
- border-bottom: var(--neon-border-width-tabs) var(--neon-border-style) var(--neon-border-color-tabs-underline);
153
+ .neon-swiper__container {
154
+ position: relative;
155
+
156
+ &:after {
157
+ content: '';
158
+ position: absolute;
159
+ display: flex;
160
+ bottom: 0;
161
+ left: 0;
162
+ width: 100%;
163
+ height: var(--neon-border-width-tabs);
164
+ background-color: var(--neon-border-color-tabs-underline);
165
+ }
166
+
167
+ .neon-tabs__menu-item-container:before {
168
+ background-color: var(--neon-border-color-tabs-underline);
169
+ }
170
+ }
134
171
 
135
172
  .neon-tabs__menu-item-container:before {
136
- bottom: calc(-1 * var(--neon-border-width-tabs));
173
+ bottom: 0;
174
+ z-index: var(--neon-z-index-above);
137
175
  }
138
176
  }
139
177
 
140
178
  .neon-tabs__menu-item {
141
- & + .neon-tabs__menu-item {
142
- margin-left: calc(6 * var(--neon-base-space));
143
- }
144
-
145
179
  &-container {
180
+ padding: 0 calc(8 * var(--neon-base-space));
146
181
  flex-direction: row;
147
182
  }
148
183
 
149
- .neon-tabs__menu-item-container:focus {
150
- &:before {
151
- margin-left: var(--neon-base-space);
152
- margin-right: var(--neon-base-space);
153
- width: calc(100% - 2 * var(--neon-base-space));
154
- }
184
+ .neon-tabs__menu-label {
185
+ white-space: nowrap;
155
186
  }
156
187
  }
157
188
  }
@@ -178,7 +209,7 @@
178
209
  transition: all var(--neon-animation-speed-fast) ease-in-out;
179
210
  }
180
211
 
181
- &:focus {
212
+ &:focus-visible {
182
213
  outline: none;
183
214
 
184
215
  &:before {
@@ -187,17 +218,6 @@
187
218
  }
188
219
  }
189
220
 
190
- @include responsive.responsive(mobile-large) {
191
- .neon-tabs__menu-items {
192
- display: none;
193
- }
194
-
195
- .neon-tab {
196
- display: flex;
197
- padding-bottom: 0;
198
- }
199
- }
200
-
201
221
  .neon-card-body--full-width {
202
222
  .neon-tabs__menu-items {
203
223
  @include layout.padding-horizontal;
@@ -112,7 +112,7 @@
112
112
  NeonSplashLoader: [NeonIcon],
113
113
  NeonSwitch: [NeonIcon],
114
114
  NeonTab: [],
115
- NeonTabs: [NeonIcon],
115
+ NeonTabs: [NeonIcon, NeonSwiper, NeonLink],
116
116
  NeonToastContainer: [NeonIcon],
117
117
  NeonToggle: [NeonIcon],
118
118
  NeonToggleChip: [NeonIcon],