mirror of
https://github.com/ArthurDanjou/ui.git
synced 2026-02-02 13:17:57 +01:00
fix(module): allow CSS variables in tailwind colors (#2014)
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import { computed } from 'vue'
|
import { computed } from 'vue'
|
||||||
import { get, hexToRgb } from '../utils'
|
import { get, parseConfigValue } from '../utils'
|
||||||
import { defineNuxtPlugin, useAppConfig, useNuxtApp, useHead } from '#imports'
|
import { defineNuxtPlugin, useAppConfig, useNuxtApp, useHead } from '#imports'
|
||||||
import colors from '#tailwind-config/theme/colors'
|
import colors from '#tailwind-config/theme/colors'
|
||||||
|
|
||||||
@@ -19,10 +19,10 @@ export default defineNuxtPlugin(() => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return `:root {
|
return `:root {
|
||||||
${Object.entries(primary || colors.green).map(([key, value]) => `--color-primary-${key}: ${hexToRgb(value)};`).join('\n')}
|
${Object.entries(primary || colors.green).map(([key, value]) => `--color-primary-${key}: ${parseConfigValue(value)};`).join('\n')}
|
||||||
--color-primary-DEFAULT: var(--color-primary-500);
|
--color-primary-DEFAULT: var(--color-primary-500);
|
||||||
|
|
||||||
${Object.entries(gray || colors.cool).map(([key, value]) => `--color-gray-${key}: ${hexToRgb(value)};`).join('\n')}
|
${Object.entries(gray || colors.cool).map(([key, value]) => `--color-gray-${key}: ${parseConfigValue(value)};`).join('\n')}
|
||||||
}
|
}
|
||||||
|
|
||||||
.dark {
|
.dark {
|
||||||
|
|||||||
@@ -41,6 +41,14 @@ export function mergeConfig<T> (strategy: Strategy, ...configs): T {
|
|||||||
return defuTwMerge({}, ...configs) as T
|
return defuTwMerge({}, ...configs) as T
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const rxHex = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i
|
||||||
|
|
||||||
|
export function parseConfigValue (value: string) {
|
||||||
|
return rxHex.test(value)
|
||||||
|
? hexToRgb(value)
|
||||||
|
: value
|
||||||
|
}
|
||||||
|
|
||||||
export function hexToRgb (hex: string) {
|
export function hexToRgb (hex: string) {
|
||||||
// Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
|
// Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
|
||||||
const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i
|
const shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i
|
||||||
@@ -48,7 +56,7 @@ export function hexToRgb (hex: string) {
|
|||||||
return r + r + g + g + b + b
|
return r + r + g + g + b + b
|
||||||
})
|
})
|
||||||
|
|
||||||
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex)
|
const result = rxHex.exec(hex)
|
||||||
return result
|
return result
|
||||||
? `${parseInt(result[1], 16)} ${parseInt(result[2], 16)} ${parseInt(result[3], 16)}`
|
? `${parseInt(result[1], 16)} ${parseInt(result[2], 16)} ${parseInt(result[3], 16)}`
|
||||||
: null
|
: null
|
||||||
|
|||||||
Reference in New Issue
Block a user