Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions docs/assets/scripts/docs.js
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,22 @@ const colorToast = (col) => {
toast.classList.add(col);
}

// Component: Tab
const tabList = document.querySelector('#tab-demo > nav > ol');
const tabPanels = document.querySelectorAll('#tab-demo > section > div');
const tabs = tabList
? [...tabList.querySelectorAll('li')].filter(t => !t.classList.contains('disabled'))
: [];
tabs.forEach((tab, i) => {
tab.addEventListener('click', () => {
tabs.forEach(t => t.classList.remove('active'))
tabPanels.forEach(p => p.classList.remove('active'));
const panel = [...tabPanels][i];
panel.classList.add('active');
tab.classList.add('active');
});
});

// Ready? Let's go!
(() => {
// Handle initial theme mode
Expand Down
28 changes: 28 additions & 0 deletions docs/pages/components/badge.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,3 +65,31 @@ The `badge` class also works on button elements.
<button class="badge neutral pulse" data-badge="99+">Inbox</button>
<button class="badge" data-badge="new">CSS4 Spec</button>
```

### Tab badges

The `badge` class also works on tab navigation list elements.

<div class="demo">
<div class="tab-group">
<nav>
<ol>
<li class="active badge" data-badge="11k">Sales</li>
<li class="badge-neutral" data-badge="23">Quotes</li>
<li>Invoices</li>
</ol>
</nav>
</div>
</div>

```html
<div class="tab-group">
<nav>
<ol>
<li class="active badge" data-badge="11k">Sales</li>
<li class="badge-neutral" data-badge="23">Quotes</li>
<li>Invoices</li>
</ol>
</nav>
</div>
```
18 changes: 18 additions & 0 deletions docs/pages/components/button.md
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,24 @@ Use the `busy` class to replace the text of a button with a <a href="/components
<button class="busy ghost">Load settings</button>
```

### Button badges

The `badge` class can be used to show [badges](/components/badge) on buttons.

<div class="demo flex flex-wrap gap-8">
<button class="badge hollow neutral">Inbox</button>
<button class="badge hollow" data-badge="12">Inbox</button>
<button class="badge neutral pulse" data-badge="99+">Inbox</button>
<button class="badge" data-badge="new">CSS4 Spec</button>
</div>

```html
<button class="badge hollow neutral">Inbox</button>
<button class="badge hollow" data-badge="12">Inbox</button>
<button class="badge neutral pulse" data-badge="99+">Inbox</button>
<button class="badge" data-badge="new">CSS4 Spec</button>
```

### Button group

Use the `button-group` class on an element containing buttons, to group buttons to a single logical unit.
Expand Down
208 changes: 208 additions & 0 deletions docs/pages/components/tab.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,208 @@
---
title: 'Components: Tab - Sloth.css'
description: Navigation for quickly switching between content divs
tags: variants accent neutral success alert size outline pill
---

## Tab

A tab navigation lets users quickly switch between content divs.

<p class="callout accent">
Sloth.css is a CSS only library and does not ship any JavaScript. To handle appearance, and manual or autmatic closing of toast messages, you'll need to implement that with JavaScript.
</p>

### Basic tab navigation

Use the `tab-group` class on a parent element containing a `<nav>` with an ordered list for the tab bar and a `<section>` with one or more `<div>` elements for the actual content. The `disabled` class can be used to style a tab inactive.

<div class="demo">
<div class="tab-group" id="tab-demo">
<nav>
<ol>
<li class="active">Sales</li>
<li>Quotes</li>
<li>Invoices</li>
<li class="disabled">Archive</li>
</ol>
</nav>
<section>
<div class="active">
<h4>Sales numbers</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc viverra viverra nisl, vel maximus turpis ornare a. Ut scelerisque lectus sed odio dictum scelerisque vitae quis nisi. Nulla facilisi. Phasellus vehicula convallis nisl, id suscipit dui semper at. In eu iaculis lorem. In vehicula sed mauris et suscipit. Vivamus pellentesque non massa sit amet ornare. Integer placerat est vitae nisl molestie, eget rhoncus erat vulputate. Proin ornare massa eget bibendum faucibus.</p>
</div>
<div>
<h4>Quotes created</h4>
<p>In eu iaculis lorem. In vehicula sed mauris et suscipit. Vivamus pellentesque non massa sit amet ornare. Integer placerat est vitae nisl molestie, eget rhoncus erat vulputate. Proin ornare massa eget bibendum faucibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc viverra viverra nisl, vel maximus turpis ornare a. Ut scelerisque lectus sed odio dictum scelerisque vitae quis nisi. Nulla facilisi. Phasellus vehicula convallis nisl, id suscipit dui semper at.</p>
</div>
<div>
<h4>Invoices sent</h4>
<p>Nulla facilisi. Phasellus vehicula convallis nisl, id suscipit dui semper at. In eu iaculis lorem. In vehicula sed mauris et suscipit. Vivamus pellentesque non massa sit amet ornare. Integer placerat est vitae nisl molestie, eget rhoncus erat vulputate. Proin ornare massa eget bibendum faucibus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc viverra viverra nisl, vel maximus turpis ornare a. Ut scelerisque lectus sed odio dictum scelerisque vitae quis nisi.</p>
</div>
</section>
</div>
</div>

```html
<div class="tab-group">
<nav>
<ol>
<li class="active">Sales</li>
<li>Quotes</li>
<li>Invoices</li>
<li class="disabled">Archive</li>
</ol>
</nav>
<section>
<div class="active">
<h4>Sales numbers</h4>
<p>...</p>
</div>
<div>
<h4>Quotes created</h4>
<p>...</p>
</div>
<div>
<h4>Invoices sent</h4>
<p>...</p>
</div>
</section>
</div>
```

### Badge

The `badge` class can be used to show [badges](/components/badge) on tab list elements.

<div class="demo">
<div class="tab-group">
<nav>
<ol>
<li class="active badge" data-badge="11k">Sales</li>
<li class="badge-neutral" data-badge="23">Quotes</li>
<li>Invoices</li>
</ol>
</nav>
</div>
</div>

```html
<div class="tab-group">
<nav>
<ol>
<li class="active badge" data-badge="11k">Sales</li>
<li class="badge-neutral" data-badge="23">Quotes</li>
<li>Invoices</li>
</ol>
</nav>
</div>
```

### Position

Per default the tab bar is on top of the content. The `bottom`, `left` or `right` classes can be used on the `<nav>` element to position the tab bar accordingly.

<div class="demo">
<div class="tab-group">
<nav class="bottom">
<ol>
<li class="active">Sales</li>
<li>Quotes</li>
<li>Invoices</li>
</ol>
</nav>
<section>
<div class="active">
<h4>Tab bar positioned at the bottom</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc viverra viverra nisl, vel maximus turpis ornare a. Ut scelerisque lectus sed odio dictum scelerisque vitae quis nisi. Nulla facilisi. Phasellus vehicula convallis nisl, id suscipit dui semper at. In eu iaculis lorem. In vehicula sed mauris et suscipit. Vivamus pellentesque non massa sit amet ornare. Integer placerat est vitae nisl molestie, eget rhoncus erat vulputate. Proin ornare massa eget bibendum faucibus.</p>
</div>
</section>
</div>
</div>

```html
<div class="tab-group">
<nav class="bottom">
<ol>
<li class="active">Sales</li>
<li>Quotes</li>
<li>Invoices</li>
</ol>
</nav>
<section>
<div class="active">...</div>
<div>...</div>
<div>...</div>
</section>
</div>
```

<div class="demo">
<div class="tab-group">
<nav class="left">
<ol>
<li class="active">Sales</li>
<li>Quotes</li>
<li>Invoices</li>
</ol>
</nav>
<section>
<div class="active">
<h4>Tab bar positioned at the left</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc viverra viverra nisl, vel maximus turpis ornare a. Ut scelerisque lectus sed odio dictum scelerisque vitae quis nisi. Nulla facilisi. Phasellus vehicula convallis nisl, id suscipit dui semper at. In eu iaculis lorem. In vehicula sed mauris et suscipit. Vivamus pellentesque non massa sit amet ornare. Integer placerat est vitae nisl molestie, eget rhoncus erat vulputate. Proin ornare massa eget bibendum faucibus.</p>
</div>
</section>
</div>
</div>

```html
<div class="tab-group">
<nav class="left">
<ol>
<li class="active">Sales</li>
<li>Quotes</li>
<li>Invoices</li>
</ol>
</nav>
<section>
<div class="active">...</div>
<div>...</div>
<div>...</div>
</section>
</div>
```

<div class="demo">
<div class="tab-group">
<nav class="right">
<ol>
<li class="active">Sales</li>
<li>Quotes</li>
<li>Invoices</li>
</ol>
</nav>
<section>
<div class="active">
<h4>Tab bar positioned at the left</h4>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc viverra viverra nisl, vel maximus turpis ornare a. Ut scelerisque lectus sed odio dictum scelerisque vitae quis nisi. Nulla facilisi. Phasellus vehicula convallis nisl, id suscipit dui semper at. In eu iaculis lorem. In vehicula sed mauris et suscipit. Vivamus pellentesque non massa sit amet ornare. Integer placerat est vitae nisl molestie, eget rhoncus erat vulputate. Proin ornare massa eget bibendum faucibus.</p>
</div>
</section>
</div>
</div>

```html
<div class="tab-group">
<nav class="left">
<ol>
<li class="active">Sales</li>
<li>Quotes</li>
<li>Invoices</li>
</ol>
</nav>
<section>
<div class="active">...</div>
<div>...</div>
<div>...</div>
</section>
</div>
```
2 changes: 1 addition & 1 deletion src/_components.css
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
@import 'components/_separator.css';
@import 'components/_sequence.css';
@import 'components/_state.css';
/* @import 'components/_tab.css'; */
@import 'components/_tab.css';
@import 'components/_tag.css';
@import 'components/_toast.css';
@import 'components/_tooltip.css';
Loading