Newer
Older
gnexus-ui-kit / dist / index.html
@Eugene Sukhodolskiy Eugene Sukhodolskiy 1 day ago 115 KB Included dist to repo
<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>GNexus UI Kit</title>
  <link rel="stylesheet" href="/assets/fonts/phosphor-icons/src/css/icons.css">
  <link rel="stylesheet" href="/assets/libs/highlight/styles/base16/summerfruit-dark.min.css">
  <link rel="stylesheet" href="/css/demo.css">
  <link rel="icon" type="image/svg+xml" href="/assets/imgs/gnexus-mark.svg">
  <meta name="theme-color" content="#16161E">
</head>
<body>
  <header class="nav-topbar">
    <button class="nav-topbar-toggle" type="button" data-navigation-toggle aria-controls="docs-navigation" aria-expanded="false">
      <i class="ph ph-sidebar-simple"></i>
      <span>Menu</span>
    </button>
    <div class="nav-topbar-brand">
      <img src="/assets/imgs/gnexus-mark.svg" alt="" aria-hidden="true">
      <span>GNexus UI Kit</span>
    </div>
    <div class="nav-topbar-current" data-docs-current-section>Typography</div>
  </header>

  <main class="container docs-page">
    <header class="section docs-intro">
      <h1 class="contrast">GNexus UI Kit</h1>
      <p>Набор базовых элементов интерфейса.</p>
    </header>

    <div class="docs-layout">
      <div class="nav-drawer-backdrop" data-navigation-close></div>
      <aside class="nav-drawer" id="docs-navigation" data-navigation-drawer aria-label="Навигация по UI kit" aria-hidden="true" inert>
        <header class="nav-drawer-header">
          <div>
            <div class="nav-drawer-title">Sections</div>
            <div class="nav-drawer-subtitle">Component library</div>
          </div>
          <button class="nav-drawer-close" type="button" data-navigation-close aria-label="Close navigation">
            <i class="ph ph-x"></i>
          </button>
        </header>
        <nav class="nav-drawer-body">
          <ul class="list list-nav">
            <li class="list-item list-item-active">
              <a class="list-action" href="#typography">
                <span class="list-label"><i class="ph ph-text-aa"></i> Typography</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#colors">
                <span class="list-label"><i class="ph ph-palette"></i> Palette</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#buttons">
                <span class="list-label"><i class="ph ph-hand-pointing"></i> Buttons</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#forms">
                <span class="list-label"><i class="ph ph-textbox"></i> Forms</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#utilities">
                <span class="list-label"><i class="ph ph-ruler"></i> Utilities</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#editable-string">
                <span class="list-label"><i class="ph ph-pencil-simple"></i> Editable String</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#navigation-overlays">
                <span class="list-label"><i class="ph ph-stack"></i> Navigation & Overlays</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#navigation-shell">
                <span class="list-label"><i class="ph ph-sidebar-simple"></i> Navigation Shell</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#lists">
                <span class="list-label"><i class="ph ph-list-bullets"></i> Lists</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#badges">
                <span class="list-label"><i class="ph ph-tag"></i> Badges</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#alerts">
                <span class="list-label"><i class="ph ph-warning"></i> Alerts</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#tables">
                <span class="list-label"><i class="ph ph-table"></i> Tables</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#data-patterns">
                <span class="list-label"><i class="ph ph-chart-bar"></i> Data Patterns</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#page-header">
                <span class="list-label"><i class="ph ph-browser"></i> Page Header</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#description-list">
                <span class="list-label"><i class="ph ph-list-dashes"></i> Key-Value</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#progress">
                <span class="list-label"><i class="ph ph-activity"></i> Progress</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#steps">
                <span class="list-label"><i class="ph ph-list-numbers"></i> Steps</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#chips">
                <span class="list-label"><i class="ph ph-tag"></i> Chips</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#avatar">
                <span class="list-label"><i class="ph ph-user-circle"></i> Avatar</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#timeline">
                <span class="list-label"><i class="ph ph-clock"></i> Timeline</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#accordion">
                <span class="list-label"><i class="ph ph-caret-down"></i> Accordion</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#tabs">
                <span class="list-label"><i class="ph ph-tabs"></i> Tabs</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#drawer">
                <span class="list-label"><i class="ph ph-sidebar"></i> Drawer</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#toasts">
                <span class="list-label"><i class="ph ph-notification"></i> Toasts</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#cards">
                <span class="list-label"><i class="ph ph-squares-four"></i> Cards</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#modals">
                <span class="list-label"><i class="ph ph-browser"></i> Modals</span>
              </a>
            </li>
            <li class="list-item">
              <a class="list-action" href="#confirm-dialog">
                <span class="list-label"><i class="ph ph-warning"></i> Confirm Dialog</span>
              </a>
            </li>
          </ul>
        </nav>
        <footer class="nav-drawer-footer">
          <span>GNexus UI Kit v0.2</span>
          <span>© GNexus</span>
        </footer>
      </aside>

      <div class="docs-content">
        <section class="section docs-section" id="typography">
	<h2 class="section-title">Typography</h2>
	<p class="docs-section-description">
		Базовая типографика задаёт размеры заголовков, текстовые состояния и моноширинный код.
		Используй семантические теги, а служебные классы добавляй для вариаций текста.
	</p>

	<div class="block">
		<h1>Heading H1</h1>
		<h2>Heading H2</h2>
		<h3>Heading H3</h3>
		<h4>Heading H4</h4>
		<h5>Heading H5</h5>
		<h6>Heading H6</h6>
	</div>

	<div class="block">
		<span class="eyebrow">System label</span>
		<p class="text-lead">
			Lead text выделяет вводный абзац, описание страницы или важный контекст перед набором действий.
		</p>
		<p class="text-primary">
			Основной текст интерфейса. Используется для контента.
		</p>
		<p class="text-secondary">
			Вторичный текст, комментарии, подписи.
		</p>
		<p class="text-muted">
			Приглушённый текст, подсказки.
		</p>
		<p class="caption">
			Caption text для технических подписей, footnote и compact metadata.
		</p>
	</div>

	<div class="block">
		<p>
			Состояния текста:
			<span class="text-success">success</span>,
			<span class="text-warning">warning</span>,
			<span class="text-danger">danger</span>,
			<span class="text-info">info</span>.
		</p>
		<p>
			Inline code <code class="code">npm run build</code> и keyboard hint <span class="kbd">esc</span>.
		</p>
	</div>

	<div class="block">
		<blockquote class="quote">
			Интерфейс должен оставаться читаемым даже в плотных технических сценариях.
			<cite>GNexus UI Kit</cite>
		</blockquote>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Typography HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;h1 class="contrast"&gt;Dashboard&lt;/h1&gt;
&lt;span class="eyebrow"&gt;System label&lt;/span&gt;
&lt;p class="text-lead"&gt;Вводный текст страницы.&lt;/p&gt;
&lt;p class="text-primary"&gt;Основной текст интерфейса.&lt;/p&gt;
&lt;p class="text-muted"&gt;Приглушённая подсказка.&lt;/p&gt;
&lt;code class="code"&gt;npm run build&lt;/code&gt;
&lt;span class="kbd"&gt;esc&lt;/span&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="colors">
	<h2 class="section-title">Color Palette</h2>
	<p class="docs-section-description">
		Палитра построена вокруг тёмной базы, светлого primary-текста и ярких статусных цветов.
		Классы `bg-*` нужны для быстрых цветовых маркеров и демонстрации токенов.
	</p>

	<div class="palette">
		<div class="color">
			<div class="color-box bg-primary"></div>
			<span>Primary</span>
		</div>

		<div class="color">
			<div class="color-box bg-secondary"></div>
			<span>Secondary</span>
		</div>

		<div class="color">
			<div class="color-box bg-accent"></div>
			<span>Accent</span>
		</div>

		<div class="color">
			<div class="color-box bg-info"></div>
			<span>Info</span>
		</div>

		<div class="color">
			<div class="color-box bg-success"></div>
			<span>Success</span>
		</div>

		<div class="color">
			<div class="color-box bg-warning"></div>
			<span>Warning</span>
		</div>

		<div class="color">
			<div class="color-box bg-error"></div>
			<span>Error</span>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Palette HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="color-box bg-primary"&gt;&lt;/div&gt;
&lt;div class="color-box bg-secondary"&gt;&lt;/div&gt;
&lt;div class="color-box bg-success"&gt;&lt;/div&gt;
&lt;div class="color-box bg-warning"&gt;&lt;/div&gt;
&lt;div class="color-box bg-error"&gt;&lt;/div&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="buttons">
	<h2 class="section-title">Buttons</h2>
	<p class="docs-section-description">
		Кнопки собираются из базового класса `.btn`, цветового модификатора и опционального размера.
		Для иконок добавляй `.with-icon`, а состояние загрузки помечай `.loading-state`.
	</p>

	<div class="block demo-actions">
		<button class="btn btn-primary">Primary</button>
		<button class="btn btn-primary with-icon"><i class="ph ph-house"></i> Primary</button>
		<button class="btn btn-secondary with-icon"><i class="ph ph-code"></i> Secondary</button>
		<button class="btn btn-accent with-icon"><i class="ph ph-envelope-simple"></i> Accent</button>
		<button class="btn btn-info with-icon"><i class="ph ph-question"></i> Info</button>
		<button class="btn btn-danger with-icon"><i class="ph ph-brackets-curly"></i> Danger</button>
		<button class="btn btn-warning with-icon"><i class="ph ph-warning"></i> Warning</button>
		<button class="btn btn-success with-icon"><i class="ph ph-codepen-logo"></i> Success</button>
	</div>

	<div class="block demo-actions">
		<button class="btn btn-primary btn-small">Small</button>
		<button class="btn btn-primary with-icon btn-small"><i class="ph ph-warning"></i> Small</button>
		<button class="btn btn-warning btn-small with-icon"><i class="ph ph-warning"></i> Small</button>
		<button class="btn btn-primary">Normal</button>
		<button class="btn btn-primary btn-large">Large</button>
	</div>

	<div class="block demo-actions">
		<button class="btn btn-primary" disabled>Disabled</button>
		<button class="btn btn-primary with-icon" disabled>
			<i class="ph ph-warning"></i> Disabled
		</button>
		<button class="btn btn-success btn-small with-icon loading-state" disabled><i class="ph-bold ph-spinner"></i> Loading</button>
		<button class="btn btn-warning with-icon loading-state" disabled><i class="ph-bold ph-spinner"></i> Loading</button>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Buttons HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;button class="btn btn-primary"&gt;Primary&lt;/button&gt;
&lt;button class="btn btn-secondary with-icon"&gt;
  &lt;i class="ph ph-code"&gt;&lt;/i&gt;
  Secondary
&lt;/button&gt;
&lt;button class="btn btn-warning btn-small"&gt;Small&lt;/button&gt;
&lt;button class="btn btn-success with-icon loading-state" disabled&gt;
  &lt;i class="ph-bold ph-spinner"&gt;&lt;/i&gt;
  Loading
