Komponentensystem für Unternehmen · Neue Ressource

CoreUI-Designsystem.

Eine mit echten 5.9-Theme-Variablen erstellte Prüfwarteschlange für CoreUI mit nativen Tabs, Mehrfachauswahl per Kontrollkästchen und einer dauerhaft eingeblendeten Toast-Meldung, über die sich der letzte lokale Archivierungsvorgang rückgängig machen lässt.

OpenDesign-Leitfaden9 Kapitel36 ReferenzeinträgeOriginaler Anwendungsleitfaden
01

CoreUI-Designsystem: Oberflächenvorschau

Wählen Sie Notizen aus, archivieren Sie mehrere auf einmal, öffnen Sie den Tab „Archiv“ und machen Sie die letzte Aktion rückgängig.

Arbeitsbereich für DesignprüfungenVollständiges Beispiel öffnen
Natives CoreUI für Bootstrap 5.9.0 CSS sowie gebündelte Tab-/Toast-JavaScript. · Implementierungsreferenz
02

CoreUI-Designsystem: Designreferenz

CoreUI für die hellen Theme-Standardwerte von Bootstrap 5.9.0 aus dem installierten, kompilierten Stylesheet. Diese --cui-*-Namen sind tatsächliche Laufzeitvariablen. Die Beispielanwendung verwendet kostenlose Komponenten; PRO-Widgets von CoreUI werden nicht vorausgesetzt.

Rollen des hellen Themes

Quelle
Name / RegelWert / KonfigurationVerwendung
--cui-primary#5856d6 Lila Primärfarbe von CoreUI.
--cui-primary-contrast#fffText in Kombination mit der Primärfarbe.
--cui-secondary#6b7785 Sekundäre Rolle.
--cui-success#1b9e3e Erfolgsrolle.
--cui-info#39fInformationsrolle.
--cui-warning#f9b115 Warnrolle.
--cui-danger#e55353 Gefahrenrolle.
--cui-primary-bg-subtle#cfc7f3 Hintergrund der Kontextkarte in sanfter Primärfarbe.
--cui-primary-text-emphasis#3634a3 Text auf der sanften Primärfläche.
--cui-primary-border-subtle#9d92e6 Rahmen der Kontextkarte.
--cui-danger-bg-subtle#f9d4d4 Fläche des Abzeichens für hohe Priorität.
--cui-danger-text-emphasis#671414 Text des Abzeichens für hohe Priorität.
--cui-warning-bg-subtle#feecc5 Fläche des Abzeichens für mittlere Priorität.
--cui-warning-text-emphasis#764705 Text des Abzeichens für mittlere Priorität.

Standardeinstellungen für Typografie und Flächen

Quelle
Name / RegelWert / KonfigurationVerwendung
--cui-font-sans-serifsystem-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"System-UI-Schriftstapel.
--cui-body-font-size1remStandardgröße des Fließtexts: 1rem; für die dichte Tabelle wird eine eigene Überschreibung von 14px verwendet.
--cui-body-line-height1.5Standard-Zeilenhöhe des Fließtexts.
--cui-body-colorrgba(37, 42.92, 54.02, 0.95)Primäre Textfarbe des hellen Themes.
--cui-body-bg#fffPrimärfläche.
--cui-tertiary-bg#f3f4f7 Seitenhintergrund in diesem Beispiel.
--cui-secondary-colorrgba(37, 42.92, 54.02, 0.681)Rolle für ergänzenden Text.
--cui-border-color#dbdfe6 Standardfarbe für Trennlinien.

Variablen für Ecken und Fokus

Quelle
Name / RegelWert / KonfigurationVerwendung
--cui-border-radius0.375remStandardwert entspricht 6px bei einer Root-Größe von 16px.
--cui-border-radius-sm0.25remKlein: entspricht 4px.
--cui-border-radius-lg0.5remGroß: entspricht 8px.
--cui-border-radius-xl1remExtragroß: entspricht 16px.
--cui-border-radius-pill50remPillenform.
--cui-focus-ring-width0.25remBreite des Fokusrahmens.
--cui-focus-ring-opacity0.25Deckkraft des Fokusrings.
--cui-focus-ring-colorrgba(88, 86, 214, 0.25)Fokusringfarbe auf Basis der Primärfarbe.

