Veri analizi · Yeni kaynak

Elastic UI Tasarım Sistemi.

Doğrulanmış Borealis ölçekleri, yerel tablo ve arama kontrolleri, önem derecesine göre filtreleme, yerel olarak kaydedilen olaylar ve eksiksiz React kaynak koduyla bir Elastic UI günlük gezgini oluşturun.

OpenDesign Kılavuzu8 Bölüm43 başvuru girdisiÖzgün Uygulama Kılavuzu
01

Elastic UI Tasarım Sistemi Arayüz Önizlemesi

Olay akışını mesaja veya önem derecesine göre filtreleyin, tek tek olayları kaydedin, boş sonucu temizleyin ve açık ya da koyu görünüme geçin.

Örnek günlük olaylarını arayın ve kaydedinÖrneğin Tamamını Aç
Yerel Elastic UI 123.0.0 / Borealis 8.1.0 ve React 18.3.1. Özgün yerel günlük verileri ve uygulama durumu. · Uygulama başvurusu
02

Elastic UI Tasarım Sistemi Tasarım Başvurusu

Elastic UI 123.0.0; Borealis teması 8.1.0 ve React 18.3.1 ile. Tablolarda yayımlanan tema JSON'undaki adlar kullanılıyor; bunlar dışa aktarma anahtarlarıdır, useEuiTheme nesnesinin gerçek yolları değildir. Gerçek önizlemede yerel React teması API kullanılır.

Borealis anlamsal renkleri

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
euiColorPrimarylight: #0B64DD; dark: #61A2FFYayımlanan tema dışa aktarma adları. React içinde bu değerleri sabit kodlamak yerine useEuiTheme aracılığıyla karşılık gelen anlamsal rolü kullanın.
euiColorSuccesslight: #008A5E; dark: #24C292Yayımlanan tema dışa aktarma adları. React içinde bu değerleri sabit kodlamak yerine useEuiTheme aracılığıyla karşılık gelen anlamsal rolü kullanın.
euiColorWarninglight: #FACB3D; dark: #FACB3DYayımlanan tema dışa aktarma adları. React içinde bu değerleri sabit kodlamak yerine useEuiTheme aracılığıyla karşılık gelen anlamsal rolü kullanın.
euiColorDangerlight: #C61E25; dark: #F6726AYayımlanan tema dışa aktarma adları. React içinde bu değerleri sabit kodlamak yerine useEuiTheme aracılığıyla karşılık gelen anlamsal rolü kullanın.
euiColorEmptyShadelight: #FFFFFF; dark: #111C2CYayımlanan tema dışa aktarma adları. React içinde bu değerleri sabit kodlamak yerine useEuiTheme aracılığıyla karşılık gelen anlamsal rolü kullanın.
euiColorFullShadelight: #07101F; dark: #FFFFFFYayımlanan tema dışa aktarma adları. React içinde bu değerleri sabit kodlamak yerine useEuiTheme aracılığıyla karşılık gelen anlamsal rolü kullanın.
euiPageBackgroundColorlight: #ECF1F9; dark: #07101FYayımlanan tema dışa aktarma adları. React içinde bu değerleri sabit kodlamak yerine useEuiTheme aracılığıyla karşılık gelen anlamsal rolü kullanın.
euiTextColorlight: #384861; dark: #B4C1D5Yayımlanan tema dışa aktarma adları. React içinde bu değerleri sabit kodlamak yerine useEuiTheme aracılığıyla karşılık gelen anlamsal rolü kullanın.
euiTextSubduedColorlight: #516381; dark: #98A8C3Yayımlanan tema dışa aktarma adları. React içinde bu değerleri sabit kodlamak yerine useEuiTheme aracılığıyla karşılık gelen anlamsal rolü kullanın.

