@carbon/ibm-products-styles 2.57.0 → 2.58.0-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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products-styles",
3
3
  "description": "Carbon for IBM Products styles",
4
- "version": "2.57.0",
4
+ "version": "2.58.0-rc.0",
5
5
  "license": "Apache-2.0",
6
6
  "installConfig": {
7
7
  "hoistingLimits": "none"
@@ -52,12 +52,12 @@
52
52
  "cross-env": "^7.0.3",
53
53
  "glob": "^11.0.1",
54
54
  "jest": "^29.7.0",
55
- "jest-config-ibm-cloud-cognitive": "^1.20.0",
55
+ "jest-config-ibm-cloud-cognitive": "^1.21.0-rc.0",
56
56
  "jest-environment-jsdom": "^29.7.0",
57
- "npm-check-updates": "^17.1.13",
57
+ "npm-check-updates": "^17.1.15",
58
58
  "npm-run-all": "^4.1.5",
59
59
  "rimraf": "^6.0.1",
60
- "sass": "^1.83.4",
60
+ "sass": "^1.85.1",
61
61
  "yargs": "^17.7.2"
62
62
  },
63
63
  "peerDependencies": {
@@ -68,7 +68,7 @@
68
68
  "@carbon/type": "^11.35.0"
69
69
  },
70
70
  "dependencies": {
71
- "@ibm/telemetry-js": "^1.8.0"
71
+ "@ibm/telemetry-js": "^1.9.1"
72
72
  },
73
- "gitHead": "2722d2ea768f07df5445cf74a5e9aed8d250637b"
73
+ "gitHead": "cb377019a08e8b30947d9c57e2dc1749a22e014f"
74
74
  }
@@ -10,9 +10,77 @@
10
10
  @use '@carbon/layout/scss/convert' as *;
11
11
  @use '@carbon/styles/scss/spacing' as *;
12
12
  @use '@carbon/styles/scss/type' as *;
13
+ @use '@carbon/styles/scss/motion' as *;
13
14
  @use '../../../../global/styles/project-settings' as c4p-settings;
14
-
15
- .#{$block-class}-filter-panel__container {
15
+ @use './animations' as *;
16
+
17
+ @property --panel-transform {
18
+ inherits: true;
19
+ initial-value: 320px;
20
+ syntax: '<integer>';
21
+ }
22
+ $block-class-component: #{$block-class}-filter-panel;
23
+
24
+ .#{$block-class-component} {
25
+ --panel-transform: 320px;
26
+
27
+ transform: translateX(0);
28
+ transition-behavior: allow-discrete;
29
+ transition-duration: $duration-moderate-01;
30
+ transition-property: display, opacity, transform;
31
+
32
+ @starting-style {
33
+ opacity: 0;
34
+ /* stylelint-disable-next-line carbon/layout-use */
35
+ transform: translateX(var(--panel-transform));
36
+ }
37
+
38
+ // animation only set for older browsers that do not support `transition-behavior: allow-discrete;`
39
+ &.#{$block-class-component}--open.#{$block-class-component}--left-placement {
40
+ animation: filter-panel-entrance-left $duration-moderate-01
41
+ motion(entrance, productive) forwards;
42
+ }
43
+
44
+ &.#{$block-class-component}--closing.#{$block-class-component}--left-placement {
45
+ animation: filter-panel-exit-left $duration-moderate-01
46
+ motion(exit, productive) forwards;
47
+ }
48
+
49
+ @supports (transition-behavior: allow-discrete) {
50
+ &.#{$block-class-component}--closing {
51
+ opacity: 0;
52
+ /* stylelint-disable-next-line carbon/layout-use */
53
+ transform: translateX(var(--panel-transform, 320px));
54
+ transition-duration: $duration-moderate-01;
55
+ }
56
+ &.#{$block-class-component}--closing.#{$block-class-component}--left-placement {
57
+ /* stylelint-disable-next-line carbon/layout-use */
58
+ transform: translateX(calc(-1 * var(--panel-transform, 320px)));
59
+ }
60
+ }
61
+
62
+ @media (prefers-reduced-motion) {
63
+ /* styles to apply if a user's device settings are set to reduced motion */
64
+ &.#{$block-class-component}--open.#{$block-class-component}--left-placement {
65
+ animation: filter-panel-entrance-reduced $duration-moderate-01
66
+ motion(exit, productive) forwards;
67
+ @starting-style {
68
+ opacity: 0;
69
+ transform: translateX(0);
70
+ }
71
+ }
72
+ &.#{$block-class-component}--closing.#{$block-class-component}--left-placement {
73
+ animation: filter-panel-exit-reduced $duration-moderate-01
74
+ motion(exit, productive) forwards;
75
+ @starting-style {
76
+ opacity: 1;
77
+ transform: translateX(0);
78
+ }
79
+ }
80
+ }
81
+ }
82
+
83
+ .#{$block-class-component}__container {
16
84
  position: relative;
