@stanfordspezi/spezi-web-design-system
Version:
Stanford Biodesign Digital Health Spezi Web Design System
2 lines (1 loc) • 1.38 kB
JavaScript
;const e=require("react/jsx-runtime"),z=require("./index-DTLvoP6e.js"),u=require("react"),d=require("./index-DwV9MiDB.js"),b=require("./misc-yOvtbcCM.js"),v=s=>{const a=s.trim().split(" ");if(b.isEmpty(a))return"";if(a.length===1)return a.at(0)?.substring(0,2).toLocaleUpperCase()??"";const r=a.at(0)?.at(0)??"",t=a.at(-1)?.at(0)??"";return`${r}${t}`.toLocaleUpperCase()},f={size:{sm:"size-8 text-xs",default:"size-12",lg:"size-16 text-xl"}},m=z.cva("relative flex shrink-0",{variants:f,defaultVariants:{size:"default"}}),h=({className:s,src:a,fallback:r,size:t="default",name:i,overlay:l,objectFit:x="cover",...g})=>{const[n,c]=u.useState(!1),[j,p]=u.useState(a);a!==j&&(p(a),c(!1));const o=n?null:i?v(i):r;return e.jsxs("div",{"data-slot":"avatar","data-size":t,className:d.cn(m({size:t}),s),...g,children:[e.jsxs("div",{className:"size-full overflow-hidden rounded-full",children:[a&&e.jsx("img",{"data-slot":"avatar-image",className:d.cn("aspect-square size-full",x==="cover"?"object-cover":"object-contain",!n&&"opacity-0"),src:a,onLoad:()=>c(!0),alt:[i,"avatar"].filter(Boolean).join(" ")}),o&&e.jsx("div",{"data-slot":"avatar-fallback",className:"flex-center bg-muted size-full rounded-full",children:o})]}),l&&e.jsx("div",{className:"absolute inset-0",children:l})]})};exports.Avatar=h;exports.avatarVariance=m;exports.avatarVariants=f;exports.getInitials=v;