Layout scaffolding for Web apps.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 

122 lignes
3.1 KiB

  1. import * as React from 'react';
  2. export interface RootProps extends React.HTMLProps<HTMLDivElement> {
  3. sidebarBaseWidget?: React.ReactNode;
  4. topBarWidget?: React.ReactNode;
  5. };
  6. export const Root = React.forwardRef<HTMLDivElement, RootProps>(({
  7. children,
  8. topBarWidget,
  9. sidebarBaseWidget,
  10. ...etcProps
  11. }, ref) => (
  12. <>
  13. {topBarWidget}
  14. {sidebarBaseWidget}
  15. <div
  16. {...etcProps}
  17. ref={ref}
  18. data-viewfinder="main"
  19. className="box-border pb-menu md:pb-0 md:pl-[calc(50%-(var(--base-width)*0.5))]"
  20. >
  21. {children}
  22. </div>
  23. </>
  24. ));
  25. export interface ContentContainerProps extends React.HTMLProps<HTMLDivElement> {}
  26. export const MainContentContainer = React.forwardRef<HTMLDivElement, ContentContainerProps>(({
  27. children,
  28. }, ref) => (
  29. <div
  30. className="px-8 box-border w-full max-w-[calc(var(--base-width)*2)] mx-auto md:ml-0"
  31. ref={ref}
  32. >
  33. {children}
  34. </div>
  35. ));
  36. MainContentContainer.displayName = 'MainContentContainer'
  37. export interface SidebarMainContainerProps extends React.HTMLProps<HTMLDivElement> {}
  38. export const SidebarContentContainer = React.forwardRef<HTMLDivElement, SidebarMainContainerProps>(({
  39. children,
  40. ...etcProps
  41. }, ref) => (
  42. <div
  43. {...etcProps}
  44. className="px-8 box-border w-full max-w-[calc(var(--base-width)*2)] mx-auto md:max-w-none"
  45. ref={ref}
  46. >
  47. {children}
  48. </div>
  49. ));
  50. SidebarContentContainer.displayName = 'SidebarMainContainer';
  51. export interface SidebarMenuItemIconProps extends React.HTMLProps<HTMLSpanElement> {}
  52. export const SidebarMenuItemIcon = React.forwardRef<HTMLSpanElement, SidebarMenuItemIconProps>(({
  53. children,
  54. ...etcProps
  55. }, ref) => (
  56. <span
  57. {...etcProps}
  58. className="block md:w-menu md:h-menu md:flex md:justify-center md:items-center"
  59. ref={ref}
  60. >
  61. {children}
  62. </span>
  63. ));
  64. SidebarMenuItemIcon.displayName = 'SidebarMenuItemIcon';
  65. export const SidebarMenuContainer = React.forwardRef<HTMLSpanElement, SidebarMainContainerProps>(({
  66. children,
  67. ...etcProps
  68. }, ref) => (
  69. <span
  70. {...etcProps}
  71. className="box-border flex flex-col justify-center items-center w-full text-center md:justify-start md:ml-auto md:text-left md:w-[var(--base-width)] md:flex-row"
  72. ref={ref}
  73. >
  74. {children}
  75. </span>
  76. ));
  77. SidebarMenuContainer.displayName = 'SidebarMenuContainer';
  78. export const MoreSidebarMenuItemIcon = React.forwardRef<HTMLSpanElement, SidebarMenuItemIconProps>(({
  79. children,
  80. ...etcProps
  81. }, ref) => (
  82. <span
  83. {...etcProps}
  84. className="block mr-4 md:w-menu md:h-menu md:flex md:justify-center md:items-center md:mr-0"
  85. ref={ref}
  86. >
  87. {children}
  88. </span>
  89. ));
  90. MoreSidebarMenuItemIcon.displayName = 'MoreSidebarMenuItemIcon';
  91. export const MoreSidebarMenuContainer = React.forwardRef<HTMLSpanElement, SidebarMainContainerProps>(({
  92. children,
  93. ...etcProps
  94. }, ref) => (
  95. <span
  96. {...etcProps}
  97. className="flex justify-start items-center w-[calc(var(--base-width)*2)] mx-auto px-8 text-left box-border md:mr-0 md:w-[var(--base-width)] md:pl-0"
  98. ref={ref}
  99. >
  100. {children}
  101. </span>
  102. ));
  103. MoreSidebarMenuContainer.displayName = 'MoreSidebarMenuContainer';