mcpField
S
sgds-utilities

sgds-utilities

github.com/govtechsgDesign & UI18243 installsUpdated 2d ago
Repository

About sgds-utilities

sgds-utilities documents SGDS utility classes built on Tailwind v4 and scoped with the sgds: prefix. It helps developers style layouts and interfaces with SGDS design tokens and utilities in markup.

Key features

  1. 01Spacing, layout, and grid utilities
  2. 02Theme-aware color tokens
  3. 03Typography and border utilities
  4. 04Responsive breakpoint variants
  5. 05Setup and category references

Use cases

  1. 01Applying spacing and layout to pages
  2. 02Styling text and borders with SGDS tokens
  3. 03Creating responsive layouts
  4. 04Using theme-aware colors in an interface

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/govtechsg/sgds-web-component --skill sgds-utilities

After installing, type/sgds-utilitiesin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

reference/
background-color.md
border-color.md
border-radius.md
border-width.md
breakpoint.md
color-semantics.md
dimension.md
elevation.md
grid.md
opacity.md
spacing.md
text-color.md
typography.md
reference/background-color/
base.md
form.md
semantic.md
surface.md
reference/border-color/
base.md
form.md
semantic.md
reference/text-color/
base.md
semantic.md
typography-roles.md
reference/typography/
patterns.md
type-properties.md

Details

From the project README

SGDS Utilities

The Utilities API — a set of atomic classes powered by Tailwind v4, scoped under the sgds: prefix. Developers apply SGDS design decisions directly in markup using this syntax rather than writing custom CSS.

Core Concept: sgds: Prefix

All SGDS utility classes use the sgds: prefix (Tailwind v4 @theme syntax):

<!-- ✅ Correct -->
<div class="sgds:p-4 sgds:bg-primary-default sgds:text-white">Content</div>

<!-- ❌ Wrong - missing prefix -->
<div class="p-4 bg-primary-default text-white">Content</div>

Required Setup

Import Utility CSS

utility.css is a Tailwind source file — it contains Tailwind v4 directives (@theme, @import "tailwindcss/theme.css") that must be processed by Tailwind's build pipeline. It cannot be imported directly in JavaScript.

Import it inside your project's main CSS file (the one Tailwind processes):

/* e.g. globals.css, index.css, main.css */
@import "@govtechsg/sgds-web-component/css/utility.css";

Tailwind will resolve and process the nested imports at build time, generating all sgds: utility classes.

Without this import, utility classes will not work.

Optional: Theme Setup

For theme-aware utilities that adapt to light/dark mode (background colors, text colors, border colors), import the theme files in your project's CSS file:

/* e.g. globals.css, index.css, main.css */
@import "@govtechsg/sgds-web-component/themes/day.css";
@import "@govtechsg/sgds-web-component/themes/night.css";
When Theme Setup is Required

Import theme files when using:

  • Background colors: sgds:bg-surface-default, sgds:bg-primary-default, etc.
  • Text colors: sgds:text-default, sgds:text-primary-default, etc.
  • Border colors: sgds:border-default, sgds:border-primary-default, etc.
When Theme Setup is Optional

Theme files are NOT required for:

  • Spacing: sgds:p-4, sgds:m-2, sgds:gap-6
  • Typography sizing: sgds:text-xl, sgds:font-bold
  • Border radius: sgds:rounded-lg
  • Opacity: sgds:opacity-50
  • Layout: sgds:flex, sgds:grid

Theme Switching

To toggle between light and dark themes programmatically:

<button id="theme-toggle">Toggle Theme</button>

<script>
  const toggleButton = document.getElementById("theme-toggle");
  toggleButton.addEventListener("click", () => {
    document.documentElement.classList.toggle("sgds-theme-night");
  });
</script>

Classes with theme-aware tokens automatically update when the theme changes.

Verification

Test that setup is complete:

<!DOCTYPE html>
<html>
  <head>
    <!-- processed by your Tailwind build -->
  </head>
  <body class="sgds:bg-default sgds:p-6">
    <div class="sgds:bg-surface-raised sgds:p-4 sgds:rounded-lg">
      <h1 class="sgds:text-heading-default sgds:text-2-xl sgds:font-bold sgds:mb-4">Setup Test</h1>
      <p class="sgds:text-body-default sgds:mb-4">If this text is styled correctly, your setup is complete.</p>
      <button
        class="sgds:bg-primary-default sgds:text-white sgds:px-4 sgds:py-2 sgds:rounded"
        onclick="document.documentElement.classList.toggle('sgds-theme-night')"
      >
        Toggle Theme
      </button>
    </div>
  </body>
</html>

Framework-Specific Setup

Since SGDS utilities are built on Tailwind v4, you must first set up Tailwind CSS for your framework before importing the SGDS CSS files.

Step 1: Follow the Tailwind CSS guide for your framework:

