Kurumsal yazılım · Yeni kaynak

Red Hat PatternFly Tasarım Sistemi.

Bir operasyon çalışma alanı için PatternFly kullanın: anlamsal belirteç referansları, seçilebilir hizmet kartları, üç durumlu toplu seçim, kapsam incelemesi ve eksiksiz yerel React kodu.

OpenDesign Kılavuzu8 Bölüm38 Referans KaydıÖzgün Uygulama Kılavuzu
01

Red Hat PatternFly Tasarım Sistemi Arayüzü Önizlemesi

Hizmet galerisinde arama yapın, tek tek veya görünür hizmetleri seçin, çoğaltma toplamlarını inceleyin, seçimi gözden geçirin ve yerel bir planı onaylayın.

Hizmetleri seçin ve bakım kapsamını gözden geçirinÖrneğin Tamamını Aç
Özgün Gallery/Card ve toplu seçim durumuna sahip yerel PatternFly React 6.6.1. Yalnızca örnek operasyonel veriler. · Uygulama başvurusu
02

Red Hat PatternFly Tasarım Sistemi Tasarım Başvurusu

PatternFly React 6.6.1 ve @patternfly/react-tokens 6.6.1. Yayımlanmış açık tema belirteçlerinin seçili çözümlemeleri aşağıda gösterilmiştir. Yerel bileşenler ve pf-v6-theme-dark koyu stili belirler; örnek hizmet verileri ve düzen ise uygulama tercihleridir.

Anlamsal yüzey ve metin rolleri

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--pf-t--global--background--color--primary--defaultrgb(255, 255, 255, 0.6000)Etkin temadaki anlamsal rolü kullanın; marka vurgu kırmızısı, her yerde kullanılacak birincil işlem rengi değildir.
--pf-t--global--background--color--secondary--defaultrgb(199, 199, 199, 0.3000)Etkin temadaki anlamsal rolü kullanın; marka vurgu kırmızısı, her yerde kullanılacak birincil işlem rengi değildir.
--pf-t--global--text--color--regular#151515 Etkin temadaki anlamsal rolü kullanın; marka vurgu kırmızısı, her yerde kullanılacak birincil işlem rengi değildir.
--pf-t--global--text--color--subtle#383838 Etkin temadaki anlamsal rolü kullanın; marka vurgu kırmızısı, her yerde kullanılacak birincil işlem rengi değildir.
--pf-t--global--text--color--disabled#a3a3a3 Etkin temadaki anlamsal rolü kullanın; marka vurgu kırmızısı, her yerde kullanılacak birincil işlem rengi değildir.
--pf-t--global--color--brand--default#004d99 Etkin temadaki anlamsal rolü kullanın; marka vurgu kırmızısı, her yerde kullanılacak birincil işlem rengi değildir.
--pf-t--global--color--brand--hover#003366 Etkin temadaki anlamsal rolü kullanın; marka vurgu kırmızısı, her yerde kullanılacak birincil işlem rengi değildir.
--pf-t--global--color--brand--accent--default#ee0000 Etkin temadaki anlamsal rolü kullanın; marka vurgu kırmızısı, her yerde kullanılacak birincil işlem rengi değildir.
--pf-t--global--color--brand--subtle--default#e0f0ff Etkin temadaki anlamsal rolü kullanın; marka vurgu kırmızısı, her yerde kullanılacak birincil işlem rengi değildir.

Durum rolleri

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--pf-t--global--color--status--success--default#204d00 Durum amacını yazılı bir etiketle birlikte kullanın. Bu açık tema değerleri, yerel Label veya Alert varyantlarının yerini tutmaz.
--pf-t--global--color--status--warning--default#73480b Durum amacını yazılı bir etiketle birlikte kullanın. Bu açık tema değerleri, yerel Label veya Alert varyantlarının yerini tutmaz.
--pf-t--global--color--status--danger--default#731f00 Durum amacını yazılı bir etiketle birlikte kullanın. Bu açık tema değerleri, yerel Label veya Alert varyantlarının yerini tutmaz.
--pf-t--global--color--status--info--default#3d2785 Durum amacını yazılı bir etiketle birlikte kullanın. Bu açık tema değerleri, yerel Label veya Alert varyantlarının yerini tutmaz.
--pf-t--global--color--status--custom--default#004d4d Durum amacını yazılı bir etiketle birlikte kullanın. Bu açık tema değerleri, yerel Label veya Alert varyantlarının yerini tutmaz.
--pf-t--global--color--status--unread--default#0066cc Durum amacını yazılı bir etiketle birlikte kullanın. Bu açık tema değerleri, yerel Label veya Alert varyantlarının yerini tutmaz.

