Behörden und öffentliche Dienste · Neue Ressource

Singapore Government Designsystem.

Verwenden Sie aktuelle SGDS Web Components mit echten responsiven Tokens, Tag- und Nachtthemes sowie nativen begrenzten Mengen, die einen lokalen Plan synchron halten.

OpenDesign-Leitfaden8 Kapitel33 ReferenzeinträgeOriginaler Anwendungsleitfaden
01

Singapore Government Designsystem-Oberflächenvorschau

Erhöhen Sie den Wert, geben Sie eine ungültige Menge ein, prüfen Sie sie, setzen Sie sie zurück und wechseln Sie zwischen nativen Tages- und Nachttoken, ohne Werte zu verlieren.

Eine kleine Workshop-Gruppe planenVollständiges Beispiel öffnen
Native SGDS-Webkomponenten und Themes 3.29.0; eigener Planer, lokaler Status und expliziter Arial-Fallback. · Implementierungsreferenz
02

Singapore Government Designsystem-Designreferenz

SGDS-Webkomponenten für Singapur 3.29.0, veröffentlichte Theme-Dateien, responsive Token und Custom-Elements-Manifest. Die Vorschau führt das originale Bundle index.umd.min.js mit lokalen Theme-Importen aus. Sie verwendet einen expliziten Arial-Fallback, keine Tailwind-Utility-Kompilierung und keinen offiziellen Schriftzug. Das v3-Paket unterscheidet sich vom auf Bootstrap basierenden SGDS v2.

Echte responsive Typografie-Token

Quelle
Name / RegelWert / KonfigurationVerwendung
--sgds-font-size-heading-xl32→36→40pxBereiche für Base,1024px und1440px; zugehöriger line-height-xl40→44→48px.
--sgds-font-size-heading-md24→26→28pxZugehöriger line-height-md28→32→32px.
--sgds-font-size-heading-sm20→22→24pxEine kompakte Rolle für Abschnittstitel.
--sgds-font-size-body-md16px in all three rangesBody-lg18→20→20px; body-sm14px.
--sgds-font-family-brandInter,system-ui,sans-serifSchriftdateien werden separat geladen; die Vorschau setzt Arial als Überschreibung.
--sgds-font-weight-*300,400,600,700Light, regular, semibold, bold.
--sgds-letter-spacing-tight-0.4pxLaufweite für Überschriften in root.css.

Primitive und semantische Theme-Rollen

Quelle
Name / RegelWert / KonfigurationVerwendung
--sgds-color-defaultDay#1a1a1a;night#f3f3f3Mappt gray1000→gray100; kein fest codierter Fließtext.
--sgds-bg-defaultDay#ffffff;night#0e0e0eDie Root-Oberfläche ändert sich mit sgds-night-theme.
--sgds-color-subtleDay#525252;night#a5a5a5Ergänzender Text; sorgen Sie auf der zugehörigen Oberfläche für ausreichenden Kontrast.
--sgds-primary-surface-default#6b4feb Product-primary600 in beiden aktuellen Theme-Dateien.
--sgds-primary-color-defaultDay#6b4feb;night#a999f3Die Textrolle unterscheidet sich von der Rolle für gefüllte Oberflächen.
--sgds-border-color-defaultDay#868686Verwenden Sie nicht dasselbe Primitive für alle Rahmen im Night-Theme.

Abstände, Rahmen und responsive Änderungen

Quelle
Name / RegelWert / KonfigurationVerwendung
--sgds-spacer-0…120,2,4,8,12,16,20,24,32,48,64,96,128pxWerte in rem bei einer Root-Größe von16px; dies sind Primitive.
--sgds-gap-md / --sgds-gap-2-xl16px /32pxFeste semantische Abstände.
--sgds-layout-gap-md16→24→32pxIm tatsächlichen Paket responsiv bei1024/1440px; dies sind nicht die512/768-Raster-Breakpoints.
--sgds-text-gap-md12→16→16pxTextabstände haben eine eigene responsive Rolle.
--sgds-form-border-radius-md8pxAlias von border-radius-md.
--sgds-form-border-width-default1pxAlias von border-width-1.