Eigene Dichteoptionen für die Warteschlange

Quelle
Name / RegelWert / KonfigurationVerwendung
Page padding32px; 24px 14px mobileEigener Innenabstand der Anwendung.
Table minimum width740pxDie Spalten bleiben in einem lokal begrenzten, responsiv scrollbareren Bereich lesbar.
Table cell padding16pxEigene Dichteoption für den nativen Tabellenaufbau.
Table text14px; headings 12pxUrsprüngliche kompakte Hierarchie.
g-3 summary row1rem native gutterResponsive Kennzahlenkarten verwenden den standardmäßigen Rasterabstand.
Toast behaviorautohide: falseDie Rückgängig-Aktion bleibt verfügbar, bis sie geschlossen oder durch einen späteren Stapel ersetzt wird.
03

CoreUI-Designsystem: vollständiger Leitfaden

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

DESIGN-coreui.md

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

Leitfaden herunterladen

CoreUI-Designsystem: Wählen Sie die tatsächlich verwendete Laufzeitumgebung

Wählen Sie die tatsächlich verwendete CoreUI-Laufzeitumgebung

Dieses Beispiel verwendet CoreUI für Bootstrap 5.9.0, das CSS- und Browser-JavaScript-Paket. CoreUI bietet außerdem framework-spezifische Pakete. Deren Komponentenimporte sind jedoch nicht mit den Datenattributen in diesem Beispiel austauschbar. Die Einrichtung stellt ein aufeinander abgestimmtes Stylesheet und ein gebündeltes Skript bereit, ohne einen React- oder Vue-Provider vorauszusetzen.

Aus diesem OpenDesign-Leitfaden

Der Review-Bereich verwendet kostenlose Karten, Tabellen, Formulare, Tabs und Toasts. Dabei werden nicht unbemerkt ein PRO-Datengitter oder ein erweiterter kostenpflichtiger Selektor eingesetzt. So lässt sich das vollständige Beispiel mit dem genannten Paket reproduzieren, ohne dass ein nicht dokumentierter Template-Kauf erforderlich ist.

Unterstützende Spezifikation lesen

CoreUI-Designsystem: Verwenden Sie das tatsächliche primäre Lila und die dazugehörigen Statusrollen

Verwenden Sie das tatsächliche lila Primär- und die dazugehörigen Statusrollen

Die helle Primärfarbe von CoreUI ist #5856d6; der Kontrast der Primärfarbe ist Weiß. Die Karte mit den Review-Prinzipien kombiniert primary-bg-subtle, primary-border-subtle und primary-text-emphasis. Diese Bezeichnungen stehen für eine abgestimmte Oberflächengestaltung. Der ergänzende Text steht daher nicht auf einem getönten Hintergrund mit einer willkürlich gewählten Vordergrundfarbe.

Auch die Badges „Hoch“ und „Mittel“ kombinieren dezente Gefahr- oder Warnoberflächen mit hervorgehobenem Text. Die Textbezeichnungen geben die Einstufung unabhängig von der Farbe wieder. Dies sind beispielhafte Prioritäten für Design-Reviews und keine Behauptung, dass jedes rote Badge in einem Produkt denselben fachlichen Status bedeuten muss.

Unterstützende Spezifikation lesen

CoreUI-Designsystem: Trennen Sie die Standardschriftgröße des Fließtexts von einer dichten Arbeitstabelle

Trennen Sie den Standardtext im Fließtext von einer dichten Arbeitstabelle

Der kompilierte Fließtext von CoreUI hat standardmäßig eine Schriftgröße von einem rem und einen Zeilenabstand von 1,5. Das Beispiel verwendet in der Tabelle bewusst eine Schriftgröße von vierzehn Pixeln und zwölf Pixel für die Spaltenbeschriftungen, damit eine dichte Review-Warteschlange gut lesbar bleibt. Überschrift und Zusammenfassungswerte der Seite haben jeweils eigene, größere Ausgangsgrößen. Der Leitfaden bezeichnet diese anwendungsspezifischen Anpassungen nicht fälschlich als bibliotheksweite Standardwerte.

