header

A simple flex header. Compose it with elastic() and spacer() from layout to arrange content however you like.

Basic Header

<tosi-header>
  <h2 class="header-part">My App</h2>
</tosi-header>
.header-part {
  color: white;
  margin: 0;
  line-height: 32px;
}

Header with Menu

Use elastic() to push the menu to the right:

import { elements } from 'tosijs'
import { tosiHeader, tosiMenu, elastic, icons } from 'tosijs-ui'

const menu = tosiMenu({ class: 'menu-demo' }, icons.moreVertical())
menu.menuItems = [
  { caption: 'About', tooltip: 'Learn more about this app', action() { alert('About!') } },
  { caption: 'Settings', icon: 'settings', tooltip: 'Appearance options', menuItems: [
    { caption: 'Dark Mode' },
    { caption: 'High Contrast' },
  ]},
]

preview.append(
  tosiHeader(
    { class: 'menu-demo' },
    elements.h2({ class: 'menu-demo' }, 'Demo'),
    elastic(),
    menu,
  )
)
.menu-demo * {
  color: white;
  margin: 0;
  --text-color: white;
  --button-bg: transparent;
}
.menu-demo button:hover {
  background: #fff4;
}

Header with Links

Use elastic() to push <tosi-header-links> to the right:

import { elements } from 'tosijs'
import { tosiHeader, tosiHeaderLinks, elastic } from 'tosijs-ui'

preview.append(
  tosiHeader(
    { class: 'links-demo' },
    elements.h2({ class: 'links-demo' }, 'My Project'),
    elastic(),
    tosiHeaderLinks({
      links: {
        github: 'https://github.com/example/project',
        npm: 'https://www.npmjs.com/package/example',
        discord: 'https://discord.gg/example',
      },
    })
  )
)
.links-demo {
  color: white;
  margin: 0;
}