&lt;/button&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="forms">
	<h2 class="section-title">Forms</h2>
	<p class="docs-section-description">
		Формы используют `.form-group`, `.label` и `.input`.
		Ошибки задаются на label через `.error`, а пояснение выводится соседним `.input-info`.
	</p>

	<div class="block form-group">
		<label class="label">
			Text input
			<input type="text" class="input" placeholder="Введите текст">
		</label>
	</div>

	<div class="block form-group">
		<label class="label error">
			Text input
			<i class="ph ph-user"></i>
			<input type="text" class="input" placeholder="Введите текст">
		</label>
		<div class="input-info"><i class="ph ph-warning-circle"></i> Field cannot be empty</div>
	</div>

	<div class="block form-group">
		<label class="label">
			Password
			<input type="password" class="input" placeholder="••••••">
		</label>
	</div>

	<div class="block form-grid">
		<div class="form-group">
			<label class="label success">
				Validated
				<input type="text" class="input" value="Release Plan">
			</label>
			<div class="input-info"><i class="ph ph-check-circle"></i> Looks good</div>
		</div>

		<div class="form-group">
			<label class="label warning">
				Needs review
				<input type="text" class="input" value="Draft">
			</label>
			<div class="input-info"><i class="ph ph-warning-circle"></i> Check before publishing</div>
		</div>

		<div class="form-group">
			<label class="label">
				Readonly
				<input type="text" class="input" value="run_1048" readonly>
			</label>
		</div>

		<div class="form-group">
			<label class="label">
				Disabled
				<input type="text" class="input" value="Locked" disabled>
			</label>
		</div>
	</div>

	<div class="block form-grid">
		<div class="form-group">
			<label class="label">
				Search
				<i class="ph ph-magnifying-glass"></i>
				<input type="search" class="input" value="release" placeholder="Search">
			</label>
		</div>

		<div class="form-group">
			<label class="label">
				Number
				<input type="number" class="input" value="42" min="0" max="100">
			</label>
		</div>
	</div>

	<div class="block">
		<fieldset class="fieldset">
			<legend class="legend">Date & Time</legend>
			<div class="form-grid">
				<div class="form-group">
					<label class="label">
						Date
						<i class="ph ph-calendar-blank"></i>
						<input type="date" class="input input-date" value="2026-04-23" data-date-picker>
					</label>
				</div>

				<div class="form-group">
					<label class="label">
						Time
						<i class="ph ph-clock"></i>
						<input type="time" class="input input-time" value="14:30" data-date-picker>
					</label>
				</div>

				<div class="form-group">
					<label class="label">
						Date & time
						<i class="ph ph-calendar-dots"></i>
						<input type="datetime-local" class="input input-datetime" value="2026-04-23T14:30" data-date-picker>
					</label>
				</div>

				<div class="form-group">
					<label class="label">
						Month
						<i class="ph ph-calendar"></i>
						<input type="month" class="input input-month" value="2026-04" data-date-picker>
					</label>
				</div>
			</div>
		</fieldset>
	</div>

	<div class="block form-group">
		<label class="label">
			Text Area
			<i class="ph ph-text-aa"></i>
			<textarea class="input" placeholder="Введите текст"></textarea>
		</label>
	</div>

	<div class="block">
		<fieldset class="fieldset">
			<legend class="legend">Fieldset</legend>
			<div class="form-grid">
				<div class="form-group">
					<label class="label">
						First name
						<input type="text" class="input" value="Ada">
					</label>
				</div>
				<div class="form-group">
					<label class="label">
						Last name
						<input type="text" class="input" value="Lovelace">
					</label>
				</div>
			</div>
		</fieldset>
	</div>

	<div class="block">
		<label class="file-upload">
			<i class="ph ph-upload-simple"></i>
			Upload file
			<input type="file">
		</label>
	</div>

	<div class="block">
		<div class="file-upload-panel">
			<form class="file-upload-form" action="#" method="post" enctype="multipart/form-data">
				<div class="file-upload-header">
					<div class="file-upload-heading">
						<h3 class="file-upload-title">Upload files</h3>
						<p class="file-upload-description">Attach documents, archives, screenshots or product images for review.</p>
					</div>
					<span class="badge badge-info">Max 12 MB</span>
				</div>

				<label class="file-upload-dropzone">
					<span class="file-upload-icon" aria-hidden="true">
						<i class="ph ph-cloud-arrow-up"></i>
					</span>
					<span class="file-upload-body">
						<span class="file-upload-primary">Choose files</span>
						<span class="file-upload-secondary">Images get thumbnails, other files show their type</span>
					</span>
					<input type="file" name="files" multiple data-file-upload-input>
				</label>

				<div class="file-upload-preview" data-file-upload-preview hidden></div>

				<div class="file-upload-actions">
					<button class="btn btn-secondary btn-small" type="reset">Reset</button>
					<button class="btn btn-accent btn-small with-icon" type="submit">
						<i class="ph ph-upload-simple"></i>
						Upload
					</button>
				</div>
			</form>
		</div>
	</div>

	<div class="block range">
		<label class="label">
			Range
			<input type="range" min="0" max="100" value="64">
		</label>
	</div>

	<div class="block form-group">
		<label class="label">
			Select
			<div class="select-wrap">
				<select class="input select">
					<option>Option 1</option>
					<option>Option 2</option>
				</select>
			</div>
		</label>
	</div>

	<div class="block form-group">
		<label class="label">
			Select
			<i class="ph ph-selection-all"></i>
			<div class="select-wrap">
				<select class="input select">
					<option>Option 1</option>
					<option>Option 2</option>
				</select>
			</div>
		</label>
	</div>

	<div class="block form-group">
		<label class="label error">
			Advanced Select
			<i class="ph ph-user"></i>
			<input type="text" class="input advanced-select-input" placeholder="Search">
		</label>
		<div class="advanced-select-container"></div>
		<div class="input-info"><i class="ph ph-warning-circle"></i> Field cannot be empty</div>
	</div>

	<script>
		document.addEventListener("DOMContentLoaded", e => {
			setTimeout(() => {
				document.querySelector(".advanced-select-container").append(advancedSelect(
					document.querySelector(".advanced-select-input"),
					{
						"name_1": "Joe",
						"name_2": "James",
						"name_3": "Jack",
						"name_4": "Eliza",
						"name_5": "Emily",
						"name_6": "Eleanor",
						"name_7": "Ella",
						"name_8": "Ellie",
						"name_9": "John",
						"name_10": "David"
					}, 
					"Nothing found"
				));				
			}, 300);
		});
	</script>

	<div class="block form-group">
		<label class="checkbox">
			<input type="checkbox">
			<span class="checkbox-control" aria-hidden="true"></span>
			<span class="checkbox-label">Checkbox 1</span>
		</label>

		<label class="checkbox mt-3">
			<input type="checkbox">
			<span class="checkbox-control" aria-hidden="true"></span>
			<span class="checkbox-label">Checkbox 2</span>
		</label>

		<label class="checkbox mt-3">
			<input type="checkbox" disabled>
			<span class="checkbox-control" aria-hidden="true"></span>
			<span class="checkbox-label">Disabled</span>
		</label>

		<label class="checkbox mt-3">
			<input type="checkbox" disabled checked>
			<span class="checkbox-control" aria-hidden="true"></span>
			<span class="checkbox-label">Disabled & Checked</span>
		</label>
	</div>

	<div class="block form-group">
		<label class="radio">
			<input type="radio" name="radio-demo">
			<span class="radio-control" aria-hidden="true"></span>
			<span class="radio-label">Radio 1</span>
		</label>

		<label class="radio ml-2">
			<input type="radio" name="radio-demo">
			<span class="radio-control" aria-hidden="true"></span>
			<span class="radio-label">Radio 2</span>
		</label>

		<label class="radio ml-2">
			<input type="radio" name="radio-demo" disabled>
			<span class="radio-control" aria-hidden="true"></span>
			<span class="radio-label">Radio 3</span>
		</label>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Forms HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="form-group"&gt;
  &lt;label class="label error"&gt;
    Project name
    &lt;i class="ph ph-user"&gt;&lt;/i&gt;
    &lt;input class="input" type="text" placeholder="Launch Plan"&gt;
  &lt;/label&gt;
  &lt;div class="input-info"&gt;
    &lt;i class="ph ph-warning-circle"&gt;&lt;/i&gt;
    Field cannot be empty
  &lt;/div&gt;
&lt;/div&gt;

&lt;fieldset class="fieldset"&gt;
  &lt;legend class="legend"&gt;Fieldset&lt;/legend&gt;
  &lt;label class="label success"&gt;
    Validated
    &lt;input class="input" type="text" value="Release Plan"&gt;
  &lt;/label&gt;
&lt;/fieldset&gt;

&lt;label class="file-upload"&gt;
  Upload file
  &lt;input type="file"&gt;
&lt;/label&gt;

&lt;fieldset class="fieldset"&gt;
  &lt;legend class="legend"&gt;Date &amp; Time&lt;/legend&gt;
  &lt;div class="form-grid"&gt;
    &lt;label class="label"&gt;
      Date
      &lt;i class="ph ph-calendar-blank"&gt;&lt;/i&gt;
      &lt;input class="input input-date" type="date" value="2026-04-23" data-date-picker&gt;
    &lt;/label&gt;
    &lt;label class="label"&gt;
      Time
      &lt;i class="ph ph-clock"&gt;&lt;/i&gt;
      &lt;input class="input input-time" type="time" value="14:30" data-date-picker&gt;
    &lt;/label&gt;
    &lt;label class="label"&gt;
      Date &amp; time
      &lt;i class="ph ph-calendar-dots"&gt;&lt;/i&gt;
      &lt;input class="input input-datetime" type="datetime-local" value="2026-04-23T14:30" data-date-picker&gt;
    &lt;/label&gt;
  &lt;/div&gt;
&lt;/fieldset&gt;

&lt;div class="file-upload-panel"&gt;
  &lt;form class="file-upload-form" enctype="multipart/form-data"&gt;
    &lt;div class="file-upload-header"&gt;
      &lt;div class="file-upload-heading"&gt;
        &lt;h3 class="file-upload-title"&gt;Upload files&lt;/h3&gt;
        &lt;p class="file-upload-description"&gt;Attach documents, archives or images.&lt;/p&gt;
      &lt;/div&gt;
      &lt;span class="badge badge-info"&gt;Max 12 MB&lt;/span&gt;
    &lt;/div&gt;

    &lt;label class="file-upload-dropzone"&gt;
      &lt;span class="file-upload-icon" aria-hidden="true"&gt;
        &lt;i class="ph ph-cloud-arrow-up"&gt;&lt;/i&gt;
      &lt;/span&gt;
      &lt;span class="file-upload-body"&gt;
        &lt;span class="file-upload-primary"&gt;Choose files&lt;/span&gt;
        &lt;span class="file-upload-secondary"&gt;Images get thumbnails, other files show their type&lt;/span&gt;
      &lt;/span&gt;
      &lt;input type="file" name="files" multiple data-file-upload-input&gt;
    &lt;/label&gt;

    &lt;div class="file-upload-preview" data-file-upload-preview hidden&gt;&lt;/div&gt;

    &lt;div class="file-upload-actions"&gt;
      &lt;button class="btn btn-secondary btn-small" type="reset"&gt;Reset&lt;/button&gt;
      &lt;button class="btn btn-accent btn-small" type="submit"&gt;Upload&lt;/button&gt;
    &lt;/div&gt;
  &lt;/form&gt;
&lt;/div&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="utilities">
	<h2 class="section-title">Utilities</h2>
	<p class="docs-section-description">
		Utilities дают предсказуемую систему отступов, размеров, раскладки и текстовых правок без создания новых компонентов.
		Spacing scale используется и в SCSS-переменных, и в utility-классах.
	</p>

	<div class="block">
		<h3 class="block-title">Spacing scale</h3>

		<div class="table-wrapper">
			<table class="table table-compact">
				<caption class="table-caption">Spacing tokens</caption>
				<thead class="table-head">
					<tr class="table-row">
						<th>Token</th>
						<th>Value</th>
						<th>Alias</th>
						<th>Utility examples</th>
					</tr>
				</thead>
				<tbody class="table-body">
					<tr class="table-row">
						<td><code class="code">$space-0</code></td>
						<td>0</td>
						<td>-</td>
						<td><code class="code">m-0</code> <code class="code">p-0</code> <code class="code">g-0</code></td>
					</tr>
					<tr class="table-row">
						<td><code class="code">$space-1</code></td>
						<td>5px</td>
						<td><code class="code">$space-xs</code></td>
						<td><code class="code">mt-1</code> <code class="code">px-1</code></td>
					</tr>
					<tr class="table-row">
						<td><code class="code">$space-2</code></td>
						<td>8px</td>
						<td><code class="code">$space-sm</code></td>
						<td><code class="code">mb-2</code> <code class="code">g-2</code></td>
					</tr>
					<tr class="table-row">
						<td><code class="code">$space-3</code></td>
						<td>12px</td>
						<td>-</td>
						<td><code class="code">p-3</code> <code class="code">gy-3</code></td>
					</tr>
					<tr class="table-row">
						<td><code class="code">$space-4</code></td>
						<td>15px</td>
						<td><code class="code">$space-md</code></td>
						<td><code class="code">mx-4</code> <code class="code">gx-4</code></td>
					</tr>
					<tr class="table-row">
						<td><code class="code">$space-5</code></td>
						<td>18px</td>
						<td>-</td>
						<td><code class="code">pt-5</code> <code class="code">pb-5</code></td>
					</tr>
					<tr class="table-row">
						<td><code class="code">$space-6</code></td>
						<td>22px</td>
						<td><code class="code">$space-lg</code></td>
						<td><code class="code">my-6</code> <code class="code">g-6</code></td>
					</tr>
					<tr class="table-row">
						<td><code class="code">$space-8</code></td>
						<td>34px</td>
						<td><code class="code">$space-xl</code></td>
						<td><code class="code">mt-8</code> <code class="code">p-8</code></td>
					</tr>
					<tr class="table-row">
						<td><code class="code">$space-10</code></td>
						<td>48px</td>
						<td><code class="code">$space-xxl</code></td>
						<td><code class="code">mb-10</code> <code class="code">py-10</code></td>
					</tr>
					<tr class="table-row">
						<td><code class="code">$space-12</code></td>
						<td>80px</td>
						<td>-</td>
						<td><code class="code">mt-12</code> <code class="code">pb-12</code></td>
					</tr>
				</tbody>
			</table>
		</div>
	</div>

	<div class="block">
		<h3 class="block-title">Utility groups</h3>

		<dl class="description-list">
			<div class="description-list-row">
				<dt class="description-list-term">Margin</dt>
				<dd class="description-list-value">
					<code class="code">m-*</code>
					<code class="code">mt-*</code>
					<code class="code">mr-*</code>
					<code class="code">mb-*</code>
					<code class="code">ml-*</code>
					<code class="code">mx-*</code>
					<code class="code">my-*</code>
				</dd>
			</div>
			<div class="description-list-row">
				<dt class="description-list-term">Padding</dt>
				<dd class="description-list-value">
					<code class="code">p-*</code>
					<code class="code">pt-*</code>
					<code class="code">pr-*</code>
					<code class="code">pb-*</code>
					<code class="code">pl-*</code>
					<code class="code">px-*</code>
					<code class="code">py-*</code>
				</dd>
			</div>
			<div class="description-list-row">
				<dt class="description-list-term">Gap</dt>
				<dd class="description-list-value">
					<code class="code">g-*</code>
					<code class="code">gx-*</code>
					<code class="code">gy-*</code>
				</dd>
			</div>
			<div class="description-list-row">
				<dt class="description-list-term">Layout</dt>
				<dd class="description-list-value">
					<code class="code">row</code>
					<code class="code">column</code>
					<code class="code">f-grid</code>
					<code class="code">grid</code>
					<code class="code">grid-2</code>
					<code class="code">grid-3</code>
				</dd>
			</div>
			<div class="description-list-row">
				<dt class="description-list-term">Alignment</dt>
				<dd class="description-list-value">
					<code class="code">items-center</code>
					<code class="code">justify-between</code>
					<code class="code">justify-end</code>
				</dd>
			</div>
			<div class="description-list-row">
				<dt class="description-list-term">Text</dt>
				<dd class="description-list-value">
					<code class="code">fs-sm</code>
					<code class="code">text-center</code>
					<code class="code">text-uppercase</code>
					<code class="code">text-nowrap</code>
				</dd>
			</div>
		</dl>
	</div>

	<div class="block">
		<h3 class="block-title">Spacing preview</h3>

		<div class="grid-3 g-4">
			<div class="alert alert-secondary m-0">g-4</div>
			<div class="alert alert-primary m-0 p-5">p-5</div>
			<div class="alert alert-warning m-0 px-6 py-3">px-6 py-3</div>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Utilities HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="grid-2 g-4 items-center"&gt;
  &lt;div class="p-5"&gt;Panel&lt;/div&gt;
  &lt;div class="px-6 py-3 text-right"&gt;Actions&lt;/div&gt;
