mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-11 05:11:49 +01:00
Fix invite logo aspect ratio
This commit is contained in:
1 parent
e63c38221d
commit
c1b77e4696
3 files changed
+43
-14
No files matched your search
@@ -13,6 +13,7 @@ interface CompanyPatternIconProps {
|
||||
logoUrl?: string | null;
|
||||
brandColor?: string | null;
|
||||
className?: string;
|
||||
logoFit?: "cover" | "contain";
|
||||
}
|
||||
|
||||
function hashString(value: string): number {
|
||||
@@ -165,6 +166,7 @@ export function CompanyPatternIcon({
|
||||
logoUrl,
|
||||
brandColor,
|
||||
className,
|
||||
logoFit = "cover",
|
||||
}: CompanyPatternIconProps) {
|
||||
const initial = companyName.trim().charAt(0).toUpperCase() || "?";
|
||||
const [imageError, setImageError] = useState(false);
|
||||
@@ -189,7 +191,10 @@ export function CompanyPatternIcon({
|
||||
src={logo}
|
||||
alt={`${companyName} logo`}
|
||||
onError={() => setImageError(true)}
|
||||
className="absolute inset-0 h-full w-full object-cover"
|
||||
className={cn(
|
||||
"absolute inset-0 h-full w-full",
|
||||
logoFit === "contain" ? "object-contain" : "object-cover",
|
||||
)}
|
||||
/>
|
||||
) : patternDataUrl ? (
|
||||
<img
|
||||
|
||||
@@ -153,7 +153,9 @@ describe("InviteLandingPage", () => {
|
||||
expect(container.textContent).toContain("Message from inviter");
|
||||
expect(container.querySelector('[data-testid="invite-inline-auth"]')).not.toBeNull();
|
||||
expect(localStorage.getItem("paperclip:pending-invite-token")).toBe("pcp_invite_test");
|
||||
expect(container.querySelector('img[alt="Acme Robotics logo"]')).not.toBeNull();
|
||||
const inviteLogo = container.querySelector('img[alt="Acme Robotics logo"]');
|
||||
expect(inviteLogo).not.toBeNull();
|
||||
expect(inviteLogo?.className).toContain("object-contain");
|
||||
expect(container.querySelector('input[name="name"]')).not.toBeNull();
|
||||
|
||||
const nameInput = container.querySelector('input[name="name"]') as HTMLInputElement | null;
|
||||
|
||||
@@ -129,6 +129,28 @@ type AwaitingJoinApprovalPanelProps = {
|
||||
onboardingTextUrl?: string | null;
|
||||
};
|
||||
|
||||
function InviteCompanyLogo({
|
||||
companyDisplayName,
|
||||
companyLogoUrl,
|
||||
companyBrandColor,
|
||||
className,
|
||||
}: {
|
||||
companyDisplayName: string;
|
||||
companyLogoUrl: string | null;
|
||||
companyBrandColor: string | null;
|
||||
className?: string;
|
||||
}) {
|
||||
return (
|
||||
<CompanyPatternIcon
|
||||
companyName={companyDisplayName}
|
||||
logoUrl={companyLogoUrl}
|
||||
brandColor={companyBrandColor}
|
||||
logoFit="contain"
|
||||
className={className}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
function AwaitingJoinApprovalPanel({
|
||||
companyDisplayName,
|
||||
companyLogoUrl,
|
||||
@@ -145,10 +167,10 @@ function AwaitingJoinApprovalPanel({
|
||||
<div className="min-h-screen bg-zinc-950 px-6 py-12 text-zinc-100">
|
||||
<div className="mx-auto max-w-md border border-zinc-800 bg-zinc-950 p-6" data-testid="invite-pending-approval">
|
||||
<div className="flex items-center gap-3">
|
||||
<CompanyPatternIcon
|
||||
companyName={companyDisplayName}
|
||||
logoUrl={companyLogoUrl}
|
||||
brandColor={companyBrandColor}
|
||||
<InviteCompanyLogo
|
||||
companyDisplayName={companyDisplayName}
|
||||
companyLogoUrl={companyLogoUrl}
|
||||
companyBrandColor={companyBrandColor}
|
||||
className="h-12 w-12 border border-zinc-800 rounded-none"
|
||||
/>
|
||||
<h1 className="text-lg font-semibold">Request to join {companyDisplayName}</h1>
|
||||
@@ -486,10 +508,10 @@ export function InviteLandingPage() {
|
||||
<div className="min-h-screen bg-zinc-950 px-6 py-12 text-zinc-100">
|
||||
<div className="mx-auto max-w-md border border-zinc-800 bg-zinc-950 p-6">
|
||||
<div className="flex items-center gap-3">
|
||||
<CompanyPatternIcon
|
||||
companyName={companyDisplayName}
|
||||
logoUrl={companyLogoUrl}
|
||||
brandColor={companyBrandColor}
|
||||
<InviteCompanyLogo
|
||||
companyDisplayName={companyDisplayName}
|
||||
companyLogoUrl={companyLogoUrl}
|
||||
companyBrandColor={companyBrandColor}
|
||||
className="h-12 w-12 border border-zinc-800 rounded-none"
|
||||
/>
|
||||
<h1 className="text-lg font-semibold">You joined the company</h1>
|
||||
@@ -521,10 +543,10 @@ export function InviteLandingPage() {
|
||||
<div className="grid gap-6 lg:grid-cols-[minmax(0,1.15fr)_minmax(360px,0.85fr)]">
|
||||
<section className={`${panelClassName} space-y-6`}>
|
||||
<div className="flex items-start gap-4">
|
||||
<CompanyPatternIcon
|
||||
companyName={companyDisplayName}
|
||||
logoUrl={companyLogoUrl}
|
||||
brandColor={companyBrandColor}
|
||||
<InviteCompanyLogo
|
||||
companyDisplayName={companyDisplayName}
|
||||
companyLogoUrl={companyLogoUrl}
|
||||
companyBrandColor={companyBrandColor}
|
||||
className="h-16 w-16 rounded-none border border-zinc-800"
|
||||
/>
|
||||
<div className="min-w-0">
|
||||
|
||||
Reference in new issue
Block a user