@carbon/styles 0.17.0 → 1.0.1

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 (100) hide show
  1. package/package.json +23 -10
  2. package/scss/__tests__/__snapshots__/colors-test.js.snap +404 -0
  3. package/scss/__tests__/__snapshots__/config-test.js.snap +44 -0
  4. package/scss/__tests__/__snapshots__/motion-test.js.snap +39 -0
  5. package/scss/__tests__/breakpoint-test.js +42 -0
  6. package/scss/__tests__/colors-test.js +28 -0
  7. package/scss/__tests__/config-test.js +53 -0
  8. package/scss/__tests__/grid-test.js +48 -0
  9. package/scss/__tests__/layer-test.js +82 -0
  10. package/scss/__tests__/motion-test.js +37 -0
  11. package/scss/__tests__/reset-test.js +28 -0
  12. package/scss/__tests__/theme-test.js +151 -0
  13. package/scss/__tests__/themes-test.js +36 -0
  14. package/scss/__tests__/type-test.js +77 -0
  15. package/scss/_breakpoint.scss +2 -1
  16. package/scss/_config.scss +9 -2
  17. package/scss/_reset.scss +5 -1
  18. package/scss/_spacing.scss +1 -1
  19. package/scss/_theme.scss +4 -4
  20. package/scss/_themes.scss +2 -1
  21. package/scss/components/__tests__/accordion-test.js +47 -0
  22. package/scss/components/__tests__/breadcrumb-test.js +27 -0
  23. package/scss/components/__tests__/button-test.js +71 -0
  24. package/scss/components/__tests__/checkbox-test.js +27 -0
  25. package/scss/components/__tests__/code-snippet-test.js +44 -0
  26. package/scss/components/__tests__/combo-box-test.js +27 -0
  27. package/scss/components/__tests__/content-switcher-test.js +27 -0
  28. package/scss/components/__tests__/copy-button-test.js +27 -0
  29. package/scss/components/__tests__/data-table-test.js +85 -0
  30. package/scss/components/__tests__/date-picker-test.js +26 -0
  31. package/scss/components/__tests__/dropdown-test.js +27 -0
  32. package/scss/components/__tests__/file-uploader.js +27 -0
  33. package/scss/components/__tests__/form-test.js +43 -0
  34. package/scss/components/__tests__/inline-loading-test.js +26 -0
  35. package/scss/components/__tests__/link-test.js +26 -0
  36. package/scss/components/__tests__/list-box-test.js +36 -0
  37. package/scss/components/__tests__/list-test.js +26 -0
  38. package/scss/components/__tests__/loading-test.js +26 -0
  39. package/scss/components/__tests__/menu-test.js +27 -0
  40. package/scss/components/__tests__/modal-test.js +27 -0
  41. package/scss/components/__tests__/multiselect-test.js +27 -0
  42. package/scss/components/__tests__/notification-test.js +49 -0
  43. package/scss/components/__tests__/number-input-test.js +27 -0
  44. package/scss/components/__tests__/overflow-menu-test.js +27 -0
  45. package/scss/components/__tests__/pagination-nav-test.js +26 -0
  46. package/scss/components/__tests__/pagination-test.js +26 -0
  47. package/scss/components/__tests__/progress-bar-test.js +26 -0
  48. package/scss/components/__tests__/progress-indicator-test.js +26 -0
  49. package/scss/components/__tests__/radio-button-test.js +25 -0
  50. package/scss/components/__tests__/search-test.js +25 -0
  51. package/scss/components/__tests__/select-test.js +26 -0
  52. package/scss/components/__tests__/skeleton-test.js +26 -0
  53. package/scss/components/__tests__/slider-test.js +26 -0
  54. package/scss/components/__tests__/structured-list-test.js +27 -0
  55. package/scss/components/__tests__/tabs-test.js +27 -0
  56. package/scss/components/__tests__/tag-test.js +25 -0
  57. package/scss/components/__tests__/text-area-test.js +26 -0
  58. package/scss/components/__tests__/text-input-test.js +26 -0
  59. package/scss/components/__tests__/tile-test.js +26 -0
  60. package/scss/components/__tests__/time-picker-test.js +26 -0
  61. package/scss/components/__tests__/toggle-test.js +27 -0
  62. package/scss/components/__tests__/tooltip-test.js +25 -0
  63. package/scss/components/__tests__/treeview-test.js +25 -0
  64. package/scss/components/__tests__/ui-shell-test.js +27 -0
  65. package/scss/components/accordion/_accordion.scss +1 -1
  66. package/scss/components/aspect-ratio/_aspect-ratio.scss +2 -2
  67. package/scss/components/breadcrumb/_breadcrumb.scss +1 -1
  68. package/scss/components/button/_button.scss +3 -9
  69. package/scss/components/button/_tokens.scss +1 -0
  70. package/scss/components/code-snippet/_code-snippet.scss +32 -47
  71. package/scss/components/content-switcher/_content-switcher.scss +0 -2
  72. package/scss/components/copy-button/_copy-button.scss +0 -59
  73. package/scss/components/dropdown/_dropdown.scss +0 -1
  74. package/scss/components/modal/_modal.scss +1 -1
  75. package/scss/components/notification/_actionable-notification.scss +58 -19
  76. package/scss/components/notification/_inline-notification.scss +9 -21
  77. package/scss/components/notification/_toast-notification.scss +29 -58
  78. package/scss/components/notification/_tokens.scss +2 -1
  79. package/scss/components/pagination/_unstable_pagination.scss +1 -1
  80. package/scss/components/progress-indicator/_progress-indicator.scss +5 -5
  81. package/scss/components/radio-button/_radio-button.scss +2 -10
  82. package/scss/components/tabs/_tabs.scss +1 -1
  83. package/scss/components/tag/_tokens.scss +1 -0
  84. package/scss/components/text-input/_text-input.scss +7 -22
  85. package/scss/components/tile/_tile.scss +60 -29
  86. package/scss/components/toggletip/_toggletip.scss +1 -2
  87. package/scss/fonts/__tests__/__snapshots__/fonts-test.js.snap +269 -0
  88. package/scss/fonts/__tests__/fonts-test.js +197 -0
  89. package/scss/fonts/_src.scss +42 -31
  90. package/scss/grid/_css-grid.scss +11 -0
  91. package/scss/grid/_flexbox.scss +1 -1
  92. package/scss/grid/_index.scss +7 -2
  93. package/scss/grid/_mixins.scss +9 -0
  94. package/scss/type/_reset.scss +1 -1
  95. package/scss/utilities/__tests__/custom-property-test.js +50 -0
  96. package/scss/utilities/_component-tokens.scss +2 -1
  97. package/scss/utilities/_convert.scss +2 -4
  98. package/scss/utilities/_high-contrast-mode.scss +2 -4
  99. package/docs/sass.md +0 -462
  100. package/scss/grid/_config.scss +0 -18
