Marketingsoftware · Neue Ressource

Emplifi Soul Designsystem.

Lesen Sie Souls Vertrag für Datentabellen zusammen mit den sechs Pixeln Abstand, den abgestuften Farbrollen und der kompakten Inter-Typografie. Vergleichen Sie die Mehrfachauswahl, die Kennzeichnung fehlender Daten und die Zusammenfassungszeilen. Prüfen Sie anschließend die Einstiegspunkte des verifizierten privaten React-Pakets.

OpenDesign-Leitfaden7 Kapitel44 ReferenzeinträgeOriginaler Anwendungsleitfaden
01

Emplifi Soul Designsystem-Vorschau

Testen Sie die Auswahl aller Einträge, die Teilauswahl, Sortierung, die Sammelprüfung und das Abbrechen.

Tabelle zur Prüfung auswählbarer InhalteVollständiges Beispiel öffnen
Eigenständige Interpretation der Soul-Designrichtlinien und geprüften Tokens für den hellen Modus durch HTML/CSS. System-Fallback-Schriftart; keine privaten React-Assets. · Implementierungsreferenz
02

Emplifi Soul Designsystem-Referenz

Öffentliche Designdokumentation von Soul und offizielles Storybook in Echtzeit. Dies sind benannte Basiswerte für den hellen Modus und keine Aussage darüber, dass alle Dokumentationsseiten und Paketversionen denselben Status haben. Die Vorschau verwendet Systemschriften als lokales Fallback.

Ebenenmodell

Quelle
Name / RegelWert / KonfigurationVerwendung
--color-layer-level-0#f3f3f5 Oberflächenebene im hellen Modus.
--color-layer-level-1#ffffff Oberflächenebene im hellen Modus.
--color-layer-level-2#f3f3f5 Oberflächenebene im hellen Modus.
--color-layer-level-3#e7e7e7 Oberflächenebene im hellen Modus.
--color-on-layer-primary#24242b Haupttext.
--color-on-layer-secondary#505057 Unterstützender Text.
Dark level 0 / level 1#111114 / #24242bDunkle Oberflächen werden mit zunehmender Tiefe heller.

Aktions- und Tabellenfarben

Quelle
Name / RegelWert / KonfigurationVerwendung
--color-button-primary#0c4bff Hintergrund der primären Schaltfläche.
--color-on-layer-interactive#003beb Interaktiver Text.
--color-border-focus-ring#003beb Fokusring.
--color-table-row-odd#ffffff Ungerade Zeilen sowie Tabellenkopf und -fuß.
--color-table-row-even#f9f9fa Gerade Zeilen.
--color-table-row-hover#d5efff Feedback beim Durchsuchen.
--color-layer-main-navigation#111114 Nur die Hauptnavigation.

Abstände und Radien

Quelle
Name / RegelWert / KonfigurationVerwendung
--space-13pxFoundation Abstand.
--space-26pxFoundation Abstand.
--space-39pxFoundation Abstand.
--space-412pxFoundation Abstand.
--space-518pxFoundation Abstand.
--space-624pxFoundation Abstand.
--space-730pxFoundation Abstand.
--space-836pxFoundation Abstand.
--space-948pxFoundation Abstand.
Default control height36pxKompakte Option: 30px; nicht mit der Abstandsskala verwechseln.

Eckenhierarchie

Quelle
Name / RegelWert / KonfigurationVerwendung
--border-radius-small2pxLeicht abgerundet.
--border-radius-medium6pxStandardelemente.
--border-radius-large8pxContainer.
--border-radius-full50%Kreis.
--border-radius-pill999pxPill.

Typografie-Vorlagen

Quelle
Name / RegelWert / KonfigurationVerwendung
headline-1500 · 30px / 42pxHauptüberschrift der Seite.
headline-2500 · 20px / 30pxAbschnittsüberschrift.
headline-3500 · 16px / 24pxUnterabschnittsüberschrift.
paragraph-regular400 · 13px / 18pxMittlere Textgröße.
Button label600 · 13px / 18pxSatzschreibung.
Table numeralsTabular numbersVergleichbare Zahlenwerte ausrichten.

