Pezza is a lightweight, framework-agnostic Tailwind CSS theme focused on a simple light/dark design system and reusable component utilities (buttons, cards, forms, alerts). This README explains intent, quick setup, and how to integrate the compiled CSS in React, Angular, Vue or plain HTML projects.
- Provide a ready-to-use styling system that ships as compiled CSS (
css/theme.css). - Keep behavior minimal: theme toggling is done by toggling the
darkclass on thehtmlelement (no framework dependency). - Allow projects to adopt the design tokens and utilities quickly (copy
tailwind.config.jsfor deeper integration).
- Install (if you want to build locally):
npm install
npm run build # generates css/theme.css from css/input.css- Serve the folder for the demo:
npm run dev # starts http-server on port 8000- Open
http://localhost:8000.
Note: css/theme.css is committed after build in this repo; you can use it directly without running the build step.
Link the compiled stylesheet in your HTML head:
<link rel="stylesheet" href="/css/theme.css">Toggle dark mode in JavaScript:
// toggle
document.documentElement.classList.toggle('dark')
// persist
localStorage.setItem('pezza-theme', document.documentElement.classList.contains('dark') ? 'dark' : 'light')Recommended: read js/theme.js (demo) for a small, accessible theme switcher implementation.
- Copy
css/theme.cssinto your app's public folder (or reference it from the repo). - Import in your root component or reference it in
index.html:
import '../path/to/theme.css'; // or put <link> in public/index.html- Toggle theme:
function toggleTheme() {
document.documentElement.classList.toggle('dark')
}
// usage
<button onClick={toggleTheme} className="btn-primary">Toggle Theme</button>Add the compiled CSS to angular.json styles array or import it in styles.scss:
"styles": [
"src/styles.scss",
"src/assets/theme/css/theme.css"
]Then use the same document.documentElement.classList.toggle('dark') approach to switch themes.
Import the CSS in main.js or include it in index.html:
import '@/assets/theme/css/theme.css'Toggle theme the same way (document.documentElement.classList.toggle('dark')).
- Semantic utility classes:
bg-light-bg,bg-light-surface,bg-dark-bg,text-light-text,text-dark-text, etc. - Component utilities:
.btn-primary,.btn-secondary,.card-hover,.input-field,.alert,.badge. - Dark mode is implemented by CSS variables and Tailwind utilities; toggling
html.darkflips variables and the Tailwinddark:variants.
- For deep integration (allowing your build to tree-shake unused classes), copy and extend
tailwind.config.jsinto your project and run Tailwind with your content paths. - Edit color tokens in
tailwind.config.jsand rebuild withnpm run build.
- The repo provides
npm run watch(Tailwind CLI watch) andnpm run build. - If you prefer a CDN for quick demos, include
https://cdn.tailwindcss.comin development only β not recommended for production.
MIT
If you'd like, I can:
- add a tiny
README-EXAMPLE.mdwith copy-paste snippets for each framework. - or produce short sample files showing imports for CRA/Vite/Angular CLI/Vue CLIβtell me which one you want next.
A modern, clean, reusable Tailwind CSS theme for Pezza Pizzeria. Framework-agnostic design works with React, Angular, Vue, and vanilla JavaScript.
- β Light & Dark Mode with theme persistence
- β Responsive design (mobile, tablet, desktop)
- β Primary color: #dc3348 | Secondary: #fec844
- β Font pairing: Cookie (display) + Belleza (body)
- β Production-ready Tailwind CSS setup
- β Clean, semantic HTML
- β Accessible form controls
npm install
npm run build
npm run devVisit http://localhost:8000
theme/
βββ index.html # Main demo page
βββ email-template.html # Email template
βββ css/
β βββ input.css # Tailwind @directives
β βββ theme.css # Compiled output (generated)
βββ js/
β βββ theme.js # Dark mode toggle
β βββ index.js # Form handling
βββ images/ # Pizza images, logo
βββ videos/ # Hero video
βββ tailwind.config.js # Tailwind configuration
βββ package.json
npm run build- Generate CSS from Tailwindnpm run watch- Watch for CSS changesnpm run dev- Start dev servernpm run serve- Start HTTP server
The theme uses a Tailwind CLI build. Before first use or after CSS changes:
npm run buildThis generates css/theme.css from css/input.css.
import './theme/css/theme.css';
function App() {
return (
<div className="section bg-light-bg dark:bg-dark-bg">
<h1 className="section-title">Welcome</h1>
<button className="btn-primary">Order Now</button>
</div>
);
}// app.component.ts
export class AppComponent {
isDarkMode = false;
toggleTheme() {
document.documentElement.classList.toggle('dark');
this.isDarkMode = !this.isDarkMode;
}
}<!-- app.component.html -->
<div class="section bg-light-bg dark:bg-dark-bg">
<h1 class="section-title">Welcome</h1>
<button class="btn-primary" (click)="toggleTheme()">Toggle Theme</button>
</div>Include in angular.json:
"styles": [
"src/styles.css",
"src/theme/css/theme.css"
]<template>
<div class="section bg-light-bg dark:bg-dark-bg">
<h1 class="section-title">Welcome</h1>
<button class="btn-primary" @click="toggleTheme">Toggle Theme</button>
</div>
</template>
<script>
export default {
methods: {
toggleTheme() {
document.documentElement.classList.toggle('dark');
}
}
}
</script>
<style>
@import './theme/css/theme.css';
</style>- Primary: #dc3348 (Red)
- Secondary: #fec844 (Gold)
- Light Background: #ffffff
- Dark Background: #202020
- Light Surface: #f9fafb
- Dark Surface: #2a2a2a
.section- Page section with padding.container-responsive- Max-width container.grid-responsive- Responsive grid
.btn-primary/.btn-secondary- Buttons.input-field- Form inputs & textareas.card-hover- Hover card.alert/.alert-success/.alert-danger- Alerts.badge/.badge-primary/.badge-secondary- Badges
.section-title- Large title (Cookie font).section-subtitle- Subtitle text.font-cookie- Cookie font.font-belleza- Belleza font
.fade-in- Fade animation.slide-up- Slide up animation.hidden- Hide element
Automatically detects system preference or uses saved theme. Theme switcher in top-right corner.
Local storage key: pezza-theme
Use email-template.html as a base for email designs. It includes:
- Responsive layout
- Color system integration
- Tailwind utilities support
Edit tailwind.config.js to customize:
- Colors
- Font families
- Breakpoints
- Extended utilities
Then run npm run build to regenerate CSS.
- Modern browsers (Chrome, Firefox, Safari, Edge)
- CSS Grid, Flexbox, CSS Custom Properties
- ES6+ JavaScript
MIT
For an example theme switcher component, see js/theme.js in this repo. The demo includes a small, framework-agnostic switcher that toggles the dark class on the html element.
Import Tailwind CDN in `public/index.html`:
```html
<script src="https://cdn.tailwindcss.com"></script>
- Copy
css/theme.csstosrc/assets/styles/ - Add to
styles.css:
@import 'assets/styles/theme.css';
@import url('https://cdn.tailwindcss.com');- Add ThemeSwitcher component
// main.js
import './styles/theme.css';Then import the ThemeSwitcher component from js/theme.js
--color-primary: #dc3348
--color-secondary: #fec844
/* Light Mode */
--bg-color: #ffffff
--text-color: #1f2937
--input-bg: #ffffff
/* Dark Mode */
--bg-color: #1a1a1a
--text-color: #e5e7eb
--input-bg: #2a2a2a<!-- Buttons -->
<button class="btn-primary">Click Me</button>
<button class="btn-secondary">Secondary</button>
<!-- Form Inputs -->
<input type="text" class="input-field" />
<textarea class="input-field"></textarea>
<!-- Cards -->
<div class="card-hover">Content</div>
<!-- Alerts -->
<div class="alert alert-success">Success!</div>
<div class="alert alert-danger">Error!</div>
<!-- Sections -->
<section class="section bg-light-bg dark:bg-dark-bg">
<h2 class="section-title">Title</h2>
<p class="section-subtitle">Subtitle</p>
</section>Use email-template-new.html with placeholders:
- {{NAME}} - Customer name
- {{ADDRESS}} - Delivery address
- {{PHONE}} - Phone number
- {{EMAIL}} - Email address
βββ index.html # Main demo
βββ email-template-new.html # Email template
βββ theme.json # Theme config
βββ tailwind.config.js # Tailwind setup
βββ css/theme.css # All styles
βββ js/
β βββ theme.js # Dark mode switcher
β βββ index.js # Form handling
βββ images/
β βββ favicon/ # Favicon files
β βββ *.png # Pizza images
βββ videos/
βββ hawaiian-pizza.mp4 # Hero video
- Primary: #dc3348 (Red) - CTA, accents
- Secondary: #fec844 (Gold) - Highlights
- Light BG: #ffffff
- Dark BG: #1a1a1a
- Light Surface: #f9fafb
- Dark Surface: #2a2a2a
β
Light & Dark Mode with system detection
β
Responsive (mobile, tablet, desktop)
β
Video hero with overlay
β
Tailwind CSS (no build needed)
β
Cookie & Belleza fonts
β
Form validation
β
Accessible components
β
Framework-agnostic
For custom components, use:
background-color: var(--bg-color);
color: var(--text-color);
border: 1px solid var(--border-color);Extend your tailwind.config.js with the color palette and fonts from this project.
All .card-hover, .btn-primary, .input-field classes are Tailwind-based and can be copied directly.
MIT - Free to use in any project
<!-- Buttons -->
<button class="btn-primary">Click Me</button>
<!-- Forms -->
<input class="input-field" type="text" placeholder="Name" />
<textarea class="input-field" rows="3"></textarea>
<!-- Cards -->
<div class="card-hover">
<h3>Card Title</h3>
<p>Content</p>
</div>
<!-- Sections -->
<section class="section bg-light-bg dark:bg-dark-bg">
<h2 class="section-title">Title</h2>
<p class="section-subtitle">Subtitle</p>
</section>
<!-- Alerts -->
<div class="alert alert-success">β Success!</div>
<div class="alert alert-danger">β Error!</div>import './css/theme.css'
function App() {
const toggleTheme = () => {
document.documentElement.classList.toggle('dark')
}
return (
<button onClick={toggleTheme} className="btn-primary">
Toggle Theme
</button>
)
}toggleTheme() {
document.documentElement.classList.toggle('dark')
}<button (click)="toggleTheme()" class="btn-primary">
Toggle Theme
</button><button @click="toggleTheme" class="btn-primary">
{{ isDark ? 'βοΈ' : 'π' }}
</button>
<script>
export default {
methods: {
toggleTheme() {
document.documentElement.classList.toggle('dark')
}
}
}
</script><link rel="stylesheet" href="css/theme.css" />
<script src="https://cdn.tailwindcss.com"></script>
<button class="btn-primary">Click Me</button>
<script src="js/theme.js"></script>For detailed setup, see THEME-INTEGRATION.md
Professional email template in email-template-dark.html:
- Responsive design
- Dark theme
- Brand colors
- Order format ready
Detects system preference + saves user choice:
<script src="js/theme.js"></script>// Toggle dark mode
document.documentElement.classList.toggle('dark')
// Enable dark
document.documentElement.classList.add('dark')
// Disable dark
document.documentElement.classList.remove('dark')<!-- Light only -->
<div class="bg-white">Light</div>
<!-- Dark only -->
<div class="dark:bg-gray-900">Dark</div>
<!-- Responsive -->
<div class="bg-white dark:bg-gray-900">Both</div>theme/
βββ css/
β βββ theme.css # Component styles + Tailwind
βββ js/
β βββ theme.js # Theme switcher
β βββ index.js # Form logic
βββ images/
β βββ favicon/ # Favicon files
β βββ hawaiian.png
β βββ pepperoni.png
β βββ regina.png
β βββ margherita.png
βββ videos/
β βββ pizzas.mp4 # Hero video
βββ index.html # Demo page
βββ theme.json # Configuration
βββ tailwind.config.js # Tailwind config
βββ email-template-dark.html # Email template
βββ package.json # Dependencies
βββ THEME-INTEGRATION.md # Integration guides
sm: 640px (mobile)
md: 768px (tablet)
lg: 1024px (desktop)
xl: 1280px (large desktop)
2xl: 1536px (extra large)
Usage:
<div class="text-xl md:text-2xl lg:text-3xl">
Text scales across devices
</div>- Belleza - Primary font (body text, clean & elegant)
- Cookie - Accent font (headings, decorative)
<h1 class="font-cookie text-4xl">Heading</h1>
<p class="font-sans text-base">Body text</p>text-xs: 0.75remtext-sm: 0.875remtext-base: 1remtext-lg: 1.125remtext-xl: 1.25remtext-2xl: 1.5remtext-3xl: 1.875remtext-4xl: 2.25rem
cp -r css your-project/
cp -r js/theme.js your-project/
cp theme.json your-project/
cp tailwind.config.js your-project/Use as template for your Tailwind config:
const theme = require('./theme.json')
module.exports = {
theme: {
colors: theme.colors,
spacing: theme.spacing
}
}- β Chrome/Chromium (latest)
- β Firefox (latest)
- β Safari (latest)
- β Edge (latest)
- β Mobile browsers
MIT - Free to use in commercial and personal projects
Found an issue? Submit a PR!
Made with β€οΈ for beautiful interfaces }, []);
const applyTheme = (theme) => { if (theme === 'dark') { document.documentElement.classList.add('dark'); } else { document.documentElement.classList.remove('dark'); } localStorage.setItem('pezza-theme', theme); };
const toggleTheme = () => { const newTheme = isDark ? 'light' : 'dark'; setIsDark(!isDark); applyTheme(newTheme); };
return ( <ThemeContext.Provider value={{ isDark, toggleTheme, config: themeConfig }}> {children} </ThemeContext.Provider> ); }
#### 5. Use in Components
```javascript
import { ThemeContext } from '../context/ThemeContext';
import { useContext } from 'react';
export function MyComponent() {
const { isDark, toggleTheme, config } = useContext(ThemeContext);
return (
<div className="bg-light-bg dark:bg-dark-bg">
<button
onClick={toggleTheme}
className="btn-primary"
>
{isDark ? 'βοΈ' : 'π'} Toggle
</button>
</div>
);
}
npm install -D tailwindcss
npx tailwindcss init"styles": [
"src/styles.css",
"src/css/theme.css"
]// src/app/services/theme.service.ts
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import themeConfig from '../../config/theme.json';
@Injectable({
providedIn: 'root'
})
export class ThemeService {
private darkMode$ = new BehaviorSubject<boolean>(false);
private storageKey = 'pezza-theme';
constructor() {
this.initTheme();
}
private initTheme() {
const saved = localStorage.getItem(this.storageKey);
const isDark = saved ? saved === 'dark' : window.matchMedia('(prefers-color-scheme: dark)').matches;
this.setTheme(isDark);
}
private setTheme(isDark: boolean) {
if (isDark) {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}
this.darkMode$.next(isDark);
localStorage.setItem(this.storageKey, isDark ? 'dark' : 'light');
}
toggleTheme() {
this.setTheme(!this.darkMode$.value);
}
get isDark$() {
return this.darkMode$.asObservable();
}
get config() {
return themeConfig;
}
}// src/app/components/theme-switcher.component.ts
import { Component } from '@angular/core';
import { ThemeService } from '../services/theme.service';
@Component({
selector: 'app-theme-switcher',
template: `
<div class="theme-switcher">
<button (click)="themeService.toggleTheme()" class="theme-toggle">
{{ (themeService.isDark$ | async) ? 'βοΈ' : 'π' }}
</button>
</div>
`
})
export class ThemeSwitcherComponent {
constructor(public themeService: ThemeService) {}
}npm install -D tailwindcss
npx tailwindcss init// src/composables/useTheme.js
import { ref, onMounted } from 'vue';
import themeConfig from '../config/theme.json';
export function useTheme() {
const isDark = ref(false);
const storageKey = 'pezza-theme';
const setTheme = (dark) => {
if (dark) {
document.documentElement.classList.add('dark');
} else {
document.documentElement.classList.remove('dark');
}
isDark.value = dark;
localStorage.setItem(storageKey, dark ? 'dark' : 'light');
};
const toggleTheme = () => {
setTheme(!isDark.value);
};
onMounted(() => {
const saved = localStorage.getItem(storageKey);
const dark = saved ? saved === 'dark' : window.matchMedia('(prefers-color-scheme: dark)').matches;
setTheme(dark);
});
return {
isDark,
toggleTheme,
config: themeConfig
};
}<template>
<div class="bg-light-bg dark:bg-dark-bg">
<button @click="toggleTheme" class="btn-primary">
{{ isDark ? 'βοΈ' : 'π' }} Toggle
</button>
</div>
</template>
<script setup>
import { useTheme } from '@/composables/useTheme';
const { isDark, toggleTheme } = useTheme();
</script>Located in email-template.html. Features:
- Dark-themed design matching brand colors
- Responsive layout for mobile devices
- Professional order summary section
- Customer information display
- Clean styling without gradients
- Template variables:
{{CUSTOMER_NAME}},{{CUSTOMER_EMAIL}}, etc.
- Copy
email-template.htmlto your email service - Replace
{{VARIABLE_NAME}}with your dynamic content - Test with email clients (Gmail, Outlook, Apple Mail)
Edit theme.json:
{
"colors": {
"primary": {
"500": "#YOUR_COLOR"
},
"secondary": {
"400": "#YOUR_COLOR"
}
}
}Edit tailwind.config.js:
fontFamily: {
sans: ["'Your Font'", "sans-serif"],
cookie: ["'Your Accent Font'", "cursive"]
}Add to css/theme.css:
@layer components {
.my-custom-btn {
@apply px-6 py-3 rounded-lg font-bold transition-all duration-200;
}
}Click the theme switcher (top-right corner) to toggle between light and dark modes. Your preference is saved in localStorage.
npm run dev # or
npx http-server . -p 8000Visit http://localhost:8000 and test on:
- Desktop (1920px)
- Tablet (768px)
- Mobile (375px)
npx tailwindcss -i css/theme.css -o css/theme.min.css --minifyFollow their official build commands - the theme will be bundled automatically.
The theme.json file is your single source of truth for design tokens:
// In React
import themeConfig from './config/theme.json';
// Use colors
const primaryColor = themeConfig.colors.primary[500];
// In Angular
import themeConfig from './config/theme.json';
this.brandColor = themeConfig.colors.primary[500];Found a bug or have a suggestion? Please create an issue or submit a pull request!
MIT Β© 2025 Entelect Incubator
This is the fastest and easiest way to use the theme. Works with all frameworks!
cp theme/css/theme.css your-project/<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>My App</title>
<!-- π Just link the CSS! -->
<link rel="stylesheet" href="path/to/theme.css">
</head>
<body>
<!-- Start using classes immediately -->
<button class="btn btn-primary">Click me</button>
<div class="card">Content</div>
</body>
</html><button class="btn btn-primary">Submit</button>
<button class="btn btn-secondary btn-lg">Large Button</button>
<div class="card card-hover">
<h3 class="text-xl font-bold">Card Title</h3>
<p class="text-gray-600">Card content</p>
</div>
<div class="grid-responsive">
<div>Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
</div>Step 1: Copy theme CSS to public folder
cp path/to/theme.css public/Step 2: Link in public/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>React App</title>
<!-- Link the theme CSS -->
<link rel="stylesheet" href="%PUBLIC_URL%/theme.css">
</head>
<body>
<div id="root"></div>
</body>
</html>Step 3: Use in Components (src/App.js)
export default function App() {
return (
<div className="container-responsive py-16">
<h1 className="text-4xl font-bold text-gray-900 mb-8">Welcome</h1>
<button className="btn btn-primary">Primary Button</button>
<div className="grid-responsive mt-12">
<div className="card">
<h3 className="text-lg font-bold">Card 1</h3>
<p className="text-gray-600">Content</p>
</div>
<div className="card card-hover">
<h3 className="text-lg font-bold">Card 2</h3>
<p className="text-gray-600">Content</p>
</div>
</div>
</div>
);
}Step 1: Copy theme CSS to src/assets
cp path/to/theme.css src/assets/Step 2: Link in src/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Angular App</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Link the theme CSS -->
<link rel="stylesheet" href="assets/theme.css">
</head>
<body>
<app-root></app-root>
</body>
</html>Step 3: Use in Components (src/app/app.component.html)
<div class="container-responsive py-16">
<h1 class="text-4xl font-bold text-gray-900 mb-8">Welcome</h1>
<button class="btn btn-primary">Primary Button</button>
<div class="grid-responsive mt-12">
<div class="card">
<h3 class="text-lg font-bold">Card 1</h3>
<p class="text-gray-600">Content</p>
</div>
<div class="card card-hover">
<h3 class="text-lg font-bold">Card 2</h3>
<p class="text-gray-600">Content</p>
</div>
</div>
</div>Step 1: Copy theme CSS to public
cp path/to/theme.css public/Step 2: Link in index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue App</title>
<!-- Link the theme CSS -->
<link rel="stylesheet" href="/theme.css">
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>Step 3: Use in Components (src/App.vue)
<template>
<div class="container-responsive py-16">
<h1 class="text-4xl font-bold text-gray-900 mb-8">Welcome</h1>
<button class="btn btn-primary">Primary Button</button>
<div class="grid-responsive mt-12">
<div class="card">
<h3 class="text-lg font-bold">Card 1</h3>
<p class="text-gray-600">Content</p>
</div>
<div class="card card-hover">
<h3 class="text-lg font-bold">Card 2</h3>
<p class="text-gray-600">Content</p>
</div>
</div>
</div>
</template>
<script setup>
// No setup needed!
</script>Create index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>My App</title>
<!-- Link the theme CSS -->
<link rel="stylesheet" href="theme.css">
</head>
<body>
<div class="container-responsive py-16">
<h1 class="text-4xl font-bold text-gray-900 mb-8">Welcome</h1>
<button class="btn btn-primary" onclick="handleClick()">Click Me</button>
<div class="grid-responsive mt-12">
<div class="card">
<h3 class="text-lg font-bold">Card 1</h3>
<p class="text-gray-600">Content</p>
</div>
<div class="card card-hover">
<h3 class="text-lg font-bold">Card 2</h3>
<p class="text-gray-600">Content</p>
</div>
</div>
</div>
<script>
function handleClick() {
alert('Button clicked!');
}
</script>
</body>
</html>The theme.json file contains all design tokens:
{
"colors": {
"primary": "#ff6b35",
"secondary": "#004e89"
},
"typography": {
"fontFamily": { "sans": "..." },
"fontSize": { "base": "1rem" }
},
"spacing": {
"md": "1rem",
"lg": "1.5rem"
}
}Edit theme.json colors, then rebuild CSS:
npx tailwindcss -i css/theme.css -o css/theme.cssOr directly edit tailwind.config.js and rebuild.
<button class="btn btn-primary">Primary</button>
<button class="btn btn-secondary">Secondary</button>
<button class="btn btn-success">Success</button>
<button class="btn btn-danger">Danger</button>
<button class="btn btn-sm">Small</button>
<button class="btn btn-lg">Large</button><div class="card">
<h3>Card Title</h3>
<p>Card content here</p>
</div>
<div class="card card-hover">
Hover effects enabled
</div><label class="label">Email</label>
<input class="input-field" type="email" placeholder="you@example.com" />
<textarea class="input-field" rows="4"></textarea><div class="alert alert-success">β Success message</div>
<div class="alert alert-danger">β Error message</div>
<div class="alert alert-warning">β Warning message</div>
<div class="alert alert-info">βΉ Info message</div><!-- Responsive container -->
<div class="container-responsive">Content</div>
<!-- Responsive grid (1 col on mobile, 3 cols on desktop) -->
<div class="grid-responsive">
<div>Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
</div>A professional email template with theme colors is included in email-template.html:
Features:
- β Responsive design (works in all email clients)
- β Theme colors (orange gradient header)
- β Clean, professional layout
- β Call-to-action button
- β Order confirmation style
- β Preformatted for HTML emails
How to use:
- Open
email-template.html - Replace
%name%with customer name variable - Replace
%pizzas%with order items list - Send via email service
Example usage:
// Node.js with nodemailer
const template = fs.readFileSync('email-template.html', 'utf8');
const html = template
.replace('%name%', customer.name)
.replace('%pizzas%', orderItems.join(', '));
await transporter.sendMail({
to: customer.email,
subject: 'Order Confirmation',
html: html
});<button class="btn btn-primary">Primary</button>
<button class="btn btn-secondary">Secondary</button>
<button class="btn btn-success">Success</button>
<button class="btn btn-danger">Danger</button>
<button class="btn btn-sm">Small</button>
<button class="btn btn-lg">Large</button>
<button class="btn btn-outline">Outline</button><div class="card">
<h3>Card Title</h3>
<p>Card content here</p>
</div>
<div class="card card-hover">
Hover effects enabled
</div><label class="label">Email</label>
<input class="input-field" type="email" placeholder="you@example.com" />
<textarea class="input-field" rows="4"></textarea><div class="alert alert-success">β Success message</div>
<div class="alert alert-danger">β Error message</div>
<div class="alert alert-warning">β Warning message</div>
<div class="alert alert-info">βΉ Info message</div><!-- Responsive container -->
<div class="container-responsive">Content</div>
<!-- Responsive grid (1 col on mobile, 3 cols on desktop) -->
<div class="grid-responsive">
<div>Item 1</div>
<div>Item 2</div>
<div>Item 3</div>
</div>npm install -D tailwindcss postcss autoprefixer
npx tailwindcss initnpx tailwindcss -i css/theme.css -o css/theme.css --watchnpx tailwindcss -i css/theme.css -o css/theme.css --minifyThis theme leverages Tailwind's utility classes:
<!-- Spacing -->
<div class="p-4 m-2 mb-8">Padding & margin</div>
<!-- Typography -->
<h1 class="text-4xl font-bold text-gray-900">Heading</h1>
<p class="text-sm text-gray-600">Small text</p>
<!-- Colors -->
<div class="bg-orange-500 text-white">Colored box</div>
<!-- Responsive -->
<div class="w-full md:w-1/2 lg:w-1/3">Responsive width</div>
<!-- Hover, Focus, etc -->
<button class="hover:bg-orange-600 focus:ring-2">Interactive</button>See Tailwind Docs for complete reference.
Dark mode is automatic via CSS media queries. Add to HTML:
<html class="dark">Or use browser/system preference (default).
-
Copy theme files:
cp theme.json tailwind.config.js css/theme.css your-project/
-
Link in HTML:
<link rel="stylesheet" href="/path/to/theme.css" />
-
Customize colors in
theme.jsonand rebuild if needed. -
Use the CSS classes - they work the same everywhere!
See index.html for a complete working example with forms, grids, and responsive design.
- Use semantic HTML with descriptive class names
- Leverage Tailwind utilities for layout
- Use custom
.btn,.card,.input-fieldclasses for consistency - Refer to
theme.jsonfor approved colors and spacing - Test on mobile and desktop
- Minify CSS for production
This theme is part of the Incubator project.
Version: 2.0.0 | Built with: Tailwind CSS 3+ | Framework: Agnostic