Boşluk ölçeği

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
euiSizeXS4pxYerleşim ritmi için eşleşen EuiSpacer/FlexGroup boyutlarını kullanın; bu tema dışa aktarımında temel değer 16px'tir.
euiSizeS8pxYerleşim ritmi için eşleşen EuiSpacer/FlexGroup boyutlarını kullanın; bu tema dışa aktarımında temel değer 16px'tir.
euiSizeM12pxYerleşim ritmi için eşleşen EuiSpacer/FlexGroup boyutlarını kullanın; bu tema dışa aktarımında temel değer 16px'tir.
euiSize16pxYerleşim ritmi için eşleşen EuiSpacer/FlexGroup boyutlarını kullanın; bu tema dışa aktarımında temel değer 16px'tir.
euiSizeL24pxYerleşim ritmi için eşleşen EuiSpacer/FlexGroup boyutlarını kullanın; bu tema dışa aktarımında temel değer 16px'tir.
euiSizeXL32pxYerleşim ritmi için eşleşen EuiSpacer/FlexGroup boyutlarını kullanın; bu tema dışa aktarımında temel değer 16px'tir.
euiSizeXXL40pxYerleşim ritmi için eşleşen EuiSpacer/FlexGroup boyutlarını kullanın; bu tema dışa aktarımında temel değer 16px'tir.

Tipografi

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
euiFontSizeXS12pxYayımlanan tipografi başvurusu. Bileşen hiyerarşisi için EuiText/EuiTitle varyantlarını kullanın.
euiFontSizeS14pxYayımlanan tipografi başvurusu. Bileşen hiyerarşisi için EuiText/EuiTitle varyantlarını kullanın.
euiFontSize14pxYayımlanan tipografi başvurusu. Bileşen hiyerarşisi için EuiText/EuiTitle varyantlarını kullanın.
euiFontSizeM16pxYayımlanan tipografi başvurusu. Bileşen hiyerarşisi için EuiText/EuiTitle varyantlarını kullanın.
euiFontSizeL20pxYayımlanan tipografi başvurusu. Bileşen hiyerarşisi için EuiText/EuiTitle varyantlarını kullanın.
euiFontSizeXL24pxYayımlanan tipografi başvurusu. Bileşen hiyerarşisi için EuiText/EuiTitle varyantlarını kullanın.
euiFontSizeXXL30pxYayımlanan tipografi başvurusu. Bileşen hiyerarşisi için EuiText/EuiTitle varyantlarını kullanın.
euiLineHeight1.5Yayımlanan tipografi başvurusu. Bileşen hiyerarşisi için EuiText/EuiTitle varyantlarını kullanın.

Kenarlıklar ve şekil

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
euiBorderWidthThin1pxSatır içi, kontrol, panel ve çerçeve şekillerini birbirinden ayırın; herkese uygulanan tek bir köşe yarıçapı hiyerarşiyi ortadan kaldırır.
euiBorderWidthThick2pxSatır içi, kontrol, panel ve çerçeve şekillerini birbirinden ayırın; herkese uygulanan tek bir köşe yarıçapı hiyerarşiyi ortadan kaldırır.
euiBorderColor#E3E8F2 Satır içi, kontrol, panel ve çerçeve şekillerini birbirinden ayırın; herkese uygulanan tek bir köşe yarıçapı hiyerarşiyi ortadan kaldırır.
euiBorderRadiusInline4pxSatır içi, kontrol, panel ve çerçeve şekillerini birbirinden ayırın; herkese uygulanan tek bir köşe yarıçapı hiyerarşiyi ortadan kaldırır.
euiBorderRadiusControl8pxSatır içi, kontrol, panel ve çerçeve şekillerini birbirinden ayırın; herkese uygulanan tek bir köşe yarıçapı hiyerarşiyi ortadan kaldırır.
euiBorderRadiusPanel12pxSatır içi, kontrol, panel ve çerçeve şekillerini birbirinden ayırın; herkese uygulanan tek bir köşe yarıçapı hiyerarşiyi ortadan kaldırır.
euiBorderRadiusFrame16pxSatır içi, kontrol, panel ve çerçeve şekillerini birbirinden ayırın; herkese uygulanan tek bir köşe yarıçapı hiyerarşiyi ortadan kaldırır.

