@use-pico/cls
Version:
Type-safe, composable styling system for React, Vue, Svelte, and vanilla JS
29 lines (24 loc) • 623 B
text/typescript
import { type ClassNameValue, twMerge } from "tailwind-merge";
export namespace tvc {
export type ClassName = ClassNameValue;
}
export const tvc = (...classLists: ClassNameValue[]): string => {
const merged = twMerge(...classLists);
if (!merged) {
return "";
}
const tokens = merged.split(/\s+/).filter(Boolean);
const seen = new Set<string>();
const outRev: string[] = [];
for (let i = tokens.length - 1; i >= 0; i--) {
const token = tokens[i];
if (token === undefined) {
continue;
}
if (!seen.has(token)) {
seen.add(token);
outRev.push(token);
}
}
return outRev.reverse().join(" ");
};