> ## Documentation Index
> Fetch the complete documentation index at: https://www.beeq.design/llms.txt
> Use this file to discover all available pages before exploring further.

# BEEQ Design System — Build faster. Design better.

> Endava's open-source design system — production-ready web components for React, Angular, Vue, and plain HTML.

export const CodeLivePreview = ({code, children, height, removePadding = false, mode = 'shadow'}) => {
  const previewRef = useRef(null);
  const BEEQ_ESM_URL = 'https://esm.sh/@beeq/core/dist/beeq/beeq.esm.js';
  const BEEQ_CSS_URL = 'https://esm.sh/@beeq/core/dist/beeq/beeq.css';
  const BEEQ_ICONS_URL = 'https://esm.sh/@beeq/core/dist/beeq/svg';
  const ensureParentBeeqRuntime = () => {
    if (document.querySelector('script[data-beeq-parent-runtime]')) return;
    const script = document.createElement('script');
    script.type = 'module';
    script.src = BEEQ_ESM_URL;
    script.dataset.beeqParentRuntime = BEEQ_ICONS_URL;
    document.head.appendChild(script);
  };
  const executeSnippetScripts = (root, runtimeWindow, previewRootArg, skipAttr) => {
    root.querySelectorAll('script').forEach(oldScript => {
      if (skipAttr && oldScript.hasAttribute(skipAttr)) return;
      if (oldScript.src) {
        const newScript = runtimeWindow.document.createElement('script');
        newScript.src = oldScript.src;
        oldScript.replaceWith(newScript);
        return;
      }
      runtimeWindow.Function('previewRoot', oldScript.textContent || '')(previewRootArg);
      oldScript.remove();
    });
  };
  const syncIframeMode = iframeDoc => {
    const root = document.documentElement;
    const explicitMode = root.getAttribute('bq-mode');
    const isDark = root.classList.contains('dark');
    const resolvedMode = explicitMode || (isDark ? 'dark' : 'light');
    iframeDoc.documentElement.setAttribute('bq-mode', resolvedMode);
    iframeDoc.body.setAttribute('bq-mode', resolvedMode);
  };
  useEffect(() => {
    if (mode === 'shadow') ensureParentBeeqRuntime();
  }, [mode]);
  useEffect(() => {
    const container = previewRef.current;
    if (!container) return;
    if (removePadding) container.style.padding = '0';
    container.innerHTML = '';
    if (mode === 'iframe') {
      const iframe = document.createElement('iframe');
      iframe.className = 'preview-iframe';
      iframe.style.width = '100%';
      iframe.style.border = '0';
      iframe.style.display = 'block';
      iframe.style.minHeight = height ?? '0px';
      iframe.setAttribute('title', 'Live code preview');
      iframe.setAttribute('loading', 'lazy');
      iframe.setAttribute('sandbox', 'allow-scripts allow-same-origin');
      container.appendChild(iframe);
      const iframeDoc = iframe.contentDocument;
      const iframeWin = iframe.contentWindow;
      if (!iframeDoc || !iframeWin) return;
      iframeDoc.open();
      iframeDoc.write(['<!doctype html>', '<html>', '<head>', '  <meta charset="utf-8" />', '  <meta name="viewport" content="width=device-width, initial-scale=1" />', '  <style>html,body{margin:0;padding:0;min-height:100%;}</style>', `  <link rel="stylesheet" href="${BEEQ_CSS_URL}" />`, `  <script type="module" src="${BEEQ_ESM_URL}" data-beeq-iframe-runtime="${BEEQ_ICONS_URL}"></script>`, '</head>', '<body>', code, '</body>', '</html>'].join('\n'));
      iframeDoc.close();
      syncIframeMode(iframeDoc);
      const modeObserver = new MutationObserver(() => syncIframeMode(iframeDoc));
      modeObserver.observe(document.documentElement, {
        attributes: true,
        attributeFilter: ['class', 'bq-mode']
      });
      executeSnippetScripts(iframeDoc, iframeWin, iframeDoc, 'data-beeq-iframe-runtime');
      return () => modeObserver.disconnect();
    }
    const shadowRoot = container.shadowRoot ?? container.attachShadow({
      mode: 'open'
    });
    if (!shadowRoot.adoptedStyleSheets.length) {
      const fixSheet = new CSSStyleSheet();
      fixSheet.replaceSync(`
        bq-dropdown::part(panel),
        bq-panel::part(panel),
        bq-select::part(panel),
        bq-date-picker::part(panel) { z-index: 9999; }
        bq-tooltip::part(panel) { position: absolute; }
      `);
      shadowRoot.adoptedStyleSheets = [fixSheet];
    }
    shadowRoot.innerHTML = [`<link rel="stylesheet" href="${BEEQ_CSS_URL}">`, code].join('');
    executeSnippetScripts(shadowRoot, window, shadowRoot);
    return undefined;
  }, [code, mode, height]);
  return <div className="code-live-preview not-prose">
      {}
      <div className="preview" ref={previewRef} style={{
    minHeight: height
  }} />

      {}
      {children && <div className="code">{children}</div>}
    </div>;
};

<div id="bq-page-guard" aria-hidden="true" />