Gövde ve başlık yazı tipi

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--pf-t--global--font--size--body--default0.875remYazı tipi rolünü ve anlamsal başlık düzeyini bilinçli biçimde seçin. Görsel boyut, belge başlık yapısını belirlemez.
--pf-t--global--font--size--body--lg1remYazı tipi rolünü ve anlamsal başlık düzeyini bilinçli biçimde seçin. Görsel boyut, belge başlık yapısını belirlemez.
--pf-t--global--font--size--heading--h11.5remYazı tipi rolünü ve anlamsal başlık düzeyini bilinçli biçimde seçin. Görsel boyut, belge başlık yapısını belirlemez.
--pf-t--global--font--size--heading--h21.25remYazı tipi rolünü ve anlamsal başlık düzeyini bilinçli biçimde seçin. Görsel boyut, belge başlık yapısını belirlemez.
--pf-t--global--font--size--heading--h31.125remYazı tipi rolünü ve anlamsal başlık düzeyini bilinçli biçimde seçin. Görsel boyut, belge başlık yapısını belirlemez.
--pf-t--global--font--size--heading--h41remYazı tipi rolünü ve anlamsal başlık düzeyini bilinçli biçimde seçin. Görsel boyut, belge başlık yapısını belirlemez.
--pf-t--global--font--size--heading--h51remYazı tipi rolünü ve anlamsal başlık düzeyini bilinçli biçimde seçin. Görsel boyut, belge başlık yapısını belirlemez.
--pf-t--global--font--size--heading--h61remYazı tipi rolünü ve anlamsal başlık düzeyini bilinçli biçimde seçin. Görsel boyut, belge başlık yapısını belirlemez.

Boşluk ölçeği

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--pf-t--global--spacer--xs0.25remGruplar ve kontroller için adlandırılmış boşluk ölçeğini kullanın; rem değerleri kullanıcının kök yazı tipi boyutunu temel alır.
--pf-t--global--spacer--sm0.5remGruplar ve kontroller için adlandırılmış boşluk ölçeğini kullanın; rem değerleri kullanıcının kök yazı tipi boyutunu temel alır.
--pf-t--global--spacer--md1remGruplar ve kontroller için adlandırılmış boşluk ölçeğini kullanın; rem değerleri kullanıcının kök yazı tipi boyutunu temel alır.
--pf-t--global--spacer--lg1.5remGruplar ve kontroller için adlandırılmış boşluk ölçeğini kullanın; rem değerleri kullanıcının kök yazı tipi boyutunu temel alır.
--pf-t--global--spacer--xl2remGruplar ve kontroller için adlandırılmış boşluk ölçeğini kullanın; rem değerleri kullanıcının kök yazı tipi boyutunu temel alır.
--pf-t--global--spacer--2xl3remGruplar ve kontroller için adlandırılmış boşluk ölçeğini kullanın; rem değerleri kullanıcının kök yazı tipi boyutunu temel alır.
--pf-t--global--spacer--3xl4remGruplar ve kontroller için adlandırılmış boşluk ölçeğini kullanın; rem değerleri kullanıcının kök yazı tipi boyutunu temel alır.
--pf-t--global--spacer--4xl5remGruplar ve kontroller için adlandırılmış boşluk ölçeğini kullanın; rem değerleri kullanıcının kök yazı tipi boyutunu temel alır.

