Software aziendale · Nuova risorsa

Sistema di progettazione Red Hat PatternFly.

Usa PatternFly per un’area di lavoro operativa: riferimenti semantici ai token, schede di servizio selezionabili, selezione multipla a tre stati, revisione dell’ambito e codice nativo completo in React.

Guida OpenDesign8 capitoli38 voci di riferimentoGuida applicativa originale
01

Anteprima dell’interfaccia del sistema di progettazione sistema di design Red Hat PatternFly

Cerca nella galleria dei servizi, seleziona singoli servizi o quelli visibili, controlla il totale delle repliche, rivedi la selezione e conferma un piano locale.

Seleziona i servizi e rivedi l’ambito della manutenzioneApri l’esempio completo
PatternFly React 6.6.1 nativo, con Gallery/Card originali e stato di selezione multipla. Solo dati operativi di esempio. · Riferimento per l’implementazione
02

Riferimento di progettazione del sistema sistema di design Red Hat PatternFly

PatternFly React 6.6.1 e @patternfly/react-tokens 6.6.1. Di seguito sono mostrati i valori risolti di alcuni token pubblicati del tema chiaro. I componenti nativi e pf-v6-theme-dark risolvono gli stili scuri; i dati di esempio dei servizi e il layout sono scelte dell’applicazione.

Ruoli semantici per superfici e testo

Fonte
Nome / regolaValore / configurazioneUtilizzo
--pf-t--global--background--color--primary--defaultrgb(255, 255, 255, 0.6000)Usa il ruolo semantico del tema attivo; il rosso di accento del brand non è il colore universale delle azioni principali.
--pf-t--global--background--color--secondary--defaultrgb(199, 199, 199, 0.3000)Usa il ruolo semantico del tema attivo; il rosso di accento del brand non è il colore universale delle azioni principali.
--pf-t--global--text--color--regular#151515 Usa il ruolo semantico del tema attivo; il rosso di accento del brand non è il colore universale delle azioni principali.
--pf-t--global--text--color--subtle#383838 Usa il ruolo semantico del tema attivo; il rosso di accento del brand non è il colore universale delle azioni principali.
--pf-t--global--text--color--disabled#a3a3a3 Usa il ruolo semantico del tema attivo; il rosso di accento del brand non è il colore universale delle azioni principali.
--pf-t--global--color--brand--default#004d99 Usa il ruolo semantico del tema attivo; il rosso di accento del brand non è il colore universale delle azioni principali.
--pf-t--global--color--brand--hover#003366 Usa il ruolo semantico del tema attivo; il rosso di accento del brand non è il colore universale delle azioni principali.
--pf-t--global--color--brand--accent--default#ee0000 Usa il ruolo semantico del tema attivo; il rosso di accento del brand non è il colore universale delle azioni principali.
--pf-t--global--color--brand--subtle--default#e0f0ff Usa il ruolo semantico del tema attivo; il rosso di accento del brand non è il colore universale delle azioni principali.

Ruoli di stato

Fonte
Nome / regolaValore / configurazioneUtilizzo
--pf-t--global--color--status--success--default#204d00 Abbina l’intento dello stato a un’etichetta testuale. Questi valori del tema chiaro non sostituiscono le varianti native di Label o Alert.
--pf-t--global--color--status--warning--default#73480b Abbina l’intento dello stato a un’etichetta testuale. Questi valori del tema chiaro non sostituiscono le varianti native di Label o Alert.
--pf-t--global--color--status--danger--default#731f00 Abbina l’intento dello stato a un’etichetta testuale. Questi valori del tema chiaro non sostituiscono le varianti native di Label o Alert.
--pf-t--global--color--status--info--default#3d2785 Abbina l’intento dello stato a un’etichetta testuale. Questi valori del tema chiaro non sostituiscono le varianti native di Label o Alert.
--pf-t--global--color--status--custom--default#004d4d Abbina l’intento dello stato a un’etichetta testuale. Questi valori del tema chiaro non sostituiscono le varianti native di Label o Alert.
--pf-t--global--color--status--unread--default#0066cc Abbina l’intento dello stato a un’etichetta testuale. Questi valori del tema chiaro non sostituiscono le varianti native di Label o Alert.

Caratteri per il testo e i titoli

