The CSS classes ship through the main stylesheet. Import the directive only when templates should bind variant or tone.

"styles": [
  "node_modules/@kikita-labs/ui/styles/kikita-ui.css",
  "src/styles.scss"
]

Decorate native text elements. Typography classes and kuiText change presentation without replacing semantic HTML.

Project profile

Workspace settings

Manage members, billing, and integrations.

Last updated 2 minutes ago

Slug is already used by another workspace.

Current slug: workspace.slug

<section aria-labelledby="project-title">
  <p class="kui-overline kui-text-primary">Project profile</p>
  <h2 id="project-title" class="kui-heading-lg kui-text-default">Workspace settings</h2>
  <p class="kui-body kui-text-muted">Manage members, billing, and integrations.</p>
  <small class="kui-caption kui-text-muted">Last updated 2 minutes ago</small>
  <p class="kui-body-sm kui-text-danger">Slug is already used by another workspace.</p>
  <p class="kui-body-sm">
    Current slug: <code class="kui-code">workspace.slug</code>
  </p>
</section>

Choose the role that matches the text's purpose, then keep the native element semantic. Each role resets margin to 0; control vertical spacing explicitly with gap or layout primitives instead of relying on the host tag's default margin.

NameTypeDefaultDescription
.kui-displayh1Rare docs or specification page title.
.kui-heading-lgh1 | h2Main page or top-level section title.
.kui-heading-mdh2 | h3Panel, dialog, or drawer title.
.kui-heading-smh3 | h4Compact section, card, or table group title.
.kui-titleh4 | h5 | spanSmall emphasized UI title.
.kui-body-lgpRelaxed paragraph text where space allows.
.kui-bodypDefault product UI body text.
.kui-body-smp | spanDense descriptions and table adjunct text.
.kui-captionsmall | spanHints, metadata, helper text, and timestamps.
.kui-overlinespanOptional uppercase group label. Use sparingly.
.kui-codecode | spanInline monospace code and token text.

Tone utilities only set color. Pair status color with clear visible text when the state matters.

NameTypeDefaultDescription
.kui-text-defaultdefaultNormal foreground text color.
.kui-text-mutedmutedSecondary copy, descriptions, and metadata.
.kui-text-disableddisabledUnavailable copy paired with a disabled control or state.
.kui-text-primaryprimaryBrand or primary action emphasis.
.kui-text-successsuccessPositive status text paired with visible status copy.
.kui-text-warningwarningCaution status text paired with visible status copy.
.kui-text-dangerdangerError or destructive status text paired with visible status copy.

The kuiText directive is convenience sugar over the same public class contract.

NameTypeDefaultDescription
kuiTextattribute directive-Applies a semantic type role and text tone to a native text element.
variantKuiTextVariant'body'Semantic typography role applied by the directive.
toneKuiTextTone'default'Semantic text color tone applied by the directive.
KuiTextVariant'display' | 'heading-lg' | 'heading-md' | 'heading-sm' | 'title' | 'body-lg' | 'body' | 'body-sm' | 'caption' | 'overline' | 'code'-Public type for the directive variant input.
KuiTextTone'default' | 'muted' | 'disabled' | 'primary' | 'success' | 'warning' | 'danger'-Public type for the directive tone input.

Each role exposes generated size, line-height, and weight tokens for theme-aware text scales.

--kui-type-heading-md-size
--kui-type-heading-md-line-height
--kui-type-heading-md-weight

Typography should strengthen native semantics rather than replace them.

  • Keep heading order meaningful; visual classes do not change document structure.
  • Use native small and code elements where those semantics apply.
  • Let long text wrap unless a local row layout owns truncation and exposes the full value.
  • Do not rely on color alone for success, warning, danger, or disabled states.