@oxyhq/bloom 0.34.3 → 0.35.1

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.
Files changed (34) hide show
  1. package/lib/commonjs/avatar-group/AvatarGroup.js +3 -2
  2. package/lib/commonjs/avatar-group/AvatarGroup.js.map +1 -1
  3. package/lib/commonjs/avatar-group/AvatarGroup.web.js +5 -5
  4. package/lib/commonjs/avatar-group/AvatarGroupBase.js +217 -48
  5. package/lib/commonjs/avatar-group/AvatarGroupBase.js.map +1 -1
  6. package/lib/commonjs/avatar-group/cluster-layout.js +252 -0
  7. package/lib/commonjs/avatar-group/cluster-layout.js.map +1 -0
  8. package/lib/module/avatar-group/AvatarGroup.js +3 -2
  9. package/lib/module/avatar-group/AvatarGroup.js.map +1 -1
  10. package/lib/module/avatar-group/AvatarGroup.web.js +5 -5
  11. package/lib/module/avatar-group/AvatarGroupBase.js +217 -48
  12. package/lib/module/avatar-group/AvatarGroupBase.js.map +1 -1
  13. package/lib/module/avatar-group/cluster-layout.js +248 -0
  14. package/lib/module/avatar-group/cluster-layout.js.map +1 -0
  15. package/lib/typescript/commonjs/avatar-group/AvatarGroup.d.ts.map +1 -1
  16. package/lib/typescript/commonjs/avatar-group/AvatarGroupBase.d.ts.map +1 -1
  17. package/lib/typescript/commonjs/avatar-group/cluster-layout.d.ts +55 -0
  18. package/lib/typescript/commonjs/avatar-group/cluster-layout.d.ts.map +1 -0
  19. package/lib/typescript/commonjs/avatar-group/types.d.ts +23 -5
  20. package/lib/typescript/commonjs/avatar-group/types.d.ts.map +1 -1
  21. package/lib/typescript/module/avatar-group/AvatarGroup.d.ts.map +1 -1
  22. package/lib/typescript/module/avatar-group/AvatarGroupBase.d.ts.map +1 -1
  23. package/lib/typescript/module/avatar-group/cluster-layout.d.ts +55 -0
  24. package/lib/typescript/module/avatar-group/cluster-layout.d.ts.map +1 -0
  25. package/lib/typescript/module/avatar-group/types.d.ts +23 -5
  26. package/lib/typescript/module/avatar-group/types.d.ts.map +1 -1
  27. package/package.json +1 -1
  28. package/src/__tests__/AvatarGroupCluster.test.tsx +168 -0
  29. package/src/avatar-group/AvatarGroup.stories.tsx +69 -0
  30. package/src/avatar-group/AvatarGroup.tsx +3 -2
  31. package/src/avatar-group/AvatarGroup.web.tsx +5 -5
  32. package/src/avatar-group/AvatarGroupBase.tsx +298 -89
  33. package/src/avatar-group/cluster-layout.ts +240 -0
  34. package/src/avatar-group/types.ts +23 -5