Standard-Rasterreferenz

Quelle
Name / RegelWert / KonfigurationVerwendung
xs / sm320–511 /512–767px4/8 Spalten;16px Innenabstand;20/24px feste Ränder.
md768–1023px8 Spalten;24px Innenabstand;28px feste Ränder.
lg1024–1279px12 Spalten;888px Container;24px Innenabstand.
xl1280–1439px12 Spalten;1168px Container;32px Innenabstand.
2xl1440px+12 Spalten;1312px Container;32px Innenabstand.
Preview composition888px maximum;two columns→one below768pxBewusst kompakte Planerkomposition, keine vollständige Umsetzung aller Standard-Rastervorgaben.

Öffentliche API-API von QuantityToggle

Quelle
Name / RegelWert / KonfigurationVerwendung
value / stepNumber;defaults0 /1Lesen Sie nach einem nativen Ereignis den Elementwert aus.
min / maxNumber constraintsErläutern Sie mit hintText die gewählten Servicegrenzwerte.
label / hintTextString properties/attributesGeben Sie den barrierefreien Feldnamen und einen sichtbaren Hinweis zum Wertebereich an.
hasFeedbackstyle | text | bothEin Feedback-Modus mit Zeichenfolgenwert, kein einfaches boolesches Attribut.
invalidFeedback / invalidMessage /Boolean stateVerwenden Sie das Komponenten-Feedback statt eines unzusammenhängenden roten Rahmens.
Eventssgds-input;sgds-change;sgds-invalid;sgds-validHören Sie auf input und change, damit die Zusammenfassung sowohl bei Texteingaben als auch bei Schaltflächenaktionen aktualisiert wird.
Validation methodscheckValidity();reportValidity()Geben Sie boolesche Validierungsergebnisse für Einschränkungen zurück; reportValidity zeigt das Feedback an.
readonly versus disabledVisible fixed value versus unavailable controlDisabled wird von der Übermittlung ausgeschlossen; readonly behält seinen Wert.
03

Singapore Government Designsystem – vollständiger Leitfaden

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

DESIGN-singapore-sgds.md

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

Leitfaden herunterladen

Singapore Government Designsystem Aktuelle SGDS-Familie auswählen

Webkomponenten und ältere Bootstrap-Seiten

SGDS v 3 verwendet @govtechsg/sgds-web-component. Dessen benutzerdefinierte Elemente, Theme-Tokens und aktuelle Utility-Integration bilden einen anderen Implementierungsweg als das ältere Stylesheet @govtechsg/sgds Bootstrap. Vermische keine Anweisungen für v 2 JavaScript mit Tags für v 3 und erwarte, dass die neuen Steuerelemente initialisiert werden.

Aus diesem OpenDesign-Leitfaden

Das Beispiel verwendet das tatsächliche Browser-Bundle 3.29.0, um Mengenschalter und Schaltflächen zu registrieren. Es zeigt einen eigenständigen Planer für Community-Workshops – ohne Masthead der Regierung Singapurs oder Behauptung einer Zugehörigkeit. Die Steuerelemente ändern nur lokale Werte; es gibt keinen Buchungs- oder Zahlungsvorgang.

Unterstützende Spezifikation lesen

Singapore Government Designsystem Theme-Tokens sind in Ebenen angeordnet

Primitive Farben und ihre semantische Verwendung

Die Root-Datei definiert primitive Grautöne, das primäre Produktlila und die übrigen Palettenfamilien. Die Theme-Dateien für den Tag- und Nachtmodus ordnen diese Primitive anschließend Rollen wie Standardtext, ergänzendem Text, gefüllter Oberfläche und Rahmen zu. Eine Rolle für primären Text kann sich im Nachtmodus ändern, auch wenn die Rolle für die primär gefüllte Oberfläche weiterhin dasselbe Primitive verwendet.

Die Vorschau verwendet semantische Eigenschaften für Dokumenthintergrund, Text, Rahmen und gedämpftes Panel. Wird sgds-night-theme am Root-Element aktiviert, werden daher sowohl die benutzerdefinierten Elemente als auch die umgebende Komposition aktualisiert. Ein hartcodierter schwarzer Absatz würde diese Beziehung aufheben, obwohl die Steuerelemente selbst weiterhin korrekt umgeschaltet würden.