Fonte
Nome / regolaValore / configurazioneUtilizzo
--pf-t--global--font--size--body--default0.875remScegli con criterio il ruolo tipografico e il livello semantico del titolo. La dimensione visiva non determina la struttura del documento.
--pf-t--global--font--size--body--lg1remScegli con criterio il ruolo tipografico e il livello semantico del titolo. La dimensione visiva non determina la struttura del documento.
--pf-t--global--font--size--heading--h11.5remScegli con criterio il ruolo tipografico e il livello semantico del titolo. La dimensione visiva non determina la struttura del documento.
--pf-t--global--font--size--heading--h21.25remScegli con criterio il ruolo tipografico e il livello semantico del titolo. La dimensione visiva non determina la struttura del documento.
--pf-t--global--font--size--heading--h31.125remScegli con criterio il ruolo tipografico e il livello semantico del titolo. La dimensione visiva non determina la struttura del documento.
--pf-t--global--font--size--heading--h41remScegli con criterio il ruolo tipografico e il livello semantico del titolo. La dimensione visiva non determina la struttura del documento.
--pf-t--global--font--size--heading--h51remScegli con criterio il ruolo tipografico e il livello semantico del titolo. La dimensione visiva non determina la struttura del documento.
--pf-t--global--font--size--heading--h61remScegli con criterio il ruolo tipografico e il livello semantico del titolo. La dimensione visiva non determina la struttura del documento.

Scala di spaziatura

Fonte
Nome / regolaValore / configurazioneUtilizzo
--pf-t--global--spacer--xs0.25remUsa la scala di spaziatura indicata per gruppi e controlli; i valori in rem seguono la dimensione del font radice impostata dall’utente.
--pf-t--global--spacer--sm0.5remUsa la scala di spaziatura indicata per gruppi e controlli; i valori in rem seguono la dimensione del font radice impostata dall’utente.
--pf-t--global--spacer--md1remUsa la scala di spaziatura indicata per gruppi e controlli; i valori in rem seguono la dimensione del font radice impostata dall’utente.
--pf-t--global--spacer--lg1.5remUsa la scala di spaziatura indicata per gruppi e controlli; i valori in rem seguono la dimensione del font radice impostata dall’utente.
--pf-t--global--spacer--xl2remUsa la scala di spaziatura indicata per gruppi e controlli; i valori in rem seguono la dimensione del font radice impostata dall’utente.
--pf-t--global--spacer--2xl3remUsa la scala di spaziatura indicata per gruppi e controlli; i valori in rem seguono la dimensione del font radice impostata dall’utente.
--pf-t--global--spacer--3xl4remUsa la scala di spaziatura indicata per gruppi e controlli; i valori in rem seguono la dimensione del font radice impostata dall’utente.
--pf-t--global--spacer--4xl5remUsa la scala di spaziatura indicata per gruppi e controlli; i valori in rem seguono la dimensione del font radice impostata dall’utente.

Forma e stato attivo

Fonte
Nome / regolaValore / configurazioneUtilizzo
--pf-t--global--border--radius--tiny4pxUsa la forma prevista per il componente pertinente, invece di applicare il raggio arrotondato a pillola a tutte le superfici.
--pf-t--global--border--radius--small6pxUsa la forma prevista per il componente pertinente, invece di applicare il raggio arrotondato a pillola a tutte le superfici.
--pf-t--global--border--radius--medium16pxUsa la forma prevista per il componente pertinente, invece di applicare il raggio arrotondato a pillola a tutte le superfici.
--pf-t--global--border--radius--large24pxUsa la forma prevista per il componente pertinente, invece di applicare il raggio arrotondato a pillola a tutte le superfici.
--pf-t--global--border--radius--pill999pxUsa la forma prevista per il componente pertinente, invece di applicare il raggio arrotondato a pillola a tutte le superfici.
--pf-t--global--border--radius--control--form-element6pxUsa la forma prevista per il componente pertinente, invece di applicare il raggio arrotondato a pillola a tutte le superfici.
--pf-t--global--border--radius--action--default999pxUsa la forma prevista per il componente pertinente, invece di applicare il raggio arrotondato a pillola a tutte le superfici.
03

Guida completa al sistema di progettazione sistema di design Red Hat PatternFly

Una guida pratica per scegliere, applicare e valutare questo sistema in un’interfaccia reale.

DESIGN-red-hat-patternfly.md

Indicazioni complete, un punto di partenza per l’implementazione e link alle fonti.

Scarica la guida

Layout operativo del sistema di progettazione sistema di design Red Hat PatternFly

Una raccolta con contesto operativo persistente

