feat: social links with inline SVG icons from CMS

SocialRecord gains icon field (SVG markup string). InlineSvg component
parses SVG string via html-react-parser. Footer renders icon on mobile
(sm:hidden label), label on sm+ (hidden icon). Email field refactored
from string to SocialRecord relation.
This commit is contained in:
Ilia Mashkov committed 2026-05-19 18:06:20 +03:00
1 parent 41af0b90a0
commit d0f09f0dbd
4 files changed
+64 -7

No files matched your search

+1
View File
@@ -0,0 +1 @@
export { InlineSvg } from './ui/InlineSvg';
+25
View File
@@ -0,0 +1,25 @@
import parse from 'html-react-parser';
import { cn } from '$shared/lib';
type Props = {
/**
* SVG markup string to inline as React elements
*/
svg: string;
/**
* Additional CSS classes on the wrapper span
*/
className?: string;
};
/**
* Parses an SVG markup string into React elements.
* Inherits color from parent via currentColor.
*/
export function InlineSvg({ svg, className }: Props) {
if (!svg) {
return null;
}
return <span className={cn('inline-flex items-center', className)}>{parse(svg)}</span>;
}