&lt;/div&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="editable-string">
	<h2 class="section-title">Editable String</h2>
	<p class="docs-section-description">
		Editable String превращает обычный контейнер с текстом в inline-редактор.
		Компонент возвращает DOM-элемент с API `editableString`.
	</p>

	<div class="block">
		<div class="editable-example fs-lg">Hello world</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Editable String HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="editable-example"&gt;Hello world&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Editable String JS</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-javascript">const editor = editableString(document.querySelector(".editable-example"));

editor.editableString.onChange(component =&gt; {
  console.log(component.value);
});</code></pre>
	</div>
</section>

<script>
	document.addEventListener("DOMContentLoaded", e => {
		setTimeout(() => {
			const edstr = editableString(document.querySelector(".editable-example"));
			edstr.editableString.onSwitch(component => {
				console.log("SWITCH", component);
			});

			edstr.editableString.onChange(component => {
				console.log("onChange", component.value);
			});
		}, 100);
	});
</script>

        <section class="section docs-section" id="navigation-overlays">
	<h2 class="section-title">Navigation & Overlays</h2>
	<p class="docs-section-description">
		Tabs переключают близкие представления, dropdown подходит для коротких action-menu,
		tooltip дает компактную подсказку, popover раскрывает небольшой контекстный блок.
	</p>

	<div class="block">
		<div class="tabs" role="tablist" aria-label="View mode">
			<button class="tab tab-active" type="button" role="tab" aria-selected="true">Overview</button>
			<button class="tab" type="button" role="tab" aria-selected="false">Activity</button>
			<button class="tab" type="button" role="tab" aria-selected="false">Settings</button>
		</div>

		<div class="demo-actions">
			<div class="dropdown">
				<button class="btn btn-secondary with-icon" type="button" data-dropdown-toggle aria-expanded="false">
					<i class="ph ph-dots-three-outline"></i>
					Actions
				</button>
				<div class="dropdown-menu" role="menu">
					<button class="dropdown-item" type="button" role="menuitem">
						<i class="ph ph-pencil-simple"></i>
						Edit
					</button>
					<button class="dropdown-item" type="button" role="menuitem">
						<i class="ph ph-copy"></i>
						Duplicate
					</button>
					<button class="dropdown-item dropdown-item-danger" type="button" role="menuitem">
						<i class="ph ph-trash"></i>
						Delete
					</button>
				</div>
			</div>

			<span class="tooltip">
				<button class="btn btn-primary with-icon" type="button" data-tooltip-toggle>
					<i class="ph ph-question"></i>
					Help
				</button>
				<span class="tooltip-panel" role="tooltip">
					Short contextual hint for compact controls.
				</span>
			</span>

			<div class="popover">
				<button class="btn btn-accent with-icon" type="button" data-popover-toggle aria-expanded="false">
					<i class="ph ph-info"></i>
					Details
				</button>
				<div class="popover-panel">
					<h3 class="popover-title">Context</h3>
					<p class="popover-text">
						Use popover for short forms, metadata, previews, and low-risk contextual actions.
					</p>
				</div>
			</div>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Tabs HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="tabs" role="tablist" aria-label="View mode"&gt;
  &lt;button class="tab tab-active" type="button" role="tab" aria-selected="true"&gt;Overview&lt;/button&gt;
  &lt;button class="tab" type="button" role="tab" aria-selected="false"&gt;Activity&lt;/button&gt;
  &lt;button class="tab" type="button" role="tab" aria-selected="false"&gt;Settings&lt;/button&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Dropdown HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="dropdown"&gt;
  &lt;button class="btn btn-secondary with-icon" type="button" data-dropdown-toggle aria-expanded="false"&gt;
    &lt;i class="ph ph-dots-three-outline"&gt;&lt;/i&gt;
    Actions
  &lt;/button&gt;
  &lt;div class="dropdown-menu" role="menu"&gt;
    &lt;button class="dropdown-item" type="button" role="menuitem"&gt;Edit&lt;/button&gt;
    &lt;button class="dropdown-item" type="button" role="menuitem"&gt;Duplicate&lt;/button&gt;
    &lt;button class="dropdown-item dropdown-item-danger" type="button" role="menuitem"&gt;Delete&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Tooltip HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;span class="tooltip"&gt;
  &lt;button class="btn btn-primary with-icon" type="button" data-tooltip-toggle&gt;
    &lt;i class="ph ph-question"&gt;&lt;/i&gt;
    Help
  &lt;/button&gt;
  &lt;span class="tooltip-panel" role="tooltip"&gt;
    Short contextual hint for compact controls.
  &lt;/span&gt;
&lt;/span&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Popover HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="popover"&gt;
  &lt;button class="btn btn-accent with-icon" type="button" data-popover-toggle aria-expanded="false"&gt;
    &lt;i class="ph ph-info"&gt;&lt;/i&gt;
    Details
  &lt;/button&gt;
  &lt;div class="popover-panel"&gt;
    &lt;h3 class="popover-title"&gt;Context&lt;/h3&gt;
    &lt;p class="popover-text"&gt;Use popover for short forms, metadata, previews, and low-risk contextual actions.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Overlays JS</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-js">Overlays.init();

// Available on the global namespace too:
GNexusUIKit.Overlays.closeAll();</code></pre>
	</div>
</section>

        <section class="section docs-section" id="navigation-shell">
	<h2 class="section-title">Navigation Shell</h2>
	<p class="docs-section-description">
		Navigation Shell объединяет верхнюю панель, кнопку меню, left drawer и footer.
		Компонент подходит для docs, dashboards и внутренних инструментов с длинной навигацией.
	</p>

	<div class="block">
		<div class="nav-shell-preview">
			<header class="nav-topbar nav-shell-preview-topbar">
				<button class="nav-topbar-toggle" type="button" aria-expanded="false">
					<i class="ph ph-sidebar-simple"></i>
					<span>Menu</span>
				</button>
				<div class="nav-topbar-brand">
					<img src="/assets/imgs/gnexus-mark.svg" alt="" aria-hidden="true">
					<span>Product Console</span>
				</div>
				<div class="nav-topbar-current">Overview</div>
			</header>

			<div class="nav-shell-preview-body">
				<aside class="nav-drawer nav-shell-preview-drawer">
					<header class="nav-drawer-header">
						<div>
							<div class="nav-drawer-title">Navi</div>
							<div class="nav-drawer-subtitle">Workspace</div>
						</div>
						<button class="nav-drawer-close" type="button" aria-label="Close navigation">
							<i class="ph ph-x"></i>
						</button>
					</header>
					<nav class="nav-drawer-body">
						<ul class="list list-nav">
							<li class="list-item list-item-active">
								<a class="list-action" href="#navigation-shell">
									<span class="list-label"><i class="ph ph-house"></i> Overview</span>
								</a>
							</li>
							<li class="list-item">
								<a class="list-action" href="#navigation-shell">
									<span class="list-label"><i class="ph ph-table"></i> Records</span>
								</a>
							</li>
							<li class="list-item">
								<a class="list-action" href="#navigation-shell">
									<span class="list-label"><i class="ph ph-gear"></i> Settings</span>
								</a>
							</li>
						</ul>
					</nav>
					<footer class="nav-drawer-footer">
						<span>Version 0.2</span>
						<span>© GNexus</span>
					</footer>
				</aside>
				<div class="nav-shell-preview-content">
					<h3>Shell content</h3>
					<p>Topbar stays visible. Drawer opens from the left and keeps its footer pinned.</p>
				</div>
			</div>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Navigation Shell HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;header class="nav-topbar"&gt;
  &lt;button class="nav-topbar-toggle" type="button" data-navigation-toggle
    aria-controls="app-navigation" aria-expanded="false"&gt;
    &lt;i class="ph ph-sidebar-simple"&gt;&lt;/i&gt;
    &lt;span&gt;Menu&lt;/span&gt;
  &lt;/button&gt;
  &lt;div class="nav-topbar-brand"&gt;
    &lt;img src="/assets/imgs/gnexus-mark.svg" alt="" aria-hidden="true"&gt;
    &lt;span&gt;Product Console&lt;/span&gt;
  &lt;/div&gt;
  &lt;div class="nav-topbar-current"&gt;Overview&lt;/div&gt;
&lt;/header&gt;

&lt;div class="nav-drawer-backdrop" data-navigation-close&gt;&lt;/div&gt;
&lt;aside class="nav-drawer" id="app-navigation" data-navigation-drawer
  aria-label="Main navigation" aria-hidden="true" inert&gt;
  &lt;header class="nav-drawer-header"&gt;
    &lt;div&gt;
      &lt;div class="nav-drawer-title"&gt;Navi&lt;/div&gt;
      &lt;div class="nav-drawer-subtitle"&gt;Workspace&lt;/div&gt;
    &lt;/div&gt;
    &lt;button class="nav-drawer-close" type="button" data-navigation-close aria-label="Close navigation"&gt;
      &lt;i class="ph ph-x"&gt;&lt;/i&gt;
    &lt;/button&gt;
  &lt;/header&gt;

  &lt;nav class="nav-drawer-body"&gt;
    &lt;ul class="list list-nav"&gt;
      &lt;li class="list-item list-item-active"&gt;
        &lt;a class="list-action" href="/overview" data-navigation-link&gt;
          &lt;span class="list-label"&gt;&lt;i class="ph ph-house"&gt;&lt;/i&gt; Overview&lt;/span&gt;
        &lt;/a&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/nav&gt;

  &lt;footer class="nav-drawer-footer"&gt;
    &lt;span&gt;Version 0.2&lt;/span&gt;
    &lt;span&gt;© GNexus&lt;/span&gt;
  &lt;/footer&gt;
&lt;/aside&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Navigation Shell JS</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-js">NavigationShell.init();

// Available on the global namespace too:
GNexusUIKit.NavigationShell.init();</code></pre>
	</div>
</section>

        <!-- =========================
		 LISTS