La galleria dei servizi consente a un operatore di confrontare integrità, posizione e utilizzo, mentre un pannello separato registra l’insieme scelto. La selezione non coincide con i risultati della ricerca corrente. Un servizio escluso dai filtri resta selezionato finché non viene rimosso esplicitamente. Questa distinzione è essenziale per le operazioni in blocco che hanno conseguenze anche al di fuori della schermata visibile.

Da questa guida su OpenDesign

Usa la gerarchia dei componenti nativi

Gallery gestisce le colonne adattabili delle schede, Card distingue ciascun servizio, Label ne identifica lo stato e Progress mostra una percentuale di esempio con il relativo titolo. La pagina non imita una console di infrastruttura con rettangoli colorati arbitrari. Il modello dei dati, i controlli e lo stato di revisione sono implementati nell’esempio completo di React.

Ruoli semantici di colori e temi nel sistema di progettazione sistema di design Red Hat PatternFly

Il colore primario del brand e il rosso di accento sono distinti

PatternFly v6 esporta ruoli separati per brand, accento, testo, sfondo e stato. L’istantanea selezionata del tema chiaro include il blu brand-default e il rosso brand-accent-default. Trattare ogni azione in evidenza come rosso Red Hat confonderebbe questi ruoli. I componenti nativi Button e Label usano i ruoli del sistema appropriati alla rispettiva variante.

Risolvi il tema scuro a livello del documento

L’esempio attiva pf-v6-theme-dark sull’elemento document. Le superfici e il testo dell’applicazione usano le variabili semantiche --pf-t--global, che consentono al tema di risolverne anche i colori. Non fissare i valori chiari in schede personalizzate aspettandosi poi che una classe del tema sul documento li corregga.

Tipografia e metadati dei servizi nel sistema di progettazione sistema di design Red Hat PatternFly

Distingui la dimensione visiva dalla semantica dei titoli

L’intestazione con title e headingLevel h1 definisce il titolo della pagina, mentre size ne controlla l’enfasi visiva. In questa versione del pacchetto, body-default è 0.875rem. Le etichette delle schede, lo stato e i valori numerici di utilizzo restano leggibili senza trasformare ogni valore in un’intestazione. L’elenco di definizioni dei metadati rende espliciti il numero di repliche e gli ID dei servizi.

Evita etichette operative ambigue

L’utilizzo di esempio è contrassegnato come dato di esempio sia nel componente sia nel piè di pagina. Una barra di avanzamento senza contesto può essere scambiata per un’attività di distribuzione o un’operazione di caricamento. La didascalia spiega a cosa si riferisce la percentuale, mentre l’etichetta di stato comunica separatamente se la capacità è Healthy o Review.

Sistema di design Red Hat PatternFly Galleria del sistema di progettazione e selezione multipla

Usa i tre stati della casella di selezione

Il controllo Select visible è true quando sono selezionati tutti i servizi visibili, false quando non ne è selezionato nessuno e null quando ne è selezionata solo una parte. La casella di selezione di PatternFly supporta il valore indeterminato null. L’applicazione calcola questo stato dalla raccolta filtrata; non usa un booleano separato che potrebbe divergere dalle selezioni delle righe.

  1. Seleziona un servizio e controlla lo stato di selezione parziale.
  2. Seleziona tutti i servizi attualmente visibili.
  3. Cerca un nome e verifica che le selezioni nascoste restino selezionate.
  4. Verifica l’insieme esatto e il numero totale di repliche.
  5. Conferma il piano locale e leggi l’esito.

Usa l’insieme selezionato come fonte di verità

Sistema di design Red Hat PatternFly Spaziatura del sistema di progettazione e schede adattive

Usa token semantici per la struttura della pagina

Lo sfondo di esempio, il testo normale e i metadati discreti usano proprietà semantiche CSS del pacchetto di token pubblicato. La scala di spaziatura nativa va da xs a 4xl, mentre l’applicazione usa 24px tra la raccolta e il pannello dell’ambito. Questo valore esplicito di composizione è distinto dal riferimento al token.

Lascia che la galleria si ridisponga prima di ridurre i suoi contenuti

Gallery usa una larghezza minima di 230px per elemento e un gutter. Al breakpoint dell’applicazione di 850px, il pannello dell’ambito si sposta sotto la raccolta. A 500px, il padding della pagina diventa 16px e la ricerca occupa tutta la larghezza della barra degli strumenti. Sono scelte di layout di esempio, non un’affermazione secondo cui tutti i prodotti PatternFly usino questi breakpoint.

