Skip to content

Foundations

Plain CSS

104 classes for pages with no React and no Tailwind. They match the React components, read only the --sk-* variables, and sit in the components cascade layer so a page’s own CSS wins.

Set upLink to the section Set up

With a bundlercss
@import "@skribly/ui/plain.css";
Or straight from the HTMLhtml
<link rel="stylesheet" href="/node_modules/@skribly/ui/plain.css" />
<html data-theme="light">

Plain classes give the look and not the behaviour. Use real elements, such as button, a and label, and write the ARIA yourself where a component would have added it: link hints with aria-describedby, mark errors with aria-invalid, and put a tone word such as “Error:” in every alert, so colour never carries the meaning alone.

ButtonsLink to the section Buttons

.sk-button
html
<button class="sk-button">Save</button>
<button class="sk-button sk-button--outline">Cancel</button>
<button class="sk-button sk-button--ghost">Skip</button>
<button class="sk-button sk-button--danger">Delete</button>
<button class="sk-button sk-button--sm">Small</button>
<button class="sk-button sk-button--lg">Large</button>
<button class="sk-button" disabled>Disabled</button>
.sk-link

Questions? Read the guide.

html
<a class="sk-link" href="/docs">Read the guide</a>

FieldsLink to the section Fields

.sk-field
Shown to everyone in the workspace.
Error: enter an email address like name@example.com.
html
<div class="sk-field">
  <label class="sk-label" for="name">Project name</label>
  <input class="sk-input" id="name" aria-describedby="name-hint" />
  <span class="sk-hint" id="name-hint">Shown to everyone in the workspace.</span>
</div>

<input class="sk-input" aria-invalid="true" aria-describedby="email-error" />
<span class="sk-hint" id="email-error">Error: enter an email address like name@example.com.</span>

CardLink to the section Card

.sk-card

Weekly report

12 tasks done, 3 waiting for review.

html
<div class="sk-card">
  <h3>Weekly report</h3>
  <p>12 tasks done, 3 waiting for review.</p>
</div>

BadgesLink to the section Badges

.sk-badge
DraftNewDoneWaitingFailedBeta
html
<span class="sk-badge">Draft</span>
<span class="sk-badge sk-badge--accent">New</span>
<span class="sk-badge sk-badge--ok">Done</span>
<span class="sk-badge sk-badge--warn">Waiting</span>
<span class="sk-badge sk-badge--danger">Failed</span>
<span class="sk-badge sk-badge--info">Beta</span>

AlertsLink to the section Alerts

.sk-alert
Information: Imports run at night.
Success: Invitation sent.
Warning: Your draft is kept for 7 days.
Error: The form was not sent.
html
<div class="sk-alert" role="status"><strong>Information:</strong> Imports run at night.</div>
<div class="sk-alert sk-alert--ok" role="status"><strong>Success:</strong> Invitation sent.</div>
<div class="sk-alert sk-alert--warn"><strong>Warning:</strong> Your draft is kept for 7 days.</div>
<div class="sk-alert sk-alert--danger" role="alert"><strong>Error:</strong> The form was not sent.</div>

Class referenceLink to the section Class reference

Every class in components.css with its modifiers
ClassModifiersExample
.sk-dialog.sk-dialog--sm.sk-dialog--lgNot shown yet
.sk-button.sk-button--outline.sk-button--ghost.sk-button--danger.sk-button--sm.sk-button--lg.sk-button--iconButtons
.sk-linkNoneLink
.sk-fieldNoneFields
.sk-labelNoneFields
.sk-requiredNoneNot shown yet
.sk-optionalNoneNot shown yet
.sk-hintNoneFields
.sk-inputNoneFields
.sk-textarea.sk-textarea--monoNot shown yet
.sk-selectNoneNot shown yet
.sk-fieldsetNoneNot shown yet
.sk-checkboxNoneNot shown yet
.sk-radioNoneNot shown yet
.sk-switchNoneNot shown yet
.sk-errorNoneNot shown yet
.sk-status.sk-status--ok.sk-status--warn.sk-status--infoNot shown yet
.sk-card.sk-card--linkCard
.sk-badge.sk-badge--accent.sk-badge--ok.sk-badge--warn.sk-badge--danger.sk-badge--infoBadges
.sk-alert.sk-alert--info.sk-alert--ok.sk-alert--warn.sk-alert--dangerAlerts
.sk-callout.sk-callout--info.sk-callout--tip.sk-callout--ok.sk-callout--warn.sk-callout--dangerNot shown yet
.sk-table.sk-table--compact.sk-table--stackNot shown yet
.sk-tabs.sk-tabs--verticalNot shown yet
.sk-nav.sk-nav--vertical.sk-nav--darkNot shown yet
.sk-breadcrumbsNoneNot shown yet
.sk-paginationNoneNot shown yet
.sk-kbdNoneNot shown yet
.sk-divider.sk-divider--vertical.sk-divider--labelNot shown yet
.sk-skipNoneNot shown yet
.sk-visuallyNoneNot shown yet
.sk-tooltip.sk-tooltip--bottomNot shown yet
.sk-detailsNoneNot shown yet
.sk-code.sk-code--wrapNot shown yet
.sk-prose.sk-prose--lgNot shown yet
.sk-container.sk-container--narrow.sk-container--wideNot shown yet
.sk-stack.sk-stack--sm.sk-stack--lg.sk-stack--xlNot shown yet
.sk-cluster.sk-cluster--lg.sk-cluster--between.sk-cluster--endNot shown yet
.sk-grid.sk-grid--2.sk-grid--3.sk-grid--4Not shown yet
.sk-hero.sk-hero--displayNot shown yet
.sk-spinner.sk-spinner--sm.sk-spinner--lgNot shown yet
.sk-progress.sk-progress--sm.sk-progress--ok.sk-progress--warn.sk-progress--danger.sk-progress--infoNot shown yet
.sk-avatar.sk-avatar--xs.sk-avatar--md.sk-avatar--lg.sk-avatar--xl.sk-avatar--square.sk-avatar--emptyNot shown yet

Search this site

Arrows move through the results, Enter opens one, Esc closes. Ctrl K /