2
0

AppTitle.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import React, { memo } from 'react';
  2. import Link from 'next/link';
  3. import { UncontrolledTooltip } from 'reactstrap';
  4. import { useAppTitle, useConfidential, useIsDefaultLogo } from '~/stores/context';
  5. import { SidebarBrandLogo } from '../SidebarBrandLogo';
  6. import styles from './AppTitle.module.scss';
  7. type Props = {
  8. className?: string,
  9. }
  10. const AppTitleSubstance = memo((props: Props): JSX.Element => {
  11. const { className } = props;
  12. const { data: isDefaultLogo } = useIsDefaultLogo();
  13. const { data: appTitle } = useAppTitle();
  14. const { data: confidential } = useConfidential();
  15. return (
  16. <div className={`${styles['grw-app-title']} ${className} d-flex d-edit-none`}>
  17. {/* Brand Logo */}
  18. <Link href="/" className="grw-logo d-block">
  19. <SidebarBrandLogo isDefaultLogo={isDefaultLogo} />
  20. </Link>
  21. <div className="flex-grow-1 d-flex align-items-center justify-content-between gap-3 overflow-hidden">
  22. <div id="grw-site-name" className="grw-site-name text-truncate">
  23. <Link href="/" className="fs-4">
  24. {appTitle}
  25. </Link>
  26. </div>
  27. </div>
  28. {!(confidential == null || confidential === '')
  29. && (
  30. <UncontrolledTooltip
  31. className="d-none d-sm-block confidential-tooltip"
  32. innerClassName="text-start"
  33. data-testid="confidential-tooltip"
  34. placement="top"
  35. target="grw-site-name"
  36. fade={false}
  37. >
  38. {confidential}
  39. </UncontrolledTooltip>
  40. )}
  41. </div>
  42. );
  43. });
  44. export const AppTitleOnSubnavigation = memo((): JSX.Element => {
  45. return <AppTitleSubstance className={`position-absolute ${styles['on-subnavigation']}`} />;
  46. });
  47. export const AppTitleOnSidebarHead = memo((): JSX.Element => {
  48. return <AppTitleSubstance className={`position-absolute z-1 ${styles['on-sidebar-head']}`} />;
  49. });