Sistema di design Red Hat PatternFly Revisione del sistema di progettazione e stati di selezione

Non associare un’operazione alla selezione

Selezionare un servizio lo aggiunge solo all’ambito. Review selection mostra un avviso informativo e un’azione di conferma. Confirm local plan riporta il totale dei servizi selezionati e delle relative repliche, senza avviare un’attività di manutenzione. La modifica della selezione chiude lo stato di revisione, così non può confermare silenziosamente un insieme non più aggiornato.

Tieni separato il recupero dalla ricerca dalla selezione

Una ricerca senza risultati mostra un avviso informativo in linea con l’azione Cancella ricerca. Questa cancella solo la query, mantenendo i servizi selezionati. Il conteggio delle selezioni nella barra degli strumenti e il pannello dell’ambito continuano quindi a essere coerenti. Reimpostare la selezione come effetto collaterale di una ricerca vuota sarebbe un comportamento distruttivo non esplicito.

Sistema di design Red Hat PatternFly Controlli accessibili e stato del sistema di progettazione

Etichetta la selezione e usa controlli nativi

Ogni casella di selezione ha un ID stabile e un’etichetta di servizio visibile. SearchInput ha un nome accessibile, Switch identifica l’impostazione dell’aspetto e Review selection è disabilitato quando l’insieme è vuoto. Progress nativo comunica il proprio valore e titolo. La pagina non dipende da un’azione disponibile solo al passaggio del puntatore e nascosta all’interno di una scheda.

Rendi visibile lo stato anche tramite testo

Il conteggio delle selezioni usa un’area live con annunci cortesi, lo stato del servizio è scritto all’interno di un’etichetta e l’avviso finale descrive l’esito. Non usare il colore come unico indicatore dell’ambito selezionato o dello stato del servizio. I test da tastiera dovrebbero includere la selezione parziale, il filtraggio di un servizio selezionato e il ritorno alla raccolta completa.

  • Una casella di selezione selezionata indica un’inclusione, non uno stato di successo.
  • Un’etichetta di stato descrive il servizio, non il fatto che sia selezionato.
  • L’avanzamento descrive l’utilizzo di esempio, non il completamento di un’operazione.

Sistema di design Red Hat PatternFly Integrazione del sistema di progettazione React

Importa una sola volta gli stili di reset e dei componenti

L’esempio importa @patternfly/react-core/dist/styles/base.css nel punto di ingresso. I componenti nativi React forniscono i propri stili tramite il pacchetto. Il CSS dell’applicazione CSS è limitato a pf-example e fa riferimento allo spazio dei nomi corrente --pf-t--global; non sovrascrive gli elementi interni dei componenti.

Aggiungi una pianificazione reale solo dietro un contratto di servizio

Sistema di design Red Hat PatternFly Esempi di componenti del sistema di progettazione

main.jsx — galleria dei servizi e revisione multipla

Composizione completa nativa di Gallery/Card/Checkbox/Progress con ambito di selezione derivato e conferma locale.