Die drei Kontextkarten verwenden das native responsive Raster und den Abstand g-3. Posteingang und Archiv bleiben auf kleinen Bildschirmen nebeneinander, während die dritte Karte mit Erläuterungen eine ganze Zeile einnimmt. Jede Zahl basiert auf den fünf sichtbaren Beispieldatensätzen; es gibt weder sachfremde Dashboard-Kennzahlen noch erfundene Wachstumsgrafiken.

Unterstützende Spezifikation lesen

CoreUI-Designsystem: Datenattribute steuern echte Tab-Panels

CoreUI-Datenattribute steuern echte Tab-Bereiche

Posteingang und Archiv sind Tabs auf Schaltflächenbasis mit data-coreui-toggle="tab" und Verweisen auf die zugehörigen Tab-Panels. Das Markup enthält die Beziehungen zwischen tablist, tab, tabpanel, aria-controls und aria-labelledby. Die CoreUI-Komponente von JavaScript aktualisiert den aktiven Status und die Sichtbarkeit, statt dass ein Anwendungs-Handler lediglich eine Unterstreichung ändert.

Die Klasse nav-underline-border sorgt für die visuelle Gestaltung dieser Komponente. Ein Tabwechsel archiviert keine Datensätze und hebt keine Auswahl auf. Der Tab bestimmt, welcher Teil der lokalen Warteschlange angezeigt wird; die Sets für Auswahl und Archiv bleiben davon getrennte Anwendungszustände.

Unterstützende Spezifikation lesen

CoreUI-Designsystem: „Alle auswählen“ hat einen aussagekräftigen Zwischenzustand

„Alle auswählen“ hat einen aussagekräftigen Zwischenzustand

Jede Notiz hat eine stabile ID der R-Serie. Wird eine Zeile ausgewählt, kommt ihre ID in ein ausgewähltes Set. Das Kontrollkästchen in der Kopfzeile ist aktiviert, wenn alle aktuellen Posteingangseinträge ausgewählt sind, und zeigt einen Zwischenzustand, wenn nur einige ausgewählt sind. Ist der Posteingang leer, ist es deaktiviert. Diese Zustände werden bei jeder Darstellung der Warteschlange neu berechnet.

Die Stapelschaltfläche ist deaktiviert, wenn nichts ausgewählt ist; der danebenstehende Text zeigt die aktuelle Anzahl an. Nach dem Archivieren wird die Auswahl aufgehoben, damit ein bereits archivierter Datensatz nicht versehentlich im nächsten Stapel verbleibt. Die ursprüngliche Notiz und die zuständige Person bleiben dem Datensatz zugeordnet, statt durch eine allgemeine Bezeichnung wie „Erledigt“ ersetzt zu werden.

  1. Wählen Sie zwei Notizen aus und prüfen Sie den Zwischenzustand des Kontrollkästchens in der Kopfzeile.
  2. Archivieren Sie die Auswahl und überprüfen Sie, ob die Anzahl im Posteingang um zwei sinkt.
  3. Öffnen Sie das Archiv, um die ursprünglichen Anfragen und die zuständigen Personen zu lesen.

Unterstützende Spezifikation lesen

CoreUI-Designsystem: Ein Toast bietet eine konkrete, rückgängig zu machende Aktion

Eine Toast-Meldung stellt eine konkrete, umkehrbare Aktion dar

Die Anwendung speichert die genauen IDs des zuletzt archivierten Stapels und ruft anschließend die show-Methode der nativen Toast-Instanz auf. autohide ist false, da die Meldung eine Rückgängig-Aktion enthält; das Beispiel lässt die Möglichkeit zum Rückgängigmachen nicht nach einem beliebig kurzen Timer verfallen. Der Toast kann weiterhin ausdrücklich geschlossen werden.

Beim Rückgängigmachen werden nur die gespeicherten IDs aus dem archivierten Set entfernt, die Momentaufnahme des letzten Stapels gelöscht und die zugehörige Aktion deaktiviert. Ein früherer Archivierungsstapel bleibt archiviert, wenn ein späterer Stapel rückgängig gemacht wird. Dies ist bewusst eine einstufige Aktion und keine irreführende Behauptung, es gebe einen vollständigen Rückgängigmachungsverlauf.

