* Fix typo
* Support alpha modifier for theme color values
* Eliminate redundant object creation in resolveFunctionKeys
Building an object of N keys incrementally using Object.reduce + splat results in N intermediate objects. We should just create one object and assign each key.
* Switch to inline theme values in theme fn in config
* Add test case
And fix typos that were definitely not there
* Update changelog
* add normalizeScreens function
This will allow us to normalize the various kinds of inputs to a stable
version that is consistent regardless of the input.
* use normalized screens
* add dedicated test for new tuple syntax
* make test consistent with other tests
While working on the normalizeScreens feature, some tests started
failing (the one with multiple screens), while looking at them I made
them consistent with the rest of the codebase.
* add test to ensure consistent order in screens output
* update changelog
* Update CHANGELOG.md
* Update CHANGELOG.md
Co-authored-by: Adam Wathan <adam.wathan@gmail.com>
* feat: throw when theme does not have requested path (#1799)
* Add suggestions to theme function errors
Co-authored-by: Jason Quense <monastic.panic@gmail.com>
The only reason the config() helper function existed was to access your design tokens in your CSS, like:
```css
.foo {
color: config('colors.blue')
}
```
Now that design tokens are nested in the new `theme` section, using the `config()` function is a bit more verbose:
```css
.foo {
color: config('theme.colors.blue')
}
```
This PR removes the `config()` function in favor of a new `theme()` function that is already scoped to the `theme` section of the config:
```css
.foo {
color: theme('colors.blue')
}
```
I can't think of any reason at all why you would need to access the non-theme values in your config from your CSS (like enabled variants, or your list of plugins), and the word `theme` is much more expressive than `config`, so I think this is a worthwhile change.
This change tells Webpack (for those using it) that the config file
used should be tracked as a dependency and that the CSS should be
re-compiled if that config file changes.
It's careful to make sure the config file is loaded fresh every single
time to avoid weird caching issues.