Die Lilapalette ist der veröffentlichte Produktstandard und kein Anlass, sich als Regierungsbehörde auszugeben. Für die Identität einer Behörde und die genehmigte Verwendung eines Mastheads ist eine eigene Autorisierung erforderlich.

Unterstützende Spezifikation lesen

Singapore Government Designsystem Responsive Typografie mit konkreten Werten

Lies das ausgelieferte Token statt einer verkürzten Verhältnisangabe

Die aktuelle responsive.css ordnet heading-xl über die drei Bereiche hinweg 32, 36 und 40 px zu, mit Zeilenhöhen von 40, 44 und 48 px. Die Änderungen erfolgen bei 1024 und 1440 px. Sie sind unabhängig von den kleineren Layoutgrenzen des Rasters bei 512 und 768 px. Body-md bleibt bei 16 px.

Die öffentliche Typografieübersicht beschreibt allgemeine Verhältnisse und Prinzipien der Schriftkombination. Das ausgelieferte Token-Stylesheet enthält dagegen exakte Pixel-Aliase für jede Rolle. Diese Referenz verwendet die ausführbaren Aliase, wenn sie Implementierungswerte nennt. Behalte die semantische Überschriftenstruktur in HTML bei und weise ihr ein passendes visuelles Token zu; ein kleiner Abschnittstitel braucht keine künstlich niedrigere Überschriftenebene.

Inter ist die vorgesehene Markenschrift. In der Dokumentation zur Einrichtung sind die Schriftschnitte 300, 400, 600 und 700 aufgeführt. Das lokale Beispiel verwendet ausdrücklich ersatzweise Arial und lädt keine externen Schriftarten. Lade in einem Dienst, der das Designsystem übernimmt, die ausgewählte Schrift und teste sie, statt dich allein auf den Schriftfamiliennamen CSS zu verlassen.

Unterstützende Spezifikation lesen

Singapore Government Designsystem Unterschiedliche Abstandsrollen

Fasse nicht alle Abstände zu einer einzigen Skala zusammen

Die primitive Abstandsskala enthält neben 4, 8, 12, 16 und größeren Werten auch 2 px. Darüber liegen feste Abstandsaliases sowie responsive Abstände für Layouts, Komponenten und Text. Ein Basiswert von layout-gap-md ändert sich von 16 über 24 auf 32 px, während sich text-gap-md von 12 über 16 auf 16 px ändert. „Mittel“ bedeutet also nicht für jeden Verwendungszweck denselben Zahlenwert.

Der Planer hat eine maximale Breite von 888 px, damit zwei kompakte Inhaltsbereiche nebeneinander Platz haben: die Mengeneinstellungen und den aktuellen Plan. Unter 768 px werden sie untereinander angeordnet. Das ist eine Anwendungskomposition und keine Behauptung, dass das vollständige SGDS-Standardraster immer bei 888 px endet. Die Referenz führt die umfassenderen Regeln für Standard-Container separat auf.

Unterstützende Spezifikation lesen

Singapore Government Designsystem Ein Zähler mit begrenztem Wertebereich

Verwende „Menge“ für eine Anzahl, nicht für eine Kennung

Ein Mengenschalter eignet sich für eine kleine Anzahl, die jemand schrittweise anpassen kann. Im Beispiel werden 1–5 Teilnehmende und 0–3 gemeinsam genutzte Sets abgefragt. Das sind Einschränkungen für die Demonstration; in einem echten Dienst müssen sie sich aus der tatsächlichen Verfügbarkeit oder den geltenden Richtlinien ergeben und im Hinweis erläutert werden. Für Postleitzahlen, Kennungen und exakte Geldbeträge ist ein anderes Eingabefeld erforderlich.

Die native Komponente kombiniert eine Schaltfläche zum Verringern und eine zum Erhöhen mit einem Zahlenfeld. min, max und step sind numerisch, value enthält die aktuelle Anzahl, und label/hintText liefern den Kontext. Bei Erreichen einer Grenze ist die entsprechende Schaltfläche nicht verfügbar; für direkte Eingaben ist weiterhin eine Validierung der Einschränkungen erforderlich.