Unterstützende Spezifikation lesen

CoreUI-Designsystem: Anfragen bleiben nach dem Archivieren lesbar

Die Anfrage bleibt nach der Archivierung lesbar

Die Tabelle im Posteingang zeigt den Notiztitel, die konkrete gewünschte Änderung, den Bereich, die Priorität und die zuständige Person. Das Archiv stellt eine kompakte Liste dar, in der Titel, ID, zuständige Person und vollständige Anfrage erhalten bleiben. Nach der Bearbeitung wird der Tabellenrahmen reduziert, ohne Informationen zu löschen, die zum Verständnis der Änderung benötigt werden.

Auf Mobilgeräten behält die Tabelle innerhalb von table-responsive eine Mindestbreite von 740px. Der benannte Bereich ist per Tastatur fokussierbar und hat eine sichtbare Fokusdarstellung. Horizontales Scrollen bleibt auf die Tabelle beschränkt, statt das Dokument zu verbreitern. Wichtige Spalten nur deshalb zu entfernen, um eine Bildlaufleiste zu vermeiden, würde die Review-Aufgabe beeinträchtigen.

Unterstützende Spezifikation lesen

CoreUI-Designsystem: Ein dauerhaftes Ergebnis anzeigen, ohne ein Backend zu erfinden

Verwenden Sie ein dauerhaftes Ergebnis, ohne ein Backend vorzutäuschen

Der Toast hat die höfliche Statusrolle und eine atomare Ansage. Ein zweiter Inline-Status beschreibt das lokale Archivierungs- oder Rückgängig-Ergebnis. Keiner der beiden behauptet, ein externes Issue sei geschlossen worden: Die Seite ist ausdrücklich nicht mit einem Issue-Tracker verbunden. Die Vorschau ändert nur ihre Sets im Arbeitsspeicher. Nach einem Neuladen werden daher die ursprünglichen fünf Notizen wiederhergestellt.

Notiztitel und Beschreibungen werden einschließlich der Archivliste mit textContent eingefügt. Feste Klassenzuordnungen bilden die beiden bekannten Prioritäten ab. So bleibt nutzerähnlicher Text von der HTML-Struktur getrennt und der Datenfluss im Beispiel nachvollziehbar.

  • Geben Sie die tatsächliche Stapelgröße und den lokalen Geltungsbereich an.
  • Lassen Sie die Rückgängig-Schaltfläche verfügbar, solange ihre Momentaufnahme gültig ist.
  • Bezeichnen Sie eine lokale DOM-Aktualisierung nicht als erfolgreiche Behebung aus der Ferne.

Unterstützende Spezifikation lesen

CoreUI Design-System: Lade das CoreUI-Bundle vor dem lokalen Modul

Laden Sie das CoreUI-Bundle vor dem lokalen Modul

Bei der vollständigen Einrichtung werden die Assets des Pakets aus dist an einen lokalen öffentlichen Pfad kopiert und coreui.bundle.min.js vor app.js geladen. Das Bundle stellt coreui.Toast bereit und ermöglicht das Tab-Verhalten für die data-coreui-Attribute. Für diese Zusammensetzung ist keine zweite Bootstrap-Laufzeitumgebung erforderlich; sie könnte außerdem zu unklaren Zuständigkeiten durch doppelte Einbindung führen.

Das helle Theme wird explizit mit data-coreui-theme="light" festgelegt. Eine größere Anwendung kann den Farbmodus-Mechanismus von CoreUI übernehmen, sollte aber die semantischen Text- und Oberflächenkombinationen gemeinsam überprüfen. Die lokale Überprüfung umfasste eine teilweise Auswahl, einen Stapel mit zwei Datensätzen, das Lesen im Archiv-Tab, das Wiederherstellen per Rückgängig und einen Viewport von 390px.

Unterstützende Spezifikation lesen

CoreUI Design-System-Komponentenbeispiele

Warteschlange, Archiv-Tab und Rückgängig-Toast

CoreUI-Datenattribute, Tabellensteuerelemente, semantische Prioritäts-Badges und ein dauerhaft eingeblendeter Toast.

