Аналитика данных · Новый ресурс

Дизайн-система Semrush Intergalactic.

Руководство по Intergalactic с актуальными семантическими токенами и токенами диаграмм, встроенными элементами управления фильтрацией, сравнением в фиксированном масштабе, сведениями о выбранном объекте и полным воспроизводимым примером данных.

Руководство OpenDesign8 глав38 справочных записейАвторское руководство по приложению
01

Предпросмотр интерфейса дизайн-системы Semrush Intergalactic

Фильтруйте данные, оставляйте только отслеживаемые записи, меняйте метрику и изучайте значения выбранного элемента, не теряя контекст шкалы.

Сравните вымышленный набор ключевых словОткрыть полный пример
Стандартные элементы управления Intergalactic из @semcore/ui 17.6.0 с @semcore/theme 2.3.1; оригинальная диаграмма сравнения в виде столбцов HTML. · Справочник по реализации
02

Справочник по дизайн-системе Semrush Intergalactic

Стандартные элементы управления Intergalactic из @semcore/ui 17.6.0 с @semcore/theme 2.3.1; оригинальная диаграмма сравнения в виде столбцов HTML.

Семантические роли светлой темы

Источник
Название / правилоЗначение / конфигурацияПрименение
--intergalactic-bg-primary-neutraloklch(1 0 0)Текущее семантическое значение в закрепленной теме, включая выражения OKLCH.
--intergalactic-bg-secondary-neutraloklch(0.98 0.001 180)Текущее семантическое значение в закрепленной теме, включая выражения OKLCH.
--intergalactic-text-primaryoklch(0.1 0.03 137 / 0.899)Текущее семантическое значение в закрепленной теме, включая выражения OKLCH.
--intergalactic-text-secondaryoklch(0.088 0.026 147.7 / 0.583)Текущее семантическое значение в закрепленной теме, включая выражения OKLCH.
--intergalactic-border-primaryoklch(0.137 0.026 175.7 / 0.161)Текущее семантическое значение в закрепленной теме, включая выражения OKLCH.
--intergalactic-control-primary-infooklch(0.23 0.01 140)Текущее семантическое значение в закрепленной теме, включая выражения OKLCH.
--intergalactic-control-primary-info-hoveroklch(0.32 0.007 140)Текущее семантическое значение в закрепленной теме, включая выражения OKLCH.
--intergalactic-control-primary-info-activeoklch(0 0 140)Текущее семантическое значение в закрепленной теме, включая выражения OKLCH.
--intergalactic-control-rounded6pxТекущее семантическое значение в закрепленной теме, включая выражения OKLCH.

Размеры текста

Источник
Название / правилоЗначение / конфигурацияПрименение
--intergalactic-fs-5010pxОпубликованный шаг размера текста; выберите роль для иерархии информации.
--intergalactic-fs-10012pxОпубликованный шаг размера текста; выберите роль для иерархии информации.
--intergalactic-fs-20014pxОпубликованный шаг размера текста; выберите роль для иерархии информации.
--intergalactic-fs-30016pxОпубликованный шаг размера текста; выберите роль для иерархии информации.
--intergalactic-fs-40020pxОпубликованный шаг размера текста; выберите роль для иерархии информации.
--intergalactic-fs-50024pxОпубликованный шаг размера текста; выберите роль для иерархии информации.
--intergalactic-fs-60032pxОпубликованный шаг размера текста; выберите роль для иерархии информации.
--intergalactic-fs-70036pxОпубликованный шаг размера текста; выберите роль для иерархии информации.
--intergalactic-fs-80048pxОпубликованный шаг размера текста; выберите роль для иерархии информации.

Интервалы