Odak ve hareket

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
euiFocusRingSize2pxDahili .eui seçicilerini geçersiz kılmak yerine yerel odak ve hareket davranışını koruyun.
euiFocusBackgroundColor#ECF1F9 Dahili .eui seçicilerini geçersiz kılmak yerine yerel odak ve hareket davranışını koruyun.
euiAnimSpeedExtraFast90msDahili .eui seçicilerini geçersiz kılmak yerine yerel odak ve hareket davranışını koruyun.
euiAnimSpeedFast150msDahili .eui seçicilerini geçersiz kılmak yerine yerel odak ve hareket davranışını koruyun.
euiAnimSpeedNormal250msDahili .eui seçicilerini geçersiz kılmak yerine yerel odak ve hareket davranışını koruyun.
euiAnimSpeedSlow350msDahili .eui seçicilerini geçersiz kılmak yerine yerel odak ve hareket davranışını koruyun.

Bu gezgindeki yerel API sözleşmesi

Kaynak
Ad / KuralDeğer / YapılandırmaKullanım
EuiProvidercolorMode="light" | "dark"Tema bağlamını ve Emotion stillerini sağlar.
useEuiTheme{ euiTheme }Özel öğeler ve EuiHealth için anlamsal renkleri çözümler.
EuiBasicTableitems · itemId · columnsDenetlenen görünür koleksiyonu kararlı kimliklerle işler.
EuiFieldSearchvalue · onChange · incrementalUygulama, altı olaydan oluşan yerel koleksiyona filtre uygular.
EuiButtonGroupoptions · idSelected · onChangeGörünür bir açıklama içeren denetimli önem derecesi filtresi.
EuiHealthcolor + readable child labelDurum noktası, önem derecesi sözcüğünü tamamlar; onun yerine geçmez.
03

Elastic UI 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-elastic-ui.md

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

Kılavuzu İndir

Elastic UI Tasarım Sistemi Gezgini Yapısı

Genel amaçlı bir gösterge paneli yerine inceleme çalışma alanı

Örnek, üç kısa özet istatistiği ve tek bir olay akışından oluşur. Arama alanı ve önem derecesi grubu bu akışı daraltır; her satırda bağımsız bir kaydetme eylemi bulunur. Eylemin olayın yanında olması, okuyucunun filtrelenmiş bağlamdan ayrılmadan kanıtları toplamasını sağlar. Özet, canlı trafiği temsil ettiğini iddia etmek yerine örnek olayları açıkça sayar.

Bu OpenDesign kılavuzundan

Geçerli tema sınırını kullanın

Bu örnekte EUI 123.0.0 ile Borealis 8.1.0 eşleştirilmiştir. Başvuru değerleri eski bir Amsterdam ekran görüntüsünden değil, yayımlanan temadan alınmıştır. Görsel modu ve stil bağlamını EuiProvider yönetir. Uygulama durumu tema hesaplamalarının dışında kalır; dolayısıyla görünümün değiştirilmesi kayıtlı olayları veya geçerli sorguyu sıfırlamaz.

Elastic UI Tasarım Sistemi Anlamsal Renk Rolleri

Önem derecesini anlamlı bir ilişki olarak gösterin

Bu uygulamada Bilgi için birincil rol, Uyarı için uyarı rolü, Hata için tehlike rolü kullanılır. EuiHealth, noktanın yanında önem derecesi sözcüğünü gösterir. Bu eşleme uygulama ilkesidir; birincil renkteki her öğenin bilgi önem derecesini temsil ettiği anlamına gelmez. Hata sayıları ve olay etiketleri yine de okunabilir metin içermelidir.

Renkleri etkin temadan çözümleyin

Ekran useEuiTheme çağırır ve çözümlenen renkleri tuvali, gövde metni ve sağlık göstergeleri için kullanır. Dışa aktarma tablolarında farkın görülebilmesi için açık ve koyu mod değerleri birlikte yer alır. Tek bir onaltılık renk değerini her iki moda da kopyalamayın veya eşleşme sağlamak için oluşturulan Emotion sınıf adlarını hedeflemeyin.

Elastic UI Tasarım Sistemi Tipografi ve Sayısal Hiyerarşi

Sayıyı vurgulamadan önce istatistiklere bağlam kazandırın

