@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
@@ -13,6 +13,7 @@
13
13
  @use "../_labelled-input";
14
14
 
15
15
  @use "../../layout";
16
+ @use "../../utilities/cascade-layer";
16
17
  @use "../../utilities/icons";
17
18
  @use "../../utilities/guards";
18
19
 
@@ -30,23 +31,24 @@ $-default-config: (
30
31
  @mixin styles($config: $config) {
31
32
  $props: map.deep-merge($-default-config, $config);
32
33
 
33
- #{map.get($props, "selector")} {
34
- @include labelled-input.styles(
35
- (
36
- label: (
37
- selector: "&",
38
- axis: map.get($props, "axis"),
39
- ),
40
- input: (
41
- selector: 'input[type="color"]',
42
- emit-readonly: false,
43
- ),
44
- fixed-input-trailing-slots: 1,
45
- input-invalid-slot: "after",
46
- )
47
- );
48
-
49
- /*
34
+ @include cascade-layer.wrap {
35
+ #{map.get($props, "selector")} {
36
+ @include labelled-input.styles(
37
+ (
38
+ label: (
39
+ selector: "&",
40
+ axis: map.get($props, "axis"),
41
+ ),
42
+ input: (
43
+ selector: 'input[type="color"]',
44
+ emit-readonly: false,
45
+ ),
46
+ fixed-input-trailing-slots: 1,
47
+ input-invalid-slot: "after",
48
+ )
49
+ );
50
+
51
+ /*
50
52
  inline padding
51
53
  + color swatch
52
54
  + spacing-05
@@ -55,64 +57,65 @@ $-default-config: (
55
57
  + trailing icon space
56
58
  + inline padding
57
59
  */
58
- $-min-inline-size: calc(
59
- layout.$density--padding + 1rem + spacing.$spacing-05 + 1rem + spacing.$spacing-03 + 1rem +
60
- layout.$density--padding
61
- );
62
-
63
- & input[type="color"] {
64
- min-inline-size: $-min-inline-size;
65
- inline-size: 100%;
66
- cursor: pointer;
67
-
68
- @include guards.hover {
69
- &:enabled:hover {
70
- background-color: theme.$field-hover;
60
+ $-min-inline-size: calc(
61
+ layout.$density--padding + 1rem + spacing.$spacing-05 + 1rem + spacing.$spacing-03 + 1rem +
62
+ layout.$density--padding
63
+ );
64
+
65
+ & input[type="color"] {
66
+ min-inline-size: $-min-inline-size;
67
+ inline-size: 100%;
68
+ cursor: pointer;
69
+
70
+ @include guards.hover {
71
+ &:enabled:hover {
72
+ background-color: theme.$field-hover;
73
+ }
71
74
  }
72
- }
73
75
 
74
- &:enabled:active {
75
- background-color: theme.$layer-active;
76
+ &:enabled:active {
77
+ background-color: theme.$layer-active;
78
+ }
76
79
  }
77
- }
78
80
 
79
- & input[type="color"]::-webkit-color-swatch-wrapper {
80
- padding: 0;
81
- inline-size: 1rem;
82
- block-size: 1rem;
83
- }
81
+ & input[type="color"]::-webkit-color-swatch-wrapper {
82
+ padding: 0;
83
+ inline-size: 1rem;
84
+ block-size: 1rem;
85
+ }
84
86
 
85
- & input[type="color"]::-webkit-color-swatch {
86
- position: relative;
87
- inset-block-start: 0.0625rem;
88
- padding: 0;
89
- margin: 0;
90
- border-radius: 0;
91
- inline-size: 1rem;
92
- block-size: 1rem;
93
- border: none;
94
- box-shadow: inset 0 0 0 0.0625rem rgb(from theme.$border-inverse r g b / 0.15);
95
- }
87
+ & input[type="color"]::-webkit-color-swatch {
88
+ position: relative;
89
+ inset-block-start: 0.0625rem;
90
+ padding: 0;
91
+ margin: 0;
92
+ border-radius: 0;
93
+ inline-size: 1rem;
94
+ block-size: 1rem;
95
+ border: none;
96
+ box-shadow: inset 0 0 0 0.0625rem rgb(from theme.$border-inverse r g b / 0.15);
97
+ }
96
98
 
97
- & input[type="color"]::-moz-color-swatch {
98
- position: relative;
99
- inset-block-start: 0.0625rem;
100
- padding: 0;
101
- margin: 0;
102
- border-radius: 0;
103
- inline-size: 1rem;
104
- block-size: 1rem;
105
- border: none;
106
- box-shadow: inset 0 0 0 0.0625rem rgb(from theme.$border-inverse r g b / 0.15);
107
- }
99
+ & input[type="color"]::-moz-color-swatch {
100
+ position: relative;
101
+ inset-block-start: 0.0625rem;
102
+ padding: 0;
103
+ margin: 0;
104
+ border-radius: 0;
105
+ inline-size: 1rem;
106
+ block-size: 1rem;
107
+ border: none;
108
+ box-shadow: inset 0 0 0 0.0625rem rgb(from theme.$border-inverse r g b / 0.15);
109
+ }
108
110
 
109
- & input[type="color"]:disabled::-webkit-color-swatch-wrapper {
110
- opacity: 0.5;
111
- }
111
+ & input[type="color"]:disabled::-webkit-color-swatch-wrapper {
112
+ opacity: 0.5;
113
+ }
112
114
 
113
- &::before {
114
- @include labelled-input.input-trailing-slot {
115
- @include icons.color-palette;
115
+ &::before {
116
+ @include labelled-input.input-trailing-slot {
117
+ @include icons.color-palette;
118
+ }
116
119
  }
117
120
  }
118
121
  }
@@ -11,6 +11,7 @@
11
11
 
12
12
  @use "../_labelled-input";
13
13
 
14
+ @use "../../utilities/cascade-layer";
14
15
  @use "../../utilities/icons";
15
16
  @use "../../utilities/guards";
16
17
 
@@ -28,44 +29,46 @@ $-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 labelled-input.styles(
33
- (
34
- label: (
35
- selector: "&",
36
- axis: map.get($props, "axis"),
37
- ),
38
- input: (
39
- selector: 'input[type="text"][list]',
40
- emit-readonly: false,
41
- ),
42
- fixed-input-trailing-slots: 1,
43
- input-invalid-slot: "after",
44
- )
45
- );
32
+ @include cascade-layer.wrap {
33
+ #{map.get($props, "selector")} {
34
+ @include labelled-input.styles(
35
+ (
36
+ label: (
37
+ selector: "&",
38
+ axis: map.get($props, "axis"),
39
+ ),
40
+ input: (
41
+ selector: 'input[type="text"][list]',
42
+ emit-readonly: false,
43
+ ),
44
+ fixed-input-trailing-slots: 1,
45
+ input-invalid-slot: "after",
46
+ )
47
+ );
46
48
 
47
- &::before {
48
- @include labelled-input.input-trailing-slot {
49
- @include icons.chevron--down;
49
+ &::before {
50
+ @include labelled-input.input-trailing-slot {
51
+ @include icons.chevron--down;
52
+ }
50
53
  }
51
- }
52
54
 
53
- & input[type="text"][list] {
54
- @include guards.hover {
55
- &:enabled:hover {
56
- background-color: theme.$field-hover;
55
+ & input[type="text"][list] {
56
+ @include guards.hover {
57
+ &:enabled:hover {
58
+ background-color: theme.$field-hover;
59
+ }
57
60
  }
58
- }
59
61
 
60
- &:enabled:active {
61
- background-color: theme.$layer-active;
62
- }
62
+ &:enabled:active {
63
+ background-color: theme.$layer-active;
64
+ }
63
65
 
64
- @if map.get($props, "axis") == "inline" {
65
- &:enabled,
66
- &:disabled {
67
- background-color: transparent;
68
- border-block-end: none;
66
+ @if map.get($props, "axis") == "inline" {
67
+ &:enabled,
68
+ &:disabled {
69
+ background-color: transparent;
70
+ border-block-end: none;
71
+ }
69
72
  }
70
73
  }
71
74
  }
@@ -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,29 +26,31 @@ $-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="date"]',
37
- ),
38
- fixed-input-trailing-slots: 1,
39
- input-invalid-slot: "after",
40
- )
41
- );
42
-
43
- &::before {
44
- @include labelled-input.input-trailing-slot {
45
- @include icons.calendar;
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="date"]',
39
+ ),
40
+ fixed-input-trailing-slots: 1,
41
+ input-invalid-slot: "after",
42
+ )
43
+ );
44
+
45
+ &::before {
46
+ @include labelled-input.input-trailing-slot {
47
+ @include icons.calendar;
48
+ }
46
49
  }
47
- }
48
50
 
49
- & ::-webkit-date-and-time-value {
50
- text-align: start;
51
+ & ::-webkit-date-and-time-value {
52
+ text-align: start;
53
+ }
51
54
  }
52
55
  }
53
56
  }