========================= -->
<section class="section docs-section" id="lists">
	<h2 class="section-title">Lists</h2>
	<p class="docs-section-description">
		Списки покрывают обычные перечни, навигацию, definition list и строки с действиями.
		Для интерактивных пунктов используй `.list-nav`, `.list-action`, `.list-label` и `.list-meta`.
	</p>

	<!-- Basic unordered list -->
	<div class="block">
		<h3 class="block-title">Unordered list</h3>

		<ul class="list">
			<li class="list-item">Dashboard</li>
			<li class="list-item">Projects</li>
			<li class="list-item">Reports</li>
			<li class="list-item">Automations</li>
			<li class="list-item">Settings</li>
		</ul>
	</div>

	<!-- Ordered list -->
	<div class="block">
		<h3 class="block-title">Ordered list</h3>

		<ol class="list list-ordered">
			<li class="list-item">Create workspace</li>
			<li class="list-item">Invite team</li>
			<li class="list-item">Configure permissions</li>
			<li class="list-item">Verify status</li>
		</ol>
	</div>

	<!-- List with icons / markers -->
	<div class="block">
		<h3 class="block-title">List with icons</h3>

		<ul class="list with-icons">
			<li class="list-item">
				<i class="ph ph-bathtub"></i>
				Bathroom
			</li>
			<li class="list-item">
				<i class="ph ph-toilet"></i>
				Toilet
			</li>
			<li class="list-item">
				<i class="ph ph-planet"></i>
				Workspace
			</li>
		</ul>
	</div>

	<!-- Definition list -->
	<div class="block">
		<h3 class="block-title">Definition list</h3>

		<dl class="list list-definition">
			<div class="list-row">
				<dt class="list-term">Item</dt>
				<dd class="list-desc">Базовая сущность интерфейса</dd>
			</div>

			<div class="list-row">
				<dt class="list-term">Group</dt>
				<dd class="list-desc">Логическая группа элементов</dd>
			</div>

			<div class="list-row">
				<dt class="list-term">Flow</dt>
				<dd class="list-desc">Набор действий, выполняемых последовательно</dd>
			</div>
		</dl>
	</div>

	<!-- Interactive / navigation list -->
	<div class="block">
		<h3 class="block-title">Navigation / interactive list</h3>

		<ul class="list list-nav">
			<li class="list-item list-item-active">
				<button class="list-action" type="button">
					<span class="list-label">Overview</span>
				</button>
			</li>

			<li class="list-item">
				<button class="list-action" type="button">
					<span class="list-label"><i class="ph ph-stack"></i> Projects</span>
					<span class="list-meta">12</span>
				</button>
			</li>

			<li class="list-item">
				<button class="list-action" type="button">
					<span class="list-label">Logs</span>
				</button>
			</li>

			<li class="list-item list-item-disabled">
				<button class="list-action" type="button" disabled>
					<span class="list-label">Advanced</span>
				</button>
			</li>
		</ul>
	</div>

	<!-- List with actions -->
	<div class="block">
		<h3 class="block-title">List with actions</h3>

		<ul class="list list-actions">
			<li class="list-item">
				<div class="list-content">
					<div class="list-title">Release Plan</div>
					<div class="list-subtitle">
						<span class="text-color-success">•</span>
						192.168.2.21
					</div>
				</div>
				<div class="list-controls">
					<button class="btn btn-small btn-secondary" type="button">Open</button>
					<button class="btn btn-small btn-accent" type="button">Toggle</button>
				</div>
			</li>

			<li class="list-item">
				<div class="list-content">
					<div class="list-title">Analytics Sync</div>
					<div class="list-subtitle">
						<span class="text-color-success">•</span>
						192.168.2.34
					</div>
				</div>
				<div class="list-controls">
					<button class="btn btn-small btn-secondary" type="button">Open</button>
					<button class="btn btn-small btn-danger with-icon" type="button">
						<i class="ph ph-arrow-clockwise"></i>
						Restart
					</button>
				</div>
			</li>

			<li class="list-item list-item-muted">
				<div class="list-content">
					<div class="list-title">Archive Job</div>
					<div class="list-subtitle">
						<span class="text-color-warning">•</span> Offline
					</div>
				</div>
				<div class="list-controls">
					<button class="btn btn-small btn-secondary" type="button" disabled>Open</button>
					<button class="btn btn-small btn-accent" type="button" disabled>Toggle</button>
				</div>
			</li>
		</ul>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Navigation List HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;ul class="list list-nav"&gt;
  &lt;li class="list-item list-item-active"&gt;
    &lt;button class="list-action" type="button"&gt;
      &lt;span class="list-label"&gt;
        &lt;i class="ph ph-lightbulb"&gt;&lt;/i&gt;
        Projects
      &lt;/span&gt;
      &lt;span class="list-meta"&gt;12&lt;/span&gt;
    &lt;/button&gt;
  &lt;/li&gt;
&lt;/ul&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="badges">
	<h2 class="section-title">Badges & Status</h2>
	<p class="docs-section-description">
		Badges используются для коротких статусов, счётчиков и меток состояния.
		Цветовой модификатор выбирается по смыслу: success, warning, error, info и так далее.
	</p>

	<div class="block">
		<span class="badge badge-primary">Primary</span>
		<span class="badge badge-secondary">Secondary</span>
		<span class="badge badge-success">Success</span>
		<span class="badge badge-warning">Warning</span>
		<span class="badge badge-error">Error</span>
		<span class="badge badge-info">Info</span>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Badges HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;span class="badge badge-success"&gt;Online&lt;/span&gt;
&lt;span class="badge badge-warning"&gt;Degraded&lt;/span&gt;
&lt;span class="badge badge-error"&gt;Offline&lt;/span&gt;
&lt;span class="badge badge-info"&gt;Info&lt;/span&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="alerts">
	<h2 class="section-title">Alerts</h2>
	<p class="docs-section-description">
		Alerts подходят для заметных системных сообщений внутри контента.
		Используй `.alert` и один цветовой модификатор.
	</p>

	<div class="alert alert-primary">This is a primary alert—check it out!</div>
	<div class="alert alert-success">This is a success alert—check it out!</div>
	<div class="alert alert-secondary">This is a secondary alert—check it out!</div>
	<div class="alert alert-info">This is a info alert—check it out!</div>
	<div class="alert alert-warning">This is a warning alert—check it out!</div>
	<div class="alert alert-error">This is a error/danger alert—check it out!</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Alerts HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="alert alert-primary"&gt;Primary message&lt;/div&gt;
&lt;div class="alert alert-success"&gt;Operation completed&lt;/div&gt;
&lt;div class="alert alert-warning"&gt;Check settings&lt;/div&gt;
&lt;div class="alert alert-error"&gt;Action failed&lt;/div&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="tables">
	<h2 class="section-title">Tables</h2>
	<p class="docs-section-description">
		Таблицы используют базовый класс `.table`, semantic table markup и дополнительные элементы:
		`.table-caption`, `.table-head`, `.table-body`, `.table-foot`.
	</p>

	<div class="block">
		<h3 class="block-title">Basic table</h3>

		<table class="table">
			<caption class="table-caption">Projects list</caption>

			<thead class="table-head">
				<tr class="table-row">
					<th scope="col">Project</th>
					<th scope="col">Status</th>
					<th scope="col">Owner</th>
					<th scope="col">Updated</th>
					<th scope="col">Actions</th>
				</tr>
			</thead>

			<tbody class="table-body">
				<tr class="table-row">
					<td>Website Redesign</td>
					<td>
						<span class="badge badge-success">Online</span>
					</td>
					<td>
						<code class="code">@design</code>
					</td>
					<td>2 min ago</td>
					<td>
						<button class="btn btn-secondary btn-small" type="button">Open</button>
						<button class="btn btn-accent btn-small" type="button">Toggle</button>
					</td>
				</tr>

				<tr class="table-row">
					<td>Billing API</td>
					<td>
						<span class="badge badge-warning">Degraded</span>
					</td>
					<td>
						<code class="code">@backend</code>
					</td>
					<td>1 hour ago</td>
					<td>
						<button class="btn btn-secondary btn-small" type="button">Open</button>
						<button class="btn btn-danger btn-small" type="button">Restart</button>
					</td>
				</tr>

				<tr class="table-row table-row-muted">
					<td>Archive Import</td>
					<td>
						<span class="badge badge-error">Offline</span>
					</td>
					<td>
						<code class="code">@ops</code>
					</td>
					<td>Yesterday</td>
					<td>
						<button class="btn btn-secondary btn-small" type="button" disabled>Open</button>
						<button class="btn btn-accent btn-small" type="button" disabled>Toggle</button>
					</td>
				</tr>
			</tbody>

			<tfoot class="table-foot">
				<tr class="table-row">
					<td colspan="5">
						<span class="table-meta">Total: 3 projects</span>
					</td>
				</tr>
			</tfoot>
		</table>
	</div>

	<div class="block mt-6">
		<h3 class="block-title">Compact table</h3>

		<div class="table-wrapper">
			<table class="table table-compact">
				<caption class="table-caption">Recent jobs</caption>

				<thead class="table-head">
					<tr class="table-row">
						<th scope="col">Job</th>
						<th scope="col">State</th>
						<th scope="col">Runtime</th>
						<th scope="col">Run ID</th>
						<th scope="col">Actions</th>
					</tr>
				</thead>

				<tbody class="table-body">
					<tr class="table-row">
						<td>Sync catalog</td>
						<td><span class="badge badge-success">Done</span></td>
						<td>18s</td>
						<td class="table-cell-mono">run_1048</td>
						<td class="table-cell-actions">
							<button class="btn btn-secondary btn-small" type="button">Logs</button>
						</td>
					</tr>
					<tr class="table-row">
						<td>Import archive</td>
						<td><span class="badge badge-warning">Running</span></td>
						<td>2m 14s</td>
						<td class="table-cell-mono">run_1047</td>
						<td class="table-cell-actions">
							<button class="btn btn-danger btn-small" type="button">Stop</button>
						</td>
					</tr>
					<tr class="table-row">
						<td>Export report</td>
						<td><span class="badge badge-error">Failed</span></td>
						<td>4s</td>
						<td class="table-cell-mono">run_1046</td>
						<td class="table-cell-actions">
							<button class="btn btn-accent btn-small" type="button">Retry</button>
						</td>
					</tr>
				</tbody>
			</table>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Tables HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;table class="table"&gt;
  &lt;caption class="table-caption"&gt;Projects list&lt;/caption&gt;
  &lt;thead class="table-head"&gt;
    &lt;tr class="table-row"&gt;
      &lt;th scope="col"&gt;Project&lt;/th&gt;
      &lt;th scope="col"&gt;Status&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody class="table-body"&gt;
    &lt;tr class="table-row"&gt;
      &lt;td&gt;Website Redesign&lt;/td&gt;
      &lt;td&gt;&lt;span class="badge badge-success"&gt;Online&lt;/span&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Compact Table HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;table class="table table-compact"&gt;
  &lt;caption class="table-caption"&gt;Recent jobs&lt;/caption&gt;
  &lt;thead class="table-head"&gt;
    &lt;tr class="table-row"&gt;
      &lt;th scope="col"&gt;Job&lt;/th&gt;
      &lt;th scope="col"&gt;State&lt;/th&gt;
      &lt;th scope="col"&gt;Run ID&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody class="table-body"&gt;
    &lt;tr class="table-row"&gt;
      &lt;td&gt;Sync catalog&lt;/td&gt;
      &lt;td&gt;&lt;span class="badge badge-success"&gt;Done&lt;/span&gt;&lt;/td&gt;
      &lt;td class="table-cell-mono"&gt;run_1048&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="data-patterns">
	<h2 class="section-title">Data Patterns</h2>
	<p class="docs-section-description">
		Toolbar, search field, pagination, empty state и skeleton закрывают типовые состояния
		таблиц, списков и страниц с данными.
	</p>

	<div class="block">
		<div class="toolbar">
			<div class="toolbar-group">
				<div>
					<h3 class="toolbar-title">Projects</h3>
					<span class="toolbar-meta">24 items</span>
				</div>
			</div>

			<div class="toolbar-group">
				<div class="input-group input-group-compact search-field">
					<span class="input-group-addon">
						<i class="ph ph-magnifying-glass"></i>
					</span>
					<input class="input-group-input" type="search" value="release" placeholder="Search">
					<button class="input-group-action" type="button" data-input-clear aria-label="Clear search">
						<i class="ph ph-x"></i>
					</button>
				</div>

				<button class="btn btn-primary btn-small with-icon" type="button">
					<i class="ph ph-funnel"></i>
					Filter
				</button>
				<button class="btn btn-accent btn-small with-icon" type="button">
					<i class="ph ph-plus"></i>
					Create
				</button>
			</div>
		</div>
	</div>

	<div class="block">
		<div class="input-group">
			<span class="input-group-addon">https://</span>
			<input class="input-group-input" type="text" value="example.gnexus.local" placeholder="Domain">
			<button class="input-group-action" type="button">Save</button>
		</div>
	</div>

	<div class="block">
		<nav class="pagination" aria-label="Pagination">
			<button class="pagination-item" type="button" disabled>
				<i class="ph ph-arrow-left"></i>
			</button>
			<button class="pagination-item pagination-item-active" type="button" aria-current="page">1</button>
			<button class="pagination-item" type="button">2</button>
			<button class="pagination-item" type="button">3</button>
			<span class="pagination-ellipsis">...</span>
			<button class="pagination-item" type="button">12</button>
			<button class="pagination-item" type="button">
				<i class="ph ph-arrow-right"></i>
			</button>
		</nav>
	</div>

	<div class="block">
		<div class="empty-state">
			<div class="empty-state-icon">
				<i class="ph ph-package"></i>
			</div>
			<h3 class="empty-state-title">No results</h3>
			<p class="empty-state-text">
				Nothing matched the current filters. Reset the query or create a new item.
			</p>
			<div class="empty-state-actions">
				<button class="btn btn-secondary btn-small" type="button">Reset</button>
				<button class="btn btn-accent btn-small" type="button">Create</button>
			</div>
		</div>
	</div>

	<div class="block">
		<div class="skeleton-stack" aria-label="Loading preview">
			<span class="skeleton skeleton-title"></span>
			<span class="skeleton skeleton-line"></span>
			<span class="skeleton skeleton-line" style="width: 84%"></span>
			<span class="skeleton skeleton-line" style="width: 68%"></span>
			<span class="skeleton skeleton-block"></span>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Toolbar HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="toolbar"&gt;
  &lt;div class="toolbar-group"&gt;
    &lt;div&gt;
      &lt;h3 class="toolbar-title"&gt;Projects&lt;/h3&gt;
      &lt;span class="toolbar-meta"&gt;24 items&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="toolbar-group"&gt;
    &lt;div class="input-group input-group-compact search-field"&gt;
      &lt;span class="input-group-addon"&gt;&lt;i class="ph ph-magnifying-glass"&gt;&lt;/i&gt;&lt;/span&gt;
      &lt;input class="input-group-input" type="search" placeholder="Search"&gt;
      &lt;button class="input-group-action" type="button" data-input-clear aria-label="Clear search"&gt;
        &lt;i class="ph ph-x"&gt;&lt;/i&gt;
      &lt;/button&gt;
    &lt;/div&gt;
    &lt;button class="btn btn-accent btn-small"&gt;Create&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Input Group HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="input-group"&gt;
  &lt;span class="input-group-addon"&gt;https://&lt;/span&gt;
  &lt;input class="input-group-input" type="text" placeholder="Domain"&gt;
  &lt;button class="input-group-action" type="button"&gt;Save&lt;/button&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Pagination HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;nav class="pagination" aria-label="Pagination"&gt;
  &lt;button class="pagination-item" type="button" disabled&gt;Prev&lt;/button&gt;
  &lt;button class="pagination-item pagination-item-active" type="button" aria-current="page"&gt;1&lt;/button&gt;
  &lt;button class="pagination-item" type="button"&gt;2&lt;/button&gt;
  &lt;span class="pagination-ellipsis"&gt;...&lt;/span&gt;
  &lt;button class="pagination-item" type="button"&gt;12&lt;/button&gt;
  &lt;button class="pagination-item" type="button"&gt;Next&lt;/button&gt;
