summaryrefslogtreecommitdiffstats
path: root/packages/excalidraw/components/Section.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/Section.tsx
parent16c8578b15c727f22921f8a80a56ee4d4e7f2272 (diff)
refactor: packages/
Diffstat (limited to 'packages/excalidraw/components/Section.tsx')
-rw-r--r--packages/excalidraw/components/Section.tsx28
1 files changed, 28 insertions, 0 deletions
diff --git a/packages/excalidraw/components/Section.tsx b/packages/excalidraw/components/Section.tsx
new file mode 100644
index 0000000..8cd0aaa
--- /dev/null
+++ b/packages/excalidraw/components/Section.tsx
@@ -0,0 +1,28 @@
+import React from "react";
+import { t } from "../i18n";
+import { useExcalidrawContainer } from "./App";
+
+export const Section: React.FC<{
+ heading: "canvasActions" | "selectedShapeActions" | "shapes";
+ children?: React.ReactNode | ((heading: React.ReactNode) => React.ReactNode);
+ className?: string;
+}> = ({ heading, children, ...props }) => {
+ const { id } = useExcalidrawContainer();
+ const header = (
+ <h2 className="visually-hidden" id={`${id}-${heading}-title`}>
+ {t(`headings.${heading}`)}
+ </h2>
+ );
+ return (
+ <section {...props} aria-labelledby={`${id}-${heading}-title`}>
+ {typeof children === "function" ? (
+ children(header)
+ ) : (
+ <>
+ {header}
+ {children}
+ </>
+ )}
+ </section>
+ );
+};