EuiStat; 6 örnek olayı, 1 hata olayını ve kayıtlı olay sayısını açıklamalarla birlikte sunar. Tek başına sayı belirsiz kalırdı. EuiTitle incelemeyi başlatır; EuiText ise zaman aralığını ve verilerin örnek niteliğini belirtir. Akış başlığı, ikinci bir sayfa başlığı olmak yerine daha küçük bir başlıktır.

Günlük metnini yoğun yerleşimde okunabilir tutun

Borealis'te temel dışa aktarma değeri 14px, satır yüksekliği başvuru değeri 1.5'tir; yazı boyutları 12/16/20/24/30px adımlarından oluşur. Zaman damgaları ve hizmet adları öngörülebilir sütunlarda yer alırken olay mesajına esnek genişlik ayrılır. Örnekte yerel yazı tipi yığını üzerinden kullanılabilir sistem yazı tipleri kullanılır; uzaktan yüklenen bir Inter varlığı olduğu iddia edilmez.

Elastic UI Tasarım Sistemi Temel Tablosu ve Denetimli Filtreler

Sunumu filtrelemeden ayırın

EuiBasicTable, önceden filtrelenmiş öğeleri alır. Sütunlar bir alanı veya özel işleyiciyi tanımlar; itemId ise kararlı olay kimliğini kullanır. EuiFieldSearch sorgu durumunu, EuiButtonGroup ise seçili önem derecesi kimliğini günceller. Görünür koleksiyonu tabloya iletmeden önce uygulama her iki koşulu birleştirir.

  1. Bir hizmet adı veya mesaj parçası yazın.
  2. Önem derecesi filtresine koşul eklemek için Hata veya Uyarı'yı seçin.
  3. Eşleşen bir olayı satır eylemiyle kaydedin.
  4. Filtreleri temizleyin ve kayıtlı olayın işaretli kaldığını doğrulayın.

Satır konumuna göre değil, olay kimliğine göre kaydedin

Elastic UI Tasarım Sistemi Boşlukları ve Duyarlı Veriler

Gruplar arasında yerel boşluk ölçeğini kullanın

Yayımlanan boyutlar 4, 8, 12, 16, 24, 32 ve 40px’tir. EuiSpacer ve EuiFlexGroup, özet istatistikler, filtreler ve olay tablosu arasındaki boşluğu sağlar. EuiPanel kapsayıcı biçimini belirler; tema, panelin 12px yarıçapını denetimlerin 8px ve çerçevelerin 16px yarıçaplarından ayırır.

Sayfayı mobil görünüm alanının içinde tutun

Özet ve filtre grupları, yerel FlexGroup davranışıyla yeniden düzenlenir. Tablo, yatay kaydırma için sınırlandırılmış ve uygulama genelinde 640px minimum genişliğe sahip bir alanda bulunur. Böylece tüm sayfanın taşmasına izin vermek yerine zaman damgası, ileti ve işlem arasındaki ilişkiler korunur. Üretim ortamındaki bir tablo, kendi sütun kümesine uygun belgelenmiş duyarlı tablo seçeneklerini kullanabilir.

Elastic UI Tasarım Sistemi Arama, Boş ve Kayıtlı Durumlar

Sonuç bulunamadığında arama doğrudan bir kurtarma işlemi sunar

Sonuç vermeyen bir sorguda “Geçerli filtrelerle eşleşen olay yok” iletisi ve Filtreleri temizle işlemi görüntülenir. Sorgu ve önem düzeyinin sıfırlanması, kayıtlı kimlikleri değiştirmeden altı örnek olayın tümünü geri yükler. Tablonun üzerindeki sayaç, eşleşen olay sayısını nazik bir canlı bölge aracılığıyla duyurur.

Yerel bir kayıt, olay yönetimi iş akışı değildir

Bir olayın kaydedilmesi, satırda görünen etiketi ve kayıtlı istatistik değerini değiştirir. Elasticsearch ile iletişim kurmaz, olay kaydı oluşturmaz ve yenileme sonrasında kalıcı olmaz. Gerçek bir inceleme ürününde, kayıtlı koleksiyonun kalıcı olduğunu öne sürmeden önce belgelenmiş bir kalıcılık uç noktası eklenmeli ve bekleyen ya da başarısız yanıtlar bildirilmelidir.

