Header.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /* eslint-disable react/destructuring-assignment */
  2. import { h, Fragment } from 'preact'
  3. import type { I18n } from '@uppy/utils/lib/Translator'
  4. import type { Body, Meta } from '@uppy/utils/lib/UppyFile'
  5. import type { UnknownProviderPluginState } from '@uppy/core/lib/Uppy'
  6. import User from './User.tsx'
  7. import Breadcrumbs from '../Breadcrumbs.tsx'
  8. import type ProviderView from './ProviderView.tsx'
  9. type HeaderProps<M extends Meta, B extends Body> = {
  10. showBreadcrumbs: boolean
  11. getFolder: ProviderView<M, B>['getFolder']
  12. breadcrumbs: UnknownProviderPluginState['breadcrumbs']
  13. pluginIcon: () => JSX.Element
  14. title: string
  15. logout: () => void
  16. username: string | undefined
  17. i18n: I18n
  18. }
  19. export default function Header<M extends Meta, B extends Body>(
  20. props: HeaderProps<M, B>,
  21. ): JSX.Element {
  22. return (
  23. <Fragment>
  24. {props.showBreadcrumbs && (
  25. <Breadcrumbs
  26. getFolder={props.getFolder}
  27. breadcrumbs={props.breadcrumbs}
  28. breadcrumbsIcon={props.pluginIcon && props.pluginIcon()}
  29. title={props.title}
  30. />
  31. )}
  32. <User logout={props.logout} username={props.username} i18n={props.i18n} />
  33. </Fragment>
  34. )
  35. }