<div className="relative overflow-hidden px-4 sm:px-6 bq-home-hero">
  <div className="absolute inset-0 pointer-events-none bq-home-hero__glow" />

  <div className="max-w-6xl mx-auto grid grid-cols-1 lg:grid-cols-2 gap-8 sm:gap-16 items-center">
    {/* ── Left: copy ── */}

    <div>
      <a href="/releases/changelog" className="inline-flex items-center gap-2 px-3 py-1 rounded-full text-xs font-semibold border mb-6 no-underline hover:opacity-80 bq-home-hero__version-badge">
        <Icon icon="sparkles" size="12" /> v1.13.0 — What's new →
      </a>

      <h1 className="text-5xl lg:text-6xl font-bold tracking-tighter leading-none mb-5 bq-home-section__heading">
        Building Excellence,

        <br />

        Enhancing Quality.
      </h1>

      <p className="text-base lg:text-lg leading-relaxed mb-7 bq-home-section__copy">
        BEEQ is
        <Tooltip tip="Endava is a global technology services company and a leading provider of next-generation digital transformation solutions.
        It helps organisations design, build, modernise, and run digital products and platforms by combining innovative technology,
        deep industry expertise, world-class engineering, and an AI-native approach." cta="Learn more about Endava" href="https://www.endava.com/">Endava</Tooltip>
        's open-source design system — 37 production-ready web components that work
        across React, Angular, Vue, and plain HTML. No rewrites. No lock-in. No compromises.
      </p>

      {/* Install block */}

      <div className="rounded-xl px-4 py-3 mb-2 flex items-center gap-3 font-mono text-sm bq-home-install">
        <Icon icon="terminal" className="bq-home-install__icon" />

        <p className="bq-home-install__code">
          npm install @beeq/core
        </p>
      </div>

      <p className="flex items-start md:items-center gap-1 text-xs mb-8 bq-home-hero__cdn-hint">
        <Icon icon="circle-info" size="12" className="mt-0.5" />

        <span className="space-x-1">
          Prefer a CDN? Add two lines to any HTML page — no build step needed.

          <a href="/getting-started/for-developers" className="bq-link bq-home-section__link">
            All setup options.
          </a>
        </span>
      </p>

      <div className="flex flex-wrap gap-3 items-center">
        <a href="/getting-started/introduction" className="box-border inline-flex px-5 py-2.5 rounded-lg text-sm font-semibold text-white no-underline border border-transparent transition-opacity hover:opacity-90 bq-home-action bq-home-action--primary w-full md:w-auto">
          <span className="flex grow items-center justify-center gap-2 md:justify-start">
            <Icon icon="rocket" color="var(--bq-icon--alt)" />

            Get started
          </span>
        </a>

        <a href="/components" className="box-border px-5 py-2.5 rounded-lg text-sm no-underline transition-colors bq-home-action bq-home-action--ghost w-full md:w-auto text-center md:text-start">
          <span className="flex grow items-center justify-center gap-2 md:justify-start">
            <Icon icon="binoculars" color="var(--bq-icon--brand)" />

            Browse components
          </span>
        </a>

        <a href="https://storybook.beeq.design" target="_blank" className="box-border px-5 py-2.5 rounded-lg text-sm no-underline transition-colors bq-home-action bq-home-action--ghost w-full md:w-auto text-center md:text-start">
          <span className="flex grow items-center justify-center gap-2 md:justify-start">
            <Icon icon="book-bookmark" color="var(--bq-icon--brand)" />

            Storybook
          </span>
        </a>
      </div>
    </div>

    {/* ── Right: browser mockup with live components ── */}

    <div className="w-full bq-home-code-panel">
      <CodeLivePreview
        mode="iframe"
        height="40.75rem"
        removePadding
        code={`
    <style>
      body {
        padding: var(--bq-spacing-l);
      }

      .container-group {
        display: flex;
        gap: var(--bq-spacing-m);
        flex-wrap: wrap;
        align-items: center;
      }

      @media (width < 460px) {
        body {
          padding: var(--bq-spacing-s);
        }

        bq-step-item:nth-child(2) {
          display: none;
        }

        bq-button:nth-child(4) {
          display: none;
        }

        .container-group {
          gap: var(--bq-spacing-xs);
        }
      }
    </style>
    <div style="display: flex; flex-direction: column; gap:var(--bq-spacing-xl);">
      <bq-steps type="dot">
        <bq-step-item status="completed">
          <bq-icon aria-hidden="true" slot="prefix" name="check-circle"></bq-icon>
          <span>Start</span>
          <span slot="description">Text</span>
        </bq-step-item>
        <bq-step-item status="current">
          <bq-icon aria-hidden="true" slot="prefix" name="circle"></bq-icon>
          <span>Progress</span>
          <span slot="description">Text</span>
        </bq-step-item>
        <bq-step-item>
          <bq-icon aria-hidden="true" slot="prefix" name="circle"></bq-icon>
          <span>Finished</span>
          <span slot="description">Text</span>
        </bq-step-item>
      </bq-steps>
      <div class="container-group">
        <bq-button>Primary</bq-button>
        <bq-button variant="ghost">Ghost</bq-button>
        <bq-button appearance="secondary">Secondary</bq-button>
        <bq-button appearance="text">Text</bq-button>
        <bq-button appearance="text" only-icon>
          <bq-icon name="arrow-right"></bq-icon>
        </bq-button>
      </div>
      <bq-notification open>
        Are you sure you wan't to create this file?
        <span slot="body">Description</span>
        <div slot="footer">
          <bq-button size="small">Confirm</bq-button>
          <bq-button appearance="link" size="small">Cancel</bq-button>
        </div>
      </bq-notification>
      <bq-select placeholder="Select one or more options" value='["1","3"]' placement="top" multiple>
        <bq-option value="1">Option 1</bq-option>
        <bq-option value="2">Option 2</bq-option>
        <bq-option value="3">Option 3</bq-option>
      </bq-select>
      <bq-slider
        type="range"
        min="0"
        max="400"
        value="[80,300]"
        enable-tooltip
        enable-value-indicator
      ></bq-slider>
      <bq-tab-group value="1">
        <bq-tab tab-id="1">Daily</bq-tab>
        <bq-tab tab-id="2">Weekly</bq-tab>
        <bq-tab tab-id="3">Monthly</bq-tab>
      </bq-tab-group>
      <div class="container-group">
        <bq-avatar initials="EA" image="https://i.pravatar.cc/150?img=11"></bq-avatar>
        <bq-avatar initials="MK" image="https://i.pravatar.cc/150?img=28"></bq-avatar>
        <bq-avatar initials="RL" image="https://i.pravatar.cc/150?img=12"></bq-avatar>
        <bq-status type="danger">Busy</bq-status>
        <bq-status type="success">Online</bq-status>
        <bq-status type="neutral">Offline</bq-status>
      </div>
    </div>
    <script>
      (() => {
        const bqNotification = previewRoot.querySelector('bq-notification');
        if (!bqNotification) return;

        bqNotification.addEventListener('bqHide', () => {
          setTimeout(() => {
            bqNotification.show()
          }, 2000);
        });
      })();
    </script>
  `}
      />
    </div>
  </div>
