Skip to content

Commit

Permalink
Provide default to <alpha-value> when using theme() (#8652)
Browse files Browse the repository at this point in the history
* Ensure default alpha is 1.0 when using new `<alpha-value>` format with the theme function

* Update changelog
  • Loading branch information
thecrypticace committed Jun 15, 2022
1 parent 3cf48bf commit 9778b52
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 3 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Fix "Maximum call stack size exceeded" bug ([#8636](https://github.com/tailwindlabs/tailwindcss/pull/8636))
- Allow functions returning parallel variants to mutate the container ([#8622](https://github.com/tailwindlabs/tailwindcss/pull/8622))
- Remove text opacity CSS variables from `::marker` ([#8622](https://github.com/tailwindlabs/tailwindcss/pull/8622))
- Provide default to `<alpha-value>` when using `theme()` ([#8622](https://github.com/tailwindlabs/tailwindcss/pull/8622))

## [3.1.2] - 2022-06-10

Expand Down
12 changes: 9 additions & 3 deletions src/lib/evaluateTailwindFunctions.js
Expand Up @@ -183,9 +183,15 @@ export default function ({ tailwindConfig: config }) {
throw node.error(error)
}

if (alpha !== undefined) {
value = parseColorFormat(value)
value = withAlphaValue(value, alpha, value)
let maybeColor = parseColorFormat(value)
let isColorFunction = maybeColor !== undefined && typeof maybeColor === 'function'

if (alpha !== undefined || isColorFunction) {
if (alpha === undefined) {
alpha = 1.0
}

value = withAlphaValue(maybeColor, alpha, maybeColor)
}

return value
Expand Down
30 changes: 30 additions & 0 deletions tests/evaluateTailwindFunctions.test.js
Expand Up @@ -1025,6 +1025,36 @@ test('Theme function can extract alpha values for colors (8)', () => {
})
})

test('Theme functions replace the alpha value placeholder even with no alpha provided', () => {
let input = css`
.foo {
background: theme(colors.blue.400);
color: theme(colors.blue.500);
}
`

let output = css`
.foo {
background: rgb(0 0 255 / 1);
color: rgb(var(--foo) / 1);
}
`

return runFull(input, {
theme: {
colors: {
blue: {
400: 'rgb(0 0 255 / <alpha-value>)',
500: 'rgb(var(--foo) / <alpha-value>)',
},
},
},
}).then((result) => {
expect(result.css).toMatchCss(output)
expect(result.warnings().length).toBe(0)
})
})

test('Theme functions can reference values with slashes in brackets', () => {
let input = css`
.foo1 {
Expand Down

0 comments on commit 9778b52

Please sign in to comment.