@lanrenbang/basecoat-ultra 0.1.6 → 0.2.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.
@@ -263,7 +263,7 @@
263
263
  .btn-lg-icon-ghost,
264
264
  .btn-lg-icon-link,
265
265
  .btn-lg-icon-destructive {
266
- @apply inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer rounded-md;
266
+ @apply inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer rounded-md relative;
267
267
 
268
268
  & svg:not([class*="size-"]) {
269
269
  @apply size-4;
@@ -630,9 +630,18 @@
630
630
  /* Dialog */
631
631
  @layer components {
632
632
  @keyframes dialog-spring-in {
633
- 0% { opacity: 0; transform: scale(0.9); }
634
- 50% { opacity: 1; transform: scale(1.05); }
635
- 100% { opacity: 1; transform: scale(1); }
633
+ 0% {
634
+ opacity: 0;
635
+ transform: translateY(20px);
636
+ }
637
+ 70% {
638
+ opacity: 0.9;
639
+ transform: translateY(-4px); /* Small overshoot up */
640
+ }
641
+ 100% {
642
+ opacity: 1;
643
+ transform: translateY(0); /* Perfect final position */
644
+ }
636
645
  }
637
646
 
638
647
  @keyframes backdrop-in {
@@ -652,17 +661,13 @@
652
661
  margin: auto !important;
653
662
  height: fit-content !important;
654
663
 
655
- /* Open state */
664
+ /* Open state with spring animation - translate only, no scale */
656
665
  &[open] {
657
666
  @apply opacity-100 visible;
658
- /*
659
- UPDATED ANIMATION (User Request):
660
- Added a spring-like pop-up effect (scale 0.9 -> 1.05 -> 1.0)
661
- instead of the original simple fade/scale.
662
- Duration increased to 0.3s for better visibility.
663
- Defined in @keyframes dialog-spring-in above.
664
- */
665
- animation: dialog-spring-in 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.1) forwards;
667
+ animation: dialog-spring-in 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.1) forwards;
668
+
669
+ /* Ensure final state is pixel-perfect */
670
+ animation-fill-mode: forwards;
666
671
  }
667
672
 
668
673
  /* Backdrop */
@@ -689,9 +694,8 @@
689
694
  @apply flex flex-col-reverse gap-2 sm:flex-row sm:justify-end;
690
695
  }
691
696
 
692
- /* Close Button - positioned absolute top-right */
693
- > button.close,
694
- > form[method='dialog'] > button.close {
697
+ /* Close Button - positioned absolute top-right, same level as header */
698
+ > button.close {
695
699
  @apply absolute top-4 right-4 p-0 bg-transparent border-0 cursor-pointer;
696
700
  @apply ring-offset-background focus:ring-ring text-muted-foreground hover:text-foreground rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none;
697
701
 
@@ -761,7 +765,7 @@
761
765
  @apply flex w-fit items-center gap-2 text-sm leading-snug font-medium;
762
766
  }
763
767
  [role="alert"] {
764
- @apply text-sm text-destructive font-normal;
768
+ @apply text-xs text-destructive font-normal;
765
769
 
766
770
  ul {
767
771
  @apply ml-4 flex list-disc flex-col gap-1;
@@ -778,7 +782,7 @@
778
782
  .fieldset legend + p,
779
783
  .field > p,
780
784
  .field section > p {
781
- @apply text-muted-foreground text-sm leading-normal font-normal [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4;
785
+ @apply text-muted-foreground text-xs leading-normal font-normal [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4;
782
786
  }
783
787
  .fieldset legend + p {
784
788
  @apply -mt-1.5;
@@ -915,7 +919,7 @@
915
919
  }
916
920
  }
917
921
  .popover {
918
- @apply relative inline-flex;
922
+ @apply relative inline-block;
919
923
 
920
924
  [data-popover] {
921
925
  @apply p-4;
@@ -1206,7 +1210,7 @@
1206
1210
  .table {
1207
1211
  @apply w-full caption-bottom text-sm;
1208
1212
  thead {
1209
- @apply [&_tr]:border-b;
1213
+ @apply bg-muted/30 [&_tr]:border-b;
1210
1214
  }
1211
1215
  tbody {
1212
1216
  @apply [&_tr:last-child]:border-0;
@@ -1422,11 +1426,11 @@
1422
1426
  height: var(--carousel-height, 400px); /* Default height */
1423
1427
  }
1424
1428
  .carousel-previous {
1425
- @apply -top-8 left-1/2 -translate-x-1/2 rotate-90 translate-y-0;
1429
+ @apply -top-8 left-1/2 -translate-x-1/2 translate-y-0;
1426
1430
  top: -2rem !important; /* Force top */
1427
1431
  }
1428
1432
  .carousel-next {
1429
- @apply -bottom-8 top-auto left-1/2 -translate-x-1/2 rotate-90 translate-y-0;
1433
+ @apply -bottom-8 top-auto left-1/2 -translate-x-1/2 translate-y-0;
1430
1434
  bottom: -2rem !important; /* Force bottom */
1431
1435
  top: auto !important;
1432
1436
  }
@@ -1688,6 +1692,14 @@ Global adaptive lighting system.
1688
1692
  Technique: Uses ::after with inset:0 and border-radius:inherit to mask the shine
1689
1693
  without requiring overflow:hidden on the parent (which breaks Tooltips).
1690
1694
  */
1695
+ .effect-shine,
1696
+ .btn:not(.btn-link):not(:disabled):not(.no-shine),
1697
+ .neu-btn:not(:disabled):not(.no-shine),
1698
+ .toggle:not(:disabled):not(.no-shine),
1699
+ [role="tab"]:not([aria-selected="true"]):not(:disabled):not(.no-shine) {
1700
+ @apply relative;
1701
+ }
1702
+
1691
1703
  .effect-shine,
1692
1704
  .btn:not(.btn-link):not(:disabled):not(.no-shine),
1693
1705
  .neu-btn:not(:disabled):not(.no-shine),
@@ -1695,8 +1707,6 @@ Global adaptive lighting system.
1695
1707
  [role="tab"]:not([aria-selected="true"]):not(:disabled):not(.no-shine),
1696
1708
  .carousel-previous:not(:disabled):not(.no-shine),
1697
1709
  .carousel-next:not(:disabled):not(.no-shine) {
1698
- /* Removed @apply relative to prevent overriding absolute positioning on carousel buttons */
1699
-
1700
1710
  &::after {
1701
1711
  content: '';
1702
1712
  @apply absolute inset-0 z-10 pointer-events-none;