Dove possono essere utilizzati i componenti front.
I componenti front possono essere renderizzati in due posizioni all’interno di Twenty:- Pannello laterale — I componenti front non headless si aprono nel pannello laterale destro. Questo è il comportamento predefinito quando un componente front viene avviato dal menu comandi.
- Widget (dashboard e pagine dei record) — I componenti front possono essere incorporati come widget all’interno dei layout di pagina. Quando si configura una dashboard o il layout di una pagina record, gli utenti possono aggiungere un widget del componente front.
Esempio di base
Il modo più rapido per vedere in azione un componente front-end è registrarlo come comando. Aggiungere un campocommand con isPinned: true lo fa apparire come pulsante di azione rapida nell’angolo in alto a destra della pagina — nessun layout di pagina necessario:
src/front-components/hello-world.tsx
yarn twenty dev (o eseguendo una volta sola yarn twenty dev --once), l’azione rapida appare nell’angolo in alto a destra della pagina:

Campi di configurazione
Posizionare un componente front-end su una pagina
Oltre ai comandi, puoi incorporare un componente front-end direttamente in una pagina di record aggiungendolo come widget in un layout di pagina. Vedi la sezione definePageLayout per i dettagli.Headless vs non headless
I componenti front prevedono due modalità di rendering controllate dall’opzioneisHeadless:
Non headless (predefinito) — Il componente renderizza un’interfaccia utente visibile. Quando viene avviato dal menu comandi, si apre nel pannello laterale. Questo è il comportamento predefinito quando isHeadless è false o omesso.
Headless (isHeadless: true) — Il componente viene montato in modo invisibile in background. Non apre il pannello laterale. I componenti headless sono pensati per azioni che eseguono una logica e poi si smontano — ad esempio, eseguire un’attività asincrona, navigare a una pagina o mostrare una finestra modale di conferma. Si abbinano naturalmente ai componenti Command dell’SDK descritti di seguito.
src/front-components/sync-tracker.tsx
null, Twenty evita di renderizzare un contenitore per esso — non appare alcuno spazio vuoto nel layout. Il componente ha comunque accesso a tutti gli hook e all’API di comunicazione con l’host.
Componenti Command dell’SDK
Il pacchettotwenty-sdk fornisce quattro componenti di supporto Command progettati per i componenti front headless. Ogni componente esegue un’azione al montaggio, gestisce gli errori mostrando una notifica snackbar e smonta automaticamente il componente front al termine.
Importali da twenty-sdk/command:
Command— Esegue una callback asincrona tramite la propexecute.CommandLink— Naviga verso un percorso dell’app. Props:to,params,queryParams,options.CommandModal— Apre una finestra modale di conferma. Se l’utente conferma, esegue la callbackexecute. Props:title,subtitle,execute,confirmButtonText,confirmButtonAccent.CommandOpenSidePanelPage— Apre una specifica pagina del pannello laterale. Props:page,pageTitle,pageIcon.
Command per eseguire un’azione dal menu comandi:
src/front-components/run-action.tsx
CommandModal per chiedere conferma prima di eseguire:
src/front-components/delete-draft.tsx
Accesso al contesto di runtime
All’interno del tuo componente, usa gli hook dell’SDK per accedere all’utente corrente, al record e all’istanza del componente:src/front-components/record-info.tsx
API di comunicazione con l’host
I componenti front-end possono attivare navigazione, modali e notifiche utilizzando funzioni datwenty-sdk:
Ecco un esempio che usa l’API host per mostrare una snackbar e chiudere il pannello laterale dopo il completamento di un’azione:
src/front-components/archive-record.tsx
Opzioni del comando
Aggiungere un campocommand a defineFrontComponent registra il componente nel menu comandi (Cmd+K). Se isPinned è true, compare anche come pulsante di azione rapida nell’angolo in alto a destra della pagina.
Espressioni di disponibilità condizionale
Il campoconditionalAvailabilityExpression consente di controllare quando un comando è visibile in base al contesto della pagina corrente. Importa variabili tipizzate e operatori da twenty-sdk per costruire espressioni:
Operatori — combinano variabili in espressioni booleane:
Asset pubblici
I componenti front-end possono accedere ai file dalla directorypublic/ dell’app utilizzando getPublicAssetUrl:
Stile
I componenti front-end supportano diversi approcci di styling. Puoi usare:- Stili inline —
style={{ color: 'red' }} - Componenti Twenty UI — importali da
twenty-sdk/ui(Button, Tag, Status, Chip, Avatar e altro) - Emotion — CSS-in-JS con
@emotion/react - Styled-components — pattern
styled.div - Tailwind CSS — classi di utilità
- Qualsiasi libreria CSS-in-JS compatibile con React