React Button API

Quelle
Name / RegelWert / KonfigurationVerwendung
Package@sbks/ds-buttonPrivater Geltungsbereich; Button ist ein benannter Export.
variantBUTTON_VARIANT.LIGHT defaultEnum-basiert; verwenden Sie exportierte Enum-Konstanten statt roher Zeichenfolgen in TypeScript.
sizeBUTTON_SIZE.MEDIUM defaultMittel ist die Basis.
isLoadingfalseLadeanzeige.
isSelectedfalseAusgewähltes Erscheinungsbild.
isAppliedfalseVisuelle Unterstützung derzeit für die Variante invisible.
onClickMouse event handlerLokalen Anwendungsstatus anbinden.
badgestring | numberInformationen zur angewendeten Auswahl.
themeInherited; light fallbackGehen Sie nicht davon aus, dass eine dunkle Oberfläche automatisch alle untergeordneten Elemente verändert.
03

Emplifi Soul-Designsystem: Vollständiger Leitfaden

Ein praktischer Leitfaden zur Auswahl, Anwendung und Überprüfung dieses Systems für ein echtes Interface.

DESIGN-emplifi-soul.md

Umfassende Anleitung, Einstieg in die Implementierung und Links zu den Quellen.

Leitfaden herunterladen

Emplifi Soul-Designsystem: Designrichtlinien und Implementierungsstatus

Leiten Sie kein Paket aus einem Komponentennamen ab.

Soul ist das Designsystem von Emplifi. Die öffentlich zugänglichen Designreferenzen und das Storybook lassen sich lesen, für den offiziellen Schnellstart ist jedoch Zugriff auf einen privaten npm-Scope erforderlich. Die Browser-Demo ist davon unabhängig HTML/CSS; sie bündelt Soul nicht React. Das Tabellenverhalten setzt die Designrichtlinien um, deren öffentliche Seite React weiterhin als geplant kennzeichnet.

Aus diesem OpenDesign-Leitfaden

Das bereitgestellte Beispiel für React verwendet bewusst eine semantische Tabelle und echte Soul-Button-Steuerelemente. Es stellt einen funktionierenden Anwendungsstatus bereit, ohne einen undokumentierten DataTable-Export zu behaupten. Öffentlich zugängliche Dokumentation gewährt weder Zugriff auf das Paket noch die Erlaubnis, private Assets weiterzuverbreiten.

Unterstützende Spezifikation lesen

Emplifi Soul-Designsystem: Ein Tabellenvertrag, der über die Zeilenauswahl hinausgeht

Kopfzeilen, Zusammenfassungen und fehlende Werte

Die Tabellenrichtlinien von Soul unterscheiden zwischen Kopfzeilen, Zeilen, Zellen und einer optionalen Zusammenfassungsleiste. Zahlenwerte werden rechtsbündig, Textinhalte linksbündig ausgerichtet. Eine Zusammenfassung kann Summen oder Durchschnittswerte anzeigen. Daher muss ihre Beschriftung die Berechnung benennen, statt eine unerklärte Zahl darzustellen.

Verwenden Sie N/A, wenn ein Messwert nicht zutrifft, etwa die Videodauer bei einem Bild. Ein Geviertstrich steht für nicht verfügbare oder unbekannte Daten. Diese Fälle sollten nicht in null umgewandelt werden: Dadurch ändert sich die Interpretation einer Zusammenfassung und jedes darauf aufbauenden Vergleichs.

  • Die aktuelle Demo unterstützt Sortierung und auswählbare Zeilen, berechnet jedoch keine Zusammenfassung.
  • Aufklappbare Zeilen und Erläuterungen zu fehlenden Daten sind dokumentierte Erweiterungspunkte; in der Vorschau werden sie nicht simuliert.
  • Die Designreferenz kennzeichnet die Tabelle React als geplant. Deshalb enthält der bereitgestellte Code eigenes Tabellen-Markup, statt einen Soul-DataTable-Import zu erfinden.

