34 Commits

Author SHA1 Message Date
Jordan Pittman
deefbf5aaf
Handle theme keys with slashes when using theme() in CSS (#8831)
* Fix lookup of `theme(…)` paths with slashes in them

* Update changelog
2022-07-11 10:47:17 -04:00
Jordan Pittman
9778b528dc
Provide default to <alpha-value> when using theme() (#8652)
* Ensure default alpha is 1.0 when using new `<alpha-value>` format with the theme function

* Update changelog
2022-06-15 15:11:08 -04:00
Jordan Pittman
1c24d7a473
Detect alpha value in CSS theme() function when using quotes (#8625)
* Allow alpha value inside quotes

* Optimize regex

* Add test

* Update changelog
2022-06-13 15:32:52 -04:00
Jordan Pittman
7aa2d4ddf3
Don’t clip slashes inside brackets when using the theme function (#8563) 2022-06-09 14:09:57 -04:00
Jordan Pittman
64b4e6df7b
Replace rgb and hsl helpers with <alpha-value> placeholder for colors with custom properties (#8501)
* implement <alpha-value>

* remove `rgb`/`hsl` helpers, use `<alpha-value>` instead

* never pass undefined to `withAlphaValue`

* WIP

* WIP

* WIP

* WIP

* Update changelog

* Cleanup

Co-authored-by: Robin Malfait <malfait.robin@gmail.com>
2022-06-02 10:21:20 -04:00
Jordan Pittman
50bed74cdc
Support alpha values for theme() function (#8416)
* 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
2022-05-25 13:54:30 -04:00
Jordan Pittman
08a07f6e02
Support square bracket notation in paths (#6519) 2021-12-15 11:09:29 -05:00
Robin Malfait
ef325ea35b
Add tuple syntax to guarantee screens order (#6104)
* 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>
2021-11-16 18:01:06 +01:00
Robin Malfait
a34bd62bb6
Remove lodash (#5390)
* remove `lodash` usage

* implement custom cloneDeep to replace lodash's

* drop lodash in processPlugins

* add `toPath` utility

* add `tap` utility

* add `cloneDeep` utility

* drop lodash in evaluateTailwindFunctions

* add `defaults` utility

* drop lodash from `resolveConfig`

* remove `lodash` dependency
2021-09-06 14:15:10 -04:00
Adam Wathan
1849e35f14 Refactor internals to decouple watch strategies and extract IO
Co-authored-by: Robin Malfait <malfait.robin@gmail.com>
2021-05-26 09:43:05 -04:00
Adam Wathan
7991646eff
Add screen function (#4318) 2021-05-11 15:25:25 -04:00
Adam Wathan
5ebe5e8309
Remove dependency on postcss-functions (#4317)
* Write postcss-functions ourselves

* Add test for nested theme calls

* Remove unused import
2021-05-11 14:33:05 -04:00
Dylan Vann
33dcd44dbe
Fix function colors bug (#2919) 2021-02-07 14:57:57 -05:00
Adam Wathan
e13f083c4b Join arrays when using theme consistently 2020-10-19 11:32:22 -04:00
Brad Cornes
5bf4699a35
Add theme helper function errors (#2615)
* 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>
2020-10-19 08:12:14 -04:00
Adam Wathan
38b4eeb288 Prettier likes parens a lot now
git blame is now broken forever.
2020-10-16 15:39:44 -04:00
Adam Wathan
e3ed12782f Update prettier 2020-10-16 13:30:06 -04:00
Adam Wathan
a84deb4ac5 Fix bug where theme('fontSize.xl') breaks with default line-height 2020-08-07 14:32:47 -04:00
ecrmnn
66e75b89ab Replaces use of Lodash isArray with built-in Array.isArray 2019-07-13 16:52:07 +02:00
Adam Wathan
c98cc12d35 Remove dependency on perfectionist, implement simple formatting from scratch 2019-04-16 11:43:17 -04:00
Adam Wathan
525d03b7dc Support unquoted lists as default theme function values 2019-03-12 21:20:31 -04:00
Adam Wathan
53ca284553 Remove config() function in favor of theme()
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.
2019-03-01 08:35:24 -05:00
Adam Wathan
ffae87148d Revert "Allow plugins to register new config variables" 2019-02-01 12:32:04 -05:00
Adam Wathan
5ea8bbe798 Allow plugins to register new config variables 2019-02-01 12:32:04 -05:00
Adam Wathan
b21d258f63 Wrap Tailwind plugins in new plugin to only unwrap config once 2018-06-26 13:44:47 -04:00
Adam Wathan
0751431658 Remove useless variable 2017-11-26 14:56:39 -05:00
Adam Wathan
df8d80fbbf Defer unwrapping config until actually evaluating the config() function 2017-11-26 14:53:30 -05:00
David Hemphill
79a2bb39e5 Reformat files 2017-11-06 15:02:02 -05:00
David Hemphill
9dbf5881cd fix eslint issues 2017-11-06 15:00:55 -05:00
David Hemphill
ec607968cf Add ESLinting and Prettier formatting and run an initial format on the codebase 2017-11-06 15:00:00 -05:00
Adam Wathan
c7061e9228 Support default values in config function
Also add a bunch of tests, seems probably wise :)
2017-11-06 10:32:17 -05:00
Adam Wathan
b2b95d5738 Register config file with Webpack for watching
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.
2017-11-03 09:54:15 -04:00
Jonathan Reinink
96e9e67592 Rename tailwind() method to config()
Add basic tests for config(), @response and @apply.
2017-10-30 13:50:37 -04:00
Adam Wathan
ba04169e4e Add support for "tailwind" function to look up config values 2017-10-09 10:42:19 -04:00