Passa al contenuto principale

Frontend — Catalogo componenti (Atomic Design)

I componenti seguono il pattern Atomic Design organizzato in quattro livelli: Atoms → Molecules → Organisms → Pages.

src/components/
├── atoms/ # Elementi base, nessuna dipendenza da altri componenti interni
├── molecules/ # Combinazioni di atoms con logica specifica
├── organisms/ # Blocchi UI complessi, possono contenere state e side-effect
└── pages/ # Route-level components, una per schermata applicativa

Atoms

Componenti elementari e riutilizzabili. Non contengono logica di business.

atoms/base/buttons/

ComponenteDescrizione
BaseButtonButton con varianti (solid, outline, ghost). Base per tutti i button del progetto.
IconButtonButton icona-only.
UploadButtonButton che apre un file picker.

atoms/form/

ComponenteDescrizione
TextInputInput testo con label e helper text.
NumberInputInput numerico con validazione min/max.
SelectInputDropdown select.
CheckboxCheckbox con label.
BadgeBadge visivo (count, status).
ChipChip selezionabile o removibile.
FormLabelLabel per elemento form.
FormControlWrapper form con stato error/disabled.
VisuallyHiddenInputInput nascosto accessibile (per file upload).

atoms/typography/

ComponenteDescrizione
TitleHeading configurabile h1–h6.
SubtitleSottotitolo.
CaptionTesto piccolo/secondario.
BodyTextParagrafo body.
CodeTesto inline in stile codice.

atoms/icon/

ComponenteDescrizione
AppIconWrapper Iconify. Accetta qualsiasi icon set (mdi:*, tabler:*, ecc.).
AppImageWrapper <img> con fallback e lazy loading.

atoms/media/

ComponenteDescrizione
LogoLogo applicazione.
StatusAvatarAvatar con indicatore di stato colorato.
AppVideoPlayer video.

atoms/layout/

ComponenteDescrizione
AnchorLinkContainerWrapper per link con anchor id (usato dallo ScrollSpy).
CardHeaderActionAzioni allineate nell'header di una card MUI.

atoms/feedback/

ComponenteDescrizione
SpinnerLoading spinner circolare.

Molecules

Combinazioni di atoms con logica specifica. Possono avere stato locale.

molecules/inputs/

ComponenteDescrizione
ColorPickerSelettore colore.
DateRangePickerSelezione intervallo date (Day.js + MUI X).
PasswordInputInput password con toggle show/hide.
PhoneInputInput telefono con formattazione e prefisso paese.
EmojiPickerSelettore emoji.
CountrySelectDropdown con flag paese (react-country-flag).
DashboardSelectMenuMenu select per item dashboard.

molecules/charts/

ComponenteDescrizione
EChartsWrapper Apache ECharts.
ChartLegendLegenda grafico riutilizzabile.

molecules/content/

ComponenteDescrizione
SectionHeaderHeader sezione con titolo, sottotitolo e azioni.
CodeBlockBlocco codice con syntax highlighting.
LiveProviderProvider per live code editor.
TextResolverHelpModalModal con documentazione dei placeholder [[...]] supportati dal textResolver.

molecules/navigation/

ComponenteDescrizione
DashboardMenuMenu laterale sidebar del dashboard con supporto nesting.
UserMenuDropdown menu utente (logout, profilo).
ScrollSpyNavigation che evidenzia automaticamente la voce corrispondente alla sezione visibile.
ScrollSpyNavItemSingola voce dello ScrollSpy.
ScrollSpyContentContenitore sezione per ScrollSpy.

molecules/loading/

ComponenteDescrizione
PageLoaderLoader a schermo intero per transizioni di pagina.
DefaultLoaderLoader standard inline.
SplashSplash screen all'avvio dell'app.

molecules/feedback/

ComponenteDescrizione
SnackbarIconSnackbar con icona colorata per feedback azioni.
SnackbarCloseButtonBottone di chiusura per snackbar.

molecules/pagination/

ComponenteDescrizione
TableLabelDisplayedRowsEtichetta "N–M di tot" per tabelle MUI.
CustomTablePaginationActionAzioni paginazione personalizzate (prima, precedente, prossima, ultima).

molecules/upload/

ComponenteDescrizione
FileDropZoneArea drag-and-drop per upload file (react-dropzone).
FileDropBoxBox contenitore drop zone.
FilePreviewAnteprima file caricato.

molecules/microservice/

Card riutilizzabili per la pagina di dettaglio di ogni microservizio:

ComponenteDescrizione
MicroserviceGeneralTabTab info generali (release, health, versione).
MicroserviceCommunicationChannelsCardCard per gestire i canali Redis del microservizio.
MicroserviceDataProviderCardCard per il data provider configurabile.
MicroserviceDbSettingsCardCard impostazioni DB logger.
MicroserviceIbkrBridgeCardCard specifica IBKR Bridge.
MicroserviceLogsCardCard log viewer del microservizio.

molecules/settings/

Pannello impostazioni UI (tema, direzione testo, layout nav):

ComponenteDescrizione
ThemeModeToggleTabToggle dark/light mode.
TextDirectionPanelSelezione LTR/RTL.
SidenavShapePanelForma sidenav (rounded, flat).
TopnavShapePanelForma top nav.
NavColorPanelColore navigation.
SettingsItemItem singolo nel pannello settings.
SettingPanelTogglerBottone toggle apertura pannello.
SettingsPanelRadioGroupRadio group nel pannello settings.

molecules/layout/

ComponenteDescrizione
SimpleBarScrollbar custom stilizzata.
VibrantBackgroundBackground con effetto vibrante/gradiente.

molecules/styled/

Componenti MUI pre-stilizzati con Emotion:

ComponenteDescrizione
OutlinedBadgeBadge con stile outlined.
StyledChipChip con varianti custom.
StyledFormControlFormControl con spacing predefinito.

molecules/media/

ComponenteDescrizione
LightboxVisualizzatore immagine a schermo intero.
SwiperSlider/carousel.

molecules/calendar/

ComponenteDescrizione
FullCalendarCalendario interattivo.

Organisms

Blocchi UI complessi con logica e side-effect. Combinano molecules e contengono spesso chiamate API o accesso al context.

ComponentePathDescrizione
AuthGuardorganisms/auth/HOC che redirige a login se l'utente non è autenticato.
GuestGuardorganisms/auth/HOC che redirige alla dashboard se l'utente è già loggato.
SettingsPanelorganisms/settings/Pannello laterale completo per le impostazioni UI (tema, layout).
SvelteGanttChartorganisms/gantt/Gantt chart per la visualizzazione temporale dei job scheduler.
Mapboxorganisms/map/Mappa interattiva Mapbox.

Pages

Componenti route-level. Ogni Page corrisponde a una schermata dell'app. Contengono tutta la logica di pagina (fetch dati, stato locale, composizione di organisms/molecules).

Vedi la documentazione completa in Pagine e sezioni applicative.