jsx
import React, { useState } from "react";
import { createRoot } from "react-dom/client";
import {
  Alert,
  Button,
  Card,
  CardBody,
  CardTitle,
  Checkbox,
  Gallery,
  GalleryItem,
  Label,
  Progress,
  SearchInput,
  Switch,
  Title,
} from "@patternfly/react-core";
import "@patternfly/react-core/dist/styles/base.css";
import "./patternfly.css";
const services = [
  {
    id: "api",
    name: "Public API",
    region: "eu-west",
    replicas: 6,
    load: 62,
    status: "Healthy",
  },
  {
    id: "jobs",
    name: "Background jobs",
    region: "eu-west",
    replicas: 3,
    load: 81,
    status: "Review capacity",
  },
  {
    id: "search",
    name: "Search index",
    region: "us-east",
    replicas: 4,
    load: 44,
    status: "Healthy",
  },
  {
    id: "events",
    name: "Event stream",
    region: "us-east",
    replicas: 8,
    load: 72,
    status: "Healthy",
  },
];
function App() {
  const [query, setQuery] = useState(""),
    [selected, setSelected] = useState([]),
    [review, setReview] = useState(false),
    [notice, setNotice] = useState(""),
    [dark, setDark] = useState(false);
  const visible = services.filter((x) =>
    x.name.toLowerCase().includes(query.toLowerCase()),
  );
  const picked = services.filter((x) => selected.includes(x.id));
  const allVisible =
    visible.length > 0 && visible.every((x) => selected.includes(x.id));
  const someVisible = visible.some((x) => selected.includes(x.id));
  function choose(id, checked) {
    setSelected((v) =>
      checked ? [...new Set([...v, id])] : v.filter((x) => x !== id),
    );
    setReview(false);
  }
  function selectVisible(checked) {
    setSelected((v) =>
      checked
        ? [...new Set([...v, ...visible.map((x) => x.id)])]
        : v.filter((id) => !visible.some((x) => x.id === id)),
    );
    setReview(false);
  }
  return (
    <main className="pf-example">
      <header>
        <div>
          <span className="overline">PATTERNFLY · SERVICE OPERATIONS</span>
          <Title headingLevel="h1" size="2xl">
            Plan a maintenance review
          </Title>
          <p>
            Select services and inspect the combined scope before creating a
            local plan.
          </p>
        </div>
        <Switch
          id="dark-theme"
          label="Dark theme"
          isChecked={dark}
          onChange={(_, checked) => {
            setDark(checked);
            document.documentElement.classList.toggle(
              "pf-v6-theme-dark",
              checked,
            );
          }}
        />
      </header>
      <div className="service-toolbar">
        <SearchInput
          aria-label="Find a service"
          placeholder="Find a service"
          value={query}
          onChange={(_, value) => setQuery(value)}
          onClear={() => setQuery("")}
        />
        <Checkbox
          id="select-visible"
          label="Select visible"
          isChecked={allVisible ? true : someVisible ? null : false}
          isDisabled={!visible.length}
          onChange={(_, checked) => selectVisible(checked)}
        />
        <span aria-live="polite">{selected.length} selected</span>
        <Button isDisabled={!selected.length} onClick={() => setReview(true)}>
          Review selection
        </Button>
      </div>
      <div className="service-layout">
        <Gallery hasGutter minWidths={{ default: "230px" }}>
          {visible.map((s) => (
            <GalleryItem key={s.id}>
              <Card>
                <CardTitle>
                  <Checkbox
                    id={"select-" + s.id}
                    label={s.name}
                    isChecked={selected.includes(s.id)}
                    onChange={(_, checked) => choose(s.id, checked)}
                  />
                </CardTitle>
                <CardBody>
                  <div className="service-meta">
                    <Label color={s.status === "Healthy" ? "green" : "orange"}>
                      {s.status}
                    </Label>
                    <span>{s.region}</span>
                  </div>
                  <Progress
                    value={s.load}
                    title="Sample utilization"
                    measureLocation="outside"
                  />
                  <dl>
                    <dt>Replicas</dt>
                    <dd>{s.replicas}</dd>
                    <dt>Service ID</dt>
                    <dd>
                      <code>{s.id}</code>
                    </dd>
                  </dl>
                </CardBody>
              </Card>
            </GalleryItem>
          ))}
        </Gallery>
        <aside>
          <Card>
            <CardTitle>Maintenance scope</CardTitle>
            <CardBody>
              <p>
                {picked.length} services ·{" "}
                {picked.reduce((n, s) => n + s.replicas, 0)} replicas
              </p>
              {picked.length ? (
                <ul>
                  {picked.map((s) => (
                    <li key={s.id}>
                      {s.name}
                      <span>{s.region}</span>
                    </li>
                  ))}
                </ul>
              ) : (
                <p className="muted">Select a service to inspect its scope.</p>
              )}
              {review && (
                <div className="review">
                  <Alert
                    isInline
                    variant="info"
                    title="Review the selected services"
                  >
                    This is a fictional plan. No workload will be restarted.
                  </Alert>
                  <Button
                    onClick={() => {
                      setNotice(
                        `Local plan includes ${picked.length} services and ${picked.reduce((n, s) => n + s.replicas, 0)} replicas. No operation was scheduled.`,
                      );
                      setReview(false);
                    }}
                  >
                    Confirm local plan
                  </Button>
                </div>
              )}
            </CardBody>
          </Card>
        </aside>
      </div>
      {!visible.length && (
        <Alert isInline variant="info" title="No services match">
          <Button variant="link" onClick={() => setQuery("")}>
            Clear search
          </Button>
        </Alert>
      )}
      {notice && (
        <Alert isInline variant="success" title="Local plan recorded">
          {notice}
        </Alert>
      )}
      <footer>
        Native PatternFly 6.6.1 · service data and capacity figures are
        fictional, memory-only examples.
      </footer>
    </main>
  );
}
createRoot(document.getElementById("root")).render(<App />);

