summaryrefslogtreecommitdiffstats
path: root/src/ui/objects/Tabbar.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/objects/Tabbar.tsx')
-rw-r--r--src/ui/objects/Tabbar.tsx43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/ui/objects/Tabbar.tsx b/src/ui/objects/Tabbar.tsx
new file mode 100644
index 0000000..58c58fa
--- /dev/null
+++ b/src/ui/objects/Tabbar.tsx
@@ -0,0 +1,43 @@
1import type { HTMLAttributes } from "corvos/plugins/jsx.ts";
2
3export type Props = HTMLAttributes<"nav"> & {
4 "variant"?: "accent";
5 "quiet"?: boolean;
6 "adapt"?: boolean;
7 "tabs-class"?: unknown;
8};
9
10export const Tabbar = ({
11 children,
12 variant,
13 quiet,
14 adapt,
15 "tabs-class": tabsClass,
16 class: cls,
17 ...props
18}: Props) => (
19 <nav
20 class:list={[
21 "o-tabbar",
22 {
23 [`o-tabbar--${variant}`]: variant,
24 "o-tabbar--quiet": quiet,
25 "o-tabbar--adapt": adapt,
26 },
27 "js-keyboard-nav",
28 cls,
29 ]}
30 data-keyboard-nav-item=".o-tabbar__tab"
31 data-keyboard-nav-mode="nav"
32 {...props}
33 >
34 <div
35 aria-label={props["aria-label"]}
36 aria-orientation="horizontal"
37 class:list={["o-tabbar__tabs", tabsClass]}
38 role="tablist"
39 >
40 {children}
41 </div>
42 </nav>
43);