@@ -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,29 +26,31 @@ $-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="datetime-local"]',
37
- ),
38
- fixed-input-trailing-slots: 1,
39
- input-invalid-slot: "after",
40
- )
41
- );
42
-
43
- &::before {
44
- @include labelled-input.input-trailing-slot {
45
- @include icons.event--schedule;
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="datetime-local"]',
39
+ ),
40
+ fixed-input-trailing-slots: 1,
41
+ input-invalid-slot: "after",
42
+ )
43
+ );
44
+
45
+ &::before {
46
+ @include labelled-input.input-trailing-slot {
47
+ @include icons.event--schedule;
48
+ }
46
49
  }
47
- }
48
50
 
49
- & ::-webkit-date-and-time-value {
50
- text-align: start;
51
+ & ::-webkit-date-and-time-value {
52
+ text-align: start;
53
+ }
51
54
  }
52
55
  }
53
56
  }
@@ -11,6 +11,7 @@
11
11
  @use "@carbon/styles/scss/components/tag/tokens" as tag-tokens;
12
12
 
13
13
  @use "../../layout";
14
+ @use "../../utilities/cascade-layer";
14
15
 
15
16
  $config: () !default;
16
17
 
@@ -24,10 +25,12 @@ $-default-config: (
24
25
  @mixin styles($config: $config) {
25
26
  $props: map.deep-merge($-default-config, $config);
26
27
 
27
- #{map.get($props, "selector")} {
28
- padding-inline: spacing.$spacing-01;
29
- background-color: tag-tokens.$tag-background-red;
30
- color: tag-tokens.$tag-color-red;
31
- text-decoration: line-through;
28
+ @include cascade-layer.wrap {
29
+ #{map.get($props, "selector")} {
30
+ padding-inline: spacing.$spacing-01;
31
+ background-color: tag-tokens.$tag-background-red;
32
+ color: tag-tokens.$tag-color-red;
33
+ text-decoration: line-through;
34
+ }
32
35
  }
33
36
  }
