@revikornmann/muka-ui 0.27.1 → 0.27.3

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 (40) hide show
  1. package/dist/cjs/components/Avatar/Avatar.css +45 -11
  2. package/dist/cjs/components/Avatar/Avatar.js +4 -1
  3. package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
  4. package/dist/cjs/components/Avatar/AvatarGroup.js +4 -2
  5. package/dist/cjs/components/Avatar/AvatarGroup.js.map +1 -1
  6. package/dist/cjs/components/Tabs/Tabs.js +6 -3
  7. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  8. package/dist/esm/components/Avatar/Avatar.css +45 -11
  9. package/dist/esm/components/Avatar/Avatar.js +4 -1
  10. package/dist/esm/components/Avatar/Avatar.js.map +1 -1
  11. package/dist/esm/components/Avatar/AvatarGroup.js +4 -2
  12. package/dist/esm/components/Avatar/AvatarGroup.js.map +1 -1
  13. package/dist/esm/components/Tabs/Tabs.js +6 -3
  14. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  15. package/dist/styles/components/Avatar.css +45 -11
  16. package/dist/styles/index.css +766 -724
  17. package/dist/styles/muka-dark.css +766 -724
  18. package/dist/styles/muka-light.css +766 -724
  19. package/dist/styles/tokens-bouwplan-dark.css +15 -7
  20. package/dist/styles/tokens-bouwplan-light.css +15 -7
  21. package/dist/styles/tokens-fscl-dark.css +15 -7
  22. package/dist/styles/tokens-fscl-light.css +15 -7
  23. package/dist/styles/tokens-grip-dark.css +15 -7
  24. package/dist/styles/tokens-grip-light.css +15 -7
  25. package/dist/styles/tokens-muka-dark.css +15 -7
  26. package/dist/styles/tokens-muka-light.css +15 -7
  27. package/dist/styles/tokens-wireframe-dark.css +15 -7
  28. package/dist/styles/tokens-wireframe-light.css +15 -7
  29. package/dist/styles/wireframe-dark.css +766 -724
  30. package/dist/styles/wireframe-light.css +766 -724
  31. package/dist/types/components/Avatar/Avatar.d.ts +4 -1
  32. package/dist/types/components/Avatar/Avatar.d.ts.map +1 -1
  33. package/dist/types/components/Avatar/AvatarGroup.d.ts +8 -0
  34. package/dist/types/components/Avatar/AvatarGroup.d.ts.map +1 -1
  35. package/dist/types/components/Tabs/Tabs.d.ts.map +1 -1
  36. package/docs/consumers/brand.md +6 -2
  37. package/docs/consumers/setup-instructions.md +35 -3
  38. package/package.json +1 -1
  39. package/skills/setup-muka/SKILL.md +36 -3
  40. package/tokens/t4-components/avatar.json +46 -8
@@ -7,7 +7,8 @@
7
7
  align-items: center;
8
8
  justify-content: center;
9
9
  flex-shrink: 0;
10
- overflow: hidden;
10
+ /* No overflow clipping: the status dot sits on the edge. The image and the
11
+ loading shimmer round themselves to the avatar shape instead. */
11
12
  user-select: none;
12
13
  vertical-align: middle;
13
14
  background-color: var(--avatar-color-background-default);
@@ -80,9 +81,10 @@
80
81
  border-radius: var(--avatar-radius-square-sm);
81
82
  }
82
83
 
83
- /* 4xs is too small for initials, the fallback icon or a status dot:
84
+ /* 4xs is too small for initials, an icon, the fallback icon or a status dot:
84
85
  it shows the picture, or the plain background */
85
86
  .muka-avatar--4xs .muka-avatar__initials,
87
+ .muka-avatar--4xs .muka-avatar__icon,
86
88
  .muka-avatar--4xs .muka-avatar__fallback,
87
89
  .muka-avatar--4xs .muka-avatar__status {
88
90
  display: none;
@@ -118,38 +120,59 @@
118
120
  .muka-avatar__skeleton {
119
121
  position: absolute;
120
122
  inset: 0;
123
+ border-radius: inherit;
121
124
  background: linear-gradient(
122
125
  90deg,
123
126
  transparent 0%,
124
127
  var(--color-surface-level1) 50%,
125
128
  transparent 100%
126
- );
129
+ ) no-repeat;
130
+ background-size: 50% 100%;
127
131
  animation: avatar-loading 1.5s ease-in-out infinite;
128
132
  }
129
133
 
134
+ /* The highlight sweeps by background position, so it stays inside the
135
+ rounded shape without the avatar clipping its overflow */
130
136
  @keyframes avatar-loading {
131
137
  0% {
132
- transform: translateX(-100%);
138
+ background-position: -100% 0;
133
139
  }
134
140
  100% {
135
- transform: translateX(100%);
141
+ background-position: 200% 0;
136
142
  }
137
143
  }
138
144
 
139
145
  /* Avatar content */
140
146
  .muka-avatar__image {
147
+ border-radius: inherit;
141
148
  width: 100%;
142
149
  height: 100%;
143
150
  object-fit: cover;
144
151
  display: block;
145
152
  }
146
153
 
