chroma-sass 1.0.0.alpha.5 → 1.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cb36b676551138964c229945e811261ea436f152
4
- data.tar.gz: 40511de621e5059aebc7b0bf27ee7f9d00559ec5
3
+ metadata.gz: 54e376ee67d2b82ac4cb331e0e53d57847da5ef4
4
+ data.tar.gz: 5d0b0134a9f7627338c32a6f74d6528eeba3d5f2
5
5
  SHA512:
6
- metadata.gz: af4eb5a017b45b290e96e31d0640e67acfbaeae343713405699d7c72f7ad2e25a57b83da1e5bf546890e1ad03e20a3f9433add16b5cf34e9ccbd73a40581c303
7
- data.tar.gz: a463b2746e734f247fff4d06537c203c142bb38b8b73a20aeae1e9f01dcf5cad84d8889c242695451ca119cd7b73199246908b9e2ccadcc07aea7872fd5227c9
6
+ metadata.gz: a230b25168e748fdc06d8e05ea4381561e081ac3914686af70a208745ab4527a3b48e96f548ff32f25ccdc0282982d41f4ed53a1c9adeb0d6651b5c0ec909d8c
7
+ data.tar.gz: 3450e20a9a7e430f16aa6e3b3ac3ef617fbab647c2e9b0188a988c29c74942ff4e05cc2c54c7d3115b2be01bdbfc48e66a99877c0b9e92f15b531ca58704ec43
data/README.md CHANGED
@@ -1,7 +1,5 @@
1
1
  # About Chroma
2
2
 
3
- WARNING: This is alpha-quality software, so the API is guaranteed to change. But you can always pin your Gemfile to the specific version number you are using.
4
-
5
3
  Chroma is a Sass library that manages a project's color names, color variations, and color schemes.
6
4
 
7
5
  ## USAGE
