aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/pages/timeline/TimelineLine.tsx
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2023-07-30 23:47:53 +0800
committercrupest <crupest@outlook.com>2023-07-30 23:47:53 +0800
commit538d6830a0022b49b99695095d85e567b0c86e71 (patch)
treea0c4d164b05d03f636d603b28f77ca881c16ef10 /FrontEnd/src/pages/timeline/TimelineLine.tsx
parenta148f11c193d35ba489f887ed393aedf58a1c714 (diff)
downloadtimeline-538d6830a0022b49b99695095d85e567b0c86e71.tar.gz
timeline-538d6830a0022b49b99695095d85e567b0c86e71.tar.bz2
timeline-538d6830a0022b49b99695095d85e567b0c86e71.zip
...
Diffstat (limited to 'FrontEnd/src/pages/timeline/TimelineLine.tsx')
-rw-r--r--FrontEnd/src/pages/timeline/TimelineLine.tsx51
1 files changed, 51 insertions, 0 deletions
diff --git a/FrontEnd/src/pages/timeline/TimelineLine.tsx b/FrontEnd/src/pages/timeline/TimelineLine.tsx
new file mode 100644
index 00000000..4a87e6e0
--- /dev/null
+++ b/FrontEnd/src/pages/timeline/TimelineLine.tsx
@@ -0,0 +1,51 @@
+import * as React from "react";
+import classnames from "classnames";
+
+export interface TimelineLineProps {
+ current?: boolean;
+ startSegmentLength?: string | number;
+ center: "node" | "loading" | "none";
+ className?: string;
+ style?: React.CSSProperties;
+}
+
+const TimelineLine: React.FC<TimelineLineProps> = ({
+ startSegmentLength,
+ center,
+ current,
+ className,
+ style,
+}) => {
+ return (
+ <div
+ className={classnames(
+ "timeline-line",
+ current && "current",
+ center === "loading" && "loading",
+ className
+ )}
+ style={style}
+ >
+ <div className="segment start" style={{ height: startSegmentLength }} />
+ {center !== "none" ? (
+ <div className="node-container">
+ <div className="node"></div>
+ {center === "loading" ? (
+ <svg className="node-loading-edge" viewBox="0 0 100 100">
+ <path
+ d="M 50,10 A 40 40 45 0 1 78.28,21.72"
+ stroke="currentcolor"
+ strokeLinecap="square"
+ strokeWidth="8"
+ />
+ </svg>
+ ) : null}
+ </div>
+ ) : null}
+ {center !== "loading" ? <div className="segment end"></div> : null}
+ {current && <div className="segment current-end" />}
+ </div>
+ );
+};
+
+export default TimelineLine;