Источник
Название / правилоЗначение / конфигурацияПрименение
--intergalactic-spacing-1x4pxИменованный шаг отступа из таблицы стилей темы.
--intergalactic-spacing-2x8pxИменованный шаг отступа из таблицы стилей темы.
--intergalactic-spacing-3x12pxИменованный шаг отступа из таблицы стилей темы.
--intergalactic-spacing-4x16pxИменованный шаг отступа из таблицы стилей темы.
--intergalactic-spacing-5x20pxИменованный шаг отступа из таблицы стилей темы.
--intergalactic-spacing-6x24pxИменованный шаг отступа из таблицы стилей темы.
--intergalactic-spacing-8x32pxИменованный шаг отступа из таблицы стилей темы.
--intergalactic-spacing-10x40pxИменованный шаг отступа из таблицы стилей темы.
--intergalactic-spacing-05x2pxИменованный шаг отступа из таблицы стилей темы.

Скругления

Источник
Название / правилоЗначение / конфигурацияПрименение
--intergalactic-rounded-extra-small2pxВыбирайте радиус скругления с учетом компонента, а не используйте повсеместно большое скругление.
--intergalactic-rounded-small4pxВыбирайте радиус скругления с учетом компонента, а не используйте повсеместно большое скругление.
--intergalactic-rounded-medium6pxВыбирайте радиус скругления с учетом компонента, а не используйте повсеместно большое скругление.
--intergalactic-rounded-large12pxВыбирайте радиус скругления с учетом компонента, а не используйте повсеместно большое скругление.
--intergalactic-rounded-extra-large24pxВыбирайте радиус скругления с учетом компонента, а не используйте повсеместно большое скругление.

Первые шесть цветов диаграммы

Источник
Название / правилоЗначение / конфигурацияПрименение
--intergalactic-chart-palette-order-1oklch(0.58 0.168 278.2)Цвет упорядоченного ряда данных. В примере для единственного ряда используется первая роль.
--intergalactic-chart-palette-order-2oklch(0.82 0.15 170)Цвет упорядоченного ряда данных. В примере для единственного ряда используется первая роль.
--intergalactic-chart-palette-order-3oklch(0.74 0.17 303)Цвет упорядоченного ряда данных. В примере для единственного ряда используется первая роль.
--intergalactic-chart-palette-order-4oklch(0.82 0.18 80)Цвет упорядоченного ряда данных. В примере для единственного ряда используется первая роль.
--intergalactic-chart-palette-order-5oklch(0.74 0.19 22)Цвет упорядоченного ряда данных. В примере для единственного ряда используется первая роль.
--intergalactic-chart-palette-order-6oklch(0.82 0.088 272.1)Цвет упорядоченного ряда данных. В примере для единственного ряда используется первая роль.
03

Полное руководство по дизайн-системе Semrush Intergalactic

Практическое руководство по выбору, применению и оценке этой системы для реального интерфейса.

DESIGN-semrush-intergalactic.md

Подробные рекомендации, отправная точка для реализации и ссылки на источники.

Скачать руководство

Макет аналитического рабочего пространства дизайн-системы Semrush Intergalactic

Определите вопрос для сравнения

В примере шесть вымышленных ключевых слов сравниваются по одной выбранной метрике. Над результатами расположены фильтр, переключатель отображения только отслеживаемых элементов и кнопки выбора метрики. В отдельной панели сведений показаны обе метрики для выбранного термина, поэтому можно сопоставить его место в рейтинге с исходными значениями.

Из этого руководства OpenDesign

Отделяйте исходные данные от результатов измерений

Все числа взяты из фиксированного набора примеров и обозначены как иллюстративные. Страница не представляет объем поиска или сложность как актуальные измерения Semrush. За диаграммой не стоят сетевые запросы, аналитическая учетная запись или загруженный набор клиентских данных.

Генерация темы и токенов дизайн-системы Semrush Intergalactic

Используйте актуальный пакет темы осознанно

В среде выполнения закреплены версии @semcore/ui 17.6.0 и @semcore/theme 2.3.1. Для стандартных компонентов необходим актуальный пакет темы, а точка входа импортирует его light.css. В таблице сохранены значения OKLCH из этой таблицы стилей, а не заменены посторонними устаревшими значениями в шестнадцатеричном формате.

