@opensite/ui 2.8.7 → 2.8.9

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 (163) hide show
  1. package/dist/about-culture-tabs.cjs +174 -174
  2. package/dist/about-culture-tabs.js +174 -174
  3. package/dist/about-developer-profile.cjs +200 -200
  4. package/dist/about-developer-profile.js +198 -198
  5. package/dist/about-developer-story.cjs +142 -142
  6. package/dist/about-developer-story.js +142 -142
  7. package/dist/about-mission-dual-image.cjs +142 -142
  8. package/dist/about-mission-dual-image.js +142 -142
  9. package/dist/about-mission-features.cjs +142 -142
  10. package/dist/about-mission-features.js +142 -142
  11. package/dist/about-network-spotlight.cjs +142 -142
  12. package/dist/about-network-spotlight.js +142 -142
  13. package/dist/about-story-expertise.cjs +142 -142
  14. package/dist/about-story-expertise.js +142 -142
  15. package/dist/about-streamline-team.cjs +142 -142
  16. package/dist/about-streamline-team.js +142 -142
  17. package/dist/carousel-icon-sidebar.cjs +5 -4
  18. package/dist/carousel-icon-sidebar.js +5 -4
  19. package/dist/community-initiatives.cjs +142 -142
  20. package/dist/community-initiatives.js +142 -142
  21. package/dist/components.cjs +723 -1364
  22. package/dist/components.d.cts +0 -2
  23. package/dist/components.d.ts +0 -2
  24. package/dist/components.js +633 -1273
  25. package/dist/contact-map.cjs +14 -1069
  26. package/dist/contact-map.d.cts +13 -3
  27. package/dist/contact-map.d.ts +13 -3
  28. package/dist/contact-map.js +14 -1069
  29. package/dist/cta-feature-checklist.cjs +142 -142
  30. package/dist/cta-feature-checklist.js +142 -142
  31. package/dist/faq-numbered-grid.cjs +142 -142
  32. package/dist/faq-numbered-grid.js +142 -142
  33. package/dist/feature-animated-carousel.cjs +142 -142
  34. package/dist/feature-animated-carousel.js +142 -142
  35. package/dist/feature-bento-utilities.cjs +142 -142
  36. package/dist/feature-bento-utilities.js +142 -142
  37. package/dist/feature-capabilities-grid.cjs +142 -142
  38. package/dist/feature-capabilities-grid.js +142 -142
  39. package/dist/feature-category-image-cards.cjs +142 -142
  40. package/dist/feature-category-image-cards.js +142 -142
  41. package/dist/feature-icon-grid-bordered.cjs +142 -142
  42. package/dist/feature-icon-grid-bordered.js +142 -142
  43. package/dist/feature-icon-grid-muted.cjs +142 -142
  44. package/dist/feature-icon-grid-muted.js +142 -142
  45. package/dist/feature-numbered-cards.cjs +142 -142
  46. package/dist/feature-numbered-cards.js +142 -142
  47. package/dist/feature-three-column-values.cjs +142 -142
  48. package/dist/feature-three-column-values.js +142 -142
  49. package/dist/hero-ad-campaign-expert.cjs +142 -142
  50. package/dist/hero-ad-campaign-expert.js +142 -142
  51. package/dist/hero-adaptable-product-grid.cjs +142 -142
  52. package/dist/hero-adaptable-product-grid.js +142 -142
  53. package/dist/hero-agency-animated-images.cjs +142 -142
  54. package/dist/hero-agency-animated-images.js +142 -142
  55. package/dist/hero-announcement-badge.cjs +142 -142
  56. package/dist/hero-announcement-badge.js +142 -142
  57. package/dist/hero-badge-image-split.cjs +142 -142
  58. package/dist/hero-badge-image-split.js +142 -142
  59. package/dist/hero-business-carousel-dots.cjs +142 -142
  60. package/dist/hero-business-carousel-dots.js +142 -142
  61. package/dist/hero-business-operations-mosaic.cjs +142 -142
  62. package/dist/hero-business-operations-mosaic.js +142 -142
  63. package/dist/hero-conversation-intelligence.cjs +142 -142
  64. package/dist/hero-conversation-intelligence.js +142 -142
  65. package/dist/hero-creative-studio-stacked.cjs +142 -142
  66. package/dist/hero-creative-studio-stacked.js +142 -142
  67. package/dist/hero-crm-streamlined.cjs +142 -142
  68. package/dist/hero-crm-streamlined.js +142 -142
  69. package/dist/hero-customer-support-layered.cjs +142 -142
  70. package/dist/hero-customer-support-layered.js +142 -142
  71. package/dist/hero-design-showcase-logos.cjs +142 -142
  72. package/dist/hero-design-showcase-logos.js +142 -142
  73. package/dist/hero-design-system-3d.cjs +142 -142
  74. package/dist/hero-design-system-3d.js +142 -142
  75. package/dist/hero-developer-tools-code.cjs +142 -142
  76. package/dist/hero-developer-tools-code.js +142 -142
  77. package/dist/hero-digital-agency-fullscreen.cjs +142 -142
  78. package/dist/hero-digital-agency-fullscreen.js +142 -142
  79. package/dist/hero-ecommerce-product-showcase.cjs +174 -174
  80. package/dist/hero-ecommerce-product-showcase.js +174 -174
  81. package/dist/hero-event-registration.cjs +142 -142
  82. package/dist/hero-event-registration.js +142 -142
  83. package/dist/hero-fullscreen-background-image.cjs +142 -142
  84. package/dist/hero-fullscreen-background-image.js +142 -142
  85. package/dist/hero-gradient-avatars-rating.cjs +142 -142
  86. package/dist/hero-gradient-avatars-rating.js +142 -142
  87. package/dist/hero-gradient-client-focused.cjs +142 -142
  88. package/dist/hero-gradient-client-focused.js +142 -142
  89. package/dist/hero-hiring-animated-text.cjs +142 -142
  90. package/dist/hero-hiring-animated-text.js +142 -142
  91. package/dist/hero-image-left-content.cjs +142 -142
  92. package/dist/hero-image-left-content.js +142 -142
  93. package/dist/hero-innovation-image-grid.cjs +142 -142
  94. package/dist/hero-innovation-image-grid.js +142 -142
  95. package/dist/hero-mental-health-team.cjs +142 -142
  96. package/dist/hero-mental-health-team.js +142 -142
  97. package/dist/hero-minimal-centered-dark.cjs +174 -174
  98. package/dist/hero-minimal-centered-dark.js +174 -174
  99. package/dist/hero-presentation-platform-video.cjs +142 -142
  100. package/dist/hero-presentation-platform-video.js +142 -142
  101. package/dist/hero-product-showcase-floating.cjs +174 -174
  102. package/dist/hero-product-showcase-floating.js +174 -174
  103. package/dist/hero-shared-inbox-layered.cjs +142 -142
  104. package/dist/hero-shared-inbox-layered.js +142 -142
  105. package/dist/hero-software-growth-video-dialog.cjs +142 -142
  106. package/dist/hero-software-growth-video-dialog.js +142 -142
  107. package/dist/hero-spiral-pattern-cards.cjs +174 -174
  108. package/dist/hero-spiral-pattern-cards.js +174 -174
  109. package/dist/hero-split-geometric-shapes.cjs +142 -142
  110. package/dist/hero-split-geometric-shapes.js +142 -142
  111. package/dist/hero-startup-launch-cta.cjs +174 -174
  112. package/dist/hero-startup-launch-cta.js +174 -174
  113. package/dist/hero-stats-social-proof.cjs +174 -174
  114. package/dist/hero-stats-social-proof.js +174 -174
  115. package/dist/hero-task-timer-animated.cjs +142 -142
  116. package/dist/hero-task-timer-animated.js +142 -142
  117. package/dist/hero-testimonial-image-grid.cjs +142 -142
  118. package/dist/hero-testimonial-image-grid.js +142 -142
  119. package/dist/hero-therapy-testimonial-grid.cjs +142 -142
  120. package/dist/hero-therapy-testimonial-grid.js +142 -142
  121. package/dist/hero-ui-library-showcase.cjs +142 -142
  122. package/dist/hero-ui-library-showcase.js +142 -142
  123. package/dist/hero-video-background-dark.cjs +174 -174
  124. package/dist/hero-video-background-dark.js +174 -174
  125. package/dist/hero-video-dialog-gradient.cjs +142 -142
  126. package/dist/hero-video-dialog-gradient.js +142 -142
  127. package/dist/hero-video-overlay-stars.cjs +142 -142
  128. package/dist/hero-video-overlay-stars.js +142 -142
  129. package/dist/hero-welcome-asymmetric-images.cjs +142 -142
  130. package/dist/hero-welcome-asymmetric-images.js +142 -142
  131. package/dist/index.cjs +725 -1366
  132. package/dist/index.d.cts +0 -2
  133. package/dist/index.d.ts +0 -2
  134. package/dist/index.js +634 -1274
  135. package/dist/registry.cjs +2371 -2915
  136. package/dist/registry.js +1120 -1664
  137. package/dist/testimonials-large-quote.cjs +74 -43
  138. package/dist/testimonials-large-quote.d.cts +5 -1
  139. package/dist/testimonials-large-quote.d.ts +5 -1
  140. package/dist/testimonials-large-quote.js +74 -43
  141. package/dist/testimonials-logo-cards.cjs +8 -2
  142. package/dist/testimonials-logo-cards.js +8 -2
  143. package/dist/testimonials-masonry-grid.cjs +486 -69
  144. package/dist/testimonials-masonry-grid.d.cts +5 -1
  145. package/dist/testimonials-masonry-grid.d.ts +5 -1
  146. package/dist/testimonials-masonry-grid.js +483 -63
  147. package/dist/testimonials-mini-dividers.cjs +2 -3
  148. package/dist/testimonials-mini-dividers.js +2 -3
  149. package/dist/testimonials-minimal-numbered.cjs +5 -4
  150. package/dist/testimonials-minimal-numbered.js +5 -4
  151. package/dist/testimonials-parallax-number.cjs +5 -4
  152. package/dist/testimonials-parallax-number.js +5 -4
  153. package/dist/testimonials-scrolling-columns.cjs +7 -12
  154. package/dist/testimonials-scrolling-columns.js +7 -12
  155. package/dist/testimonials-stats-header.cjs +528 -87
  156. package/dist/testimonials-stats-header.d.cts +39 -3
  157. package/dist/testimonials-stats-header.d.ts +39 -3
  158. package/dist/testimonials-stats-header.js +523 -82
  159. package/package.json +4 -7
  160. package/dist/geo-map.cjs +0 -1103
  161. package/dist/geo-map.d.cts +0 -92
  162. package/dist/geo-map.d.ts +0 -92
  163. package/dist/geo-map.js +0 -1081
