Gerçek tema değerleri, denetimli etiket girişi, kurallarla canlı eşleşme, boş durumdan kurtarma akışı ve yerel inceleme iletişim kutusu içeren bir Evergreen örneği.
Evergreen bu temada semibold değerini 500, bold değerini 600 olarak tanımlar; bunları sessizce tarayıcının varsayılan anahtar sözcük değerleriyle değiştirmeyin.
fontWeights.normal
400
Evergreen bu temada semibold değerini 500, bold değerini 600 olarak tanımlar; bunları sessizce tarayıcının varsayılan anahtar sözcük değerleriyle değiştirmeyin.
fontWeights.semibold
500
Evergreen bu temada semibold değerini 500, bold değerini 600 olarak tanımlar; bunları sessizce tarayıcının varsayılan anahtar sözcük değerleriyle değiştirmeyin.
fontWeights.bold
600
Evergreen bu temada semibold değerini 500, bold değerini 600 olarak tanımlar; bunları sessizce tarayıcının varsayılan anahtar sözcük değerleriyle değiştirmeyin.
Segment Evergreen Tasarım Sistemi Hedef Kitle Oluşturucu Yapısı
Kuralları sonuçlarının yanında tutun
Örnek, kural panelini eşleşen kurgusal kayıtlarla birlikte sunar. Plan seçimi ve zorunlu etiketler, sonuç sayısıyla aynı anda görünür; böylece bir kuralı değiştirmenin etkisi anlaşılır. Kullanıcının geçerli birleşimin herhangi biriyle eşleşip eşleşmediğini görmek için kaydetmesi ya da iletişim kutusu açması gerekmez.
Sınırlı ve şeffaf bir örnek veri kümesi kullanın
Adlandırılmış beş örnek kayıt, planlarını ve etiketlerini gösterir. Sayfa, müşteri veri ambarını sorguladığını veya gerçek bir hedef kitle büyüklüğünü tahmin ettiğini iddia etmez. Sıfır sonuç da örneğin yararlı bir parçasıdır ve tüm örnek veri kümesini geri yükleyen bir eylem sunulur.
Segment Evergreen Tasarım Sistemi Tema Değerleri ve Anlambilimi
Gerçek varsayılan temayı inceleyin
Evergreen 7.1.9, adlandırılmış renkler ve bileşen stillerinin yanı sıra dizinlenmiş köşe yarıçapları, yazı tipi boyutları ve satır yükseklikleri sağlar. Tablo, dışa aktarılan bu değerleri değiştirmeden korur. Özellikle yazı tipi kalınlığı adlarını incelemekte fayda var: semibold ve bold, yaygın varsayımlardan farklı olarak 500 ve 600 değerlerine karşılık gelir.
Özel düzenlemeyi uyumlu tutun
ThemeProvider; yerel girdileri, etiketleri, rozetleri, düğmeleri ve iletişim kutusunu sağlar. Özel paneller aynı ölçülü soğuk gri ve mavi ilişkisini kullanır. Örnek, yerel bileşenlerin iç yapısını geniş kapsamlı CSS seçicilerle ezmez; böylece sağlanan etkileşim stilleri korunur.
Segment Evergreen Tasarım Sistemi Kural Düzenleme Tipografisi
Görev için net bir hiyerarşi oluşturun
Başlık rolleri; hedef kitle başlığını panel başlıklarından ve tek tek sonuç adlarından ayırır. Açıklama metni, etiket girişini ve kurgusal verilerin kapsamını açıklar. Sayı rozeti, sonuç başlığının yerine geçmek yerine yanında yer alır; böylece kullanıcı sayıyı yorumlamadan önce ilgili bölümü belirleyebilir.
Meta verileri okunaklı tutun
Plan ve etiket bilgileri eşleşme açıklamasını destekler; yalnızca dekoratif değildir. Düzen, etiketlerin satır atlamasına izin verir ve dar telefon ekranlarında kaydın metniyle rozetlerini alt alta dizer. Her etiketi küçücük metne dönüştürmek, kullanıcının kuralları anlamak için ihtiyaç duyduğu kanıtları gizler.
Segment Evergreen Tasarım Sistemi Ana ve Ara Ölçekleri
Tekrarlanabilir aralıklar için işlevleri kullanın
majorScale ve minorScale, sekiz ve dört piksellik adımları ifade eder. Bileşen örneği, panel başlığı için 24px aralıkta majorScale(3) kullanırken özel stil sayfası duyarlı düzenlemeyi yönetir. Bu ayrımı net tutun: ızgara kesme noktası bir uygulama kararıdır, aralık işlevinin sonucu değildir.
Mobilde alanlar arasındaki ilişkileri koruyun
Segment Evergreen Tasarım Sistemi Kontrollü Etiketler ve Eşleştirme
Değerleri kabul etmeden önce normalleştirin
onChange işleyicisi dizelerin başındaki ve sonundaki boşlukları kaldırır, harfleri küçültür, yinelenenleri ayıklar ve dört farklı etiketten fazlasını reddeder. Eklenen değer reddedildiğinde false döndürmek, girdiyi korur. Bu ilke hedef kitle uygulamasına aittir; TagInput, iş kuralı sınırı belirlemek yerine kontrollü etkileşimi sağlar.
Tüm etiketlerle eşleştirmeyi bilinçli kullanın
Bir kaydın eşleşmesi için seçilen planı ve zorunlu etiketlerin tümünü karşılaması gerekir. Etiketleri temizlemek bu kısıtlamayı kaldırır; Any seçeneğini belirlemek plan kısıtlamasını kaldırır. Geçerli sonuç sayısı, ekranda gösterilen kartlarla aynı filtrelenmiş diziden hesaplanır; böylece sayı ile görünür kartların tutarsız olması önlenir.
Segment Evergreen Tasarım Sistemi İnceleme İletişim Kutusu ve Yerel Anlık Görüntü
Kaydetmeden önce geçerli kuralları gözden geçirin
İletişim kutusu açılmadan önce hedef kitle adı boş olmamalıdır. İletişim kutusunda ad, sonuç sayısı, plan ve etiketler yinelenir; ardından yerel olarak kaydetme seçeneği sunulur. Bu ek adım, yalnızca "Emin misiniz?" diyen boş bir onay yerine somut bir anlık görüntü etrafında yerel bir katman kullanımını gösterir.
Kurallar değiştiğinde önceki başarı durumunu geçersiz kılın
Adın, planın veya etiketlerin değiştirilmesi, kaydedilmiş anlık görüntü göstergesini temizler. Böylece önceki yerel başarı, yeni düzenlenen kuralların onayı sanılamaz. Uygulama, anlık görüntüyü Segment hedef kitlesi olarak tanımlamaz ve müşteri platformuna istek göndermez.
Segment Evergreen Tasarım Sistemi Klavye Girişi ve İletişim Kutusu Kurtarma
Etiketleri, sonuçları ve incelemeyi tek akışta sınayın
Etiketler belgelenen giriş tuşlarıyla eklenebilir ve input, id değeri üzerinden görünür bir etiket alır. Etiket sınırının aşılması, yerel bir danger uyarısı görüntüler. İnceleme, odağı yönetmeyen elle oluşturulmuş bir katman yerine yerel Dialog odak davranışını kullanır.
Başlangıçtaki etkin etikete newsletter ekleyin ve sonuç sayısını karşılaştırın.
Eşleşmeyen bir etiket ekleyin, ardından beş kaydı geri getirmek için kuralları temizleyin.
Yerel olarak inceleyip kaydedin, ardından bir kuralı değiştirerek önceki başarı göstergesinin kaybolduğunu doğrulayın.
Boş durumdan kurtarma seçeneğini geçerli görevin içinde tutun
Kuralları temizlemek hem plan hem de etiket kısıtlamalarını kaldırır ve artık geçerli olmayan kayıtlı durumu kapatır. Böylece sonuç bölgesinde beş kaydın tümü yeniden görünür. Kullanıcı hemen düzenlemeye devam edebilir; gizli bir gezinme veya sayfanın yeniden yüklenmesi gerekmez.
Segment Evergreen Tasarım Sistemi React Entegrasyonu
Eksiksiz ve kontrollü bir örnek kullanın
Yerel giriş, ThemeProvider, defaultTheme ve görüntülediği bileşenleri içe aktarır. Durum; kuralları, hataları, iletişim kutusunun görünürlüğünü ve yerel kaydedilmiş anlık görüntüyü tutar. Aşağıdaki eksiksiz JSX ve CSS, kurgusal veri kümesini içerir; böylece sonuç hesaplaması harici bir API olmadan tekrarlanabilir.
ThemeProvider, sabitlenmiş defaultTheme değerini kullanır.
TagInput değerleri uygulama tarafından denetlenir.
Dialog, sonuç listesinde kullanılan aynı kuralları gözden geçirir.
Veri erişimini ayrı bir uygulama katmanı olarak ekleyin
Segment Evergreen Tasarım Sistemi Bileşen Örnekleri
main.jsx — eksiksiz çalışan örnek
Yerel bir hedef kitle oluşturup inceleyin. Aşağıdaki kaynak, tüm durum ve doğrulama mantığını içeren eksiksiz React girişidir.
jsx
import React, { useState } from "react";
import { createRoot } from "react-dom/client";
import {
ThemeProvider,
defaultTheme,
Heading,
Text,
Paragraph,
Button,
TagInput,
TextInputField,
SelectField,
Alert,
Dialog,
Badge,
majorScale,
} from "evergreen-ui";
import "./evergreen.css";
const people = [
{ name: "Avery Stone", plan: "Pro", tags: ["active", "newsletter"] },
{ name: "Taylor Reed", plan: "Free", tags: ["newsletter"] },
{ name: "Jordan Park", plan: "Pro", tags: ["active"] },
{ name: "Morgan Lee", plan: "Team", tags: ["active", "newsletter"] },
{ name: "Casey Chen", plan: "Free", tags: ["trial"] },
];
function App() {
const [tags, setTags] = useState(["active"]),
[plan, setPlan] = useState("Any"),
[name, setName] = useState("Active customers"),
[error, setError] = useState(""),
[open, setOpen] = useState(false),
[saved, setSaved] = useState(null);
const matches = people.filter(
(p) =>
(plan === "Any" || p.plan === plan) &&
tags.every((t) => p.tags.includes(t)),
);
function changeTags(values) {
const unique = [
...new Set(values.map((v) => v.trim().toLowerCase()).filter(Boolean)),
];
if (unique.length > 4) {
setError("Use at most four tags.");
return false;
}
setTags(unique);
setError("");
setSaved(null);
}
return (
<ThemeProvider value={defaultTheme}>
<main className="audience">
<header>
<Text size={300}>WORKSPACE / AUDIENCES</Text>
<Heading size={700} marginTop={8}>
Build a focused audience
</Heading>
<Paragraph marginTop={8}>
Combine a plan and tags against five fictional records. No customer
data is loaded.
</Paragraph>
</header>
<div className="audience-grid">
<section className="rule-panel">
<Heading size={500} marginBottom={majorScale(3)}>
Audience rules
</Heading>
<TextInputField
label="Audience name"
value={name}
onChange={(e) => {
setName(e.target.value);
setSaved(null);
}}
/>
<SelectField
label="Plan"
value={plan}
onChange={(e) => {
setPlan(e.target.value);
setSaved(null);
}}
>
<option>Any</option>
<option>Free</option>
<option>Pro</option>
<option>Team</option>
</SelectField>
<label htmlFor="audience-tags">Required tags</label>
<Paragraph size={300} marginBottom={8}>
Press Enter or comma to add a tag. Every tag must match.
</Paragraph>
<TagInput
values={tags}
onChange={changeTags}
width="100%"
inputProps={{ id: "audience-tags", placeholder: "Add tag…" }}
/>
<Paragraph size={300} marginTop={8}>
Available sample tags: active, newsletter, trial.
</Paragraph>
{error && <Alert intent="danger" title={error} marginTop={16} />}
<Button
appearance="primary"
marginTop={24}
onClick={() => {
if (!name.trim()) {
setError("Name the audience before reviewing.");
return;
}
setError("");
setOpen(true);
}}
>
Review audience
</Button>
</section>
<section className="results-panel">
<div className="results-title">
<Heading size={500}>Matching sample records</Heading>
<Badge color="blue">
{matches.length} of {people.length}
</Badge>
</div>
{matches.length ? (
<div className="record-list">
{matches.map((p) => (
<article key={p.name}>
<div>
<Heading size={400}>{p.name}</Heading>
<Text size={300}>{p.plan} plan</Text>
</div>
<div className="tag-list">
{p.tags.map((t) => (
<Badge key={t} color="neutral">
{t}
</Badge>
))}
</div>
</article>
))}
</div>
) : (
<div className="empty">
<Heading size={500}>No matching sample records</Heading>
<Paragraph marginTop={8}>
Remove a tag or change the plan to broaden the selection.
</Paragraph>
<Button
marginTop={16}
onClick={() => {
setTags([]);
setPlan("Any");
setSaved(null);
}}
>
Clear rules
</Button>
</div>
)}
{saved && (
<Alert
intent="success"
title="Local audience saved"
marginTop={20}
>
{saved.name} · {saved.count} sample records. Nothing was sent to
Segment.
</Alert>
)}
</section>
</div>
<Dialog
isShown={open}
title="Review local audience"
onCloseComplete={() => setOpen(false)}
confirmLabel="Save locally"
onConfirm={() => {
setSaved({ name: name.trim(), count: matches.length });
setOpen(false);
}}
width={560}
>
<Paragraph>
<strong>{name}</strong> matches {matches.length} of {people.length}{" "}
fictional records.
</Paragraph>
<Paragraph marginTop={12}>
Plan: {plan}. Required tags: {tags.join(", ") || "none"}.
</Paragraph>
<Paragraph marginTop={12}>
This saves only a local snapshot; it does not create a Segment
audience.
</Paragraph>
</Dialog>
<footer>
Native Evergreen 7.1.9 React components. Original audience logic; no
analytics or customer service connection.
</footer>
</main>
</ThemeProvider>
);
}
createRoot(document.getElementById("root")).render(<App />);
main.jsx dosyasının yanına kaydedin. Bu özel düzen kuralları, kitaplığın belirteç başvurusundan ayrı tutulmuştur.
04
Segment Evergreen Tasarım Sistemi Yapay Zekâ Aracısı Kurulumu
Uygulamaya Başlangıç Noktası
Sabitlenmiş yerel örnek pakete alındı ve tarayıcıda yerel olarak kontrol edildi. Örnek yalnızca yerel uygulama durumunu kullanır.
sh
npm create vite@latest evergreen-audience -- --template react
cd evergreen-audience
npm install
npm install [email protected][email protected][email protected]
# Replace src/main.jsx and add src/evergreen.css.
npm run dev
Projeniz İçin Bir İstem
Ajan İstemi
Gerçek temayı ve kontrollü TagInput bileşenini kullanarak bir Evergreen hedef kitle düzenleyicisi oluşturun. Etiketleri normalleştirip yinelenenleri ayıklayın, tüm etiketlerle eşleştirmeyi açıkça belirtin, sonuçların ve sayıların tutarlı kalmasını sağlayın, yerel Dialog içinde inceleme sunun ve kurallar değiştiğinde eski başarı durumunu temizleyin. Segment hizmeti bağlantısı olduğunu iddia etmeyin.
05
Segment Evergreen Tasarım Sistemi Kaynakları ve Kapsamı
OpenDesign Evergreen 7.1.9 için uygulama kılavuzu. Beş kurgusal kayıt, yerel filtrelemeyi ve anlık görüntü incelemesini gösterir. Segment müşteri verileri veya hedef kitle API bağlantısı yoktur.