Elastic UI Tasarım Sistemi Erişilebilir Tablo İşlemleri

Filtreleri yer tutuculardan bağımsız biçimde adlandırın

Aramanın erişilebilir bir adı vardır ve düğme grubu önem düzeylerini belirtir. Tablo sütunlarının açıklayıcı başlıkları bulunur; her satırdaki işlem yerel bir EuiButtonEmpty bileşenidir. EuiHealth metin içerdiğinden, durum rengi hiçbir zaman tek bilgi kaynağı olmaz. Örnek verileri değiştirirken bu sözleşmeleri koruyun.

  • Önem düzeyini sözcüklerle belirtin.
  • Tablo başlığını ve sütun adlarını koruyun.
  • Kayıtlı durumu, kararlı olay kimliğiyle ilişkilendirin.

Klavye ve görsel durumu birlikte koruyun

Kullanıcılar arama alanına odaklanabilir, bir önem düzeyi filtresi seçebilir, satır işlemlerine erişebilir ve görünüm ayarını değiştirebilir. 2px odak halkası, tema referansının bir parçasıdır. Bir satırı kaydettikten ve filtreyi temizledikten sonra filtre uygulanmış bir kümeyi test edin; işlem etiketiyle kayıtlı istatistik birbiriyle tutarlı kalmalıdır.

Elastic UI Tasarım Sistemi Kurulumu ve Tema Entegrasyonu

Belgelenmiş eş bağımlılıkları yükleyin

Resmî kurulum kılavuzunda Yarn kullanılır; EUI’nin yanı sıra Borealis, Emotion, datemath ve moment listelenir. Bu örnek React 18 üzerinde çalışır ve bileşen ağacını StrictMode ile sarmalamaz. Aşağıdaki kurulum, yeni oluşturulmuş bir uygulamadan React 19 değerinin fark ettirmeden devralınması yerine bu kısıtları açıkça belirtir.

Uygulamanın tamamını giriş dosyası olarak değerlendirin

Elastic UI Tasarım Sistemi Bileşen Örnekleri

main.jsx — yerel günlük gezgininin tamamı

EuiProvider ve Borealis, önem düzeyi ve arama filtreleriyle denetimli bir olay tablosunu ve yerel kayıtlı olay durumunu destekler.