17
85
  background-color: $layer-01;
18
86
  block-size: clamp(var(--filter-panel-min-height), 100%, 100vh);
@@ -21,11 +89,11 @@
21
89
  inline-size: to-rem(320px);
22
90
  }
23
91
 
24
- .#{$block-class}-filter-panel--open {
92
+ .#{$block-class-component}--open {
25
93
  border-inline-end: 1px $layer-accent-01 solid;
26
94
  }
27
95
 
28
- .#{$block-class}-filter-panel__container::before {
96
+ .#{$block-class-component}__container::before {
29
97
  position: absolute;
30
98
  display: block;
31
99
  background-color: $layer-01;
@@ -37,7 +105,7 @@
37
105
  inset-inline-start: 0;
38
106
  }
39
107
 
40
- .#{$block-class}-filter-panel__inner-container {
108
+ .#{$block-class-component}__inner-container {
41
109
  position: relative;
42
110
  z-index: 0;
43
111
  overflow: auto;
@@ -46,37 +114,37 @@
46
114
  }
47
115
 
48
116
  // Adds extra space to the last category so the scroll shows everything visible when you reach the bottom
49
- .#{$block-class}-filter-panel__inner-container
50
- .#{$block-class}-filter-panel__category:last-of-type {
117
+ .#{$block-class-component}__inner-container
118
+ .#{$block-class-component}__category:last-of-type {
51
119
  padding-block-end: $spacing-11;
52
120
  }
53
121
 
54
- .#{$block-class}-filter-panel {
122
+ .#{$block-class-component} {
55
123
  position: sticky;
56
124
  inset-block-start: 0;
57
125
  }
58
126
 
59
- .#{$block-class}-filter-panel__heading {
127
+ .#{$block-class-component}__heading {
60
128
  display: flex;
61
129
  justify-content: space-between;
62
130
  border-block-end: 1px solid transparent;
63
131
  padding-inline-start: $spacing-05;
64
132
  }
65
133
 
66
- .#{$block-class}-filter-panel__heading--with-divider {
134
+ .#{$block-class-component}__heading--with-divider {
67
135
  border-block-end: 1px solid $layer-accent-01;
68
136
  }
69
137
 
70
- .#{$block-class}-filter-panel__title {
138
+ .#{$block-class-component}__title {
71
139
  padding: $spacing-05 0;
72
140
  @include type-style('heading-compact-02');
73
141
  }
74
142
 
75
- .#{$block-class}-filter-panel__search {
143
+ .#{$block-class-component}__search {
76
144
  padding: 0 $spacing-05 $spacing-06;
77
145
  }
78
146
 
79
- .#{$block-class}-filter-panel__category-title {
147
+ .#{$block-class-component}__category-title {
80
148
  @include type-style('heading-compact-01');
81
149
 
82
150
  color: $text-secondary;
@@ -84,49 +152,59 @@
84
152
  margin-block-end: $spacing-05;
85
153
  }
86
154
 
87
- .#{$block-class}-filter-panel__category {
155
+ .#{$block-class-component}__category {
88
156
  padding-block-end: $spacing-06;
89
157
  }
90
158
 
91
159
  // This selects all filter elements inside of categories and give them 16px margin bottom
