laif-ds
Version:
Design System di Laif con componenti React basati su principi di Atomic Design
99 lines (77 loc) • 2.95 kB
Markdown
npm login
npm whoami (verifica se sei loggato con accoutn corretto)
yarn build (farà partire build per tailwindv3 e tailwindv4)
npm publish --access public
## INSTALL:
npm i @laif/ds
## HOW IT WORKS
Per vedere i componenti con storybook:
```
yarn storybook
```
Il comando esegue due operazioni in sequenza: prima compila il CSS con tailwindcss v4 salvandolo in un file output.css, poi avvia Storybook che utilizza questo file CSS precompilato.
Questo approccio è necessario con Tailwind CSS v4 perché, a differenza delle versioni precedenti, v4 utilizza un'architettura "zero-runtime" che non si integra più direttamente con Storybook. La generazione separata del CSS è quindi la soluzione raccomandata per utilizzare Tailwind v4 con Storybook.
## COME FUNZIONANO LE STORIES
Le stories in Storybook sono il modo in cui documentiamo e testiamo visivamente i nostri componenti. Ogni story rappresenta uno stato specifico di un componente.
### Struttura di una Story
Una story è definita in un file con estensione `.stories.tsx` (o `.stories.jsx` per JavaScript) e segue questa struttura:
```tsx
// button.stories.tsx
import type { Meta, StoryObj } from "@storybook/react";
import { Button } from "../ui/button";
// Metadati del componente
const meta = {
title: "UI/Button", // Categoria/Nome nella sidebar di Storybook
component: Button, // Il componente da documentare
parameters: {
layout: "centered", // Layout della preview
},
tags: ["autodocs"], // Genera automaticamente la documentazione
argTypes: {
// Definizione dei controlli per i props
variant: {
control: "select",
options: [
"default",
"destructive",
"outline",
"secondary",
"ghost",
"link",
],
description: "La variante visiva del bottone",
},
// Altri argTypes...
},
} satisfies Meta<typeof Button>;
export default meta;
type Story = StoryObj<typeof meta>;
// Definizione delle singole stories
export const Default: Story = {
args: {
children: "Button",
variant: "default",
size: "default",
},
};
export const Secondary: Story = {
args: {
children: "Button",
variant: "secondary",
size: "default",
},
};
// Altre stories...
```
1. Crea un nuovo file nella directory `src/components/stories/` con nome `nome-componente.stories.tsx`
2. Importa il componente e le dipendenze necessarie
3. Definisci i metadati con `const meta = {...}`
4. Esporta i metadati con `export default meta`
5. Definisci il tipo Story con `type Story = StoryObj<typeof meta>`
6. Crea le diverse varianti del componente esportando costanti di tipo Story
Qui è definito il tema base di laif. Sovrascrivibile nel progetto che lo implementa.
Per farlo basta cambiare i valori delle variabili.
Di seguito sono importati 3 temi per demostrazione generati con (https://tweakcn.com/editor/theme)