frontend

Design System con Tailwind e shadcn/ui

La guida definitiva per creare un design system coerente e mantenibile utilizzando Tailwind CSS e i componenti shadcn/ui

di Gerardo Nastri
January 10, 2025
10 min lettura
Modern interior design

Design System con Tailwind CSS e shadcn/ui: Guida Completa

Un Design System ben strutturato è fondamentale per garantire coerenza visiva e migliorare la velocità di sviluppo delle interfacce utente. In questa guida esploreremo come creare un Design System utilizzando Tailwind CSS e shadcn/ui, due strumenti moderni e flessibili che semplificano la progettazione e lo sviluppo front-end.


1. Cosa sono Tailwind CSS e shadcn/ui?

  • Tailwind CSS Un framework CSS basato su utility che consente di scrivere stili direttamente nel markup, riducendo il bisogno di scrivere CSS personalizzato. È noto per la sua velocità e personalizzabilità.

  • shadcn/ui Una libreria di componenti pronta all'uso, costruita con Tailwind CSS e pensata per adattarsi facilmente al tuo progetto. shadcn/ui ti permette di iniziare rapidamente, mantenendo la flessibilità necessaria per modificare ogni dettaglio.


2. Perché usare un Design System con Tailwind e shadcn/ui?

  • Coerenza

    : Garantisce uno stile uniforme in tutte le parti dell'applicazione.

  • Modularità

    : Componenti riutilizzabili che migliorano la produttività.

  • Customizzazione

    : Tailwind CSS e shadcn/ui sono altamente configurabili, consentendo di adattarsi alle esigenze specifiche del progetto.

  • Manutenzione semplificata

    : Tutti i componenti seguono un’unica base di design.


3. Come iniziare

Prerequisiti

  • Conoscenze di base di React, JavaScript e CSS.

  • Ambiente configurato con Node.js e un gestore pacchetti come npm o yarn.

  • Un progetto React o Next.js.

Step 1: Installa Tailwind CSS

Segui la guida ufficiale di Tailwind CSS per configurare il framework:

bashCopia codicenpx create-next-app@latest my-design-system cd my-design-system npm install -D tailwindcss postcss autoprefixer npx tailwindcss init

Aggiorna il file tailwind.config.js con le tue personalizzazioni:

javascriptCopia codicemodule.exports = { content: ["./src/**/*.{js,ts,jsx,tsx}"], theme: { extend: { colors: { primary: "#1E3A8A", secondary: "#6EE7B7", }, }, }, plugins: [], };

Step 2: Configura shadcn/ui

Installa shadcn/ui nel tuo progetto:

bashCopia codicenpm install shadcn-ui

Aggiungi i componenti di shadcn/ui che desideri utilizzare:

bashCopia codicenpx shadcn add button card input


4. Strutturare il tuo Design System

File Structure

Crea una struttura organizzata per il tuo progetto:

cssCopia codicesrc/ ├── components/ │ ├── ui/ │ │ ├── Button.tsx │ │ ├── Card.tsx │ │ └── Input.tsx ├── styles/ │ ├── globals.css │ └── tailwind.css

Personalizza i Componenti

I componenti di shadcn/ui sono personalizzabili grazie a Tailwind CSS. Ecco un esempio per il componente Button:

tsxCopia codiceimport React from "react"; import { cn } from "@/lib/utils"; const Button = ({ className, ...props }) => { return ( <button className={cn( "px-4 py-2 bg-primary text-white rounded hover:bg-primary-dark transition", className )} {...props} /> ); }; export default Button;

Aggiungi Token di Design

Puoi utilizzare le variabili definite in tailwind.config.js per creare token di design (colori, spaziature, tipografia):

javascriptCopia codicetheme: { extend: { colors: { primary: "#1E3A8A", secondary: "#6EE7B7", }, spacing: { 128: "32rem", }, fontFamily: { sans: ["Inter", "sans-serif"], }, }, }


5. Creazione dei Componenti Principali

Button

tsxCopia codiceimport React from "react"; const Button = ({ children, variant = "primary", ...props }) => { const baseStyles = "px-4 py-2 font-semibold rounded transition duration-200 ease-in-out"; const variants = { primary: "bg-primary text-white hover:bg-primary-dark", secondary: "bg-secondary text-black hover:bg-secondary-dark", }; return ( <button className={`${baseStyles} ${variants[variant]}`} {...props}> {children} </button> ); }; export default Button;

Card

tsxCopia codiceimport React from "react"; const Card = ({ children, className }) => { return ( <div className={`p-6 shadow-md rounded bg-white ${className}`}> {children} </div> ); }; export default Card;


6. Implementazione di una UI Consistente

Utilizza i componenti creati per costruire interfacce utente coerenti. Esempio:

tsxCopia codiceimport React from "react"; import Button from "@/components/ui/Button"; import Card from "@/components/ui/Card"; const App = () => { return ( <div className="container mx-auto p-8"> <Card> <h2 className="text-xl font-bold mb-4">Benvenuto nel nostro blog</h2> <p className="text-gray-600 mb-4"> Esplora le ultime tendenze nello sviluppo web. </p> <Button variant="primary">Leggi di più</Button> </Card> </div> ); }; export default App;


7. Best Practices

  1. Documenta il Design System

    : Usa strumenti come Storybook per documentare i componenti.

  2. Mantieni la modularità

    : Organizza i componenti per evitare ridondanze.

  3. Aggiorna regolarmente

    : Adatta il Design System alle nuove esigenze del progetto.


Conclusione

Creare un Design System con Tailwind CSS e shadcn/ui è un approccio moderno ed efficace per migliorare la coerenza e la velocità di sviluppo. Grazie alla loro flessibilità, puoi adattare ogni componente alle tue esigenze, assicurandoti di fornire un'esperienza utente di alta qualità.

Inizia oggi stesso e rivoluziona il modo in cui costruisci le tue interfacce!

Articoli Correlati

Come Scegliere il Pavimento Perfetto

Come Scegliere il Pavimento Perfetto

Una guida completa alla scelta dei materiali e degli stili per il pavimento della tua casa.

02/01/20248 min
Tendenze Design 2024

Tendenze Design 2024

Scopri le ultime tendenze nel design d'interni per il nuovo anno.

01/01/20246 min
L'Arte del Minimalismo

L'Arte del Minimalismo

Come creare spazi eleganti e funzionali con meno elementi.

30/12/20235 min

Resta Aggiornato

Iscriviti alla nostra newsletter per ricevere gli ultimi articoli, tutorial e risorse direttamente nella tua casella di posta.