Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: lazy load images and heavy resources #5876

Open
wants to merge 60 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
64d012e
implement lazy loading for feature images
VriaA Sep 3, 2024
b5a1cd5
implement lazy loading for hompage playground section images
VriaA Sep 3, 2024
47d7dd3
implement lazy loading in `caseStudyBanner`
VriaA Sep 3, 2024
4356b83
implement lazy loading in footer
VriaA Sep 4, 2024
3b8a271
implement lazy loading for meshmode images
VriaA Sep 4, 2024
76b8151
implement lazy loading in meshmap section & Inline-quotes component
VriaA Sep 4, 2024
be50e07
implement lazy loading for images in `meshmap-catalog`
VriaA Sep 4, 2024
989de81
implement lazy loading for the iframe in sign-up section
VriaA Sep 4, 2024
807bad1
implement lazy loading for meshmap platform images
VriaA Sep 4, 2024
0836715
implement lazy loading for Customers component user picture
VriaA Sep 4, 2024
1271b50
implement lazy loading for social icon images
VriaA Sep 4, 2024
ee3e053
Implement lazy loading for feature images on Developer-defined Infras…
VriaA Sep 4, 2024
7119578
implement lazy loading for feature images on Cloud Native Deployments…
VriaA Sep 4, 2024
f141dd9
Implement lazy loading for feature images on Kubernetes Multi-cluster…
VriaA Sep 4, 2024
9e599e1
implement lazy loading for feature images on GitOps page
VriaA Sep 4, 2024
d768f9c
implement lazy loading in comparison section of pricing page
VriaA Sep 4, 2024
dc4d757
implement lazy loading in collaborative gitops page
VriaA Sep 4, 2024
1b99563
implement lazy loading for images on products page
VriaA Sep 4, 2024
8f2f3cf
implement lazy loading for images on meshery page
VriaA Sep 4, 2024
f1c4c2d
implement lazy loading for images in the meshery catalog section
VriaA Sep 4, 2024
408fa8c
implement lazy loading for images on cloud native catalog section
VriaA Sep 4, 2024
6fb14c4
implement lazy loading for images in meshmap cta section
VriaA Sep 4, 2024
a55c0c5
implement lazy loading for images in playground features section
VriaA Sep 4, 2024
a36bcb2
implement lazy loading for svg image in Image component
VriaA Sep 5, 2024
d3957f2
implement lazy loading for icons on connect with us page
VriaA Sep 5, 2024
c9c8c5e
implement lazy loading for images in the community handbook
VriaA Sep 5, 2024
a7d88c5
implement lazy loading for member page social link images
VriaA Sep 5, 2024
ca0505b
Implement lazy loading for arrow image in newcomers page
VriaA Sep 5, 2024
7ac30d7
Implement lazy loading for images on meshmates page
VriaA Sep 5, 2024
8408986
implement lazy loading for sistent project images
VriaA Sep 6, 2024
1fe1177
implement lazy loading for images in ServiceMeshTimeline
VriaA Sep 6, 2024
b36aea5
implement lazy loading for images in Nighthawk project page
VriaA Sep 6, 2024
987fad7
implement lazy loading for images on Image Hub project page
VriaA Sep 6, 2024
d9d9f94
implement lazy loading for images on how meshery works page
VriaA Sep 6, 2024
5f491ce
implement lazy loading for images on run meshery page
VriaA Sep 6, 2024
e33f16a
implement lazy loading for images on meshmap page
VriaA Sep 6, 2024
fbf777c
implement lazy loading for images on meshery operator page
VriaA Sep 6, 2024
7fd8ddb
implement lazy loading for images on architecture diagram page
VriaA Sep 6, 2024
57a672e
implement lazy loading for `CTA_Bottom` image
VriaA Sep 6, 2024
8602215
implement lazy loading for images on snapshot page
VriaA Sep 6, 2024
a6de835
implement lazy loading for images on Cloud Native Workshops page
VriaA Sep 6, 2024
c484500
implement lazy loading for images on brand kits page
VriaA Sep 6, 2024
fc25695
implement lazy loading for icon on how to apply section
VriaA Sep 7, 2024
cab4202
implement lazy loading for images on who are we section
VriaA Sep 7, 2024
af2d2e1
implement lazy loading for images in partners page
VriaA Sep 7, 2024
e434577
implement lazy loading for logo on contact form
VriaA Sep 7, 2024
fa0694f
Implement lazy loading for images on individual integrations page
VriaA Sep 7, 2024
50e255c
implement lazy loading for image in `RelatedPicks`
VriaA Sep 7, 2024
1f179a7
implement lazy loading for images on service mesh interface page
VriaA Sep 7, 2024
fa936f1
implement lazy loading for images in `TwoColLayout`
VriaA Sep 7, 2024
faf50fd
implement lazy loading to images in `MeshmapMobileSwiper` section
VriaA Sep 8, 2024
912bd96
implement lazy loading to images in `CTA_FullWidth`
VriaA Sep 8, 2024
437a83c
implement lazy loading for images in Press section
VriaA Sep 8, 2024
709d25d
implement lazy loading for images on service mesh patterns page table
VriaA Sep 8, 2024
c675878
implement lazy loading for images in `SocialLinks`
VriaA Sep 8, 2024
cbfb919
implement lazy loading for images on performance management page
VriaA Sep 8, 2024
07f2fdb
implement lazy loading for images on landscape page
VriaA Sep 8, 2024
f04f430
implement lazy loading for images on learn page
VriaA Sep 8, 2024
167f4f4
implement lazy loading for images on workshops page
VriaA Sep 8, 2024
141efed
implement lazy loading for images on integration page cards
VriaA Sep 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/collections/careers/how-to-apply.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ const PositionApply = () => {
<PositionApplyWrapper>
<div className="apply-now">
<div className="apply">
<img src={job_icon} alt="job-icon" className="pos-logo"/>
<img src={job_icon} alt="job-icon" className="pos-logo" loading="lazy" />
<h5>How to Apply</h5>
</div>
<p>Submit your resume and a short cover letter to:
Expand Down
2 changes: 1 addition & 1 deletion src/components/Call-To-Actions/CTA_Bottom/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ const CTA_Bottom = ({ alt, button_text, category, content, external_link, image,
)}
<Button primary title={category ? Categories[category]["Button_Text"] : (button_text ? button_text : "Join Us")} url={category ? Categories[category]["Link"] : (url ? url : defaultURL)} external={category ? Categories[category]["Link_external"] : (external_link ? true : false)} />
</div>
<img src={category ? Categories[category]["Image"] : (image ? image : image_src)} alt={category ? Categories[category]["Image_Alt"] : (alt ? alt : "Alt Text")} />
<img src={category ? Categories[category]["Image"] : (image ? image : image_src)} alt={category ? Categories[category]["Image_Alt"] : (alt ? alt : "Alt Text")} loading="lazy" />
</CTA_BottomWrapper>
);
};
Expand Down
4 changes: 2 additions & 2 deletions src/components/Call-To-Actions/CTA_FullWidth/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ const CTA_FullWidth = ({ alt, button_text, category, content, external_link, ima
<CTA_FullWidthWrapper {...props}>
{ category ? (
<>
<img src={Categories[category]["Image"]} alt={Categories[category]["Image_Alt"]} />
<img src={Categories[category]["Image"]} alt={Categories[category]["Image_Alt"]} loading="lazy" />
<div className="cta-content">
<div>
<h3>{Categories[category]["Heading"]}</h3>
Expand All @@ -113,7 +113,7 @@ const CTA_FullWidth = ({ alt, button_text, category, content, external_link, ima
</>
) : (
<>
<img src={image ? image : image_src} alt={alt ? alt : "Alt Text"} />
<img src={image ? image : image_src} alt={alt ? alt : "Alt Text"} loading="lazy" />
<div className="cta-content">
<div>
<h3>{heading ? heading : defaultHeading}</h3>
Expand Down
6 changes: 3 additions & 3 deletions src/components/Case-study-banner/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -215,12 +215,12 @@ const CaseStudyBanner = () => {
<h2>Discover how HPE uses Meshery to manage SPIRE</h2>
</div>
<div className="meshery-and-spire">
<img src={MesheryAndSpire} alt="meshery-and-spire" />
<img src={MesheryAndSpire} alt="meshery-and-spire" loading="lazy" />
</div>
</div>
<div className="large-screen">
<div className={`left-img ${hover ? "scale-on-hover" : ""}`} onMouseEnter={handleHover} onMouseLeave={handleLeave}>
<img src={MesheryLogo} alt="meshery-logo" />
<img src={MesheryLogo} alt="meshery-logo" loading="lazy" />
</div>
<div className={`desc ${hover ? "desc-hover" : ""}`} onMouseEnter={handleHover} onMouseLeave={handleLeave}>
<h2>Discover how HPE uses Meshery to manage SPIRE</h2>
Expand All @@ -229,7 +229,7 @@ const CaseStudyBanner = () => {
</div>
</div>
<div className={`right-img ${hover ? "scale-on-hover" : ""}`} onMouseEnter={handleHover} onMouseLeave={handleLeave}>
<img src={SpireLogo} alt="spire-logo" />
<img src={SpireLogo} alt="spire-logo" loading="lazy" />
</div>
</div>
</BannerWrapper>
Expand Down
2 changes: 1 addition & 1 deletion src/components/ContactForm/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ const ContactForm = () => {
>
<Form className="form" method="post">
<div className="title">
<img className="layer5-logo" src={logo} alt="Layer5 Logo" />
<img className="layer5-logo" src={logo} alt="Layer5 Logo" loading="lazy" />
</div>
<label htmlFor="firstname" className="form-name">
First Name <span className="required-sign">*</span>
Expand Down
2 changes: 1 addition & 1 deletion src/components/FeatureUseCard/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const FeatureUseCard = (props) => {
<Col sm={props.sm} md={props.md} lg={props.lg} className={"display-container"}>
<FeatureUseCardWrapper >
<div className={"image-container"}>
<img src={props.data.image} alt={""}/>
<img src={props.data.image} alt={""} loading="lazy" />
</div>
<div className={"feature-info-container"}>
<p className={"feature-title"}>{props.data.heading}</p>
Expand Down
10 changes: 5 additions & 5 deletions src/components/Features/TwoColLayout.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,29 +66,29 @@ const TwoColLayout = ({ containerRefs, contentRefs }) => {
<Container ref={(el) => (containerRefs.current[0] = el)}>
<ImageWrapper>
<Link to="/solutions/architecture-diagram">
<img src={isDark ? DiagrammingImageDark : DiagrammingImageLight} alt="image" />
<img src={isDark ? DiagrammingImageDark : DiagrammingImageLight} alt="image" loading="lazy" />
</Link>
</ImageWrapper>
<ContentWrapper ref={(el) => (contentRefs.current[0] = el)}>
<h2>Visualize and Simplify Platform Engineering</h2>
<p className="text">Incorporate AWS, GCP and Kubernetes components into Meshery designs for comprehensive and intuitive system mapping, documentation, and orchestration.</p>
<div className="small-card-container">
<Link aria-label="aws" className="small-card" to="/cloud-native-management/generate-aws-architecture-diagram">
<img alt="aws" src={isDark ? AWSLogoDark : AWSLogoLight} width={40} />
<img alt="aws" src={isDark ? AWSLogoDark : AWSLogoLight} width={40} loading="lazy" />
</Link>
<Link aria-label="gcp" className="small-card" to="/cloud-native-management/generate-gcp-architecture-diagram">
<img alt="gcp" src={GCPLogo} width={40} />
<img alt="gcp" src={GCPLogo} width={40} loading="lazy" />
</Link>
<Link aria-label="kubernetes" className="small-card" to="/cloud-native-management/generate-kubernetes-architecture-diagram">
<img alt="kubernetes" src={KubernetesLogo} width={40} />
<img alt="kubernetes" src={KubernetesLogo} width={40} loading="lazy" />
</Link>
</div>
</ContentWrapper>
</Container>
<Container ref={(el) => (containerRefs.current[1] = el)}>
<ImageWrapper>
<Link to="/orchestration-management">
<img src={isDark ? OrchestrationDark : OrchestrationLight} alt="image" />
<img src={isDark ? OrchestrationDark : OrchestrationLight} alt="image" loading="lazy" />
</Link>
</ImageWrapper>
<ContentWrapper ref={(el) => (contentRefs.current[1] = el)}>
Expand Down
16 changes: 9 additions & 7 deletions src/components/Features/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ const Features = (props) => {
: (<div className="small-card-container">
{props.redirectLinkWithImage.map((item) => (
<Link key={item.text} className="small-card" to={item.redirect}>
<img src={item.image} width={40} />
<img src={item.image} width={40} loading="lazy" />
<span>{item.text}</span>
</Link>
))}
Expand All @@ -113,18 +113,19 @@ const Features = (props) => {
alt=""
style={{ position: "absolute" }}
className="waveAnimation"
loading="lazy"
/>
)}
<img src={getPerson(props.cursor * 2)} alt="" />
<img src={getPerson(props.cursor * 2)} alt="" loading="lazy" />
</SvgRandomWrapper>
<SvgRandomWrapper
className="person2"
style={{ display: props.cursor ? "none" : "" }}
>
<img src={getPerson(props.cursor * 2 + 1)} alt="" />
<img src={getPerson(props.cursor * 2 + 1)} alt="" loading="lazy" />
</SvgRandomWrapper>
<Link to={props.redirectLink ? props.redirectLink : props.redirectLinkWithImage[0].redirect}>
<img src={props.imgLink} alt="image" />
<img src={props.imgLink} alt="image" loading="lazy" />
</Link>
</ImageWrapper>
) : (
Expand All @@ -139,18 +140,19 @@ const Features = (props) => {
alt=""
style={{ position: "absolute" }}
className="waveAnimation"
loading="lazy"
/>
)}
<img src={getPerson(props.cursor * 2)} alt="" />
<img src={getPerson(props.cursor * 2)} alt="" loading="lazy" />
</SvgRandomWrapper>
<SvgRandomWrapper
className="person2"
style={{ display: props.cursor ? "none" : "" }}
>
<img src={getPerson(props.cursor * 2 + 1)} alt="" />
<img src={getPerson(props.cursor * 2 + 1)} alt="" loading="lazy" />
</SvgRandomWrapper>
<Link to={props.redirectLink ? props.redirectLink : props.redirectLinkWithImage[0].redirect}>
<img src={props.imgLink} alt="image" />
<img src={props.imgLink} alt="image" loading="lazy" />
</Link>
</ImageWrapperTwo>
)}
Expand Down
2 changes: 1 addition & 1 deletion src/components/Inline-quotes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ const InlineQuotes = ({ person, title, quote,image }) => {
{(image || person || title) && <hr />}
{
image &&
<img src={image}></img>
<img src={image} loading="lazy"></img>
}
<div className="quote-source">
<h5>{person}</h5>
Expand Down
2 changes: 1 addition & 1 deletion src/components/Logo-List/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const LogoList = ({ logos, className }) => {
<ul>
{logos.map((logo) => (
<li key={logo.url}>
<img src={logo.url} alt={logo.alt} />
<img src={logo.url} alt={logo.alt} loading="lazy" />
</li>
))}
</ul>
Expand Down
2 changes: 1 addition & 1 deletion src/components/RelatedPicks/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const Card = ({ title, imgSrc, redirectLink }) => {
<Link to={redirectLink}>
<CardWrapper>
<CardImageContainer>
<Image src={imgSrc} alt="gcp architecture diagram" />
<Image src={imgSrc} alt="gcp architecture diagram" loading="lazy" />
</CardImageContainer>
<CardTitle>{title}</CardTitle>
</CardWrapper>
Expand Down
11 changes: 7 additions & 4 deletions src/components/SocialLinks-Color/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,18 @@ const SocialLinksColor = () => {
<Col xs={12}>
<Row className="social_icons">
<a href="https://discuss.layer5.io" target="_blank" rel="noreferrer">
<img height="30px" src={forum_icon} alt="forum" />
<img height="30px" src={forum_icon} alt="forum" loading="lazy" />
</a>
<a
className="mail_icon"
href="mailto:[email protected]"
target="_blank"
rel="noreferrer"
>
<img height="30px" src={mail_icon} alt="mail" />
<img height="30px" src={mail_icon} alt="mail" loading="lazy" />
</a>
<a href="https://slack.layer5.io/" target="_blank" rel="noreferrer">
<img className="slack" height="30px" src={slack_icon} alt="slack" />
<img className="slack" height="30px" src={slack_icon} alt="slack" loading="lazy" />
</a>
<a
href="https://twitter.com/layer5"
Expand All @@ -43,7 +43,7 @@ const SocialLinksColor = () => {
rel="noreferrer"
className="github"
>
<img height="30px" src={github_icon} alt="github" />
<img height="30px" src={github_icon} alt="github" loading="lazy" />
</a>
<a
href="https://www.linkedin.com/company/layer5"
Expand All @@ -55,6 +55,7 @@ const SocialLinksColor = () => {
height="30px"
src={linkedin_icon}
alt="linkedin"
loading="lazy"
/>
</a>
<a
Expand All @@ -68,6 +69,7 @@ const SocialLinksColor = () => {
height="30px"
src={youtube_icon}
alt="youtube"
loading="lazy"
/>
</a>
<a
Expand All @@ -81,6 +83,7 @@ const SocialLinksColor = () => {
height="30px"
src={docker_icon}
alt="docker"
loading="lazy"
/>
</a>
</Row>
Expand Down
12 changes: 6 additions & 6 deletions src/components/SocialLinks/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,43 +19,43 @@ const SocialLinks = () => {
target="_blank"
rel="noreferrer"
>
<img height="40 px" src={mail_icon} alt="mail" />
<img height="40 px" src={mail_icon} alt="mail" loading="lazy" />
</a>
<a
href="https://slack.layer5.io/"
target="_blank" rel="noreferrer"
>
<img className="slack" height="40 px" src={slack_icon} alt="slack" />
<img className="slack" height="40 px" src={slack_icon} alt="slack" loading="lazy" />
</a>
<a
href="https://twitter.com/layer5"
target="_blank"
rel="noreferrer"
>
<img className="twitter" height="40 px" src={twitter_icon} alt="twitter" />
<img className="twitter" height="40 px" src={twitter_icon} alt="twitter" loading="lazy" />
</a>
<a
href="https://github.com/layer5io"
target="_blank"
rel="noreferrer"
>
<img className="github" height="40 px" src={github_icon} alt="github" />
<img className="github" height="40 px" src={github_icon} alt="github" loading="lazy" />
</a>
<a
className="youtube_icon"
href="https://www.youtube.com/c/Layer5io?sub_confirmation=1"
target="_blank"
rel="noreferrer"
>
<img className="youtube" height="40 px" src={youtube_icon} alt="youtube" />
<img className="youtube" height="40 px" src={youtube_icon} alt="youtube" loading="lazy" />
</a>
<a
className="docker_icon"
href="https://hub.docker.com/u/layer5/"
target="_blank"
rel="noreferrer"
>
<img className="docker" height="40 px" src={docker_icon} alt="docker" />
<img className="docker" height="40 px" src={docker_icon} alt="docker" loading="lazy" />
</a>
</Row>
</Col>
Expand Down
2 changes: 1 addition & 1 deletion src/components/image.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const Image = ({ childImageSharp, extension, publicURL, alt, ...rest }) => {
if (!childImageSharp && extension === "svg") {
return (
<div className="old-gatsby-image-wrapper">
<img src={publicURL} alt={alt} />
<img src={publicURL} alt={alt} loading="lazy" />
</div>
);
}
Expand Down
6 changes: 3 additions & 3 deletions src/components/service-mesh-patterns-Table/Table.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@ const Table = () => {
<span {...column.getSortByToggleProps()}>
{column.isSorted
? column.isSortedDesc
? <img className="service-mesh-icon" src={downicon} alt="down icon" />
: <img className="service-mesh-icon" src={upicon} alt="up icon" />
: <img className="service-mesh-icon" src={alphaicon} alt="alpha icon" />}
? <img className="service-mesh-icon" src={downicon} alt="down icon" loading="lazy" />
: <img className="service-mesh-icon" src={upicon} alt="up icon" loading="lazy" />
: <img className="service-mesh-icon" src={alphaicon} alt="alpha icon" loading="lazy" />}
</span>
: <>
</>}
Expand Down
12 changes: 6 additions & 6 deletions src/components/specs/data-card.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,31 +49,31 @@ const DataCard = () => {
<Col className="col-1" sm={6} lg={6}>
<ul>
<li>
<img src={List_Icon} alt="Performance Icon" />
<img src={List_Icon} alt="Performance Icon" loading="lazy"/>
<h5>Extensive library of integrations</h5>
</li>
<li>
<img src={List_Icon} alt="Configuration Icon" />
<img src={List_Icon} alt="Configuration Icon" loading="lazy"/>
<h5>Infrastructure orchestration</h5>
</li>
<li>
<img src={List_Icon} alt="Performance Icon" />
<img src={List_Icon} alt="Performance Icon" loading="lazy"/>
<h5>Multi-player editing</h5>
</li>
</ul>
</Col>
<Col className="col-1" sm={6} lg={6}>
<ul>
<li>
<img src={List_Icon} alt="Performance Icon" />
<img src={List_Icon} alt="Performance Icon" loading="lazy"/>
<h5>Ready-to-use templates</h5>
</li>
<li>
<img src={List_Icon} alt="Configuration Icon" />
<img src={List_Icon} alt="Configuration Icon" loading="lazy"/>
<h5>Visual drag & drop</h5>
</li>
<li>
<img src={List_Icon} alt="Performance Icon" />
<img src={List_Icon} alt="Performance Icon" loading="lazy"/>
<h5>Operate with No Code</h5>
</li>
</ul>
Expand Down
6 changes: 3 additions & 3 deletions src/reusecore/Blockquote/Blockquote-image/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const Customers = (props) => {
<section className="bq-section">
<div className="type-one-wrapper type-one-wrapper-boxed">
<div className="bq-quote type-one-quote">
<div className="type-one-quote-userpic"><img src={props.image}></img></div>
<div className="type-one-quote-userpic"><img src={props.image} loading="lazy"></img></div>
<div className="type-one-quote-qmark">
&#10077;
</div>
Expand Down Expand Up @@ -41,7 +41,7 @@ const Customers = (props) => {
</div>
</div>

<div className="type-two-quote-userpic"><img src={props.image}></img></div>
<div className="type-two-quote-userpic"><img src={props.image} loading="lazy"></img></div>

<div className="type-two-quote-base">
<blockquote className="type-two-quote-text">
Expand Down Expand Up @@ -71,7 +71,7 @@ const Customers = (props) => {
{props.quote}
</blockquote>
<div className="type-three-quote-meta">
<div className="type-three-quote-userpic"><img src={props.image}></img></div>
<div className="type-three-quote-userpic"><img src={props.image} loading="lazy"></img></div>
<div className="type-three-quote-meta-info">
<div className="type-three-quote-author"><cite>{props.person ? props.person : ""}</cite></div>
<div className="type-three-quote-source"><span>{props.title ? props.title : ""}</span></div>
Expand Down
Loading
Loading