hasFeedback akzeptiert die Zeichenfolge style, text oder both. Das Beispiel verwendet both sowie eine konkrete Meldung in invalidFeedback. Würde hasFeedback wie bei einer anderen Komponente API als Boolean behandelt, ginge diese genaue Konfiguration verloren.

html
<sgds-quantity-toggle
  id="people" name="people" label="Participants"
  hintText="Choose 1 to 5 participants"
  min="1" max="5" step="1" value="1"
  hasFeedback="both"
  invalidFeedback="Enter a whole number from 1 to 5">
</sgds-quantity-toggle>
<output id="participant-total">1</output>
<script>
  customElements.whenDefined('sgds-quantity-toggle').then(() => {
    const quantity = document.querySelector('#people');
    const update = () => {
      document.querySelector('#participant-total').textContent = String(quantity.value);
    };
    ['sgds-input', 'sgds-change'].forEach(name => {
      quantity.addEventListener(name, update);
    });
  });
</script>

Code-Referenz

Unterstützende Spezifikation lesen

Singapore Government Designsystem Halte die Zusammenfassung synchron

Zwei Ereignispfade, eine Datenquelle

Die Zusammenfassung liest den Wert jedes Host-Elements aus. Sie reagiert sowohl auf sgds-input als auch auf sgds-change, da manuelle Eingaben und über Schaltflächen bestätigte Änderungen nicht zwingend denselben Ereignispfad verwenden. Beim ersten lokalen Beispiel wurden nur manuelle Eingaben getestet, sodass Aktualisierungen über die Schaltfläche zum Erhöhen fehlten; das endgültige Beispiel verarbeitet beide Ereignisse.

„Plan prüfen“ ruft für beide nativen Elemente reportValidity auf und zeigt eine lokale Statusmeldung an. Ein ungültiger Zahlenwert wird nicht in eine vermeintlich plausible Summe umgewandelt. „Zurücksetzen“ weist den Host-Elementen die ursprünglichen Werte zu und setzt den für die Anwendung sichtbaren ungültigen Zustand mit setInvalid(false) zurück. Nach updateComplete wird die Zusammenfassung aktualisiert.

Ein deaktiviertes Feld ist nicht dasselbe wie ein schreibgeschütztes Feld: Das deaktivierte Feld wird bei der Formularübermittlung ausgeschlossen, während der Wert eines schreibgeschützten Feldes erhalten bleibt. Wenn ein echter Dienst eine bestätigte Anzahl zur Überprüfung fixiert, verwende den passenden Zustand, statt das Feld nur für eine graue Darstellung zu deaktivieren.

  • Verwende sgds-input und sgds-change, wenn eine Zusammenfassung sowohl manuelle Eingaben als auch die Schaltflächen zum Erhöhen und Verringern berücksichtigt.
  • Lies value am Host des benutzerdefinierten Elements aus, statt auf dessen Shadow DOM zuzugreifen.
  • Halte lokale Validierungshinweise klar getrennt von einer erfolgreichen Reservierung oder Übermittlung.

Unterstützende Spezifikation lesen

Singapore Government Designsystem Styles vor der Registrierung

Lade die Theme-Abhängigkeiten in der richtigen Reihenfolge

Importiere in einer gebündelten Anwendung day.css, night.css und css/sgds.css in dieser Reihenfolge und anschließend die Komponentenbibliothek genau einmal. Die Dateien für den Tag- und Nachtmodus importieren root.css, das wiederum responsive.css importiert. Die Foundation-Datei importiert reboot.css und grid.css. Bei einer statischen Kopie müssen diese relativen Abhängigkeiten erhalten bleiben – nicht nur die ersten drei Dateien.

Die offizielle utility.css ist ein Konfigurationseinstieg für Tailwind CSS v 4. Sie muss durch einen konfigurierten Tailwind-Build verarbeitet werden. Wird sie einfach als Browser-Stylesheet eingebunden, werden nicht alle sgds: Utility-Klassen generiert. Dieses Beispiel verwendet stattdessen gewöhnliche Layout-CSS und semantische benutzerdefinierte Eigenschaften; ein Utility-Build ist daher nicht vorgesehen.