92
- .#{$block-class}-filter-panel__category
160
+ .#{$block-class-component}__category
93
161
  > *:not(.c4p--datagrid-filter-panel__category-title, .bx--accordion) {
94
162
  margin-block-end: $spacing-05;
95
163
  }
96
164
 
97
- .#{$block-class}-filter-panel__action-set {
165
+ .#{$block-class-component}__action-set {
98
166
  position: sticky;
99
167
  z-index: 1; // To layer action set on top of content behind when sticky
100
168
  /* stylelint-disable-next-line -- to-rem carbon replacement for rem */
101
169
  block-size: to-rem(64px);
102
170
  inset-block-end: 0;
103
171
  margin-block-start: auto;
172
+
173
+ opacity: 1;
174
+ transform: translateY(64px) translateZ(0);
175
+
176
+ &.#{$block-class-component}__animationComplete {
177
+ transform: none;
178
+ transition-behavior: allow-discrete;
179
+ transition-duration: $duration-moderate-01;
180
+ transition-property: display, opacity, transform;
181
+ }
104
182
  }
105
183
 
106
184
  // Overrides
107
- .#{$block-class}-filter-panel__container
185
+ .#{$block-class-component}__container
108
186
  .#{c4p-settings.$carbon-prefix}--accordion__title {
109
187
  margin: 0;
110
188
  }
111
189
 
112
- .#{$block-class}-filter-panel__container
190
+ .#{$block-class-component}__container
113
191
  .#{c4p-settings.$carbon-prefix}--accordion__arrow {
114
192
  margin: $spacing-01 0 0;
115
193
  }
116
194
 
117
- .#{$block-class}-filter-panel__container
195
+ .#{$block-class-component}__container
118
196
  .#{c4p-settings.$carbon-prefix}--accordion__content {
119
197
  padding-inline: 0;
120
198
  }
121
199
 
122
200
  // Makes sure every child (filter) inside the accordion content has space in between
123
- .#{$block-class}-filter-panel__container
201
+ .#{$block-class-component}__container
124
202
  .#{c4p-settings.$carbon-prefix}--accordion__content
125
203
  > *:not(:last-child) {
126
204
  margin-block-end: $spacing-05;
127
205
  }
128
206
 
129
- .#{c4p-settings.$carbon-prefix}--btn.c4p--datagrid-filter-panel-open-button {
207
+ .#{c4p-settings.$carbon-prefix}--btn.#{$block-class-component}-open-button {
130
208
  display: flex;
131
209
  justify-content: center;
132
210
  block-size: 3rem;
@@ -135,6 +213,6 @@
135
213
  inline-size: 3rem;
136
214
  }
137
215
 
138
- .#{c4p-settings.$carbon-prefix}--btn.#{$block-class}-filter-panel__view-all-button {
216
+ .#{c4p-settings.$carbon-prefix}--btn.#{$block-class-component}__view-all-button {
139
217
  margin-inline-start: -$spacing-05;
140
218
  }
@@ -0,0 +1,56 @@
1
+ //
2
+ // Copyright IBM Corp. 2025, 2025
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
+ @keyframes filter-panel-entrance-reduced {
9
+ 0% {
10
+ opacity: 0;
11
+ }
12
+
13
+ 100% {
14
+ opacity: 1;
15
+ }
16
+ }
17
+
18
+ @keyframes filter-panel-exit-reduced {
19
+ 0% {
20
+ opacity: 1;
21
+ }
22
+
23
+ 100% {
24
+ opacity: 0;
25
+ }
26
+ }
27
+
28
+ @keyframes filter-panel-entrance-left {
29
+ 0% {
30
+ inline-size: 0;
31
+ opacity: 0;
32
+ /* stylelint-disable-next-line carbon/layout-use */
33
+ transform: translateX(calc(var(--panel-transform) * -1));
34
+ }
35
+
36
+ 100% {
37
+ inline-size: var(--panel-transform);
38
+ opacity: 1;
39
+ transform: translateX(0);
40
+ }
41
+ }
42
+
43
+ @keyframes filter-panel-exit-left {
44
+ 0% {
45
+ inline-size: var(--panel-transform);
46
+ opacity: 1;
47
+ transform: translateX(0);
48
+ }
49
+
50
+ 100% {
51
+ inline-size: 0;
52
+ opacity: 0;
53
+ /* stylelint-disable-next-line carbon/layout-use */
54
+ transform: translateX(calc(var(--panel-transform) * -1));
55
+ }
56
+ }
@@ -0,0 +1,20 @@
1
+ //
2
+ // Copyright IBM Corp. 2025, 2025
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
+ @keyframes filter-summary-enter {
8
+ 0% {
9
+ block-size: 0;
10
+ opacity: 0;
11
+ /* Move from top */
12
+ transform: translateY(calc(var(--panel-transform) * -1));
13
+ }
14
+
15
+ 100% {
16
+ block-size: var(--panel-transform);
17
+ opacity: 1;
18
+ transform: translateY(0);
19
+ }
20
+ }
@@ -9,9 +9,16 @@
9
9
  @use '@carbon/styles/scss/spacing' as *;
