summaryrefslogtreecommitdiffstats
path: root/src/ui/objects/Divider.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/objects/Divider.tsx')
-rw-r--r--src/ui/objects/Divider.tsx51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/ui/objects/Divider.tsx b/src/ui/objects/Divider.tsx
new file mode 100644
index 0000000..8f7efcd
--- /dev/null
+++ b/src/ui/objects/Divider.tsx
@@ -0,0 +1,51 @@
1import type { HTMLAttributes, HTMLTag } from "corvos/plugins/jsx.ts";
2
3export type Props = HTMLAttributes<"div" | "hr"> & {
4 "level"?: "strong" | "medium" | "quiet" | "faint";
5 "variant"?: "static-black" | "static-white";
6 "vertical"?: boolean | "dot";
7 "label-as"?: HTMLTag;
8 "children"?: JSX.Element;
9};
10
11export const Divider = ({
12 children,
13 level = "strong",
14 variant,
15 vertical,
16 "label-as": Label = "span",
17 class: cls,
18 ...props
19}: Props) =>
20 children ? (
21 <div
22 class:list={[
23 "o-divider",
24 "o-divider--labelled",
25 `o-divider--${level}`,
26 {
27 [`o-divider--${variant}`]: variant,
28 "o-divider--vertical": vertical === true,
29 "o-divider--dot": vertical === "dot",
30 },
31 cls,
32 ]}
33 {...props}
34 >
35 <Label class="o-divider__label u-mbs-0">{children}</Label>
36 </div>
37 ) : (
38 <hr
39 class:list={[
40 "o-divider",
41 `o-divider--${level}`,
42 {
43 [`o-divider--${variant}`]: variant,
44 "o-divider--vertical": vertical === true,
45 "o-divider--dot": vertical === "dot",
46 },
47 cls,
48 ]}
49 {...props}
50 />
51 );