</div>

<div className="px-6 py-7 border-y bq-home-trust">
  <div className="max-w-6xl mx-auto flex flex-wrap justify-center items-center gap-x-6 gap-y-3">
    <div className="flex items-center gap-2 text-xs bq-home-trust__item">
      <Icon icon="shield-halved" size="14" color="var(--bq-text--secondary)" />

      <span>WCAG 2.1 AA</span>
    </div>

    <div className="flex items-center gap-2 text-xs bq-home-trust__item">
      <Icon icon="cubes" size="14" color="var(--bq-text--secondary)" />

      <span>37 components</span>
    </div>

    <div className="flex items-center gap-2 text-xs bq-home-trust__item">
      <Icon icon="icons" size="14" color="var(--bq-text--secondary)" />

      <span>9k+ icons</span>
    </div>

    <div className="flex items-center gap-2 text-xs bq-home-trust__item">
      <Icon icon="scale-balanced" size="14" color="var(--bq-text--secondary)" />

      <span>Apache 2.0</span>
    </div>
  </div>
</div>

<div className="px-6 py-14 bq-home-setup bq-home-band bq-home-band--tinted">
  <div className="max-w-6xl mx-auto grid grid-cols-1 lg:grid-cols-2 gap-16 items-start">
    {/* Left: copy */}

    <div className="lg:pt-2">
      <p className="text-xs font-bold uppercase tracking-widest mb-3 mt-0 flex items-center gap-2 bq-home-section__eyebrow">
        <Icon icon="bolt" /> One library
      </p>

      <h2 className="text-3xl lg:text-4xl tracking-tight leading-tight mb-4 bq-home-section__heading">
        Every framework.<br />Two lines.
      </h2>

      <p className="text-base leading-relaxed mb-4 mt-0 bq-home-section__copy">
        BEEQ is built on standard
        <Tooltip tip="Web Components are a set of web platform APIs that allow you to create new custom, reusable, encapsulated HTML tags to use in web pages and web apps." cta="Learn more about Web Components" href="https://developer.mozilla.org/en-US/docs/Web/Web_Components">HTML custom elements</Tooltip>.
        The same component works in React, Angular, Vue, or a plain HTML file — with zero rewrites.
      </p>

      <p className="text-base leading-relaxed mb-6 mt-0 bq-home-section__copy">
        Want typed props and native framework events? The optional `@beeq/react`, `@beeq/angular`, and `@beeq/vue` wrappers give you a first-class developer experience without locking you into a proprietary fork.
      </p>

      <a href="/getting-started/for-developers" className="bq-link inline-flex items-center gap-2 font-medium text-sm bq-home-section__link">
        <span>See all integrations guides</span>

        <Icon icon="circle-right" size={12} color="var(--bq-icon--brand)" />
      </a>
    </div>

    {/* Right: code */}

    <div className="bq-home-code-panel">
      <CodeGroup>
        ```html HTML icon="html5" theme={"theme":{"light":"one-light","dark":"night-owl"}}
        <!-- 1. Load styles -->
        <link
          rel="stylesheet"
          href="https://esm.sh/@beeq/core/dist/beeq/beeq.css"
        />

        <!-- 2. Load components + icons -->
        <script type="module"
          src="https://esm.sh/@beeq/core/dist/beeq/beeq.esm.js"
          data-beeq="https://esm.sh/@beeq/core/dist/beeq/svg">
        </script>

        <!-- 3. Use any component -->
        <bq-button appearance="primary">Hello BEEQ</bq-button>
        ```

        ```tsx React icon="react" theme={"theme":{"light":"one-light","dark":"night-owl"}}
        // main.tsx — register icon path once
        import { setBasePath } from "@beeq/core/loader";
        setBasePath("https://esm.sh/@beeq/core/dist/beeq/svg");

        // anywhere in your app:
        import { BqButton } from "@beeq/react";

        <BqButton appearance="primary">Hello BEEQ</BqButton>
        ```

        ```ts Angular icon="angular" theme={"theme":{"light":"one-light","dark":"night-owl"}}
        // standalone component (recommended):
        import { BqButtonComponent } from "@beeq/angular/standalone";

        @Component({
          standalone: true,
          imports: [BqButtonComponent],
          template: `<bq-button appearance="primary">Hello BEEQ</bq-button>`
        })
        export class MyComponent {}
        ```

        ```vue Vue icon="vuejs" theme={"theme":{"light":"one-light","dark":"night-owl"}}
        import { BqButton } from "@beeq/vue";

        <template>
          <BqButton appearance="primary">Hello BEEQ</BqButton>
        </template>
        ```
      </CodeGroup>
    </div>
  </div>
</div>

