infinity-ui-elements 1.1.0 → 1.1.2

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/dist/index.js CHANGED
@@ -3297,8 +3297,31 @@ const getDefaultConfig = () => {
3297
3297
  };
3298
3298
  const twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);
3299
3299
 
3300
+ // Define patterns for custom classes that should be preserved
3301
+ // This approach is more scalable than hardcoding individual class names
3302
+ const CUSTOM_CLASS_PATTERNS = [
3303
+ // Custom font classes
3304
+ /^font-(functional|display)$/,
3305
+ // Custom spacing classes (example)
3306
+ // /^spacing-(xs|sm|md|lg|xl)$/,
3307
+ // Custom color classes (example)
3308
+ // /^color-(primary|secondary|accent)$/,
3309
+ // Any class that starts with 'custom-'
3310
+ /^custom-/,
3311
+ ];
3312
+ function isCustomClass(className) {
3313
+ return CUSTOM_CLASS_PATTERNS.some((pattern) => pattern.test(className));
3314
+ }
3300
3315
  function cn(...inputs) {
3301
- return twMerge(clsx(inputs));
3316
+ // Use clsx first to combine classes, then use twMerge for standard Tailwind classes
3317
+ const combined = clsx(inputs);
3318
+ // Split classes and filter out our custom classes before merging
3319
+ const classes = combined.split(" ");
3320
+ const customClasses = classes.filter((cls) => isCustomClass(cls));
3321
+ const standardClasses = classes.filter((cls) => !isCustomClass(cls));
3322
+ // Merge standard classes and add back custom classes
3323
+ const mergedStandard = twMerge(standardClasses.join(" "));
3324
+ return clsx(mergedStandard, customClasses);
3302
3325
  }
3303
3326
 
