@carbon/element-styles 0.3.4-rc.0 → 0.3.5-rc.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.
@@ -15,6 +15,7 @@
15
15
 
16
16
  @use '../../layout';
17
17
  @use '../../utilities/icons';
18
+ @use '../../utilities/guards';
18
19
 
19
20
  $config: () !default;
20
21
 
@@ -51,9 +52,11 @@ $-default-config: (
51
52
  fill: currentColor;
52
53
  }
53
54
 
54
- &:hover {
55
- @include layer.layer-background-hover;
56
- color: inherit;
55
+ @include guards.hover {
56
+ &:hover {
57
+ @include layer.layer-background-hover;
58
+ color: inherit;
59
+ }
57
60
  }
58
61
 
59
62
  &:active {
@@ -74,8 +77,10 @@ $-default-config: (
74
77
  transition: color layout.$mode--transition-duration layout.$mode--transition-timing-function;
75
78
  }
76
79
 
77
- &:hover::after {
78
- color: theme.$icon-primary;
80
+ @include guards.hover {
81
+ &:hover::after {
82
+ color: theme.$icon-primary;
83
+ }
79
84
  }
80
85
  }
81
86
  }
@@ -15,6 +15,7 @@
15
15
  @use '../label';
16
16
 
17
17
  @use '../../layout';
18
+ @use '../../utilities/guards';
18
19
 
19
20
  $config: () !default;
20
21
 
@@ -98,7 +99,10 @@ $-knob-size: calc($-block-size - $-knob-spacing * 2);
98
99
  background-color: theme.$icon-on-color;
99
100
  inset-inline-start: $-knob-spacing;
100
101
  inset-block-start: $-knob-spacing;
101
- transition: translate layout.$mode--transition-duration layout.$mode--transition-timing-function;
102
+
103
+ @include guards.motion {
104
+ transition: translate layout.$mode--transition-duration layout.$mode--transition-timing-function;
105
+ }
102
106
  }
103
107
 