@@ -21,50 +21,42 @@ $-filenames: (
21
21
  IBM-Plex-Serif: 'IBMPlexSerif',
22
22
  );
23
23
 
24
- $-google-filenames: (
24
+ $-akamai-filenames: (
25
25
  IBM-Plex-Mono: (
26
- name: 'ibmplexmono',
27
- version: 'v7',
28
- hash: '-F63fjptAgt5VM-kVkqdyU8n1i8q131nj-otFQ',
26
+ name: 'IBM-Plex-Mono',
27
+ filename: 'IBMPlexMono',
29
28
  ),
30
29
  IBM-Plex-Sans-Arabic: (
31
- name: 'ibmplexsansarabic',
32
- version: 'v5',
33
- hash: 'Qw3CZRtWPQCuHme67tEYUIx3Kh0PHR9N6Ys43PW5fslBEg0',
30
+ name: 'IBM-Plex-Sans-Arabic',
31
+ filename: 'IBMPlexSansArabic',
34
32
  ),
35
33
  IBM-Plex-Sans-Devanagari: (
36
- name: 'ibmplexsansdevanagari',
37
- version: 'v5',
38
- hash: 'XRXH3JCMvG4IDoS9SubXB6W-UX5iehIMBFR2-O_PX0j1Uc7wCWQq',
34
+ name: 'IBM-Plex-Sans-Devanagari',
35
+ filename: 'IBMPlexSansDevanagari',
39
36
  ),
40
37
  IBM-Plex-Sans-Hebrew: (
41
- name: 'ibmplexsanshebrew',
42
- version: 'v5',
43
- hash: 'BCa2qYENg9Kw1mpLpO0bGM5lfHAAZHhDXE2v-lgVrjaNzC4',
38
+ name: 'IBM-Plex-Sans-Hebrew',
39
+ filename: 'IBMPlexSansHebrew',
44
40
  ),
45
41
  IBM-Plex-Sans-Thai-Looped: (
46
- name: 'ibmplexsansthailooped',
47
- version: 'v5',
48
- hash: 'tss_AoJJRAhL3BTrK3r2xxbFhvKfyBB6l7hHT30L9BiKoXOrFCUb6Q',
42
+ name: 'IBM-Plex-Sans-Thai-Looped',
43
+ filename: 'IBMPlexSansThaiLooped',
49
44
  ),
50
45
  IBM-Plex-Sans-Thai: (
51
- name: 'ibmplexsansthai',
52
- version: 'v5',
53
- hash: 'm8JPje1VVIzcq1HzJq2AEdo2Tj_qvLqMBNYgR8BKU4cX',
46
+ name: 'IBM-Plex-Sans-Thai',
47
+ filename: 'IBMPlexSansThai',
54
48
  ),
55
49
  IBM-Plex-Sans: (
56
- name: 'ibmplexsans',
57
- version: 'v9',
58
- hash: 'zYXgKVElMYYaJe8bpLHnCwDKhdzeFaxOedfTDw',
50
+ name: 'IBM-Plex-Sans',
51
+ filename: 'IBMPlexSans',
59
52
  ),
60
53
  IBM-Plex-Serif: (
61
- name: 'ibmplexserif',
62
- version: 'v10',
63
- hash: 'jizDREVNn1dOx-zrZ2X3pZvkTiUS2zcZiVbJsNo',
54
+ name: 'IBM-Plex-Serif',
55
+ filename: 'IBMPlexSerif',
64
56
  ),
65
57
  );
66
58
 
67
- @function -get-google-filename($map, $keys...) {
59
+ @function -get-akamai-filename($map, $keys...) {
68
60
  @each $key in $keys {
69
61
  $map: map.get($map, $key);
70
62
  }
@@ -88,15 +80,34 @@ $-google-filenames: (
88
80
  /// @param {List} $formats
89
81
  /// @returns List
90
82
  @function -default-resolver($name, $weight, $style, $unicode-range, $formats) {
91
- @if (config.$use-google-fonts) {
92
- $filename: -get-google-filename($-google-filenames, $name, 'name');
93
- $version: -get-google-filename($-google-filenames, $name, 'version');
94
- $hash: -get-google-filename($-google-filenames, $name, 'hash');
83
+ @if (config.$use-akamai-cdn) {
84
+ $name: -get-akamai-filename($-akamai-filenames, $name, 'name');
85
+ $filename: -get-akamai-filename($-akamai-filenames, $name, 'filename');
86
+
87
+ // Special case for weight = Regular (400)
88
+ @if $weight == Regular {
89
+ @if $style == italic {
90
+ $filename: '#{$filename}-Italic';
91
+ } @else {
92
+ $filename: '#{$filename}-Regular';
93
+ }
94
+ } @else {
95
+ // Otherwise add weight + optional style (italic)
96
+ $filename: '#{$filename}-#{$weight}';
97
+ @if $style == italic {
98
+ $filename: '#{$filename}Italic';
99
+ }
100
+ }
95
101
 
96
102
  $filenames: ();
97
103
 
98
104
  @each $format in $formats {
99
- $url: 'https://fonts.gstatic.com/s/#{$filename}/#{$version}/#{$hash}';
105
+ $url: 'https://1.www.s81c.com/common/carbon/plex/fonts/#{$name}';
106
+ @if $unicode-range {
107
+ $url: 'https://1.www.s81c.com/common/carbon/plex/fonts/#{$name}/fonts/split/#{$format}/#{$filename}-#{$unicode-range}';
108
+ } @else {
109
+ $url: 'https://1.www.s81c.com/common/carbon/plex/fonts/#{$name}/fonts/complete/#{$format}/#{$filename}';
110
+ }
100
111
 
101
112
  // Add extension
102
113
  $url: '#{$url}.#{$format}';
@@ -0,0 +1,11 @@
1
+ //
2
+ // Copyright IBM Corp. 2018, 2018
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 '../config';
9
+ @use '@carbon/grid';
10
+
11
+ @include grid.css-grid();
@@ -5,7 +5,7 @@
5
5
  // LICENSE file in the root directory of this source tree.
6
6
  //
7
7
 
8
- @forward 'config';
8
+ @use '../config';
9
9
  @use '@carbon/grid';
10
10
 
11
11
  @include grid.flex-grid();
@@ -5,9 +5,14 @@
5
5
  // LICENSE file in the root directory of this source tree.
6
6
  //
7
7
 
8
- @forward 'config';
9
- @use '@carbon/grid';
10
8
  @use '../config';
9
+ @forward '@carbon/grid' show
10
+ $grid-gutter,
11
+ $grid-gutter-condensed,
12
+ $grid-breakpoints,
13
+ flex-grid,
14
+ css-grid;
15
+ @use '@carbon/grid';
11
16
 
12
17
  @if config.$use-flexbox-grid == true {
13
18
  @include grid.flex-grid();
@@ -0,0 +1,9 @@
1
+ //
2
+ // Copyright IBM Corp. 2018, 2018
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 '../config';
9
+ @forward '@carbon/grid' show css-grid, flex-grid;
@@ -5,4 +5,4 @@
5
5
  // LICENSE file in the root directory of this source tree.
6
6
  //
7
7
 
8
- @forward '@carbon/type/scss/modules/reset';
8
+ @forward '@carbon/type/scss/reset';
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Copyright IBM Corp. 2018, 2018
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
+ * @jest-environment node
8
+ */
9
+
10
+ 'use strict';
11
+
12
+ const { SassRenderer } = require('@carbon/test-utils/scss');
13
+ const css = require('css');
14
+
15
+ const { render } = SassRenderer.create(__dirname);
16
+
17
+ describe('scss/utilities/custom-property', () => {
18
+ it('should support getting the property name from a value', async () => {
19
+ const { unwrap } = await render(`
20
+ @use '../../config' with (
21
+ $prefix: 'cds',
22
+ );
23
+ @use '../custom-property';
24
+
25
+ $_: get('name', custom-property.get-name('test'));
26
+ `);
27
+ expect(unwrap('name')).toBe('--cds-test');
28
+ });
29
+
30
+ it('should support emitting a declaration for a CSS Custom Property', async () => {
31
+ const { result } = await render(`
32
+ @use '../../config' with (
33
+ $prefix: 'cds',
34
+ );
35
+ @use '../custom-property';
36
+
37
+ .test {
38
+ @include custom-property.declaration(test, #000000);
39
+ }
40
+ `);
41
+ const { stylesheet } = css.parse(result.css.toString());
42
+ const selector = stylesheet.rules.find((rule) => {
43
+ return rule.selectors.includes('.test');
44
+ });
45
+ const [declaration] = selector.declarations;
46
+
47
+ expect(declaration.property).toBe('--cds-test');
48
+ expect(declaration.value).toBe('#000000');
49
+ });
50
+ });
@@ -7,7 +7,8 @@
7
7
 
8
8
  @use 'sass:map';
9
9
  @use 'sass:meta';
10
- @use "sass:list";
10
+ @use 'sass:list';
11
+ @use '../config';
11
12
  @use '../themes';
12
13
  @use '../theme';
13
14
  @use './custom-property';
@@ -20,8 +20,7 @@ $base-font-size: 16px !default;
20
20
  /// @group utilities
21
21
  @function rem($px) {
22
22
  @if unit($px) != 'px' {
23
- // TODO: update to @error in v11
24
- @warn "Expected argument $px to be of type `px`, instead received: `#{unit($px)}`";
23
+ @error "Expected argument $px to be of type `px`, instead received: `#{unit($px)}`";
25
24
  }
26
25
 
27
26
  @if meta.function-exists('div', 'math') {
@@ -38,8 +37,7 @@ $base-font-size: 16px !default;
38
37
  /// @group utilities
39
38
  @function em($px) {
40
39
  @if unit($px) != 'px' {
41
- // TODO: update to @error in v11
42
- @warn "Expected argument $px to be of type `px`, instead received: `#{unit($px)}`";
40
+ @error "Expected argument $px to be of type `px`, instead received: `#{unit($px)}`";
43
41
  }
44
42
 
45
43
  @if meta.function-exists('div', 'math') {
@@ -5,15 +5,13 @@
5
5
  // LICENSE file in the root directory of this source tree.
6
6
  //
7
7
 
8
- /// Windows HCM Mixin
8
+ /// High Contrast Mode mixin for Windows and macOS
9
9
  /// @access public
10
10
  /// @example @include high-contrast-mode;
11
11
  /// @group utilities
12
12
  /// Set HCM styles at the end of each file to ensure they are not overwritten
13
13
  @mixin high-contrast-mode($type: '') {
14
- @media screen and (-ms-high-contrast: active),
15
- (forced-colors: active),
16
- (prefers-contrast) {
14
+ @media screen and (-ms-high-contrast: active), (forced-colors: active) {
17
15
  @if ($type == 'icon-fill') {
18
16
  fill: ButtonText;
19
17
  }