Für das isolierte Browserbeispiel ist die veröffentlichte Datei index.umd.min.js. In den Paketmetadaten wird zwar weiterhin index.umd.js erwähnt, diese Datei fehlt jedoch in der untersuchten Distribution. Die lokale Vorschau verwendet das tatsächlich vorhandene minimierte Bundle; das npm-Setup verwendet den dokumentierten Paketimport für Bundler.

  1. Version 3.29.0 festschreiben und Theme-Tokens vor den Foundation-Regeln importieren.
  2. Inter bereitstellen oder bewusst eine getestete Ersatzschrift wählen.
  3. Die Custom Elements einmal registrieren, bei Bedarf auf ihre Definition warten und anschließend die Anwendungs-Listener anhängen.

Unterstützende Spezifikation lesen

Singapore Government Designsystem Grenzen und Theme gemeinsam testen

Grenzwerte machen Integrationsfehler sichtbar

Participants zweimal erhöhen und prüfen, ob sowohl das Steuerelement als auch die Zusammenfassung 3 anzeigen. Direkt 9 eingeben und Check plan ausführen: Die Komponente sollte den Hinweis zu ihrem Wertebereich anzeigen und der Status zur Korrektur auffordern. Den Wert auf 5 korrigieren und bestätigen, dass die Erhöhen-Schaltfläche deaktiviert ist und der Wert weiterhin gültig bleibt.

Nach der Eingabe von Mengen zum Nacht-Theme wechseln und prüfen, ob die Werte erhalten bleiben, die Zusammenfassung lesbar bleibt und die Grenzwerte weiterhin korrekt funktionieren. Zurücksetzen und dann den Ablauf mit der Tastatur wiederholen: Mit Tab sollten Eingabefeld und Schaltflächen in einer sinnvollen Reihenfolge erreichbar sein; Enter oder Leertaste sollte eine fokussierte Schaltfläche aktivieren.

Der lokale Test überprüft das Verhalten der Komponente bei 1440, 768 und 390 px und stellt sicher, dass die Theme-Abhängigkeiten lokal bereitgestellt werden. Er belegt weder die Browserunterstützung noch eine Barrierefreiheitszertifizierung für einen künftigen staatlichen Dienst. Dieser Dienst muss den gesamten Ablauf, die Formulierungen, die Theme-Anpassung und den Umgang mit Daten testen.

Unterstützende Spezifikation lesen

Singapore Government Designsystem Beispiele für Komponenten eines Designsystems

Begrenzte Mengen und zwei Ereignispfade

Ein vollständiges natives Steuerelement mit synchronisierter Ausgabe.

html
<sgds-quantity-toggle
  id="people" name="people" label="Participants"
  hintText="Choose 1 to 5 participants"
  min="1" max="5" step="1" value="1"
  hasFeedback="both"
  invalidFeedback="Enter a whole number from 1 to 5">
</sgds-quantity-toggle>
<output id="participant-total">1</output>
<script>
  customElements.whenDefined('sgds-quantity-toggle').then(() => {
    const quantity = document.querySelector('#people');
    const update = () => {
      document.querySelector('#participant-total').textContent = String(quantity.value);
    };
    ['sgds-input', 'sgds-change'].forEach(name => {
      quantity.addEventListener(name, update);
    });
  });
</script>

Code-Referenz

Setup mit gebündelter v3

Korrekte Reihenfolge der Themes, Registrierung der Bibliothek und klare Abgrenzung der Tailwind-Utilities.

bash / css / javascript
npm install --save-exact @govtechsg/[email protected]

/* globals.css — tokens before foundation rules */
@import "@govtechsg/sgds-web-component/themes/day.css";
@import "@govtechsg/sgds-web-component/themes/night.css";
@import "@govtechsg/sgds-web-component/css/sgds.css";
/* Only for a configured Tailwind CSS v4 build: */
/* @import "@govtechsg/sgds-web-component/css/utility.css"; */