@@ -448,6 +448,180 @@ function GradientOverlay({
448
448
  }
449
449
  );
450
450
  }
451
+ var baseStyles = [
452
+ // Layout
453
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
454
+ // Typography - using CSS variables with sensible defaults
455
+ "font-[var(--button-font-family,inherit)]",
456
+ "font-[var(--button-font-weight,500)]",
457
+ "tracking-[var(--button-letter-spacing,0)]",
458
+ "leading-[var(--button-line-height,1.25)]",
459
+ "[text-transform:var(--button-text-transform,none)]",
460
+ "text-sm",
461
+ // Border radius
462
+ "rounded-[var(--button-radius,var(--radius,0.375rem))]",
463
+ // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
464
+ "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
465
+ // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
466
+ "[box-shadow:var(--button-shadow,none)]",
467
+ "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
468
+ // Disabled state
469
+ "disabled:pointer-events-none disabled:opacity-50",
470
+ // SVG handling
471
+ "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
472
+ // Focus styles
473
+ "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
474
+ // Invalid state
475
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
476
+ ].join(" ");
477
+ var buttonVariants = cva(baseStyles, {
478
+ variants: {
479
+ variant: {
480
+ // Default (Primary) variant - full customization
481
+ default: [
482
+ "bg-[var(--button-default-bg,hsl(var(--primary)))]",
483
+ "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
484
+ "border-[length:var(--button-default-border-width,0px)]",
485
+ "border-[color:var(--button-default-border,transparent)]",
486
+ "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
487
+ "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
488
+ "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
489
+ "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
490
+ "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
491
+ ].join(" "),
492
+ // Destructive variant - full customization
493
+ destructive: [
494
+ "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
495
+ "text-[var(--button-destructive-fg,white)]",
496
+ "border-[length:var(--button-destructive-border-width,0px)]",
497
+ "border-[color:var(--button-destructive-border,transparent)]",
498
+ "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
499
+ "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
500
+ "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
501
+ "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
502
+ "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
503
+ "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
504
+ "dark:bg-destructive/60"
505
+ ].join(" "),
506
+ // Outline variant - full customization with proper border handling
507
+ outline: [
508
+ "bg-[var(--button-outline-bg,hsl(var(--background)))]",
509
+ "text-[var(--button-outline-fg,inherit)]",
510
+ "border-[length:var(--button-outline-border-width,1px)]",
511
+ "border-[color:var(--button-outline-border,hsl(var(--border)))]",
512
+ "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
513
+ "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
514
+ "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
515
+ "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
516
+ "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
517
+ "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
518
+ ].join(" "),
519
+ // Secondary variant - full customization
520
+ secondary: [
521
+ "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
522
+ "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
523
+ "border-[length:var(--button-secondary-border-width,0px)]",
524
+ "border-[color:var(--button-secondary-border,transparent)]",
525
+ "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
526
+ "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
527
+ "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
528
+ "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
529
+ "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
530
+ ].join(" "),
531
+ // Ghost variant - full customization
532
+ ghost: [
533
+ "bg-[var(--button-ghost-bg,transparent)]",
534
+ "text-[var(--button-ghost-fg,inherit)]",
535
+ "border-[length:var(--button-ghost-border-width,0px)]",
536
+ "border-[color:var(--button-ghost-border,transparent)]",
537
+ "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
538
+ "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
539
+ "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
540
+ "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
541
+ "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
542
+ "dark:hover:bg-accent/50"
543
+ ].join(" "),
544
+ // Link variant - full customization
545
+ link: [
546
+ "bg-[var(--button-link-bg,transparent)]",
547
+ "text-[var(--button-link-fg,hsl(var(--primary)))]",
548
+ "border-[length:var(--button-link-border-width,0px)]",
549
+ "border-[color:var(--button-link-border,transparent)]",
550
+ "[box-shadow:var(--button-link-shadow,none)]",
551
+ "hover:bg-[var(--button-link-hover-bg,transparent)]",
552
+ "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
553
+ "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
554
+ "underline-offset-4 hover:underline"
555
+ ].join(" ")
556
+ },
557
+ size: {
558
+ default: [
559
+ "h-[var(--button-height-md,2.25rem)]",
560
+ "px-[var(--button-padding-x-md,1rem)]",
561
+ "py-[var(--button-padding-y-md,0.5rem)]",
562
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
563
+ ].join(" "),
564
+ sm: [
565
+ "h-[var(--button-height-sm,2rem)]",
566
+ "px-[var(--button-padding-x-sm,0.75rem)]",
567
+ "py-[var(--button-padding-y-sm,0.25rem)]",
568
+ "gap-1.5",
569
+ "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
570
+ ].join(" "),
571
+ md: [
572
+ "h-[var(--button-height-md,2.25rem)]",
573
+ "px-[var(--button-padding-x-md,1rem)]",
574
+ "py-[var(--button-padding-y-md,0.5rem)]",
575
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
576
+ ].join(" "),
577
+ lg: [
578
+ "h-[var(--button-height-lg,2.5rem)]",
579
+ "px-[var(--button-padding-x-lg,1.5rem)]",
580
+ "py-[var(--button-padding-y-lg,0.5rem)]",
581
+ "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
582
+ ].join(" "),
583
+ icon: "size-[var(--button-height-md,2.25rem)]",
584
+ "icon-sm": "size-[var(--button-height-sm,2rem)]",
585
+ "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
586
+ }
587
+ },
588
+ defaultVariants: {
589
+ variant: "default",
590
+ size: "default"
591
+ }
592
+ });
593
+ var badgeVariants = cva(
594
+ "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-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 transition-[color,box-shadow] overflow-hidden",
595
+ {
596
+ variants: {
597
+ variant: {
598
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
599
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
600
+ destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
601
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
602
+ }
603
+ },
604
+ defaultVariants: {
605
+ variant: "default"
606
+ }
607
+ }
608
+ );
609
+ function Badge({
610
+ className,
611
+ variant,
612
+ asChild = false,
613
+ ...props
614
+ }) {
615
+ const Comp = asChild ? Slot : "span";
616
+ return /* @__PURE__ */ jsx(
617
+ Comp,
618
+ {
619
+ "data-slot": "badge",
620
+ className: cn(badgeVariants({ variant }), className),
621
+ ...props
622
+ }
623
+ );
624
+ }
451
625
  function normalizePhoneNumber(input) {
452
626
  const trimmed = input.trim();
453
627
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -626,148 +800,6 @@ function useNavigation({
626
800
  handleClick
627
801
  };
628
802
  }
629
- var baseStyles = [
630
- // Layout
631
- "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
632
- // Typography - using CSS variables with sensible defaults
633
- "font-[var(--button-font-family,inherit)]",
634
- "font-[var(--button-font-weight,500)]",
635
- "tracking-[var(--button-letter-spacing,0)]",
636
- "leading-[var(--button-line-height,1.25)]",
637
- "[text-transform:var(--button-text-transform,none)]",
638
- "text-sm",
639
- // Border radius
640
- "rounded-[var(--button-radius,var(--radius,0.375rem))]",
641
- // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
642
- "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
643
- // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
644
- "[box-shadow:var(--button-shadow,none)]",
645
- "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
646
- // Disabled state
647
- "disabled:pointer-events-none disabled:opacity-50",
648
- // SVG handling
649
- "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
650
- // Focus styles
651
- "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
652
- // Invalid state
653
- "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
654
- ].join(" ");
655
- var buttonVariants = cva(baseStyles, {
656
- variants: {
657
- variant: {
658
- // Default (Primary) variant - full customization
659
- default: [
660
- "bg-[var(--button-default-bg,hsl(var(--primary)))]",
661
- "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
662
- "border-[length:var(--button-default-border-width,0px)]",
663
- "border-[color:var(--button-default-border,transparent)]",
664
- "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
665
- "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
666
- "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
667
- "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
668
- "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
669
- ].join(" "),
670
- // Destructive variant - full customization
671
- destructive: [
672
- "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
673
- "text-[var(--button-destructive-fg,white)]",
674
- "border-[length:var(--button-destructive-border-width,0px)]",
675
- "border-[color:var(--button-destructive-border,transparent)]",
676
- "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
677
- "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
678
- "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
679
- "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
680
- "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
681
- "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
682
- "dark:bg-destructive/60"
683
- ].join(" "),
684
- // Outline variant - full customization with proper border handling
685
- outline: [
686
- "bg-[var(--button-outline-bg,hsl(var(--background)))]",
687
- "text-[var(--button-outline-fg,inherit)]",
688
- "border-[length:var(--button-outline-border-width,1px)]",
689
- "border-[color:var(--button-outline-border,hsl(var(--border)))]",
690
- "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
691
- "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
692
- "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
693
- "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
694
- "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
695
- "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
696
- ].join(" "),
697
- // Secondary variant - full customization
698
- secondary: [
699
- "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
700
- "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
701
- "border-[length:var(--button-secondary-border-width,0px)]",
702
- "border-[color:var(--button-secondary-border,transparent)]",
703
- "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
704
- "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
705
- "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
706
- "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
707
- "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
708
- ].join(" "),
709
- // Ghost variant - full customization
710
- ghost: [
711
- "bg-[var(--button-ghost-bg,transparent)]",
712
- "text-[var(--button-ghost-fg,inherit)]",
713
- "border-[length:var(--button-ghost-border-width,0px)]",
714
- "border-[color:var(--button-ghost-border,transparent)]",
715
- "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
716
- "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
717
- "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
718
- "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
719
- "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
720
- "dark:hover:bg-accent/50"
721
- ].join(" "),
722
- // Link variant - full customization
723
- link: [
724
- "bg-[var(--button-link-bg,transparent)]",
725
- "text-[var(--button-link-fg,hsl(var(--primary)))]",
726
- "border-[length:var(--button-link-border-width,0px)]",
727
- "border-[color:var(--button-link-border,transparent)]",
728
- "[box-shadow:var(--button-link-shadow,none)]",
729
- "hover:bg-[var(--button-link-hover-bg,transparent)]",
730
- "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
731
- "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
732
- "underline-offset-4 hover:underline"
733
- ].join(" ")
734
- },
735
- size: {
736
- default: [
737
- "h-[var(--button-height-md,2.25rem)]",
738
- "px-[var(--button-padding-x-md,1rem)]",
739
- "py-[var(--button-padding-y-md,0.5rem)]",
740
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
741
- ].join(" "),
742
- sm: [
743
- "h-[var(--button-height-sm,2rem)]",
744
- "px-[var(--button-padding-x-sm,0.75rem)]",
745
- "py-[var(--button-padding-y-sm,0.25rem)]",
746
- "gap-1.5",
747
- "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
748
- ].join(" "),
749
- md: [
750
- "h-[var(--button-height-md,2.25rem)]",
751
- "px-[var(--button-padding-x-md,1rem)]",
752
- "py-[var(--button-padding-y-md,0.5rem)]",
753
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
754
- ].join(" "),
755
- lg: [
756
- "h-[var(--button-height-lg,2.5rem)]",
757
- "px-[var(--button-padding-x-lg,1.5rem)]",
758
- "py-[var(--button-padding-y-lg,0.5rem)]",
759
- "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
760
- ].join(" "),
761
- icon: "size-[var(--button-height-md,2.25rem)]",
762
- "icon-sm": "size-[var(--button-height-sm,2rem)]",
763
- "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
764
- }
765
- },
766
- defaultVariants: {
767
- variant: "default",
768
- size: "default"
769
- }
770
- });
771
803
  var Pressable = React3.forwardRef(
772
804
  ({
773
805
  children,
@@ -866,38 +898,6 @@ var Pressable = React3.forwardRef(
866
898
  }
867
899
  );
868
900
  Pressable.displayName = "Pressable";
869
- var badgeVariants = cva(
870
- "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-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 transition-[color,box-shadow] overflow-hidden",
871
- {
872
- variants: {
873
- variant: {
874
- default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
875
- secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
876
- destructive: "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
877
- outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
878
- }
879
- },
880
- defaultVariants: {
881
- variant: "default"
882
- }
883
- }
884
- );
885
- function Badge({
886
- className,
887
- variant,
888
- asChild = false,
889
- ...props
890
- }) {
891
- const Comp = asChild ? Slot : "span";
892
- return /* @__PURE__ */ jsx(
893
- Comp,
894
- {
895
- "data-slot": "badge",
896
- className: cn(badgeVariants({ variant }), className),
897
- ...props
898
- }
899
- );
900
- }
901
901
  var MOBILE_CLASSES = {
902
902
  "fit-left": "items-start md:items-center",
903
903
  "fit-center": "items-center",
@@ -510,6 +510,148 @@ var Section = React4__namespace.default.forwardRef(
510
510
  }
511
511
  );
512
512
  Section.displayName = "Section";
513
+ var baseStyles = [
514
+ // Layout
515
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
516
+ // Typography - using CSS variables with sensible defaults
517
+ "font-[var(--button-font-family,inherit)]",
518
+ "font-[var(--button-font-weight,500)]",
519
+ "tracking-[var(--button-letter-spacing,0)]",
520
+ "leading-[var(--button-line-height,1.25)]",
521
+ "[text-transform:var(--button-text-transform,none)]",
522
+ "text-sm",
523
+ // Border radius
524
+ "rounded-[var(--button-radius,var(--radius,0.375rem))]",
525
+ // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
526
+ "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
527
+ // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
528
+ "[box-shadow:var(--button-shadow,none)]",
529
+ "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
530
+ // Disabled state
531
+ "disabled:pointer-events-none disabled:opacity-50",
532
+ // SVG handling
533
+ "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
534
+ // Focus styles
535
+ "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
536
+ // Invalid state
537
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
538
+ ].join(" ");
539
+ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
540
+ variants: {
541
+ variant: {
542
+ // Default (Primary) variant - full customization
543
+ default: [
544
+ "bg-[var(--button-default-bg,hsl(var(--primary)))]",
545
+ "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
546
+ "border-[length:var(--button-default-border-width,0px)]",
547
+ "border-[color:var(--button-default-border,transparent)]",
548
+ "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
549
+ "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
550
+ "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
551
+ "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
552
+ "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
553
+ ].join(" "),
554
+ // Destructive variant - full customization
555
+ destructive: [
556
+ "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
557
+ "text-[var(--button-destructive-fg,white)]",
558
+ "border-[length:var(--button-destructive-border-width,0px)]",
559
+ "border-[color:var(--button-destructive-border,transparent)]",
560
+ "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
561
+ "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
562
+ "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
563
+ "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
564
+ "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
565
+ "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
566
+ "dark:bg-destructive/60"
567
+ ].join(" "),
568
+ // Outline variant - full customization with proper border handling
569
+ outline: [
570
+ "bg-[var(--button-outline-bg,hsl(var(--background)))]",
571
+ "text-[var(--button-outline-fg,inherit)]",
572
+ "border-[length:var(--button-outline-border-width,1px)]",
573
+ "border-[color:var(--button-outline-border,hsl(var(--border)))]",
574
+ "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
575
+ "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
576
+ "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
577
+ "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
578
+ "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
579
+ "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
580
+ ].join(" "),
581
+ // Secondary variant - full customization
582
+ secondary: [
583
+ "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
584
+ "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
585
+ "border-[length:var(--button-secondary-border-width,0px)]",
586
+ "border-[color:var(--button-secondary-border,transparent)]",
587
+ "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
588
+ "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
589
+ "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
590
+ "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
591
+ "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
592
+ ].join(" "),
593
+ // Ghost variant - full customization
594
+ ghost: [
595
+ "bg-[var(--button-ghost-bg,transparent)]",
596
+ "text-[var(--button-ghost-fg,inherit)]",
597
+ "border-[length:var(--button-ghost-border-width,0px)]",
598
+ "border-[color:var(--button-ghost-border,transparent)]",
599
+ "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
600
+ "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
601
+ "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
602
+ "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
603
+ "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
604
+ "dark:hover:bg-accent/50"
605
+ ].join(" "),
606
+ // Link variant - full customization
607
+ link: [
608
+ "bg-[var(--button-link-bg,transparent)]",
609
+ "text-[var(--button-link-fg,hsl(var(--primary)))]",
610
+ "border-[length:var(--button-link-border-width,0px)]",
611
+ "border-[color:var(--button-link-border,transparent)]",
612
+ "[box-shadow:var(--button-link-shadow,none)]",
613
+ "hover:bg-[var(--button-link-hover-bg,transparent)]",
614
+ "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
615
+ "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
616
+ "underline-offset-4 hover:underline"
617
+ ].join(" ")
618
+ },
619
+ size: {
620
+ default: [
621
+ "h-[var(--button-height-md,2.25rem)]",
622
+ "px-[var(--button-padding-x-md,1rem)]",
623
+ "py-[var(--button-padding-y-md,0.5rem)]",
624
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
625
+ ].join(" "),
626
+ sm: [
627
+ "h-[var(--button-height-sm,2rem)]",
628
+ "px-[var(--button-padding-x-sm,0.75rem)]",
629
+ "py-[var(--button-padding-y-sm,0.25rem)]",
630
+ "gap-1.5",
631
+ "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
632
+ ].join(" "),
633
+ md: [
634
+ "h-[var(--button-height-md,2.25rem)]",
635
+ "px-[var(--button-padding-x-md,1rem)]",
636
+ "py-[var(--button-padding-y-md,0.5rem)]",
637
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
638
+ ].join(" "),
639
+ lg: [
640
+ "h-[var(--button-height-lg,2.5rem)]",
641
+ "px-[var(--button-padding-x-lg,1.5rem)]",
642
+ "py-[var(--button-padding-y-lg,0.5rem)]",
643
+ "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
644
+ ].join(" "),
645
+ icon: "size-[var(--button-height-md,2.25rem)]",
646
+ "icon-sm": "size-[var(--button-height-sm,2rem)]",
647
+ "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
648
+ }
649
+ },
650
+ defaultVariants: {
651
+ variant: "default",
652
+ size: "default"
653
+ }
654
+ });
513
655
  function normalizePhoneNumber(input) {
514
656
  const trimmed = input.trim();
515
657
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -688,148 +830,6 @@ function useNavigation({
688
830
  handleClick
689
831
  };
690
832
  }
691
- var baseStyles = [
692
- // Layout
693
- "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
694
- // Typography - using CSS variables with sensible defaults
695
- "font-[var(--button-font-family,inherit)]",
696
- "font-[var(--button-font-weight,500)]",
697
- "tracking-[var(--button-letter-spacing,0)]",
698
- "leading-[var(--button-line-height,1.25)]",
699
- "[text-transform:var(--button-text-transform,none)]",
700
- "text-sm",
701
- // Border radius
702
- "rounded-[var(--button-radius,var(--radius,0.375rem))]",
703
- // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
704
- "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
705
- // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
706
- "[box-shadow:var(--button-shadow,none)]",
707
- "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
708
- // Disabled state
709
- "disabled:pointer-events-none disabled:opacity-50",
710
- // SVG handling
711
- "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
712
- // Focus styles
713
- "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
714
- // Invalid state
715
- "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
716
- ].join(" ");
717
- var buttonVariants = classVarianceAuthority.cva(baseStyles, {
718
- variants: {
719
- variant: {
720
- // Default (Primary) variant - full customization
721
- default: [
722
- "bg-[var(--button-default-bg,hsl(var(--primary)))]",
723
- "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
724
- "border-[length:var(--button-default-border-width,0px)]",
725
- "border-[color:var(--button-default-border,transparent)]",
726
- "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
727
- "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
728
- "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
729
- "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
730
- "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
731
- ].join(" "),
732
- // Destructive variant - full customization
733
- destructive: [
734
- "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
735
- "text-[var(--button-destructive-fg,white)]",
736
- "border-[length:var(--button-destructive-border-width,0px)]",
737
- "border-[color:var(--button-destructive-border,transparent)]",
738
- "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
739
- "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
740
- "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
741
- "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
742
- "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
743
- "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
744
- "dark:bg-destructive/60"
745
- ].join(" "),
746
- // Outline variant - full customization with proper border handling
747
- outline: [
748
- "bg-[var(--button-outline-bg,hsl(var(--background)))]",
749
- "text-[var(--button-outline-fg,inherit)]",
750
- "border-[length:var(--button-outline-border-width,1px)]",
751
- "border-[color:var(--button-outline-border,hsl(var(--border)))]",
752
- "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
753
- "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
754
- "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
755
- "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
756
- "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
757
- "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
758
- ].join(" "),
759
- // Secondary variant - full customization
760
- secondary: [
761
- "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
762
- "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
763
- "border-[length:var(--button-secondary-border-width,0px)]",
764
- "border-[color:var(--button-secondary-border,transparent)]",
765
- "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
766
- "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
767
- "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
768
- "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
769
- "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
770
- ].join(" "),
771
- // Ghost variant - full customization
772
- ghost: [
773
- "bg-[var(--button-ghost-bg,transparent)]",
774
- "text-[var(--button-ghost-fg,inherit)]",
775
- "border-[length:var(--button-ghost-border-width,0px)]",
776
- "border-[color:var(--button-ghost-border,transparent)]",
777
- "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
778
- "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
779
- "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
780
- "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
781
- "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
782
- "dark:hover:bg-accent/50"
783
- ].join(" "),
784
- // Link variant - full customization
785
- link: [
786
- "bg-[var(--button-link-bg,transparent)]",
787
- "text-[var(--button-link-fg,hsl(var(--primary)))]",
788
- "border-[length:var(--button-link-border-width,0px)]",
789
- "border-[color:var(--button-link-border,transparent)]",
790
- "[box-shadow:var(--button-link-shadow,none)]",
791
- "hover:bg-[var(--button-link-hover-bg,transparent)]",
792
- "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
793
- "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
794
- "underline-offset-4 hover:underline"
795
- ].join(" ")
796
- },
797
- size: {
798
- default: [
799
- "h-[var(--button-height-md,2.25rem)]",
800
- "px-[var(--button-padding-x-md,1rem)]",
801
- "py-[var(--button-padding-y-md,0.5rem)]",
802
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
803
- ].join(" "),
804
- sm: [
805
- "h-[var(--button-height-sm,2rem)]",
806
- "px-[var(--button-padding-x-sm,0.75rem)]",
807
- "py-[var(--button-padding-y-sm,0.25rem)]",
808
- "gap-1.5",
809
- "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
810
- ].join(" "),
811
- md: [
812
- "h-[var(--button-height-md,2.25rem)]",
813
- "px-[var(--button-padding-x-md,1rem)]",
814
- "py-[var(--button-padding-y-md,0.5rem)]",
815
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
816
- ].join(" "),
817
- lg: [
818
- "h-[var(--button-height-lg,2.5rem)]",
819
- "px-[var(--button-padding-x-lg,1.5rem)]",
820
- "py-[var(--button-padding-y-lg,0.5rem)]",
821
- "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
822
- ].join(" "),
823
- icon: "size-[var(--button-height-md,2.25rem)]",
824
- "icon-sm": "size-[var(--button-height-sm,2rem)]",
825
- "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
826
- }
827
- },
828
- defaultVariants: {
829
- variant: "default",
830
- size: "default"
831
- }
832
- });
833
833
  var Pressable = React4__namespace.forwardRef(
834
834
  ({
835
835
  children,