@@ -1 +1 @@
1
- {"version":3,"names":["React","memo","useMemo","Pressable","StyleSheet","Text","View","Avatar","useTheme","fontSize","jsx","_jsx","jsxs","_jsxs","RING_WIDTH","DEFAULT_OVERLAP_RATIO","getItemName","item","displayName","name","username","getItemKey","index","id","uri","AvatarGroupBaseComponent","items","layout","size","variant","max","total","overlap","spacing","ringColor","showInitials","onPressItem","style","testID","hoverHandlers","theme","isRow","ring","colors","background","effectiveOverlap","Math","round","negativeMargin","rowGap","itemMargin","shown","slice","realTotal","length","overflow","innerSize","cellStyle","width","height","borderRadius","alignItems","justifyContent","borderWidth","borderColor","overflowTextStyle","color","_2xs","fontWeight","interactive","hoverable","onHoverIn","onHoverOut","firstHidden","overflowOnPress","undefined","styles","row","children","map","accessibilityLabel","wrapperStyle","marginLeft","zIndex","cell","ref","registerCellRef","node","collapsable","source","onPress","accessibilityRole","OverflowCircle","count","textStyle","circle","backgroundColor","textSecondary","allowFontScaling","create","flexDirection","AvatarGroupBase"],"sourceRoot":"../../../src","sources":["avatar-group/AvatarGroupBase.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","memo","useMemo","Pressable","StyleSheet","Text","View","Avatar","useTheme","fontSize","computeClusterLayout","jsx","_jsx","jsxs","_jsxs","RING_WIDTH","DEFAULT_OVERLAP_RATIO","DEFAULT_MAX","CLUSTER_DEFAULT_MAX","CLUSTER_RING_RATIO","OVERFLOW_TEXT_COLOR","getItemName","item","displayName","name","username","getItemKey","index","id","uri","AvatarGroupCell","innerSize","variant","showInitials","cellStyle","wrapperStyle","onPressItem","hoverHandlers","accessibilityLabel","interactive","hoverable","onHoverIn","onHoverOut","cell","ref","registerCellRef","node","undefined","collapsable","style","children","source","size","onPress","accessibilityRole","AvatarGroupBaseComponent","items","layout","max","total","overlap","spacing","ringColor","testID","theme","isCluster","isRow","ring","colors","background","effectiveMax","effectiveOverlap","Math","round","negativeMargin","rowGap","itemMargin","shown","slice","realTotal","length","overflow","width","height","borderRadius","alignItems","justifyContent","borderWidth","borderColor","overflowTextStyle","color","_2xs","fontWeight","firstHidden","overflowOnPress","ClusterAvatarGroup","styles","row","map","marginLeft","zIndex","OverflowCircle","count","textStyle","cap","hasOverflow","avatarCap","bubbleCount","bubbles","ringWidth","overflowBubble","overflowElement","diameter","d","position","left","cx","top","cy","bubble","inner","circle","backgroundColor","textSecondary","allowFontScaling","create","flexDirection","AvatarGroupBase"],"sourceRoot":"../../../src","sources":["avatar-group/AvatarGroupBase.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,248 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Deterministic organic circle-packing for the {@link AvatarGroup} `cluster`
5
+ * layout — the iMessage-style "magnetic bubble cluster" where several avatars of
6
+ * NEAR-EQUAL size nestle tightly together and fill a round bounding box (a
7
+ * modestly larger primary with the rest only slightly smaller, packed against
8
+ * each other with a small uniform gap — not a big primary ringed by tiny dots).
9
+ *
10
+ * For 4+ members the layout is produced by a small, FULLY DETERMINISTIC
11
+ * force-directed relaxation (no `Math.random`): the primary is pinned at the
12
+ * centre and the remaining members are seeded on a golden-angle spiral, then a
13
+ * fixed number of relaxation passes (a) pull every non-primary circle toward the
14
+ * centre and (b) push any two circles apart until they clear a uniform gap. A
15
+ * fixed iteration count + deterministic seed means the same `count` always
16
+ * yields byte-identical positions, so native and web render the cluster
17
+ * identically with no `onLayout`/DOM measurement. The very small counts (1, 2,
18
+ * 3) — where a relaxation degenerates into a line or a lone pair — use explicit
19
+ * iMessage-style arrangements instead.
20
+ *
21
+ * Output is resolution-independent: each bubble is expressed as a fraction of
22
+ * the group's bounding box (`cx`/`cy` centre, `d` diameter, all 0..1), so the
23
+ * consumer just multiplies by the pixel `size`. The relaxed blob is recentred on
24
+ * its own centre and scaled so the outermost bubble edge lands on the box edge,
25
+ * so it fills the round box densely with minimal empty margin while every bubble
26
+ * is guaranteed to sit fully inside the `[0, 1]` box — the cluster drops in
27
+ * exactly where a single round Avatar would.
28
+ */
29
+
30
+ /** A single packed bubble, expressed as fractions of the bounding box (0..1). */
31
+
32
+ // Golden angle (~137.5°) — spreads the seed points evenly with no directional
33
+ // bias, which is what gives the relaxed result its organic, non-grid feel.
34
+ const GOLDEN_ANGLE = Math.PI * (3 - Math.sqrt(5));
35
+ // Fixed relaxation passes + a final separation-only cleanup so the last thing
36
+ // that happens is overlap resolution (gaps end uniform and non-negative).
37
+ const ITERATIONS = 500;
38
+ const CLEANUP_ITERATIONS = 80;
39
+ // How hard each pass pulls every non-primary circle toward the centre. This is
40
+ // the only compacting force; separation only ever pushes apart, so any positive
41
+ // value packs the cluster fully — this just controls convergence speed.
42
+ const CENTERING = 0.05;
43
+ // Fraction of an overlap resolved per pass. 1 fully separates each pass; with
44
+ // the pinned primary and many passes this stays stable and converges.
45
+ const SEPARATION_STRENGTH = 1;
46
+ // Uniform gap kept between every touching pair, in primary-radius units
47
+ // (primary radius = 1). Small, so near-equal bubbles nestle tightly like
48
+ // magnets rather than floating apart with visible margins.
49
+ const LAYOUT_GAP = 0.12;
50
+ // Initial spiral spacing. Only affects convergence (the result is re-fitted to
51
+ // the box afterwards), not the final scale.
52
+ const SEED_SPACING = 1.7;
53
+ // Relative radii: the primary is only MODESTLY the largest; every other member
54
+ // tapers gently from SECONDARY_MAX (nearest the primary) down to SECONDARY_MIN
55
+ // (outermost). The spread is deliberately narrow so the cluster reads as a pack
56
+ // of near-equal magnetic bubbles — a slightly larger primary, not a big primary
57
+ // ringed by tiny dots.
58
+ const PRIMARY_RADIUS = 1;
59
+ const SECONDARY_MAX = 0.9;
60
+ const SECONDARY_MIN = 0.8;
61
+ const EPSILON = 1e-6;
62
+
63
+ /** Relative radius for member `index` of a `count`-member cluster. */
64
+ function relativeRadius(index, count) {
65
+ if (index === 0) return PRIMARY_RADIUS;
66
+ if (count <= 2) return SECONDARY_MAX;
67
+ const t = (index - 1) / (count - 2);
68
+ return SECONDARY_MAX + (SECONDARY_MIN - SECONDARY_MAX) * t;
69
+ }
70
+
71
+ /**
72
+ * One separation pass: push any pair closer than `(r_i + r_j + gap)` apart. The
73
+ * primary (index 0) is pinned — when a pair involves it, only the other circle
74
+ * moves — which keeps the largest avatar dead-centre and in front.
75
+ */
76
+ function separate(xs, ys, radii, count) {
77
+ for (let i = 0; i < count; i++) {
78
+ for (let j = i + 1; j < count; j++) {
79
+ let dx = (xs[j] ?? 0) - (xs[i] ?? 0);
80
+ let dy = (ys[j] ?? 0) - (ys[i] ?? 0);
81
+ let dist = Math.hypot(dx, dy);
82
+ const minDist = (radii[i] ?? 0) + (radii[j] ?? 0) + LAYOUT_GAP;
83
+ if (dist >= minDist) continue;
84
+ if (dist < EPSILON) {
85
+ // Coincident points: pick a deterministic direction from the indices so
86
+ // the split is stable (never random).
87
+ const a = (i + 1) * GOLDEN_ANGLE + j;
88
+ dx = Math.cos(a);
89
+ dy = Math.sin(a);
90
+ dist = 1;
91
+ }
92
+ const overlap = (minDist - dist) * SEPARATION_STRENGTH;
93
+ const nx = dx / dist;
94
+ const ny = dy / dist;
95
+ if (i === 0) {
96
+ // Primary pinned: move only the other circle by the full overlap.
97
+ xs[j] = (xs[j] ?? 0) + nx * overlap;
98
+ ys[j] = (ys[j] ?? 0) + ny * overlap;
99
+ } else {
100
+ xs[i] = (xs[i] ?? 0) - nx * overlap / 2;
101
+ ys[i] = (ys[i] ?? 0) - ny * overlap / 2;
102
+ xs[j] = (xs[j] ?? 0) + nx * overlap / 2;
103
+ ys[j] = (ys[j] ?? 0) + ny * overlap / 2;
104
+ }
105
+ }
106
+ }
107
+ }
108
+
109
+ /**
110
+ * Deterministic force-directed pack of `count` circles (primary pinned at the
111
+ * centre), returned as box-fraction bubbles. Used for every cluster with 4+
112
+ * members; 1–3 are handled as explicit arrangements in
113
+ * {@link computeClusterLayout}.
114
+ */
115
+ function packCluster(count) {
116
+ const radii = new Array(count);
117
+ const xs = new Array(count);
118
+ const ys = new Array(count);
119
+ for (let i = 0; i < count; i++) {
120
+ radii[i] = relativeRadius(i, count);
121
+ if (i === 0) {
122
+ xs[i] = 0;
123
+ ys[i] = 0;
124
+ } else {
125
+ // Golden-angle spiral seed around the pinned primary.
126
+ const seedR = SEED_SPACING * Math.sqrt(i);
127
+ const angle = i * GOLDEN_ANGLE;
128
+ xs[i] = seedR * Math.cos(angle);
129
+ ys[i] = seedR * Math.sin(angle);
130
+ }
131
+ }
132
+ for (let iter = 0; iter < ITERATIONS; iter++) {
133
+ // (a) Centering: pull every non-primary circle toward the centre.
134
+ for (let i = 1; i < count; i++) {
135
+ xs[i] = (xs[i] ?? 0) * (1 - CENTERING);
136
+ ys[i] = (ys[i] ?? 0) * (1 - CENTERING);
137
+ }
138
+ // (b) Separation resolves any resulting overlaps (primary stays pinned).
139
+ separate(xs, ys, radii, count);
140
+ xs[0] = 0;
141
+ ys[0] = 0;
142
+ }
143
+ // Final separation-only passes so the cluster ends with clean uniform gaps.
144
+ for (let iter = 0; iter < CLEANUP_ITERATIONS; iter++) {
145
+ separate(xs, ys, radii, count);
146
+ xs[0] = 0;
147
+ ys[0] = 0;
148
+ }
149
+
150
+ // Fit to the unit box so the pack FILLS the round box edge-to-edge with
151
+ // minimal empty margin. The primary was pinned at the origin during
152
+ // relaxation, but the relaxed blob is not centred on it, so we recentre on the
153
+ // cluster's OWN centre (its bounding-box midpoint) rather than the primary:
154
+ // enclose every bubble in a circle around that centre, then scale so the
155
+ // outermost bubble edge lands exactly on the box radius (0.5). Centring the
156
+ // enclosing circle at the box centre keeps every bubble inside the [0, 1] box
157
+ // (the enclosing circle is inscribed in the square) while packing the blob
158
+ // tightly against the edge instead of floating with a gap.
159
+ let minX = Infinity;
160
+ let maxX = -Infinity;
161
+ let minY = Infinity;
162
+ let maxY = -Infinity;
163
+ for (let i = 0; i < count; i++) {
164
+ const x = xs[i] ?? 0;
165
+ const y = ys[i] ?? 0;
166
+ const r = radii[i] ?? 0;
167
+ if (x - r < minX) minX = x - r;
168
+ if (x + r > maxX) maxX = x + r;
169
+ if (y - r < minY) minY = y - r;
170
+ if (y + r > maxY) maxY = y + r;
171
+ }
172
+ const centerX = (minX + maxX) / 2;
173
+ const centerY = (minY + maxY) / 2;
174
+ let bound = 0;
175
+ for (let i = 0; i < count; i++) {
176
+ const reach = Math.hypot((xs[i] ?? 0) - centerX, (ys[i] ?? 0) - centerY) + (radii[i] ?? 0);
177
+ if (reach > bound) bound = reach;
178
+ }
179
+ const scale = bound > EPSILON ? 0.5 / bound : 0.5;
180
+ const bubbles = new Array(count);
181
+ for (let i = 0; i < count; i++) {
182
+ bubbles[i] = {
183
+ cx: 0.5 + ((xs[i] ?? 0) - centerX) * scale,
184
+ cy: 0.5 + ((ys[i] ?? 0) - centerY) * scale,
185
+ d: 2 * (radii[i] ?? 0) * scale
186
+ };
187
+ }
188
+ return bubbles;
189
+ }
190
+
191
+ /**
192
+ * Deterministic cluster layout for `count` bubbles, as box-fraction bubbles
193
+ * ordered primary-first. `count` includes the `+N` overflow bubble when present
194
+ * (it is simply the last, smallest member of the pack).
195
+ *
196
+ * - `<= 0` → empty.
197
+ * - `1` → a single bubble filling the box.
198
+ * - `2` → the iMessage "one in front, one behind" pair: two EQUAL-diameter
199
+ * bubbles offset on a diagonal — the front set low-left, the other tucked
200
+ * behind it to the upper-right. Same radius, so neither member reads as
201
+ * secondary; the overlap + separator ring alone convey the stacking.
202
+ * - `3` → an iMessage-style triangle: the larger primary along the bottom with
203
+ * two smaller members above it.
204
+ * - `4+` → the deterministic force-directed pack of near-equal bubbles, recentred
205
+ * and scaled to fill the round box edge-to-edge (a modestly larger primary near
206
+ * the centre, the rest packed magnetically around it, denser as the count
207
+ * grows).
208
+ */
209
+ export function computeClusterLayout(count) {
210
+ if (count <= 0) return [];
211
+ if (count === 1) return [{
212
+ cx: 0.5,
213
+ cy: 0.5,
214
+ d: 1
215
+ }];
216
+ if (count === 2) {
217
+ // Two EQUAL-diameter bubbles, offset symmetrically on the diagonal: the
218
+ // front (index 0, highest zIndex) sits low-left, the other tucks behind it
219
+ // to the upper-right. They overlap (the intentional "front + behind" pair);
220
+ // the separator ring — not a size difference — reads the stacking.
221
+ return [{
222
+ cx: 0.35,
223
+ cy: 0.65,
224
+ d: 0.64
225
+ }, {
226
+ cx: 0.65,
227
+ cy: 0.35,
228
+ d: 0.64
229
+ }];
230
+ }
231
+ if (count === 3) {
232
+ return [{
233
+ cx: 0.5,
234
+ cy: 0.69,
235
+ d: 0.54
236
+ }, {
237
+ cx: 0.285,
238
+ cy: 0.24,
239
+ d: 0.4
240
+ }, {
241
+ cx: 0.715,
242
+ cy: 0.24,
243
+ d: 0.4
244
+ }];
245
+ }
246
+ return packCluster(count);
247
+ }
248
+ //# sourceMappingURL=cluster-layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GOLDEN_ANGLE","Math","PI","sqrt","ITERATIONS","CLEANUP_ITERATIONS","CENTERING","SEPARATION_STRENGTH","LAYOUT_GAP","SEED_SPACING","PRIMARY_RADIUS","SECONDARY_MAX","SECONDARY_MIN","EPSILON","relativeRadius","index","count","t","separate","xs","ys","radii","i","j","dx","dy","dist","hypot","minDist","a","cos","sin","overlap","nx","ny","packCluster","Array","seedR","angle","iter","minX","Infinity","maxX","minY","maxY","x","y","r","centerX","centerY","bound","reach","scale","bubbles","cx","cy","d","computeClusterLayout"],"sourceRoot":"../../../src","sources":["avatar-group/cluster-layout.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroup.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/AvatarGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAGpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAchD,eAAO,MAAM,WAAW,8CAA6B,CAAC"}
1
+ {"version":3,"file":"AvatarGroup.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/AvatarGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAGpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAehD,eAAO,MAAM,WAAW,8CAA6B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroupBase.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/AvatarGroupBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAIL,IAAI,EAEL,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAiBjE,6EAA6E;AAC7E,MAAM,WAAW,4BAA4B;IAC3C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,oEAAoE;IACpE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,oBAAqB,SAAQ,gBAAgB;IACrD,aAAa,CAAC,EAAE,4BAA4B,CAAC;CAC9C;AAuPD,eAAO,MAAM,eAAe,kDAAiC,CAAC"}
1
+ {"version":3,"file":"AvatarGroupBase.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/AvatarGroupBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAIL,IAAI,EAIL,MAAM,cAAc,CAAC;AAMtB,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA0BjE,6EAA6E;AAC7E,MAAM,WAAW,4BAA4B;IAC3C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,oEAAoE;IACpE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,oBAAqB,SAAQ,gBAAgB;IACrD,aAAa,CAAC,EAAE,4BAA4B,CAAC;CAC9C;AA4bD,eAAO,MAAM,eAAe,kDAAiC,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Deterministic organic circle-packing for the {@link AvatarGroup} `cluster`
3
+ * layout — the iMessage-style "magnetic bubble cluster" where several avatars of
4
+ * NEAR-EQUAL size nestle tightly together and fill a round bounding box (a
5
+ * modestly larger primary with the rest only slightly smaller, packed against
6
+ * each other with a small uniform gap — not a big primary ringed by tiny dots).
7
+ *
8
+ * For 4+ members the layout is produced by a small, FULLY DETERMINISTIC
9
+ * force-directed relaxation (no `Math.random`): the primary is pinned at the
10
+ * centre and the remaining members are seeded on a golden-angle spiral, then a
11
+ * fixed number of relaxation passes (a) pull every non-primary circle toward the
12
+ * centre and (b) push any two circles apart until they clear a uniform gap. A
13
+ * fixed iteration count + deterministic seed means the same `count` always
14
+ * yields byte-identical positions, so native and web render the cluster
15
+ * identically with no `onLayout`/DOM measurement. The very small counts (1, 2,
16
+ * 3) — where a relaxation degenerates into a line or a lone pair — use explicit
17
+ * iMessage-style arrangements instead.
18
+ *
19
+ * Output is resolution-independent: each bubble is expressed as a fraction of
20
+ * the group's bounding box (`cx`/`cy` centre, `d` diameter, all 0..1), so the
21
+ * consumer just multiplies by the pixel `size`. The relaxed blob is recentred on
22
+ * its own centre and scaled so the outermost bubble edge lands on the box edge,
23
+ * so it fills the round box densely with minimal empty margin while every bubble
24
+ * is guaranteed to sit fully inside the `[0, 1]` box — the cluster drops in
25
+ * exactly where a single round Avatar would.
26
+ */
27
+ /** A single packed bubble, expressed as fractions of the bounding box (0..1). */
28
+ export interface ClusterBubble {
29
+ /** Centre X as a fraction of the box width. */
30
+ cx: number;
31
+ /** Centre Y as a fraction of the box height. */
32
+ cy: number;
33
+ /** Diameter as a fraction of the box size. */
34
+ d: number;
35
+ }
36
+ /**
37
+ * Deterministic cluster layout for `count` bubbles, as box-fraction bubbles
38
+ * ordered primary-first. `count` includes the `+N` overflow bubble when present
39
+ * (it is simply the last, smallest member of the pack).
40
+ *
41
+ * - `<= 0` → empty.
42
+ * - `1` → a single bubble filling the box.
43
+ * - `2` → the iMessage "one in front, one behind" pair: two EQUAL-diameter
44
+ * bubbles offset on a diagonal — the front set low-left, the other tucked
45
+ * behind it to the upper-right. Same radius, so neither member reads as
46
+ * secondary; the overlap + separator ring alone convey the stacking.
47
+ * - `3` → an iMessage-style triangle: the larger primary along the bottom with
48
+ * two smaller members above it.
49
+ * - `4+` → the deterministic force-directed pack of near-equal bubbles, recentred
50
+ * and scaled to fill the round box edge-to-edge (a modestly larger primary near
51
+ * the centre, the rest packed magnetically around it, denser as the count
52
+ * grows).
53
+ */
54
+ export declare function computeClusterLayout(count: number): ClusterBubble[];
55
+ //# sourceMappingURL=cluster-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster-layout.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/cluster-layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,CAAC,EAAE,MAAM,CAAC;CACX;AAqKD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAqBnE"}
@@ -28,14 +28,27 @@ export interface AvatarGroupProps {
28
28
  items: AvatarGroupItem[];
29
29
  /**
30
30
  * How the avatars are arranged.
31
- * - `'stack'` (default): overlapping facepile with a thin separator ring, a
32
- * trailing `+N` overflow chip, and the first item on top.
31
+ * - `'stack'` (default): overlapping horizontal facepile with a thin separator
32
+ * ring, a trailing `+N` overflow chip, and the first item on top.
33
33
  * - `'row'`: avatars placed adjacent with a positive `spacing` gap and NO
34
34
  * separator ring — an "adjacent row" of icons (e.g. a top-tokens strip).
35
35
  * Still collapses into the `+N` overflow chip at `max`.
36
+ * - `'cluster'`: a compact 2D "magnetic bubble cluster" (iMessage-style) —
37
+ * avatars of VARYING sizes deterministically packed into a round bounding
38
+ * box with a uniform gap: the first item (primary) is the largest and sits
39
+ * centred/in front, the rest nestle around it. Scales from 2 (a "front +
40
+ * behind" pair) up through a dense pack (~20), collapsing into a trailing
41
+ * `+N` bubble past `max`. Unlike the horizontal layouts, `size` is the
42
+ * overall box diameter (see `size`) and `max` defaults to 20 (see `max`), so
43
+ * it drops in where a single round Avatar would.
44
+ */
45
+ layout?: 'stack' | 'row' | 'cluster';
46
+ /**
47
+ * Diameter in pixels. For `'stack'`/`'row'` this is the diameter of EACH
48
+ * avatar. For `'cluster'` this is the diameter of the whole bounding box (the
49
+ * packed bubbles are sized as fractions of it), so the cluster occupies the
50
+ * same footprint as a single `size`-px Avatar.
36
51
  */
37
- layout?: 'stack' | 'row';
38
- /** Diameter of each avatar in pixels. */
39
52
  size?: number;
40
53
  /**
41
54
  * Rendition variant forwarded to each {@link Avatar}'s `variant` prop, which
@@ -44,7 +57,12 @@ export interface AvatarGroupProps {
44
57
  * `'thumb'`; pass `undefined` to request full-size renditions.
45
58
  */
46
59
  variant?: string;
47
- /** Maximum number of avatars to render before collapsing into the overflow chip. */
60
+ /**
61
+ * Maximum number of avatars to render before collapsing into the overflow
62
+ * chip. Defaults to 5 for `'stack'`/`'row'`, and to 20 for `'cluster'` (which
63
+ * packs densely). In `'cluster'` the cap is inclusive of the `+N` bubble: past
64
+ * the cap the last slot becomes the overflow bubble.
65
+ */
48
66
  max?: number;
49
67
  /**
50
68
  * Real total count of members. When provided and larger than the number of
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACzB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACvE,gCAAgC;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IACrC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACvE,gCAAgC;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroup.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/AvatarGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAGpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAchD,eAAO,MAAM,WAAW,8CAA6B,CAAC"}
1
+ {"version":3,"file":"AvatarGroup.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/AvatarGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAe,MAAM,OAAO,CAAC;AAGpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAehD,eAAO,MAAM,WAAW,8CAA6B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroupBase.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/AvatarGroupBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAIL,IAAI,EAEL,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAiBjE,6EAA6E;AAC7E,MAAM,WAAW,4BAA4B;IAC3C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,oEAAoE;IACpE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,oBAAqB,SAAQ,gBAAgB;IACrD,aAAa,CAAC,EAAE,4BAA4B,CAAC;CAC9C;AAuPD,eAAO,MAAM,eAAe,kDAAiC,CAAC"}
1
+ {"version":3,"file":"AvatarGroupBase.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/AvatarGroupBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAIL,IAAI,EAIL,MAAM,cAAc,CAAC;AAMtB,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AA0BjE,6EAA6E;AAC7E,MAAM,WAAW,4BAA4B;IAC3C,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,oEAAoE;IACpE,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;CAC9D;AAED,UAAU,oBAAqB,SAAQ,gBAAgB;IACrD,aAAa,CAAC,EAAE,4BAA4B,CAAC;CAC9C;AA4bD,eAAO,MAAM,eAAe,kDAAiC,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Deterministic organic circle-packing for the {@link AvatarGroup} `cluster`
3
+ * layout — the iMessage-style "magnetic bubble cluster" where several avatars of
4
+ * NEAR-EQUAL size nestle tightly together and fill a round bounding box (a
5
+ * modestly larger primary with the rest only slightly smaller, packed against
6
+ * each other with a small uniform gap — not a big primary ringed by tiny dots).
7
+ *
8
+ * For 4+ members the layout is produced by a small, FULLY DETERMINISTIC
9
+ * force-directed relaxation (no `Math.random`): the primary is pinned at the
10
+ * centre and the remaining members are seeded on a golden-angle spiral, then a
11
+ * fixed number of relaxation passes (a) pull every non-primary circle toward the
12
+ * centre and (b) push any two circles apart until they clear a uniform gap. A
13
+ * fixed iteration count + deterministic seed means the same `count` always
14
+ * yields byte-identical positions, so native and web render the cluster
15
+ * identically with no `onLayout`/DOM measurement. The very small counts (1, 2,
16
+ * 3) — where a relaxation degenerates into a line or a lone pair — use explicit
17
+ * iMessage-style arrangements instead.
18
+ *
19
+ * Output is resolution-independent: each bubble is expressed as a fraction of
20
+ * the group's bounding box (`cx`/`cy` centre, `d` diameter, all 0..1), so the
21
+ * consumer just multiplies by the pixel `size`. The relaxed blob is recentred on
22
+ * its own centre and scaled so the outermost bubble edge lands on the box edge,
23
+ * so it fills the round box densely with minimal empty margin while every bubble
24
+ * is guaranteed to sit fully inside the `[0, 1]` box — the cluster drops in
25
+ * exactly where a single round Avatar would.
26
+ */
27
+ /** A single packed bubble, expressed as fractions of the bounding box (0..1). */
28
+ export interface ClusterBubble {
29
+ /** Centre X as a fraction of the box width. */
30
+ cx: number;
31
+ /** Centre Y as a fraction of the box height. */
32
+ cy: number;
33
+ /** Diameter as a fraction of the box size. */
34
+ d: number;
35
+ }
36
+ /**
37
+ * Deterministic cluster layout for `count` bubbles, as box-fraction bubbles
38
+ * ordered primary-first. `count` includes the `+N` overflow bubble when present
39
+ * (it is simply the last, smallest member of the pack).
40
+ *
41
+ * - `<= 0` → empty.
42
+ * - `1` → a single bubble filling the box.
43
+ * - `2` → the iMessage "one in front, one behind" pair: two EQUAL-diameter
44
+ * bubbles offset on a diagonal — the front set low-left, the other tucked
45
+ * behind it to the upper-right. Same radius, so neither member reads as
46
+ * secondary; the overlap + separator ring alone convey the stacking.
47
+ * - `3` → an iMessage-style triangle: the larger primary along the bottom with
48
+ * two smaller members above it.
49
+ * - `4+` → the deterministic force-directed pack of near-equal bubbles, recentred
50
+ * and scaled to fill the round box edge-to-edge (a modestly larger primary near
51
+ * the centre, the rest packed magnetically around it, denser as the count
52
+ * grows).
53
+ */
54
+ export declare function computeClusterLayout(count: number): ClusterBubble[];
55
+ //# sourceMappingURL=cluster-layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cluster-layout.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/cluster-layout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,+CAA+C;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,gDAAgD;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,CAAC,EAAE,MAAM,CAAC;CACX;AAqKD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAqBnE"}
@@ -28,14 +28,27 @@ export interface AvatarGroupProps {
28
28
  items: AvatarGroupItem[];
29
29
  /**
30
30
  * How the avatars are arranged.
31
- * - `'stack'` (default): overlapping facepile with a thin separator ring, a
32
- * trailing `+N` overflow chip, and the first item on top.
31
+ * - `'stack'` (default): overlapping horizontal facepile with a thin separator
32
+ * ring, a trailing `+N` overflow chip, and the first item on top.
33
33
  * - `'row'`: avatars placed adjacent with a positive `spacing` gap and NO
34
34
  * separator ring — an "adjacent row" of icons (e.g. a top-tokens strip).
35
35
  * Still collapses into the `+N` overflow chip at `max`.
36
+ * - `'cluster'`: a compact 2D "magnetic bubble cluster" (iMessage-style) —
37
+ * avatars of VARYING sizes deterministically packed into a round bounding
38
+ * box with a uniform gap: the first item (primary) is the largest and sits
39
+ * centred/in front, the rest nestle around it. Scales from 2 (a "front +
40
+ * behind" pair) up through a dense pack (~20), collapsing into a trailing
41
+ * `+N` bubble past `max`. Unlike the horizontal layouts, `size` is the
42
+ * overall box diameter (see `size`) and `max` defaults to 20 (see `max`), so
43
+ * it drops in where a single round Avatar would.
44
+ */
45
+ layout?: 'stack' | 'row' | 'cluster';
46
+ /**
47
+ * Diameter in pixels. For `'stack'`/`'row'` this is the diameter of EACH
48
+ * avatar. For `'cluster'` this is the diameter of the whole bounding box (the
49
+ * packed bubbles are sized as fractions of it), so the cluster occupies the
50
+ * same footprint as a single `size`-px Avatar.
36
51
  */
37
- layout?: 'stack' | 'row';
38
- /** Diameter of each avatar in pixels. */
39
52
  size?: number;
40
53
  /**
41
54
  * Rendition variant forwarded to each {@link Avatar}'s `variant` prop, which
@@ -44,7 +57,12 @@ export interface AvatarGroupProps {
44
57
  * `'thumb'`; pass `undefined` to request full-size renditions.
45
58
  */
46
59
  variant?: string;
47
- /** Maximum number of avatars to render before collapsing into the overflow chip. */
60
+ /**
61
+ * Maximum number of avatars to render before collapsing into the overflow
62
+ * chip. Defaults to 5 for `'stack'`/`'row'`, and to 20 for `'cluster'` (which
63
+ * packs densely). In `'cluster'` the cap is inclusive of the `+N` bubble: past
64
+ * the cap the last slot becomes the overflow bubble.
65
+ */
48
66
  max?: number;
49
67
  /**
50
68
  * Real total count of members. When provided and larger than the number of
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACzB,yCAAyC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACvE,gCAAgC;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/avatar-group/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;IACrC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACvE,gCAAgC;IAChC,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxyhq/bloom",
3
- "version": "0.34.3",
3
+ "version": "0.35.1",
4
4
  "description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",