jsx
import React, { useState } from "react";
import { createRoot } from "react-dom/client";
import {
  EuiProvider,
  EuiPanel,
  EuiTitle,
  EuiText,
  EuiSpacer,
  EuiFlexGroup,
  EuiFlexItem,
  EuiFieldSearch,
  EuiButtonGroup,
  EuiButtonEmpty,
  EuiBasicTable,
  EuiHealth,
  EuiStat,
  EuiSwitch,
  EuiCallOut,
  useEuiTheme,
} from "@elastic/eui";
const logs = [
  {
    id: 1,
    time: "09:42:18",
    service: "gateway",
    message: "Request completed",
    level: "Info",
    duration: 42,
  },
  {
    id: 2,
    time: "09:42:21",
    service: "worker",
    message: "Retry queued after timeout",
    level: "Warning",
    duration: 1200,
  },
  {
    id: 3,
    time: "09:42:24",
    service: "gateway",
    message: "Upstream connection refused",
    level: "Error",
    duration: 800,
  },
  {
    id: 4,
    time: "09:42:29",
    service: "indexer",
    message: "Batch indexed",
    level: "Info",
    duration: 180,
  },
  {
    id: 5,
    time: "09:42:32",
    service: "worker",
    message: "Job completed",
    level: "Info",
    duration: 94,
  },
  {
    id: 6,
    time: "09:42:36",
    service: "gateway",
    message: "Upstream connection restored",
    level: "Info",
    duration: 51,
  },
];
function Screen({ dark, setDark }) {
  const { euiTheme } = useEuiTheme();
  const [query, setQuery] = useState(""),
    [level, setLevel] = useState("all"),
    [saved, setSaved] = useState([]);
  const visible = logs.filter(
    (x) =>
      (level === "all" || x.level === level) &&
      (x.service + " " + x.message).toLowerCase().includes(query.toLowerCase()),
  );
  const colors = {
    Info: euiTheme.colors.primary,
    Warning: euiTheme.colors.warning,
    Error: euiTheme.colors.danger,
  };
  const columns = [
    { field: "time", name: "Time", width: "105px" },
    { field: "service", name: "Service", width: "105px" },
    {
      field: "message",
      name: "Event",
      render: (value, item) => (
        <span>
          {value}
          {saved.includes(item.id) ? " · Saved locally" : ""}
        </span>
      ),
    },
    {
      field: "level",
      name: "Level",
      width: "110px",
      render: (value) => <EuiHealth color={colors[value]}>{value}</EuiHealth>,
    },
    {
      name: "Action",
      width: "110px",
      render: (item) => (
        <EuiButtonEmpty
          size="xs"
          onClick={() =>
            setSaved((v) =>
              v.includes(item.id)
                ? v.filter((id) => id !== item.id)
                : [...v, item.id],
            )
          }
        >
          {saved.includes(item.id) ? "Unsave" : "Save event"}
        </EuiButtonEmpty>
      ),
    },
  ];
  return (
    <main
      style={{
        padding: 24,
        background: euiTheme.colors.backgroundBasePlain,
        color: euiTheme.colors.textParagraph,
      }}
    >
      <EuiFlexGroup justifyContent="spaceBetween" alignItems="center">
        <EuiFlexItem>
          <EuiText size="xs">
            <p>ELASTIC UI · LOG EXPLORER</p>
          </EuiText>
          <EuiTitle size="m">
            <h1>Investigate gateway events</h1>
          </EuiTitle>
        </EuiFlexItem>
        <EuiFlexItem grow={false}>
          <EuiSwitch
            label="Dark mode"
            checked={dark}
            onChange={(e) => setDark(e.target.checked)}
          />
        </EuiFlexItem>
      </EuiFlexGroup>
      <EuiSpacer size="l" />
      <EuiFlexGroup>
        <EuiFlexItem>
          <EuiPanel>
            <EuiStat title="6" description="Sample events" titleSize="m" />
          </EuiPanel>
        </EuiFlexItem>
        <EuiFlexItem>
          <EuiPanel>
            <EuiStat
              title="1"
              description="Error event"
              titleSize="m"
              titleColor="danger"
            />
          </EuiPanel>
        </EuiFlexItem>
        <EuiFlexItem>
          <EuiPanel>
            <EuiStat
              title={String(saved.length)}
              description="Saved in this preview"
              titleSize="m"
            />
          </EuiPanel>
        </EuiFlexItem>
      </EuiFlexGroup>
      <EuiSpacer size="l" />
      <EuiPanel>
        <EuiTitle size="xs">
          <h2>Event stream</h2>
        </EuiTitle>
        <EuiText size="s">
          <p>09:42:18–09:42:36 · fictional data · no live telemetry</p>
        </EuiText>
        <EuiSpacer size="m" />
        <EuiFlexGroup alignItems="center">
          <EuiFlexItem>
            <EuiFieldSearch
              fullWidth
              aria-label="Search log events"
              placeholder="Search service or message"
              value={query}
              onChange={(e) => setQuery(e.target.value)}
              incremental
            />
          </EuiFlexItem>
          <EuiFlexItem grow={false}>
            <EuiButtonGroup
              legend="Filter severity"
              options={[
                { id: "all", label: "All" },
                { id: "Warning", label: "Warning" },
                { id: "Error", label: "Error" },
              ]}
              idSelected={level}
              onChange={(id) => setLevel(id)}
            />
          </EuiFlexItem>
        </EuiFlexGroup>
        <EuiSpacer size="m" />
        <EuiText size="xs">
          <p aria-live="polite">{visible.length} matching events</p>
        </EuiText>
        <div style={{ overflowX: "auto", maxWidth: "100%" }}>
          <div style={{ minWidth: 640 }}>
            <EuiBasicTable
                  responsiveBreakpoint={false}
              items={visible}
              itemId="id"
              columns={columns}
              tableCaption="Fictional application events"
              noItemsMessage="No events match the current filters."
            />
          </div>
        </div>
        {!visible.length && (
          <EuiButtonEmpty
            onClick={() => {
              setLevel("all");
              setQuery("");
            }}
          >
            Clear filters
          </EuiButtonEmpty>
        )}
      </EuiPanel>
      <EuiSpacer size="l" />
      <EuiCallOut size="s" title="Local investigation workspace">
        Saving an event only changes this preview. No query is sent to
        Elasticsearch and no incident is created.
      </EuiCallOut>
      <EuiSpacer size="m" />
      <EuiText size="xs">
        <p>
          Native Elastic UI 123.0.0 · Borealis 8.1.0 theme · controlled filters
          and table actions.
        </p>
      </EuiText>
    </main>
  );
}
function App() {
  const [dark, setDark] = useState(false);
  return (
    <EuiProvider colorMode={dark ? "dark" : "light"}>
      <Screen dark={dark} setDark={setDark} />
    </EuiProvider>
  );
}
createRoot(document.getElementById("root")).render(<App />);

