Skip to content

Commit

Permalink
Support the color property in JS theme configuration callbacks
Browse files Browse the repository at this point in the history
  • Loading branch information
philipp-spiess committed Oct 11, 2024
1 parent e6d3fa0 commit 5d70c19
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- Add support for `tailwindcss/colors.js`, `tailwindcss/defaultTheme.js`, and `tailwindcss/plugin.js` exports ([#14595](https://github.com/tailwindlabs/tailwindcss/pull/14595))
- Support `keyframes` in JS config file themes ([#14594](https://github.com/tailwindlabs/tailwindcss/pull/14594))
- Support the `color` property in JS theme configuration callbacks
- _Upgrade (experimental)_: Migrate v3 PostCSS setups to v4 in some cases ([#14612](https://github.com/tailwindlabs/tailwindcss/pull/14612))
- _Upgrade (experimental)_: Automatically discover JavaScript config files ([#14597](https://github.com/tailwindlabs/tailwindcss/pull/14597))
- _Upgrade (experimental)_: Migrate legacy classes to the v4 alternative ([#14643](https://github.com/tailwindlabs/tailwindcss/pull/14643))
Expand Down
19 changes: 19 additions & 0 deletions packages/tailwindcss/src/compat/config/resolve-config.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,10 @@ test('theme keys can read from the CSS theme', () => {
// Reads from the --color-* namespace directly
secondary: theme('color.green'),
}),
caretColor: ({ colors }) => ({
// Gives access to the colors object directly
primary: colors.green,
}),
},
},
base: '/root',
Expand All @@ -218,6 +222,21 @@ test('theme keys can read from the CSS theme', () => {
primary: 'green',
secondary: 'green',
},
caretColor: {
primary: {
'100': '#dcfce7',
'200': '#bbf7d0',
'300': '#86efac',
'400': '#4ade80',
'50': '#f0fdf4',
'500': '#22c55e',
'600': '#16a34a',
'700': '#15803d',
'800': '#166534',
'900': '#14532d',
'950': '#052e16',
},
},
},
})
})
3 changes: 3 additions & 0 deletions packages/tailwindcss/src/compat/config/resolve-config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import type { DesignSystem } from '../../design-system'
import colors from '../colors'
import type { PluginWithConfig } from '../plugin-api'
import { createThemeFn } from '../plugin-functions'
import { deepMerge, isPlainObject } from './deep-merge'
Expand Down Expand Up @@ -117,6 +118,7 @@ export function mergeThemeExtension(

export interface PluginUtils {
theme(keypath: string, defaultValue?: any): any
colors: typeof colors
}

function extractConfigs(ctx: ResolutionContext, { config, base, path }: ConfigFile): void {
Expand Down Expand Up @@ -176,6 +178,7 @@ function extractConfigs(ctx: ResolutionContext, { config, base, path }: ConfigFi
function mergeTheme(ctx: ResolutionContext) {
let api: PluginUtils = {
theme: createThemeFn(ctx.design, () => ctx.theme, resolveValue),
colors,
}

function resolveValue(value: ThemeValue | null | undefined): ResolvedThemeValue {
Expand Down

0 comments on commit 5d70c19

Please sign in to comment.