I'm new to Tailwind and I'm using this framework with next.js . when I want to use tailwind class, it won't work unless I use it in my app folder first! for example, if I want to use bg-green-500 for my component folder (outside of the app folder) I should try it in my app folder, and then it will be available for another folder outside of the app folder
I have tried some ways like uninstalling and installing the package and ... but unfortunately it didn't work.
page.tsx
import { Hero } from '@/component/template/index'
export default function Home () {
return (
<div className="">
<Hero />
</div>
)
}
layout.tsx
import "./globals.css";
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en">
<body className="">{children}</body>
</html>
);
}
globals.css
@import url("https://fonts.googleapis.com/css2?family=Manrope:wght@200;300;400;500;600;700;800&display=swap");
@tailwind base;
@tailwind components;
@tailwind utilities;
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: "Manrope", sans-serif;
}
/* START: General styles */
.max-width {
@apply max-w-[1440px] mx-auto;
}
.padding-x {
@apply sm:px-16 px-6;
}
.padding-y {
@apply py-4;
}
.flex-center {
@apply flex items-center justify-center;
}
.flex-between {
@apply flex justify-between items-center;
}
.custom-btn {
@apply flex flex-row relative justify-center items-center py-3 px-6 outline-none;
}
/* END: General styles */
/* START: Hero styles */
.hero {
@apply flex xl:flex-row flex-col gap-5 relative z-0 max-w-[1440px] mx-auto;
}
.hero__title {
@apply 2xl:text-[72px] sm:text-[64px] text-[50px] font-extrabold;
}
.hero__subtitle {
@apply text-[27px] text-black-100 font-light mt-5;
}
.hero__image-container {
@apply xl:flex-[1.5] flex justify-end items-end w-full xl:h-screen;
}
.hero__image {
@apply relative xl:w-full w-[90%] xl:h-full h-[590px] z-0;
}
.hero__image-overlay {
@apply absolute xl:-top-24 xl:-right-1/2 -right-1/4 bg-hero-bg bg-repeat-round -z-10 w-full xl:h-screen h-[590px] overflow-hidden;
}
/* END: Hero styles */
/* START: Home styles */
.home__text-container {
@apply flex flex-col items-start justify-start gap-y-2.5 text-black-100;
}
.home__filters {
@apply mt-12 w-full flex-between items-center flex-wrap gap-5;
}
.home__filter-container {
@apply flex justify-start flex-wrap items-center gap-2;
}
.home__cars-wrapper {
@apply grid 2xl:grid-cols-4 xl:grid-cols-3 md:grid-cols-2 grid-cols-1 w-full gap-8 pt-14;
}
.home__error-container {
@apply mt-16 flex justify-center items-center flex-col gap-2;
}
/* END: Home styles */
/* START: Car Card styles */
.car-card {
@apply flex flex-col p-6 justify-center items-start text-black-100 bg-primary-blue-100 hover:bg-white hover:shadow-md rounded-3xl;
}
.car-card__content {
@apply w-full flex justify-between items-start gap-2;
}
.car-card__content-title {
@apply text-[22px] leading-[26px] font-bold capitalize;
}
.car-card__price {
@apply flex mt-6 text-[32px] leading-[38px] font-extrabold;
}
.car-card__price-dollar {
@apply self-start text-[14px] leading-[17px] font-semibold;
}
.car-card__price-day {
@apply self-end text-[14px] leading-[17px] font-medium;
}
.car-card__image {
@apply relative w-full h-40 my-3 object-contain;
}
.car-card__icon-container {
@apply flex group-hover:invisible w-full justify-between text-grey;
}
.car-card__icon {
@apply flex flex-col justify-center items-center gap-2;
}
.car-card__icon-text {
@apply text-[14px] leading-[17px];
}
.car-card__btn-container {
@apply hidden group-hover:flex absolute bottom-0 w-full z-10;
}
/* END: Car Card styles */
/* START: Car Details styles */
.car-details__dialog-panel {
@apply relative w-full max-w-lg max-h-[90vh] overflow-y-auto transform rounded-2xl bg-white p-6 text-left shadow-xl transition-all flex flex-col gap-5;
}
.car-details__close-btn {
@apply absolute top-2 right-2 z-10 w-fit p-2 bg-primary-blue-100 rounded-full;
}
.car-details__main-image {
@apply relative w-full h-40 bg-pattern bg-cover bg-center rounded-lg;
}
/* END: Car Details styles */
/* START: Custom Filter styles */
.custom-filter__btn {
@apply relative w-full min-w-[127px] flex justify-between items-center cursor-default rounded-lg bg-white py-2 px-3 text-left shadow-md sm:text-sm border;
}
.custom-filter__options {
@apply absolute mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm;
}
/* END: Custom Filter styles */
/* START: Footer styles */
.footer {
@apply flex flex-col text-black-100 mt-5 border-t border-gray-100;
}
.footer__links-container {
@apply flex max-md:flex-col flex-wrap justify-between gap-5 sm:px-16 px-6 py-10;
}
.footer__rights {
@apply flex flex-col justify-start items-start gap-6;
}
.footer__links {
@apply flex-1 w-full flex md:justify-end flex-wrap max-md:mt-10 gap-20;
}
.footer__link {
@apply flex flex-col gap-6 text-base min-w-[170px];
}
.footer__copyrights {
@apply flex justify-between items-center flex-wrap mt-10 border-t border-gray-100 sm:px-16 px-6 py-10;
}
.footer__copyrights-link {
@apply flex-1 flex sm:justify-end justify-center max-sm:mt-4 gap-10;
}
/* END: Footer styles */
/* START: searchbar styles */
.searchbar {
@apply flex items-center justify-start max-sm:flex-col w-full relative max-sm:gap-4 max-w-3xl;
}
.searchbar__item {
@apply flex-1 max-sm:w-full flex justify-start items-center relative;
}
.searchbar__input {
@apply w-full h-[48px] pl-12 p-4 bg-light-white rounded-r-full max-sm:rounded-full outline-none cursor-pointer text-sm;
}
/* END: searchbar styles */
/* START: search manufacturer styles */
.search-manufacturer {
@apply flex-1 max-sm:w-full flex justify-start items-center;
}
.search-manufacturer__input {
@apply w-full h-[48px] pl-12 p-4 rounded-l-full max-sm:rounded-full bg-light-white outline-none cursor-pointer text-sm;
}
.search-manufacturer__options {
@apply absolute mt-1 max-h-60 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm;
}
.search-manufacturer__option {
@apply cursor-default select-none py-2 pl-10 pr-4;
}
/* END: search manufacturer styles */
tailwind.config.ts
import type { Config } from "tailwindcss";
const config: Config = {
content: [
"./app/**/*.{js,ts,jsx,tsx,mdx}",
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}",
],
mode: "jit",
theme: {
extend: {
fontFamily: {
inter: ["Inter", "sans-serif"],
},
colors: {
"black-100": "#2B2C35",
"primary-blue": {
DEFAULT: "#2B59FF",
100: "#F5F8FF",
},
"secondary-orange": "#f79761",
"light-white": {
DEFAULT: "rgba(59,60,152,0.03)",
100: "rgba(59,60,152,0.02)",
},
grey: "#747A88",
},
backgroundImage: {
'pattern': "url('/pattern.png')",
'hero-bg': "url('/hero-bg.png')"
}
},
},
plugins: [],
};
export default config;
package.json
{
"name": "nextjs",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"next": "14.1.3",
"react": "^18",
"react-dom": "^18"
},
"devDependencies": {
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"autoprefixer": "^10.4.18",
"postcss": "^8",
"tailwindcss": "^3.3.0",
"typescript": "^5"
}
}
It seems like the components you mention are in a component
folder? As implied by:
import { Hero } from '@/component/template/index'
If so, you'd need to add this directory to your content
array in the tailwind.config.ts
. For example, if this component
folder is in the root of your project, you'd do:
import type { Config } from "tailwindcss";
const config: Config = {
content: [
"./app/**/*.{js,ts,jsx,tsx,mdx}",
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}",
"./component/**/*.{js,ts,jsx,tsx,mdx}",
],
Or as another example, if the folder is at src/component
, then it would be:
import type { Config } from "tailwindcss";
const config: Config = {
content: [
"./app/**/*.{js,ts,jsx,tsx,mdx}",
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}",
"./src/component/**/*.{js,ts,jsx,tsx,mdx}",
],
For further reading, consider the Tailwind documentation on the content
configuration.