@moises.ai/design-system 3.10.17 → 3.10.18

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moises.ai/design-system",
3
- "version": "3.10.17",
3
+ "version": "3.10.18",
4
4
  "description": "Design System package based on @radix-ui/themes with custom defaults",
5
5
  "private": false,
6
6
  "type": "module",
@@ -77,10 +77,7 @@ function NewSetlistButton({
77
77
  </div>
78
78
  }
79
79
  text={text}
80
- className={classNames(
81
- styles.newSetlistItemButton,
82
- className,
83
- )}
80
+ className={classNames(styles.newSetlistItemButton, className)}
84
81
  collapsed={collapsed}
85
82
  style={style}
86
83
  />
@@ -323,11 +320,15 @@ export const SetlistList = ({
323
320
  const collapsedVisibleOffset = 4
324
321
  const maxCollapsedItems = 4
325
322
  const collapsedNewItemOffset = collapsed && onNewSetlistClick ? 1 : 0
326
- const showCollapsedStack = collapsed && !isHoveredWhenCollapsed && !isCollapseTransitioning
323
+ const showCollapsedStack =
324
+ collapsed && !isHoveredWhenCollapsed && !isCollapseTransitioning
327
325
  const visibleSetlists = setlists
328
326
 
329
327
  const totalAnimatedItems = setlists.length + (onNewSetlistClick ? 1 : 0)
330
- const staggerTotalDuration = staggerItemDuration + totalAnimatedItems * staggerBaseDelay
328
+ const slideItemCount = Math.min(4, totalAnimatedItems)
329
+ const slideTotalDuration =
330
+ staggerItemDuration + Math.max(0, slideItemCount - 1) * staggerBaseDelay
331
+ const staggerTotalDuration = slideTotalDuration
331
332
 
332
333
  const expandItems = () => {
333
334
  if (shrinkTimeoutRef.current) {
@@ -460,6 +461,13 @@ export const SetlistList = ({
460
461
  '0 3.401px 13.603px -6.801px var(--Overlays-Black-Alpha-2, rgba(0, 0, 0, 0.10)), 0 2.551px 10.202px -3.401px var(--Overlays-Black-Alpha-2, rgba(0, 0, 0, 0.10)), 0 1.701px 2.551px -1.701px var(--Overlays-Black-Alpha-3, rgba(0, 0, 0, 0.15))',
461
462
  ]
462
463
 
464
+ const narrowingPerLevel = 1
465
+ const scale =
466
+ stackPosition === 0
467
+ ? 1
468
+ : (collapsedItemHeight - stackPosition * narrowingPerLevel * 2) /
469
+ collapsedItemHeight
470
+
463
471
  return {
464
472
  position: 'relative',
465
473
  marginTop:
@@ -468,27 +476,59 @@ export const SetlistList = ({
468
476
  : -(collapsedItemHeight - collapsedVisibleOffset),
469
477
  zIndex,
470
478
  boxShadow: boxShadows[index],
479
+ transform: scale < 1 ? `scaleX(${scale})` : undefined,
471
480
  }
472
481
  }
473
482
 
474
- const isStaggerActive = (collapsed && !showCollapsedStack) || isCollapseTransitioning
483
+ const isStaggerActive =
484
+ (collapsed && !showCollapsedStack) || isCollapseTransitioning
475
485
  const itemCollapsed = collapsed || isCollapseTransitioning
476
486
 
477
487
  const getStaggerStyle = (itemIndex) => {
478
488
  if (!isStaggerActive) return undefined
489
+ const isSlideItem = itemIndex < slideItemCount
490
+
479
491
  if (isShrinking) {
480
- const outY = -(itemIndex * (collapsedItemHeight - collapsedVisibleOffset))
492
+ if (isSlideItem) {
493
+ const outY = -(
494
+ itemIndex *
495
+ (collapsedItemHeight - collapsedVisibleOffset)
496
+ )
497
+ const outScale =
498
+ itemIndex === 0
499
+ ? 1
500
+ : (collapsedItemHeight - itemIndex * 2) / collapsedItemHeight
501
+ return {
502
+ animationDelay: `${itemIndex * staggerBaseDelay}ms`,
503
+ '--stagger-out-y': `${outY}px`,
504
+ '--stagger-out-scale': outScale,
505
+ zIndex: totalAnimatedItems - itemIndex,
506
+ }
507
+ }
481
508
  return {
482
- animationDelay: `${itemIndex * staggerBaseDelay}ms`,
483
- '--stagger-out-y': `${outY}px`,
509
+ '--fade-duration': `${slideTotalDuration}ms`,
484
510
  zIndex: totalAnimatedItems - itemIndex,
485
511
  }
486
512
  }
487
513
  if (isExpanding) {
488
- const inY = -(itemIndex * (collapsedItemHeight - collapsedVisibleOffset))
514
+ if (isSlideItem) {
515
+ const inY = -(
516
+ itemIndex *
517
+ (collapsedItemHeight - collapsedVisibleOffset)
518
+ )
519
+ const inScale =
520
+ itemIndex === 0
521
+ ? 1
522
+ : (collapsedItemHeight - itemIndex * 2) / collapsedItemHeight
523
+ return {
524
+ animationDelay: `${(slideItemCount - 1 - itemIndex) * staggerBaseDelay}ms`,
525
+ '--stagger-in-y': `${inY}px`,
526
+ '--stagger-in-scale': inScale,
527
+ zIndex: totalAnimatedItems - itemIndex,
528
+ }
529
+ }
489
530
  return {
490
- animationDelay: `${(totalAnimatedItems - 1 - itemIndex) * staggerBaseDelay}ms`,
491
- '--stagger-in-y': `${inY}px`,
531
+ '--fade-duration': `${slideTotalDuration}ms`,
492
532
  zIndex: totalAnimatedItems - itemIndex,
493
533
  }
494
534
  }
@@ -547,6 +587,8 @@ export const SetlistList = ({
547
587
  ))}
548
588
  {visibleSetlists.map((setlist, index) => {
549
589
  const isSelected = selectedSetlistId === setlist.id
590
+ const itemStaggerIndex = index + collapsedNewItemOffset
591
+ const isSlideItem = itemStaggerIndex < slideItemCount
550
592
  const setlistItem = (
551
593
  <SetlistItem
552
594
  isSelected={isSelected}
@@ -555,9 +597,7 @@ export const SetlistList = ({
555
597
  droppable={droppable}
556
598
  isDropTarget={activeDropSetlistId === setlist.id}
557
599
  dndDroppableId={
558
- enableDndDropTargets
559
- ? `setlist:${setlist.id}`
560
- : undefined
600
+ enableDndDropTargets ? `setlist:${setlist.id}` : undefined
561
601
  }
562
602
  onDragOver={(event) => {
563
603
  onSetlistDragOver?.(setlist.id, event)
@@ -587,12 +627,23 @@ export const SetlistList = ({
587
627
  [styles.collapsedStackItem]: showCollapsedStack,
588
628
  [styles.collapsedTransition]: collapsed && showCollapsedStack,
589
629
  [styles.staggerItem]: isStaggerActive,
590
- [styles.staggerAnimateIn]: isStaggerActive && isExpanding,
591
- [styles.staggerAnimateOut]: isStaggerActive && isShrinking,
630
+ [styles.staggerAnimateIn]:
631
+ isStaggerActive && isExpanding && isSlideItem,
632
+ [styles.staggerAnimateOut]:
633
+ isStaggerActive && isShrinking && isSlideItem,
634
+ [styles.fadeAnimateIn]:
635
+ isStaggerActive && isExpanding && !isSlideItem,
636
+ [styles.fadeAnimateOut]:
637
+ isStaggerActive && isShrinking && !isSlideItem,
638
+ [styles.fadeHidden]:
639
+ !isSlideItem &&
640
+ collapsed &&
641
+ !isHoveredWhenCollapsed &&
642
+ !isCollapseTransitioning,
592
643
  })}
593
644
  style={{
594
645
  ...getCollapsedStackStyle(index),
595
- ...getStaggerStyle(index + collapsedNewItemOffset),
646
+ ...getStaggerStyle(itemStaggerIndex),
596
647
  }}
597
648
  />
598
649
  )
@@ -157,7 +157,7 @@
157
157
  background: var(--neutral-alpha-3);
158
158
 
159
159
  &.collapsed {
160
- /* background: transparent; */
160
+ background: transparent;
161
161
 
162
162
  .avatarSetlist {
163
163
  background: var(--neutral-2);
@@ -165,8 +165,6 @@
165
165
 
166
166
  &:hover,
167
167
  &.menuOpen {
168
- background: transparent !important;
169
-
170
168
  .avatarSetlist {
171
169
  background: var(--neutral-2) !important;
172
170
  }
@@ -265,6 +263,21 @@ sectionTitle {
265
263
  position: relative;
266
264
  }
267
265
 
266
+ .collapsedStack .collapsedStackItem:not(:first-child) {
267
+ background: transparent !important;
268
+ pointer-events: none;
269
+ }
270
+
271
+ .collapsedStack .collapsedStackItem:not(:first-child) .avatarSetlist::after {
272
+ content: '';
273
+ position: absolute;
274
+ inset: 0;
275
+ background: #11111399;
276
+ border-radius: inherit;
277
+ pointer-events: none;
278
+ z-index: 2;
279
+ }
280
+
268
281
  .setlistExpandButton {
269
282
  display: flex;
270
283
  align-items: center;
@@ -313,16 +326,19 @@ sectionTitle {
313
326
 
314
327
  @keyframes staggerIn {
315
328
  from {
316
- transform: translateY(var(--stagger-in-y, 0));
329
+ transform: translateY(var(--stagger-in-y, 0)) scaleX(var(--stagger-in-scale, 1));
317
330
  }
318
331
  to {
319
- transform: translateY(0);
332
+ transform: translateY(0) scaleX(1);
320
333
  }
321
334
  }
322
335
 
323
336
  @keyframes staggerOut {
337
+ from {
338
+ transform: translateY(0) scaleX(1);
339
+ }
324
340
  to {
325
- transform: translateY(var(--stagger-out-y, 0));
341
+ transform: translateY(var(--stagger-out-y, 0)) scaleX(var(--stagger-out-scale, 1));
326
342
  }
327
343
  }
328
344
 
@@ -340,6 +356,37 @@ sectionTitle {
340
356
  animation: staggerOut 200ms ease-out both;
341
357
  }
342
358
 
359
+ @keyframes fadeIn {
360
+ from {
361
+ opacity: 0;
362
+ }
363
+ to {
364
+ opacity: 1;
365
+ }
366
+ }
367
+
368
+ @keyframes fadeOut {
369
+ from {
370
+ opacity: 1;
371
+ }
372
+ to {
373
+ opacity: 0;
374
+ }
375
+ }
376
+
377
+ .fadeAnimateIn {
378
+ animation: fadeIn var(--fade-duration, 300ms) ease-out both;
379
+ }
380
+
381
+ .fadeAnimateOut {
382
+ animation: fadeOut var(--fade-duration, 300ms) ease-out both;
383
+ }
384
+
385
+ .fadeHidden {
386
+ opacity: 0;
387
+ pointer-events: none;
388
+ }
389
+
343
390
  .contentInner {
344
391
  gap: 12px;
345
392
  flex: 1;