@nexusui/components
Version:
These are custom components specially-developed for NexusUI applications. They will make your life easier by giving you out-of-the-box implementations for various high-level UI elements that you can drop directly into your application.
2 lines (1 loc) • 1.97 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),a=require("@mui/material/Card"),i=require("@mui/material/Box"),t=require("@mui/material/Typography"),n=require("@mui/material/Stack"),s=require("@mui/material/CardContent"),l=require("@mui/icons-material/OpenInNew"),o=require("@mui/material/CardActionArea"),d=require("../Card/hooks/useCardActions.js"),u=require("../Card/hooks/useCardLoading.js"),c=require("../Card/components/LoadingManager.js"),m=require("./LinkCard.skeleton.js"),x=require("../util/functions/index.js");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var g=f(a),j=f(i),p=f(t),C=f(n),k=f(s),h=f(l),q=f(o);const b="NexusLinkCard";exports.LinkCard=a=>{const{dense:i,label:t,actions:n,actionButtons:s,title:l,href:o,loading:f,loadingMode:y="spinner",target:L="_blank",sx:A,...M}=a,{renderActions:N}=d.useCardActions({actions:n,actionButtons:s,skip:!n&&!s&&"_blank"!==L,extraActions:"_blank"===L&&e.jsx(h.default,{}),classPrefix:b,padding:0}),$=r.useMemo((()=>l?e.jsx(j.default,{className:`${b}-titleContainer`,sx:{mr:4},children:"string"==typeof l?e.jsx(p.default,{className:`${b}-title`,children:l}):l}):null),[l]),v=r.useMemo((()=>t?e.jsx(j.default,{className:`${b}-labelContainer`,sx:{mb:2},children:"string"==typeof t?e.jsx(p.default,{color:"primary",variant:"caption",fontWeight:700,className:`${b}-label`,children:t}):t}):null),[t]),{renderLoadingPanel:_,cardLoadingStyle:w}=u.useCardLoading(f,y);return e.jsx(g.default,{className:`${b}-root`,"data-testid":`${b}-root`,sx:[w,...Array.isArray(A)?A:[A]],...M,children:e.jsxs(c.LoadingManager,{loading:f,loadingMode:y,skeleton:m.LinkCardSkeleton,children:[e.jsx(q.default,{disabled:!o,onClick:e=>{e.preventDefault(),x.openLink(o,L)},children:e.jsxs(k.default,{sx:{p:i?4:6},children:[v,e.jsxs(C.default,{direction:"row",alignItems:"flex-start",justifyContent:"space-between",children:[$,N]})]})}),_]})})};