7.1.483-stable

<gui-layout />

Leveraging web components composition, gui-layout offers you a pre made default responsive layout that you can customize.

Basic Example

Show in new tab

Small devices layout

Source Code

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="/path/to/greycat.css" />
    <script src="/path/to/greycat.web.js"></script>
    <title>GreyCat Layout Example</title>
    <style>
      html,
      body {
        min-height: 100%;
        height: 100%;
        padding: 0;
        margin: 0;
      }
    </style>
  </head>

  <body>
    <gui-layout>
      <div slot="header">header</div>
      <div slot="navigation-header">navigation-header</div>
      <div slot="navigation">navigation</div>
      <div slot="navigation-footer">navigation-footer</div>
      <div slot="main-header">main-header</div>
      <div slot="main">main</div>
      <div slot="main-footer">main-footer</div>
      <div slot="aside">aside</div>
      <div slot="footer">footer</div>
    </gui-layout>
    <script>
      gc.sdk.init();
    </script>
  </body>
</html>

Complex Example

Show in new tab

Source Code

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <link rel="stylesheet" href="/path/to/greycat.css" />
    <script src="/path/to/greycat.web.js"></script>
    <title>Document</title>
    <style>
      html,
      body {
        padding: 0;
        margin: 0;
      }

      .logo {
        height: 45px;
        width: 45px;
      }
    </style>
  </head>

  <body>
    <script>
      function currentTheme() {
        return document.documentElement.classList.contains('sl-theme-light') ? 'light' : 'dark';
      }
      function toggleTheme() {
        const bodyClass = document.documentElement.classList;
        if (currentTheme() === 'dark') {
          bodyClass.remove('sl-theme-dark');
          bodyClass.add('sl-theme-light');
        } else {
          bodyClass.remove('sl-theme-light');
          bodyClass.add('sl-theme-dark');
        }
      }
    </script>
    <gui-layout breakpoint="{920}">
      <a slot="header" href="/">
        <img class="logo" src="/path/to/logo.svg" />
      </a>
      <sl-button slot="header" variant="text" onclick="toggleTheme()"> Light / Dark </sl-button>

      <div slot="navigation" className="list">
        <sl-tree selection="leaf">
          <sl-tree-item>
            Getting Started
            <sl-tree-item>Products</sl-tree-item>
            <sl-tree-item>Installation</sl-tree-item>
            <sl-tree-item>Hello World</sl-tree-item>
          </sl-tree-item>
          <sl-divider />
          <sl-tree-item>
            Concepts
            <sl-tree-item>Syntax</sl-tree-item>
            <sl-tree-item>Control-Flow</sl-tree-item>
            <sl-tree-item>Types</sl-tree-item>
            <sl-tree-item>Nodes</sl-tree-item>
            <sl-tree-item>Ownership</sl-tree-item>
          </sl-tree-item>
          <sl-divider />
          <sl-tree-item>
            Project
            <sl-tree-item>Module</sl-tree-item>
            <sl-tree-item>Test</sl-tree-item>
            <sl-tree-item>Server</sl-tree-item>
            <sl-tree-item>IDE</sl-tree-item>
            <sl-tree-item>Explorer</sl-tree-item>
          </sl-tree-item>
        </sl-tree>
      </div>

      <div slot="main-header" className="bottom-shadow">
        <sl-breadcrumb>
          <sl-breadcrumb-item>Catalog</sl-breadcrumb-item>
          <sl-breadcrumb-item>Clothing</sl-breadcrumb-item>
          <sl-breadcrumb-item>Women's</sl-breadcrumb-item>
          <sl-breadcrumb-item>Shirts &amp; Tops</sl-breadcrumb-item>
        </sl-breadcrumb>
      </div>
      <div slot="main">
        <h1>Lorem Ipsum Page</h1>

        <p>
          Lorem ipsum dolor sit amet, <a href="#">consectetur adipiscing elit</a>. Sed do eiusmod
          tempor incididunt ut labore et dolore magna aliqua.
        </p>

        <p>
          Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
          commodo consequat. <strong>Duis aute irure dolor</strong> in reprehenderit in voluptate
          velit esse cillum dolore eu fugiat nulla pariatur.
        </p>

        <p>
          <em>Excepteur sint occaecat cupidatat non proident</em>, sunt in culpa qui officia
          deserunt mollit anim id est laborum.
        </p>

        <h2>Example List</h2>
        <ul>
          <li>Item 1: Lorem ipsum dolor</li>
          <li>Item 2: Sed ut perspiciatis unde</li>
          <li>Item 3: Nemo enim ipsam voluptatem</li>
        </ul>

        <p>
          At vero eos et accusamus et <a href="https://example.com">iusto odio dignissimos</a>{' '}
          ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores.
        </p>

        <ol>
          <li>First Step: Lorem ipsum dolor sit amet.</li>
          <li>Second Step: Consectetur adipiscing elit.</li>
          <li>Third Step: Ut enim ad minim veniam.</li>
        </ol>

        <p>
          Similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum
          fuga.
        </p>

        <h3>Another Section</h3>
        <p>
          Lorem ipsum dolor sit amet, consectetur <a href="#">adipiscing elit</a>. Integer nec odio.
          Praesent libero. Sed cursus ante dapibus diam.
        </p>

        <p>
          Phasellus volutpat metus eget egestas sodales. Sed pulvinar purus nec eros tincidunt, a
          dignissim eros vehicula.
        </p>

        <p>
          Donec ut nisi <a href="https://another-link.com">non metus ultrices tincidunt</a> id a
          nulla. Vivamus eget urna eget ligula aliquet fringilla.
        </p>

        <h4>Subheading Example</h4>
        <p>
          Etiam rhoncus, justo vel porttitor placerat, nisi nisi efficitur enim, vitae mollis nunc
          leo in lectus.
        </p>

        <ul>
          <li>Fusce tincidunt dui vel tellus bibendum.</li>
          <li>Aenean nec eros aliquet, sollicitudin odio id, faucibus mauris.</li>
          <li>Nulla facilisi. Maecenas in nibh sit amet nisi volutpat posuere.</li>
        </ul>

        <p>Morbi ac turpis eu ligula commodo posuere ac et risus. Suspendisse potenti.</p>

        <p>
          Vivamus consequat, <a href="#">arcu vel viverra dictum</a>, magna quam ultricies erat, vel
          tristique ipsum elit in justo.
        </p>

        <p>
          Pellentesque tincidunt, erat a <strong>venenatis fermentum</strong>, lectus sapien
          efficitur justo, sit amet ullamcorper sapien leo a mi.
        </p>

        <h2>Final Section</h2>
        <p>
          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec nec lorem ut erat venenatis
          consectetur sit amet vel metus.
        </p>

        <p>
          Curabitur vel dui eget lorem scelerisque auctor in et lorem. Integer tempor nisi quis
          lacus tempor, nec interdum sapien ultricies.
        </p>

        <p>
          Nam auctor velit sit amet est tincidunt, nec cursus orci pellentesque. Mauris non nisi
          vitae sapien facilisis porttitor sed ac sapien.
        </p>

        <p>
          Proin scelerisque magna in <a href="https://final-link.com">magna scelerisque</a>{' '}
          scelerisque.
        </p>

        <p>
          Donec vitae nisi auctor, suscipit magna sed, vulputate purus. Suspendisse efficitur erat
          quis mauris cursus accumsan.
        </p>
      </div>

      <div slot="aside">
        <sl-tree>
          <sl-tree-item expanded>
            Deciduous
            <sl-tree-item>Birch</sl-tree-item>
            <sl-tree-item expanded>
              Maple
              <sl-tree-item>Field maple</sl-tree-item>
              <sl-tree-item>Red maple</sl-tree-item>
              <sl-tree-item>Sugar maple</sl-tree-item>
            </sl-tree-item>
            <sl-tree-item>Oak</sl-tree-item>
          </sl-tree-item>

          <sl-tree-item expanded>
            Coniferous
            <sl-tree-item>Cedar</sl-tree-item>
            <sl-tree-item>Pine</sl-tree-item>
            <sl-tree-item>Spruce</sl-tree-item>
          </sl-tree-item>

          <sl-tree-item expanded>
            Non-trees
            <sl-tree-item>Bamboo</sl-tree-item>
            <sl-tree-item>Cactus</sl-tree-item>
            <sl-tree-item>Fern</sl-tree-item>
          </sl-tree-item>
        </sl-tree>
      </div>

      <div slot="footer" className="footer">
        <div style="text-align: center; font-size: 0.9em; color: var(--muted-color);">
          <p>
              &copy; 2025&nbsp;
              <a href="https://datathings.com" target="_blank">DataThings</a>
              - Powered by&nbsp;
              <a href="https://greycat.io" target="_blank">GreyCat</a>
          </p>
          <p>
              <a href="https://www.linkedin.com/company/datathings" target="_blank">LinkedIn</a>
              &nbsp;-&nbsp;
              <a href="https://hub.datathings.com/" target="_blank">GitLab</a>
          </p>
        </div>
      </div>
    </gui-layout>
    <script>
      gc.sdk.init();
    </script>
  </body>
</html>