&lt;/nav&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Empty State HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="empty-state"&gt;
  &lt;div class="empty-state-icon"&gt;&lt;i class="ph ph-package"&gt;&lt;/i&gt;&lt;/div&gt;
  &lt;h3 class="empty-state-title"&gt;No results&lt;/h3&gt;
  &lt;p class="empty-state-text"&gt;Nothing matched the current filters.&lt;/p&gt;
  &lt;div class="empty-state-actions"&gt;
    &lt;button class="btn btn-secondary btn-small"&gt;Reset&lt;/button&gt;
    &lt;button class="btn btn-accent btn-small"&gt;Create&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Skeleton HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="skeleton-stack" aria-label="Loading preview"&gt;
  &lt;span class="skeleton skeleton-title"&gt;&lt;/span&gt;
  &lt;span class="skeleton skeleton-line"&gt;&lt;/span&gt;
  &lt;span class="skeleton skeleton-line" style="width: 84%"&gt;&lt;/span&gt;
  &lt;span class="skeleton skeleton-block"&gt;&lt;/span&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Input Patterns JS</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-js">InputPatterns.init();

// Available on the global namespace too:
GNexusUIKit.InputPatterns.init();</code></pre>
	</div>
</section>

        <section class="section docs-section" id="page-header">
	<h2 class="section-title">Page Header</h2>
	<p class="docs-section-description">
		Page Header собирает заголовок экрана, короткое описание, статусные метки и основные действия.
	</p>

	<div class="block">
		<header class="page-header">
			<div class="page-header-content">
				<span class="page-header-kicker">Workspace</span>
				<h3 class="page-header-title">Projects overview</h3>
				<p class="page-header-subtitle">
					Track active work, review critical states, and open the next action without leaving the page.
				</p>
				<div class="page-header-meta">
					<span class="badge badge-success">Healthy</span>
					<span>Updated 2 min ago</span>
				</div>
			</div>

			<div class="page-header-actions">
				<button class="btn btn-secondary btn-small" type="button">Export</button>
				<button class="btn btn-accent btn-small with-icon" type="button">
					<i class="ph ph-plus"></i>
					Create
				</button>
			</div>
		</header>
	</div>

	<div class="block">
		<header class="page-header page-header-compact page-header-accent">
			<div class="page-header-content">
				<h3 class="page-header-title">Billing settings</h3>
				<div class="page-header-meta">
					<span class="badge badge-warning">Pending</span>
					<span>3 changes waiting</span>
				</div>
			</div>

			<div class="page-header-actions">
				<button class="btn btn-primary btn-small" type="button">Review</button>
				<button class="btn btn-danger btn-small" type="button">Discard</button>
			</div>
		</header>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Page Header HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;header class="page-header"&gt;
  &lt;div class="page-header-content"&gt;
    &lt;span class="page-header-kicker"&gt;Workspace&lt;/span&gt;
    &lt;h1 class="page-header-title"&gt;Projects overview&lt;/h1&gt;
    &lt;p class="page-header-subtitle"&gt;
      Track active work and open the next action without leaving the page.
    &lt;/p&gt;
    &lt;div class="page-header-meta"&gt;
      &lt;span class="badge badge-success"&gt;Healthy&lt;/span&gt;
      &lt;span&gt;Updated 2 min ago&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="page-header-actions"&gt;
    &lt;button class="btn btn-secondary btn-small" type="button"&gt;Export&lt;/button&gt;
    &lt;button class="btn btn-accent btn-small" type="button"&gt;Create&lt;/button&gt;
  &lt;/div&gt;
&lt;/header&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Compact Header HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;header class="page-header page-header-compact page-header-accent"&gt;
  &lt;div class="page-header-content"&gt;
    &lt;h2 class="page-header-title"&gt;Billing settings&lt;/h2&gt;
    &lt;div class="page-header-meta"&gt;
      &lt;span class="badge badge-warning"&gt;Pending&lt;/span&gt;
      &lt;span&gt;3 changes waiting&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class="page-header-actions"&gt;
    &lt;button class="btn btn-primary btn-small" type="button"&gt;Review&lt;/button&gt;
    &lt;button class="btn btn-danger btn-small" type="button"&gt;Discard&lt;/button&gt;
  &lt;/div&gt;
&lt;/header&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="description-list">
	<h2 class="section-title">Key-Value</h2>
	<p class="docs-section-description">
		Description List подходит для read-only деталей сущности: ID, владельцы, статусы, даты и короткие metadata values.
	</p>

	<div class="block">
		<dl class="description-list">
			<div class="description-list-row">
				<dt class="description-list-term">Project</dt>
				<dd class="description-list-value">Website Redesign</dd>
			</div>
			<div class="description-list-row">
				<dt class="description-list-term">Status</dt>
				<dd class="description-list-value">
					<span class="badge badge-success">Online</span>
					<span class="description-list-value-muted">All checks passed</span>
				</dd>
			</div>
			<div class="description-list-row">
				<dt class="description-list-term">Owner</dt>
				<dd class="description-list-value">
					<code class="code">@design</code>
				</dd>
			</div>
			<div class="description-list-row">
				<dt class="description-list-term">Updated</dt>
				<dd class="description-list-value">2026-04-11 22:12</dd>
			</div>
		</dl>
	</div>

	<div class="block">
		<dl class="description-list description-list-compact">
			<div class="description-list-row">
				<dt class="description-list-term">Run ID</dt>
				<dd class="description-list-value">
					<code class="code">run_1048</code>
				</dd>
			</div>
			<div class="description-list-row">
				<dt class="description-list-term">Runtime</dt>
				<dd class="description-list-value">18s</dd>
			</div>
			<div class="description-list-row">
				<dt class="description-list-term">Result</dt>
				<dd class="description-list-value">
					<span class="badge badge-secondary">Queued</span>
				</dd>
			</div>
		</dl>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Description List HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;dl class="description-list"&gt;
  &lt;div class="description-list-row"&gt;
    &lt;dt class="description-list-term"&gt;Project&lt;/dt&gt;
    &lt;dd class="description-list-value"&gt;Website Redesign&lt;/dd&gt;
  &lt;/div&gt;
  &lt;div class="description-list-row"&gt;
    &lt;dt class="description-list-term"&gt;Status&lt;/dt&gt;
    &lt;dd class="description-list-value"&gt;
      &lt;span class="badge badge-success"&gt;Online&lt;/span&gt;
      &lt;span class="description-list-value-muted"&gt;All checks passed&lt;/span&gt;
    &lt;/dd&gt;
  &lt;/div&gt;
&lt;/dl&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Compact List HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;dl class="description-list description-list-compact"&gt;
  &lt;div class="description-list-row"&gt;
    &lt;dt class="description-list-term"&gt;Run ID&lt;/dt&gt;
    &lt;dd class="description-list-value"&gt;&lt;code class="code"&gt;run_1048&lt;/code&gt;&lt;/dd&gt;
  &lt;/div&gt;
  &lt;div class="description-list-row"&gt;
    &lt;dt class="description-list-term"&gt;Runtime&lt;/dt&gt;
    &lt;dd class="description-list-value"&gt;18s&lt;/dd&gt;
  &lt;/div&gt;
&lt;/dl&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="progress">
	<h2 class="section-title">Progress</h2>
	<p class="docs-section-description">
		Progress закрывает загрузку, usage meters и staged progress для операций с понятным состоянием выполнения.
	</p>

	<div class="block">
		<h3 class="block-title">Bars</h3>

		<div class="progress" role="progressbar" aria-label="Build progress" aria-valuemin="0" aria-valuemax="100" aria-valuenow="64" style="--progress-value: 64%">
			<div class="progress-header">
				<span>Build</span>
				<span class="progress-value">64%</span>
			</div>
			<div class="progress-track">
				<span class="progress-bar"></span>
			</div>
		</div>
	</div>

	<div class="block">
		<div class="progress progress-warning progress-striped progress-animated" role="progressbar" aria-label="Sync progress" aria-valuemin="0" aria-valuemax="100" aria-valuenow="42" style="--progress-value: 42%">
			<div class="progress-header">
				<span>Sync</span>
				<span class="progress-value">42%</span>
			</div>
			<div class="progress-track">
				<span class="progress-bar"></span>
			</div>
		</div>
	</div>

	<div class="block">
		<div class="usage-meter">
			<h3 class="usage-meter-title">
				Storage
				<span class="usage-meter-value">78%</span>
			</h3>
			<div class="progress progress-success" role="progressbar" aria-label="Storage usage" aria-valuemin="0" aria-valuemax="100" aria-valuenow="78" style="--progress-value: 78%">
				<div class="progress-track">
					<span class="progress-bar"></span>
				</div>
			</div>
			<p class="usage-meter-meta">312 GB used from 400 GB limit.</p>
		</div>
	</div>

	<div class="block">
		<div class="progress-stages" aria-label="Deploy stages">
			<span class="progress-stage progress-stage-complete">Queued</span>
			<span class="progress-stage progress-stage-complete">Build</span>
			<span class="progress-stage progress-stage-current">Deploy</span>
			<span class="progress-stage">Verify</span>
		</div>
	</div>

	<div class="block">
		<div class="circle-loader" aria-label="Loading">
			<i class="ph ph-spinner"></i>
			<span>Loading state</span>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Progress Bar HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="progress" role="progressbar" aria-label="Build progress" aria-valuemin="0" aria-valuemax="100" aria-valuenow="64" style="--progress-value: 64%"&gt;
  &lt;div class="progress-header"&gt;
    &lt;span&gt;Build&lt;/span&gt;
    &lt;span class="progress-value"&gt;64%&lt;/span&gt;
  &lt;/div&gt;
  &lt;div class="progress-track"&gt;
    &lt;span class="progress-bar"&gt;&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Usage Meter HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="usage-meter"&gt;
  &lt;h3 class="usage-meter-title"&gt;
    Storage
    &lt;span class="usage-meter-value"&gt;78%&lt;/span&gt;
  &lt;/h3&gt;
  &lt;div class="progress progress-success" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="78" style="--progress-value: 78%"&gt;
    &lt;div class="progress-track"&gt;
      &lt;span class="progress-bar"&gt;&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;p class="usage-meter-meta"&gt;312 GB used from 400 GB limit.&lt;/p&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Staged Progress HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="progress-stages" aria-label="Deploy stages"&gt;
  &lt;span class="progress-stage progress-stage-complete"&gt;Queued&lt;/span&gt;
  &lt;span class="progress-stage progress-stage-complete"&gt;Build&lt;/span&gt;
  &lt;span class="progress-stage progress-stage-current"&gt;Deploy&lt;/span&gt;
  &lt;span class="progress-stage"&gt;Verify&lt;/span&gt;