154
+ /* Icon slot: a fixed icon size per avatar size, in the initials colour
155
+ (subtle text) */
147
156
  .muka-avatar__icon {
148
- width: 60%;
149
- height: 60%;
150
157
  display: flex;
151
158
  align-items: center;
152
159
  justify-content: center;
160
+ color: var(--avatar-color-foreground-default);
161
+ }
162
+
163
+ .muka-avatar--3xs .muka-avatar__icon { width: var(--avatar-icon-size-3xs); height: var(--avatar-icon-size-3xs); }
164
+ .muka-avatar--2xs .muka-avatar__icon { width: var(--avatar-icon-size-2xs); height: var(--avatar-icon-size-2xs); }
165
+ .muka-avatar--xs .muka-avatar__icon { width: var(--avatar-icon-size-xs); height: var(--avatar-icon-size-xs); }
166
+ .muka-avatar--sm .muka-avatar__icon { width: var(--avatar-icon-size-sm); height: var(--avatar-icon-size-sm); }
167
+ .muka-avatar--md .muka-avatar__icon { width: var(--avatar-icon-size-md); height: var(--avatar-icon-size-md); }
168
+ .muka-avatar--lg .muka-avatar__icon { width: var(--avatar-icon-size-lg); height: var(--avatar-icon-size-lg); }
169
+ .muka-avatar--xl .muka-avatar__icon { width: var(--avatar-icon-size-xl); height: var(--avatar-icon-size-xl); }
170
+
171
+ /* A Muka Icon fills the slot and takes its colour (its own `color` prop still wins) */
172
+ .muka-avatar__icon .muka-icon {
173
+ width: 100%;
174
+ height: 100%;
175
+ color: inherit;
153
176
  }
154
177
 
155
178
  .muka-avatar__icon svg {
@@ -256,9 +279,12 @@
256
279
 
257
280
  /* Avatar Group (Figma "Avatar Stack") */
258
281
  .muka-avatar-group {
282
+ position: relative;
259
283
  display: inline-flex;
260
284
  align-items: center;
261
285
  flex-direction: row;
286
+ /* Never stretch to a grid cell or column, so the badge stays on the last avatar */
287
+ width: fit-content;
262
288
  }
263
289
 
264
290
  /* Later avatars sit on top of earlier ones (DOM order); a hovered one comes to the front */
@@ -278,7 +304,7 @@
278
304
  box-shadow: 0 0 0 var(--avatar-group-ring-width) var(--avatar-group-ring-color);
279
305
  }
280
306
 
281
- /* Overlap. Figma specifies exact values for 48 / 32 / 24px avatars (sm / 2xs / 3xs);
307
+ /* Overlap. Figma specifies exact values for 40 / 32 / 24px avatars (xs / 2xs / 3xs);
282
308
  other sizes use the same proportions: tight 2/3, compact 1/2, spacious 1/3. */
283
309
  .muka-avatar-group--4xs { --muka-avatar-group-size: var(--avatar-size-4xs); }
284
310
  .muka-avatar-group--3xs { --muka-avatar-group-size: var(--avatar-size-3xs); }
@@ -293,13 +319,13 @@
293
319
  .muka-avatar-group--compact { --muka-avatar-group-overlap: calc(var(--muka-avatar-group-size) / 2); }
294
320
  .muka-avatar-group--spacious { --muka-avatar-group-overlap: calc(var(--muka-avatar-group-size) / 3); }
295
321
 
296
- .muka-avatar-group--tight.muka-avatar-group--sm { --muka-avatar-group-overlap: var(--avatar-group-overlap-tight-sm); }
322
+ .muka-avatar-group--tight.muka-avatar-group--xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-tight-xs); }
297
323
  .muka-avatar-group--tight.muka-avatar-group--2xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-tight-2xs); }
298
324
  .muka-avatar-group--tight.muka-avatar-group--3xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-tight-3xs); }
299
- .muka-avatar-group--compact.muka-avatar-group--sm { --muka-avatar-group-overlap: var(--avatar-group-overlap-compact-sm); }
325
+ .muka-avatar-group--compact.muka-avatar-group--xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-compact-xs); }
300
326
  .muka-avatar-group--compact.muka-avatar-group--2xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-compact-2xs); }
301
327
  .muka-avatar-group--compact.muka-avatar-group--3xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-compact-3xs); }
302
- .muka-avatar-group--spacious.muka-avatar-group--sm { --muka-avatar-group-overlap: var(--avatar-group-overlap-spacious-sm); }
328
+ .muka-avatar-group--spacious.muka-avatar-group--xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-spacious-xs); }
303
329
  .muka-avatar-group--spacious.muka-avatar-group--2xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-spacious-2xs); }
304
330
  .muka-avatar-group--spacious.muka-avatar-group--3xs { --muka-avatar-group-overlap: var(--avatar-group-overlap-spacious-3xs); }
305
331
 
@@ -307,6 +333,14 @@
307
333
  margin-left: calc(-1 * var(--muka-avatar-group-overlap));
308
334
  }
309
335
 
336
+ /* Badge: a BadgeNumber on the top-right corner of the stack, above every avatar */
337
+ .muka-avatar-group__badge {
338
+ position: absolute;
339
+ top: calc(-1 * var(--avatar-group-badge-offset));
340
+ right: calc(-1 * var(--avatar-group-badge-offset));
341
+ z-index: 20;
342
+ }
343
+
310
344
  /* Overflow avatar styling */
311
345
  .muka-avatar--overflow {
312
346
  background-color: var(--avatar-color-background-default);