Riferimento del codice

  • Salva come src/main.jsx. Checkbox onChange riceve l’evento e il valore checked; isChecked può essere null per un insieme misto.

patternfly.css — struttura operativa adattiva

Il layout personalizzato della pagina usa i token semantici v6 e mantiene intatti gli stili nativi dei componenti.

css
body {
  margin: 0;
}
.pf-example {
  padding: 24px;
  background: var(--pf-t--global--background--color--secondary--default);
  color: var(--pf-t--global--text--color--regular);
  font-family: var(--pf-t--global--font--family--body);
}
.pf-example header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  margin-bottom: 24px;
}
.overline {
  font-size: 11px;
  letter-spacing: 0.07em;
  color: var(--pf-t--global--text--color--subtle);
}
.pf-example header h1 {
  margin: 8px 0;
}
.service-toolbar {
  display: flex;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
  margin-bottom: 24px;
}
.service-toolbar > .pf-v6-c-search-input {
  width: 280px;
}
.service-toolbar > span {
  margin-left: auto;
}
.service-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 280px;
  gap: 24px;
  align-items: start;
}
.service-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  font-size: 12px;
  margin-bottom: 24px;
}
.service-layout dl {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 24px;
  font-size: 12px;
}
.service-layout dd {
  margin: 0;
}
.service-layout ul {
  padding: 0;
  list-style: none;
  margin: 16px 0;
}
.service-layout li {
  padding: 12px 0;
  border-bottom: 1px solid var(--pf-t--global--border--color--default);
}
.service-layout li span {
  display: block;
  font-size: 12px;
  color: var(--pf-t--global--text--color--subtle);
}
.muted {
  color: var(--pf-t--global--text--color--subtle);
  margin-top: 16px;
}
.review > .pf-v6-c-button {
  margin-top: 16px;
}
.pf-example > .pf-v6-c-alert {
  margin-top: 24px;
}
.pf-example footer {
  font-size: 12px;
  color: var(--pf-t--global--text--color--subtle);
  margin-top: 24px;
}
@media (max-width: 850px) {
  .service-layout {
    grid-template-columns: 1fr;
  }
  .pf-example header {
    align-items: start;
  }
  .service-toolbar > span {
    margin-left: 0;
  }
}
@media (max-width: 500px) {
  .pf-example {
    padding: 16px;
  }
  .pf-example header {
    flex-direction: column;
  }
  .service-toolbar {
    gap: 16px;
  }
  .service-toolbar > .pf-v6-c-search-input {
    width: 100%;
  }
}

Riferimento del codice

  • Salva come src/patternfly.css. I breakpoint dell’applicazione sono esplicitamente parte di questo esempio.
04

Sistema di design Red Hat PatternFly Configurazione dell’agente del sistema di progettazione

Punto di partenza per l’implementazione

Composizione nativa React 18.3.1 / PatternFly 6.6.1. Vite richiede una versione supportata di Node.js. I dati effettivi dei servizi e le operazioni API restano responsabilità dell’applicazione.

sh
npm create vite@latest patternfly-services -- --template react
cd patternfly-services
npm install
npm install [email protected] [email protected] @patternfly/[email protected]
# Replace src/main.jsx and add src/patternfly.css using the complete examples.
npm run dev

Un prompt per il tuo progetto

Prompt per l’agente
Crea una raccolta operativa usando i componenti nativi Gallery, Card, Checkbox, Progress, Label e Alert di PatternFly 6.6.1. Usa i token semantici forniti e l’esempio completo. Tieni distinta la visibilità filtrata dagli ID selezionati, calcola la selezione multipla parziale e richiedi la revisione dell’insieme esatto interessato. Quando viene aggiunto un API reale, usa risposte attendibili per gli stati in attesa, di errore e di successo. Mantieni la ridisposizione su dispositivi mobili e l’accessibilità da tastiera.
05

Sistema di design Red Hat PatternFly Fonti e ambito del sistema di progettazione

Guida applicativa redatta da OpenDesign ed esempio fittizio di pianificazione della manutenzione, basati su PatternFly React 6.6.1 nativo. I valori di utilizzo, area geografica e numero di repliche sono dati di esempio. La conferma aggiorna solo lo stato locale; nessun servizio viene riavviato o pianificato.