@lindle/linoardo 1.0.34 → 1.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -55,4 +55,4 @@ interface ExpansionPanelItemProps extends Omit<DivAttributes, 'title'> {
55
55
 
56
56
  declare const ExpansionPanelItem: react.ForwardRefExoticComponent<ExpansionPanelItemProps & react.RefAttributes<HTMLDivElement>>;
57
57
 
58
- export { ExpansionPanelItem as E, type ExpansionPanelItemProps as a, type ExpansionPanelProps as b, type ExpansionPanelValue as c, type ExpansionPanelVariant as d, type ExpansionPanelDensity as e, type ExpansionPanelRounded as f };
58
+ export { type ExpansionPanelDensity as E, ExpansionPanelItem as a, type ExpansionPanelItemProps as b, type ExpansionPanelProps as c, type ExpansionPanelRounded as d, type ExpansionPanelValue as e, type ExpansionPanelVariant as f };
@@ -55,4 +55,4 @@ interface ExpansionPanelItemProps extends Omit<DivAttributes, 'title'> {
55
55
 
56
56
  declare const ExpansionPanelItem: react.ForwardRefExoticComponent<ExpansionPanelItemProps & react.RefAttributes<HTMLDivElement>>;
57
57
 
58
- export { ExpansionPanelItem as E, type ExpansionPanelItemProps as a, type ExpansionPanelProps as b, type ExpansionPanelValue as c, type ExpansionPanelVariant as d, type ExpansionPanelDensity as e, type ExpansionPanelRounded as f };
58
+ export { type ExpansionPanelDensity as E, ExpansionPanelItem as a, type ExpansionPanelItemProps as b, type ExpansionPanelProps as c, type ExpansionPanelRounded as d, type ExpansionPanelValue as e, type ExpansionPanelVariant as f };
@@ -33,26 +33,14 @@ var avatarRadiusMap = {
33
33
  sharp: "rounded-none"
34
34
  };
35
35
  var isDarkVariant = (variant) => variant === "filled";
36
- var SocialIcons = ({
37
- socials = [],
38
- dark
39
- }) => {
40
- if (socials.length === 0) return null;
41
- twMerge(
42
- "flex h-10 w-10 items-center justify-center rounded-full border text-lg transition",
43
- dark ? "border-white/30 text-white hover:bg-white/10" : "border-gray-200 text-gray-600 hover:border-primary/50 hover:text-primary"
44
- );
45
- return /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: socials.map((link) => (
46
- // <a
47
- // key={link.href}
48
- // href={link.href}
49
- // aria-label={link.label ?? link.icon}
50
- // className={iconBase}
51
- // >
52
- // <i className={twMerge('mdi', link.icon)} aria-hidden />
53
- // </a>
54
- /* @__PURE__ */ jsx(Button_default, { iconOnly: true, icon: link.icon, variant: "rounded", size: "x-small" })
55
- )) });
36
+ var SocialIcons = ({ socials, dark }) => {
37
+ if (!socials) return null;
38
+ if (Array.isArray(socials) && socials.length === 0) return null;
39
+ const isSocialLinkArray = Array.isArray(socials) && socials.length > 0 && "href" in socials[0];
40
+ if (isSocialLinkArray) {
41
+ return /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: socials.map((link) => /* @__PURE__ */ jsx(Button_default, { iconOnly: true, icon: link.icon, variant: "rounded", size: "x-small", ...{ href: link.href, as: "a" } }, link.href)) });
42
+ }
43
+ return /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: socials });
56
44
  };
