Layout scaffolding for Web apps.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

51 lines
1.1 KiB

  1. // TODO figure out how to refactor left sidebar with menu widget
  2. import * as React from 'react';
  3. import {LayoutArgs, layouts, Span} from '@tesseract-design/viewfinder-base';
  4. export type LeftSidebarWithMenuBaseProps = Omit<React.HTMLProps<HTMLDivElement>, 'span'> & {
  5. span?: Span,
  6. }
  7. export const LeftSidebarWithMenuBase = React.forwardRef<HTMLDivElement, LeftSidebarWithMenuBaseProps>(({
  8. children,
  9. span = Span.WIDE,
  10. open = false,
  11. ...etcProps
  12. }, ref) => {
  13. const args = React.useMemo<LayoutArgs>(() => ({
  14. span,
  15. mainSidebarOpen: open,
  16. }), [
  17. span,
  18. open,
  19. ]);
  20. return (
  21. <div
  22. className={layouts.LeftSidebarWithMenu.SidebarBase()}
  23. {...etcProps}
  24. ref={ref}
  25. >
  26. <div
  27. className={layouts.LeftSidebarWithMenu.SidebarMenu()}
  28. >
  29. <div
  30. className={layouts.LeftSidebarWithMenu.SidebarMenuSize()}
  31. >
  32. // TODO
  33. </div>
  34. </div>
  35. <div
  36. className={layouts.LeftSidebarWithMenu.SidebarMain(args)}
  37. >
  38. <div
  39. className={layouts.LeftSidebarWithMenu.SidebarMainOverflow()}
  40. >
  41. {children}
  42. </div>
  43. </div>
  44. </div>
  45. )
  46. });