Unterstützende Spezifikation lesen

Im Sammelmodus stehen andere Aktionen zur Verfügung.

Soul platziert die Sammelaktionsleiste unterhalb der Sammlung und unterdrückt einzelne Zeilenaktionen, solange die Sammelauswahl aktiv ist. Das Kontrollkästchen in der Kopfzeile kennt die Zustände aktiviert, deaktiviert und unbestimmt. Es kann jeweils nur nach einer Spalte sortiert werden.

In der Demo sind alle drei Datensätze lokal und Teil desselben Auswahlbereichs. Die Kopfzeile der Reichweitenspalte gibt die Sortierrichtung an; die ausgewählten IDs bleiben beim Umsortieren erhalten. Eine künftige Aktion auf Zeilenebene sollte die dokumentierte Einschränkung für den Sammelmodus beachten, statt mit der Sammelaktionsleiste zu konkurrieren.

Unterstützende Spezifikation lesen

Emplifi Soul-Designsystem: Räumliche Tiefe mit neutralen Ebenen gestalten

Ein zurückhaltender CX-Arbeitsbereich

Im hellen Modus wechseln sich bei Soul graue und weiße Oberflächen ab, während dunklere Ebenen zunehmend heller werden. Die Demo verwendet eine graue Seite, eine weiße Tabellenfläche und einen schmalen dunklen Navigationsbereich. Farbe kennzeichnet Funktionen, statt jede Zeile dekorativ zu gestalten.

Das interaktive Blau ist der Prüfaktion und den ausgewählten Steuerelementen vorbehalten. Kleine Originalillustrationen zu den Beiträgen setzen dekorative Farbakzente. Sie helfen dabei, die Themen der Inhalte zu unterscheiden, ohne ihnen fälschlich eine Bedeutung wie Erfolg oder Gefahr zuzuweisen.

Unterstützende Spezifikation lesen

Emplifi Soul-Designsystem: Kompakte Typografie mit klarer Hierarchie

Inter ist die primäre Schriftfamilie

Soul legt Inter für die Benutzeroberfläche, Noto Sans Arabic für arabische Texte und Noto Sans Mono für Code fest. Die Vorschau verwendet Systemschriften, da sie diese Schriftdateien nicht mitliefert. Die Maße orientieren sich weiterhin an den veröffentlichten Vorgaben.

Eine Hauptüberschrift mit 30/42 führt ein Schriftsystem mit 13/18 für Fließtext an. Tabellenzahlen verwenden tabellarische Ziffern. Die Tabelle nutzt keinen übergroßen Marketing-Schriftstil, und Beitragstitel bleiben als lesbarer Text erhalten, statt in ein Bild eingebettet zu sein.

Unterstützende Spezifikation lesen

Emplifi Soul-Designsystem: Sechs-Pixel-Rhythmus und Container-Radius

Dichte Steuerelemente übersichtlich anordnen

Die grundlegende Abstandseinheit beträgt 6 px. Werte wie 12, 18, 24 und 36 px schaffen größere Abstände; 3 und 9 px sind kompakten Komponenten-Innenabständen vorbehalten und nicht als Standardseitenränder gedacht. Der dokumentierte Innenabstand des Inhalts beträgt bei 1559 px und weniger 24 px und ab 1560 px 36 px.

Soul unterscheidet zwischen Abstandsangaben und T-Shirt-Größen für Komponenten. Eine mittelgroße Komponente entspricht nicht --space-6. Die Demo verwendet 36 px hohe Steuerelemente, eine Abrundung von 6 px für Elemente und einen Container-Radius von 8 px.

Unterstützende Spezifikation lesen

