2023-01-11 15:42:21 +00:00
|
|
|
import plugin from 'tailwindcss/plugin';
|
2023-01-12 18:02:54 +00:00
|
|
|
import { getCSSRulesForIcons } from './clean';
|
|
|
|
import { getDynamicCSSRules } from './dynamic';
|
|
|
|
import type {
|
|
|
|
CleanIconifyPluginOptions,
|
|
|
|
DynamicIconifyPluginOptions,
|
|
|
|
} from './options';
|
2023-01-11 15:42:21 +00:00
|
|
|
|
|
|
|
/**
|
2023-01-12 18:02:54 +00:00
|
|
|
* Generate styles for dynamic selector: class="icon-[mdi-light--home]"
|
2023-01-11 15:42:21 +00:00
|
|
|
*/
|
2023-01-12 18:02:54 +00:00
|
|
|
export function addDynamicIconSelectors(options?: DynamicIconifyPluginOptions) {
|
|
|
|
const prefix = options?.prefix || 'icon';
|
|
|
|
return plugin(({ matchComponents }) => {
|
|
|
|
matchComponents({
|
|
|
|
[prefix]: (icon: string) => getDynamicCSSRules(icon, options),
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Generate styles for preset list of icons
|
|
|
|
*/
|
|
|
|
export function addCleanIconSelectors(
|
2023-02-07 19:34:26 +00:00
|
|
|
icons: string[] | string,
|
2023-01-12 18:02:54 +00:00
|
|
|
options?: CleanIconifyPluginOptions
|
2023-01-11 15:42:21 +00:00
|
|
|
) {
|
2023-02-07 19:34:26 +00:00
|
|
|
const rules = getCSSRulesForIcons(icons, options);
|
|
|
|
return plugin(({ addUtilities }) => {
|
2023-01-12 18:02:54 +00:00
|
|
|
addUtilities(rules);
|
2023-01-11 15:42:21 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2023-01-12 18:02:54 +00:00
|
|
|
* Export types
|
2023-01-11 15:42:21 +00:00
|
|
|
*/
|
2023-01-12 18:02:54 +00:00
|
|
|
export type { CleanIconifyPluginOptions, DynamicIconifyPluginOptions };
|