<div className="px-6 py-14 bq-home-showcase">
  <div className="max-w-6xl mx-auto grid grid-cols-1 lg:grid-cols-2 gap-16 items-start">
    <Tabs className="bq-home-showcase__tabs">
      <Tab title="Actions">
        <CodeLivePreview
          mode="iframe"
          height="14rem"
          removePadding
          code={`
      <style>
        body { padding: var(--bq-spacing-xs); }

        .showcase-actions {
          display: grid;
          gap: var(--bq-spacing-m);
          inline-size: 100%;
        }

        .showcase-header,
        .showcase-primary-actions,
        .showcase-meta-row {
          display: flex;
          align-items: center;
        }

        .showcase-header {
          margin-block-end: var(--bq-spacing-m);
          justify-content: space-between;
          gap: var(--bq-spacing-m);
        }

        .showcase-primary-actions,
        .showcase-meta-row {
          flex-wrap: wrap;
          gap: var(--bq-spacing-s);
        }

        .showcase-meta-row {
          justify-content: flex-end;
        }

        .showcase-summary {
          min-inline-size: 0;
        }

        bq-dropdown::part(panel) {
          width: max-content;
        }

        @media (width < 460px) {
          .showcase-header {
            align-items: flex-start;
          }
        }
      </style>
      <div class="showcase-actions">
        <div class="showcase-header">
          <div class="showcase-summary">
            <h4>Component docs update</h4>
            <p class="caption" style="margin:var(--bq-spacing-xs2) 0 0">5 files changed · Ready for design review</p>
          </div>

          <bq-dropdown placement="bottom-end" strategy="absolute">
            <bq-button appearance="text" label="More actions" only-icon slot="trigger">
              <bq-icon name="dots-three-vertical" aria-hidden="true"></bq-icon>
            </bq-button>
            <bq-option-list>
              <bq-option value="duplicate">
                <bq-icon name="copy" slot="prefix"></bq-icon>
                Duplicate
              </bq-option>
              <bq-option value="archive">
                <bq-icon name="archive" slot="prefix"></bq-icon>
                Archive
              </bq-option>
              <bq-option value="share">
                <bq-icon name="trash" slot="prefix"></bq-icon>
                Remove
              </bq-option>
            </bq-option-list>
          </bq-dropdown>
        </div>

        <div class="showcase-primary-actions">
          <bq-button>Approve</bq-button>
          <bq-button appearance="secondary">Preview</bq-button>
          <bq-button appearance="text">Comment</bq-button>
        </div>

        <div class="showcase-meta-row">
          <bq-button appearance="link">
            <bq-icon name="share-network" slot="prefix"></bq-icon>
            Share feedback
          </bq-button>
        </div>
      </div>
    `}
        >
          <CodeGroup>
            ```html HTML icon="html5" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            <bq-button>Approve</bq-button>
            <bq-button appearance="secondary">Preview</bq-button>
            <bq-button appearance="text">Comment</bq-button>

            <bq-dropdown placement="bottom-end">
              <bq-button appearance="text" label="More actions" only-icon slot="trigger">
                <bq-icon name="dots-three-vertical" aria-hidden="true"></bq-icon>
              </bq-button>
              <bq-option-list>
                <bq-option value="duplicate">Duplicate</bq-option>
                <bq-option value="archive">Archive</bq-option>
                <bq-option value="remove">Remove</bq-option>
              </bq-option-list>
            </bq-dropdown>
            ```

            ```tsx React icon="react" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            import { BqButton, BqDropdown, BqIcon, BqOption, BqOptionList } from "@beeq/react";

            <BqButton>Approve</BqButton>
            <BqButton appearance="secondary">Preview</BqButton>
            <BqButton appearance="text">Comment</BqButton>

            <BqDropdown placement="bottom-end">
              <BqButton appearance="text" label="More actions" onlyIcon slot="trigger">
                <BqIcon name="dots-three-vertical" aria-hidden="true" />
              </BqButton>
              <BqOptionList>
                <BqOption value="duplicate">Duplicate</BqOption>
                <BqOption value="archive">Archive</BqOption>
              </BqOptionList>
            </BqDropdown>
            ```

            ```typescript Angular icon="angular" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            import { BqButton, BqDropdown, BqIcon, BqOption, BqOptionList } from "@beeq/angular/standalone";

            @Component({
              standalone: true,
              imports: [BqButton, BqDropdown, BqIcon, BqOption, BqOptionList],
              template: `
                <bq-button>Approve</bq-button>
                <bq-button appearance="secondary">Preview</bq-button>

                <bq-dropdown placement="bottom-end">
                  <bq-button appearance="text" label="More actions" only-icon slot="trigger">
                    <bq-icon name="dots-three-vertical" aria-hidden="true"></bq-icon>
                  </bq-button>
                  <bq-option-list>
                    <bq-option value="duplicate">Duplicate</bq-option>
                    <bq-option value="archive">Archive</bq-option>
                  </bq-option-list>
                </bq-dropdown>
              `
            })
            export class AppComponent {}
            ```

            ```vue Vue icon="vuejs" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            <script setup lang="ts">
              import { BqButton, BqDropdown, BqIcon, BqOption, BqOptionList } from "@beeq/vue";
            </script>

            <template>
              <BqButton>Approve</BqButton>
              <BqButton appearance="secondary">Preview</BqButton>
              <BqDropdown placement="bottom-end">
                <BqButton appearance="text" label="More actions" only-icon slot="trigger">
                  <BqIcon name="dots-three-vertical" aria-hidden="true" />
                </BqButton>
                <BqOptionList>
                  <BqOption value="duplicate">Duplicate</BqOption>
                  <BqOption value="archive">Archive</BqOption>
                </BqOptionList>
              </BqDropdown>
            </template>
            ```
          </CodeGroup>
        </CodeLivePreview>
      </Tab>

      <Tab title="Data Display">
        <CodeLivePreview
          mode="iframe"
          height="14rem"
          removePadding
          code={`
      <style>
        body { padding: var(--bq-spacing-xs); }

        .showcase-display {
          display: grid;
          grid-template-columns: minmax(0, 1fr);
          gap: var(--bq-spacing-m);
          inline-size: 100%;
        }

        .showcase-row {
          display: flex;
          flex-wrap: wrap;
          align-items: center;
          gap: var(--bq-spacing-s);
        }

        .showcase-table {
          border: var(--bq-stroke-s) solid var(--bq-stroke--primary);
          border-radius: var(--bq-radius--m);
          overflow: hidden;
        }

        bq-status {
          display: inline-flex;
        }
      </style>
      <div class="showcase-display">
        <div class="showcase-row">
          <bq-avatar image="https://i.pravatar.cc/150?img=11"></bq-avatar>
          <bq-avatar initials="MS"></bq-avatar>
          <bq-tag color="info">
            <bq-icon name="sparkle" slot="prefix"></bq-icon>
            Design system
          </bq-tag>
          <bq-badge background-color="ui--success">Live</bq-badge>
          <bq-status type="success">Healthy</bq-status>
        </div>

        <div class="showcase-table">
          <table class="bq-table compact" aria-label="Component readiness">
            <thead>
              <tr>
                <th scope="col">Component</th>
                <th scope="col">Group</th>
                <th scope="col">Status</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td>Avatar</td>
                <td>Data Display</td>
                <td><bq-status type="success">Stable</bq-status></td>
              </tr>
              <tr>
                <td>Table</td>
                <td>Data Display</td>
                <td><bq-status type="info">CSS utility</bq-status></td>
              </tr>
            </tbody>
          </table>
        </div>
      </div>
    `}
        >
          <CodeGroup>
            ```html HTML icon="html5" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            <bq-avatar initials="MS"></bq-avatar>
            <bq-badge background-color="ui--success">Live</bq-badge>
            <bq-status type="success">Healthy</bq-status>
            <bq-tag color="info">
              <bq-icon name="sparkle" slot="prefix"></bq-icon>
              Design system
            </bq-tag>
            ```

            ```tsx React icon="react" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            import { BqAvatar, BqBadge, BqIcon, BqStatus, BqTag } from "@beeq/react";

            <BqAvatar initials="MS" />
            <BqBadge backgroundColor="ui--success">Live</BqBadge>
            <BqStatus type="success">Healthy</BqStatus>
            <BqTag color="info">
              <BqIcon name="sparkle" slot="prefix" />
              Design system
            </BqTag>
            ```

            ```typescript Angular icon="angular" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            import { BqAvatar, BqBadge, BqIcon, BqStatus, BqTag } from "@beeq/angular/standalone";

            @Component({
              standalone: true,
              imports: [BqAvatar, BqBadge, BqIcon, BqStatus, BqTag],
              template: `
                <bq-avatar initials="MS"></bq-avatar>
                <bq-badge background-color="ui--success">Live</bq-badge>
                <bq-status type="success">Healthy</bq-status>
                <bq-tag color="info">
                  <bq-icon name="sparkle" slot="prefix"></bq-icon>
                  Design system
                </bq-tag>
              `
            })
            export class AppComponent {}
            ```

            ```vue Vue icon="vuejs" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            <script setup lang="ts">
              import { BqAvatar, BqBadge, BqIcon, BqStatus, BqTag } from "@beeq/vue";
            </script>

            <template>
              <BqAvatar initials="MS" />
              <BqBadge background-color="ui--success">Live</BqBadge>
              <BqStatus type="success">Healthy</BqStatus>
              <BqTag color="info">
                <BqIcon name="sparkle" slot="prefix" />
                Design system
              </BqTag>
            </template>
            ```
          </CodeGroup>
        </CodeLivePreview>
      </Tab>

      <Tab title="Feedback">
        <CodeLivePreview
          mode="iframe"
          height="14rem"
          removePadding
          code={`
      <style>
        body { padding: var(--bq-spacing-xs); }

        .showcase-feedback {
          display: grid;
          gap: var(--bq-spacing-m);
          inline-size: 100%;
        }

        .showcase-progress {
          display: grid;
          gap: var(--bq-spacing-xs);
          padding: var(--bq-spacing-m);
          border: var(--bq-stroke-s) solid var(--bq-stroke--primary);
          border-radius: var(--bq-radius--m);
        }
      </style>
      <div class="showcase-feedback">
        <bq-alert open type="success">
          Deployment completed
          <span slot="body">The production environment is now running the latest release.</span>
        </bq-alert>

        <div class="showcase-progress">
          <div class="showcase-inline">
            <bq-spinner size="small"></bq-spinner>
            <span class="body">Syncing component metadata</span>
          </div>
          <bq-progress value="72" enable-tooltip></bq-progress>
        </div>
      </div>
    `}
        >
          <CodeGroup>
            ```html HTML icon="html5" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            <bq-alert open type="success">
              Deployment completed
              <span slot="body">The production environment is now running the latest release.</span>
            </bq-alert>

            <bq-progress value="72" enable-tooltip></bq-progress>

            <bq-notification open type="info" disable-close>
              New review comment
              <span slot="body">A designer mentioned you in the Button documentation.</span>
            </bq-notification>
            ```

            ```tsx React icon="react" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            import { BqAlert, BqNotification, BqProgress } from "@beeq/react";

            <BqAlert open type="success">
              Deployment completed
              <span slot="body">The production environment is now running the latest release.</span>
            </BqAlert>

            <BqProgress value={72} enableTooltip />

            <BqNotification open type="info" disableClose>
              New review comment
              <span slot="body">A designer mentioned you in the Button documentation.</span>
            </BqNotification>
            ```

            ```typescript Angular icon="angular" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            import { BqAlert, BqNotification, BqProgress } from "@beeq/angular/standalone";

            @Component({
              standalone: true,
              imports: [BqAlert, BqNotification, BqProgress],
              template: `
                <bq-alert open type="success">
                  Deployment completed
                  <span slot="body">The production environment is now running the latest release.</span>
                </bq-alert>

                <bq-progress [value]="72" enable-tooltip></bq-progress>

                <bq-notification open type="info" disable-close>
                  New review comment
                  <span slot="body">A designer mentioned you in the Button documentation.</span>
                </bq-notification>
              `
            })
            export class AppComponent {}
            ```

            ```vue Vue icon="vuejs" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            <script setup lang="ts">
              import { BqAlert, BqNotification, BqProgress } from "@beeq/vue";
            </script>

            <template>
              <BqAlert open type="success">
                Deployment completed
                <span slot="body">The production environment is now running the latest release.</span>
              </BqAlert>

              <BqProgress :value="72" enable-tooltip />

              <BqNotification open type="info" disable-close>
                New review comment
                <span slot="body">A designer mentioned you in the Button documentation.</span>
              </BqNotification>
            </template>
            ```
          </CodeGroup>
        </CodeLivePreview>
      </Tab>

      <Tab title="Form Controls">
        <CodeLivePreview
          mode="iframe"
          height="14rem"
          removePadding
          code={`
      <style>
        body { padding: var(--bq-spacing-xs); }

        .showcase-form {
          display: grid;
          grid-template-columns: repeat(2, minmax(0, 1fr));
          gap: var(--bq-spacing-m);
          inline-size: 100%;
        }

        .showcase-form__wide {
          grid-column: 1 / -1;
        }

        .showcase-form__cluster {
          display: flex;
          flex-wrap: wrap;
          align-items: center;
          gap: var(--bq-spacing-l);
        }

        @media (width < 420px) {
          .showcase-form {
            grid-template-columns: 1fr;
          }
        }
      </style>
      <form class="showcase-form">
        <bq-input type="email" value="alex@endava.com">
          <label slot="label">Email address</label>
        </bq-input>

        <bq-select value="design-system" placeholder="Choose team">
          <label slot="label">Team</label>
          <bq-option value="design-system">Design System</bq-option>
          <bq-option value="product">Product</bq-option>
          <bq-option value="platform">Platform</bq-option>
        </bq-select>

        <div class="showcase-form__wide showcase-form__cluster">
          <bq-checkbox checked>Send summary</bq-checkbox>
          <bq-radio-group name="digest" value="weekly">
            <bq-radio name="digest" value="daily">Daily</bq-radio>
            <bq-radio name="digest" value="weekly">Weekly</bq-radio>
          </bq-radio-group>
          <bq-switch checked>Auto-save</bq-switch>
        </div>

        <div class="showcase-form__wide">
          <bq-slider value="72" enable-tooltip></bq-slider>
        </div>
      </form>
    `}
        >
          <CodeGroup>
            ```html HTML icon="html5" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            <bq-input type="email" value="alex@endava.com">
              <label slot="label">Email address</label>
            </bq-input>

            <bq-select value="design-system" placeholder="Choose team">
              <label slot="label">Team</label>
              <bq-option value="design-system">Design System</bq-option>
              <bq-option value="product">Product</bq-option>
            </bq-select>

            <bq-checkbox checked>Send summary</bq-checkbox>
            <bq-switch checked>Auto-save</bq-switch>
            ```

            ```tsx React icon="react" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            import { BqCheckbox, BqInput, BqOption, BqSelect, BqSwitch } from "@beeq/react";

            <BqInput type="email" value="alex@endava.com">
              <label slot="label">Email address</label>
            </BqInput>

            <BqSelect value="design-system" placeholder="Choose team">
              <label slot="label">Team</label>
              <BqOption value="design-system">Design System</BqOption>
              <BqOption value="product">Product</BqOption>
            </BqSelect>

            <BqCheckbox checked>Send summary</BqCheckbox>
            <BqSwitch checked>Auto-save</BqSwitch>
            ```

            ```typescript Angular icon="angular" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            import { BqCheckbox, BqInput, BqOption, BqSelect, BqSwitch } from "@beeq/angular/standalone";

            @Component({
              standalone: true,
              imports: [BqCheckbox, BqInput, BqOption, BqSelect, BqSwitch],
              template: `
                <bq-input type="email" value="alex@endava.com">
                  <label slot="label">Email address</label>
                </bq-input>

                <bq-select value="design-system" placeholder="Choose team">
                  <label slot="label">Team</label>
                  <bq-option value="design-system">Design System</bq-option>
                  <bq-option value="product">Product</bq-option>
                </bq-select>

                <bq-checkbox checked>Send summary</bq-checkbox>
                <bq-switch checked>Auto-save</bq-switch>
              `
            })
            export class AppComponent {}
            ```

            ```vue Vue icon="vuejs" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            <script setup lang="ts">
              import { BqCheckbox, BqInput, BqOption, BqSelect, BqSwitch } from "@beeq/vue";
            </script>

            <template>
              <BqInput type="email" value="alex@endava.com">
                <label slot="label">Email address</label>
              </BqInput>

              <BqSelect value="design-system" placeholder="Choose team">
                <label slot="label">Team</label>
                <BqOption value="design-system">Design System</BqOption>
                <BqOption value="product">Product</BqOption>
              </BqSelect>

              <BqCheckbox checked>Send summary</BqCheckbox>
              <BqSwitch checked>Auto-save</BqSwitch>
            </template>
            ```
          </CodeGroup>
        </CodeLivePreview>
      </Tab>

      <Tab title="Layout">
        <CodeLivePreview
          mode="iframe"
          height="14rem"
          removePadding
          code={`
      <style>
        body { padding: var(--bq-spacing-xs); }

        .showcase-layout bq-card::part(wrapper) {
          background-color: var(--bq-ui--alt);
        }

        .showcase-layout bq-card > .card-body {
          display: grid;
          gap: var(--bq-spacing-xs);
          padding: var(--bq-spacing-m);
        }
      </style>
      <div class="showcase-layout">
        <bq-card type="minimal" border="m">
          <div class="card-body">
            <h5>Quiet support content</h5>
            <p class="caption">Choose calmer surfaces when the content should support the main workflow.</p>
            <bq-divider dashed></bq-divider>
            <bq-button appearance="link">Open details</bq-button>
          </div>
        </bq-card>
      </div>
    `}
        >
          <CodeGroup>
            ```html HTML icon="html5" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            <bq-card type="minimal" border="m">
              <div class="card-body">
                <h3>Quiet support content</h3>
                <bq-divider dashed></bq-divider>
                <bq-button appearance="link" size="small">Open details</bq-button>
              </div>
            </bq-card>
            ```

            ```tsx React icon="react" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            import { BqButton, BqCard, BqDivider } from "@beeq/react";

            <BqCard type="minimal" border="m">
              <h3>Quiet support content</h3>
              <BqDivider dashed />
              <BqButton appearance="link" size="small">Open details</BqButton>
            </BqCard>
            ```

            ```typescript Angular icon="angular" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            import { BqButton, BqCard, BqDivider } from "@beeq/angular/standalone";

            @Component({
              standalone: true,
              imports: [BqButton, BqCard, BqDivider],
              template: `
                <bq-card type="minimal" border="m">
                  <h3>Quiet support content</h3>
                  <bq-divider dashed></bq-divider>
                  <bq-button appearance="link" size="small">Open details</bq-button>
                </bq-card>
              `
            })
            export class AppComponent {}
            ```

            ```vue Vue icon="vuejs" expandable theme={"theme":{"light":"one-light","dark":"night-owl"}}
            <script setup lang="ts">
              import { BqButton, BqCard, BqDivider } from "@beeq/vue";
            </script>

            <template>
              <BqCard type="minimal" border="m">
                <h3>Quiet support content</h3>
                <BqDivider dashed />
                <BqButton appearance="link" size="small">Open details</BqButton>
              </BqCard>
            </template>
            ```
          </CodeGroup>
        </CodeLivePreview>
      </Tab>
    </Tabs>

    <div className="bq-home-showcase__copy">
      <p className="text-xs font-bold uppercase tracking-widest mt-0 flex items-center gap-2 bq-home-section__eyebrow">
        <Icon icon="eye" />

        <span>Live Preview</span>
      </p>

      <h2 className="text-4xl lg:text-5xl font-bold tracking-tight leading-tight bq-home-section__heading">
        See the code.<br />See it render.
      </h2>

      <p className="text-base bq-home-section__copy">
        The preview on the left runs live from the actual BEEQ package.
        Switch between component groups, interact with real components, and use the matching snippets as a starting point for your app.
      </p>

      <div className="bq-home-showcase__value-grid" aria-label="BEEQ component documentation highlights">
        <div className="bq-home-showcase__value-item">
          <Icon icon="cubes" className="bq-home-showcase__value-icon" />

          <span>Production web components</span>
        </div>

        <div className="bq-home-showcase__value-item">
          <Icon icon="terminal" className="bq-home-showcase__value-icon" />

          <span>Framework-ready examples</span>
        </div>

        <div className="bq-home-showcase__value-item">
          <Icon icon="github" className="bq-home-showcase__value-icon" />

          <span>Source-backed API docs</span>
        </div>

        <div className="bq-home-showcase__value-item">
          <Icon icon="palette" className="bq-home-showcase__value-icon" />

          <span>Design tokens and themes</span>
        </div>

        <div className="bq-home-showcase__value-item">
          <Icon icon="universal-access" className="bq-home-showcase__value-icon" />

          <span>Accessibility guidance</span>
        </div>

        <div className="bq-home-showcase__value-item">
          <Icon icon="layer-group" className="bq-home-showcase__value-icon" />

          <span>CSS variables and parts</span>
        </div>
      </div>

      <div className="bq-home-showcase__actions">
        <a href="/components/overview" className="bq-home-showcase__button">
          <Icon icon="binoculars" color="var(--bq-icon--alt)" />

          <span>Browse all components</span>
        </a>

        <p className="bq-home-showcase__starter">
          or start with <a href="/components/button" className="bq-home-section__link bq-link">Button</a>, <a href="/components/input" className="bq-home-section__link bq-link">Input</a>, or <a href="/components/select" className="bq-home-section__link bq-link">Select</a>
        </p>
      </div>
    </div>
  </div>