&lt;/div&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="steps">
	<h2 class="section-title">Steps</h2>
	<p class="docs-section-description">
		Steps описывает wizard-flow, onboarding и последовательные процессы с текущим, завершенным и недоступным шагом.
	</p>

	<div class="block">
		<ol class="steps">
			<li class="step step-complete">
				<span class="step-marker"><i class="ph ph-check"></i></span>
				<h3 class="step-title">Account</h3>
				<p class="step-text">Basic profile data is ready.</p>
			</li>
			<li class="step step-complete">
				<span class="step-marker"><i class="ph ph-check"></i></span>
				<h3 class="step-title">Plan</h3>
				<p class="step-text">Billing plan is selected.</p>
			</li>
			<li class="step step-current" aria-current="step">
				<span class="step-marker">3</span>
				<h3 class="step-title">Confirm</h3>
				<p class="step-text">Review settings before launch.</p>
			</li>
			<li class="step step-disabled">
				<span class="step-marker">4</span>
				<h3 class="step-title">Launch</h3>
				<p class="step-text">Available after confirmation.</p>
			</li>
		</ol>
	</div>

	<div class="block">
		<ol class="steps steps-vertical">
			<li class="step step-complete">
				<span class="step-marker"><i class="ph ph-check"></i></span>
				<h3 class="step-title">Queued</h3>
				<p class="step-text">Job accepted and waiting for worker slot.</p>
			</li>
			<li class="step step-current" aria-current="step">
				<span class="step-marker">2</span>
				<h3 class="step-title">Running</h3>
				<p class="step-text">Current task is processing input data.</p>
			</li>
			<li class="step">
				<span class="step-marker">3</span>
				<h3 class="step-title">Report</h3>
				<p class="step-text">Final summary appears after completion.</p>
			</li>
		</ol>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Steps HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;ol class="steps"&gt;
  &lt;li class="step step-complete"&gt;
    &lt;span class="step-marker"&gt;&lt;i class="ph ph-check"&gt;&lt;/i&gt;&lt;/span&gt;
    &lt;h3 class="step-title"&gt;Account&lt;/h3&gt;
    &lt;p class="step-text"&gt;Basic profile data is ready.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li class="step step-current" aria-current="step"&gt;
    &lt;span class="step-marker"&gt;2&lt;/span&gt;
    &lt;h3 class="step-title"&gt;Confirm&lt;/h3&gt;
    &lt;p class="step-text"&gt;Review settings before launch.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li class="step step-disabled"&gt;
    &lt;span class="step-marker"&gt;3&lt;/span&gt;
    &lt;h3 class="step-title"&gt;Launch&lt;/h3&gt;
    &lt;p class="step-text"&gt;Available after confirmation.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Vertical Steps HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;ol class="steps steps-vertical"&gt;
  &lt;li class="step step-complete"&gt;
    &lt;span class="step-marker"&gt;&lt;i class="ph ph-check"&gt;&lt;/i&gt;&lt;/span&gt;
    &lt;h3 class="step-title"&gt;Queued&lt;/h3&gt;
    &lt;p class="step-text"&gt;Job accepted and waiting for worker slot.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li class="step step-current" aria-current="step"&gt;
    &lt;span class="step-marker"&gt;2&lt;/span&gt;
    &lt;h3 class="step-title"&gt;Running&lt;/h3&gt;
    &lt;p class="step-text"&gt;Current task is processing input data.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="chips">
	<h2 class="section-title">Chips</h2>
	<p class="docs-section-description">
		Chips используются для фильтров, коротких labels, selectable states и removable tokens.
	</p>

	<div class="block">
		<h3 class="block-title">Static chips</h3>

		<div class="chip-group">
			<span class="chip chip-primary">Primary</span>
			<span class="chip chip-secondary">Secondary</span>
			<span class="chip chip-success">Success</span>
			<span class="chip chip-warning">Warning</span>
			<span class="chip chip-danger">Error</span>
			<span class="chip chip-secondary">
				<i class="ph ph-funnel"></i>
				Filtered
			</span>
		</div>
	</div>

	<div class="block">
		<h3 class="block-title">Selectable chips</h3>

		<div class="chip-group" aria-label="Filter chips">
			<button class="chip chip-selected" type="button" aria-pressed="true">Active</button>
			<button class="chip" type="button" aria-pressed="false">Queued</button>
			<button class="chip" type="button" aria-pressed="false">Failed</button>
			<button class="chip chip-disabled" type="button" disabled>Archived</button>
		</div>
	</div>

	<div class="block">
		<h3 class="block-title">Removable chips</h3>

		<div class="chip-group" aria-label="Selected tags">
			<span class="chip">
				Frontend
				<button class="chip-remove" type="button" aria-label="Remove Frontend">
					<i class="ph ph-x"></i>
				</button>
			</span>
			<span class="chip chip-success">
				Design
				<button class="chip-remove" type="button" aria-label="Remove Design">
					<i class="ph ph-x"></i>
				</button>
			</span>
			<span class="chip chip-warning">
				Review
				<button class="chip-remove" type="button" aria-label="Remove Review">
					<i class="ph ph-x"></i>
				</button>
			</span>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Static Chips HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="chip-group"&gt;
  &lt;span class="chip chip-primary"&gt;Primary&lt;/span&gt;
  &lt;span class="chip chip-secondary"&gt;Secondary&lt;/span&gt;
  &lt;span class="chip chip-success"&gt;Success&lt;/span&gt;
  &lt;span class="chip"&gt;
    &lt;i class="ph ph-funnel"&gt;&lt;/i&gt;
    Filtered
  &lt;/span&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Selectable Chips HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="chip-group" aria-label="Filter chips"&gt;
  &lt;button class="chip chip-selected" type="button" aria-pressed="true"&gt;Active&lt;/button&gt;
  &lt;button class="chip" type="button" aria-pressed="false"&gt;Queued&lt;/button&gt;
  &lt;button class="chip" type="button" aria-pressed="false"&gt;Failed&lt;/button&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Removable Chips HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;span class="chip"&gt;
  Frontend
  &lt;button class="chip-remove" type="button" aria-label="Remove Frontend"&gt;
    &lt;i class="ph ph-x"&gt;&lt;/i&gt;
  &lt;/button&gt;
&lt;/span&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="avatar">
	<h2 class="section-title">Avatar</h2>
	<p class="docs-section-description">
		Avatar и Identity показывают пользователя, команду, сервис или объект с initials, icon, image и status marker.
	</p>

	<div class="block">
		<h3 class="block-title">Avatar variants</h3>

		<div class="chip-group">
			<span class="avatar avatar-sm">AV</span>
			<span class="avatar">GN</span>
			<span class="avatar avatar-lg avatar-secondary">UI</span>
			<span class="avatar avatar-outline">
				<i class="ph ph-user"></i>
			</span>
			<span class="avatar avatar-success is-online">
				<i class="ph ph-check"></i>
				<span class="avatar-status"></span>
			</span>
			<span class="avatar">
				<img src="/assets/imgs/gnexus-mark.svg" alt="GNexus mark">
			</span>
		</div>
	</div>

	<div class="block">
		<h3 class="block-title">Identity row</h3>

		<div class="identity">
			<span class="avatar avatar-secondary is-online">
				AK
				<span class="avatar-status"></span>
			</span>
			<span class="identity-content">
				<span class="identity-title">Alex Kim</span>
				<span class="identity-meta">Product Designer</span>
			</span>
		</div>
	</div>

	<div class="block">
		<h3 class="block-title">Avatar stack</h3>

		<div class="avatar-stack" aria-label="Assigned users">
			<span class="avatar avatar-sm">AK</span>
			<span class="avatar avatar-sm avatar-secondary">JS</span>
			<span class="avatar avatar-sm avatar-warning">MR</span>
			<span class="avatar-stack-count">+4</span>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Avatar HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;span class="avatar avatar-secondary is-online"&gt;
  AK
  &lt;span class="avatar-status"&gt;&lt;/span&gt;
&lt;/span&gt;

&lt;span class="avatar avatar-outline"&gt;
  &lt;i class="ph ph-user"&gt;&lt;/i&gt;
&lt;/span&gt;

&lt;span class="avatar"&gt;
  &lt;img src="/assets/imgs/gnexus-mark.svg" alt="GNexus mark"&gt;
&lt;/span&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Identity HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="identity"&gt;
  &lt;span class="avatar avatar-secondary is-online"&gt;
    AK
    &lt;span class="avatar-status"&gt;&lt;/span&gt;
  &lt;/span&gt;
  &lt;span class="identity-content"&gt;
    &lt;span class="identity-title"&gt;Alex Kim&lt;/span&gt;
    &lt;span class="identity-meta"&gt;Product Designer&lt;/span&gt;
  &lt;/span&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Avatar Stack HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="avatar-stack" aria-label="Assigned users"&gt;
  &lt;span class="avatar avatar-sm"&gt;AK&lt;/span&gt;
  &lt;span class="avatar avatar-sm avatar-secondary"&gt;JS&lt;/span&gt;
  &lt;span class="avatar avatar-sm avatar-warning"&gt;MR&lt;/span&gt;
  &lt;span class="avatar-stack-count"&gt;+4&lt;/span&gt;