Biçim ve odak

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
--pf-t--global--border--radius--tiny4pxTüm yüzeylere kapsül köşe yarıçapı uygulamak yerine ilgili bileşenin biçimini kullanın.
--pf-t--global--border--radius--small6pxTüm yüzeylere kapsül köşe yarıçapı uygulamak yerine ilgili bileşenin biçimini kullanın.
--pf-t--global--border--radius--medium16pxTüm yüzeylere kapsül köşe yarıçapı uygulamak yerine ilgili bileşenin biçimini kullanın.
--pf-t--global--border--radius--large24pxTüm yüzeylere kapsül köşe yarıçapı uygulamak yerine ilgili bileşenin biçimini kullanın.
--pf-t--global--border--radius--pill999pxTüm yüzeylere kapsül köşe yarıçapı uygulamak yerine ilgili bileşenin biçimini kullanın.
--pf-t--global--border--radius--control--form-element6pxTüm yüzeylere kapsül köşe yarıçapı uygulamak yerine ilgili bileşenin biçimini kullanın.
--pf-t--global--border--radius--action--default999pxTüm yüzeylere kapsül köşe yarıçapı uygulamak yerine ilgili bileşenin biçimini kullanın.
03

Red Hat PatternFly Tasarım Sistemi Eksiksiz Kılavuzu

Bu sistemi gerçek bir arayüz için seçmeye, uygulamaya ve gözden geçirmeye yönelik pratik bir kılavuz.

DESIGN-red-hat-patternfly.md

Eksiksiz yönlendirme, uygulama için başlangıç noktası ve kaynak bağlantıları.

Kılavuzu İndir

Red Hat PatternFly Tasarım Sistemi Operasyon Düzeni

Sürekli operasyonel bağlam sunan bir koleksiyon

Hizmet galerisi, operatörün durumu, konumu ve kullanım oranını karşılaştırmasını sağlarken ayrı bir kapsam paneli seçilen kümeyi kaydeder. Seçim, geçerli arama sonuçlarıyla aynı şey değildir. Filtrelenen bir hizmet, bilerek kaldırılana kadar seçili kalır. Görünür ekranın ötesinde sonuçları olan toplu bir işlem için bu ayrım kritik önem taşır.

Bu OpenDesign kılavuzundan

Yerel bileşen hiyerarşisini kullanın

Gallery duyarlı kart sütunlarını yönetir, Card her hizmeti birbirinden ayırır, Label durumu belirtir ve Progress başlığıyla birlikte örnek bir yüzdeyi gösterir. Sayfa, rastgele renkli dikdörtgenlerle bir altyapı konsolunu taklit etmez. Veri modeli, kontroller ve inceleme durumu, React örneğinin tamamında uygulanmıştır.

Red Hat PatternFly Tasarım Sistemi Anlamsal Renk ve Tema Rolleri

Birincil marka rengi ve vurgu kırmızısı farklı rollerdir

PatternFly v6; marka, vurgu, metin, arka plan ve durum için ayrı roller sunar. Seçili açık tema görüntüsünde varsayılan mavi marka rengi ve varsayılan kırmızı marka vurgusu bulunur. Öne çıkan her işlemi Red Hat kırmızısı olarak değerlendirmek bu rolleri birbirine karıştırır. Yerel Button ve Label bileşenleri, varyantlarına uygun sistem rollerini kullanır.

Koyu temayı belge düzeyinde çözümleyin

Örnek, belge öğesinde pf-v6-theme-dark sınıfını açıp kapatır. Uygulama yüzeyleri ve metinleri --pf-t--global anlamsal değişkenlerini kullanır; böylece tema bunların renklerini de belirler. Açık tema değerlerini özel kartlara sabitleyip belge tema sınıfının bunları düzeltmesini beklemeyin.

Red Hat PatternFly Tasarım Sistemi Yazı Tipi ve Hizmet Meta Verileri

Görsel boyutu başlık anlambiliminden ayırın

Title bileşenindeki headingLevel h1, sayfa başlığını belirler; boyutu ise görsel vurguyu kontrol eder. Bu paketin anlık görüntüsünde Body-default 0.875rem'dir. Kart etiketleri, durum ve sayısal kullanım değerleri, her değeri başlığa dönüştürmeden de okunabilir kalır. Metadata tanım listesi, replika sayılarını ve hizmet kimliklerini açıkça belirtir.