Kod referansı

  • React iskeletinde src/main.jsx olarak kaydedin. Bu girişte özellikle StrictMode etkinleştirilmemiştir.
  • 640px sınırlandırılmış tablo genişliği uygulamaya özgüdür CSS; tüm bileşen görselleri EUI’den gelir.

Temaya duyarlı özel not

Özel işaretlemeyi oluşturulan bileşen sınıflarına bağlamak yerine, sağlayıcı içindeyken etkin temayı kullanın.

jsx
import React from 'react';
import { useEuiTheme } from '@elastic/eui';
export function InvestigationNote({ children }) {
  const { euiTheme } = useEuiTheme();
  return <aside style={{ padding: euiTheme.size.m, color: euiTheme.colors.textParagraph, borderLeft: `2px solid ${euiTheme.colors.primary}` }}>{children}</aside>;
}

Kod referansı

  • InvestigationNote bileşenini EuiProvider altında oluşturun. Not, seçili görünüm modunu devralır.
04

Elastic UI Tasarım Sistemi Aracı Kurulumu

Uygulamaya Başlangıç Noktası

Resmî EUI kılavuzunda Yarn kurulumu ve React 18 desteği belgelenmiştir. Webpack dışındaki paketleyicilerle ilgili uyarılar da belgelenmiştir; bu yerel örnek esbuild ile paketlenmiş ve tarayıcıda test edilmiştir. İskeletinizin desteklediği bir Node.js sürümünü kullanın.

sh
yarn create vite elastic-investigation --template react
cd elastic-investigation
yarn add [email protected] [email protected] @elastic/[email protected] @elastic/[email protected] @elastic/datemath @emotion/react @emotion/css moment
# Replace src/main.jsx with the complete example above.
yarn dev

Projeniz İçin Bir İstem

Ajan İstemi
Elastic UI 123.0.0, Borealis 8.1.0 ve React 18 ile bir günlük inceleme ekranı oluşturun. Sağlanan tema dışa aktarımını ve yerel kaynak kodunu inceleyin. EuiProvider, denetimli bir EuiBasicTable ve erişilebilir arama ile önem düzeyi filtrelerini kullanın. Kararlı olay kimliklerine göre kayıt yapın, filtreleme sırasında yer işaretlerini koruyun ve yerel arayüz durumunu gerçek bir Elasticsearch sorgusundan ya da kalıcılık yanıtından ayırın. Tabloyu mobil ekranda kapsayıcı içinde tutun.
05

Elastic UI Tasarım Sistemi Kaynakları ve Kapsamı

OpenDesign tarafından hazırlanan kılavuz ve Borealis 8.1.0 ile yerel Elastic UI 123.0.0 üzerinde çalışan, kurguya dayalı yerel günlük gezgini. Örnek olaylar canlı telemetri değildir ve kaydetme işlemi yalnızca bellek içindedir. EUI, Elastic/SSPL lisanslama seçeneklerini kendi bünyesinde barındırır; dağıtımınız için resmî paket lisansına başvurun.