104
108
  & button[role="switch"][aria-checked="true"]::before {
@@ -14,6 +14,7 @@
14
14
 
15
15
  @use '../../layout';
16
16
  @use '../../utilities/icons';
17
+ @use '../../utilities/guards';
17
18
 
18
19
  $config: () !default;
19
20
 
@@ -49,9 +50,11 @@ $-default-config: (
49
50
  transition-duration: layout.$mode--transition-duration;
50
51
  transition-timing-function: layout.$mode--transition-timing-function;
51
52
 
52
- &:hover {
53
- background-color: theme.$layer-hover;
54
- color: theme.$text-primary;
53
+ @include guards.hover {
54
+ &:hover {
55
+ background-color: theme.$layer-hover;
56
+ color: theme.$text-primary;
57
+ }
55
58
  }
56
59
 
57
60
  &:active {
@@ -87,9 +90,15 @@ $-default-config: (
87
90
  color: theme.$text-disabled;
88
91
  cursor: not-allowed;
89
92
 
90
- &:hover, &:active {
93
+ &:active {
91
94
  background-color: transparent;
92
95
  }
96
+
97
+ @include guards.hover {
98
+ &:hover {
99
+ background-color: transparent;
100
+ }
101
+ }
93
102
  }
94
103
 
95
104
  & li[role="treeitem"] > ul[role="group"] {
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Copyright IBM Corp. 2026
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ @use 'sass:map';
9
+
10
+ @use '../_labelled-input';
11
+
12
+ @use '../../layout';
13
+
14
+ $config: () !default;
15
+
16
+ $-default-config: (
17
+ selector: 'label:has(input[type="url"])',
18
+ axis: 'block',
19
+ );
20
+
21
+ /// @group url-input
22
+ /// @param {Map} config [()]
23
+ /// @param {Selector} config.selector ['label:has(input[type="url"])']
24
+ /// @param {'block' | 'axis'} config.axis ['block']
25
+ @mixin styles($config: $config) {
26
+ $props: map.deep-merge($-default-config, $config);
27
+
28
+ #{map.get($props, 'selector')} {
29
+ @include labelled-input.styles((
30
+ label: (
31
+ selector: '&',
32
+ axis: map.get($props, 'axis'),
33
+ ),
34
+ input: (
35
+ selector: 'input[type="url"]',
36
+ ),
37
+ input-invalid-slot: 'after',
38
+ ));
39
+ }
40
+ }
@@ -21,6 +21,7 @@
21
21
  @use '../../elements/description-list';
22
22
  @use '../../elements/details';
23
23
  @use '../../elements/dialog';
24
+ @use '../../elements/email-input';
24
25
  @use '../../elements/fieldset';
25
26
  @use '../../elements/file-input';
26
27
  @use '../../elements/footer';
@@ -56,6 +57,7 @@
56
57
  @use '../../elements/side-navigation';
57
58
  @use '../../elements/small-text';
58
59
  @use '../../elements/table';
60
+ @use '../../elements/telephone-number-input';
59
61
  @use '../../elements/text-area';
60
62
  @use '../../elements/text-input';
61
63
  @use '../../elements/tile';
@@ -64,6 +66,7 @@
64
66
  @use '../../elements/tooltip';
65
67
  @use '../../elements/tree-view';
66
68
  @use '../../elements/unordered-list';
69
+ @use '../../elements/url-input';
67
70
 
68
71
  @mixin styles {
69
72
  @include abbreviation.styles;
@@ -86,6 +89,7 @@
86
89
  @include description-list.styles;
87
90
  @include details.styles;
88
91
  @include dialog.styles;
92
+ @include email-input.styles;
89
93
  @include fieldset.styles;
90
94
  @include file-input.styles;
91
95
  @include footer.styles;
@@ -112,6 +116,7 @@
112
116
  @include password-input.styles;
113
117
  @include popover.styles;
114
118
  @include preformatted.styles;
119
+ @include progress-bar.styles;
115
120
  @include radio-button.styles;
116
121
  @include range-input.styles;
117
122
  @include search-input.styles;
@@ -121,6 +126,7 @@
121
126
  @include table.styles((
122
127
  kind: 'structured-list',
123
128
  ));
129
+ @include telephone-number-input.styles;
124
130
  @include text-area.styles;
125
131
  @include text-input.styles;
126
132
  @include tile.styles;
@@ -128,4 +134,5 @@
128
134
  @include toggle.styles;
129
135
  @include tooltip.styles;
130
136
  @include unordered-list.styles;
137
+ @include url-input.styles;
131
138
  }
@@ -21,6 +21,7 @@
21
21
  @use '../../elements/description-list';
22
22
  @use '../../elements/details';
23
23
  @use '../../elements/dialog';
24
+ @use '../../elements/email-input';
24
25
  @use '../../elements/fieldset';
25
26
  @use '../../elements/file-input';
26
27
  @use '../../elements/footer';
@@ -56,6 +57,7 @@
56
57
  @use '../../elements/side-navigation';
57
58
  @use '../../elements/small-text';
58
59
  @use '../../elements/table';
60
+ @use '../../elements/telephone-number-input';
59
61
  @use '../../elements/text-area';
60
62
  @use '../../elements/text-input';
61
63
  @use '../../elements/tile';
@@ -64,6 +66,7 @@
64
66
  @use '../../elements/tooltip';
65
67
  @use '../../elements/tree-view';
66
68
  @use '../../elements/unordered-list';
69
+ @use '../../elements/url-input';
67
70
 
68
71
  @mixin styles {
69
72
  @include abbreviation.styles;
@@ -86,6 +89,7 @@
86
89
  @include description-list.styles;
87
90
  @include details.styles;
88
91
  @include dialog.styles;
92
+ @include email-input.styles;
89
93
  @include fieldset.styles;
90
94
  @include file-input.styles;
91
95
  @include footer.styles;
@@ -112,6 +116,7 @@
112
116
  @include password-input.styles;
113
117
  @include popover.styles;
114
118
  @include preformatted.styles;
119
+ @include progress-bar.styles;
115
120
  @include radio-button.styles;
116
121
  @include range-input.styles;
117
122
  @include search-input.styles;
@@ -119,6 +124,7 @@
119
124
  @include side-navigation.styles;
120
125
  @include small-text.styles;
121
126
  @include table.styles;
127
+ @include telephone-number-input.styles;
122
128
  @include text-area.styles;
123
129
  @include text-input.styles;
124
130
  @include tile.styles;
@@ -126,4 +132,5 @@
126
132
  @include toggle.styles;
127
133
  @include tooltip.styles;
128
134
  @include unordered-list.styles;
135
+ @include url-input.styles;
129
136
  }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Copyright IBM Corp. 2026
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ /// Guards styles to devices that have some hover-capable input mechanism.
9
+ /// @group guards
10
+ @mixin hover {
11
+ @media (any-hover: hover) {
12
+ @content;
13
+ }
14
+ }
15
+
16
+ /// Guards styles to users without a "reduced motion" preference on devices that can meaningfully display motion.
17
+ /// @group guards
18
+ @mixin motion {
19
+ @media (prefers-reduced-motion: no-preference) and (update: fast) {
20
+ @content;
21
+ }
22
+ }