</div>

<div className="px-6 py-14 bq-home-stats bq-home-band bq-home-band--tinted">
  <div className="max-w-6xl mx-auto">
    <p className="text-xs font-bold uppercase tracking-widest mb-2 mt-0 flex items-center gap-2 bq-home-section__eyebrow">
      <Icon icon="circle-question" />

      <span>Why BEEQ</span>
    </p>

    <h2 className="text-3xl lg:text-4xl font-bold mb-3 bq-home-section__heading">
      One system for consistent,<br />branded, accessible delivery.
    </h2>

    <p className="text-base mb-12 bq-home-section__copy">
      BEEQ brings product, design, and engineering teams into one shared system — from foundations and tokens to production-ready components and framework integrations.
    </p>

    <div className="bq-home-stats__grid">
      {/* ── Column 1: Design alignment ── */}

      <div className="bq-home-stats__item">
        <div className="bq-home-stats__tag-group">
          <div className="bq-home-stats__tag-row">
            <span className="bq-home-stats__tag bq-home-stats__tag--filled">Foundation</span>
            <span className="bq-home-stats__tag bq-home-stats__tag--filled">Design tokens</span>
          </div>

          <div className="bq-home-stats__tag-row">
            <span className="bq-home-stats__tag bq-home-stats__tag--filled">Figma library</span>
            <span className="bq-home-stats__tag bq-home-stats__tag--filled">Component states</span>
          </div>
        </div>

        <div className="bq-home-stats__content">
          <h3 className="bq-home-stats__title">Design and code stay aligned</h3>
          <p className="bq-home-stats__body">Shared foundations, design tokens, and Figma resources reduce the gap between mockups and implementation.</p>
        </div>
      </div>

      {/* ── Column 2: Multi-brand ── */}

      <div className="bq-home-stats__item">
        <div className="bq-home-stats__tag-group">
          <div className="bq-home-stats__tag-row">
            <span className="bq-home-stats__tag bq-home-stats__tag--outlined-brand">Brand themes</span>
            <span className="bq-home-stats__tag bq-home-stats__tag--outlined-brand">White-label</span>
          </div>

          <div className="bq-home-stats__tag-row">
            <span className="bq-home-stats__tag bq-home-stats__tag--outlined-brand">CSS variables</span>
            <span className="bq-home-stats__tag bq-home-stats__tag--outlined-brand">Customization</span>
          </div>
        </div>

        <div className="bq-home-stats__content">
          <h3 className="bq-home-stats__title">Adapt to many brands</h3>
          <p className="bq-home-stats__body">Adapt shared components to different brands without forking or duplicating the UI layer.</p>
        </div>
      </div>

      {/* ── Column 3: Accessibility ── */}

      <div className="bq-home-stats__item">
        <div className="bq-home-stats__tag-group">
          <div className="bq-home-stats__tag-row">
            <span className="bq-home-stats__tag bq-home-stats__tag--outlined-dark">WCAG AA</span>
            <span className="bq-home-stats__tag bq-home-stats__tag--outlined-dark">Keyboard support</span>
          </div>

          <div className="bq-home-stats__tag-row">
            <span className="bq-home-stats__tag bq-home-stats__tag--outlined-dark">Content guidelines</span>
            <span className="bq-home-stats__tag bq-home-stats__tag--outlined-dark">Focus states</span>
          </div>
        </div>

        <div className="bq-home-stats__content">
          <h3 className="bq-home-stats__title">Build with accessibility in mind</h3>
          <p className="bq-home-stats__body">Build with components designed around accessibility standards, predictable interactions, and inclusive usability patterns.</p>
        </div>
      </div>
    </div>
  </div>