&lt;/div&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="timeline">
	<h2 class="section-title">Timeline</h2>
	<p class="docs-section-description">
		Timeline и Activity Log показывают историю событий, audit trail, job updates и системные изменения.
	</p>

	<div class="block">
		<ol class="timeline">
			<li class="timeline-item timeline-item-success">
				<span class="timeline-marker"><i class="ph ph-check-circle"></i></span>
				<div class="timeline-content">
					<article class="timeline-card">
						<div class="timeline-header">
							<h3 class="timeline-title">Build completed</h3>
							<time class="timeline-time" datetime="2026-04-11T22:24:00">22:24</time>
						</div>
						<p class="timeline-text">Production bundle finished without warnings.</p>
						<div class="timeline-meta">
							<span class="chip chip-success">Done</span>
							<span class="chip">CI</span>
						</div>
					</article>
				</div>
			</li>
			<li class="timeline-item timeline-item-warning">
				<span class="timeline-marker"><i class="ph ph-warning"></i></span>
				<div class="timeline-content">
					<article class="timeline-card">
						<div class="timeline-header">
							<h3 class="timeline-title">Review requested</h3>
							<time class="timeline-time" datetime="2026-04-11T22:18:00">22:18</time>
						</div>
						<p class="timeline-text">Design tokens changed and need one visual pass before release.</p>
						<div class="timeline-meta">
							<span class="chip chip-warning">Review</span>
						</div>
					</article>
				</div>
			</li>
			<li class="timeline-item">
				<span class="timeline-marker"><i class="ph ph-git-commit"></i></span>
				<div class="timeline-content">
					<article class="timeline-card">
						<div class="timeline-header">
							<h3 class="timeline-title">Commit pushed</h3>
							<time class="timeline-time" datetime="2026-04-11T22:10:00">22:10</time>
						</div>
						<p class="timeline-text">Component documentation and demo examples were updated.</p>
					</article>
				</div>
			</li>
		</ol>
	</div>

	<div class="block">
		<div class="activity-log">
			<div class="activity-log-row">
				<time class="activity-log-time" datetime="2026-04-11T22:24:00">22:24</time>
				<span class="activity-log-title">Build completed</span>
				<span class="badge badge-success">Done</span>
			</div>
			<div class="activity-log-row">
				<time class="activity-log-time" datetime="2026-04-11T22:18:00">22:18</time>
				<span class="activity-log-title">Review requested</span>
				<span class="badge badge-warning">Pending</span>
			</div>
			<div class="activity-log-row">
				<time class="activity-log-time" datetime="2026-04-11T22:10:00">22:10</time>
				<span class="activity-log-title">Commit pushed</span>
				<span class="badge badge-secondary">Info</span>
			</div>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Timeline HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;ol class="timeline"&gt;
  &lt;li class="timeline-item timeline-item-success"&gt;
    &lt;span class="timeline-marker"&gt;&lt;i class="ph ph-check-circle"&gt;&lt;/i&gt;&lt;/span&gt;
    &lt;div class="timeline-content"&gt;
      &lt;article class="timeline-card"&gt;
        &lt;div class="timeline-header"&gt;
          &lt;h3 class="timeline-title"&gt;Build completed&lt;/h3&gt;
          &lt;time class="timeline-time" datetime="2026-04-11T22:24:00"&gt;22:24&lt;/time&gt;
        &lt;/div&gt;
        &lt;p class="timeline-text"&gt;Production bundle finished without warnings.&lt;/p&gt;
      &lt;/article&gt;
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ol&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Activity Log HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="activity-log"&gt;
  &lt;div class="activity-log-row"&gt;
    &lt;time class="activity-log-time" datetime="2026-04-11T22:24:00"&gt;22:24&lt;/time&gt;
    &lt;span class="activity-log-title"&gt;Build completed&lt;/span&gt;
    &lt;span class="badge badge-success"&gt;Done&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="accordion">
	<h2 class="section-title">Accordion</h2>
	<p class="docs-section-description">
		Accordion и Disclosure используют native <code class="code">&lt;details&gt;</code> / <code class="code">&lt;summary&gt;</code>, а раскрытие анимируется через <code class="code">Accordion.init()</code>.
	</p>

	<div class="block">
		<div class="accordion">
			<details class="accordion-item" open>
				<summary class="accordion-summary">
					<span class="accordion-summary-content">
						<i class="ph ph-list-checks"></i>
						Release checklist
					</span>
					<i class="ph ph-caret-down accordion-icon"></i>
				</summary>
				<div class="accordion-panel">
					<p>Check component states, copy examples, keyboard focus, and responsive layout before release.</p>
				</div>
			</details>
			<details class="accordion-item">
				<summary class="accordion-summary">
					<span class="accordion-summary-content">
						<i class="ph ph-article"></i>
						Documentation notes
					</span>
					<i class="ph ph-caret-down accordion-icon"></i>
				</summary>
				<div class="accordion-panel">
					<p>Keep component copy short and include code examples for the smallest useful markup.</p>
				</div>
			</details>
			<details class="accordion-item">
				<summary class="accordion-summary">
					<span class="accordion-summary-content">
						<i class="ph ph-activity"></i>
						Runtime behavior
					</span>
					<i class="ph ph-caret-down accordion-icon"></i>
				</summary>
				<div class="accordion-panel">
					<p>Use native disclosure behavior when the component does not need custom animation or async content.</p>
				</div>
			</details>
		</div>
	</div>

	<div class="block">
		<details class="disclosure">
			<summary class="accordion-summary">
				<span class="accordion-summary-content">Compact disclosure</span>
				<i class="ph ph-caret-down accordion-icon"></i>
			</summary>
			<div class="accordion-panel">
				<p>Use this variant for a single expandable group inside forms or metadata blocks.</p>
			</div>
		</details>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Accordion HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="accordion"&gt;
  &lt;details class="accordion-item" open&gt;
    &lt;summary class="accordion-summary"&gt;
      &lt;span class="accordion-summary-content"&gt;
        &lt;i class="ph ph-list-checks"&gt;&lt;/i&gt;
        Release checklist
      &lt;/span&gt;
      &lt;i class="ph ph-caret-down accordion-icon"&gt;&lt;/i&gt;
    &lt;/summary&gt;
    &lt;div class="accordion-panel"&gt;
      &lt;p&gt;Check component states, copy examples, keyboard focus, and responsive layout.&lt;/p&gt;
    &lt;/div&gt;
  &lt;/details&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Disclosure HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;details class="disclosure"&gt;
  &lt;summary class="accordion-summary"&gt;
    &lt;span class="accordion-summary-content"&gt;Compact disclosure&lt;/span&gt;
    &lt;i class="ph ph-caret-down accordion-icon"&gt;&lt;/i&gt;
  &lt;/summary&gt;
  &lt;div class="accordion-panel"&gt;
    &lt;p&gt;Use this variant for a single expandable group.&lt;/p&gt;
  &lt;/div&gt;
&lt;/details&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="tabs">
	<h2 class="section-title">Tabs</h2>
	<p class="docs-section-description">
		Tabs переключают связанные панели внутри одного контекста. Компонент поддерживает click, keyboard navigation и ARIA state через <code class="code">Tabs.init()</code>.
	</p>

	<div class="block">
		<div class="tabs" data-tabs>
			<div class="tabs-list" aria-label="Project sections">
				<button class="tab tab-active" type="button" aria-controls="tabs-overview">
					<i class="ph ph-chart-bar"></i>
					Overview
				</button>
				<button class="tab" type="button" aria-controls="tabs-activity">
					<i class="ph ph-clock"></i>
					Activity
				</button>
				<button class="tab" type="button" aria-controls="tabs-settings">
					<i class="ph ph-sliders"></i>
					Settings
				</button>
			</div>
			<div class="tabs-panels">
				<div class="tab-panel tab-panel-active" id="tabs-overview">
					<p>Overview keeps the primary status, totals, and next actions visible without leaving the current screen.</p>
				</div>
				<div class="tab-panel" id="tabs-activity">
					<p>Activity contains the latest events, audit notes, and handoff messages for the same record.</p>
				</div>
				<div class="tab-panel" id="tabs-settings">
					<p>Settings groups secondary options that affect this context but do not need full page navigation.</p>
				</div>
			</div>
		</div>
	</div>

	<div class="block">
		<div class="tabs tabs-compact" data-tabs>
			<div class="tabs-list" aria-label="Compact tabs">
				<button class="tab tab-active" type="button" aria-controls="tabs-compact-api">API</button>
				<button class="tab" type="button" aria-controls="tabs-compact-webhooks">Webhooks</button>
				<button class="tab" type="button" aria-controls="tabs-compact-billing" aria-disabled="true">Billing</button>
			</div>
			<div class="tabs-panels">
				<div class="tab-panel tab-panel-active" id="tabs-compact-api">
					<p>Use compact tabs in dense panels, settings pages, and narrow metadata blocks.</p>
				</div>
				<div class="tab-panel" id="tabs-compact-webhooks">
					<p>Disabled tabs can stay visible when a feature is unavailable for the current object.</p>
				</div>
				<div class="tab-panel" id="tabs-compact-billing">
					<p>Billing content is disabled in this example.</p>
				</div>
			</div>
		</div>
	</div>

	<div class="block">
		<div class="tabs tabs-vertical" data-tabs>
			<div class="tabs-list" aria-label="Vertical tabs">
				<button class="tab tab-active" type="button" aria-controls="tabs-profile">Profile</button>
				<button class="tab" type="button" aria-controls="tabs-access">Access</button>
				<button class="tab" type="button" aria-controls="tabs-notes">Notes</button>
			</div>
			<div class="tabs-panels">
				<div class="tab-panel tab-panel-active" id="tabs-profile">
					<p>Vertical tabs work well when labels are longer or the panel needs a stable left rail.</p>
				</div>
				<div class="tab-panel" id="tabs-access">
					<p>Use them for account details, admin records, or focused configuration groups.</p>
				</div>
				<div class="tab-panel" id="tabs-notes">
					<p>On smaller screens the tab rail becomes a horizontal scrollable list.</p>
				</div>
			</div>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Tabs HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="tabs" data-tabs&gt;
  &lt;div class="tabs-list" aria-label="Project sections"&gt;
    &lt;button class="tab tab-active" type="button" aria-controls="panel-overview"&gt;Overview&lt;/button&gt;
    &lt;button class="tab" type="button" aria-controls="panel-activity"&gt;Activity&lt;/button&gt;
  &lt;/div&gt;
  &lt;div class="tabs-panels"&gt;
    &lt;div class="tab-panel tab-panel-active" id="panel-overview"&gt;Overview content&lt;/div&gt;
    &lt;div class="tab-panel" id="panel-activity"&gt;Activity content&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="drawer">
	<h2 class="section-title">Drawer</h2>
	<p class="docs-section-description">
		Drawer подходит для контекстных деталей, quick edit и длинных вторичных сценариев без ухода со страницы.
		По API он близок к Modal, но панель закреплена у края экрана.
	</p>

	<div class="block">
		<h3 class="block-title">Examples</h3>

		<div class="drawer-preview">
			<div class="drawer-preview-content">
				<p class="text">
					Используй Drawer, когда нужно сохранить контекст основного экрана и раскрыть боковую область с формой,
					метаданными или журналом.
				</p>

				<div class="demo-actions">
					<button class="btn btn-secondary with-icon" type="button" onclick="demoDrawer()">
						<i class="ph ph-sidebar"></i>
						Open drawer
					</button>

					<button class="btn btn-primary with-icon" type="button" onclick="demoLeftDrawer()">
						<i class="ph ph-sidebar-simple"></i>
						Left drawer
					</button>
				</div>
			</div>

			<div class="drawer-preview-panel" aria-hidden="true">
				<h3 class="drawer-preview-title">Panel shape</h3>
				<p class="drawer-preview-text">Fixed edge, hard border, focused action footer.</p>
				<span class="chip chip-secondary">Context</span>
			</div>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Drawer JS</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
<pre><code class="language-javascript">Drawer.create("details-drawer", {
  title: "Details",
  bodyHtml: `
    &lt;p class="text"&gt;Context content, forms, logs, metadata.&lt;/p&gt;
  `,
  actions: drawer =&gt; {
    const close = document.createElement("button");
    close.className = "btn btn-primary";
    close.textContent = "Close";
    close.addEventListener("click", () =&gt; drawer.close());
    return [close];
  }
}).show();</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Left Position</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
<pre><code class="language-javascript">Drawer.create("navigation-drawer", {
  title: "Navigation",
  position: "left",
  bodyText: "Left drawer content"
}).show();</code></pre>
	</div>
</section>

<script>
	document.addEventListener("DOMContentLoaded", () => {
		window.demoDrawer = function() {
			Drawer.create("demo-drawer", {
				title: "Details",
				bodyHtml: `
					<p class="text">Context panel for quick edits, metadata, and secondary flows.</p>

					<dl class="description-list description-list-compact">
						<div class="description-list-row">
							<dt>Status</dt>
							<dd><span class="chip chip-success">Active</span></dd>
						</div>
						<div class="description-list-row">
							<dt>Owner</dt>
							<dd>Design System</dd>
						</div>
						<div class="description-list-row">
							<dt>Updated</dt>
							<dd>Today</dd>
						</div>
					</dl>
				`,
				actions: drawer => {
					const cancel = document.createElement("button");
					cancel.className = "btn btn-primary";
					cancel.textContent = "Close";
					cancel.addEventListener("click", () => drawer.close());

					const apply = document.createElement("button");
					apply.className = "btn btn-success";
					apply.textContent = "Apply";
					apply.addEventListener("click", () => {
						drawer.close();
						Toasts.createSuccess("Saved", "Drawer action completed").show();
					});

					return [cancel, apply];
				}
			}).show();
		};

		window.demoLeftDrawer = function() {
			Drawer.create("demo-left-drawer", {
				title: "Navigation",
				position: "left",
				bodyHtml: `
					<ul class="list-menu">
						<li class="list-item"><button class="list-action" type="button"><span class="list-label">Overview</span></button></li>
						<li class="list-item"><button class="list-action" type="button"><span class="list-label">Activity</span></button></li>
						<li class="list-item"><button class="list-action" type="button"><span class="list-label">Settings</span></button></li>
					</ul>
				`
			}).show();
		};
	});