FrameworkGuide
Next.jshttps://tailwindcss.com/docs/installation/framework-guides/nextjs
Nuxt (Vue)https://tailwindcss.com/docs/installation/framework-guides/nuxt
Angularhttps://tailwindcss.com/docs/installation/framework-guides/angular
SvelteKithttps://tailwindcss.com/docs/installation/framework-guides/sveltekit
Astrohttps://tailwindcss.com/docs/installation/framework-guides/astro
Gatsbyhttps://tailwindcss.com/docs/installation/framework-guides/gatsby
React Routerhttps://tailwindcss.com/docs/installation/framework-guides/react-router
Vite (generic)https://tailwindcss.com/docs/installation/using-vite

Not listed? See the full list at https://tailwindcss.com/docs/installation/framework-guides.

Step 2: After Tailwind is set up, add the SGDS @import to the same CSS file that Tailwind processes (usually globals.css, main.css, or index.css):

@import "@govtechsg/sgds-web-component/css/utility.css";

/* Optional: theme-aware color tokens */
@import "@govtechsg/sgds-web-component/themes/day.css";
@import "@govtechsg/sgds-web-component/themes/night.css";

Available Utilities

CategoryUtilityTheme files requiredReference
LayoutGrid system (.sgds-container, .sgds-grid, .sgds-col-*)No→ reference/grid.md
LayoutContainer dimensions (sgds:w-container, sgds:max-w-container-*)No→ reference/dimension.md
SpacingMargin, padding, gap (sgds:p-*, sgds:m-*, sgds:gap-*, semantic tokens)No→ reference/spacing.md
ColorColor token suffix semantics (default, emphasis, muted, fixed, etc.)—→ reference/color-semantics.md
ColorBackground colors (sgds:bg-*)Yes→ reference/background-color.md
ColorText colors (sgds:text-*)Yes→ reference/text-color.md
ColorBorder colors (sgds:border-* color)Yes→ reference/border-color.md
BorderBorder width and sides (sgds:border, sgds:border-2, sgds:border-l-4, etc.)No→ reference/border-width.md
BorderBorder radius (sgds:rounded-*, sgds:rounded-form-*)No→ reference/border-radius.md
TypographyFont size, weight, line height, letter spacing, font familyNo→ reference/typography.md
VisualOpacity (sgds:opacity-*)No→ reference/opacity.md
VisualElevation / box shadows (sgds:shadow-*, sgds:shadow-edge-*)No→ reference/elevation.md
ResponsiveBreakpoint prefixes (sgds:xs:, sgds:sm:, sgds:md:, sgds:lg:, sgds:xl:, sgds:2-xl:)No→ reference/breakpoint.md
PatternsCross-category component patterns (card, alert, form, modal)—→ reference/overview-patterns.md

Quick Reference by Use Case

Page layout, columns, responsive grid → reference/grid.md Container width, max-width → reference/dimension.md Spacing between sections, components, text → reference/spacing.md Color token suffixes (default, emphasis, muted, etc.) → reference/color-semantics.md Card backgrounds, surface colors → reference/background-color.md Text content colors → reference/text-color.md Borders and rounded corners → reference/border-color.md, reference/border-width.md, reference/border-radius.md Headings, body text, font sizes → reference/typography.md Transparent overlays, disabled states → reference/opacity.md Card shadows, modal depth, sticky header/footer edges → reference/elevation.md Responsive breakpoints, show/hide at viewport sizes → reference/breakpoint.md


For AI Agents:

  1. Always verify users have completed setup (utility CSS import) before suggesting utility classes.
  2. Theme files (day.css, night.css) are only needed for color utilities (background, text, border colors) — not for spacing, typography, border radius, or opacity.
  3. When users ask about a specific utility category, read the corresponding reference file before generating output.
  4. The grid system (.sgds-container, .sgds-grid, .sgds-col-*) is always preferred over generic Tailwind sgds:grid-cols-* — see reference/grid.md.
  5. Prefer semantic spacing utilities (sgds:gap-layout-*, sgds:p-component-*) over raw numeric utilities (sgds:p-4, sgds:gap-6) — they are responsive and encode design intent.
  6. Prefer semantic font-size utilities (sgds:text-display-*, sgds:text-heading-*, sgds:text-body-*) over raw scale utilities — they are responsive.
  7. Color suffix modifiers (default, emphasis, muted, surface, fixed-light, fixed-dark, inverse) are shared across all color utilities — see reference/color-semantics.md.
  8. Never use inline style attributes. If a layout or visual property is needed, find the equivalent sgds: utility class. If no utility class exists for the exact value, prefer the closest semantic utility. Only resort to a CSS custom property override as a last option, and never via a style attribute.
  9. Never use raw sgds:max-w-* utilities for container sizing. Raw classes like sgds:max-w-2xl, sgds:max-w-lg, sgds:max-w-sm map to small Tailwind numeric values and are not part of the SGDS design system. Use sgds:max-w-container-* (md/lg/xl/2-xl/3-xl) for inner containers, or sgds:w-container for the top-level page wrapper. See reference/dimension.md.

Comments

Markdown supported