html
<main class="review-desk"><header class="desk-heading"><div><p class="eyebrow">COREUI · REVIEW OPERATIONS</p><h1>Keep the review queue moving.</h1><p class="text-body-secondary">Archive resolved design notes and undo the last local batch.</p></div><span class="badge text-bg-primary">LOCAL WORKSPACE</span></header><div class="row g-3 mb-4"><div class="col-6 col-md-4"><div class="card metric"><div class="card-body"><div class="text-body-secondary small">Inbox</div><strong id="inbox-count">5</strong><span>design notes</span></div></div></div><div class="col-6 col-md-4"><div class="card metric"><div class="card-body"><div class="text-body-secondary small">Archived</div><strong id="archive-count">0</strong><span>local resolutions</span></div></div></div><div class="col-12 col-md-4"><div class="card metric context-card"><div class="card-body"><div class="text-body-secondary small">Review principle</div><p class="mt-2 mb-0">Keep the original request visible, even after the note is resolved.</p></div></div></div></div><section class="card"><div class="card-header bg-body"><ul class="nav nav-underline-border" role="tablist"><li class="nav-item" role="presentation"><button id="inbox-tab" class="nav-link active" data-coreui-toggle="tab" data-coreui-target="#inbox-panel" type="button" role="tab" aria-controls="inbox-panel" aria-selected="true">Inbox</button></li><li class="nav-item" role="presentation"><button id="archive-tab" class="nav-link" data-coreui-toggle="tab" data-coreui-target="#archive-panel" type="button" role="tab" aria-controls="archive-panel" aria-selected="false">Archive</button></li></ul></div><div class="tab-content"><div id="inbox-panel" class="tab-pane fade show active" role="tabpanel" aria-labelledby="inbox-tab" tabindex="0"><div class="batch-bar"><span id="selection" class="small text-body-secondary">No notes selected</span><button id="archive" class="btn btn-primary btn-sm" disabled>Archive selected</button></div><div class="table-responsive" tabindex="0" role="region" aria-label="Design review inbox"><table class="table table-hover align-middle mb-0"><thead><tr><th scope="col"><input id="select-all" class="form-check-input" type="checkbox" aria-label="Select all inbox notes"></th><th scope="col">Design note</th><th scope="col">Area</th><th scope="col">Priority</th><th scope="col">Owner</th></tr></thead><tbody id="inbox-rows"></tbody></table></div><p id="inbox-empty" class="empty-copy" hidden>All sample notes are archived. Open Archive to inspect them.</p></div><div id="archive-panel" class="tab-pane fade" role="tabpanel" aria-labelledby="archive-tab" tabindex="0"><div class="p-4"><h2 class="h5">Resolved in this local session</h2><p class="text-body-secondary small">The original note and owner stay attached to the record.</p><ul id="archive-list" class="list-group list-group-flush"></ul><p id="archive-empty" class="mb-0 text-body-secondary">No notes archived yet.</p></div></div></div></section><section class="decision-key"><span class="badge bg-danger-subtle text-danger-emphasis">High</span><p>Blocks a clear next action or access to important information.</p><span class="badge bg-warning-subtle text-warning-emphasis">Medium</span><p>Creates avoidable friction while the flow remains usable.</p></section><div class="toast-container position-static mt-4"><div id="undo-toast" class="toast w-100" role="status" aria-live="polite" aria-atomic="true"><div class="toast-header"><strong class="me-auto">Local archive updated</strong><button type="button" class="btn-close" data-coreui-dismiss="toast" aria-label="Dismiss notice"></button></div><div class="toast-body"><p id="toast-copy" class="mb-3"></p><button id="undo" class="btn btn-outline-primary btn-sm">Undo last batch</button></div></div></div><p id="result" class="small text-body-secondary mt-3" role="status">No external issue tracker is connected.</p></main>

Code-Referenz

  • Verwende mit diesem Bundle data-coreui-*-Attribute, nicht data-bs-*, die aus einer anderen Bibliothek übernommen wurden.
  • Die Tabelle befindet sich in einem benannten lokalen Bereich mit horizontalem Scrollen.
  • Prioritätsfarben werden durch explizite Bezeichnungen wie „Hoch“ und „Mittel“ ergänzt.

Stapelauswahl und Rückgängigmachen des letzten Stapels