</script>

        <section class="section docs-section" id="toasts">
	<h2 class="section-title">Toasts</h2>
	<p class="docs-section-description">
		Toasts создаются из JS и добавляются в `body` вызовом `.show()`.
		Для коротких уведомлений доступны методы `createInfo`, `createSuccess`, `createWarning`, `createDanger`.
	</p>

	<div class="block demo-actions">
		<h3 class="block-title">Triggers (demo buttons)</h3>

		<button class="btn btn-primary" type="button" onclick="demoToastInfo()">Show info (default)</button>
		<button class="btn btn-success" type="button" onclick="demoToastSuccess()">Show success</button>
		<button class="btn btn-warning" type="button" onclick="demoToastWarning()">Show warning</button>
		<button class="btn btn-danger" type="button" onclick="demoToastDanger()">Show danger</button>
	</div>

	<!-- <div class="block">
		<h3 class="block-title">Toast stack (container)</h3>

		<div class="toast-stack" aria-live="polite" aria-relevant="additions">
			<article class="toast toast-info" role="status">
				<div class="toast-content">
					<h4 class="toast-title"><i class="ph ph-info"></i> Info</h4>
					<p class="toast-text">Обычное уведомление для пользователя.</p>
				</div>
				<button class="btn-icon toast-close" type="button" aria-label="Close">✕</button>
			</article>

			<article class="toast toast-success" role="status">
				<div class="toast-content">
					<h4 class="toast-title"><i class="ph ph-check-circle"></i> Success</h4>
					<p class="toast-text">Операция выполнена успешно.</p>
				</div>
				<button class="btn-icon toast-close" type="button" aria-label="Close">✕</button>
			</article>

			<article class="toast toast-warning" role="status">
				<div class="toast-content">
					<h4 class="toast-title"><i class="ph ph-check-circle"></i> Warning</h4>
					<p class="toast-text">Нужна проверка параметров.</p>
				</div>
				<button class="btn-icon toast-close" type="button" aria-label="Close">✕</button>
			</article>

			<article class="toast toast-danger" role="alert">
				<div class="toast-content">
					<h4 class="toast-title"><i class="ph ph-warning-octagon"></i> Danger</h4>
					<p class="toast-text">Произошла ошибка. Повтори позже.</p>
				</div>
				<button class="btn-icon toast-close" type="button" aria-label="Close">✕</button>
			</article>
		</div>

		<p class="hint">
			<b>Hint Example.</b>
			.toast-stack — фиксируй в углу через CSS (например bottom/right), либо размещай как блок в контенте.
		</p>
	</div> -->

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Toasts JS</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-javascript">Toasts.createSuccess(
  "Success",
  "Операция выполнена успешно",
  { lifetime: 4000, alone: true }
).show();

Toasts.createDanger("Error", "Произошла ошибка").show();</code></pre>
	</div>
</section>

<script>
	document.addEventListener("DOMContentLoaded", e => {
		window.demoToastInfo = function () {
			Toasts.createInfo(
				"Title",
				"Произошла ошибка. Повтори позже."
			).show();
		}

		window.demoToastSuccess = function () {
			Toasts.createSuccess(
				"Success",
				"Всё отлично, всё работает, это успех тостера"
			).show();
		}

		window.demoToastWarning = function () {
			Toasts.createWarning(
				"Warning",
				"Произошла ошибка. Повтори позже."
			).show();
		}

		window.demoToastDanger = function () {
			Toasts.createDanger(
				"Danger",
				"Произошла ошибка. Повтори позже."
			).show();
		}
	});
</script>		

        <section class="section docs-section" id="cards">
	<h2 class="section-title">Cards</h2>
	<p class="docs-section-description">
		Card подходит для компактных виджетов и контентных блоков.
		Цветовые состояния карточек задаются модификаторами `card-success`, `card-warning`, `card-error`, `card-info`.
	</p>

	<div class="cards">
		<div class="card">
			<h3 class="card-title">Card title</h3>

			<div class="card-content">
				<img src="/assets/imgs/gnexus-mark.svg" alt="" class="card-thumb">
				<p>Карточка для контента, виджетов, статусов.</p>
			</div>

			<div class="card-footer">
				<button class="btn btn-accent">Action</button>
			</div>
		</div>
	</div>

	<div class="block mt-6">
		<div class="row g-4">
			<div class="card status-card card-success">
				<span class="card-title">Status title</span>

				<div class="card-content">
					<div class="status-icon-container">
						<div class="status-icon">
							<i class="ph ph-check-circle"></i> OK
						</div>
					</div>

					<p class="status-name">Primary status card with a short description.</p>
				</div>
			</div>

			<div class="card status-card card-primary">
				<span class="card-title">Default</span>

				<div class="card-content">
					<div class="status-icon-container">
						<div class="status-icon">
							<i class="ph ph-stack"></i>
						</div>
					</div>

					<p class="status-name">Neutral card for a module, widget, or section.</p>
				</div>
			</div>

			<div class="card status-card card-warning">
				<span class="card-title">Pending</span>

				<div class="card-content">
					<div class="status-icon-container">
						<div class="status-icon">
							<i class="ph ph-warning"></i>
						</div>
					</div>

					<p class="status-name">Warning state for items that need attention.</p>
				</div>
			</div>

			<div class="card status-card card-error">
				<span class="card-title">Failed</span>

				<div class="card-content">
					<div class="status-icon-container">
						<div class="status-icon">
							<i class="ph ph-warning-octagon"></i>
						</div>
					</div>

					<p class="status-name">Error state for failed actions or blocked flows.</p>
				</div>
			</div>

			<div class="card status-card card-info">
				<span class="card-title">Info</span>

				<div class="card-content">
					<div class="status-icon-container">
						<div class="status-icon">
							<i class="ph ph-info"></i>
						</div>
					</div>

					<p class="status-name">Informational card for contextual metadata.</p>
				</div>
			</div>

			<div class="card status-card card-secondary">
				<span class="card-title">Queued</span>

				<div class="card-content">
					<div class="status-icon-container">
						<div class="status-icon">
							<i class="ph ph-clock"></i>
						</div>
					</div>

					<p class="status-name">Secondary state for queued or background work.</p>
				</div>
			</div>
		</div>
	</div>

	<div class="block mt-6">
		<div class="card metric-card">
			<div class="card-content">
				<div class="metric-card-header">
					<p class="metric-card-label">Monthly usage</p>
					<span class="metric-card-icon">
						<i class="ph ph-chart-line-up"></i>
					</span>
				</div>
				<p class="metric-card-value">84.2%</p>
				<div class="metric-card-meta">
					<span class="metric-card-delta">+12.8%</span>
					<span>vs previous period</span>
				</div>
			</div>
		</div>
	</div>

	<div class="block mt-6">
		<div class="card action-card">
			<div class="card-content">
				<span class="action-card-kicker">Quick action</span>
				<h3 class="action-card-title">Create workflow</h3>
				<p class="action-card-text">
					Use action cards for primary next steps, onboarding prompts, and compact empty state actions.
				</p>
				<div class="action-card-actions">
					<button class="btn btn-secondary btn-small" type="button">Preview</button>
					<button class="btn btn-accent btn-small" type="button">Create</button>
				</div>
			</div>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Cards HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="card status-card card-success"&gt;
  &lt;span class="card-title"&gt;Status title&lt;/span&gt;
  &lt;div class="card-content"&gt;
    &lt;div class="status-icon-container"&gt;
      &lt;div class="status-icon"&gt;
        &lt;i class="ph ph-check-circle"&gt;&lt;/i&gt;
        OK
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;p class="status-name"&gt;Primary status card.&lt;/p&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Metric Card HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="card metric-card"&gt;
  &lt;div class="card-content"&gt;
    &lt;div class="metric-card-header"&gt;
      &lt;p class="metric-card-label"&gt;Monthly usage&lt;/p&gt;
      &lt;span class="metric-card-icon"&gt;&lt;i class="ph ph-chart-line-up"&gt;&lt;/i&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;p class="metric-card-value"&gt;84.2%&lt;/p&gt;
    &lt;div class="metric-card-meta"&gt;
      &lt;span class="metric-card-delta"&gt;+12.8%&lt;/span&gt;
      &lt;span&gt;vs previous period&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Action Card HTML</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
		<pre><code class="language-html">&lt;div class="card action-card"&gt;
  &lt;div class="card-content"&gt;
    &lt;span class="action-card-kicker"&gt;Quick action&lt;/span&gt;
    &lt;h3 class="action-card-title"&gt;Create workflow&lt;/h3&gt;
    &lt;p class="action-card-text"&gt;
      Use action cards for primary next steps and compact empty state actions.
    &lt;/p&gt;
    &lt;div class="action-card-actions"&gt;
      &lt;button class="btn btn-secondary btn-small"&gt;Preview&lt;/button&gt;
      &lt;button class="btn btn-accent btn-small"&gt;Create&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;</code></pre>
	</div>
</section>

        <section class="section docs-section" id="modals">
	<h2 class="section-title">Modals</h2>
	<p class="docs-section-description">
		Modal создаётся из JS через `Modals.create`.
		Для обычного текста используй `bodyText`; HTML-контент передавай явно через `bodyHtml` или DOM-элемент.
	</p>

	<div class="block">
		<h3 class="block-title">Open triggers</h3>

		<button class="btn btn-primary" type="button" onclick="demoModal()">Open modal</button>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Modals JS</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
<pre><code class="language-javascript">Modals.create("demo-modal", {
  title: "Demo modal",
  bodyText: "Modal content",
  actions: modal =&gt; {
    const close = document.createElement("button");
    close.className = "btn btn-primary";
    close.textContent = "Close";
    close.addEventListener("click", () =&gt; modal.close());
    return [close];
  }
}).show();</code></pre>
	</div>
</section>

<script>
	document.addEventListener("DOMContentLoaded", e => {
		window.demoModal = function() {
			Modals.create("demo-modals", {
				title: "Demo modal window",
				footer: "<p>Footer text</p>",
				actions: modal => {
					const buttonCancel = document.createElement("button");
					buttonCancel.classList.add("btn");
					buttonCancel.classList.add("btn-primary");
					buttonCancel.textContent = "Cancel";

					buttonCancel.addEventListener("click", e => {
						modal.close();
					});

					const buttonApply = document.createElement("button");
					buttonApply.classList.add("btn");
					buttonApply.classList.add("btn-success");
					buttonApply.textContent = "Apply";

					buttonApply.addEventListener("click", e => {
						modal.close();

						setTimeout(() => {
							Toasts.createSuccess(
								"Success",
								"Всё отлично, всё работает, это успех"
							).show();
						}, 300);
					});

					return [ buttonCancel, buttonApply ];
				},
				bodyHtml: `
						<p class="text">Любой контент: текст, формы, списки.</p>

		        <div class="form-group">
		          <label class="label" for="modal-project-name">
		            Project name
		            <input class="input" id="modal-project-name" type="text" placeholder="Launch Plan">
		          </label>
		        </div>

		        <div class="form-group">
		          <label class="label" for="modal-project-desc">
		            Description
		            <textarea class="input" id="modal-project-desc" rows="3" placeholder="Optional"></textarea>
		          </label>
		        </div>
					`
			}).show();
		}
	});

</script>	

        <section class="section docs-section" id="confirm-dialog">
	<h2 class="section-title">Confirm Dialog</h2>
	<p class="docs-section-description">
		Confirm Dialog использует существующий `confirmPopup` поверх Modal. Он нужен для коротких подтверждений перед
		опасными или необратимыми действиями.
	</p>

	<div class="block">
		<h3 class="block-title">Trigger</h3>

		<div class="demo-actions">
			<button class="btn btn-warning with-icon" type="button" onclick="demoConfirmDialog()">
				<i class="ph ph-warning"></i>
				Open confirm
			</button>
		</div>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Confirm JS</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
<pre><code class="language-javascript">confirmPopup(
  "This action cannot be undone.",
  () =&gt; Toasts.createSuccess("Confirmed", "Action accepted").show(),
  () =&gt; Toasts.createInfo("Canceled", "Action skipped").show()
);</code></pre>
	</div>

	<div class="code-example">
		<div class="code-example-header">
			<span class="code-example-title">Global Namespace</span>
			<button class="code-example-copy" type="button">Copy</button>
		</div>
<pre><code class="language-javascript">GNexusUIKit.confirmPopup(
  "Apply this change?",
  () =&gt; console.log("confirmed"),
  () =&gt; console.log("canceled")
);</code></pre>
	</div>
</section>

<script>
	document.addEventListener("DOMContentLoaded", () => {
		window.demoConfirmDialog = function() {
			confirmPopup(
				"Apply this change? This action requires confirmation.",
				() => Toasts.createSuccess("Confirmed", "Action accepted").show(),
				() => Toasts.createInfo("Canceled", "Action skipped").show()
			);
		};
	});
</script>

      </div>
    </div>
  </main>

  <script src="/assets/libs/highlight/highlight.min.js"></script>
  <script src="/js/gnexus-ui-kit.js"></script>
</body>
</html>