Разделяйте роли компонентов и диаграммы

Внешний вид стандартных элементов управления задается стилями Intergalactic, а в оригинальной диаграмме сравнения столбцов используется первая роль палитры диаграмм для ряда данных. Выбор обозначается сдержанным фоном строки и состоянием нажатия. Не следует без разбора использовать цвет ряда данных для всех кнопок действий и сообщений об ошибках.

Типографика дизайн-системы Semrush Intergalactic для плотного представления результатов

Не разделяйте подписи, единицы измерения и значения

В каждой строке диаграммы рядом с термином указано числовое значение. Небольшая подпись к оси уточняет, что отображается: количество поисковых запросов в выборке или оценка по шкале от 0 до 100. В панели сведений повторяются обе единицы измерения, чтобы похожая длина столбцов не создавала впечатление, будто метрики взаимозаменяемы.

Используйте компактный текст, не скрывая контекст

Для удобства фильтрации стандартное поле ввода имеет большой размер. Подписи результатов остаются компактными, а название рабочего пространства и заголовки разделов набраны крупнее. На узком экране ключевое слово переносится над столбцом и значением, а не обрезается до нечитаемого фрагмента.

Масштаб диаграммы и сортировка в дизайн-системе Semrush Intergalactic

Сохраняйте масштаб при фильтрации

В диаграмме объема поисковых запросов максимум всегда равен 8,100, а в диаграмме сложности — 100. При фильтрации оставшийся самый длинный столбец не растягивается на всю ширину. Такое решение сохраняет смысл сравнения, когда пользователь сокращает набор данных.

Сортируйте по активной метрике

Стандартные поле ввода и флажок дизайн-системы Semrush Intergalactic

Используйте составную структуру поля ввода

Input задает внешний компонент, а Input.Value — непосредственно редактируемый элемент управления. Его обработчик onChange первым получает строковое значение; это отличается от стандартного события изменения DOM. Видимая подпись ссылается на id компонента Value.

Разделяйте текстовый фильтр и логическое условие

Обработчик onChange стандартного Checkbox получает логическое значение checked. При формировании строк объединяются фильтр по тексту и состояние отображения только отслеживаемых элементов, поэтому любой из них может привести к пустому результату. Сброс фильтров восстанавливает оба элемента управления, сохраняя контекст выбранной панели сведений.

Выбранный элемент и пустое состояние в дизайн-системе Semrush Intergalactic

Сохраняйте привязку выбранного элемента к его идентификатору

Выбранный термин хранится независимо от порядка элементов массива. Нажатие на столбец обновляет выбранный термин и его состояние нажатия, а панель сведений получает полную запись из набора примеров. Сортировка по другой метрике не приводит к незаметному переключению панели сведений на строку с другим индексом.

Поясняйте, если выбранный элемент скрыт фильтром

Если выбранный термин больше не отображается, панель сведений остается доступной и содержит пояснение. Это удобно, когда нужно сравнить элемент до и после фильтрации. В области пустого результата есть явное действие сброса — вместо пустой панели диаграммы.

Дизайн-система Semrush Intergalactic: доступное сравнение данных

Сделайте диаграмму понятной без цвета

Столбцы представлены декоративными span внутри настоящих кнопок. Термин и значение образуют доступный для восприятия текст, а aria-pressed указывает на выбранный элемент. Данные остаются понятными и без визуального представления длины столбца или цвета ряда. Фокус клавиатуры заметно отличается от оформления выбранной строки.

  1. Выберите «Сложность» и проверьте порядок столбцов и единицы измерения оценки.
  2. Отфильтруйте отсутствующий в наборе термин и нажмите «Сбросить фильтры».
  3. Выберите термин, скройте его фильтром и прочитайте пояснение о сохраненном выборе.

Проверьте восстановление после фильтрации

