Analisi dei dati · Nuova risorsa

sistema di design Semrush Intergalactic.

Una guida Intergalactic con token semantici e per grafici aggiornati, controlli nativi per i filtri, confronto a scala fissa, dettagli dell’elemento selezionato e un fixture completo e riproducibile.

Guida OpenDesign8 capitoli38 voci di riferimentoGuida applicativa originale
01

Anteprima dell’interfaccia del sistema di design Semrush Intergalactic

Filtra i termini, limita i risultati ai record monitorati, cambia la metrica ed esamina i valori selezionati senza perdere il contesto della scala.

Confronta un insieme fittizio di parole chiaveApri l’esempio completo
Controlli Intergalactic nativi di @semcore/ui 17.6.0 con @semcore/theme 2.3.1; confronto originale a barre di HTML. · Riferimento per l’implementazione
02

Riferimento di progettazione del sistema di design Semrush Intergalactic

Controlli Intergalactic nativi di @semcore/ui 17.6.0 con @semcore/theme 2.3.1; confronto originale a barre di HTML.

Ruoli semantici chiari

Fonte
Nome / regolaValore / configurazioneUtilizzo
--intergalactic-bg-primary-neutraloklch(1 0 0)Valore semantico corrente nel tema fissato, incluse le espressioni OKLCH.
--intergalactic-bg-secondary-neutraloklch(0.98 0.001 180)Valore semantico corrente nel tema fissato, incluse le espressioni OKLCH.
--intergalactic-text-primaryoklch(0.1 0.03 137 / 0.899)Valore semantico corrente nel tema fissato, incluse le espressioni OKLCH.
--intergalactic-text-secondaryoklch(0.088 0.026 147.7 / 0.583)Valore semantico corrente nel tema fissato, incluse le espressioni OKLCH.
--intergalactic-border-primaryoklch(0.137 0.026 175.7 / 0.161)Valore semantico corrente nel tema fissato, incluse le espressioni OKLCH.
--intergalactic-control-primary-infooklch(0.23 0.01 140)Valore semantico corrente nel tema fissato, incluse le espressioni OKLCH.
--intergalactic-control-primary-info-hoveroklch(0.32 0.007 140)Valore semantico corrente nel tema fissato, incluse le espressioni OKLCH.
--intergalactic-control-primary-info-activeoklch(0 0 140)Valore semantico corrente nel tema fissato, incluse le espressioni OKLCH.
--intergalactic-control-rounded6pxValore semantico corrente nel tema fissato, incluse le espressioni OKLCH.

Dimensioni del testo

Fonte
Nome / regolaValore / configurazioneUtilizzo
--intergalactic-fs-5010pxDimensione del testo pubblicata; scegli il ruolo in base alla gerarchia delle informazioni.
--intergalactic-fs-10012pxDimensione del testo pubblicata; scegli il ruolo in base alla gerarchia delle informazioni.
--intergalactic-fs-20014pxDimensione del testo pubblicata; scegli il ruolo in base alla gerarchia delle informazioni.
--intergalactic-fs-30016pxDimensione del testo pubblicata; scegli il ruolo in base alla gerarchia delle informazioni.
--intergalactic-fs-40020pxDimensione del testo pubblicata; scegli il ruolo in base alla gerarchia delle informazioni.
--intergalactic-fs-50024pxDimensione del testo pubblicata; scegli il ruolo in base alla gerarchia delle informazioni.
--intergalactic-fs-60032pxDimensione del testo pubblicata; scegli il ruolo in base alla gerarchia delle informazioni.
--intergalactic-fs-70036pxDimensione del testo pubblicata; scegli il ruolo in base alla gerarchia delle informazioni.
--intergalactic-fs-80048pxDimensione del testo pubblicata; scegli il ruolo in base alla gerarchia delle informazioni.

Spaziatura

Fonte
Nome / regolaValore / configurazioneUtilizzo
--intergalactic-spacing-1x4pxSpaziatura con nome definita nel foglio di stile del tema.
--intergalactic-spacing-2x8pxSpaziatura con nome definita nel foglio di stile del tema.
--intergalactic-spacing-3x12pxSpaziatura con nome definita nel foglio di stile del tema.
--intergalactic-spacing-4x16pxSpaziatura con nome definita nel foglio di stile del tema.
--intergalactic-spacing-5x20pxSpaziatura con nome definita nel foglio di stile del tema.
--intergalactic-spacing-6x24pxSpaziatura con nome definita nel foglio di stile del tema.
--intergalactic-spacing-8x32pxSpaziatura con nome definita nel foglio di stile del tema.
--intergalactic-spacing-10x40pxSpaziatura con nome definita nel foglio di stile del tema.
--intergalactic-spacing-05x2pxSpaziatura con nome definita nel foglio di stile del tema.

Angoli