3304
3327
  const buttonVariants = cva("items-center gap-3 justify-center whitespace-nowrap text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none", {
@@ -3529,36 +3552,18 @@ Button.displayName = "Button";
3529
3552
  const textVariants = cva("", {
3530
3553
  variants: {
3531
3554
  variant: {
3532
- "display-xlarge": "font-functional font-medium",
3533
- "display-large": "font-functional font-medium",
3534
- "display-medium": "font-functional font-medium",
3535
- "display-small": "font-functional font-medium",
3536
- "heading-2xlarge": "font-functional font-medium",
3537
- "heading-xlarge": "font-functional font-medium",
3538
- "heading-large": "font-display",
3539
- "heading-medium": "font-display",
3540
- "heading-small": "font-display",
3541
- "body-large": "font-display",
3542
- "body-medium": "font-display",
3543
- "body-small": "font-display",
3544
- "body-xsmall": "font-display",
3545
- "caption-medium": "font-display font-semibold",
3555
+ display: "font-functional font-medium",
3556
+ heading: "font-display",
3557
+ body: "font-display",
3558
+ caption: "font-display font-semibold",
3546
3559
  },
3547
3560
  size: {
3548
- "display-xlarge": "font-size-1100 leading-1100 tracking-[0%] mb-0",
3549
- "display-large": "font-size-1000 leading-1000 tracking-[0%] mb-0",
3550
- "display-medium": "font-size-900 leading-900 tracking-[0%] mb-0",
3551
- "display-small": "font-size-800 leading-800 tracking-[0%] mb-0",
3552
- "heading-2xlarge": "font-size-700 leading-700 tracking-[0%] mb-0",
3553
- "heading-xlarge": "font-size-600 leading-600 tracking-[0%] mb-0",
3554
- "heading-large": "font-size-500 leading-500 tracking-[0%] mb-0",
3555
- "heading-medium": "font-size-400 leading-400 tracking-[0%] mb-0",
3556
- "heading-small": "font-size-300 leading-300 tracking-[0%] mb-0",
3557
- "body-large": "font-size-200 leading-200 tracking-[0%] mb-[var(--paragraph-spacing-400)]",
3558
- "body-medium": "font-size-100 leading-100 tracking-[0%] mb-[var(--paragraph-spacing-300)]",
3559
- "body-small": "font-size-75 leading-75 tracking-[0%] mb-[var(--paragraph-spacing-200)]",
3560
- "body-xsmall": "font-size-25 leading-25 tracking-[0%] mb-[var(--paragraph-spacing-100)]",
3561
- "caption-medium": "text-50 leading-50 tracking-[0%] mb-0",
3561
+ "2xlarge": "font-size-700 leading-700 tracking-[0%] mb-0",
3562
+ xlarge: "font-size-1100 leading-1100 tracking-[0%] mb-0",
3563
+ large: "font-size-1000 leading-1000 tracking-[0%] mb-0",
3564
+ medium: "font-size-900 leading-900 tracking-[0%] mb-0",
3565
+ small: "font-size-800 leading-800 tracking-[0%] mb-0",
3566
+ xsmall: "font-size-25 leading-25 tracking-[0%] mb-[var(--paragraph-spacing-100)]",
3562
3567
  },
3563
3568
  weight: {
3564
3569
  regular: "font-normal",
@@ -3587,61 +3592,115 @@ const textVariants = cva("", {
3587
3592
  compoundVariants: [
3588
3593
  // Display variants use Clash Grotesk with medium weight
3589
3594
  {
3590
- variant: [
3591
- "display-xlarge",
3592
- "display-large",
3593
- "display-medium",
3594
- "display-small",
3595
- "heading-2xlarge",
3596
- "heading-xlarge",
3597
- ],
3595
+ variant: "display",
3598
3596
  weight: "regular",
3599
3597
  class: "font-medium",
3600
3598
  },
3601
3599
  {
3602
- variant: [
3603
- "display-xlarge",
3604
- "display-large",
3605
- "display-medium",
3606
- "display-small",
3607
- "heading-2xlarge",
3608
- "heading-xlarge",
3609
- ],
3600
+ variant: "display",
3610
3601
  weight: "medium",
3611
3602
  class: "font-medium",
3612
3603
  },
3613
3604
  {
3614
- variant: [
3615
- "display-xlarge",
3616
- "display-large",
3617
- "display-medium",
3618
- "display-small",
3619
- "heading-2xlarge",
3620
- "heading-xlarge",
3621
- ],
3605
+ variant: "display",
3622
3606
  weight: "semibold",
3623
3607
  class: "font-medium",
3624
3608
  },
3625
- // Caption medium is always semibold
3609
+ // Caption is always semibold
3626
3610
  {
3627
- variant: "caption-medium",
3611
+ variant: "caption",
3628
3612
  weight: "regular",
3629
3613
  class: "font-semibold",
3630
3614
  },
3631
3615
  {
3632
- variant: "caption-medium",
3616
+ variant: "caption",
3633
3617
  weight: "medium",
3634
3618
  class: "font-semibold",
3635
3619
  },
3636
3620
  {
3637
- variant: "caption-medium",
3621
+ variant: "caption",
3638
3622
  weight: "semibold",
3639
3623
  class: "font-semibold",
3640
3624
  },
3625
+ // Size-specific styling based on variant
3626
+ // Display sizes
3627
+ {
3628
+ variant: "display",
3629
+ size: "xlarge",
3630
+ class: "font-size-1100 leading-1100 tracking-[0%] mb-0",
3631
+ },
3632
+ {
3633
+ variant: "display",
3634
+ size: "large",
3635
+ class: "font-size-1000 leading-1000 tracking-[0%] mb-0",
3636
+ },
3637
+ {
3638
+ variant: "display",
3639
+ size: "medium",
3640
+ class: "font-size-900 leading-900 tracking-[0%] mb-0",
3641
+ },
3642
+ {
3643
+ variant: "display",
3644
+ size: "small",
3645
+ class: "font-size-800 leading-800 tracking-[0%] mb-0",
3646
+ },
3647
+ // Heading sizes
3648
+ {
3649
+ variant: "heading",
3650
+ size: "2xlarge",
3651
+ class: "font-size-700 leading-700 tracking-[0%] mb-0",
3652
+ },
3653
+ {
3654
+ variant: "heading",
3655
+ size: "xlarge",
3656
+ class: "font-size-600 leading-600 tracking-[0%] mb-0",
3657
+ },
3658
+ {
3659
+ variant: "heading",
3660
+ size: "large",
3661
+ class: "font-size-500 leading-500 tracking-[0%] mb-0",
3662
+ },
3663
+ {
3664
+ variant: "heading",
3665
+ size: "medium",
3666
+ class: "font-size-400 leading-400 tracking-[0%] mb-0",
3667
+ },
3668
+ {
3669
+ variant: "heading",
3670
+ size: "small",
3671
+ class: "font-size-300 leading-300 tracking-[0%] mb-0",
3672
+ },
3673
+ // Body sizes
3674
+ {
3675
+ variant: "body",
3676
+ size: "large",
3677
+ class: "font-size-200 leading-200 tracking-[0%] mb-[var(--paragraph-spacing-400)]",
3678
+ },
3679
+ {
3680
+ variant: "body",
3681
+ size: "medium",
3682
+ class: "font-size-100 leading-100 tracking-[0%] mb-[var(--paragraph-spacing-300)]",
3683
+ },
3684
+ {
3685
+ variant: "body",
3686
+ size: "small",
3687
+ class: "font-size-75 leading-75 tracking-[0%] mb-[var(--paragraph-spacing-200)]",
3688
+ },
3689
+ {
3690
+ variant: "body",
3691
+ size: "xsmall",
3692
+ class: "font-size-25 leading-25 tracking-[0%] mb-[var(--paragraph-spacing-100)]",
3693
+ },
3694
+ // Caption sizes
3695
+ {
3696
+ variant: "caption",
3697
+ size: "medium",
3698
+ class: "text-50 leading-50 tracking-[0%] mb-0",
3699
+ },
3641
3700
  ],
3642
3701
  defaultVariants: {
3643
- variant: "body-medium",
3644
- size: "body-medium",
3702
+ variant: "body",
3703
+ size: "medium",
3645
3704
  weight: "regular",
3646
3705
  color: "default",
3647
3706
  as: "p",
@@ -3660,5 +3719,6 @@ Text.displayName = "Text";
3660
3719
  exports.Button = Button;
3661
3720
  exports.Text = Text;
3662
3721
  exports.buttonVariants = buttonVariants;
3722
+ exports.cn = cn;
3663
3723
  exports.textVariants = textVariants;
3664
3724
  //# sourceMappingURL=index.js.map