aboutsummaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/components/Stack.tsx
diff options
context:
space:
mode:
authorkj_sh6042026-03-15 16:19:35 -0400
committerkj_sh6042026-03-15 16:19:35 -0400
commit6ec259a0e71174651bae95d4628138bf6fd68742 (patch)
tree5e33c6a5ec091ecabfcb257fdc7b6a88ed8754ac /packages/excalidraw/components/Stack.tsx
parent16c8578b15c727f22921f8a80a56ee4d4e7f2272 (diff)
refactor: packages/
Diffstat (limited to 'packages/excalidraw/components/Stack.tsx')
-rw-r--r--packages/excalidraw/components/Stack.tsx62
1 files changed, 62 insertions, 0 deletions
diff --git a/packages/excalidraw/components/Stack.tsx b/packages/excalidraw/components/Stack.tsx
new file mode 100644
index 0000000..f45d471
--- /dev/null
+++ b/packages/excalidraw/components/Stack.tsx
@@ -0,0 +1,62 @@
+import "./Stack.scss";
+
+import React, { forwardRef } from "react";
+import clsx from "clsx";
+
+type StackProps = {
+ children: React.ReactNode;
+ gap?: number;
+ align?: "start" | "center" | "end" | "baseline";
+ justifyContent?: "center" | "space-around" | "space-between";
+ className?: string | boolean;
+ style?: React.CSSProperties;
+};
+
+const RowStack = forwardRef(
+ (
+ { children, gap, align, justifyContent, className, style }: StackProps,
+ ref: React.ForwardedRef<HTMLDivElement>,
+ ) => {
+ return (
+ <div
+ className={clsx("Stack Stack_horizontal", className)}
+ style={{
+ "--gap": gap,
+ alignItems: align,
+ justifyContent,
+ ...style,
+ }}
+ ref={ref}
+ >
+ {children}
+ </div>
+ );
+ },
+);
+
+const ColStack = forwardRef(
+ (
+ { children, gap, align, justifyContent, className, style }: StackProps,
+ ref: React.ForwardedRef<HTMLDivElement>,
+ ) => {
+ return (
+ <div
+ className={clsx("Stack Stack_vertical", className)}
+ style={{
+ "--gap": gap,
+ justifyItems: align,
+ justifyContent,
+ ...style,
+ }}
+ ref={ref}
+ >
+ {children}
+ </div>
+ );
+ },
+);
+
+export default {
+ Row: RowStack,
+ Col: ColStack,
+};