/* С картинкой — градиент для читаемости текста */<aclass="card__wrapper border_light"href="/path"><pictureclass="card__cover-container"><imgsrc="cover.jpg"class="card__img"alt="cover"></picture><divclass="card__text-container"style="background:linear-gradient(to top,rgba(0,0,0,.6) 0%,transparent 55%);color:#fff"><h4class="card__text-header">Title</h4><h6style="color:rgba(255,255,255,.7)">subtitle</h6></div></a>/* Без картинки */<aclass="card__wrapper border_light"href="/path"style="background:var(--LIGHT)"><divclass="card__text-container"><h4class="card__text-header">Title</h4><h6>subtitle</h6></div></a>
Buttons
.btn + variant. Sizes: .btn-sm · .btn-lg. Disabled via attribute.
<labelclass="toggle"><inputtype="checkbox"><divclass="toggle__track"><divclass="toggle__thumb"></div></div>
Label text
</label>/* Disabled: add opacity + pointer-events:none on the label */<labelclass="toggle"style="opacity:.4;pointer-events:none">…</label>
Card — UI
Generic content container. Same flat border as owo. Hover → DARK border.
Pill tags — same border system. .tag-active → RED.
designfrontendselectedmotion
React ×TypeScript ×CSS ×
<spanclass="tag">design</span><spanclass="tag tag-active">selected</span>/* With close button */<spanclass="tag">React <spanclass="tag-close">×</span></span>
White background, LIGHT border, thick left accent.
Build complete
2 artifacts compiled in 1.23s.
×
Saved
All changes persisted.
×
Rate limit
3 requests remaining.
×
Connection lost
Reconnecting in 5s…
×
<divclass="toast toast-accent"><divstyle="flex:1"><divclass="toast-title">Build complete</div><divclass="toast-body">2 artifacts compiled in 1.23s.</div></div><spanclass="toast-close"onclick="this.closest('.toast').style.display='none'">×</span></div>/* Left border variants: toast-accent toast-success toast-warning toast-error toast-info */
Breadcrumbs
MEDIUM color, last item DARK. Hover → BLUE + underline (owo link style).
<navclass="breadcrumbs"><spanclass="breadcrumb-item"><ahref="/">Home</a></span><spanclass="breadcrumb-sep">/</span><spanclass="breadcrumb-item"><ahref="/components">Components</a></span><spanclass="breadcrumb-sep">/</span><spanclass="breadcrumb-item">Current page</span></nav>/* Separator can be any char: / › • — */
Tooltip
Чистый CSS — никакого JS. Оборачиваешь триггер в .tooltip-wrapper, внутрь кладёшь .tooltip.
Plain tooltip
Ctrl + S
что это?
Подсказка на любом элементе
⌘ K
Command palette
<divclass="tooltip-wrapper"><buttonclass="btn btn-default">Save</button><divclass="tooltip">Ctrl + S</div></div>/* Работает на ЛЮБОМ элементе — кнопке, тексте, иконке, kbd */<divclass="tooltip-wrapper"><kbd>⌘ K</kbd><divclass="tooltip">Command palette</div></div>
Kbd
Клавиши клавиатуры. Используй для шорткатов в интерфейсе или документации.
Save file⌘S
Command palette⌘K
Find in filesCtrlShiftF
Close modalEscape
⌘⌥IorCtrlAltI— DevTools
<kbd>⌘</kbd><kbd>S</kbd>/* В таблице шорткатов */<divstyle="display:flex;align-items:center"><span>Save</span><spanstyle="margin-left:auto;display:flex;gap:4px"><kbd>⌘</kbd><kbd>S</kbd></span></div>
Spinner
CSS-анимация. Типичный кейс — вставить внутрь кнопки во время загрузки.
<divclass="spinner"></div>/* default */<divclass="spinner spinner-sm"></div>/* small */<divclass="spinner spinner-lg"></div>/* large *//* Другой цвет — переопределяем border-top-color */<divclass="spinner"style="border-top-color:var(--BLUE)"></div>/* Внутри кнопки */<buttonclass="btn btn-primary"disabled><divclass="spinner spinner-sm"style="border-color:rgba(255,255,255,.3);border-top-color:#fff"></div>
Saving…
</button>
Divider owo
Два варианта из owo: простой <hr> и с подписью через .hr_fieldset.
/* С подписью (owo: fieldset + legend) */<fieldsetclass="hr_fieldset"><legend><h6>section title</h6></legend></fieldset>/* Просто разделитель */<hr>