Fonte
Nome / regolaValore / configurazioneUtilizzo
--intergalactic-rounded-extra-small2pxUsa un raggio degli angoli adatto al componente, anziché applicare ovunque un raggio grande.
--intergalactic-rounded-small4pxUsa un raggio degli angoli adatto al componente, anziché applicare ovunque un raggio grande.
--intergalactic-rounded-medium6pxUsa un raggio degli angoli adatto al componente, anziché applicare ovunque un raggio grande.
--intergalactic-rounded-large12pxUsa un raggio degli angoli adatto al componente, anziché applicare ovunque un raggio grande.
--intergalactic-rounded-extra-large24pxUsa un raggio degli angoli adatto al componente, anziché applicare ovunque un raggio grande.

I primi sei colori del grafico

Fonte
Nome / regolaValore / configurazioneUtilizzo
--intergalactic-chart-palette-order-1oklch(0.58 0.168 278.2)Colore ordinato della serie di dati. L’esempio usa il primo ruolo per una singola serie.
--intergalactic-chart-palette-order-2oklch(0.82 0.15 170)Colore ordinato della serie di dati. L’esempio usa il primo ruolo per una singola serie.
--intergalactic-chart-palette-order-3oklch(0.74 0.17 303)Colore ordinato della serie di dati. L’esempio usa il primo ruolo per una singola serie.
--intergalactic-chart-palette-order-4oklch(0.82 0.18 80)Colore ordinato della serie di dati. L’esempio usa il primo ruolo per una singola serie.
--intergalactic-chart-palette-order-5oklch(0.74 0.19 22)Colore ordinato della serie di dati. L’esempio usa il primo ruolo per una singola serie.
--intergalactic-chart-palette-order-6oklch(0.82 0.088 272.1)Colore ordinato della serie di dati. L’esempio usa il primo ruolo per una singola serie.
03

Guida completa al sistema di design Semrush Intergalactic

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

DESIGN-semrush-intergalactic.md

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

Scarica la guida

Layout analitico dell’area di lavoro del sistema di design Semrush Intergalactic

Definisci una domanda per il confronto

L’esempio confronta sei parole chiave fittizie usando una metrica selezionata. Sopra i risultati si trovano un filtro, un’opzione per mostrare solo gli elementi monitorati e i pulsanti delle metriche. Un pannello di dettaglio separato mostra entrambe le metriche per il termine selezionato, consentendo di confrontare una vista ordinata in base alla posizione con i valori sottostanti.

Da questa guida su OpenDesign

Distingui i dati creati da quelli misurati

Ogni numero fa parte di un insieme di dati fisso ed è indicato come illustrativo. La pagina non presenta il volume di ricerca o la difficoltà come misurazioni attuali di Semrush. Le barre non si basano su query di rete, account di analisi o set di dati dei clienti scaricati.

Generazione del tema e dei token del sistema di design Semrush Intergalactic

Usa con criterio il pacchetto del tema corrente

Il runtime usa le versioni fissate di @semcore/ui 17.6.0 e @semcore/theme 2.3.1. I componenti nativi richiedono il pacchetto del tema corrente e il punto d’ingresso importa il suo light.css. La tabella conserva i valori OKLCH del foglio di stile, anziché sostituirli con valori esadecimali predefiniti meno recenti e non pertinenti.

Tieni separati i ruoli dei componenti e quelli del grafico

I controlli nativi ricavano il proprio aspetto dallo stile Intergalactic, mentre il confronto originale a barre usa il primo ruolo della palette del grafico per la serie. La selezione è indicata da uno sfondo riga discreto e dallo stato premuto. Il colore della serie non va riutilizzato indiscriminatamente per tutte le azioni o per gli errori.

Tipografia per risultati densi nel sistema di design Semrush Intergalactic

Mantieni uniti etichette, unità e valori

Ogni riga delle barre contiene il termine e il relativo valore numerico scritto. La nota sull’asse specifica se la scala rappresenta ricerche campione o un punteggio su 100. Il pannello di dettaglio ripete entrambe le unità, evitando che lunghezze delle barre simili facciano pensare che le metriche siano intercambiabili.

Usa testo compatto senza nascondere il contesto

Il campo nativo usa la dimensione grande, così da offrire un’area di filtro comoda da selezionare. Le etichette dei risultati restano compatte, mentre il titolo dell’area di lavoro e le intestazioni delle sezioni sono più grandi. Sugli schermi stretti, la parola chiave viene spostata sopra la barra e il valore, anziché essere troncata fino a diventare illeggibile.

Scala e ordinamento dei grafici nel sistema di design Semrush Intergalactic

Mantieni stabile la scala durante il filtraggio

Il grafico del volume usa sempre un massimo di 8,100 e quello della difficoltà un massimo di 100. Il filtraggio non allunga la barra più lunga tra quelle rimanenti fino a occupare tutta la larghezza. Questa scelta progettuale preserva il significato del confronto quando l’utente restringe l’insieme.

Ordina in base alla metrica attiva

Campo di input e casella di controllo nativi del sistema di design Semrush Intergalactic

Usa la struttura composta del campo di input