@@ -17,13 +15,11 @@ $chroma: define-default-color-scheme('Descriptive color names for use in "functi
17
15
 
18
16
  // Add colors to the default color scheme.
19
17
  $chroma: add-colors((
20
- white: #fff,
21
- off-white: #eaeaea,
22
- grey-medium: #706e6c,
23
- black: #000,
24
-
25
- blue: #0e71b8,
26
- blue-dark: shade(#0e71b8, 25%),
18
+ white: #fff,
19
+ grey-medium: #706e6c,
20
+ black: #000,
21
+ blue: #0e71b8,
22
+ red: #c00,
27
23
  ));
28
24
 
29
25
  // Create a "functional" color scheme that inherits from the default color scheme.
@@ -31,21 +27,19 @@ $chroma: define-color-scheme('functional', 'Colors used by functional parts of t
31
27
 
32
28
  // Add colors to the functional color scheme.
33
29
  $chroma: add-colors('functional', (
30
+ // Define a primary highlight color.
31
+ primary: 'blue',
32
+
34
33
  // Have the "text" color use the hex value given to the "black" color. Even
35
34
  // though the "functional" color scheme doesn't define "black", it inherits
36
35
  // from the "default" color scheme where "black" is defined.
37
- text: 'black',
38
- text-subdued: 'grey-medium',
36
+ text: 'black',
39
37
 
40
- // The primary highlight color.
41
- primary: 'blue',
38
+ // Colors can inherit from colors named earlier in the call to add-colors().
39
+ heading: 'text',
42
40
 
43
41
  // Have the link color use the primary color.
44
- link: 'primary',
45
- link-active: 'blue-dark',
46
-
47
- site-name: 'primary',
48
- heading: 'text',
42
+ link: 'primary',
49
43
  ));
50
44
 
51
45
  // Create an "alternate" color scheme that inherits from the "functional" color scheme.
@@ -53,8 +47,7 @@ $chroma: define-color-scheme('alternate', 'Alternate colors for the site.', 'fun
53
47
 
54
48
  // Add colors to the alternate color scheme.
55
49
  $chroma: add-colors('alternate', (
56
- red: #c00,
57
- primary: 'red',
50
+ primary: 'red',
58
51
  ));
59
52
 
60
53
  // Set which color scheme should be used by default when calling the color()
@@ -72,10 +65,7 @@ $chroma-active-scheme: 'functional';
72
65
 
73
66
  .alternate-color-section & {
74
67
  // Outputs #c00.
75
- color: color(link, alternate);
76
- // @TODO: Whoops! This doesn't work yet because it finds the "link" color
77
- // value in the functional color scheme and never sees that the primary
78
- // color has changed.
68
+ color: color(alternate, link);
79
69
  }
80
70
  }
81
71
  }
@@ -92,7 +82,7 @@ gem install chroma-sass
92
82
  If you are using Bundler (and you should!) then you can add it to an existing project by editing the project's Gemfile and adding this line:
93
83
 
94
84
  ```ruby
95
- gem 'chroma-sass', '~> 1.0.0.alpha.5'
85
+ gem 'chroma-sass', '~> 1.0.0.beta.1'
96
86
  ```
97
87
 
98
88
  If you are using Compass, edit your project's config.rb and add this line:
@@ -114,3 +104,5 @@ You can then start using Chroma in your Sass files. Just add this line to one of
114
104
  ## LICENSE
115
105
 
116
106
  Available under the GPL v2 license. See [LICENSE.txt](https://github.com/JohnAlbin/chroma/blob/master/LICENSE.txt).
107
+
108
+ [![Build Status](https://travis-ci.org/JohnAlbin/chroma.png?branch=master)](https://travis-ci.org/JohnAlbin/chroma)
data/chroma-sass.gemspec CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.homepage = 'http://github.com/JohnAlbin/chroma'
10
10
  spec.rubyforge_project =
11
11
 
12
- spec.version = '1.0.0.alpha.5'
13
- spec.date = '2015-04-30'
12
+ spec.version = '1.0.0.beta.1'
13
+ spec.date = '2015-05-05'
14
14
  spec.licenses = ['GPL-2']
15
15
 
16
16
  spec.authors = ['John Albin Wilkins']
@@ -1,20 +1,19 @@
1
+ // Colour module
1
2
  //
2
- // Colour module for Chroma.
3
+ // An optional module for Chroma that uses "colour" instead of "color" in all
4
+ // its variables and functions.
3
5
  //
6
+ // Style guide: colour
4
7
 
5
8
  // Import the main module of Chroma.
6
9
  @import './functions';
7
10
 
8
11
  // The one true spelling.
9
- $chroma-spelling : 'colour';
10
-
12
+ $_chroma-spelling: 'colour';
11
13
 
12
14
  // is-dangerous-colour-keyword($name)
13
15
  //
14
- // Checks if the given name is a colour keyword. Returns false or a string
15
- // containing the name of the colour keyword.
16
- //
17
- // $name - The name of the colour to check.
16
+ // See `is-dangerous-color-keyword()` for the documentation.
18
17
  //
19
18
  // Style guide: colour.is-dangerous-colour-keyword
20
19
  @function is-dangerous-colour-keyword($name) {
@@ -23,10 +22,7 @@ $chroma-spelling : 'colour';
23
22
 
24
23
  // is-colour-keyword($name)
25
24
  //
26
- // Checks if the given name is a colour keyword. Returns false or a string
27
- // containing the name of the colour keyword.
28
- //
29
- // $name - The name of the colour to check.
25
+ // See `is-color-keyword()` for the documentation.
30
26
  //
31
27
  // Style guide: colour.is-colour-keyword
32
28
  @function is-colour-keyword($name) {
@@ -35,21 +31,7 @@ $chroma-spelling : 'colour';
35
31
 
36
32
  // colour([$scheme,] $name)
37
33
  //
38
- // Returns a colour value given a key word and optional colour scheme. If the
39
- // named colour is not in the colour scheme, the colour scheme's parent scheme will
40
- // be searched.
41
- //
42
- // Usage:
43
- // ```scss
44
- // .ex {
45
- // background-color: colour(body-bg);
46
- // border: 1px solid colour(grace, border);
47
- // }
48
- // ```
49
- //
50
- // $name - The name of the requested colour.
51
- // $scheme - Optional colour scheme to choose from; defaults to
52
- // `$chroma-active-scheme`.
34
+ // See `color()` for the documentation.
53
35
  //
54
36
  // Style guide: colour.colour
55
37
  @function colour($scheme, $name: null) {
@@ -58,27 +40,7 @@ $chroma-spelling : 'colour';
58
40
 
59
41
  // define-colour-scheme($scheme [, $description] [, $parent])
60
42
  //
61
- // Define a new colour scheme and, optionally, set its description and parent
62
- // colour scheme.
63
- //
64
- // When searching for a colour and the colour scheme does not define that
65
- // particular colour, the parent colour scheme will be checked to see if it
66
- // defines that colour.
67
- //
68
- // By default, all colour schemes inherit their colours from the default colour
69
- // scheme. Optionally, a colour scheme can choose to inherit from a different
70
- // colour scheme by specifying the `$parent` parameter.
71
- //
72
- // Usage:
73
- // ```scss
74
- // $chroma: define-colour-scheme(taiwan, "Taiwan's colours");
75
- // $chroma: define-colour-scheme(taipei, "Taipei's colours", $parent: taiwan);
76
- // ```
77
- //
78
- // $scheme - The name of the new colour scheme.
79
- // $description - Optional description of the colour scheme.
80
- // $parent - The parent colour scheme to inherit colours from; defaults to
81
- // `default` (i.e. `$CHROMA_DEFAULT_SCHEME`).
43
+ // See `define-color-scheme()` for the documentation.
82
44
  //
83
45
  // Style guide: colour.define-colour-scheme
84
46
  @function define-colour-scheme($scheme, $description: '', $parent: $CHROMA_DEFAULT_SCHEME) {
@@ -87,14 +49,7 @@ $chroma-spelling : 'colour';
87
49
 
88
50
  // define-default-colour-scheme($description)
89
51
  //
90
- // Sets the description of the default colour scheme.
91
- //
92
- // Usage:
93
- // ```scss
94
- // $chroma: define-default-colour-scheme('Default colours');
95
- // ```
96
- //
97
- // $description - Description of the default colour scheme.
52
+ // See `define-default-color-scheme()` for the documentation.
98
53
  //
99
54
  // Style guide: colour.define-default-colour-scheme
100
55
  @function define-default-colour-scheme($description) {
@@ -103,28 +58,7 @@ $chroma-spelling : 'colour';
103
58
 
104
59
  // add-colours([$scheme,] $colours)
105
60
  //
106
- // Add the colours to an existing colour scheme.
107
- //
108
- // Usage:
109
- // ```scss
110
- // $my-colours: add-colours('admiral', (
111
- // nav: 'link',
112
- // nav-visited: colour(link-visited),
113
- // nav-focus: colour(link-focus),
114
- // ));
115
- // ```
116
- //
117
- // If you wish to add colours to the active scheme, you can just use:
118
- // ```scss
119
- // $my-colours: add-colours((
120
- // nav: 'link',
121
- // nav-visited: colour(link-visited),
122
- // nav-focus: colour(link-focus),
123
- // ));
124
- // ```
125
- //
126
- // $colours - A Sass map containing the new colours.
127
- // $scheme - The name of an existing colour scheme.
61
+ // See `add-colors()` for the documentation.
128
62
  //
129
63
  // Style guide: functions.add-colours
130
64
  @function add-colours($scheme, $colours: null) {
@@ -1,6 +1,8 @@
1
+ // Functions module
1
2
  //
2
- // Main module for Chroma.
3
+ // The main module for Chroma.
3
4
  //
5
+ // Style guide: functions
4
6
 
5
7
  // Import the global variables and internal functions needed by all of Chroma.
6
8
  @import './variables';
@@ -12,71 +14,47 @@ $chroma: _chroma-init();
12
14
 
13
15
  // is-dangerous-color-keyword($name)
14
16
  //
17
+ // This function is used by color(), add-colors() and others to check if the
18
+ // given color name is a "dangerous" color keyword. Returns false or causes the
19
+ // Sass compilation to die with an error message containing the name of the
20
+ // dangerous color keyword.
21
+ //
15
22
  // If a real Sass color is given as a color name to Chroma, it is in danger of
16
- // being converted to a hexadecimal value before Chroma can read the name. And
17
- // some hex values map to more than one keyword (e.g. gray and grey), so the
23
+ // being converted to a hexadecimal value before Chroma can read the name. (This
24
+ // happens when Sass' "compressed" output style is used.) And some hex values
25
+ // map to more than one keyword (e.g. gray/grey and fuchsia/magenta), so the
18
26
  // original name would be irretrievable.
19
27
  //
20
- // Checks if the given name is one of those dangerous color keywords. Returns
21
- // false or causes the Sass compilation to die with an error message containing
22
- // the name of the ambiguous color keywords.
28
+ // Since Chroma will confuse fuchsia and magenta (among others) under Sass'
29
+ // "compressed" output style, it would generate confusing results. To prevent
30
+ // this, Chroma halts Sass compilation when it detects an ambiguous color
31
+ // keyword. While the error only occurs under Sass' "compressed" output style,
32
+ // Chroma halts under all output styles. Otherwise, Chroma could behave
33
+ // differently on production vs. development environments. If you are really
34
+ // sure Chroma will never be run with Sass' "compressed" output style, you can
35
+ // disable this feature by setting `$chroma-die-on-dangerous-keyword: false;`.
23
36
  //
24
37
  // $name - The name of the color to check.
25
38
  //
26
39
  // Style guide: functions.is-dangerous-color-keyword
27
40
  @function is-dangerous-color-keyword($name) {
28
- $ambiguous-keywords: (
29
- 'aqua': 'aqua or cyan',
30
- 'cyan': 'aqua or cyan',
31
- 'fuchsia': 'fuchsia or magenta',
32
- 'magenta': 'fuchsia or magenta',
33
- 'darkgray': 'darkgray or darkgrey',
34
- 'darkgrey': 'darkgray or darkgrey',
35
- 'darkslategray': 'darkslategray or darkslategrey',
36
- 'darkslategrey': 'darkslategray or darkslategrey',
37
- 'dimgray': 'dimgray or dimgrey',
38
- 'dimgrey': 'dimgray or dimgrey',
39
- 'gray': 'gray or grey',
40
- 'grey': 'gray or grey',
41
- 'lightgray': 'lightgray or lightgrey',
42
- 'lightgrey': 'lightgray or lightgrey',
43
- 'lightslategray': 'lightslategray or lightslategrey',
44
- 'lightslategrey': 'lightslategray or lightslategrey',
45
- 'slategray': 'slategray or slategrey',
46
- 'slategrey': 'slategray or slategrey',
47
- );
48
- $converted-keywords: (
49
- '#00ffff': 'aqua or cyan',
50
- '#0ff': 'aqua or cyan',
51
- '#ff00ff': 'fuchsia or magenta',
52
- '#f0f': 'fuchsia or magenta',
53
- '#a9a9a9': 'darkgray or darkgrey',
54
- '#2f4f4f': 'darkslategray or darkslategrey',
55
- '#696969': 'dimgray or dimgrey',
56
- '#808080': 'gray or grey',
57
- '#d3d3d3': 'lightgray or lightgrey',
58
- '#778899': 'lightslategray or lightslategrey',
59
- '#789': 'lightslategray or lightslategrey',
60
- '#708090': 'slategray or slategrey',
61
- );
62
-
63
41
  @if type-of($name) == 'color' {
64
42
  // Convert the color to a string.
65
43
  $name: inspect($name);
66
44
  // Check if Sass will convert the color into a hex value that we can't
67
45
  // convert back to a keyword.
68
- @if map-has-key($ambiguous-keywords, $name) {
69
- @if $chroma-die-on-ambiguous-keyword {
70
- @error "Sass will convert #{$name} into a hexidecimal value when it uses the \"compressed\" output style and Chroma will not be able to determine if the original name was #{map-get($ambiguous-keywords, $name)}. To prevent this error, quote the keyword like this: '#{$name}'.";
46
+ @if map-has-key($_chroma-dangerous-keywords, $name) {
47
+ @if $chroma-die-on-dangerous-keyword {
48
+ @error "Sass will convert #{$name} into a hexidecimal value when it uses the \"compressed\" output style and Chroma will not be able to determine if the original name was #{map-get($_chroma-dangerous-keywords, $name)}. To prevent this error, quote the keyword like this: '#{$name}'.";
71
49
  }
72
50
  @else {
73
- @return map-get($ambiguous-keywords, $name);
51
+ @return map-get($_chroma-dangerous-keywords, $name);
74
52
  }
75
53
  }
76
54
  // Check if Sass _has_ converted the color into a hex value that we can't
77
55
  // convert back to a keyword.
78
- @else if map-has-key($converted-keywords, $name) {
79
- @error "Sass has converted a color keyword into the hexidecimal value, #{$name}, and Chroma was not be able to determine if the original name was #{map-get($ambiguous-keywords, $name)}. To prevent this error, use quotes around the keyword.";
56
+ @else if map-has-key($_chroma-dangerous-converted-keywords, $name) {
57
+ @error "Sass has converted a color keyword into the hexidecimal value, #{$name}, and Chroma was not be able to determine if the original name was #{map-get($_chroma-dangerous-converted-keywords, $name)}. To prevent this error, use quotes around the keyword.";
80
58
  }
81
59
  }
82
60
  @return false;
@@ -99,311 +77,10 @@ $chroma: _chroma-init();
99
77
  // If true, the is-dangerous-color-keyword() would @die before it returned.
100
78
  }
101
79
 
102
- // CSS4 color keyword are from
103
- // http://dev.w3.org/csswg/css-color-4/#named-colors
104
- $css4-color-keywords: (
105
- 'aliceblue': 'aliceblue',
106
- '#f0f8ff': 'aliceblue',
107
- 'antiquewhite': 'antiquewhite',
108
- '#faebd7': 'antiquewhite',
109
- 'aqua': 'aqua',
110
- 'aquamarine': 'aquamarine',
111
- '#7fffd4': 'aquamarine',
112
- 'azure': 'azure',
113
- '#f0ffff': 'azure',
114
- 'beige': 'beige',
115
- '#f5f5dc': 'beige',
116
- 'bisque': 'bisque',
117
- '#ffe4c4': 'bisque',
118
- 'black': 'black',
119
- '#000000': 'black',
120
- '#000': 'black',
121
- 'blanchedalmond': 'blanchedalmond',
122
- '#ffebcd': 'blanchedalmond',
123
- 'blue': 'blue',
124
- '#0000ff': 'blue',
125
- '#00f': 'blue',
126
- 'blueviolet': 'blueviolet',
127
- '#8a2be2': 'blueviolet',
128
- 'brown': 'brown',
129
- '#a52a2a': 'brown',
130
- 'burlywood': 'burlywood',
131
- '#deb887': 'burlywood',
132
- 'cadetblue': 'cadetblue',
133
- '#5f9ea0': 'cadetblue',
134
- 'chartreuse': 'chartreuse',
135
- '#7fff00': 'chartreuse',
136
- 'chocolate': 'chocolate',
137
- '#d2691e': 'chocolate',
138
- 'coral': 'coral',
139
- '#ff7f50': 'coral',
140
- 'cornflowerblue': 'cornflowerblue',
141
- '#6495ed': 'cornflowerblue',
142
- 'cornsilk': 'cornsilk',
143
- '#fff8dc': 'cornsilk',
144
- 'crimson': 'crimson',
145
- '#dc143c': 'crimson',
146
- 'cyan': 'cyan',
147
- '#00ffff': 'cyan',
148
- '#0ff': 'cyan',
149
- 'darkblue': 'darkblue',
150
- '#00008b': 'darkblue',
151
- 'darkcyan': 'darkcyan',
152
- '#008b8b': 'darkcyan',
153
- 'darkgoldenrod': 'darkgoldenrod',
154
- '#b8860b': 'darkgoldenrod',
155
- 'darkgray': 'darkgray',
156
- '#a9a9a9': 'darkgray',
157
- 'darkgreen': 'darkgreen',
158
- '#006400': 'darkgreen',
159
- 'darkgrey': 'darkgrey',
160
- 'darkkhaki': 'darkkhaki',
161
- '#bdb76b': 'darkkhaki',
162
- 'darkmagenta': 'darkmagenta',
163
- '#8b008b': 'darkmagenta',
164
- 'darkolivegreen': 'darkolivegreen',
165
- '#556b2f': 'darkolivegreen',
166
- 'darkorange': 'darkorange',
167
- '#ff8c00': 'darkorange',
168
- 'darkorchid': 'darkorchid',
169
- '#9932cc': 'darkorchid',
170
- 'darkred': 'darkred',
171
- '#8b0000': 'darkred',
172
- 'darksalmon': 'darksalmon',
173
- '#e9967a': 'darksalmon',
174
- 'darkseagreen': 'darkseagreen',
175
- '#8fbc8f': 'darkseagreen',
176
- 'darkslateblue': 'darkslateblue',
177
- '#483d8b': 'darkslateblue',
178
- 'darkslategray': 'darkslategray',
179
- '#2f4f4f': 'darkslategray',
180
- 'darkslategrey': 'darkslategrey',
181
- 'darkturquoise': 'darkturquoise',
182
- '#00ced1': 'darkturquoise',
183
- 'darkviolet': 'darkviolet',
184
- '#9400d3': 'darkviolet',
185
- 'deeppink': 'deeppink',
186
- '#ff1493': 'deeppink',
187
- 'deepskyblue': 'deepskyblue',
188
- '#00bfff': 'deepskyblue',
189
- 'dimgray': 'dimgray',
190
- '#696969': 'dimgray',
191
- 'dimgrey': 'dimgrey',
192
- 'dodgerblue': 'dodgerblue',
193
- '#1e90ff': 'dodgerblue',
194
- 'firebrick': 'firebrick',
195
- '#b22222': 'firebrick',
196
- 'floralwhite': 'floralwhite',
197
- '#fffaf0': 'floralwhite',
198
- 'forestgreen': 'forestgreen',
199
- '#228b22': 'forestgreen',
200
- 'fuchsia': 'fuchsia',
201
- 'gainsboro': 'gainsboro',
202
- '#dcdcdc': 'gainsboro',
203
- 'ghostwhite': 'ghostwhite',
204
- '#f8f8ff': 'ghostwhite',
205
- 'gold': 'gold',
206
- '#ffd700': 'gold',
207
- 'goldenrod': 'goldenrod',
208
- '#daa520': 'goldenrod',
209
- 'gray': 'gray',
210
- '#808080': 'gray',
211
- 'green': 'green',
212
- '#008000': 'green',
213
- 'greenyellow': 'greenyellow',
214
- '#adff2f': 'greenyellow',
215
- 'grey': 'grey',
216
- 'honeydew': 'honeydew',
217
- '#f0fff0': 'honeydew',
218
- 'hotpink': 'hotpink',
219
- '#ff69b4': 'hotpink',
220
- 'indianred': 'indianred',
221
- '#cd5c5c': 'indianred',
222
- 'indigo': 'indigo',
223
- '#4b0082': 'indigo',
224
- 'ivory': 'ivory',
225
- '#fffff0': 'ivory',
226
- 'khaki': 'khaki',
227
- '#f0e68c': 'khaki',
228
- 'lavender': 'lavender',
229
- '#e6e6fa': 'lavender',
230
- 'lavenderblush': 'lavenderblush',
231
- '#fff0f5': 'lavenderblush',
232
- 'lawngreen': 'lawngreen',
233
- '#7cfc00': 'lawngreen',
234
- 'lemonchiffon': 'lemonchiffon',
235
- '#fffacd': 'lemonchiffon',
236
- 'lightblue': 'lightblue',
237
- '#add8e6': 'lightblue',
238
- 'lightcoral': 'lightcoral',
239
- '#f08080': 'lightcoral',
240
- 'lightcyan': 'lightcyan',
241
- '#e0ffff': 'lightcyan',
242
- 'lightgoldenrodyellow': 'lightgoldenrodyellow',
243
- '#fafad2': 'lightgoldenrodyellow',
244
- 'lightgray': 'lightgray',
245
- '#d3d3d3': 'lightgray',
246
- 'lightgreen': 'lightgreen',
247
- '#90ee90': 'lightgreen',
248
- 'lightgrey': 'lightgrey',
249
- 'lightpink': 'lightpink',
250
- '#ffb6c1': 'lightpink',
251
- 'lightsalmon': 'lightsalmon',
252
- '#ffa07a': 'lightsalmon',
253
- 'lightseagreen': 'lightseagreen',
254
- '#20b2aa': 'lightseagreen',
255
- 'lightskyblue': 'lightskyblue',
256
- '#87cefa': 'lightskyblue',
257
- 'lightslategray': 'lightslategray',
258
- '#778899': 'lightslategray',
259
- '#789': 'lightslategray',
260
- 'lightslategrey': 'lightslategrey',
261
- 'lightsteelblue': 'lightsteelblue',
262
- '#b0c4de': 'lightsteelblue',
263
- 'lightyellow': 'lightyellow',
264
- '#ffffe0': 'lightyellow',
265
- 'lime': 'lime',
266
- '#00ff00': 'lime',
267
- '#0f0': 'lime',
268
- 'limegreen': 'limegreen',
269
- '#32cd32': 'limegreen',
270
- 'linen': 'linen',
271
- '#faf0e6': 'linen',
272
- 'magenta': 'magenta',
273
- '#ff00ff': 'magenta',
274
- '#f0f': 'magenta',
275
- 'maroon': 'maroon',
276
- '#800000': 'maroon',
277
- 'mediumaquamarine': 'mediumaquamarine',
278
- '#66cdaa': 'mediumaquamarine',
279
- 'mediumblue': 'mediumblue',
280
- '#0000cd': 'mediumblue',
281
- 'mediumorchid': 'mediumorchid',
282
- '#ba55d3': 'mediumorchid',
283
- 'mediumpurple': 'mediumpurple',
284
- '#9370db': 'mediumpurple',
285
- 'mediumseagreen': 'mediumseagreen',
286
- '#3cb371': 'mediumseagreen',
287
- 'mediumslateblue': 'mediumslateblue',
288
- '#7b68ee': 'mediumslateblue',
289
- 'mediumspringgreen': 'mediumspringgreen',
290
- '#00fa9a': 'mediumspringgreen',
291
- 'mediumturquoise': 'mediumturquoise',
292
- '#48d1cc': 'mediumturquoise',
293
- 'mediumvioletred': 'mediumvioletred',
294
- '#c71585': 'mediumvioletred',
295
- 'midnightblue': 'midnightblue',
296
- '#191970': 'midnightblue',
297
- 'mintcream': 'mintcream',
298
- '#f5fffa': 'mintcream',
299
- 'mistyrose': 'mistyrose',
300
- '#ffe4e1': 'mistyrose',
301
- 'moccasin': 'moccasin',
302
- '#ffe4b5': 'moccasin',
303
- 'navajowhite': 'navajowhite',
304
- '#ffdead': 'navajowhite',
305
- 'navy': 'navy',
306
- '#000080': 'navy',
307
- 'oldlace': 'oldlace',
308
- '#fdf5e6': 'oldlace',
309
- 'olive': 'olive',
310
- '#808000': 'olive',
311
- 'olivedrab': 'olivedrab',
312
- '#6b8e23': 'olivedrab',
313
- 'orange': 'orange',
314
- '#ffa500': 'orange',
315
- 'orangered': 'orangered',
316
- '#ff4500': 'orangered',
317
- 'orchid': 'orchid',
318
- '#da70d6': 'orchid',
319
- 'palegoldenrod': 'palegoldenrod',
320
- '#eee8aa': 'palegoldenrod',
321
- 'palegreen': 'palegreen',
322
- '#98fb98': 'palegreen',
323
- 'paleturquoise': 'paleturquoise',
324
- '#afeeee': 'paleturquoise',
325
- 'palevioletred': 'palevioletred',
326
- '#db7093': 'palevioletred',
327
- 'papayawhip': 'papayawhip',
328
- '#ffefd5': 'papayawhip',
329
- 'peachpuff': 'peachpuff',
330
- '#ffdab9': 'peachpuff',
331
- 'peru': 'peru',
332
- '#cd853f': 'peru',
333
- 'pink': 'pink',
334
- '#ffc0cb': 'pink',
335
- 'plum': 'plum',
336
- '#dda0dd': 'plum',
337
- 'powderblue': 'powderblue',
338
- '#b0e0e6': 'powderblue',
339
- 'purple': 'purple',
340
- '#800080': 'purple',
341
- 'rebeccapurple': 'rebeccapurple',
342
- '#663399': 'rebeccapurple',
343
- 'red': 'red',
344
- '#ff0000': 'red',
345
- '#f00': 'red',
346
- 'rosybrown': 'rosybrown',
347
- '#bc8f8f': 'rosybrown',
348
- 'royalblue': 'royalblue',
349
- '#4169e1': 'royalblue',
350
- 'saddlebrown': 'saddlebrown',
351
- '#8b4513': 'saddlebrown',
352
- 'salmon': 'salmon',
353
- '#fa8072': 'salmon',
354
- 'sandybrown': 'sandybrown',
355
- '#f4a460': 'sandybrown',
356
- 'seagreen': 'seagreen',
357
- '#2e8b57': 'seagreen',
358
- 'seashell': 'seashell',
359
- '#fff5ee': 'seashell',
360
- 'sienna': 'sienna',
361
- '#a0522d': 'sienna',
362
- 'silver': 'silver',
363
- '#c0c0c0': 'silver',
364
- 'skyblue': 'skyblue',
365
- '#87ceeb': 'skyblue',
366
- 'slateblue': 'slateblue',
367
- '#6a5acd': 'slateblue',
368
- 'slategray': 'slategray',
369
- '#708090': 'slategray',
370
- 'slategrey': 'slategrey',
371
- 'snow': 'snow',
372
- '#fffafa': 'snow',
373
- 'springgreen': 'springgreen',
374
- '#00ff7f': 'springgreen',
375
- 'steelblue': 'steelblue',
376
- '#4682b4': 'steelblue',
377
- 'tan': 'tan',
378
- '#d2b48c': 'tan',
379
- 'teal': 'teal',
380
- '#008080': 'teal',
381
- 'thistle': 'thistle',
382
- '#d8bfd8': 'thistle',
383
- 'tomato': 'tomato',
384
- '#ff6347': 'tomato',
385
- 'turquoise': 'turquoise',
386
- '#40e0d0': 'turquoise',
387
- 'violet': 'violet',
388
- '#ee82ee': 'violet',
389
- 'wheat': 'wheat',
390
- '#f5deb3': 'wheat',
391
- 'white': 'white',
392
- '#ffffff': 'white',
393
- '#fff': 'white',
394
- 'whitesmoke': 'whitesmoke',
395
- '#f5f5f5': 'whitesmoke',
396
- 'yellow': 'yellow',
397
- '#ffff00': 'yellow',
398
- '#ff0': 'yellow',
399
- 'yellowgreen': 'yellowgreen',
400
- '#9acd32': 'yellowgreen',
401
- );
402
-
403
80
  // Convert the color to a string.
404
81
  $name: inspect($name);
405
82
 
406
- @return if(map-has-key($css4-color-keywords, $name), map-get($css4-color-keywords, $name), false);
83
+ @return if(map-has-key($_chroma-css4-color-keywords, $name), map-get($_chroma-css4-color-keywords, $name), false);
407
84
  }
408
85
 
409
86
  // chroma-to-string($name)
@@ -449,7 +126,7 @@ $chroma: _chroma-init();
449
126
 
450
127
  // Confirm the scheme exists.
451
128
  @if not chroma-has-scheme($scheme) {
452
- @error 'The #{$chroma-spelling} scheme "#{$scheme}" was not found.';
129
+ @error 'The #{$_chroma-spelling} scheme "#{$scheme}" was not found.';
453
130
  }
454
131
  // Cast the color name to a string to ensure color keywords do not cause
455
132
  // problems as map keys.
@@ -457,9 +134,24 @@ $chroma: _chroma-init();
457
134
  // Find the actual scheme used by the named color.
458
135
  $actual-scheme: chroma-has-color($name, $scheme);
459
136
  @if not $actual-scheme {
460
- @error 'The #{$chroma-spelling} "#{$name}" was not found.';
137
+ @error 'The #{$_chroma-spelling} "#{$name}" was not found.';
138
+ }
139
+ $color: map-get(map-get($chroma, 'names'), "#{$actual-scheme}::#{$name}");
140
+ @if $actual-scheme == $scheme {
141
+ @return map-get($color, 'value');
142
+ }
143
+ @else {
144
+ // The value of $actual-scheme::$name is based on parents in $actual-scheme.
145
+ // But one or more of the parents may be defined in $scheme too, so we need
146
+ // to check the full reference chain.
147
+ $ref: map-get($color, 'reference');
148
+ @while $ref {
149
+ $actual-scheme: chroma-has-color($ref, $scheme);
150
+ $color: map-get(map-get($chroma, 'names'), "#{$actual-scheme}::#{$ref}");
151
+ $ref: map-get($color, 'reference');
152
+ }
153
+ @return map-get($color, 'value');
461
154
  }
462
- @return map-get(map-get(map-get($chroma, 'names'), "#{$actual-scheme}::#{$name}"), 'value');
463
155
  }
464
156
 
465
157
  // define-color-scheme($scheme [, $description] [, $parent])
@@ -495,7 +187,7 @@ $chroma: _chroma-init();
495
187
 
496
188
  // Check parent reference exists.
497
189
  @if $parent and not chroma-has-scheme($parent) {
498
- @error 'Cannot set the parent of #{scheme} to "#{$parent}" because the #{$chroma-spelling} scheme "#{$parent}" was not found.';
190
+ @error 'Cannot set the parent of #{scheme} to "#{$parent}" because the #{$_chroma-spelling} scheme "#{$parent}" was not found.';
499
191
  }
500
192
 
501
193
  $schemes: map-merge(
@@ -564,7 +256,7 @@ $chroma: _chroma-init();
564
256
  $scheme: $chroma-active-scheme;
565
257
  }
566
258
  @if not chroma-has-scheme($scheme) {
567
- @error 'The #{$chroma-spelling} scheme "#{$scheme}" was not found.';
259
+ @error 'The #{$_chroma-spelling} scheme "#{$scheme}" was not found.';
568
260
  }
569
261
  @each $color-name, $color-value in $colors {
570
262
  // Cast the color name to a string to ensure color keywords do not cause
@@ -584,7 +276,7 @@ $chroma: _chroma-init();
584
276
  // Find the referenced color.
585
277
  $scheme-of-reference: chroma-has-color($ref, $scheme);
586
278
  @if not $scheme-of-reference {
587
- @error 'The #{$chroma-spelling} "#{$ref}" was not found.';
279
+ @error 'The #{$_chroma-spelling} "#{$ref}" was not found.';
588
280
  }
589
281
  $referenced-color: map-get(map-get($chroma, 'names'), "#{$scheme-of-reference}::#{$ref}");
590
282
  // Add the new color.
@@ -605,7 +297,7 @@ $chroma: _chroma-init();
605
297
  ) !global;
606
298
  $ref: map-get($referenced-color, 'reference');
607
299
  @if $ref {
608
- $scheme-of-reference: chroma-has-color($ref, $scheme-of-reference);
300
+ $scheme-of-reference: chroma-has-color($ref, $scheme);
609
301
  $referenced-color: map-get(map-get($chroma, 'names'), "#{$scheme-of-reference}::#{$ref}");
610
302
  }
611
303
  }