first commit
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import React from "react";
|
||||
import clsx from "clsx";
|
||||
|
||||
export interface HexagramObj {
|
||||
change: boolean | null;
|
||||
yang: boolean;
|
||||
separate: boolean;
|
||||
}
|
||||
|
||||
function Hexagram(props: { list: HexagramObj[] }) {
|
||||
return (
|
||||
<div className="flex h-52 w-56 shrink-0 flex-col-reverse gap-1.5 overflow-hidden rounded-md border bg-secondary py-3 shadow-inner dark:border-0 dark:shadow-none sm:h-60 sm:w-72">
|
||||
{props.list.map((value, index) => {
|
||||
return (
|
||||
<div key={index} className="flex flex-col-reverse gap-1.5">
|
||||
{value.separate && <div className="h-0.5 sm:h-1" />}
|
||||
<Line change={value.change} yang={value.yang} />
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function Line(props: { change: boolean | null; yang: boolean }) {
|
||||
let changeYang = props.change && props.yang;
|
||||
const color = props.change ? "bg-red-400" : "bg-stone-400";
|
||||
return (
|
||||
<div className="flex h-[24px] w-full animate-[transform-x_0.3s_ease-out] items-center justify-center sm:h-[29px]">
|
||||
{props.yang ? (
|
||||
<div className={clsx("h-full w-4/5 sm:w-[83%]", color)}></div>
|
||||
) : (
|
||||
<div className="flex h-full w-4/5 justify-between sm:w-[83%]">
|
||||
<div className={clsx("h-full w-[46%]", color)}></div>
|
||||
<div className={clsx("h-full w-[46%]", color)}></div>
|
||||
</div>
|
||||
)}
|
||||
{props.change ? <Change changeYang={changeYang} /> : null}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
function Change(props: { changeYang: boolean | null }) {
|
||||
return (
|
||||
<div className="h-0 w-0">
|
||||
<div className="relative -right-1 -top-3">
|
||||
{props.changeYang ? (
|
||||
<span className="text-sm text-muted-foreground">○</span>
|
||||
) : (
|
||||
<span className="relative -right-0.5 text-sm text-muted-foreground">
|
||||
✕
|
||||
</span>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default Hexagram;
|
||||
Reference in New Issue
Block a user