@@ -10,6 +10,7 @@
10
10
  @use "@carbon/styles/scss/spacing";
11
11
 
12
12
  @use "../../layout";
13
+ @use "../../utilities/cascade-layer";
13
14
 
14
15
  $config: () !default;
15
16
 
@@ -23,20 +24,22 @@ $-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
- display: grid;
28
- grid-template-columns: max-content 1fr;
29
- column-gap: spacing.$spacing-04;
30
- row-gap: layout.$density--padding;
31
-
32
- & dt {
33
- @include layout.mode--heading;
34
- }
35
-
36
- & dd {
37
- @include layout.mode--body;
38
- max-inline-size: layout.$mode--max-inline-size;
39
- margin-inline-start: 0;
27
+ @include cascade-layer.wrap {
28
+ #{map.get($props, "selector")} {
29
+ display: grid;
30
+ grid-template-columns: max-content 1fr;
31
+ column-gap: spacing.$spacing-04;
32
+ row-gap: layout.$density--padding;
33
+
34
+ & dt {
35
+ @include layout.mode--heading;
36
+ }
37
+
38
+ & dd {
39
+ @include layout.mode--body;
40
+ max-inline-size: layout.$mode--max-inline-size;
41
+ margin-inline-start: 0;
42
+ }
40
43
  }
41
44
  }
42
45
  }
@@ -11,6 +11,7 @@
11
11
  @use "@carbon/styles/scss/utilities/focus-outline";
12
12
 
13
13
  @use "../../layout";
14
+ @use "../../utilities/cascade-layer";
14
15
  @use "../../utilities/icons";
15
16
  @use "../../utilities/guards";
