@carbon/element-styles 0.3.15-rc.0 → 0.3.16-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.
Files changed (79) hide show
  1. package/README.md +21 -0
  2. package/css/prebuilt/editorial.css +1 -1
  3. package/css/prebuilt/expressive.css +1 -1
  4. package/css/prebuilt/productive.css +1 -1
  5. package/package.json +2 -2
  6. package/scss/_config.scss +9 -0
  7. package/scss/elements/_heading/index.scss +7 -4
  8. package/scss/elements/_input/index.scss +50 -47
  9. package/scss/elements/_labelled-input/index.scss +44 -41
  10. package/scss/elements/_layer/index.scss +17 -14
  11. package/scss/elements/abbreviation/index.scss +7 -4
  12. package/scss/elements/address/index.scss +7 -4
  13. package/scss/elements/anchor/index.scss +33 -30
  14. package/scss/elements/block-quotation/index.scss +30 -27
  15. package/scss/elements/body/index.scss +7 -4
  16. package/scss/elements/bold-text/index.scss +5 -2
  17. package/scss/elements/button/index.scss +183 -180
  18. package/scss/elements/checkbox/index.scss +40 -37
  19. package/scss/elements/code/index.scss +9 -6
  20. package/scss/elements/color-input/index.scss +70 -67
  21. package/scss/elements/combo-box/index.scss +35 -32
  22. package/scss/elements/date-input/index.scss +24 -21
  23. package/scss/elements/date-time-input/index.scss +24 -21
  24. package/scss/elements/deleted-text/index.scss +8 -5
  25. package/scss/elements/description-list/index.scss +17 -14
  26. package/scss/elements/details/index.scss +53 -48
  27. package/scss/elements/dialog/index.scss +173 -170
  28. package/scss/elements/email-input/index.scss +16 -13
  29. package/scss/elements/fieldset/index.scss +15 -12
  30. package/scss/elements/file-input/index.scss +53 -50
  31. package/scss/elements/footer/index.scss +9 -6
  32. package/scss/elements/header-navigation/index.scss +101 -98
  33. package/scss/elements/heading-level-1/index.scss +6 -3
  34. package/scss/elements/heading-level-2/index.scss +6 -3
  35. package/scss/elements/heading-level-3/index.scss +6 -3
  36. package/scss/elements/heading-level-4/index.scss +6 -3
  37. package/scss/elements/heading-level-5/index.scss +6 -3
  38. package/scss/elements/heading-level-6/index.scss +6 -3
  39. package/scss/elements/horizontal-rule/index.scss +12 -9
  40. package/scss/elements/image/index.scss +6 -2
  41. package/scss/elements/inline-loading/index.scss +34 -31
  42. package/scss/elements/inline-quotation/index.scss +6 -3
  43. package/scss/elements/inserted-text/index.scss +9 -6
  44. package/scss/elements/italic-text/index.scss +5 -2
  45. package/scss/elements/keyboard-input/index.scss +9 -6
  46. package/scss/elements/label/index.scss +22 -19
  47. package/scss/elements/main/index.scss +7 -4
  48. package/scss/elements/marked-text/index.scss +7 -4
  49. package/scss/elements/menu/index.scss +71 -64
  50. package/scss/elements/meter/index.scss +45 -42
  51. package/scss/elements/number-input/index.scss +16 -12
  52. package/scss/elements/ordered-list/index.scss +25 -22
  53. package/scss/elements/paragraph/index.scss +8 -5
  54. package/scss/elements/password-input/index.scss +17 -13
  55. package/scss/elements/popover/index.scss +75 -72
  56. package/scss/elements/preformatted/index.scss +18 -15
  57. package/scss/elements/progress-bar/index.scss +71 -68
  58. package/scss/elements/radio-button/index.scss +35 -32
  59. package/scss/elements/range-input/index.scss +42 -39
  60. package/scss/elements/search-input/index.scss +21 -18
  61. package/scss/elements/select/index.scss +36 -33
  62. package/scss/elements/side-navigation/index.scss +141 -137
  63. package/scss/elements/small-text/index.scss +7 -4
  64. package/scss/elements/table/index.scss +93 -90
  65. package/scss/elements/tabs/index.scss +155 -152
  66. package/scss/elements/telephone-number-input/index.scss +16 -13
  67. package/scss/elements/text-area/index.scss +21 -18
  68. package/scss/elements/text-input/index.scss +16 -13
  69. package/scss/elements/tile/index.scss +49 -45
  70. package/scss/elements/time-input/index.scss +24 -21
  71. package/scss/elements/toggle/index.scss +71 -68
  72. package/scss/elements/tooltip/index.scss +16 -13
  73. package/scss/elements/tree-view/index.scss +86 -82
  74. package/scss/elements/unordered-list/index.scss +21 -18
  75. package/scss/elements/url-input/index.scss +16 -13
  76. package/scss/prebuilt/editorial/_elements.scss +37 -33
  77. package/scss/prebuilt/expressive/_elements.scss +75 -71
  78. package/scss/prebuilt/productive/_elements.scss +71 -67
  79. package/scss/utilities/_cascade-layer.scss +33 -0