Стандартные поле ввода и флажок предоставляют доступ к реальным элементам управления. Для переключения метрики используются кнопки с состоянием нажатия, а оригинальное действие сброса очищает оба фильтра. Макет сохраняет на виду заголовок результатов и примечание о единицах измерения, чтобы контекст не терялся ни при пустом, ни при заполненном результате.

Импорт компонентов и настройка темы дизайн-системы Semrush Intergalactic

Импортируйте точки входа компонентов

Корневой модуль @semcore/ui намеренно вызывает ошибку вместо экспорта всех компонентов. В этом примере кнопка, поле ввода и флажок импортируются из отдельных точек входа, а @semcore/theme/light.css — напрямую. Полная точка входа содержит набор примеров и всю логику формирования данных.

  • Отдельные импорты @semcore/ui/button, input и checkbox.
  • Закрепленная версия @semcore/theme/light.css.
  • Оригинальная логика столбчатой диаграммы с фиксированным масштабом и набором примеров в полном JSX.

Не называйте пользовательские столбцы стандартной диаграммой D3

Примеры компонентов дизайн-системы Semrush Intergalactic

main.jsx — полный рабочий образец

Сравните вымышленный набор ключевых слов. Ниже приведен полный исходный код точки входа React, включая все состояния и проверки.

jsx
import React, { useState } from "react";
import { createRoot } from "react-dom/client";
import Button from "@semcore/ui/button";
import Input from "@semcore/ui/input";
import Checkbox from "@semcore/ui/checkbox";
import "@semcore/theme/light.css";
import "./intergalactic.css";
const data = [
  { term: "design tokens", volume: 8100, difficulty: 42, tracked: true },
  { term: "component library", volume: 6600, difficulty: 58, tracked: false },
  { term: "accessible forms", volume: 2900, difficulty: 31, tracked: true },
  {
    term: "responsive typography",
    volume: 1900,
    difficulty: 24,
    tracked: false,
  },
  { term: "semantic colors", volume: 1300, difficulty: 18, tracked: false },
  { term: "design system audit", volume: 720, difficulty: 36, tracked: true },
];
function App() {
  const [q, setQ] = useState(""),
    [tracked, setTracked] = useState(false),
    [metric, setMetric] = useState("volume"),
    [selected, setSelected] = useState("design tokens");
  const rows = data
    .filter((d) => d.term.includes(q.toLowerCase()) && (!tracked || d.tracked))
    .sort((a, b) => b[metric] - a[metric]);
  const max = metric === "volume" ? 8100 : 100;
  const item = data.find((d) => d.term === selected);
  return (
    <main className="research">
      <header>
        <p>RESEARCH WORKSPACE / FICTIONAL DATA</p>
        <h1>Compare a keyword set</h1>
        <span>
          Six authored sample records · figures are illustrative, not Semrush
          measurements
        </span>
      </header>
      <div className="research-toolbar">
        <div className="research-search">
          <label htmlFor="term-search">Filter keywords</label>
          <Input size="l">
            <Input.Value
              id="term-search"
              placeholder="Find a sample term"
              value={q}
              onChange={setQ}
            />
          </Input>
        </div>
        <Checkbox
          label="Tracked only"
          checked={tracked}
          onChange={setTracked}
        />
        <div
          className="metric-options"
          role="group"
          aria-label="Comparison metric"
        >
          <Button
            use={metric === "volume" ? "primary" : "secondary"}
            aria-pressed={metric === "volume"}
            onClick={() => setMetric("volume")}
          >
            Volume
          </Button>
          <Button
            use={metric === "difficulty" ? "primary" : "secondary"}
            aria-pressed={metric === "difficulty"}
            onClick={() => setMetric("difficulty")}
          >
            Difficulty
          </Button>
        </div>
      </div>
      <div className="research-grid">
        <section className="chart-panel">
          <div className="chart-heading">
            <h2>
              {metric === "volume"
                ? "Illustrative monthly volume"
                : "Illustrative difficulty score"}
            </h2>
            <span>{rows.length} terms</span>
          </div>
          <p className="axis-note">
            {metric === "volume"
              ? "Fixed scale: 0–8,100 sample searches"
              : "Fixed scale: 0–100 sample score"}
          </p>
          {rows.length ? (
            <div className="bars">
              {rows.map((r) => (
                <button
                  className={
                    "bar-row " + (r.term === selected ? "selected" : "")
                  }
                  key={r.term}
                  onClick={() => setSelected(r.term)}
                  aria-pressed={r.term === selected}
                >
                  <span className="bar-name">{r.term}</span>
                  <span className="bar-track" aria-hidden="true">
                    <i style={{ width: (r[metric] / max) * 100 + "%" }} />
                  </span>
                  <strong>{r[metric].toLocaleString("en-US")}</strong>
                </button>
              ))}
            </div>
          ) : (
            <div className="no-results">
              <h3>No matching terms</h3>
              <p>
                Clear the text and tracked filter to restore the full
                comparison.
              </p>
              <Button
                onClick={() => {
                  setQ("");
                  setTracked(false);
                }}
              >
                Reset filters
              </Button>
            </div>
          )}
          <p className="chart-note">
            Values are written beside every bar. Click a term to inspect both
            metrics.
          </p>
        </section>
        <aside>
          <h2>{item.term}</h2>
          <dl>
            <dt>Sample volume</dt>
            <dd>{item.volume.toLocaleString("en-US")}</dd>
            <dt>Sample difficulty</dt>
            <dd>{item.difficulty} / 100</dd>
            <dt>Tracking</dt>
            <dd>{item.tracked ? "Tracked" : "Not tracked"}</dd>
          </dl>
          <div className="inspector-note">
            <h3>Comparison context</h3>
            <p>
              The bar scale stays fixed when filters change. Difficulty and
              volume have separate units and are not added together.
            </p>
          </div>
          {!rows.some((r) => r.term === selected) && (
            <p className="retained">
              Selected term is outside the current filter; details are retained.
            </p>
          )}
        </aside>
      </div>
      <footer>
        Native Intergalactic Input, Checkbox and Button from @semcore/ui 17.6.0.
        Original accessible HTML bar comparison; no analytics service request.
      </footer>
    </main>
  );
}
createRoot(document.getElementById("root")).render(<App />);