Emplifi Soul-Designsystem: Mit Hervorhebungen die nächste Aktion verdeutlichen

Eine einzelne primäre Prüfaktion

Die primäre Variante von Soul hebt die wichtigste Aktion hervor. Helle und Ghost-Varianten eignen sich für unterstützende Aufgaben; unsichtbare Steuerelemente verringern die visuelle Gewichtung in dicht belegten Werkzeugleisten. In der Vorschau erhält nur die Sammelprüfaktion die primäre, ausgefüllte Darstellung.

Auswahl aufheben entfernt die ausgewählten Zeilen, ohne die Prüfkennzeichnungen zu ändern. Durch das Prüfen ändert sich nur der lokale Prüfstatus; die Meldung stellt ausdrücklich klar, dass nichts veröffentlicht wurde. Der Steuerelementtext verwendet normale Satzschreibung.

Unterstützende Spezifikation lesen

Emplifi Soul-Designsystem: Die private Bibliothek gezielt einbinden

Foundation CSS vor dem Zusammensetzen von Komponenten

Der offizielle Einstiegspunkt importiert variables.css und default-styles.css aus @sbks/ds-design-library. Der Sass-Einstiegspunkt stellt Mixins bereit und ist vom globalen CSS getrennt. Button stammt aus @sbks/ds-button.

Die aktuelle Button-API API umfasst isLoading, isSelected, isApplied und badge. Für Enum-basierte Props sind die exportierten Enum-Konstanten der Bibliothek in TypeScript erforderlich. Dieses Beispiel verwendet die verifizierte Standardvariante LIGHT, statt einen Importpfad für ein Enum zu erraten.

  1. Richten Sie den Zugriff auf den privaten Scope und den Build-Loader gemäß dem offiziellen Schnellstart ein.
  2. Importieren Sie das grundlegende CSS einmalig im Anwendungseinstiegspunkt und konfigurieren Sie die ausgewählten Schriftdateien.
  3. Binden Sie das bereitgestellte Beispiel einer gesteuerten Tabelle ein und testen Sie anschließend die Auswahl, das Aufheben der Auswahl und die lokale Prüfung, bevor Sie einen Veröffentlichungsworkflow anbinden.

Unterstützende Spezifikation lesen

Emplifi Soul-Designsystem: Komponentenbeispiele

Vollständige, eigenständige interaktive Demo

