@moontra/moonui-pro 2.11.3 → 2.12.0

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.
@@ -83,16 +83,29 @@ const MoonUIAvatarFallbackPro = React.forwardRef<
83
83
  MoonUIAvatarFallbackPro.displayName = AvatarPrimitive.Fallback.displayName;
84
84
 
85
85
  // Avatar Group Component for displaying multiple avatars
86
- interface AvatarGroupProps extends React.HTMLAttributes<HTMLDivElement> {
87
- limit?: number;
88
- avatars: React.ReactNode[];
86
+ interface MoonUIAvatarGroupProProps extends React.HTMLAttributes<HTMLDivElement> {
87
+ max?: number;
88
+ size?: "xs" | "sm" | "md" | "lg" | "xl" | "2xl";
89
+ children?: React.ReactNode;
89
90
  overlapOffset?: number;
90
91
  }
91
92
 
92
- const MoonUIAvatarGroupPro = React.forwardRef<HTMLDivElement, AvatarGroupProps>(
93
- ({ className, limit, avatars, overlapOffset = -8, ...props }, ref) => {
94
- const visibleAvatars = limit ? avatars.slice(0, limit) : avatars;
95
- const remainingCount = limit ? Math.max(0, avatars.length - limit) : 0;
93
+ const MoonUIAvatarGroupPro = React.forwardRef<HTMLDivElement, MoonUIAvatarGroupProProps>(
94
+ ({ className, max = 3, size = "md", children, overlapOffset, ...props }, ref) => {
95
+ const childrenArray = React.Children.toArray(children);
96
+ const visibleChildren = max ? childrenArray.slice(0, max) : childrenArray;
97
+ const remainingCount = max ? Math.max(0, childrenArray.length - max) : 0;
98
+
99
+ // Calculate overlap offset based on size
100
+ const defaultOffsets = {
101
+ xs: -4,
102
+ sm: -6,
103
+ md: -8,
104
+ lg: -10,
105
+ xl: -12,
106
+ "2xl": -16,
107
+ };
108
+ const finalOffset = overlapOffset ?? defaultOffsets[size as keyof typeof defaultOffsets] ?? -8;
96
109
 
97
110
  return (
98
111
  <div
@@ -101,25 +114,27 @@ const MoonUIAvatarGroupPro = React.forwardRef<HTMLDivElement, AvatarGroupProps>(
101
114
  {...props}
102
115
  >
103
116
  <div className="flex">
104
- {visibleAvatars.map((avatar, index) => (
117
+ {visibleChildren.map((child, index) => (
105
118
  <div
106
119
  key={index}
107
- className="relative"
120
+ className="relative ring-2 ring-background rounded-full"
108
121
  style={{
109
- marginLeft: index === 0 ? 0 : `${overlapOffset}px`,
110
- zIndex: visibleAvatars.length - index
122
+ marginLeft: index === 0 ? 0 : `${finalOffset}px`,
123
+ zIndex: visibleChildren.length - index
111
124
  }}
112
125
  >
113
- {avatar}
126
+ {React.isValidElement(child) && child.type === MoonUIAvatarPro
127
+ ? React.cloneElement(child as React.ReactElement<any>, { size })
128
+ : child}
114
129
  </div>
115
130
  ))}
116
131
  {remainingCount > 0 && (
117
132
  <div
118
- className="relative z-0"
119
- style={{ marginLeft: `${overlapOffset}px` }}
133
+ className="relative z-0 ring-2 ring-background rounded-full"
134
+ style={{ marginLeft: `${finalOffset}px` }}
120
135
  >
121
- <MoonUIAvatarPro variant="border">
122
- <MoonUIAvatarFallbackPro>
136
+ <MoonUIAvatarPro size={size} className="bg-muted">
137
+ <MoonUIAvatarFallbackPro className="text-xs font-medium">
123
138
  +{remainingCount}
124
139
  </MoonUIAvatarFallbackPro>
125
140
  </MoonUIAvatarPro>
@@ -130,9 +145,9 @@ const MoonUIAvatarGroupPro = React.forwardRef<HTMLDivElement, AvatarGroupProps>(
130
145
  );
131
146
  }
132
147
  );
133
- MoonUIAvatarGroupPro.displayName = "AvatarGroup";
148
+ MoonUIAvatarGroupPro.displayName = "MoonUIAvatarGroupPro";
134
149
 
135
- export { MoonUIAvatarPro, MoonUIAvatarImagePro, MoonUIAvatarFallbackPro, MoonUIAvatarGroupPro as AvatarGroup };
150
+ export { MoonUIAvatarPro, MoonUIAvatarImagePro, MoonUIAvatarFallbackPro, MoonUIAvatarGroupPro };
136
151
 
137
152
  // Backward compatibility exports
138
- export { MoonUIAvatarPro as Avatar, MoonUIAvatarImagePro as AvatarImage, MoonUIAvatarFallbackPro as AvatarFallback };
153
+ export { MoonUIAvatarPro as Avatar, MoonUIAvatarImagePro as AvatarImage, MoonUIAvatarFallbackPro as AvatarFallback, MoonUIAvatarGroupPro as AvatarGroup };