10
10
  @use '@carbon/styles/scss/theme' as *;
11
11
  @use '@carbon/styles/scss/motion' as *;
12
+ @use './animations' as *;
12
13
 
13
14
  $block-class: #{$pkg-prefix}--filter-summary;
14
15
 
16
+ @property --panel-transform {
17
+ inherits: true;
18
+ initial-value: 16px;
19
+ syntax: '<length>';
20
+ }
21
+
15
22
  .#{$block-class} {
16
23
  display: flex;
17
24
  align-items: flex-start;
@@ -24,6 +31,10 @@ $block-class: #{$pkg-prefix}--filter-summary;
24
31
  &.#{$block-class}__expanded {
25
32
  block-size: fit-content;
26
33
  }
34
+ .#{$pkg-prefix}--tag-set__tag-container {
35
+ animation: filter-summary-enter $duration-moderate-01
36
+ motion(entrance, productive) forwards;
37
+ }
27
38
  }
28
39
 
29
40
  .#{$block-class}
@@ -71,6 +71,10 @@ $block-class: #{c4p-settings.$pkg-prefix}--full-page-error;
71
71
  margin-block-end: $spacing-07;
72
72
  }
73
73
 
74
+ .#{$block-class}__body {
75
+ @include type-style('body-02');
76
+ }
77
+
74
78
  // safari rendering fix
75
79
  .#{$block-class}__svg-container svg.#{$block-class}__svg {
76
80
  inline-size: 100%;
@@ -78,14 +78,14 @@ $block-class: #{c4p-settings.$pkg-prefix}--card;
78
78
  .#{$block-class}__pictogram ~ .#{$block-class}__content-container {
79
79
  .#{$block-class}__media {
80
80
  /* stylelint-disable-next-line function-no-unknown */
81
- margin-block: to-rem(-50px) -$spacing-09;
81
+ margin-block: to-rem(-50px) - $spacing-09;
82
82
  }
83
83
  }
84
84
 
85
85
  .#{$block-class}__sequence ~ .#{$block-class}__content-container {
86
86
  .#{$block-class}__media {
87
87
  /* stylelint-disable-next-line function-no-unknown */
88
- margin-block: to-rem(-56px) -$spacing-09;
88
+ margin-block: to-rem(-56px) - $spacing-09;
89
89
  }
90
90
  }
91
91
 
@@ -21,7 +21,7 @@
21
21
  $block-class: #{c4p-settings.$pkg-prefix}--notifications-panel;
22
22
  $block-size: 38.5rem;
23
23
 