@@ -10,6 +10,7 @@
10
10
  @use "@carbon/styles/scss/theme";
11
11
 
12
12
  @use "../../layout";
13
+ @use "../../utilities/cascade-layer";
13
14
 
14
15
  $config: () !default;
15
16
 
@@ -23,21 +24,23 @@ $-default-config: (
23
24
  @mixin styles($config: $config) {
24
25
  $props: map.deep-merge($-default-config, $config);
25
26
 
26
- #{map.get($props, "selector")} {
27
- @include layout.mode--code;
28
- white-space: pre;
29
- margin-block: layout.$mode--margin-block;
30
- padding: layout.$density--padding;
31
- background-color: theme.$layer;
32
- inline-size: 100%;
33
- overflow-x: auto;
34
- box-sizing: border-box;
35
-
36
- & code {
37
- box-shadow: none;
38
- border-radius: 0;
39
- padding-inline: 0;
40
- background-color: transparent;
27
+ @include cascade-layer.wrap {
28
+ #{map.get($props, "selector")} {
29
+ @include layout.mode--code;
30
+ white-space: pre;
31
+ margin-block: layout.$mode--margin-block;
32
+ padding: layout.$density--padding;
33
+ background-color: theme.$layer;
34
+ inline-size: 100%;
35
+ overflow-x: auto;
36
+ box-sizing: border-box;
37
+
38
+ & code {
39
+ box-shadow: none;
40
+ border-radius: 0;
41
+ padding-inline: 0;
42
+ background-color: transparent;
43
+ }
41
44
  }
42
45
  }
43
46
  }
@@ -15,6 +15,7 @@
15
15
 
16
16
  @use "../../config";
17
17
  @use "../../layout";
18
+ @use "../../utilities/cascade-layer";
18
19
  @use "../../utilities/guards";
19
20
 
20
21
  $config: () !default;
@@ -33,85 +34,87 @@ $-default-config: (
33
34
  @mixin styles($config: $config) {
34
35
  $props: map.deep-merge($-default-config, $config);
35
36
 
36
- #{map.get($props, "selector")} {
37
- @include label.styles(
38
- (
39
- selector: "&",
40
- axis: map.get($props, "axis"),
41
- )
42
- );
43
-
44
- & progress {
45
- appearance: none;
46
- background-color: theme.$layer;
47
- border: none;
48
- box-shadow: none;
49
- border-radius: 0;
50
- overflow: hidden;
51
-
52
- @if map.get($props, "thickness") == "thick" {
53
- block-size: 0.5rem;
37
+ @include cascade-layer.wrap {
38
+ #{map.get($props, "selector")} {
39
+ @include label.styles(
40
+ (
41
+ selector: "&",
42
+ axis: map.get($props, "axis"),
43
+ )
44
+ );
45
+
46
+ & progress {
47
+ appearance: none;
48
+ background-color: theme.$layer;
49
+ border: none;
50
+ box-shadow: none;
51
+ border-radius: 0;
52
+ overflow: hidden;
53
+
54
+ @if map.get($props, "thickness") == "thick" {
55
+ block-size: 0.5rem;
56
+ }
57
+
58
+ @if map.get($props, "thickness") == "thin" {
59
+ block-size: 0.25rem;
60
+ }
54
61
  }
55
62
 
56
- @if map.get($props, "thickness") == "thin" {
57
- block-size: 0.25rem;
63
+ & progress::-webkit-progress-bar {
64
+ background-color: theme.$layer;
65
+ block-size: inherit;
66
+ border: none;
67
+ box-shadow: none;
68
+ border-radius: 0;
69
+ overflow: hidden;
58
70
  }
59
- }
60
-
61
- & progress::-webkit-progress-bar {
62
- background-color: theme.$layer;
63
- block-size: inherit;
64
- border: none;
65
- box-shadow: none;
66
- border-radius: 0;
67
- overflow: hidden;
68
- }
69
-
70
- & progress::-webkit-progress-value {
71
- background-color: theme.$interactive;
72
- }
73
71
 
74
- & progress::-moz-progress-bar {
75
- background-color: theme.$interactive;
76
- }
72
+ & progress::-webkit-progress-value {
73
+ background-color: theme.$interactive;
74
+ }
77
75
 
78
- & progress:not([value])::-moz-progress-bar {
79
- background-color: transparent;
80
- background-image: linear-gradient(90deg, theme.$interactive 12.5%, transparent 12.5%);
81
- background-position-x: 0%;
82
- background-size: 200% 100%;
83
- animation-name: #{carbon-config.$prefix}--#{config.$prefix}--progress-bar--indeterminate;
84
- animation-duration: calc(motion.$duration-slow-02 * 5);
85
- animation-timing-function: linear;
86
- animation-iteration-count: infinite;
87
-
88
- @include guards.motion {
89
- animation-duration: calc(motion.$duration-slow-02 * 2);
76
+ & progress::-moz-progress-bar {
77
+ background-color: theme.$interactive;
90
78
  }
91
- }
92
79
 
93
- & progress:not([value])::-webkit-progress-bar {
94
- background-image: linear-gradient(90deg, theme.$interactive 12.5%, transparent 12.5%);
95
- background-position-x: 0%;
96
- background-size: 200% 100%;
97
- animation-name: #{carbon-config.$prefix}--#{config.$prefix}--progress-bar--indeterminate;
98
- animation-duration: calc(motion.$duration-slow-02 * 5);
99
- animation-timing-function: linear;
100
- animation-iteration-count: infinite;
101
-
102
- @include guards.motion {
103
- animation-duration: calc(motion.$duration-slow-02 * 2);
80
+ & progress:not([value])::-moz-progress-bar {
81
+ background-color: transparent;
82
+ background-image: linear-gradient(90deg, theme.$interactive 12.5%, transparent 12.5%);
83
+ background-position-x: 0%;
84
+ background-size: 200% 100%;
85
+ animation-name: #{carbon-config.$prefix}--#{config.$prefix}--progress-bar--indeterminate;
86
+ animation-duration: calc(motion.$duration-slow-02 * 5);
87
+ animation-timing-function: linear;
88
+ animation-iteration-count: infinite;
89
+
90
+ @include guards.motion {
91
+ animation-duration: calc(motion.$duration-slow-02 * 2);
92
+ }
104
93
  }
105
- }
106
94
 
107
- @keyframes #{carbon-config.$prefix}--#{config.$prefix}--progress-bar--indeterminate {
108
- 0% {
109
- background-position-x: 25%;
95
+ & progress:not([value])::-webkit-progress-bar {
96
+ background-image: linear-gradient(90deg, theme.$interactive 12.5%, transparent 12.5%);
97
+ background-position-x: 0%;
98
+ background-size: 200% 100%;
99
+ animation-name: #{carbon-config.$prefix}--#{config.$prefix}--progress-bar--indeterminate;
100
+ animation-duration: calc(motion.$duration-slow-02 * 5);
101
+ animation-timing-function: linear;
102
+ animation-iteration-count: infinite;
103
+
104
+ @include guards.motion {
105
+ animation-duration: calc(motion.$duration-slow-02 * 2);
106
+ }
110
107
  }
111
108
 
112
- 80%,
113
- 100% {
114
- background-position-x: -105%;
109
+ @keyframes #{carbon-config.$prefix}--#{config.$prefix}--progress-bar--indeterminate {
110
+ 0% {
111
+ background-position-x: 25%;
112
+ }
113
+
114
+ 80%,
115
+ 100% {
116
+ background-position-x: -105%;
117
+ }
115
118
  }
116
119
  }
117
120
  }
@@ -13,6 +13,7 @@
13
13
  @use "../label";
14
14
 
15
15
  @use "../../layout";
16
+ @use "../../utilities/cascade-layer";
16
17
 
17
18
  $config: () !default;
18
19
 
@@ -26,43 +27,45 @@ $-default-config: (
26
27
  @mixin styles($config: $config) {
27
28
  $props: map.deep-merge($-default-config, $config);
28
29
 
29
- #{map.get($props, "selector")} {
30
- @include label.styles(
31
- (
32
- selector: "&",
33
- axis: "inline",
34
- )
35
- );
30
+ @include cascade-layer.wrap {
31
+ #{map.get($props, "selector")} {
32
+ @include label.styles(
33
+ (
34
+ selector: "&",
35
+ axis: "inline",
36
+ )
37
+ );
36
38
 
37
- justify-content: start;
38
- cursor: pointer;
39
+ justify-content: start;
40
+ cursor: pointer;
39
41
 
40
- & input[type="radio"] {
41
- grid-column: 1;
42
- position: relative;
43
- appearance: none;
44
- border: none;
45
- block-size: 1rem;
46
- inline-size: 1rem;
47
- border-radius: 50%;
48
- color: theme.$icon-primary;
49
- border: 0.0625rem solid currentColor;
42
+ & input[type="radio"] {
43
+ grid-column: 1;
44
+ position: relative;
45
+ appearance: none;
46
+ border: none;
47
+ block-size: 1rem;
48
+ inline-size: 1rem;
49
+ border-radius: 50%;
50
+ color: theme.$icon-primary;
51
+ border: 0.0625rem solid currentColor;
50
52
 
51
- &:focus {
52
- @include focus-outline.focus-outline("outline");
53
- outline-offset: 0.125rem;
54
- }
53
+ &:focus {
54
+ @include focus-outline.focus-outline("outline");
55
+ outline-offset: 0.125rem;
56
+ }
55
57
 
56
- &:disabled {
57
- color: theme.$icon-disabled;
58
- }
58
+ &:disabled {
59
+ color: theme.$icon-disabled;
60
+ }
59
61
 
60
- &:checked::before {
61
- content: "";
62
- position: absolute;
63
- inset: 0.25rem;
64
- border-radius: 50%;
65
- background-color: currentColor;
62
+ &:checked::before {
63
+ content: "";
64
+ position: absolute;
65
+ inset: 0.25rem;
66
+ border-radius: 50%;
67
+ background-color: currentColor;
68
+ }
66
69
  }
67
70
  }
68
71
  }
@@ -13,6 +13,7 @@
13
13
  @use "../label";
14
14
 
15
15
  @use "../../layout";
16
+ @use "../../utilities/cascade-layer";
16
17
 
17
18
  $config: () !default;
18
19
 
@@ -28,51 +29,53 @@ $-default-config: (
28
29
  @mixin styles($config: $config) {
29
30
  $props: map.deep-merge($-default-config, $config);
30
31
 
31
- #{map.get($props, "selector")} {
32
- @include label.styles(
33
- (
34
- selector: "&",
35
- axis: map.get($props, "axis"),
36
- )
37
- );
32
+ @include cascade-layer.wrap {
33
+ #{map.get($props, "selector")} {
34
+ @include label.styles(
35
+ (
36
+ selector: "&",
37
+ axis: map.get($props, "axis"),
38
+ )
39
+ );
38
40
 
39
- & input[type="range"] {
40
- display: block;
41
- appearance: none;
42
- background-color: transparent;
43
- block-size: 1.25rem;
44
- }
41
+ & input[type="range"] {
42
+ display: block;
43
+ appearance: none;
44
+ background-color: transparent;
45
+ block-size: 1.25rem;
46
+ }
45
47
 
46
- & input[type="range"]::-webkit-slider-thumb {
47
- appearance: none;
48
- block-size: 0.875rem;
49
- inline-size: 0.875rem;
50
- border-radius: 50%;
51
- background-color: theme.$layer-selected-inverse;
52
- translate: 0 calc(-50% + 0.125rem * 0.5);
53
- cursor: pointer;
54
- }
48
+ & input[type="range"]::-webkit-slider-thumb {
49
+ appearance: none;
50
+ block-size: 0.875rem;
51
+ inline-size: 0.875rem;
52
+ border-radius: 50%;
53
+ background-color: theme.$layer-selected-inverse;
54
+ translate: 0 calc(-50% + 0.125rem * 0.5);
55
+ cursor: pointer;
56
+ }
55
57
 
56
- & input[type="range"]::-webkit-slider-runnable-track {
57
- height: 0.125rem;
58
- background-color: theme.$border-subtle;
59
- cursor: pointer;
60
- }
58
+ & input[type="range"]::-webkit-slider-runnable-track {
59
+ height: 0.125rem;
60
+ background-color: theme.$border-subtle;
61
+ cursor: pointer;
62
+ }
61
63
 
62
- & input[type="range"]:focus {
63
- outline: none;
64
- }
64
+ & input[type="range"]:focus {
65
+ outline: none;
66
+ }
65
67
 
66
- & input[type="range"]:focus::-webkit-slider-thumb {
67
- background-color: theme.$border-interactive;
68
- outline: 0.125rem solid theme.$border-interactive;
69
- outline-offset: calc(0.0625rem + 0.125rem);
70
- }
68
+ & input[type="range"]:focus::-webkit-slider-thumb {
69
+ background-color: theme.$border-interactive;
70
+ outline: 0.125rem solid theme.$border-interactive;
71
+ outline-offset: calc(0.0625rem + 0.125rem);
72
+ }
71
73
 
72
- & input[type="range"]:disabled::-webkit-slider-thumb,
73
- & input[type="range"]::-webkit-slider-runnable-track {
74
- background-color: theme.$border-disabled;
75
- cursor: not-allowed;
74
+ & input[type="range"]:disabled::-webkit-slider-thumb,
75
+ & input[type="range"]::-webkit-slider-runnable-track {
76
+ background-color: theme.$border-disabled;
77
+ cursor: not-allowed;
78
+ }
76
79
  }
77
80
  }
78
81
  }
@@ -9,6 +9,7 @@
9
9
 
10
10
  @use "../_labelled-input";
11
11
 
12
+ @use "../../utilities/cascade-layer";
12
13
  @use "../../utilities/icons";
13
14
 
14
15
  $config: () !default;
@@ -25,24 +26,26 @@ $-default-config: (
25
26
  @mixin styles($config: $config) {
26
27
  $props: map.deep-merge($-default-config, $config);
27
28
 
28
- #{map.get($props, "selector")} {
29
- @include labelled-input.styles(
30
- (
31
- label: (
32
- selector: "&",
33
- axis: map.get($props, "axis"),
34
- ),
35
- input: (
36
- selector: 'input[type="search"]',
37
- ),
38
- fixed-input-leading-slots: 1,
39
- input-invalid-slot: "after",
40
- )
41
- );
42
-
43
- &::before {
44
- @include labelled-input.input-leading-slot {
45
- @include icons.search;
29
+ @include cascade-layer.wrap {
30
+ #{map.get($props, "selector")} {
31
+ @include labelled-input.styles(
32
+ (
33
+ label: (
34
+ selector: "&",
35
+ axis: map.get($props, "axis"),
36
+ ),
37
+ input: (
38
+ selector: 'input[type="search"]',
39
+ ),
40
+ fixed-input-leading-slots: 1,
41
+ input-invalid-slot: "after",
42
+ )
43
+ );
44
+
45
+ &::before {
46
+ @include labelled-input.input-leading-slot {
47
+ @include icons.search;
48
+ }
46
49
  }
47
50
  }
48
51
  }
@@ -12,6 +12,7 @@
12
12
  @use "../_labelled-input";
13
13
 
14
14
  @use "../../layout";
15
+ @use "../../utilities/cascade-layer";
15
16
  @use "../../utilities/icons";
16
17
  @use "../../utilities/guards";
17
18
 
@@ -29,46 +30,48 @@ $-default-config: (
29
30
  @mixin styles($config: $config) {
30
31
  $props: map.deep-merge($-default-config, $config);
31
32
 
32
- #{map.get($props, "selector")} {
33
- @include labelled-input.styles(
34
- (
35
- label: (
36
- selector: "&",
37
- axis: map.get($props, "axis"),
38
- ),
39
- input: (
40
- selector: "select",
41
- emit-readonly: false,
42
- ),
43
- fixed-input-trailing-slots: 1,
44
- input-invalid-slot: "after",
45
- )
46
- );
33
+ @include cascade-layer.wrap {
34
+ #{map.get($props, "selector")} {
35
+ @include labelled-input.styles(
36
+ (
37
+ label: (
38
+ selector: "&",
39
+ axis: map.get($props, "axis"),
40
+ ),
41
+ input: (
42
+ selector: "select",
43
+ emit-readonly: false,
44
+ ),
45
+ fixed-input-trailing-slots: 1,
46
+ input-invalid-slot: "after",
47
+ )
48
+ );
47
49
 
48
- &::before {
49
- @include labelled-input.input-trailing-slot {
50
- @include icons.chevron--down;
50
+ &::before {
51
+ @include labelled-input.input-trailing-slot {
52
+ @include icons.chevron--down;
53
+ }
51
54
  }
52
- }
53
55
 
54
- & select {
55
- cursor: pointer;
56
+ & select {
57
+ cursor: pointer;
56
58
 
57
- @include guards.hover {
58
- &:enabled:hover {
59
- background-color: theme.$field-hover;
59
+ @include guards.hover {
60
+ &:enabled:hover {
61
+ background-color: theme.$field-hover;
62
+ }
60
63
  }
61
- }
62
64
 
63
- &:enabled:active {
64
- background-color: theme.$layer-active;
65
- }
65
+ &:enabled:active {
66
+ background-color: theme.$layer-active;
67
+ }
66
68
 
67
- @if map.get($props, "axis") == "inline" {
68
- &:enabled,
69
- &:disabled {
70
- background-color: transparent;
71
- border-block-end: none;
69
+ @if map.get($props, "axis") == "inline" {
70
+ &:enabled,
71
+ &:disabled {
72
+ background-color: transparent;
73
+ border-block-end: none;
74
+ }
72
75
  }
73
76
  }
74
77
  }