Belirsiz operasyon etiketlerinden kaçının

Örnek kullanım, hem bileşende hem alt bilgide örnek veri olarak etiketlenir. Tek başına bir ilerleme çubuğu, dağıtım görevi veya yükleme işlemi sanılabilir. Açıklama metni yüzdenin neyi ifade ettiğini belirtirken durum Label'ı kapasitenin Sağlıklı mı yoksa Gözden geçirilmeli mi olduğunu ayrıca bildirir.

Red Hat PatternFly Tasarım Sistemi Galerisi ve Toplu Seçim

Üç onay kutusu durumunu kullanın

Görünür olan tüm hizmetler seçildiğinde Select visible true, hiçbiri seçilmediğinde false, yalnızca bazıları seçildiğinde null değerini alır. PatternFly Checkbox, belirsiz durum için null değerini destekler. Uygulama bu durumu filtrelenmiş koleksiyondan hesaplar; satır seçimlerinden farklılaşabilecek ayrı bir boolean kullanmaz.

  1. Bir hizmet seçin ve kısmi seçim durumunu inceleyin.
  2. Şu anda görünür olan tüm hizmetleri seçin.
  3. Bir adı arayın ve gizli seçimlerin korunduğunu doğrulayın.
  4. Kesin kümeyi ve replika toplamını inceleyin.
  5. Yerel planı onaylayın ve sonucu okuyun.

Seçim kümesini tek doğruluk kaynağı yapın

Red Hat PatternFly Tasarım Sistemi Aralığı ve Duyarlı Kartlar

Sayfa iskeleti için anlamsal belirteçleri kullanın

Örnek arka plan, normal metin ve ikincil metadata, yayımlanan belirteç paketindeki anlamsal CSS özelliklerini kullanır. Yerel aralık ölçeği xs ile 4xl arasında değişirken uygulama, koleksiyon ile kapsam paneli arasında 24px kullanır. Bu açıkça belirtilen düzen değeri, belirteç referansından ayrıdır.

İçeriği daraltmadan önce galerinin yeniden akışını sağlayın

Gallery için en az 230px öğe genişliği ve bir aralık belirlenir. Uygulamadaki 850px kesme noktasında kapsam paneli koleksiyonun altına taşınır. 500px'te sayfa dolgusu 16px olur ve arama araç çubuğunun tüm genişliğini kaplar. Bunlar örnek düzen kararlarıdır; tüm PatternFly ürünlerinin bu kesme noktalarını kullandığı anlamına gelmez.

Red Hat PatternFly Tasarım Sistemi İnceleme ve Seçim Durumları

Seçimin işlemi başlatmasına izin vermeyin

Bir hizmeti işaretlemek yalnızca onu kapsama ekler. Review selection, bilgilendirme amaçlı bir Alert ve bir onaylama eylemi gösterir. Confirm local plan, bakım işi başlatmadan seçili hizmet ve replika toplamlarını bildirir. Seçim değiştirildiğinde inceleme durumu kapatılır; böylece artık geçerli olmayan bir küme sessizce onaylanamaz.

Arama kurtarma işlemini seçimden ayrı tutun

Eşleşmeyen bir sorgu, aramayı temizleme seçeneği bulunan satır içi bilgilendirme amaçlı bir Alert gösterir. Bu işlem yalnızca sorguyu temizler; seçili hizmetleri korur. Bu nedenle araç çubuğundaki seçim sayısı ve kapsam paneli aynı bilgiyi vermeye devam eder. Arama boşaldığında seçimi yan etki olarak sıfırlamak, gizli ve yıkıcı bir davranış olur.

Red Hat PatternFly Tasarım Sistemi Erişilebilir Kontroller ve Durum

Seçimi etiketleyin ve yerel kontrolleri kullanın