24
- @keyframes fade-in {
24
+ @keyframes notifications-panel-fade-in {
25
25
  0% {
26
26
  opacity: 0;
27
27
  // stylelint-disable-next-line carbon/layout-use
@@ -34,7 +34,7 @@ $block-size: 38.5rem;
34
34
  }
35
35
  }
36
36
 
37
- @keyframes fade-out {
37
+ @keyframes notifications-panel-fade-out {
38
38
  0% {
39
39
  opacity: 1;
40
40
  transform: translateY(0);
@@ -46,17 +46,45 @@ $block-size: 38.5rem;
46
46
  transform: translateY(-$block-size); // the height of the notification panel
47
47
  }
48
48
  }
49
+
50
+ @keyframes notifications-panel-entrance-reduced {
51
+ 0% {
52
+ opacity: 0;
53
+ }
54
+
55
+ 100% {
56
+ opacity: 1;
57
+ }
58
+ }
59
+
60
+ @keyframes notifications-panel-exit-reduced {
61
+ 0% {
62
+ opacity: 1;
63
+ }
64
+
65
+ 100% {
66
+ opacity: 0;
67
+ }
68
+ }
69
+
49
70
  .#{$block-class}__entrance {
50
- animation: fade-in $duration-moderate-02 motion(standard);
71
+ animation: notifications-panel-fade-in $duration-moderate-02 motion(standard);
51
72
  }
52
73
 
53
74
  .#{$block-class}__exit {
54
- animation: fade-out forwards $duration-moderate-02 motion(standard);
75
+ animation: notifications-panel-fade-out $duration-moderate-02 motion(standard)
76
+ forwards;
55
77
  }
56
78
 
57
- .#{$block-class} {
58
- @media (prefers-reduced-motion) {
59
- animation: none;
79
+ @media (prefers-reduced-motion) {
80
+ .#{$block-class}__entrance {
81
+ animation: notifications-panel-entrance-reduced $duration-moderate-01
82
+ motion(exit, productive) forwards;
83
+ }
84
+
85
+ .#{$block-class}__exit {
86
+ animation: notifications-panel-exit-reduced $duration-moderate-01
87
+ motion(exit, productive) forwards;
60
88
  }
61
89
  }
62
90
 
@@ -147,7 +147,8 @@ $action-set-block-class: #{c4p-settings.$pkg-prefix}--action-set;
147
147
 
148
148
  @media (prefers-reduced-motion) {
149
149
  /* styles to apply if a user's device settings are set to reduced motion */
150
- &.#{$block-class}--open {
150
+ &.#{$block-class}--open.#{$block-class}--right-placement,
151
+ &.#{$block-class}--open.#{$block-class}--left-placement {
151
152
  animation: side-panel-entrance-reduced $duration-moderate-01
152
153
  motion(exit, productive) forwards;
153
154
  @starting-style {
@@ -155,7 +156,8 @@ $action-set-block-class: #{c4p-settings.$pkg-prefix}--action-set;
155
156
  transform: translateX(0);
156
157
  }
157
158
  }
158
- &.#{$block-class}--closing {
159
+ &.#{$block-class}--closing.#{$block-class}--left-placement,
160
+ &.#{$block-class}--closing.#{$block-class}--right-placement {
159
161
  animation: side-panel-exit-reduced $duration-moderate-01
160
162
  motion(exit, productive) forwards;
161
163
  @starting-style {
@@ -401,18 +401,12 @@ $motion-duration: $duration-moderate-02;
401
401
  }
402
402
 
403
403
  &.#{$block-class}--wide .#{$block-class}__content {
404
- // Revert background color overridden by Carbon's modal - https://github.com/carbon-design-system/carbon/blob/main/packages/styles/scss/components/modal/_modal.scss#L54
405
- .#{$carbon-prefix}--pagination,
406
- .#{$carbon-prefix}--pagination__control-buttons,
407
- .#{$carbon-prefix}--text-input,
408
- .#{$carbon-prefix}--text-area,
409
- .#{$carbon-prefix}--search-input,
410
- .#{$carbon-prefix}--select-input,
411
- .#{$carbon-prefix}--dropdown,
412
- .#{$carbon-prefix}--dropdown-list,
413
- .#{$carbon-prefix}--number input[type='number'],
414
- .#{$carbon-prefix}--date-picker__input {
415
- background-color: $field;
404
+ // Specific to the Tearsheet *and* radio buttons,
405
+ // `readOnly` styling is not applying a grey outline.
406
+ .#{$carbon-prefix}--radio-button[readonly]
407
+ + .#{$carbon-prefix}--radio-button__label
408
+ .#{$carbon-prefix}--radio-button__appearance {
409
+ border-color: $icon-disabled;
416
410
  }
417
411
 
418
412
  .#{$carbon-prefix}--select--inline .#{$carbon-prefix}--select-input {