Stabile Datensatz-IDs steuern die ausgewählten und archivierten Mengen, während der native Toast die Sichtbarkeit des Hinweises verwaltet.

javascript
const records=[{id:'R-201',title:'Explain the empty search result',detail:'Offer a way to clear the filter without losing the query.',area:'Search',priority:'High',owner:'Maya'},{id:'R-202',title:'Label the compact navigation icons',detail:'The collapsed sidebar needs understandable accessible names.',area:'Navigation',priority:'High',owner:'Jules'},{id:'R-203',title:'Keep form errors beside their fields',detail:'Retain entered values after a failed submission.',area:'Forms',priority:'High',owner:'Alex'},{id:'R-204',title:'Align the table’s numeric column',detail:'Right-align quantities so differences can be scanned.',area:'Tables',priority:'Medium',owner:'Sam'},{id:'R-205',title:'Clarify the download format',detail:'Show the file type before the visitor starts the download.',area:'Content',priority:'Medium',owner:'Maya'}];const archived=new Set(),selected=new Set();let lastBatch=[];const q=s=>document.querySelector(s),toast=coreui.Toast.getOrCreateInstance(q('#undo-toast'),{autohide:false});
function render(){const inbox=records.filter(r=>!archived.has(r.id));q('#inbox-rows').replaceChildren();q('#archive-list').replaceChildren();records.forEach(r=>{if(archived.has(r.id)){let li=document.createElement('li');li.className='list-group-item px-0';let title=document.createElement('strong'),detail=document.createElement('p');title.textContent=`${r.id} · ${r.title}`;detail.className='small text-body-secondary mb-0 mt-1';detail.textContent=`${r.owner} · ${r.detail}`;li.append(title,detail);q('#archive-list').append(li);return;}let tr=document.createElement('tr');tr.innerHTML='<td><input class="form-check-input" type="checkbox"></td><td><strong></strong><p class="small text-body-secondary mb-0 mt-1"></p></td><td></td><td><span class="badge"></span></td><td></td>';let cells=tr.children,check=tr.querySelector('input');check.setAttribute('aria-label',`Select ${r.id}: ${r.title}`);check.checked=selected.has(r.id);check.onchange=()=>{check.checked?selected.add(r.id):selected.delete(r.id);sync();};cells[1].querySelector('strong').textContent=r.title;cells[1].querySelector('p').textContent=r.detail;cells[2].textContent=r.area;let badge=tr.querySelector('.badge');badge.classList.add(r.priority==='High'?'bg-danger-subtle':'bg-warning-subtle',r.priority==='High'?'text-danger-emphasis':'text-warning-emphasis');badge.textContent=r.priority;cells[4].textContent=r.owner;q('#inbox-rows').append(tr);});q('#inbox-count').textContent=inbox.length;q('#archive-count').textContent=archived.size;q('#inbox-empty').hidden=inbox.length!==0;q('#archive-empty').hidden=archived.size!==0;sync();}
function sync(){let total=records.length-archived.size;q('#selection').textContent=selected.size?`${selected.size} ${selected.size===1?'note':'notes'} selected`:'No notes selected';q('#archive').disabled=!selected.size;q('#select-all').disabled=!total;q('#select-all').checked=total>0&&selected.size===total;q('#select-all').indeterminate=selected.size>0&&selected.size<total;}
q('#select-all').onchange=e=>{selected.clear();if(e.target.checked)records.filter(r=>!archived.has(r.id)).forEach(r=>selected.add(r.id));render();};q('#archive').onclick=()=>{lastBatch=[...selected];lastBatch.forEach(id=>archived.add(id));selected.clear();render();q('#toast-copy').textContent=`${lastBatch.length} ${lastBatch.length===1?'note was':'notes were'} archived locally. You can undo this most recent batch.`;q('#undo').disabled=false;toast.show();q('#result').textContent='The archive is local. No external issue tracker was changed.';};q('#undo').onclick=()=>{let count=lastBatch.length;lastBatch.forEach(id=>archived.delete(id));lastBatch=[];q('#undo').disabled=true;render();toast.hide();q('#result').textContent=`Restored ${count} ${count===1?'note':'notes'} to the inbox.`;};render();