</div>

<div className="px-6 py-14 bq-home-comparison">
  <div className="max-w-6xl mx-auto">
    <p className="text-xs font-bold uppercase tracking-widest mb-2 mt-0 flex items-center gap-2 bq-home-section__eyebrow">
      <Icon icon="scale-balanced" />

      <span>Comparison</span>
    </p>

    <h2 className="text-3xl lg:text-4xl font-bold tracking-tight leading-tight mb-3 bq-home-section__heading">
      BEEQ is more than components
    </h2>

    <p className="text-base mb-10 bq-home-section__copy">
      What you get out of the box compared to off-the-shelf component libraries.
    </p>

    <div className="rounded-2xl overflow-hidden border bq-home-comparison__table">
      <div className="grid grid-cols-3">
        <div className="bq-home-comparison__heading bq-home-comparison__heading--feature">Use case</div>
        <div className="bq-home-comparison__heading bq-home-comparison__heading--beeq">BEEQ is a good fit when...</div>
        <div className="bq-home-comparison__heading">A generic UI library may be good when...</div>
      </div>

      {[
                  ["Multi-brand support",             "You need white-label themes and shared tokens",      "You only need one visual style"],
                  ["Cross-framework teams",           "Teams use React, Angular, Vue or HTML",              "Your product is locked to one framework"],
                  ["Design-dev alignment",            "You need Figma + code + docs aligned",               "You only need coded components"],
                  ["Long term product consistency",   "You want governance and shared standards",           "You need a quick prototype"],
                  ["Client work",                     "You need to adapt to client branding",               "You are building an internal tool"],
                ].map(([feature, beeq, other]) => (
                  <div key={feature} className="grid grid-cols-3 bq-home-comparison__row">
                    <div className="bq-home-comparison__cell bq-home-comparison__cell--feature">{feature}</div>
                    <div className="bq-home-comparison__cell bq-home-comparison__cell--beeq">{beeq}</div>
                    <div className="bq-home-comparison__cell">{other}</div>
                  </div>
                ))}
    </div>
  </div>