Справочник по коду

  • Создайте проект React на Vite, сохраните <div id="root"></div> и загрузите этот код как src/main.jsx.

intergalactic.css — оригинальная адаптивная композиция

Слой компоновки приложения поверх нативных компонентов.

css
* {
  box-sizing: border-box;
}
body {
  margin: 0;
  font:
    14px/1.5 Arial,
    sans-serif;
  color: var(--intergalactic-text-primary);
  background: #fff;
}
.research {
  padding: 28px;
}
.research header {
  border-bottom: 1px solid #e0e1e9;
  padding-bottom: 24px;
}
.research header p {
  font-size: 12px;
  color: #6c6e79;
  margin: 0 0 10px;
  letter-spacing: 0.07em;
}
.research h1 {
  font-size: 28px;
  margin: 0 0 8px;
}
.research header span {
  color: #6c6e79;
}
.research-toolbar {
  display: flex;
  align-items: flex-end;
  gap: 24px;
  flex-wrap: wrap;
  padding: 24px 0;
}
.research-search {
  min-width: 220px;
  flex: 1;
}
.research-search label {
  display: block;
  font-weight: 600;
  margin-bottom: 8px;
}
.metric-options {
  display: flex;
  gap: 8px;
}
.research-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.6fr) minmax(250px, 0.8fr);
  gap: 24px;
}
.chart-panel,
.research aside {
  border: 1px solid #c4c7cf;
  border-radius: 8px;
  padding: 24px;
  min-width: 0;
}
.chart-heading {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-start;
}
.research h2 {
  font-size: 18px;
  margin: 0;
}
.chart-heading > span,
.axis-note,
.chart-note {
  font-size: 12px;
  color: #6c6e79;
}
.axis-note {
  margin: 8px 0 24px;
}
.bar-row {
  display: grid;
  grid-template-columns: 165px minmax(0, 1fr) 58px;
  align-items: center;
  gap: 12px;
  width: 100%;
  border: 0;
  background: white;
  text-align: left;
  padding: 12px 8px;
  border-radius: 4px;
  cursor: pointer;
  font: inherit;
  color: inherit;
}
.bar-row.selected {
  background: #f0e8ff;
}
.bar-name {
  font-size: 13px;
}
.bar-track {
  height: 18px;
  background: #f4f5f9;
  border-radius: 3px;
  overflow: hidden;
}
.bar-track i {
  display: block;
  height: 100%;
  background: var(--intergalactic-chart-palette-order-1);
  border-radius: 3px;
}
.bar-row strong {
  text-align: right;
  font-size: 12px;
}
.bar-row:focus-visible {
  outline: 2px solid #008ff8;
  outline-offset: 2px;
}
.chart-note {
  margin-top: 24px;
}
.research dl {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 16px;
  margin: 24px 0;
}
.research dt {
  color: #6c6e79;
}
.research dd {
  margin: 0;
  font-weight: 600;
}
.inspector-note {
  padding: 16px;
  background: #f4f5f9;
  border-radius: 6px;
}
.inspector-note h3 {
  font-size: 14px;
  margin: 0 0 8px;
}
.inspector-note p {
  font-size: 12px;
  margin: 0;
}
.retained {
  font-size: 12px;
  margin: 16px 0 0;
}
.no-results {
  text-align: center;
  padding: 32px 16px;
}
.no-results h3 {
  font-size: 18px;
}
.research footer {
  font-size: 12px;
  color: #6c6e79;
  margin-top: 24px;
}
@media (max-width: 950px) {
  .research-grid {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 550px) {
  .research {
    padding: 16px;
  }
  .chart-panel,
  .research aside {
    padding: 16px;
  }
  .research-toolbar {
    gap: 16px;
  }
  .research-search {
    flex-basis: 100%;
  }
  .bar-row {
    grid-template-columns: minmax(0, 1fr) 50px;
    gap: 8px;
  }
  .bar-name {
    grid-column: 1/-1;
  }
  .bar-track {
    grid-column: 1;
  }
  .metric-options {
    flex-wrap: wrap;
  }
}

Справочник по коду

  • Сохраните рядом с main.jsx. Эти собственные правила композиции отделены от справочника токенов библиотеки.
04

Настройка ИИ-агента для дизайн-системы Semrush Intergalactic

Отправная точка для реализации

Пример с закреплёнными версиями нативных компонентов собран и проверен в браузере локально. В образце используется только локальное состояние приложения.

sh
npm create vite@latest intergalactic-compare -- --template react
cd intergalactic-compare
npm install
npm install [email protected] [email protected] @semcore/[email protected] @semcore/[email protected] @semcore/[email protected] @semcore/illustration
# Replace src/main.jsx and add src/intergalactic.css.
npm run dev

Запрос для вашего проекта

Промпт для AI-агента
Создайте компактную диаграмму сравнения с аналитическими данными, используя стандартные элементы управления Intergalactic, отдельные импорты и актуальные токены темы. Обеспечьте согласованность единиц измерения, фиксированных масштабов, сортировки и идентификатора выбранного элемента. Добавьте текстовые значения и возможность выйти из пустого состояния. Честно обозначьте данные примера и оригинальный код диаграммы, не выдавая их за измеренные данные Semrush.
05

Источники и область применения дизайн-системы Semrush Intergalactic

Руководство по приложению OpenDesign. Все шесть записей о ключевых словах и все метрики вымышлены. Стандартные элементы управления Intergalactic окружают оригинальную диаграмму HTML; это не отчет Semrush и не реализация стандартной диаграммы D3.