Files
nini-naderi/src/components/Icons.tsx
T
Alireza HassaniandCursor 051939c6e2 Tighten storefront cards and rebuild the product page.
Match carousel cards on XL, add gallery zoom/lightbox, quantity and comments, and update the sale banner slot to 2:3.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 16:19:29 +03:30

186 lines
5.9 KiB
TypeScript

type IconProps = { className?: string };
export function IconSearch({ className = "size-5" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<circle cx="11" cy="11" r="7" stroke="currentColor" strokeWidth="1.8" />
<path d="M20 20l-3.2-3.2" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" />
</svg>
);
}
export function IconUser({ className = "size-5" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<circle cx="12" cy="8" r="3.2" stroke="currentColor" strokeWidth="1.8" />
<path
d="M5 19.2c.8-3.2 3.4-5 7-5s6.2 1.8 7 5"
stroke="currentColor"
strokeWidth="1.8"
strokeLinecap="round"
/>
</svg>
);
}
export function IconHeart({ className = "size-5" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path
d="M12 20s-7-4.4-7-9.2C5 8 6.8 6.4 9 6.4c1.3 0 2.3.6 3 1.6.7-1 1.7-1.6 3-1.6 2.2 0 4 1.6 4 4.4C19 15.6 12 20 12 20z"
stroke="currentColor"
strokeWidth="1.8"
strokeLinejoin="round"
/>
</svg>
);
}
export function IconBag({ className = "size-5" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path
d="M6.5 8h11l.8 11.2a1.5 1.5 0 0 1-1.5 1.6H7.2a1.5 1.5 0 0 1-1.5-1.6L6.5 8z"
stroke="currentColor"
strokeWidth="1.8"
/>
<path
d="M9 8V7.2A3 3 0 0 1 12 4a3 3 0 0 1 3 3.2V8"
stroke="currentColor"
strokeWidth="1.8"
strokeLinecap="round"
/>
</svg>
);
}
export function IconPhone({ className = "size-4" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path
d="M7.2 3.8h2.4l1.2 3-1.8 1.2a12 12 0 0 0 6 6l1.2-1.8 3 1.2v2.4c0 .8-.6 1.5-1.4 1.6A15.6 15.6 0 0 1 5.6 5.2c.1-.8.8-1.4 1.6-1.4z"
stroke="currentColor"
strokeWidth="1.6"
strokeLinejoin="round"
/>
</svg>
);
}
export function IconTruck({ className = "size-7" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path d="M3 7h11v8H3z" stroke="currentColor" strokeWidth="1.7" />
<path d="M14 10h4l3 3v2h-7" stroke="currentColor" strokeWidth="1.7" />
<circle cx="7" cy="17.5" r="1.6" stroke="currentColor" strokeWidth="1.6" />
<circle cx="17" cy="17.5" r="1.6" stroke="currentColor" strokeWidth="1.6" />
</svg>
);
}
export function IconShield({ className = "size-7" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path
d="M12 3.5 19 6v6.2c0 4.2-2.8 7.2-7 8.3-4.2-1.1-7-4.1-7-8.3V6l7-2.5z"
stroke="currentColor"
strokeWidth="1.7"
/>
<path d="m8.8 12 2.2 2.2 4.4-4.6" stroke="currentColor" strokeWidth="1.7" strokeLinecap="round" />
</svg>
);
}
export function IconReturn({ className = "size-7" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path
d="M7 8H4V5"
stroke="currentColor"
strokeWidth="1.7"
strokeLinecap="round"
strokeLinejoin="round"
/>
<path
d="M4.6 8A8 8 0 1 1 4 12.2"
stroke="currentColor"
strokeWidth="1.7"
strokeLinecap="round"
/>
</svg>
);
}
export function IconPalette({ className = "size-7" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path
d="M12 4a8 8 0 1 0 0 16h1.4a2.2 2.2 0 0 0 2.1-2.8 2 2 0 0 1 1.9-2.6H18a2 2 0 0 0 0-4h-.4A8 8 0 0 0 12 4z"
stroke="currentColor"
strokeWidth="1.7"
/>
<circle cx="9" cy="10" r="1" fill="currentColor" />
<circle cx="12.5" cy="8.2" r="1" fill="currentColor" />
<circle cx="8.4" cy="13.4" r="1" fill="currentColor" />
</svg>
);
}
export function IconChevronDown({ className = "size-4" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path d="m6 9 6 6 6-6" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" />
</svg>
);
}
export function IconChevron({ className = "size-5" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path d="m14.5 6-6 6 6 6" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" />
</svg>
);
}
export function IconMenu({ className = "size-6" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path d="M4 7h16M4 12h16M4 17h16" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" />
</svg>
);
}
export function IconPlus({ className = "size-5" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path d="M12 5v14M5 12h14" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
</svg>
);
}
export function IconMinus({ className = "size-5" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path d="M5 12h14" stroke="currentColor" strokeWidth="2" strokeLinecap="round" />
</svg>
);
}
export function IconClose({ className = "size-6" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<path d="M6 6l12 12M18 6 6 18" stroke="currentColor" strokeWidth="1.8" strokeLinecap="round" />
</svg>
);
}
export function IconInstagram({ className = "size-4" }: IconProps) {
return (
<svg className={className} viewBox="0 0 24 24" fill="none" aria-hidden>
<rect x="4" y="4" width="16" height="16" rx="5" stroke="currentColor" strokeWidth="1.6" />
<circle cx="12" cy="12" r="3.4" stroke="currentColor" strokeWidth="1.6" />
<circle cx="17.2" cy="6.8" r="0.9" fill="currentColor" />
</svg>
);
}