16
17
 
@@ -26,67 +27,71 @@ $-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
- border-block-start: 0.0625rem solid theme.$border-subtle;
31
- box-sizing: border-box;
32
- padding-inline-start: calc(layout.$density--padding + 1rem + layout.$density--padding);
33
- padding-inline-end: layout.$density--padding;
34
-
35
- &:last-of-type {
36
- border-block-end: 0.0625rem solid theme.$border-subtle;
37
- }
38
-
39
- & summary {
40
- @include layout.mode--body-compact;
41
- block-size: layout.$size--block-size;
30
+ @include cascade-layer.wrap {
31
+ #{map.get($props, "selector")} {
32
+ border-block-start: 0.0625rem solid theme.$border-subtle;
42
33
  box-sizing: border-box;
43
- cursor: pointer;
44
- display: flex;
45
- padding-block-start: layout.$size--padding-block-start;
46
- padding-block-end: layout.$size--padding-block-end;
47
- margin-inline-start: calc((layout.$density--padding + 1rem + layout.$density--padding) * -1);
48
- padding-inline-start: layout.$density--padding;
49
- margin-inline-end: calc(layout.$density--padding * -1);
34
+ padding-inline-start: calc(layout.$density--padding + 1rem + layout.$density--padding);
50
35
  padding-inline-end: layout.$density--padding;
51
36
 
52
- @include guards.hover {
53
- &:hover {
54
- background-color: theme.$layer-hover;
55
- }
37
+ &:last-of-type {
38
+ border-block-end: 0.0625rem solid theme.$border-subtle;
56
39
  }
57
40
 
58
- &:active {
59
- background-color: theme.$layer-active;
60
- }
41
+ & summary {
42
+ @include layout.mode--body-compact;
43
+ block-size: layout.$size--block-size;
44
+ box-sizing: border-box;
45
+ cursor: pointer;
46
+ display: flex;
47
+ padding-block-start: layout.$size--padding-block-start;
48
+ padding-block-end: layout.$size--padding-block-end;
49
+ margin-inline-start: calc(
50
+ (layout.$density--padding + 1rem + layout.$density--padding) * -1
51
+ );
52
+ padding-inline-start: layout.$density--padding;
53
+ margin-inline-end: calc(layout.$density--padding * -1);
54
+ padding-inline-end: layout.$density--padding;
55
+
56
+ @include guards.hover {
57
+ &:hover {
58
+ background-color: theme.$layer-hover;
59
+ }
60
+ }
61
+
62
+ &:active {
63
+ background-color: theme.$layer-active;
64
+ }
61
65
 
62
- &:focus {
63
- @include focus-outline.focus-outline("outline");
66
+ &:focus {
67
+ @include focus-outline.focus-outline("outline");
68
+ }
64
69
  }
65
- }
66
70
 
67
- & summary::before {
68
- content: "";
69
- @include icons.chevron--down;
70
- translate: 0 calc((1lh - 1rem) * 0.5);
71
- display: inline-block;
72
- margin-inline-end: layout.$density--padding;
71
+ & summary::before {
72
+ content: "";
73
+ @include icons.chevron--down;
74
+ translate: 0 calc((1lh - 1rem) * 0.5);
75
+ display: inline-block;
76
+ margin-inline-end: layout.$density--padding;
73
77
 
74
- @include guards.motion {
75
- transition: rotate layout.$mode--transition-duration
76
- layout.$mode--transition-timing-function;
78
+ @include guards.motion {
79
+ transition: rotate layout.$mode--transition-duration
80
+ layout.$mode--transition-timing-function;
81
+ }
77
82
  }
78
- }
79
83
 
80
- &[open] {
81
- padding-block-end: layout.$density--padding;
82
- }
84
+ &[open] {
85
+ padding-block-end: layout.$density--padding;
86
+ }
83
87
 
84
- &[open] summary {
85
- margin-block-end: layout.$density--padding;
86
- }
88
+ &[open] summary {
89
+ margin-block-end: layout.$density--padding;
90
+ }
87
91
 
88
- &[open] summary::before {
89
- rotate: 180deg;
92
+ &[open] summary::before {
93
+ rotate: 180deg;
94
+ }
90
95
  }
91
96
  }
92
97
  }