Customization
Components
Use components to cherry-pick by name.
<script src="https://cdn.semantic-ui.com/load"
components="button,input,modal,tooltip"
></script>
Component Bundles
Use a bundle name to load a curated set. Bare components defaults to standard.
<script src="https://cdn.semantic-ui.com/load"
components="extended"
></script>
Bundles: standard, extended, full. What's in each bundle →
Packages
Use bare attributes to load standalone packages. No CSS auto-injection. Combine freely.
<!-- Signals + utilities, no UI -->
<script src="https://cdn.semantic-ui.com/load"
reactivity utils
></script>
Available: reactivity, query, utils, templating, renderer, compiler, specs, tailwind.
Versions
Use version to pin to a specific release. Default is latest.
<script src="https://cdn.semantic-ui.com/load"
components
version="0.18.0"
></script>
Values: semver ("0.18.0"), "canary" (latest push to main), "latest" (default).
CSS
Use css to add page-level styles — reset, typography, scrollbars. Tokens are injected automatically with components. Suppress with css="none".
<!-- Add page styles (reset + base) -->
<script src="https://cdn.semantic-ui.com/load"
components="button,input"
css
></script>
Values: bare (page styles), "none" (suppress all CSS). Tokens are custom properties — zero side effects, safe on any page.
Fonts
Use fonts to override the default. Lato loads automatically with components. Suppress with fonts="none".
<!-- Suppress default font -->
<script src="https://cdn.semantic-ui.com/load"
components="button"
fonts="none"
></script>
Available: lato (default). More fonts planned.
Icons
Use icons to choose a different set. Lucide loads automatically with components. Suppress with icons="none".
<!-- Use Phosphor instead of Lucide -->
<script src="https://cdn.semantic-ui.com/load"
components="button,icon"
icons="phosphor"
></script>
Available: lucide (default), phosphor, tabler, material-symbols, heroicons, brands. Combine: icons="lucide,brands".
Advanced
Direct ESM
ESM Imports are available for use with custom build tools or custom import maps.
<link rel="stylesheet" href="https://cdn.semantic-ui.com/css">
<link rel="stylesheet" href="https://cdn.semantic-ui.com/icons/lucide">
<link rel="stylesheet" href="https://cdn.semantic-ui.com/fonts/lato">
<script type="module" src="https://cdn.semantic-ui.com/core@canary"></script>
Embedding
Use none for css icons or fonts to suppress auto-injection when embedding into existing pages.
<script src="https://cdn.semantic-ui.com/load"
components="button"
css="none" icons="none" fonts="none"
></script>
Custom Import Maps
Use your own import map to mix versions or add packages the loader doesn't cover.
<script type="importmap">
{
"imports": {
"@semantic-ui/core": "https://cdn.semantic-ui.com/core@0.18.0",
"@semantic-ui/reactivity": "https://cdn.semantic-ui.com/reactivity@0.17.0",
"@semantic-ui/utils": "https://cdn.semantic-ui.com/utils@0.18.0",
"zod": "https://esm.sh/zod@3.24"
}
}
</script>
<script type="module">
import { Signal } from '@semantic-ui/reactivity';
import { z } from 'zod';
</script>
Component Bundles
Use bundles to load curated component sets. Sourced from component specs at build time.
| Bundle | Description |
standard | Default - General-purpose primitives (~40 at 1.0) — button, input, modal, card, table, menu, etc. |
extended | Standard + specialized components — data table, color picker, calendar, etc. |
full | Every component in the framework. |
Reference
JS Loading
| Attribute | Behavior |
components="button,input" | Cherry-pick components. Auto-injects tokens, Lato, Lucide. |
components="standard" | Named preset. Same auto-injection. |
authoring | Loads @semantic-ui/component. Tokens auto-injected. |
reactivity | Loads @semantic-ui/reactivity. No auto-injection. |
query | Loads @semantic-ui/query. No auto-injection. |
utils | Loads @semantic-ui/utils. No auto-injection. |
templating | Loads @semantic-ui/templating. No auto-injection. |
renderer | Loads @semantic-ui/renderer. No auto-injection. |
compiler | Loads @semantic-ui/compiler. No auto-injection. |
specs | Loads @semantic-ui/specs. No auto-injection. |
tailwind | Loads @semantic-ui/tailwind. No auto-injection. |
| (none) | Import map only — resolution without loading. |
CSS & Assets
| Attribute | Behavior |
css | Full page styles: tokens + reset + base. |
css="none" | Suppress all CSS auto-injection. |
icons | Lucide (same as default with components). |
icons="phosphor" | Override default icon set. |
icons="lucide,brands" | Multiple sets. |
icons="none" | Suppress icon auto-injection. |
fonts | Lato (same as default with components). |
fonts="none" | Suppress font auto-injection. |