Apply custom themes and fonts to your SaaS
With Tailwind CSS + shadcn you have 100% control over your styles.
💿 Go to app/utils/theme/defaultThemes.ts
and specify your new theme name:
// themes.css should have 2 classes: .theme-{name} and .dark.theme-{name}
export const defaultTheme = "my-new-theme-1";
// this array could be empty, it's only used by ThemeSelector
export const defaultThemes: { name: string; value: string }[] = [
{ name: "Default", value: "zinc" },
{ name: "Slate", value: "slate" },
{ name: "Stone", value: "stone" },
{ name: "Gray", value: "gray" },
{ name: "Neutral", value: "neutral" },
{ name: "Red", value: "red" },
{ name: "Rose", value: "rose" },
{ name: "Orange", value: "orange" },
{ name: "Green", value: "green" },
{ name: "Blue", value: "blue" },
{ name: "Yellow", value: "yellow" },
{ name: "Violet", value: "violet" },
{ name: "My new theme 1", value: "my-new-theme-1" },
];
💿 Go to app/themes.css
and add your new theme CSS variables:
.theme-my-new-theme-1 {
--background: 120 50% 90%;
--foreground: 120 30% 20%;
--muted: 120 50% 80%;
--muted-foreground: 120 30% 40%;
--popover: 120 50% 90%;
--popover-foreground: 120 30% 20%;
--card: 120 50% 90%;
--card-foreground: 120 30% 20%;
--border: 120 50% 80%;
--input: 120 50% 80%;
--primary: 120 60% 40%;
--primary-foreground: 120 100% 98%;
--secondary: 120 50% 80%;
--secondary-foreground: 120 60% 40%;
--accent: 120 50% 80%;
--accent-foreground: 120 60% 40%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 0 0% 98%;
--ring: 120 60% 40%;
--radius: 0.5rem;
}
.dark .theme-my-new-theme-1 {
--background: 120 30% 20%;
--foreground: 120 50% 90%;
--muted: 120 30% 15%;
--muted-foreground: 120 50% 70%;
--popover: 120 30% 20%;
--popover-foreground: 120 50% 90%;
--card: 120 30% 20%;
--card-foreground: 120 50% 90%;
--border: 120 30% 15%;
--input: 120 30% 15%;
--primary: 120 50% 90%;
--primary-foreground: 120 30% 20%;
--secondary: 120 30% 15%;
--secondary-foreground: 120 50% 90%;
--accent: 120 30% 15%;
--accent-foreground: 120 50% 90%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 0 100% 98%;
--ring: 120 50% 40%;
}
And that's it:
You can use ChatGPT to generate your theme palette. Just paste the content of themes.css
, specify your new theme name and how you'd like to style it (main colors, radius...).
💿 Go to the globals.css
file, and import the custom Google Font at the top.
+ @import url("https://fonts.googleapis.com/css2?family=Poppins&display=swap");
@tailwind base;
...
💿 Add the custom font name to the start of the fontFamily:
module.exports = {
...
theme: {
extend: {
fontFamily: {
sans: ["Poppins", "Roboto Mono", "ui-sans-serif", "system-ui"],
},
And if you'd like to change the base font, you can apply it at root.tsx with font-serif
or your font name.
<body
className={clsx(
theme-${rootData.theme}
,
"bg-background text-foreground max-h-full min-h-screen max-w-full font-serif"
)}
>
I hope this quick guide was useful! Let me know if you have any questions.
We respect your privacy. We respect your privacy.
TLDR: We use cookies for language selection, theme, and analytics. Learn more. TLDR: We use cookies for language selection, theme, and analytics. Learn more