Code-Referenz

  • „Alle auswählen“ zeigt die Zustände ausgewählt, nicht ausgewählt und teilweise ausgewählt an.
  • Mit „Rückgängig“ werden genau die IDs des zuletzt verarbeiteten Stapels wiederhergestellt.
  • Der gesamte Datensatztext wird mit textContent eingefügt.

Ursprüngliche Warteschlangendichte

Seitenaufbau mit nativen CoreUI-Karten und Tabellenstilen.

css
html,body{min-height:0;height:auto}body{background:var(--cui-tertiary-bg)}.review-desk{max-width:1120px;padding:32px;margin:auto}.desk-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:28px}.eyebrow{color:var(--cui-primary);font-size:11px;font-weight:700;letter-spacing:.12em}h1{font-size:32px;line-height:1.2;margin:12px 0}.desk-heading p:last-child{font-size:15px;line-height:1.6}.metric{height:100%}.metric strong{display:inline-block;font-size:32px;line-height:1.2;margin:12px 10px 0 0}.metric span{font-size:12px;color:var(--cui-secondary-color)}.context-card{background:var(--cui-primary-bg-subtle);border-color:var(--cui-primary-border-subtle)}.context-card p{font-size:14px;line-height:1.6;color:var(--cui-primary-text-emphasis)}.batch-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 20px}.table{min-width:740px;font-size:14px}.table th,.table td{padding:16px}.table th:first-child,.table td:first-child{width:48px}.table td:nth-child(2){max-width:380px}.table td:nth-child(2) p{line-height:1.5}.table th{font-size:12px;color:var(--cui-secondary-color);font-weight:600}.empty-copy{padding:24px;margin:0}.decision-key{display:grid;grid-template-columns:max-content 1fr;align-items:start;gap:10px 14px;margin-top:24px;font-size:12px;color:var(--cui-secondary-color)}.decision-key p{margin:0;line-height:1.6}.toast-container{max-width:520px}[hidden]{display:none!important}@media(max-width:650px){.review-desk{padding:24px 14px}.desk-heading{flex-direction:column;gap:4px}h1{font-size:28px}.metric strong{font-size:28px}.batch-bar{padding:14px}.table-responsive:focus-visible{outline:3px solid var(--cui-primary);outline-offset:-3px}}

Code-Referenz

  • Die Tabellenbreite von 740px ist eine Lesbarkeitsentscheidung der Anwendung, kein CoreUI-Standardwert.
04

CoreUI Design-System: Einrichtung für AI Agents

Ausgangspunkt für die Implementierung

Verifiziert mit CoreUI für Bootstrap 5.9.0. Die bereitgestellte app.js erwartet das vollständige Markup der Warteschlange und führt keine Netzwerkoperationen aus. Der HTML-Wrapper enthält das vollständige Body-Markup; speichere die bereitgestellten Beispiele für Interaktionen und CSS unter den hier angegebenen Dateinamen.