Speichern Sie das vollständige Dokument als index.html und öffnen Sie es in einem Browser. Unabhängige Interpretation von Soul-Designrichtlinien mit HTML/CSS und verifizierten Tokens des hellen Modus. Systemschrift als Fallback; keine privaten Assets von React.

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Content review</title><style>:root{--color-layer-level-0:#f3f3f5;--color-layer-level-1:#fff;--color-on-layer-primary:#24242b;--color-on-layer-secondary:#505057;--color-button-primary:#0c4bff;--space-2:6px;--space-4:12px;--space-6:24px;--border-radius-medium:6px;--border-radius-large:8px}*{box-sizing:border-box}body{margin:0;background:var(--color-layer-level-0);color:var(--color-on-layer-primary);font:13px/18px system-ui}nav{padding:15px 24px;background:#111114;color:#f9f9fa;font-size:13px;display:flex;justify-content:space-between;gap:24px}main{padding:24px}header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:24px}h1{font-size:30px;font-weight:500;line-height:42px;margin:0}p{color:#505057;margin:6px 0}small{font-size:11px}.surface{background:white;border:1px solid #ddd;border-radius:8px;overflow:hidden}.bar{padding:18px 24px;border-bottom:1px solid #ddd;display:flex;justify-content:space-between;gap:12px}table{width:100%;border-collapse:collapse;table-layout:fixed}caption{text-align:left;padding:12px 24px;background:#f9f9fa;font-size:11px;color:#505057}th,td{padding:16px 12px;text-align:left;border-bottom:1px solid #e7e7e7;font-weight:400}thead th{font-size:11px;font-weight:600;padding-top:12px;padding-bottom:12px}th:first-child,td:first-child{width:44px;text-align:center}.title{width:46%}.reach{width:15%;text-align:right;font-variant-numeric:tabular-nums}tbody tr:nth-child(even){background:#f9f9fa}tbody tr:hover{background:#d5efff}input{accent-color:#003beb;width:16px;height:16px;cursor:pointer}input:focus-visible,button:focus-visible{outline:2px solid #003beb;outline-offset:3px}button{font:600 13px/18px system-ui;border:1px solid #ccc;background:white;padding:8px 12px;border-radius:6px;min-height:36px;cursor:pointer;color:inherit}button:hover{background:#f3f3f5}#sort{border:0;background:transparent;padding:0;min-height:28px;color:#003beb}#apply{background:#0c4bff;color:white;border-color:#0c4bff}#apply:hover{background:#003beb}.name{display:flex;align-items:center;gap:12px}.art{width:52px;height:52px;flex:0 0 52px;border-radius:6px;position:relative;overflow:hidden}.field{background:#d4e5d3}.field:before{content:'';position:absolute;width:65px;height:65px;border-radius:50%;background:#7ca77a;left:15px;top:20px}.field:after{content:'';position:absolute;width:16px;height:16px;border-radius:50%;background:#fff1c5;left:8px;top:8px}.studio{background:#e6daee}.studio:before{content:'';position:absolute;width:20px;height:36px;background:#a089b2;left:8px;top:16px;transform:rotate(-14deg)}.studio:after{content:'';position:absolute;width:20px;height:28px;background:#c3abc9;left:30px;top:24px;transform:rotate(12deg)}.guide{background:#f4e4c9}.guide:before{content:'';position:absolute;width:26px;height:38px;background:#fff;left:13px;top:9px;transform:rotate(8deg);border:1px solid #c9ad7c}.name strong{font-weight:600;display:block}.name small{color:#505057}.state{font-size:11px;color:#505057}#bulk{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 24px;background:#f3f3f5;border-top:1px solid #ccc}#bulk[hidden]{display:none}.actions{display:flex;gap:6px}#status{margin:18px 0;min-height:18px}footer{padding:0 24px 20px;color:#505057;font-size:11px}@media(min-width:1560px){main{padding:36px}}@media(max-width:600px){main{padding:18px}.bar{padding:12px}.channel{display:none}.title{width:57%}.reach{width:22%}.state{display:block;margin-top:4px}th,td{padding:12px 6px}.art{width:36px;height:42px;flex-basis:36px}.name{gap:6px}#bulk{padding:12px;flex-direction:column;align-items:stretch}.actions{flex-wrap:wrap}header{flex-direction:column;gap:8px}h1{font-size:27px}.bar small{max-width:140px;text-align:right}nav{padding:14px 18px}}</style><nav><strong>Soul / Content workspace</strong><span>Demo collection</span></nav><main><header><div><h1>Content review</h1><p>A final editorial check before your team publishes.</p></div><small>3 fictional drafts · No publishing connection</small></header><section class="surface" aria-label="Content drafts"><div class="bar"><strong>Draft collection</strong><small>Select items to review together</small></div><table><caption>Local sample data. Reach values are illustrative.</caption><thead><tr><th scope="col"><input id="all" type="checkbox" aria-label="Select all drafts"></th><th scope="col" class="title">Content</th><th scope="col" class="channel">Channel</th><th scope="col" class="reach" id="reach-head" aria-sort="none"><button id="sort">Reach ↕</button></th></tr></thead><tbody id="rows"></tbody></table><div id="bulk" hidden><span id="count"></span><div class="actions"><button id="apply">Mark as reviewed</button><button id="cancel">Cancel selection</button></div></div></section><p id="status" role="status">Select a draft to begin. All changes stay in this example.</p></main><footer>Independent Soul interpretation · verified light-mode tokens · system font fallback</footer><script>let items=[{id:'field',title:'A morning in the field',channel:'Instagram',reach:2480},{id:'studio',title:'Inside the studio',channel:'Facebook',reach:1860},{id:'guide',title:'Care guide: summer edition',channel:'Instagram',reach:3210}],selected=new Set(),reviewed=new Set(),direction=0;const rows=document.querySelector('#rows'),all=document.querySelector('#all'),bulk=document.querySelector('#bulk'),status=document.querySelector('#status');function render(){rows.innerHTML=items.map(i=>`<tr><td><input type="checkbox" data-id="${i.id}" aria-label="Select ${i.title}" ${selected.has(i.id)?'checked':''}></td><th scope="row"><div class="name"><div class="art ${i.id}" aria-hidden="true"></div><div><strong>${i.title}</strong><span class="state">${reviewed.has(i.id)?'Reviewed locally':'Not reviewed'}</span></div></div></th><td class="channel">${i.channel}</td><td class="reach">${i.reach.toLocaleString('en-US')}</td></tr>`).join('');rows.querySelectorAll('input').forEach(x=>x.onchange=()=>{x.checked?selected.add(x.dataset.id):selected.delete(x.dataset.id);sync()});sync()}function sync(){all.checked=selected.size===items.length;all.indeterminate=selected.size>0&&selected.size<items.length;bulk.hidden=!selected.size;document.querySelector('#count').textContent=selected.size+' selected'}all.onchange=()=>{selected=all.checked?new Set(items.map(i=>i.id)):new Set();render()};document.querySelector('#cancel').onclick=()=>{selected.clear();render();all.focus()};document.querySelector('#apply').onclick=()=>{let n=selected.size;selected.forEach(x=>reviewed.add(x));selected.clear();render();status.textContent=n+(n===1?' draft':' drafts')+' reviewed locally. Nothing published.';all.focus()};document.querySelector('#sort').onclick=()=>{direction=direction===1?-1:1;items.sort((a,b)=>(a.reach-b.reach)*direction);document.querySelector('#reach-head').setAttribute('aria-sort',direction===1?'ascending':'descending');document.querySelector('#sort').textContent='Reach '+(direction===1?'↑':'↓');render()};render();</script></html>

Code-Referenz

  • Die Tabelle setzt Auswahl und Sortierung direkt in HTML um. Sie behauptet nicht, einen privaten Soul-DataTable-Export zu verwenden; das Beispiel für React nutzt den verifizierten Button-Export zusammen mit einer anwendungseigenen Tabelle.

Auswählbare Prüftabelle mit echten Soul-Schaltflächen

Native semantische Tabelle mit gesteuerten Kontrollkästchen, zusammengesetzt mit dem dokumentierten Button-Export. Die Tabelle ist Anwendungscode und keine erfundene Soul-DataTable-Komponente.

tsx
// ContentReview.tsx — inside a configured, authorized Soul application
import React, { useState } from 'react';
import { Button } from '@sbks/ds-button';
import '@sbks/ds-design-library/dist/css/variables.css';
import '@sbks/ds-design-library/dist/css/default-styles.css';

const posts = [
  { id: 'field', title: 'A morning in the field', channel: 'Instagram' },
  { id: 'studio', title: 'Inside the studio', channel: 'Facebook' },
  { id: 'guide', title: 'Care guide: summer edition', channel: 'Instagram' }
];
export default function ContentReview() {
  const [selected, setSelected] = useState<string[]>([]);
  const [reviewed, setReviewed] = useState<string[]>([]);
  const [message, setMessage] = useState('');
  const toggle = (id: string) => setSelected(previous =>
    previous.includes(id) ? previous.filter(x => x !== id) : [...previous, id]);
  const review = () => {
    setReviewed(previous => [...new Set([...previous, ...selected])]);
    setMessage(`${selected.length} items reviewed locally. Nothing published.`);
    setSelected([]);
  };
  return <section aria-labelledby="review-title">
    <h1 id="review-title">Content review</h1>
    <table style={{ width: '100%', borderCollapse: 'collapse' }}>
      <caption>Fictional content drafts</caption>
      <thead><tr><th scope="col">Select</th><th scope="col">Content</th>
        <th scope="col">Channel</th><th scope="col">Review</th></tr></thead>
      <tbody>{posts.map(post => <tr key={post.id}>
        <td><input type="checkbox" aria-label={`Select ${post.title}`}
          checked={selected.includes(post.id)} onChange={() => toggle(post.id)} /></td>
        <th scope="row">{post.title}</th><td>{post.channel}</td>
        <td>{reviewed.includes(post.id) ? 'Reviewed locally' : 'Not reviewed'}</td>
      </tr>)}</tbody>
    </table>
    {selected.length > 0 && <div aria-label="Bulk actions"
      style={{ display: 'flex', gap: 'var(--space-2)', marginTop: 'var(--space-6)' }}>
      <Button onClick={review}>Mark {selected.length} as reviewed</Button>
      <Button onClick={() => setSelected([])}>Cancel selection</Button>
    </div>}
    <p role="status">{message}</p>
  </section>;
}

Code-Referenz

  • Der Standardwert für Button ist LIGHT. In diesem Beispiel wird weder ein Speicherort für einen Enum-Export geraten noch werden DataTable-Props erfunden.
  • Installieren und konfigurieren Sie zuerst die private Designbibliothek und die Button-Pakete. Die Importe sind im offiziellen Storybook verifiziert.
  • Die Massenprüfung aktualisiert nur den lokalen Zustand. Es werden keine Inhalte veröffentlicht.
04

Einrichtung des Emplifi Soul-Designsystem-Agenten

Ausgangspunkt für die Implementierung

Der offizielle Schnellstart setzt privaten npm-Zugriff sowie Zugriff auf das Emplifi-Repository und VPN voraus. Unterstützt werden React 18/19 und Webpack 4/5; außerdem ist eine Einrichtung von Sass und des SVG-Loaders erforderlich. Nutzen Sie das verlinkte Onboarding für interne Bereiche, statt davon auszugehen, dass diese Pakete über die öffentliche Registry verfügbar sind. Für die eigenständige Vorschau werden keine dieser privaten Ressourcen benötigt.

bash / tsx
# For authorized Emplifi environments with the private @sbks scope configured:
npm i -D @sbks/ds-design-library @sbks/ds-button

// Application entry:
import "@sbks/ds-design-library/dist/css/variables.css";
import "@sbks/ds-design-library/dist/css/default-styles.css";

// Optional SCSS file:
@use "@sbks/ds-design-library/dist/sass/main.scss" as *;

Ein Prompt für dein Projekt

Agenten-Prompt
Erstellen Sie eine Inhaltsprüfungsoberfläche für Emplifi Soul mit verifizierten Variablen für Ebenen, Farben und Abstände, Fließtext in 13/18, einem Kontrollradius von 6 px und Containern mit 8 px. Verwenden Sie eine semantische, auswählbare Tabelle mit stabilen IDs, einer unbestimmten Alles-auswählen-Option und einer sortierten Spalte. Nutzen Sie für autorisierte Apps den echten Export @sbks/ds-button und das Foundation-CSS; erfinden Sie niemals ein öffentliches DataTable-Paket.
05

Quellen und Geltungsbereich des Emplifi Soul-Designsystems

Soul ist das Designsystem von Emplifi. Die öffentlich zugänglichen Designreferenzen und das Storybook lassen sich lesen, für den offiziellen Schnellstart ist jedoch Zugriff auf einen privaten npm-Scope erforderlich. Die Browser-Demo ist davon unabhängig HTML/CSS; sie bündelt Soul nicht React. Das Tabellenverhalten setzt die Designrichtlinien um, deren öffentliche Seite React weiterhin als geplant kennzeichnet.