Panoramica
Card raggruppa informazioni e azioni correlate in un’unica esportazione denominata. Componi Card.Root, Card.Header, Card.Content e Card.Footer per separare un titolo, un corpo e le azioni di supporto. Le parti non gestiscono la selezione, lo stato attivo o lo stato dell’applicazione. L’applicazione gestisce il comportamento di tutti i controlli inseriti al loro interno.
Utilizzo
Anatomia
Card da twenty-ui/primitives/surfaces. Card.Root fornisce il bordo esterno e il clipping, ma non crea sezioni internamente. Nessuna parte richiede un’altra parte o un ordine particolare delle sezioni. Le sezioni funzionano anche in modo indipendente, senza Card.Root o contesto.
Root, Header, Content e Footer eseguono il rendering di un div per impostazione predefinita e accettano attributi nativi di div, gestori di eventi, className, style e un DOM ref. Action esegue il rendering di un pulsante nativo con type="button", mentre Control esegue il rendering di uno span. Usa render con un elemento o un callback per scegliere una destinazione semantica. Nessuna parte deduce un elemento o un ruolo da onClick.
CardRootProps, CardHeaderProps, CardContentProps, CardFooterProps, CardActionProps e CardControlProps sono esportati da twenty-ui/primitives/surfaces, twenty-ui/primitives e dal pacchetto root.
Aspetto e divisori
Card.Root ha uno sfondo trasparente per impostazione predefinita. fullWidth riempie il relativo contenitore e backgroundColor modifica lo sfondo esterno. Le sezioni figlie hanno i propri sfondi.
Card.Header ha uno sfondo principale, spaziatura interna e un bordo inferiore. Card.Content ha uno sfondo secondario e spaziatura interna; il relativo divider facoltativo aggiunge un bordo inferiore. Card.Footer ha uno sfondo principale, spaziatura interna e un bordo superiore, a meno che non sia impostato divider={false}. Evita di aggiungere due bordi allo stesso confine di sezione.
Composizione interattiva
Scegli un pulsante nativo per un’azione o un’ancora per la navigazione tramiterender. Fornisci attributi specifici della destinazione quali type, disabled, href e target su tale elemento. L’elemento proprietario effettivo fornisce il proprio comportamento per tastiera, stato attivo, disabilitazione e collegamento. Card non aggiunge tali comportamenti a un div di visualizzazione.
span.
Azioni estese e controlli indipendenti
UsaCard.Action quando un’azione primaria copre una sezione della scheda che contiene anche controlli indipendenti. Posiziona l’azione direttamente all’interno di Card.Root, Card.Header, Card.Content o Card.Footer. Quella parte immediata definisce l’area estesa. Mantieni un’azione primaria per area e conserva moduli espansi o altre sezioni indipendenti al di fuori di essa.
Per impostazione predefinita, Card.Action è un pulsante nativo. Assegna a un’azione vuota un nome accessibile con aria-label o aria-labelledby e usa aria-describedby per il testo di supporto. Un’ancora nativa o un link del router fornito tramite render mantiene la propria navigazione e il proprio comportamento per destinazione, clic con tasto modificatore e menu contestuale. Gli owner personalizzati non ricevono alcun ruolo di pulsante sintetico, gestore della tastiera o punto di tabulazione. Inserisci gli attributi nativi specifici della destinazione nell’elemento renderizzato.
Card.Control porta un controllo indipendente o la destinazione di un tooltip sopra l’azione estesa. Componi il relativo elemento esistente tramite render per mantenerne layout e attributi. I controlli rimangono elementi fratelli dell’azione primaria, anziché elementi figli di un pulsante o link. Card non deduce quali discendenti siano interattivi e non inoltra i relativi clic all’azione primaria. Le applicazioni gestiscono qualsiasi ulteriore elaborazione necessaria per il testo semplice sollevato.
render. I link e i controlli associati tramite etichette rimangono responsabili del proprio comportamento da disabilitati; la prop disabled di Action sopprime inoltre il trattamento condiviso dell’area di azione.
Per una riga Switch o Radio, renderizza Action come <label htmlFor={controlId} /> e assegna quell’ID al controllo effettivo. Mantieni l’etichetta visibile e la descrizione accessibile associate al controllo. L’etichetta non crea alcuna destinazione aggiuntiva per la tastiera né un anello di focus. Switch e Radio mantengono il proprio comportamento di focus e tastiera. Inserisci il modulo espanso di un’opzione radio in un Card.Content separato, affinché l’etichetta copra solo la relativa intestazione di selezione.
Parti indipendenti e wrapper personalizzati
Una sezione può essere utilizzata senza la superficie esterna. I wrapper possono utilizzare il relativo tipo di props esportato e applicarvi lo spread per preservare attributi nativi, gestori di eventi, ref, composizione di rendering, classi e stili. Con una destinazione personalizzata, inserisci il relativo ref specifico della destinazione sull’elemento fornito. Base UI unisce tale ref con il ref della parte e le props composte.Migrazione
Sostituisci le quattro importazioni separate conimport { Card } from 'twenty-ui/primitives/surfaces'. Anche il pacchetto radice e twenty-ui/primitives esportano lo stesso oggetto Card.
Applica gli stessi nomi dei membri ai tag JSX, ai wrapper con stile e ai tipi di props. Le esportazioni delle parti autonome vengono rimosse senza alias di compatibilità. Le props di layout, le impostazioni predefinite di stile e l’uso indipendente delle sezioni rimangono. Sostituisci
isClickable e hasHoverHighlight con un elemento proprietario nativo esplicito tramite render. Sposta i gestori delle azioni dai wrapper di sola visualizzazione, preserva i nomi accessibili e mantieni i controlli annidati al di fuori dell’azione principale. Usa render={<button type="button" disabled={disabled} />} per un’azione e render={<a href="/imports" />} per la navigazione. I ref DOM ora puntano alla parte effettivamente sottoposta a rendering.
Props
Card.Root
string
CSS background color of the outer card. Child sections have their own backgrounds.
ReactNode
Card sections or other content.
string
CSS class merged with the part class.
boolean
Sets the card width to 100% of its container.
Ref<HTMLDivElement>
Ref to the default div, or the element supplied through render.
ReactElement<unknown, string | JSXElementConstructor<any>> | ComponentRenderFn<HTMLProps, {}>
Element or render callback composed through Base UI useRender. Supply native button or link attributes on the rendered owner.
CSSProperties
Native styles applied to the rendered part.
"compact" | "default"
predefinito:"default"
default keeps the standard section appearance. compact uses secondary section backgrounds, 8px header and footer padding, 8px horizontal content padding without vertical padding, and no header divider.
Card.Action
ReactNode
Optional content inside the stretched action. Supply an accessible name for empty actions.
string
CSS class merged with the action class.
boolean
predefinito:"false"
Disables native button owners and suppresses the action hover treatment. Links and associated controls remain responsible for their own disabled behavior.
Ref<HTMLButtonElement>
Ref to the default button, or the element supplied through render.
ReactElement<unknown, string | JSXElementConstructor<any>> | ComponentRenderFn<HTMLProps, {}>
Native element or render callback composed through Base UI useRender. Links retain native navigation and labels activate their associated controls without an additional keyboard target.
CSSProperties
Native styles applied to the rendered action.
Card.Control
ReactNode
Independent controls or tooltip targets lifted above a sibling Card.Action.
string
CSS class merged with the control class.
Ref<HTMLSpanElement>
Ref to the default span, or the element supplied through render.
ReactElement<unknown, string | JSXElementConstructor<any>> | ComponentRenderFn<HTMLProps, {}>
Element or render callback composed through Base UI useRender. The supplied control retains its native attributes, events and semantics.
CSSProperties
Native styles applied to the rendered control wrapper.
Card.Header
ReactNode
Header content. Supply a Heading when the title should be a semantic heading.
string
CSS class merged with the part class.
Ref<HTMLDivElement>
Ref to the default div, or the element supplied through render.
ReactElement<unknown, string | JSXElementConstructor<any>> | ComponentRenderFn<HTMLProps, {}>
Element or render callback composed through Base UI useRender. Supply native button or link attributes on the rendered owner.
CSSProperties
Native styles applied to the rendered part.
Card.Content
ReactNode
Content displayed in the padded body.
string
CSS class merged with the part class.
boolean
Adds a bottom border.
Ref<HTMLDivElement>
Ref to the default div, or the element supplied through render.
ReactElement<unknown, string | JSXElementConstructor<any>> | ComponentRenderFn<HTMLProps, {}>
Element or render callback composed through Base UI useRender. Supply native button or link attributes on the rendered owner.
CSSProperties
Native styles applied to the rendered part.
Card.Footer
Footer content, such as actions or supporting text.
CSS class merged with the part class.
Shows the top border unless explicitly set to false.
Ref to the default div, or the element supplied through render.
Element or render callback composed through Base UI useRender. Supply native button or link attributes on the rendered owner.
Native styles applied to the rendered part.