html
<!-- npm install @coreui/[email protected] -->
<!-- Copy node_modules/@coreui/coreui/dist to public/vendor/coreui. -->
<html lang="en" data-coreui-theme="light">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="/vendor/coreui/css/coreui.min.css">
<link rel="stylesheet" href="style.css">
<main class="review-desk"><header class="desk-heading"><div><p class="eyebrow">COREUI · REVIEW OPERATIONS</p><h1>Keep the review queue moving.</h1><p class="text-body-secondary">Archive resolved design notes and undo the last local batch.</p></div><span class="badge text-bg-primary">LOCAL WORKSPACE</span></header><div class="row g-3 mb-4"><div class="col-6 col-md-4"><div class="card metric"><div class="card-body"><div class="text-body-secondary small">Inbox</div><strong id="inbox-count">5</strong><span>design notes</span></div></div></div><div class="col-6 col-md-4"><div class="card metric"><div class="card-body"><div class="text-body-secondary small">Archived</div><strong id="archive-count">0</strong><span>local resolutions</span></div></div></div><div class="col-12 col-md-4"><div class="card metric context-card"><div class="card-body"><div class="text-body-secondary small">Review principle</div><p class="mt-2 mb-0">Keep the original request visible, even after the note is resolved.</p></div></div></div></div><section class="card"><div class="card-header bg-body"><ul class="nav nav-underline-border" role="tablist"><li class="nav-item" role="presentation"><button id="inbox-tab" class="nav-link active" data-coreui-toggle="tab" data-coreui-target="#inbox-panel" type="button" role="tab" aria-controls="inbox-panel" aria-selected="true">Inbox</button></li><li class="nav-item" role="presentation"><button id="archive-tab" class="nav-link" data-coreui-toggle="tab" data-coreui-target="#archive-panel" type="button" role="tab" aria-controls="archive-panel" aria-selected="false">Archive</button></li></ul></div><div class="tab-content"><div id="inbox-panel" class="tab-pane fade show active" role="tabpanel" aria-labelledby="inbox-tab" tabindex="0"><div class="batch-bar"><span id="selection" class="small text-body-secondary">No notes selected</span><button id="archive" class="btn btn-primary btn-sm" disabled>Archive selected</button></div><div class="table-responsive" tabindex="0" role="region" aria-label="Design review inbox"><table class="table table-hover align-middle mb-0"><thead><tr><th scope="col"><input id="select-all" class="form-check-input" type="checkbox" aria-label="Select all inbox notes"></th><th scope="col">Design note</th><th scope="col">Area</th><th scope="col">Priority</th><th scope="col">Owner</th></tr></thead><tbody id="inbox-rows"></tbody></table></div><p id="inbox-empty" class="empty-copy" hidden>All sample notes are archived. Open Archive to inspect them.</p></div><div id="archive-panel" class="tab-pane fade" role="tabpanel" aria-labelledby="archive-tab" tabindex="0"><div class="p-4"><h2 class="h5">Resolved in this local session</h2><p class="text-body-secondary small">The original note and owner stay attached to the record.</p><ul id="archive-list" class="list-group list-group-flush"></ul><p id="archive-empty" class="mb-0 text-body-secondary">No notes archived yet.</p></div></div></div></section><section class="decision-key"><span class="badge bg-danger-subtle text-danger-emphasis">High</span><p>Blocks a clear next action or access to important information.</p><span class="badge bg-warning-subtle text-warning-emphasis">Medium</span><p>Creates avoidable friction while the flow remains usable.</p></section><div class="toast-container position-static mt-4"><div id="undo-toast" class="toast w-100" role="status" aria-live="polite" aria-atomic="true"><div class="toast-header"><strong class="me-auto">Local archive updated</strong><button type="button" class="btn-close" data-coreui-dismiss="toast" aria-label="Dismiss notice"></button></div><div class="toast-body"><p id="toast-copy" class="mb-3"></p><button id="undo" class="btn btn-outline-primary btn-sm">Undo last batch</button></div></div></div><p id="result" class="small text-body-secondary mt-3" role="status">No external issue tracker is connected.</p></main>

<script src="/vendor/coreui/js/coreui.bundle.min.js"></script>
<script src="app.js"></script>
</html>

Ein Prompt für dein Projekt

Agenten-Prompt
Ausgangspunkt ist der Design-Review-Arbeitsplatz von CoreUI 5.9.0. Behalte die nativen Tabs und den Rückgängig-Toast mit data-coreui-Attributen bei, ebenso die fünf Review-Datensätze und die Menge der ausgewählten IDs mit einem daraus abgeleiteten gemischten Auswahlzustand. Archiviere den ausgewählten Stapel, zeige ihn im Archiv-Tab an und ermögliche mit „Rückgängig“ das Wiederherstellen des letzten Stapels. Begrenze das horizontale Scrollen der Tabelle auf ihren Bereich und unterscheide zwischen Auswahl und Zugehörigkeit zum Archiv. Verwende das passende CoreUI-Bundle; ersetze keine Attributnamen durch Bootstrap-Namen und behaupte nicht, dass die Archivierung serverseitig erfolgt.
05

CoreUI Design-System: Quellen und Geltungsbereich

CoreUI für die kostenlosen Komponenten von Bootstrap 5.9.0. Theme-Standardwerte und ursprüngliche Dichteentscheidungen sind voneinander abgegrenzt. Archivierung und Rückgängigmachen betreffen nur die lokalen Beispieldatensätze.