@lanaco/lnc-react-ui
Version:
React component library
147 lines (126 loc) • 5.19 kB
JavaScript
"use strict";const r=require("react/jsx-runtime"),l=require("react"),x=require("./Icon.cjs"),o=require("./utils-BK6B_Y9X.cjs"),$=require("./emotion-styled.browser.esm-DwHBgTPn.cjs"),R=require("./breakpoints-CcVm-gVm.cjs"),d=require("./ShopAvatar-CV3lj34D.cjs"),k=require("./index-DOkcmaFO.cjs"),D=$.styled.a`
text-decoration: none;
color: var(--gray-950);
display: flex;
flex-direction: column;
align-items: center;
border-radius: 1.25rem;
border: 1px solid var(--neutral-9508, rgba(20, 22, 26, 0.08));
background: var(--Lanaco-Gray-white, #fff);
width: 100%;
height: 100%;
justify-content: space-between;
/* drop-shadow-sm */
box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.05);
&:hover {
cursor: pointer;
}
& .wrapper__content {
display: flex;
padding: 1.25rem;
flex-direction: column;
align-items: center;
gap: 0.75rem;
align-self: strech;
& .wrapper__image {
object-fit: cover;
aspect-ratio: 1 / 1;
max-height: 4rem;
border-radius: 999px;
}
}
& .wrapper_stars {
display: flex;
}
& .wrapper__info {
display: flex;
flex-direction: column;
align-items: center;
gap: 0.375rem;
& .wrapper__title {
display: flex;
align-items: center;
gap: 0.75rem;
color: var(--gray-950, #14161a);
font-size: 1rem;
font-style: normal;
font-weight: 500;
line-height: 1.5rem;
letter-spacing: -0.0112rem;
${o.truncateTextInRows(2)}
text-align: center;
}
& .wrapper__subtitle {
color: var(--gray-600, #676e79);
text-align: center;
font-size: 0.875rem;
font-style: normal;
font-weight: 400;
line-height: 1.25rem;
letter-spacing: -0.0056rem;
${o.truncateTextInRows(2)}
}
& .wrapper__badges {
}
& .wrapper__rating {
display: flex;
align-items: center;
gap: 0.25rem;
& .wrapper__star {
& i {
color: var(--warning-500);
}
& .gold-star {
& i {
color: var(--gray-500);
}
}
}
& .wrapper__review-count {
color: var(--gray-600, #676e79);
font-size: 0.75rem;
font-style: normal;
font-weight: 400;
line-height: 1rem;
letter-spacing: 0.01px;
}
}
}
& .wrapper__products {
display: flex;
align-items: flex-start;
column-gap: 1px;
width: 100%;
& .wrapper__product {
overflow: hidden;
cursor: pointer;
width: 100%;
max-height: 5.75rem;
&:first-child {
border-radius: 0 0 0 1.25rem;
}
&:last-child {
border-radius: 0 0 1.25rem 0;
}
&:only-child {
border-radius: 0 0 1.25rem 1.25rem;
}
& .product__image {
width: 100%;
aspect-ratio: 1 / 1;
height: calc(100% / 3);
max-height: 5.75rem;
object-fit: cover;
}
}
}
@media ${R.down("S")} {
max-width: 10rem;
min-width: 10rem;
& .wrapper__content {
& .wrapper__image {
max-height: 3rem;
}
}
}
`,E=l.forwardRef(({uuid:c,image:p,imageComponent:g,title:f,subtitle:w,badges:v,rating:y,reviewCount:m,products:t,onSelectCard:j=()=>{},getProductImage:b=()=>{},canAcceptPayments:N,hideProducts:u=!1,showRating:S=!0,metadata:i={},LinkComponent:_},I)=>{const q=_||"a",s=l.useRef(),h=l.useRef();return l.useEffect(()=>{var n;const e=a=>{a.target.src=d.DefaultShopImage,a.onerror=null};return(n=s==null?void 0:s.current)==null||n.addEventListener("error",e),()=>{var a;(a=s==null?void 0:s.current)==null||a.removeEventListener("error",e)}},[]),r.jsxs(D,{ref:h,name:i==null?void 0:i.name,"data-accessor":i==null?void 0:i.accessor,onClick:e=>j(e,h),as:q,..._?{to:`/shop/${c}`}:{href:`/shop/${c}`},children:[r.jsxs("div",{className:"wrapper__content",children:[o.isDefined(g)?g:p?r.jsx("img",{ref:s,src:p,className:"wrapper__image"}):r.jsx("img",{src:d.DefaultShopImage,className:"wrapper__image"}),r.jsxs("div",{className:"wrapper__info",children:[r.jsxs("div",{className:"wrapper__title",children:[f," ",N&&r.jsx(x,{color:"secondary",icon:"credit-card",className:"card"})]}),r.jsx("div",{className:"wrapper__subtitle",children:w}),v&&r.jsx("div",{className:"wrapper__badges"}),S&&r.jsxs("div",{className:"wrapper__rating",children:[r.jsx("div",{className:"wrapper_stars",children:[...Array(5).keys()].map((e,n)=>r.jsx(x,{icon:" mng-lnc-star--filled",className:`wrapper__star ${e>=y?"gold-star":""}`},`shop-card-rating-star__${n+1}`))}),r.jsxs("div",{className:"wrapper__review-count",children:["(",m==null?void 0:m.toLocaleString(),")"]})]})]})]}),u!==!0&&r.jsx("div",{className:"wrapper__products",children:t&&(t==null?void 0:t.map((e,n)=>r.jsx(l.Fragment,{children:r.jsx("div",{className:"wrapper__product",onClick:()=>{var a;return(a=e==null?void 0:e.onSelectProduct)==null?void 0:a.call(e,e==null?void 0:e.uuid)},children:o.isDefined(e==null?void 0:e.imageComponent)?e==null?void 0:e.imageComponent:r.jsx(k.ProductImageWrapper,{src:b(e==null?void 0:e.image,e==null?void 0:e.uuid,c),className:"product__image"})})},n)))})]})});exports.ShopCard=E;