// main.js — register custom elements once
import '@govtechsg/sgds-web-component';

// Enable the published night theme; omit class for day.
document.documentElement.classList.toggle('sgds-night-theme');

Code-Referenz

Vollständiges eigenständiges Beispiel

Das vollständige Dokument enthält Layout, Steuerelemente und Initialisierung. Entpacken Sie das verknüpfte Beispielarchiv, um die exakten relativen Vendor-Assets zu erhalten, und stellen Sie es anschließend über HTTP bereit.

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>SGDS quantity specimen</title><link rel="stylesheet" href="vendor/sgds-3.29.0/themes/day.css"><link rel="stylesheet" href="vendor/sgds-3.29.0/themes/night.css"><link rel="stylesheet" href="vendor/sgds-3.29.0/css/sgds.css"><style>:root{--sgds-font-family-brand:Arial,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--sgds-bg-default);color:var(--sgds-color-default);font-family:var(--sgds-font-family-brand)}main{max-width:888px;margin:auto;padding:32px 20px}h1{font-size:var(--sgds-font-size-heading-xl);line-height:var(--sgds-line-height-xl);letter-spacing:var(--sgds-letter-spacing-tight)}h2{font-size:var(--sgds-font-size-heading-sm);line-height:var(--sgds-line-height-sm)}p{max-width:60ch;line-height:1.5}.eyebrow{color:var(--sgds-color-subtle);font-size:14px}.layout{display:grid;grid-template-columns:1fr 1fr;gap:var(--sgds-layout-gap-md);margin:32px 0}.control{border:1px solid var(--sgds-border-color-default);border-radius:var(--sgds-border-radius-md);padding:24px;background:var(--sgds-bg-alternate)}sgds-quantity-toggle{display:block;max-width:100%}dl{margin:24px 0}dt{color:var(--sgds-color-subtle)}dd{margin:0 0 16px;font-weight:600}.actions{display:flex;flex-wrap:wrap;gap:16px}#status{min-height:24px}button.native{font:inherit;background:transparent;border:1px solid var(--sgds-border-color-default);color:inherit;padding:8px 12px;border-radius:8px}button.native:focus-visible{outline:3px solid var(--sgds-primary-border-color-default);outline-offset:3px}@media(max-width:767px){.layout{grid-template-columns:1fr}.control{padding:20px}}</style><main><p class="eyebrow">Independent specimen · Community workshop planning</p><h1>Plan a small workshop group</h1><p>Adjust two bounded quantities and inspect the local summary. This example does not reserve places or equipment.</p><button class="native" id="theme" aria-pressed="false">Night theme</button><div class="layout"><section class="control"><h2>People and materials</h2><form id="planner"><sgds-quantity-toggle id="people" name="people" label="Participants" hintText="Choose 1 to 5 participants" min="1" max="5" step="1" value="1" hasFeedback="both" invalidFeedback="Enter a whole number from 1 to 5"></sgds-quantity-toggle><div style="height:24px"></div><sgds-quantity-toggle id="kits" name="kits" label="Shared material kits" hintText="Choose 0 to 3 kits" min="0" max="3" step="1" value="0" hasFeedback="both" invalidFeedback="Enter a whole number from 0 to 3"></sgds-quantity-toggle></form></section><section><h2>Current plan</h2><dl><dt>Participants</dt><dd id="p-value">1</dd><dt>Material kits</dt><dd id="k-value">0</dd></dl><p>These are demonstration limits. A real service should explain its own availability and eligibility rules.</p><div class="actions"><sgds-button id="review">Check plan</sgds-button><sgds-button id="reset" variant="outline">Reset</sgds-button></div><p id="status" role="status" aria-live="polite"></p></section></div></main><script src="vendor/sgds-3.29.0/index.umd.min.js"></script><script type="module">await Promise.all(['sgds-quantity-toggle','sgds-button'].map(x=>customElements.whenDefined(x)));const p=document.querySelector('#people'),k=document.querySelector('#kits'),status=document.querySelector('#status');await Promise.all([p.updateComplete,k.updateComplete]);const update=()=>{document.querySelector('#p-value').textContent=String(p.value);document.querySelector('#k-value').textContent=String(k.value);status.textContent=''};[p,k].forEach(x=>['sgds-input','sgds-change'].forEach(name=>x.addEventListener(name,update)));document.querySelector('#review').onclick=()=>{const validP=p.reportValidity(),validK=k.reportValidity();status.textContent=validP&&validK?'The quantities are within the demo limits. Nothing has been reserved.':'Correct the highlighted quantity before continuing.'};document.querySelector('#reset').onclick=async()=>{p.value=1;k.value=0;p.setInvalid(false);k.setInvalid(false);await Promise.all([p.updateComplete,k.updateComplete]);update()};document.querySelector('#theme').onclick=e=>{const night=document.documentElement.classList.toggle('sgds-night-theme');e.currentTarget.setAttribute('aria-pressed',String(night));e.currentTarget.textContent=night?'Day theme':'Night theme'};window.demoReady=true;</script></html>

