@daldalso/tailwind-base v0.9.2-5
tailwind-base
Let you exploit Tailwind in React more powerful
Getting Started
Installation
yarn add @daldalso/tailwind-basenpx tailwind-base globals.css(You should replaceglobals.csswith the path of a proper Tailwind CSS file which contains something like@tailwind base;.)- Add
<TailwindBaseInitializer />to your root component. Update your Tailwind config file like below:
import buildTailwindBaseTransformer from "@daldalso/tailwind-base/transformer"; export default { content: { files: [ /* ... */ "!**/tailwind-base.ts" ], transform: buildTailwindBaseTransformer() } };If your
contentfield is an array, move the array intocontent.filesto setcontent.transform.
After the installation, you can call the default function c from @daldalso/tailwind-base to merge Tailwind classes like below:
import { useState } from "react";
import c from "@daldalso/tailwind-base";
const MyComponent = () => {
const [ blue, setBlue ] = useState(true);
// The className goes to `text-center text-blue`.
return <div className={c("text-center text-red", blue && "text-blue")}>
Hello, <span className={c("font-bold")}>World</span>!
</div>;
};
export default MyComponent;Implicit Mergence
In TypeScript, you can also merge the classes without explicitly calling c.
All you have to do is setting jsxImportSource in your tsconfig.json to @daldalso/tailwind-base.
After that, you can rewrite the above code like this:
import { useState } from "react";
const MyComponent = () => {
const [ blue, setBlue ] = useState(true);
// The className goes to `text-center text-blue`.
return <div c={["text-center text-red", blue && "text-blue"]}>
Hello, <span c="font-bold">World</span>!
</div>;
};
export default MyComponent;Grouping
You can group classes with an object whose keys are Tailwind variants like below:
<button c={[
"bg-red font-normal",
{
hover: "bg-blue font-bold",
'[&:hover>b]': enlarging && "scale-150"
}
]}>
Hello, <b>World</b>!
</button>The button's classes will be bg-red font-normal hover:bg-blue hover:font-bold and [&:hover>b]:scale-150 if enlarging is true.
You should not set values of the object dynamically, just as Tailwind prevents you from setting class name dynamically.
const boldStyle = "font-bold"; c(`hover:${boldStyle}`); // Prevented by Tailwind c(isBold ? "hover:font-bold" : "hover:font-normal"); // Fine c({ hover: boldStyle }); // Prevented by tailwind-base c({ hover: c("font-bold") }); // Prevented by tailwind-base c({ hover: isBold ? "font-bold" : "font-normal" }); // Fine
Caveat
- You have to run
npx tailwind-base globals.csswhenever you update your Tailwind config file to let tailwind-base merge the updated classes correctly.
12 months ago
12 months ago
10 months ago
11 months ago
1 year ago
12 months ago
12 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago