ق
منظومة قاهرة v1.5.0
Qahera UI Kit · Living Showcase
مكون معماري رسمي 0kb Client RSC WCAG 2.1 AA 100% Logical CSS

الأزرار التفاعلية الشاملة Button

Primary action control triggering immediate state transition

renderers/html/native/button.html المتغيرات: default, primary, secondary

Gradient Buttons

Using .qhr-btn.qhr-btn--gradient.qhr-btn--tone-[tone]

General Buttons

Using .qhr-btn.qhr-btn--tone-[tone]

Light Buttons

Using .qhr-btn.qhr-btn--light.qhr-btn--tone-[tone]

Button with outline

Using .qhr-btn.qhr-btn--outline.qhr-btn--tone-[tone]

Light Button with outline

Using .qhr-btn.qhr-btn--outline-light.qhr-btn--tone-[tone]

Rounded Buttons

Using .qhr-btn.qhr-btn--rounded.qhr-btn--tone-[tone]

Light Rounded Buttons

Button Sizes

Flat Buttons

Button with icon

Split buttons & Dropdown

Circle Buttons

.qhr-btn--xs
.qhr-btn--sm
Default (.qhr-btn--md)
.qhr-btn--lg

Button Groups

Horizontal Button Group
Vertical Button Group

Application Buttons

renderers/html/native/button.html · HTML5 Strict Markup
<!-- Qahera UI Kit — Authoritative Button Gallery & Showcase -->
<div style="display: flex; flex-direction: column; gap: var(--qhr-space-8); padding: var(--qhr-space-6);">

  <!-- 1. Gradient Buttons -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Gradient Buttons</h3>
    <p style="color: var(--qhr-text-muted); font-size: 0.85rem; margin-block-end: 12px;">Using <code>.qhr-btn.qhr-btn--gradient.qhr-btn--tone-[tone]</code></p>
    <div style="display: flex; gap: var(--qhr-space-3); flex-wrap: wrap;">
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--gradient qhr-btn--tone-primary">Primary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--gradient qhr-btn--tone-secondary">Secondary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--gradient qhr-btn--tone-info">Info</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--gradient qhr-btn--tone-success">Success</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--gradient qhr-btn--tone-danger">Danger</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--gradient qhr-btn--tone-warning">Warning</button>
    </div>
  </section>

  <!-- 2. General Buttons -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">General Buttons</h3>
    <p style="color: var(--qhr-text-muted); font-size: 0.85rem; margin-block-end: 12px;">Using <code>.qhr-btn.qhr-btn--tone-[tone]</code></p>
    <div style="display: flex; gap: var(--qhr-space-3); flex-wrap: wrap;">
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-default">Default</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-primary">Primary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-secondary">Secondary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-info">Info</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-success">Success</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-danger">Danger</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-warning">Warning</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-dark">Dark</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-light">Light</button>
    </div>
  </section>

  <!-- 3. Light Buttons -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Light Buttons</h3>
    <p style="color: var(--qhr-text-muted); font-size: 0.85rem; margin-block-end: 12px;">Using <code>.qhr-btn.qhr-btn--light.qhr-btn--tone-[tone]</code></p>
    <div style="display: flex; gap: var(--qhr-space-3); flex-wrap: wrap;">
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--light qhr-btn--tone-primary">Primary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--light qhr-btn--tone-info">Info</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--light qhr-btn--tone-success">Success</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--light qhr-btn--tone-danger">Danger</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--light qhr-btn--tone-warning">Warning</button>
    </div>
  </section>

  <!-- 4. Button with outline -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Button with outline</h3>
    <p style="color: var(--qhr-text-muted); font-size: 0.85rem; margin-block-end: 12px;">Using <code>.qhr-btn.qhr-btn--outline.qhr-btn--tone-[tone]</code></p>
    <div style="display: flex; gap: var(--qhr-space-3); flex-wrap: wrap;">
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline qhr-btn--tone-default">Default</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline qhr-btn--tone-primary">Primary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline qhr-btn--tone-secondary">Secondary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline qhr-btn--tone-info">Info</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline qhr-btn--tone-success">Success</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline qhr-btn--tone-danger">Danger</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline qhr-btn--tone-warning">Warning</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline qhr-btn--tone-dark">Dark</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline qhr-btn--tone-light">Light</button>
    </div>
  </section>

  <!-- 5. Light Button with outline -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Light Button with outline</h3>
    <p style="color: var(--qhr-text-muted); font-size: 0.85rem; margin-block-end: 12px;">Using <code>.qhr-btn.qhr-btn--outline-light.qhr-btn--tone-[tone]</code></p>
    <div style="display: flex; gap: var(--qhr-space-3); flex-wrap: wrap;">
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline-light qhr-btn--tone-primary">Primary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline-light qhr-btn--tone-info">Info</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline-light qhr-btn--tone-success">Success</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline-light qhr-btn--tone-danger">Danger</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--outline-light qhr-btn--tone-warning">Warning</button>
    </div>
  </section>

  <!-- 6. Rounded Buttons -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Rounded Buttons</h3>
    <p style="color: var(--qhr-text-muted); font-size: 0.85rem; margin-block-end: 12px;">Using <code>.qhr-btn.qhr-btn--rounded.qhr-btn--tone-[tone]</code></p>
    <div style="display: flex; gap: var(--qhr-space-3); flex-wrap: wrap;">
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--tone-default">Default</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--tone-primary">Primary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--tone-secondary">Secondary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--tone-info">Info</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--tone-success">Success</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--tone-danger">Danger</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--tone-warning">Warning</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--tone-dark">Dark</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--tone-light">Light</button>
    </div>
  </section>

  <!-- 7. Light Rounded Buttons -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Light Rounded Buttons</h3>
    <div style="display: flex; gap: var(--qhr-space-3); flex-wrap: wrap;">
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--light qhr-btn--tone-primary">Primary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--light qhr-btn--tone-info">Info</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--light qhr-btn--tone-success">Success</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--light qhr-btn--tone-danger">Danger</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--rounded qhr-btn--light qhr-btn--tone-warning">Warning</button>
    </div>
  </section>

  <!-- 8. Button Sizes -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Button Sizes</h3>
    <div style="display: flex; gap: var(--qhr-space-3); align-items: center; flex-wrap: wrap;">
      <button type="button" class="qhr-btn qhr-btn--xs qhr-btn--tone-info">Info Extra Small (xs)</button>
      <button type="button" class="qhr-btn qhr-btn--sm qhr-btn--tone-secondary">Secondary Small (sm)</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-default">Default Normal (md)</button>
      <button type="button" class="qhr-btn qhr-btn--lg qhr-btn--tone-primary">Primary btn Large (lg)</button>
      <button type="button" class="qhr-btn qhr-btn--xl qhr-btn--tone-primary">Primary btn Extra Large (xl)</button>
    </div>
  </section>

  <!-- 9. Flat Buttons -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Flat Buttons</h3>
    <div style="display: flex; gap: var(--qhr-space-3); flex-wrap: wrap;">
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--flat qhr-btn--tone-default">Default</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--flat qhr-btn--light qhr-btn--tone-primary">Primary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--flat qhr-btn--tone-secondary">Secondary</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--flat qhr-btn--light qhr-btn--tone-info">Info</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--flat qhr-btn--light qhr-btn--tone-success">Success</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--flat qhr-btn--light qhr-btn--tone-danger">Danger</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--flat qhr-btn--light qhr-btn--tone-warning">Warning</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--flat qhr-btn--tone-dark">Dark</button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--flat qhr-btn--tone-light">Light</button>
    </div>
  </section>

  <!-- 10. Button with icon -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Button with icon</h3>
    <div style="display: flex; gap: var(--qhr-space-3); flex-wrap: wrap;">
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-default">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg>
        <span>Default</span>
      </button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-primary">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg>
        <span>Primary</span>
      </button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-secondary">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg>
        <span>Secondary</span>
      </button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-info">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg>
        <span>Info</span>
      </button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-success">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg>
        <span>Success</span>
      </button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-danger">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg>
        <span>Danger</span>
      </button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-warning">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg>
        <span>Warning</span>
      </button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-dark">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg>
        <span>Dark</span>
      </button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-light">
        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg>
        <span>Light</span>
      </button>
    </div>
  </section>

  <!-- 11. Split buttons & Button with Dropdown -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Split buttons & Dropdown</h3>
    <div style="display: flex; gap: var(--qhr-space-4); flex-wrap: wrap; align-items: center;">
      <!-- Split Button Primary -->
      <div class="qhr-btn-split">
        <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-primary">Primary</button>
        <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-primary" aria-label="خيارات إضافية">
          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
        </button>
      </div>

      <!-- Split Button Info -->
      <div class="qhr-btn-split">
        <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-info">Info</button>
        <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-info" aria-label="خيارات إضافية">
          <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
        </button>
      </div>

      <!-- Button with Dropdown -->
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-success">
        <span>Success</span>
        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
      </button>
      <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-danger">
        <span>Danger</span>
        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
      </button>
    </div>
  </section>

  <!-- 12. Circle Buttons -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Circle Buttons</h3>
    <div style="display: flex; flex-direction: column; gap: var(--qhr-space-3);">
      <!-- xs -->
      <div style="display: flex; gap: 8px; align-items: center;">
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--xs qhr-btn--tone-default" aria-label="Default"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--xs qhr-btn--tone-primary" aria-label="Primary"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--xs qhr-btn--tone-secondary" aria-label="Secondary"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--xs qhr-btn--tone-info" aria-label="Info"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--xs qhr-btn--tone-success" aria-label="Success"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--xs qhr-btn--tone-danger" aria-label="Danger"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--xs qhr-btn--tone-warning" aria-label="Warning"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--xs qhr-btn--tone-dark" aria-label="Dark"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <span style="font-size: 0.75rem; color: var(--qhr-text-muted);">.qhr-btn--xs</span>
      </div>

      <!-- sm -->
      <div style="display: flex; gap: 8px; align-items: center;">
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--sm qhr-btn--tone-default" aria-label="Default"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--sm qhr-btn--tone-primary" aria-label="Primary"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--sm qhr-btn--tone-secondary" aria-label="Secondary"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--sm qhr-btn--tone-info" aria-label="Info"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--sm qhr-btn--tone-success" aria-label="Success"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--sm qhr-btn--tone-danger" aria-label="Danger"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--sm qhr-btn--tone-warning" aria-label="Warning"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--sm qhr-btn--tone-dark" aria-label="Dark"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <span style="font-size: 0.75rem; color: var(--qhr-text-muted);">.qhr-btn--sm</span>
      </div>

      <!-- md (Default) -->
      <div style="display: flex; gap: 8px; align-items: center;">
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--md qhr-btn--tone-default" aria-label="Default"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--md qhr-btn--tone-primary" aria-label="Primary"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--md qhr-btn--tone-secondary" aria-label="Secondary"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--md qhr-btn--tone-info" aria-label="Info"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--md qhr-btn--tone-success" aria-label="Success"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--md qhr-btn--tone-danger" aria-label="Danger"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--md qhr-btn--tone-warning" aria-label="Warning"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--md qhr-btn--tone-dark" aria-label="Dark"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <span style="font-size: 0.75rem; color: var(--qhr-text-muted);">Default (.qhr-btn--md)</span>
      </div>

      <!-- lg -->
      <div style="display: flex; gap: 8px; align-items: center;">
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--lg qhr-btn--tone-default" aria-label="Default"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--lg qhr-btn--tone-primary" aria-label="Primary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--lg qhr-btn--tone-secondary" aria-label="Secondary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--lg qhr-btn--tone-info" aria-label="Info"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--lg qhr-btn--tone-success" aria-label="Success"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--lg qhr-btn--tone-danger" aria-label="Danger"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--lg qhr-btn--tone-warning" aria-label="Warning"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <button type="button" class="qhr-btn qhr-btn--circle qhr-btn--lg qhr-btn--tone-dark" aria-label="Dark"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="20 6 9 17 4 12"></polyline></svg></button>
        <span style="font-size: 0.75rem; color: var(--qhr-text-muted);">.qhr-btn--lg</span>
      </div>
    </div>
  </section>

  <!-- 13. Horizontal & Vertical Button Groups -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Button Groups</h3>
    <div style="display: flex; gap: var(--qhr-space-6); flex-wrap: wrap; align-items: flex-start;">
      <!-- Horizontal -->
      <div>
        <div style="font-size: 0.85rem; color: var(--qhr-text-muted); margin-block-end: 8px;">Horizontal Button Group</div>
        <div class="qhr-btn-group">
          <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-info">Left</button>
          <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-info">Middle</button>
          <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-info">Right</button>
        </div>
      </div>

      <!-- Vertical -->
      <div>
        <div style="font-size: 0.85rem; color: var(--qhr-text-muted); margin-block-end: 8px;">Vertical Button Group</div>
        <div class="qhr-btn-group--vertical" style="width: 140px;">
          <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-info">Left</button>
          <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-info">Middle</button>
          <button type="button" class="qhr-btn qhr-btn--md qhr-btn--tone-info">Right</button>
        </div>
      </div>
    </div>
  </section>

  <!-- 14. Application Buttons -->
  <section>
    <h3 style="margin-block-end: 8px; font-weight: 700;">Application Buttons</h3>
    <div style="display: flex; gap: var(--qhr-space-3); flex-wrap: wrap;">
      <a href="#" class="qhr-btn-app">
        <span class="qhr-badge qhr-badge--danger" style="font-size: 10px; padding: 2px 6px;">جديد</span>
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path><polyline points="22,6 12,13 2,6"></polyline></svg>
        <span>البريد</span>
      </a>
      <a href="#" class="qhr-btn-app">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect><line x1="16" y1="2" x2="16" y2="6"></line><line x1="8" y1="2" x2="8" y2="6"></line><line x1="3" y1="10" x2="21" y2="10"></line></svg>
        <span>التقويم</span>
      </a>
      <a href="#" class="qhr-btn-app">
        <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>
        <span>المحادثات</span>
      </a>
    </div>
  </section>

</div>

مواصفات الميثاق المعماري (Architectural Contract)

التصنيف والهدف (Role & Category)

التصنيف: مكون معماري رسمي

الغرض: Primary action control triggering immediate state transition

المتغيرات المدعومة (Variants)

default, primary, secondary

تعتمد كلياً على فئات CSS المعيارية --qhr-* دون انحراف مفرداتي.

المقاسات المعيارية (Sizes)

sm, md, lg

متناسقة بصرياً وتدعم التكبير الهرمي المتوازن.

إمكانية الوصول (A11y Standards)

متوافق مع WCAG 2.1 AA بنسبة تباين تتجاوز 4.5:1.

دعم كامل للوحة المفاتيح ومؤشرات التركيز focus-visible.