</div>

<div className="px-6 py-14 bq-home-resources bq-home-band bq-home-band--tinted">
  <div className="max-w-6xl mx-auto">
    <p className="text-xs font-bold uppercase tracking-widest mb-2 mt-0 flex items-center gap-2 bq-home-section__eyebrow">
      <Icon icon="compass" />

      <span>Resources</span>
    </p>

    <h2 className="text-3xl lg:text-4xl font-bold tracking-tight leading-tight mb-3 bq-home-section__heading">
      Docs, tools,<br />and community.
    </h2>

    <p className="text-base mb-10 bq-home-section__copy">
      Everything you need to ship, all in one place.
    </p>

    <CardGroup cols={3}>
      <Card title="Documentation" icon="book-open" href="/getting-started/introduction">
        Guides, API reference, and recipes to get you up and running fast.
      </Card>

      <Card title="Storybook" icon="book-bookmark" href="https://storybook.beeq.design">
        Interactive component explorer to preview and prototype with BEEQ.
      </Card>

      <Card title="Component Library" icon="puzzle-piece" href="/components">
        Browse all 37 production-ready components with live examples.
      </Card>

      <Card title="Theming" icon="palette" href="/theming/themes-and-modes">
        Learn how to fully customize BEEQ with CSS tokens for your brand.
      </Card>

      <Card title="GitHub" icon="github" href="https://github.com/Endava/BEEQ">
        Source code, issues, and discussions. Open source, open development.
      </Card>

      <Card title="Changelog" icon="clock-rotate-left" href="/releases/changelog">
        Stay up to date with what's new in every release.
      </Card>
    </CardGroup>
  </div>
</div>