Input fornisce il componente esterno e Input.Value il controllo modificabile vero e proprio. La callback onChange riceve per primo il valore stringa, diversamente da un normale evento change del DOM. L’etichetta visibile fa riferimento all’id di Value.

Mantieni indipendenti i filtri booleani e testuali

L’onChange della Checkbox nativa riceve il valore booleano checked. Il filtro testuale e lo stato dei soli elementi monitorati vengono combinati per ricavare le righe, quindi entrambi possono legittimamente produrre un risultato vuoto. Reimposta filtri ripristina entrambi i controlli mantenendo il contesto del dettaglio selezionato.

Dettaglio selezionato e stato vuoto nel sistema di design Semrush Intergalactic

Mantieni la selezione associata all’identità

Il termine selezionato viene memorizzato indipendentemente dall’ordine dell’array. Facendo clic su una barra si aggiornano il termine e il relativo stato premuto, mentre il pannello di dettaglio recupera il record completo dell’insieme di dati. Ordinando in base a un’altra metrica, il pannello non punta silenziosamente a un indice di riga diverso.

Spiega perché una selezione resta attiva fuori dal filtro

Se il termine selezionato non è più visibile, il pannello di dettaglio resta disponibile e mostra una spiegazione. È utile per confrontare un elemento prima e dopo il filtraggio. Invece di mostrare un pannello del grafico vuoto, l’area dei risultati vuoti propone un’azione esplicita per reimpostare i filtri.

Confronto dati accessibile del sistema di design Semrush Intergalactic

Rendi il grafico comprensibile anche senza colori

Le barre sono elementi span decorativi all’interno di pulsanti reali. Il termine e il valore costituiscono il testo accessibile e aria-pressed indica la selezione. I dati restano comprensibili anche senza visualizzare la lunghezza delle barre o la tonalità della serie. L’indicatore di focus da tastiera è distinto visivamente dallo stile della riga selezionata.

  1. Seleziona Difficulty e controlla le barre riordinate e l’unità del punteggio.
  2. Filtra cercando un termine senza corrispondenze e usa Reimposta filtri.
  3. Seleziona un termine, escludilo con un filtro e leggi la spiegazione che chiarisce perché la selezione resta attiva.

Verifica il ripristino dopo il filtraggio

Il campo di input e la casella di controllo nativi espongono i rispettivi controlli reali. I selettori delle metriche sono pulsanti con stato premuto e l’azione originale di ripristino cancella entrambi i filtri. Il layout mantiene visibili il titolo dei risultati e la nota sulle unità, così gli stati vuoti e non vuoti conservano lo stesso contesto.

Importazione dei componenti e configurazione del tema nel sistema di design Semrush Intergalactic

Importa i punti d’ingresso dei componenti

La radice di @semcore/ui genera intenzionalmente un errore invece di esportare tutti i componenti. Questo codice importa button, input e checkbox dai rispettivi punti d’ingresso dedicati e importa @semcore/theme/light.css. Il punto d’ingresso completo include l’insieme di dati e tutta la logica di derivazione.

  • Importazioni dedicate di @semcore/ui/button, input e checkbox.
  • @semcore/theme/light.css fissato.
  • Logica originale delle barre a scala fissa e dell’insieme di dati nel JSX completo.

Non definire i grafici a barre personalizzati come un grafico D3 nativo

Esempi di componenti del sistema di design Semrush Intergalactic

main.jsx — esempio completo funzionante

Confronta un insieme fittizio di parole chiave. Il codice seguente è il punto d’ingresso completo di React, con tutto lo stato e la logica di validazione.

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

Riferimento del codice

  • Crea un progetto React con Vite, mantieni <div id="root"></div> e salva questo codice come src/main.jsx.

intergalactic.css — composizione originale adattiva

Impaginazione dell’applicazione costruita intorno ai componenti nativi.

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

Riferimento del codice

  • Salva il file accanto a main.jsx. Queste regole di composizione personalizzate sono distinte dal riferimento ai token della libreria.
04

Configurazione dell’agent del sistema di design Semrush Intergalactic

Punto di partenza per l’implementazione

L’esempio nativo bloccato è stato incluso nel bundle e verificato localmente nel browser. L’esempio usa solo lo stato locale dell’applicazione.

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

Un prompt per il tuo progetto

Prompt per l’agente
Crea un confronto analitico compatto con controlli Intergalactic nativi, importazioni dedicate e token del tema corrente. Mantieni coerenti unità, scale fisse, ordinamento e identità selezionata. Fornisci valori testuali e una procedura di recupero per lo stato vuoto. Indica con chiarezza che le metriche dell’insieme di dati sono fittizie e che il codice del grafico è originale, senza dichiarare che si tratti di dati Semrush misurati.
05

Fonti e ambito del sistema di design Semrush Intergalactic

Guida all’applicazione di OpenDesign. I sei record delle parole chiave e tutte le metriche sono fittizi. I controlli Intergalactic nativi circondano un grafico HTML originale; non si tratta di un report Semrush né di un’implementazione nativa di un grafico D3.