admin-panel-lib
v1.0.0
Published
Libreria React TypeScript per pannelli di amministrazione con componenti riutilizzabili
Downloads
19
Maintainers
Readme
Admin Panel Library
Libreria React TypeScript per pannelli di amministrazione con componenti riutilizzabili, layout professionale e integrazione completa con Material-UI.
🚀 Caratteristiche
- Layout Professionale: Sidebar responsiva, topbar con user info, area contenuto dinamica
- Pagine Predefinite: Utenti, Gruppi e Ruoli già implementati
- Routing Dinamico: Sistema di navigazione configurabile
- Espandibilità: Aggiungi facilmente pagine personalizzate
- Material-UI: Design system moderno e accessibile
- TypeScript: Tipizzazione completa per una migliore developer experience
- Responsive: Ottimizzato per desktop, tablet e mobile
📦 Installazione
npm install admin-panel-lib
# oppure
pnpm add admin-panel-lib
# oppure
yarn add admin-panel-libDipendenze peer
Assicurati di avere installato anche le dipendenze peer:
npm install react react-dom @mui/material @emotion/react @emotion/styled @mui/icons-material🎯 Utilizzo Base
import React from "react";
import { AdminApp } from "admin-panel-lib";
function App() {
return (
<AdminApp
appTitle="Il Mio Admin Panel"
userInfo={{
name: "Mario Rossi",
email: "[email protected]",
}}
/>
);
}
export default App;🔧 Configurazione Avanzata
Aggiungere Pagine Personalizzate
import React from "react";
import { AdminApp, RouteConfig, DashboardIcon } from "admin-panel-lib";
import { Box, Typography } from "@mui/material";
// Componente personalizzato
const MiaDashboard: React.FC = () => {
return (
<Box>
<Typography variant="h4">La Mia Dashboard</Typography>
<Typography>Contenuto personalizzato qui...</Typography>
</Box>
);
};
// Configurazione route personalizzate
const customRoutes: RouteConfig[] = [
{
path: "/dashboard",
label: "Dashboard",
icon: <DashboardIcon />,
component: MiaDashboard,
},
];
function App() {
return (
<AdminApp
appTitle="Admin Panel Personalizzato"
customRoutes={customRoutes}
userInfo={{
name: "Mario Rossi",
email: "[email protected]",
avatar: "https://example.com/avatar.jpg",
}}
/>
);
}Personalizzazione con Logo
import { AdminApp } from "admin-panel-lib";
import { Avatar } from "@mui/material";
function App() {
return (
<AdminApp
appTitle="La Mia Azienda"
logo={<Avatar src="/logo.png" />}
userInfo={{
name: "Mario Rossi",
email: "[email protected]",
}}
/>
);
}📋 API Reference
AdminApp Props
| Prop | Tipo | Default | Descrizione |
| -------------- | --------------- | ------------- | --------------------------------------------- |
| appTitle | string | Richiesto | Titolo dell'applicazione |
| customRoutes | RouteConfig[] | [] | Route personalizzate aggiuntive |
| logo | ReactNode | undefined | Logo da mostrare nella sidebar |
| userInfo | UserInfo | undefined | Informazioni utente per topbar |
| children | ReactNode | undefined | Contenuto personalizzato al posto del routing |
RouteConfig
interface RouteConfig {
path: string; // Path della route (es. '/dashboard')
label: string; // Etichetta mostrata nella sidebar
icon: ReactNode; // Icona della voce di menu
component: ComponentType<any>; // Componente React da renderizzare
}UserInfo
interface UserInfo {
name: string; // Nome dell'utente
email?: string; // Email (opzionale)
avatar?: string; // URL avatar (opzionale)
}🎨 Icone Disponibili
La libreria re-esporta le icone più comuni di Material-UI:
import {
PeopleIcon,
GroupIcon,
SecurityIcon,
DashboardIcon,
SettingsIcon,
AnalyticsIcon,
NotificationsIcon,
HelpIcon,
} from "admin-panel-lib";📄 Pagine Predefinite
La libreria include tre pagine predefinite:
👥 Pagina Utenti
- Lista utenti con avatar, nome, email e ruolo
- Statistiche utenti per ruolo
- Design responsive con cards
👨👩👧👦 Pagina Gruppi
- Grid di gruppi con descrizione e conteggio membri
- Cards interattive con hover effects
- Statistiche aggregate
🔐 Pagina Ruoli
- Accordion espandibili per ogni ruolo
- Visualizzazione permessi con icone colorate
- Sistema di categorizzazione permessi
🎯 Esempi Completi
Dashboard con Statistiche
import React from "react";
import { AdminApp, RouteConfig, DashboardIcon } from "admin-panel-lib";
import { Box, Typography, Card, CardContent, Grid } from "@mui/material";
const Dashboard: React.FC = () => {
return (
<Box>
<Typography variant="h4" gutterBottom>
Dashboard Aziendale
</Typography>
<Grid container spacing={3}>
<Grid item xs={12} sm={6} md={3}>
<Card>
<CardContent>
<Typography variant="h6">Vendite Oggi</Typography>
<Typography variant="h3" color="primary">
€12,500
</Typography>
</CardContent>
</Card>
</Grid>
{/* Altri cards... */}
</Grid>
</Box>
);
};
const routes: RouteConfig[] = [
{
path: "/dashboard",
label: "Dashboard",
icon: <DashboardIcon />,
component: Dashboard,
},
];
function App() {
return (
<AdminApp
appTitle="Admin Aziendale"
customRoutes={routes}
userInfo={{
name: "CEO Mario Rossi",
email: "[email protected]",
}}
/>
);
}🛠️ Sviluppo e Testing
Eseguire la Demo
# Clona il repository
git clone <repo-url>
cd admin-panel-lib
# Installa dipendenze
pnpm install
# Builda la libreria
pnpm run build
# Vai nell'example e installa dipendenze
cd example
pnpm install
# Avvia la demo
pnpm run devBuild della Libreria
# Build della libreria
pnpm run build
# Watch mode durante sviluppo
pnpm run dev
# Type checking
pnpm run typecheck📂 Struttura del Progetto
admin-panel-lib/
├── src/
│ ├── components/
│ │ ├── AdminApp.tsx # Componente principale
│ │ └── AppShell.tsx # Layout shell
│ ├── pages/
│ │ ├── UsersPage.tsx # Pagina utenti
│ │ ├── GroupsPage.tsx # Pagina gruppi
│ │ └── RolesPage.tsx # Pagina ruoli
│ ├── types/
│ │ └── index.ts # Tipi TypeScript
│ └── index.ts # Entry point libreria
├── example/
│ └── src/
│ └── App.tsx # Demo applicazione
├── dist/ # Build output
└── README.md🤝 Contribuire
- Fork del repository
- Crea un branch per la feature (
git checkout -b feature/AmazingFeature) - Commit delle modifiche (
git commit -m 'Add some AmazingFeature') - Push del branch (
git push origin feature/AmazingFeature) - Apri una Pull Request
📝 Licenza
MIT License - vedi il file LICENSE per i dettagli.
🐛 Bug Reports
Hai trovato un bug? Apri una issue con:
- Descrizione del problema
- Passi per riprodurlo
- Comportamento atteso vs attuale
- Screenshots se applicabili
- Versione della libreria
💡 Feature Requests
Hai un'idea per una nuova feature? Apri una discussion per discuterne!
Fatto con ❤️ per sviluppatori che vogliono creare admin panel professionali velocemente.