Her Checkbox'ın sabit bir kimliği ve görünür bir hizmet etiketi vardır. SearchInput'ın erişilebilir bir adı bulunur, Switch görünüm ayarını adlandırır ve küme boşken Review selection devre dışıdır. Yerel Progress, değerini ve başlığını bildirir. Sayfa, kart içinde gizlenmiş ve yalnızca üzerine gelindiğinde görünen bir eyleme bağlı değildir.

Durumu sözcüklerle görünür kılın

Seçim sayısı, kibar bir canlı bölge kullanır; hizmet durumu bir Label içinde metin olarak belirtilir ve son Alert gerçekleşenleri açıklar. Seçim kapsamını veya sistem sağlığını yalnızca renkle göstermeyin. Klavye testlerinde kısmi seçimi, seçili bir hizmeti filtreleyerek gizlemeyi ve koleksiyonun tamamına geri dönmeyi kapsayın.

  • Seçili bir onay kutusu, dahil etme kararını belirtir; başarı durumunu değil.
  • Durum Label'ı, hizmeti açıklar; seçili olup olmadığını değil.
  • Progress, işlem tamamlanmasını değil, örnek kullanım değerini gösterir.

Red Hat PatternFly Tasarım Sistemi React Entegrasyonu

Sıfırlama ve bileşen stillerini bir kez içe aktarın

Örnek, giriş noktasında @patternfly/react-core/dist/styles/base.css dosyasını içe aktarır. Yerel React bileşenleri, stillerini paket üzerinden sağlar. Uygulama CSS pf-example kapsamındadır ve güncel --pf-t--global ad alanını kullanır; bileşenlerin iç yapısını geçersiz kılmaz.

Gerçek zamanlamayı yalnızca bir hizmet sözleşmesinin arkasında ekleyin

Red Hat PatternFly Tasarım Sistemi Bileşen Örnekleri

main.jsx — hizmet galerisi ve toplu inceleme

Türetilmiş seçim kapsamı ve yerel onay içeren eksiksiz yerel Gallery/Card/Checkbox/Progress bileşimi.

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 />);

Kod referansı

  • src/main.jsx olarak kaydedin. Checkbox onChange, olayı ve işaretli değerini alır; karma bir kümede isChecked null olabilir.

patternfly.css — duyarlı operasyon iskeleti

Özel sayfa düzeni, anlamsal v6 belirteçlerini kullanır ve yerel bileşen stillerini korur.

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%;
  }
}

Kod referansı

  • src/patternfly.css olarak kaydedin. Uygulama kesme noktaları bu örnekte açıkça belirtilmiştir.
04

Red Hat PatternFly Tasarım Sistemi Agent Kurulumu

Uygulamaya Başlangıç Noktası

Yerel React 18.3.1 / PatternFly 6.6.1 bileşimi. Vite için desteklenen bir Node.js sürümü gerekir. Gerçek hizmet verileri ve işlemler API uygulamanın sorumluluğundadır.

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

Projeniz İçin Bir İstem

Ajan İstemi
PatternFly 6.6.1'in yerel Gallery, Card, Checkbox, Progress, Label ve Alert bileşenlerini kullanarak bir operasyon koleksiyonu oluşturun. Sağlanan anlamsal belirteçleri ve eksiksiz örneği kullanın. Filtrelenmiş görünürlüğü seçili kimliklerden ayrı tutun, toplu seçimin kısmi durumunu hesaplayın ve etkilenen kesin kümenin incelenmesini zorunlu kılın. Gerçek bir API eklendiğinde beklemede/başarısız/başarılı durumlarını doğru biçimde bildirin. Mobilde yeniden akışı ve klavye erişimini koruyun.
05

Red Hat PatternFly Tasarım Sistemi Kaynakları ve Kapsamı

OpenDesign tarafından hazırlanmış bir uygulama kılavuzu ve kurgusal bakım planlama örneği; yerel PatternFly React 6.6.1 ile çalışır. Kullanım, bölge ve replika sayıları örnek verilerdir. Onaylama yalnızca yerel durumu günceller; hiçbir hizmet yeniden başlatılmaz veya zamanlanmaz.