FreeProjectLimitWarning.tsx 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { Admonition } from 'ui-patterns/admonition'
  2. import Panel from '@/components/ui/Panel'
  3. import { UpgradePlanButton } from '@/components/ui/UpgradePlanButton'
  4. import type { MemberWithFreeProjectLimit } from '@/data/organizations/free-project-limit-check-query'
  5. interface FreeProjectLimitWarningProps {
  6. membersExceededLimit: MemberWithFreeProjectLimit[]
  7. }
  8. export const FreeProjectLimitWarning = ({ membersExceededLimit }: FreeProjectLimitWarningProps) => {
  9. return (
  10. <Panel.Content>
  11. <Admonition
  12. type="default"
  13. title="The organization has members who have exceeded their free project limits"
  14. description={
  15. <div className="space-y-3">
  16. <p className="text-sm leading-normal">
  17. The following members have reached their maximum limits for the number of active free
  18. plan projects within organizations where they are an administrator or owner:
  19. </p>
  20. <ul className="pl-5 list-disc">
  21. {membersExceededLimit.map((member, idx: number) => (
  22. <li key={`member-${idx}`}>
  23. {member.username || member.primary_email} (Limit: {member.free_project_limit} free
  24. projects)
  25. </li>
  26. ))}
  27. </ul>
  28. <p className="text-sm leading-normal">
  29. These members will need to either delete, pause, or upgrade one or more of these
  30. projects before you're able to create a free project within this organization.
  31. </p>
  32. <UpgradePlanButton
  33. source="freeProjectLimitWarning"
  34. featureProposition="create more projects"
  35. />
  36. </div>
  37. }
  38. />
  39. </Panel.Content>
  40. )
  41. }