Code-Referenz

  • Laden Sie das vollständige Beispiel unter Sources herunter. Die README enthält den genauen lokalen Startbefehl.
  • Behalten Sie die Vendor-Pfade relativ zu diesem Dokument bei. Das Archiv enthält alle Assets, die in dieser Vorschau verwendet werden.
04

Singapore Government Designsystem Einrichtung des AI-Agenten

Ausgangspunkt für die Implementierung

Die eigenständige Vorschau verwendet das verifizierte originale Bundle index.umd.min.js und die lokale CSS-Abhängigkeitskette. Das npm-Rezept ist für einen Bundler vorgesehen; utility.css erfordert Tailwind v4 und wird in dieser statischen Vorschau bewusst ausgelassen. Das vollständige ZIP mit dem funktionierenden Beispiel unter Sources enthält außerdem die exakten Abhängigkeiten der Vorschau und das vollständige Dokument. Entpacken, in diesem Verzeichnis python3 -m http.server 8080 ausführen und dann http://localhost:8080/singapore-sgds.html öffnen. Modulbasierte Beispiele nicht über file:// öffnen.

bash / css / javascript
npm install --save-exact @govtechsg/[email protected]

/* globals.css — tokens before foundation rules */
@import "@govtechsg/sgds-web-component/themes/day.css";
@import "@govtechsg/sgds-web-component/themes/night.css";
@import "@govtechsg/sgds-web-component/css/sgds.css";
/* Only for a configured Tailwind CSS v4 build: */
/* @import "@govtechsg/sgds-web-component/css/utility.css"; */

// main.js — register custom elements once
import '@govtechsg/sgds-web-component';

// Enable the published night theme; omit class for day.
document.documentElement.classList.toggle('sgds-night-theme');

Ein Prompt für dein Projekt

Agenten-Prompt
Erstelle einen SGDS-v3-Planer für Singapur mit den tatsächlichen Elementen sgds-quantity-toggle und sgds-button aus Version 3.29.0. Importiere die vollständige Token-Kette für Tag, Nacht, Root und Responsive sowie die Foundation-Styles und registriere anschließend die nativen Komponenten. Biete begrenzte Werte für die Anzahl der Teilnehmenden und Material-Sets, hasFeedback="both", exakte Beschriftungen und Hinweise, typisierte Validierung sowie eine synchronisierte Zusammenfassung, die sowohl auf sgds-input als auch auf sgds-change hört. Der Theme-Schalter muss sgds-night-theme am Root umschalten, ohne Werte zurückzusetzen. Die lokale Gültigkeit muss klar von einer Buchung unterschieden bleiben. Weder v2-Bootstrap-Code laden noch den Eindruck erwecken, dass rohes utility.css Tailwind-Klassen generiert.
05

Singapore Government Designsystem Quellen und Geltungsbereich

Unabhängiges Implementierungsbeispiel mit MIT-lizenziertem Code und originalen Workshop-Inhalten. Es werden weder ein Regierungsbriefkopf noch eine Zugehörigkeit, Reservierung, Übermittlung über ein Netzwerk oder offizielle Richtlinienbegrenzung suggeriert.