57
45
  var Badges = ({ badges = [], dark }) => {
58
46
  if (badges.length === 0) return null;
@@ -65,26 +53,7 @@ var Badges = ({ badges = [], dark }) => {
65
53
  var AvatarFrame = ({ avatar, size = "md", ring, radius }) => {
66
54
  const dimension = size === "lg" ? "h-28 w-28" : "h-20 w-20";
67
55
  const ringClass = ring ? "ring-4 ring-white/80 ring-offset-4 ring-offset-transparent" : "";
68
- return /* @__PURE__ */ jsx(
69
- "div",
70
- {
71
- className: twMerge(
72
- "overflow-hidden bg-linear-to-br from-primary/10 to-primary/30",
73
- radius,
74
- dimension,
75
- ringClass
76
- ),
77
- children: /* @__PURE__ */ jsx(
78
- "img",
79
- {
80
- src: avatar.src,
81
- alt: avatar.alt ?? "",
82
- className: twMerge("h-full w-full object-cover", radius),
83
- loading: "lazy"
84
- }
85
- )
86
- }
87
- );
56
+ return /* @__PURE__ */ jsx("div", { className: twMerge("overflow-hidden bg-linear-to-br from-primary/10 to-primary/30", radius, dimension, ringClass), children: /* @__PURE__ */ jsx("img", { src: avatar.src, alt: avatar.alt ?? "", className: twMerge("h-full w-full object-cover", radius), loading: "lazy" }) });
88
57
  };
89
58
  var ProfileCard = ({
90
59
  name,
@@ -166,5 +135,5 @@ ProfileCard.displayName = "ProfileCard";
166
135
  var ProfileCard_default = ProfileCard;
167
136
 
168
137
  export { ProfileCard_default };
169
- //# sourceMappingURL=chunk-NEYVJE67.js.map
170
- //# sourceMappingURL=chunk-NEYVJE67.js.map
138
+ //# sourceMappingURL=chunk-EYZVXAPY.js.map
139
+ //# sourceMappingURL=chunk-EYZVXAPY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/Blocks/ProfileCard/index.tsx"],"names":[],"mappings":";;;;AAiCA,IAAM,UAAA,GAA4C;AAAA,EAChD,KAAA,EAAO,4EAAA;AAAA,EACP,OAAA,EAAS,+CAAA;AAAA,EACT,IAAA,EAAM,8BAAA;AAAA,EACN,KAAA,EAAO,mDAAA;AAAA,EACP,MAAA,EAAQ,wDAAA;AAAA,EACR,UAAA,EAAY,qDAAA;AAAA,EACZ,OAAA,EAAS,qEAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,aAAA,GAA+C;AAAA,EACnD,KAAA,EAAO,aAAA;AAAA,EACP,OAAA,EAAS,aAAA;AAAA,EACT,IAAA,EAAM,aAAA;AAAA,EACN,KAAA,EAAO,aAAA;AAAA,EACP,MAAA,EAAQ,aAAA;AAAA,EACR,UAAA,EAAY,eAAA;AAAA,EACZ,OAAA,EAAS,aAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,eAAA,GAAiD;AAAA,EACrD,KAAA,EAAO,aAAA;AAAA,EACP,OAAA,EAAS,aAAA;AAAA,EACT,IAAA,EAAM,aAAA;AAAA,EACN,KAAA,EAAO,aAAA;AAAA,EACP,MAAA,EAAQ,aAAA;AAAA,EACR,UAAA,EAAY,aAAA;AAAA,EACZ,OAAA,EAAS,aAAA;AAAA,EACT,KAAA,EAAO;AACT,CAAA;AAEA,IAAM,aAAA,GAAgB,CAAC,OAAA,KAA2B,OAAA,KAAY,QAAA;AAE9D,IAAM,WAAA,GAAsF,CAAC,EAAE,OAAA,EAAS,MAAK,KAAM;AACjH,EAAA,IAAI,CAAC,SAAS,OAAO,IAAA;AACrB,EAAA,IAAI,MAAM,OAAA,CAAQ,OAAO,KAAK,OAAA,CAAQ,MAAA,KAAW,GAAG,OAAO,IAAA;AAE3D,EAAA,MAAM,iBAAA,GAAoB,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,IAAK,QAAQ,MAAA,GAAS,CAAA,IAAK,MAAA,IAAW,OAAA,CAAQ,CAAC,CAAA;AAE9F,EAAA,IAAI,iBAAA,EAAmB;AACrB,IAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACX,QAAA,EAAA,OAAA,CAAyB,GAAA,CAAI,CAAA,IAAA,qBAC7B,GAAA,CAAC,cAAA,EAAA,EAAuB,QAAA,EAAQ,IAAA,EAAC,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,OAAA,EAAQ,SAAA,EAAU,IAAA,EAAK,SAAA,EAAW,GAAI,EAAE,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,EAAA,EAAI,GAAA,EAAI,EAAA,EAAtG,IAAA,CAAK,IAA4G,CAC/H,CAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,uBAAO,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EAAwB,QAAA,EAAA,OAAA,EAA2B,CAAA;AAC3E,CAAA;AAEA,IAAM,SAAyD,CAAC,EAAE,SAAS,EAAC,EAAG,MAAK,KAAM;AACxF,EAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAEhC,EAAA,MAAM,SAAA,GAAY,OAAA;AAAA,IAChB,4EAAA;AAAA,IACA,OAAO,+CAAA,GAAkD;AAAA,GAC3D;AAEA,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,sBAAA,EACZ,QAAA,EAAA,MAAA,CAAO,IAAI,CAAA,KAAA,qBACV,GAAA,CAAC,MAAA,EAAA,EAAuB,SAAA,EAAW,WAChC,QAAA,EAAA,KAAA,CAAM,KAAA,EAAA,EADE,KAAA,CAAM,KAEjB,CACD,CAAA,EACH,CAAA;AAEJ,CAAA;AAEA,IAAM,WAAA,GAKD,CAAC,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,IAAA,EAAM,QAAO,KAAM;AAC9C,EAAA,MAAM,SAAA,GAAY,IAAA,KAAS,IAAA,GAAO,WAAA,GAAc,WAAA;AAChD,EAAA,MAAM,SAAA,GAAY,OAAO,4DAAA,GAA+D,EAAA;AACxF,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,+DAAA,EAAiE,QAAQ,SAAA,EAAW,SAAS,CAAA,EACnH,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,OAAO,GAAA,EAAK,GAAA,EAAK,MAAA,CAAO,GAAA,IAAO,EAAA,EAAI,SAAA,EAAW,OAAA,CAAQ,4BAAA,EAA8B,MAAM,CAAA,EAAG,OAAA,EAAQ,MAAA,EAAO,CAAA,EACxH,CAAA;AAEJ,CAAA;AAEA,IAAM,cAA0C,CAAC;AAAA,EAC/C,IAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA,GAAS,SAAA;AAAA,EACT,OAAA,GAAU,OAAA;AAAA,EACV,SAAA;AAAA,EACA,GAAG;AACL,CAAA,KAAM;AACJ,EAAA,MAAM,WAAA,GAAc,UAAA,CAAW,OAAO,CAAA,IAAK,UAAA,CAAW,KAAA;AACtD,EAAA,MAAM,UAAA,GAAa,aAAA,CAAc,OAAO,CAAA,IAAK,aAAA;AAC7C,EAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,OAAO,CAAA,IAAK,aAAA;AACjD,EAAA,MAAM,IAAA,GAAO,cAAc,OAAO,CAAA;AAClC,EAAA,MAAM,KAAA,GAAQ,OAAO,eAAA,GAAkB,eAAA;AACvC,EAAA,MAAM,MAAA,GAAS,OAAO,YAAA,GAAe,eAAA;AAErC,EAAA,MAAM,0BACJ,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,WAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yBAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,MAAA,EAAgB,MAAA,EAAQ,YAAA,EAAc,CAAA;AAAA,6BAClD,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,QAAG,SAAA,EAAW,OAAA,CAAQ,uBAAA,EAAyB,MAAM,GAAI,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,UAC9D,IAAA,wBAAS,GAAA,EAAA,EAAE,SAAA,EAAW,QAAQ,qBAAA,EAAuB,KAAK,GAAI,QAAA,EAAA,IAAA,EAAK;AAAA,SAAA,EACtE;AAAA,OAAA,EACF,CAAA;AAAA,MACC,WAAA,wBAAgB,GAAA,EAAA,EAAE,SAAA,EAAW,QAAQ,yBAAA,EAA2B,KAAK,GAAI,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,sBACtF,GAAA,CAAC,MAAA,EAAA,EAAO,MAAA,EAAgB,IAAA,EAAY;AAAA,KAAA,EACtC,CAAA;AAAA,oBACA,GAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,IAAA,EAAY;AAAA,GAAA,EAC7C,CAAA;AAGF,EAAA,MAAM,gBAAA,mBACJ,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,WAAU,yFAAA,EAA0F,CAAA;AAAA,oBACzG,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0DAAA,EACb,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,eAAY,MAAA,EAAgB,IAAA,EAAK,MAAK,IAAA,EAAI,IAAA,EAAC,QAAQ,YAAA,EAAc,CAAA;AAAA,sBAClE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAG,SAAA,EAAW,OAAA,CAAQ,wBAAA,EAA0B,MAAM,GAAI,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,QAC/D,IAAA,wBAAS,GAAA,EAAA,EAAE,SAAA,EAAW,QAAQ,6CAAA,EAA+C,KAAK,GAAI,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,QAC3F,WAAA,wBAAgB,GAAA,EAAA,EAAE,SAAA,EAAW,QAAQ,yBAAA,EAA2B,KAAK,GAAI,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,wBACtF,GAAA,CAAC,MAAA,EAAA,EAAO,MAAA,EAAgB,IAAA,EAAY,CAAA;AAAA,wBACpC,GAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,IAAA,EAAY;AAAA,OAAA,EAC7C;AAAA,KAAA,EACF;AAAA,GAAA,EACF,CAAA;AAGF,EAAA,MAAM,YAAA,mBACJ,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,oDAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,eAAY,MAAA,EAAgB,IAAA,EAAK,MAAK,IAAA,EAAI,IAAA,EAAC,QAAQ,YAAA,EAAc,CAAA;AAAA,oBAClE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EACb,QAAA,EAAA;AAAA,sBAAA,IAAA,CAAC,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAG,SAAA,EAAW,OAAA,CAAQ,wBAAA,EAA0B,MAAM,GAAI,QAAA,EAAA,IAAA,EAAK,CAAA;AAAA,QAC/D,IAAA,wBAAS,GAAA,EAAA,EAAE,SAAA,EAAW,QAAQ,qBAAA,EAAuB,KAAK,GAAI,QAAA,EAAA,IAAA,EAAK;AAAA,OAAA,EACtE,CAAA;AAAA,MACC,WAAA,wBAAgB,GAAA,EAAA,EAAE,SAAA,EAAW,QAAQ,yBAAA,EAA2B,KAAK,GAAI,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,sBACtF,GAAA,CAAC,MAAA,EAAA,EAAO,MAAA,EAAgB,IAAA,EAAY,CAAA;AAAA,sBACpC,GAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAkB,IAAA,EAAY;AAAA,KAAA,EAC7C;AAAA,GAAA,EACF,CAAA;AAGF,EAAA,MAAM,SAAA,GAAwD;AAAA,IAC5D,OAAA,EAAS,OAAA;AAAA,IACT,KAAA,EAAO,YAAA;AAAA,IACP,SAAA,EAAW;AAAA,GACb;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACE,GAAG,IAAA;AAAA,MACJ,SAAA,EAAW,OAAA;AAAA,QACT,0GAAA;AAAA,QACA,WAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA,SAAA,CAAU,MAAM,CAAA,IAAK,SAAA,CAAU;AAAA;AAAA,GAClC;AAEJ,CAAA;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;AAE1B,IAAO,mBAAA,GAAQ","file":"chunk-EYZVXAPY.js","sourcesContent":["import Button from '@lindle/linoardo/Containment/Button';\nimport type { GlobalVariant } from '@lindle/linoardo/global.types';\nimport * as React from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport type SocialLink = {\n icon: string;\n href: string;\n label?: string;\n};\n\nexport type Badge = {\n label: string;\n};\n\nexport type Avatar = {\n src: string;\n alt?: string;\n};\n\nexport type ProfileCardLayout = 'classic' | 'split' | 'spotlight';\n\nexport type ProfileCardProps = React.HTMLAttributes<HTMLElement> & {\n name: string;\n role?: string;\n description?: React.ReactNode;\n avatar: Avatar;\n socials?: SocialLink[] | React.ReactNode;\n badges?: Badge[];\n layout?: ProfileCardLayout;\n variant?: GlobalVariant;\n};\n\nconst variantMap: Record<GlobalVariant, string> = {\n solid: 'bg-white text-gray-900 border border-gray-200 shadow-lg shadow-gray-200/60',\n outline: 'bg-white text-gray-900 border border-gray-300',\n text: 'bg-transparent text-gray-900',\n ghost: 'bg-slate-50 text-gray-900 border border-slate-100',\n filled: 'bg-slate-900 text-white shadow-2xl shadow-slate-900/30',\n underlined: 'bg-white text-gray-900 border-b-4 border-primary/70',\n rounded: 'bg-white text-gray-900 border border-gray-200 rounded-3xl shadow-md',\n sharp: 'bg-white text-gray-900 border border-gray-200 rounded-none shadow'\n};\n\nconst cardRadiusMap: Record<GlobalVariant, string> = {\n solid: 'rounded-2xl',\n outline: 'rounded-2xl',\n text: 'rounded-2xl',\n ghost: 'rounded-2xl',\n filled: 'rounded-3xl',\n underlined: 'rounded-t-2xl',\n rounded: 'rounded-3xl',\n sharp: 'rounded-none'\n};\n\nconst avatarRadiusMap: Record<GlobalVariant, string> = {\n solid: 'rounded-2xl',\n outline: 'rounded-2xl',\n text: 'rounded-2xl',\n ghost: 'rounded-2xl',\n filled: 'rounded-3xl',\n underlined: 'rounded-2xl',\n rounded: 'rounded-3xl',\n sharp: 'rounded-none'\n};\n\nconst isDarkVariant = (variant: GlobalVariant) => variant === 'filled';\n\nconst SocialIcons: React.FC<{ socials?: SocialLink[] | React.ReactNode; dark?: boolean }> = ({ socials, dark }) => {\n if (!socials) return null;\n if (Array.isArray(socials) && socials.length === 0) return null;\n\n const isSocialLinkArray = Array.isArray(socials) && socials.length > 0 && 'href' in (socials[0] as any);\n\n if (isSocialLinkArray) {\n return (\n <div className='flex flex-wrap gap-2'>\n {(socials as SocialLink[]).map(link => (\n <Button key={link.href} iconOnly icon={link.icon} variant='rounded' size='x-small' {...({ href: link.href, as: 'a' } as any)} />\n ))}\n </div>\n );\n }\n\n return <div className='flex flex-wrap gap-2'>{socials as React.ReactNode}</div>;\n};\n\nconst Badges: React.FC<{ badges?: Badge[]; dark?: boolean }> = ({ badges = [], dark }) => {\n if (badges.length === 0) return null;\n\n const badgeBase = twMerge(\n 'inline-flex items-center rounded-full px-3 py-1 mb-2 text-xs font-semibold',\n dark ? 'bg-white/10 text-white border border-white/20' : 'bg-primary/10 text-primary border border-primary/15'\n );\n\n return (\n <div className='flex flex-wrap gap-2'>\n {badges.map(badge => (\n <span key={badge.label} className={badgeBase}>\n {badge.label}\n </span>\n ))}\n </div>\n );\n};\n\nconst AvatarFrame: React.FC<{\n avatar: Avatar;\n size?: 'md' | 'lg';\n ring?: boolean;\n radius: string;\n}> = ({ avatar, size = 'md', ring, radius }) => {\n const dimension = size === 'lg' ? 'h-28 w-28' : 'h-20 w-20';\n const ringClass = ring ? 'ring-4 ring-white/80 ring-offset-4 ring-offset-transparent' : '';\n return (\n <div className={twMerge('overflow-hidden bg-linear-to-br from-primary/10 to-primary/30', radius, dimension, ringClass)}>\n <img src={avatar.src} alt={avatar.alt ?? ''} className={twMerge('h-full w-full object-cover', radius)} loading='lazy' />\n </div>\n );\n};\n\nconst ProfileCard: React.FC<ProfileCardProps> = ({\n name,\n role,\n description,\n avatar,\n socials,\n badges,\n layout = 'classic',\n variant = 'solid',\n className,\n ...rest\n}) => {\n const baseVariant = variantMap[variant] ?? variantMap.solid;\n const cardRadius = cardRadiusMap[variant] ?? 'rounded-2xl';\n const avatarRadius = avatarRadiusMap[variant] ?? 'rounded-2xl';\n const dark = isDarkVariant(variant);\n const muted = dark ? 'text-white/70' : 'text-gray-600';\n const accent = dark ? 'text-white' : 'text-gray-900';\n\n const content = (\n <>\n <div className='space-y-2'>\n <div className='flex items-center gap-3'>\n <AvatarFrame avatar={avatar} radius={avatarRadius} />\n <div>\n <h3 className={twMerge('text-xl font-semibold', accent)}>{name}</h3>\n {role && <p className={twMerge('text-sm font-medium', muted)}>{role}</p>}\n </div>\n </div>\n {description && <p className={twMerge('text-sm leading-relaxed', muted)}>{description}</p>}\n <Badges badges={badges} dark={dark} />\n </div>\n <SocialIcons socials={socials} dark={dark} />\n </>\n );\n\n const spotlightContent = (\n <div className='relative overflow-hidden'>\n <div className='absolute inset-0 bg-linear-to-br from-primary/10 via-transparent to-primary/20 blur-3xl' />\n <div className='relative flex flex-col gap-6 md:flex-row md:items-center'>\n <AvatarFrame avatar={avatar} size='lg' ring radius={avatarRadius} />\n <div className='space-y-3'>\n <h3 className={twMerge('text-2xl font-semibold', accent)}>{name}</h3>\n {role && <p className={twMerge('text-sm font-medium uppercase tracking-wide', muted)}>{role}</p>}\n {description && <p className={twMerge('text-sm leading-relaxed', muted)}>{description}</p>}\n <Badges badges={badges} dark={dark} />\n <SocialIcons socials={socials} dark={dark} />\n </div>\n </div>\n </div>\n );\n\n const splitContent = (\n <div className='grid gap-6 md:grid-cols-[auto,1fr] md:items-center'>\n <AvatarFrame avatar={avatar} size='lg' ring radius={avatarRadius} />\n <div className='space-y-3'>\n <div>\n <h3 className={twMerge('text-2xl font-semibold', accent)}>{name}</h3>\n {role && <p className={twMerge('text-sm font-medium', muted)}>{role}</p>}\n </div>\n {description && <p className={twMerge('text-sm leading-relaxed', muted)}>{description}</p>}\n <Badges badges={badges} dark={dark} />\n <SocialIcons socials={socials} dark={dark} />\n </div>\n </div>\n );\n\n const layoutMap: Record<ProfileCardLayout, React.ReactNode> = {\n classic: content,\n split: splitContent,\n spotlight: spotlightContent\n };\n\n return (\n <article\n {...rest}\n className={twMerge(\n 'profile-card relative overflow-hidden p-6 transition duration-200 hover:-translate-y-0.5 hover:shadow-xl',\n baseVariant,\n cardRadius,\n className\n )}\n >\n {layoutMap[layout] ?? layoutMap.classic}\n </article>\n );\n};\n\nProfileCard.displayName = 'ProfileCard';\n\nexport default ProfileCard;\n"]}
@@ -1,3 +1,3 @@
1
1
  import 'react';
2
- export { E as default } from '../ExpansionPanelItem-Bd6ZWGkR.cjs';
2
+ export { a as default } from '../ExpansionPanelItem-CZMtq3TL.cjs';
3
3
  import '../global.types-E2uVLemv.cjs';
@@ -1,3 +1,3 @@
1
1
  import 'react';
2
- export { E as default } from '../ExpansionPanelItem-DOjgDeB6.js';
2
+ export { a as default } from '../ExpansionPanelItem-Dom3SgrW.js';
3
3
  import '../global.types-E2uVLemv.js';
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
- import { b as ExpansionPanelProps } from './ExpansionPanelItem-Bd6ZWGkR.cjs';
3
- export { e as ExpansionPanelDensity, E as ExpansionPanelItem, a as ExpansionPanelItemProps, f as ExpansionPanelRounded, c as ExpansionPanelValue, d as ExpansionPanelVariant } from './ExpansionPanelItem-Bd6ZWGkR.cjs';
2
+ import { c as ExpansionPanelProps } from './ExpansionPanelItem-CZMtq3TL.cjs';
3
+ export { E as ExpansionPanelDensity, a as ExpansionPanelItem, b as ExpansionPanelItemProps, d as ExpansionPanelRounded, e as ExpansionPanelValue, f as ExpansionPanelVariant } from './ExpansionPanelItem-CZMtq3TL.cjs';
4
4
  import './global.types-E2uVLemv.cjs';
5
5
 
6
6
  declare const ExpansionPanel: react.ForwardRefExoticComponent<ExpansionPanelProps & react.RefAttributes<HTMLDivElement>>;
@@ -1,6 +1,6 @@
1
1
  import * as react from 'react';
2
- import { b as ExpansionPanelProps } from './ExpansionPanelItem-DOjgDeB6.js';
3
- export { e as ExpansionPanelDensity, E as ExpansionPanelItem, a as ExpansionPanelItemProps, f as ExpansionPanelRounded, c as ExpansionPanelValue, d as ExpansionPanelVariant } from './ExpansionPanelItem-DOjgDeB6.js';
2
+ import { c as ExpansionPanelProps } from './ExpansionPanelItem-Dom3SgrW.js';
3
+ export { E as ExpansionPanelDensity, a as ExpansionPanelItem, b as ExpansionPanelItemProps, d as ExpansionPanelRounded, e as ExpansionPanelValue, f as ExpansionPanelVariant } from './ExpansionPanelItem-Dom3SgrW.js';
4
4
  import './global.types-E2uVLemv.js';
5
5
 
6
6
  declare const ExpansionPanel: react.ForwardRefExoticComponent<ExpansionPanelProps & react.RefAttributes<HTMLDivElement>>;
@@ -32,4 +32,4 @@ interface ListItemProps extends Omit<react.HTMLAttributes<HTMLElement>, 'title'>
32
32
  */
33
33
  declare const ListItem: react.ForwardRefExoticComponent<ListItemProps & react.RefAttributes<HTMLElement>>;
34
34
 
35
- export { ListItem as L, type ListItemProps as a, type ListVariant as b, type ListDensity as c, type ListLines as d, type ListRounded as e };
35
+ export { type ListDensity as L, ListItem as a, type ListItemProps as b, type ListLines as c, type ListRounded as d, type ListVariant as e };
@@ -32,4 +32,4 @@ interface ListItemProps extends Omit<react.HTMLAttributes<HTMLElement>, 'title'>
32
32
  */
33
33
  declare const ListItem: react.ForwardRefExoticComponent<ListItemProps & react.RefAttributes<HTMLElement>>;
34
34
 
35
- export { ListItem as L, type ListItemProps as a, type ListVariant as b, type ListDensity as c, type ListLines as d, type ListRounded as e };
35
+ export { type ListDensity as L, ListItem as a, type ListItemProps as b, type ListLines as c, type ListRounded as d, type ListVariant as e };
package/dist/index.cjs CHANGED
@@ -2150,26 +2150,14 @@ var avatarRadiusMap = {
2150
2150
  sharp: "rounded-none"
2151
2151
  };
2152
2152
  var isDarkVariant = (variant) => variant === "filled";
2153
- var SocialIcons = ({
2154
- socials = [],
2155
- dark
2156
- }) => {
2157
- if (socials.length === 0) return null;
2158
- tailwindMerge.twMerge(
2159
- "flex h-10 w-10 items-center justify-center rounded-full border text-lg transition",
2160
- dark ? "border-white/30 text-white hover:bg-white/10" : "border-gray-200 text-gray-600 hover:border-primary/50 hover:text-primary"
2161
- );
2162
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: socials.map((link) => (
2163
- // <a
2164
- // key={link.href}
2165
- // href={link.href}
2166
- // aria-label={link.label ?? link.icon}
2167
- // className={iconBase}
2168
- // >
2169
- // <i className={twMerge('mdi', link.icon)} aria-hidden />
2170
- // </a>
2171
- /* @__PURE__ */ jsxRuntime.jsx(Button_default, { iconOnly: true, icon: link.icon, variant: "rounded", size: "x-small" })
2172
- )) });
2153
+ var SocialIcons = ({ socials, dark }) => {
2154
+ if (!socials) return null;
2155
+ if (Array.isArray(socials) && socials.length === 0) return null;
2156
+ const isSocialLinkArray = Array.isArray(socials) && socials.length > 0 && "href" in socials[0];
2157
+ if (isSocialLinkArray) {
2158
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: socials.map((link) => /* @__PURE__ */ jsxRuntime.jsx(Button_default, { iconOnly: true, icon: link.icon, variant: "rounded", size: "x-small", ...{ href: link.href, as: "a" } }, link.href)) });
2159
+ }
2160
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap gap-2", children: socials });
2173
2161
  };
2174
2162
  var Badges = ({ badges = [], dark }) => {
2175
2163
  if (badges.length === 0) return null;
@@ -2182,26 +2170,7 @@ var Badges = ({ badges = [], dark }) => {
2182
2170
  var AvatarFrame = ({ avatar, size = "md", ring, radius }) => {
2183
2171
  const dimension = size === "lg" ? "h-28 w-28" : "h-20 w-20";
2184
2172
  const ringClass = ring ? "ring-4 ring-white/80 ring-offset-4 ring-offset-transparent" : "";
2185
- return /* @__PURE__ */ jsxRuntime.jsx(
2186
- "div",
2187
- {
2188
- className: tailwindMerge.twMerge(
2189
- "overflow-hidden bg-linear-to-br from-primary/10 to-primary/30",
2190
- radius,
2191
- dimension,
2192
- ringClass
2193
- ),
2194
- children: /* @__PURE__ */ jsxRuntime.jsx(
2195
- "img",
2196
- {
2197
- src: avatar.src,
2198
- alt: avatar.alt ?? "",
2199
- className: tailwindMerge.twMerge("h-full w-full object-cover", radius),
2200
- loading: "lazy"
2201
- }
2202
- )
2203
- }
2204
- );
2173
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: tailwindMerge.twMerge("overflow-hidden bg-linear-to-br from-primary/10 to-primary/30", radius, dimension, ringClass), children: /* @__PURE__ */ jsxRuntime.jsx("img", { src: avatar.src, alt: avatar.alt ?? "", className: tailwindMerge.twMerge("h-full w-full object-cover", radius), loading: "lazy" }) });
2205
2174
  };
2206
2175
  var ProfileCard = ({
2207
2176
  name,