MarketplaceDetailTopBar.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { useParams } from 'common'
  2. import Link from 'next/link'
  3. import type { ReactNode } from 'react'
  4. import {
  5. Badge,
  6. BreadcrumbItem,
  7. BreadcrumbLink,
  8. BreadcrumbList,
  9. BreadcrumbPage,
  10. BreadcrumbSeparator,
  11. } from 'ui'
  12. interface MarketplaceDetailTopBarProps {
  13. title: string
  14. actions?: ReactNode
  15. isInstalled?: boolean
  16. }
  17. export const MarketplaceDetailTopBar = ({
  18. title,
  19. isInstalled,
  20. actions,
  21. }: MarketplaceDetailTopBarProps) => {
  22. const { ref } = useParams()
  23. return (
  24. <div className="sticky min-h-(--header-height) top-0 z-20 flex justify-between items-center border-b bg-dash-sidebar px-6 py-2.5 xl:px-10">
  25. <div className="flex min-w-0 flex-1 items-center gap-4 [&_li]:text-xs">
  26. <BreadcrumbList className="min-w-0 flex-nowrap">
  27. <BreadcrumbItem>
  28. <BreadcrumbLink asChild>
  29. <Link href={`/project/${ref}/integrations`}>Integrations</Link>
  30. </BreadcrumbLink>
  31. </BreadcrumbItem>
  32. <BreadcrumbSeparator />
  33. <BreadcrumbItem className="min-w-0">
  34. <BreadcrumbPage className="block min-w-0 truncate">{title}</BreadcrumbPage>
  35. {isInstalled && <Badge variant="success">Installed</Badge>}
  36. </BreadcrumbItem>
  37. </BreadcrumbList>
  38. </div>
  39. <div className="flex shrink-0 items-center gap-2">{actions}</div>
  40. </div>
  41. )
  42. }