@opensite/ui 2.8.8 → 2.9.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.
Files changed (147) 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-feature-badge.cjs +162 -42
  18. package/dist/carousel-feature-badge.d.cts +14 -1
  19. package/dist/carousel-feature-badge.d.ts +14 -1
  20. package/dist/carousel-feature-badge.js +163 -43
  21. package/dist/community-initiatives.cjs +142 -142
  22. package/dist/community-initiatives.js +142 -142
  23. package/dist/components.cjs +723 -1378
  24. package/dist/components.d.cts +0 -2
  25. package/dist/components.d.ts +0 -2
  26. package/dist/components.js +633 -1287
  27. package/dist/contact-map.cjs +14 -1083
  28. package/dist/contact-map.d.cts +13 -3
  29. package/dist/contact-map.d.ts +13 -3
  30. package/dist/contact-map.js +14 -1083
  31. package/dist/cta-feature-checklist.cjs +142 -142
  32. package/dist/cta-feature-checklist.js +142 -142
  33. package/dist/faq-numbered-grid.cjs +142 -142
  34. package/dist/faq-numbered-grid.js +142 -142
  35. package/dist/feature-animated-carousel.cjs +142 -142
  36. package/dist/feature-animated-carousel.js +142 -142
  37. package/dist/feature-bento-utilities.cjs +142 -142
  38. package/dist/feature-bento-utilities.js +142 -142
  39. package/dist/feature-capabilities-grid.cjs +142 -142
  40. package/dist/feature-capabilities-grid.js +142 -142
  41. package/dist/feature-category-image-cards.cjs +142 -142
  42. package/dist/feature-category-image-cards.js +142 -142
  43. package/dist/feature-icon-grid-bordered.cjs +142 -142
  44. package/dist/feature-icon-grid-bordered.js +142 -142
  45. package/dist/feature-icon-grid-muted.cjs +142 -142
  46. package/dist/feature-icon-grid-muted.js +142 -142
  47. package/dist/feature-numbered-cards.cjs +142 -142
  48. package/dist/feature-numbered-cards.js +142 -142
  49. package/dist/feature-three-column-values.cjs +142 -142
  50. package/dist/feature-three-column-values.js +142 -142
  51. package/dist/hero-ad-campaign-expert.cjs +142 -142
  52. package/dist/hero-ad-campaign-expert.js +142 -142
  53. package/dist/hero-adaptable-product-grid.cjs +142 -142
  54. package/dist/hero-adaptable-product-grid.js +142 -142
  55. package/dist/hero-agency-animated-images.cjs +142 -142
  56. package/dist/hero-agency-animated-images.js +142 -142
  57. package/dist/hero-announcement-badge.cjs +142 -142
  58. package/dist/hero-announcement-badge.js +142 -142
  59. package/dist/hero-badge-image-split.cjs +142 -142
  60. package/dist/hero-badge-image-split.js +142 -142
  61. package/dist/hero-business-carousel-dots.cjs +142 -142
  62. package/dist/hero-business-carousel-dots.js +142 -142
  63. package/dist/hero-business-operations-mosaic.cjs +142 -142
  64. package/dist/hero-business-operations-mosaic.js +142 -142
  65. package/dist/hero-conversation-intelligence.cjs +142 -142
  66. package/dist/hero-conversation-intelligence.js +142 -142
  67. package/dist/hero-creative-studio-stacked.cjs +142 -142
  68. package/dist/hero-creative-studio-stacked.js +142 -142
  69. package/dist/hero-crm-streamlined.cjs +142 -142
  70. package/dist/hero-crm-streamlined.js +142 -142
  71. package/dist/hero-customer-support-layered.cjs +142 -142
  72. package/dist/hero-customer-support-layered.js +142 -142
  73. package/dist/hero-design-showcase-logos.cjs +142 -142
  74. package/dist/hero-design-showcase-logos.js +142 -142
  75. package/dist/hero-design-system-3d.cjs +142 -142
  76. package/dist/hero-design-system-3d.js +142 -142
  77. package/dist/hero-developer-tools-code.cjs +142 -142
  78. package/dist/hero-developer-tools-code.js +142 -142
  79. package/dist/hero-digital-agency-fullscreen.cjs +142 -142
  80. package/dist/hero-digital-agency-fullscreen.js +142 -142
  81. package/dist/hero-ecommerce-product-showcase.cjs +174 -174
  82. package/dist/hero-ecommerce-product-showcase.js +174 -174
  83. package/dist/hero-event-registration.cjs +142 -142
  84. package/dist/hero-event-registration.js +142 -142
  85. package/dist/hero-fullscreen-background-image.cjs +142 -142
  86. package/dist/hero-fullscreen-background-image.js +142 -142
  87. package/dist/hero-gradient-avatars-rating.cjs +142 -142
  88. package/dist/hero-gradient-avatars-rating.js +142 -142
  89. package/dist/hero-gradient-client-focused.cjs +142 -142
  90. package/dist/hero-gradient-client-focused.js +142 -142
  91. package/dist/hero-hiring-animated-text.cjs +142 -142
  92. package/dist/hero-hiring-animated-text.js +142 -142
  93. package/dist/hero-image-left-content.cjs +142 -142
  94. package/dist/hero-image-left-content.js +142 -142
  95. package/dist/hero-innovation-image-grid.cjs +142 -142
  96. package/dist/hero-innovation-image-grid.js +142 -142
  97. package/dist/hero-mental-health-team.cjs +142 -142
  98. package/dist/hero-mental-health-team.js +142 -142
  99. package/dist/hero-minimal-centered-dark.cjs +174 -174
  100. package/dist/hero-minimal-centered-dark.js +174 -174
  101. package/dist/hero-presentation-platform-video.cjs +142 -142
  102. package/dist/hero-presentation-platform-video.js +142 -142
  103. package/dist/hero-product-showcase-floating.cjs +174 -174
  104. package/dist/hero-product-showcase-floating.js +174 -174
  105. package/dist/hero-shared-inbox-layered.cjs +142 -142
  106. package/dist/hero-shared-inbox-layered.js +142 -142
  107. package/dist/hero-software-growth-video-dialog.cjs +142 -142
  108. package/dist/hero-software-growth-video-dialog.js +142 -142
  109. package/dist/hero-spiral-pattern-cards.cjs +174 -174
  110. package/dist/hero-spiral-pattern-cards.js +174 -174
  111. package/dist/hero-split-geometric-shapes.cjs +142 -142
  112. package/dist/hero-split-geometric-shapes.js +142 -142
  113. package/dist/hero-startup-launch-cta.cjs +174 -174
  114. package/dist/hero-startup-launch-cta.js +174 -174
  115. package/dist/hero-stats-social-proof.cjs +174 -174
  116. package/dist/hero-stats-social-proof.js +174 -174
  117. package/dist/hero-task-timer-animated.cjs +142 -142
  118. package/dist/hero-task-timer-animated.js +142 -142
  119. package/dist/hero-testimonial-image-grid.cjs +142 -142
  120. package/dist/hero-testimonial-image-grid.js +142 -142
  121. package/dist/hero-therapy-testimonial-grid.cjs +142 -142
  122. package/dist/hero-therapy-testimonial-grid.js +142 -142
  123. package/dist/hero-ui-library-showcase.cjs +142 -142
  124. package/dist/hero-ui-library-showcase.js +142 -142
  125. package/dist/hero-video-background-dark.cjs +174 -174
  126. package/dist/hero-video-background-dark.js +174 -174
  127. package/dist/hero-video-dialog-gradient.cjs +142 -142
  128. package/dist/hero-video-dialog-gradient.js +142 -142
  129. package/dist/hero-video-overlay-stars.cjs +142 -142
  130. package/dist/hero-video-overlay-stars.js +142 -142
  131. package/dist/hero-welcome-asymmetric-images.cjs +142 -142
  132. package/dist/hero-welcome-asymmetric-images.js +142 -142
  133. package/dist/index.cjs +725 -1380
  134. package/dist/index.d.cts +0 -2
  135. package/dist/index.d.ts +0 -2
  136. package/dist/index.js +634 -1288
  137. package/dist/registry.cjs +2201 -2827
  138. package/dist/registry.js +948 -1574
  139. package/dist/testimonials-masonry-grid.cjs +142 -142
  140. package/dist/testimonials-masonry-grid.js +142 -142
  141. package/dist/testimonials-stats-header.cjs +159 -159
  142. package/dist/testimonials-stats-header.js +159 -159
  143. package/package.json +4 -7
  144. package/dist/geo-map.cjs +0 -1117
  145. package/dist/geo-map.d.cts +0 -92
  146. package/dist/geo-map.d.ts +0 -92
  147. package/dist/geo-map.js +0 -1095
@@ -397,6 +397,180 @@ var Section = React4__default.forwardRef(
397
397
  }
398
398
  );
399
399
  Section.displayName = "Section";
400
+ var baseStyles = [
401
+ // Layout
402
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
403
+ // Typography - using CSS variables with sensible defaults
404
+ "font-[var(--button-font-family,inherit)]",
405
+ "font-[var(--button-font-weight,500)]",
406
+ "tracking-[var(--button-letter-spacing,0)]",
407
+ "leading-[var(--button-line-height,1.25)]",
408
+ "[text-transform:var(--button-text-transform,none)]",
409
+ "text-sm",
410
+ // Border radius
411
+ "rounded-[var(--button-radius,var(--radius,0.375rem))]",
412
+ // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
413
+ "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
414
+ // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
415
+ "[box-shadow:var(--button-shadow,none)]",
416
+ "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
417
+ // Disabled state
418
+ "disabled:pointer-events-none disabled:opacity-50",
419
+ // SVG handling
420
+ "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
421
+ // Focus styles
422
+ "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
423
+ // Invalid state
424
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
425
+ ].join(" ");
426
+ var buttonVariants = cva(baseStyles, {
427
+ variants: {
428
+ variant: {
429
+ // Default (Primary) variant - full customization
430
+ default: [
431
+ "bg-[var(--button-default-bg,hsl(var(--primary)))]",
432
+ "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
433
+ "border-[length:var(--button-default-border-width,0px)]",
434
+ "border-[color:var(--button-default-border,transparent)]",
435
+ "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
436
+ "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
437
+ "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
438
+ "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
439
+ "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
440
+ ].join(" "),
441
+ // Destructive variant - full customization
442
+ destructive: [
443
+ "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
444
+ "text-[var(--button-destructive-fg,white)]",
445
+ "border-[length:var(--button-destructive-border-width,0px)]",
446
+ "border-[color:var(--button-destructive-border,transparent)]",
447
+ "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
448
+ "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
449
+ "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
450
+ "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
451
+ "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
452
+ "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
453
+ "dark:bg-destructive/60"
454
+ ].join(" "),
455
+ // Outline variant - full customization with proper border handling
456
+ outline: [
457
+ "bg-[var(--button-outline-bg,hsl(var(--background)))]",
458
+ "text-[var(--button-outline-fg,inherit)]",
459
+ "border-[length:var(--button-outline-border-width,1px)]",
460
+ "border-[color:var(--button-outline-border,hsl(var(--border)))]",
461
+ "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
462
+ "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
463
+ "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
464
+ "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
465
+ "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
466
+ "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
467
+ ].join(" "),
468
+ // Secondary variant - full customization
469
+ secondary: [
470
+ "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
471
+ "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
472
+ "border-[length:var(--button-secondary-border-width,0px)]",
473
+ "border-[color:var(--button-secondary-border,transparent)]",
474
+ "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
475
+ "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
476
+ "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
477
+ "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
478
+ "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
479
+ ].join(" "),
480
+ // Ghost variant - full customization
481
+ ghost: [
482
+ "bg-[var(--button-ghost-bg,transparent)]",
483
+ "text-[var(--button-ghost-fg,inherit)]",
484
+ "border-[length:var(--button-ghost-border-width,0px)]",
485
+ "border-[color:var(--button-ghost-border,transparent)]",
486
+ "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
487
+ "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
488
+ "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
489
+ "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
490
+ "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
491
+ "dark:hover:bg-accent/50"
492
+ ].join(" "),
493
+ // Link variant - full customization
494
+ link: [
495
+ "bg-[var(--button-link-bg,transparent)]",
496
+ "text-[var(--button-link-fg,hsl(var(--primary)))]",
497
+ "border-[length:var(--button-link-border-width,0px)]",
498
+ "border-[color:var(--button-link-border,transparent)]",
499
+ "[box-shadow:var(--button-link-shadow,none)]",
500
+ "hover:bg-[var(--button-link-hover-bg,transparent)]",
501
+ "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
502
+ "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
503
+ "underline-offset-4 hover:underline"
504
+ ].join(" ")
505
+ },
506
+ size: {
507
+ default: [
508
+ "h-[var(--button-height-md,2.25rem)]",
509
+ "px-[var(--button-padding-x-md,1rem)]",
510
+ "py-[var(--button-padding-y-md,0.5rem)]",
511
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
512
+ ].join(" "),
513
+ sm: [
514
+ "h-[var(--button-height-sm,2rem)]",
515
+ "px-[var(--button-padding-x-sm,0.75rem)]",
516
+ "py-[var(--button-padding-y-sm,0.25rem)]",
517
+ "gap-1.5",
518
+ "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
519
+ ].join(" "),
520
+ md: [
521
+ "h-[var(--button-height-md,2.25rem)]",
522
+ "px-[var(--button-padding-x-md,1rem)]",
523
+ "py-[var(--button-padding-y-md,0.5rem)]",
524
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
525
+ ].join(" "),
526
+ lg: [
527
+ "h-[var(--button-height-lg,2.5rem)]",
528
+ "px-[var(--button-padding-x-lg,1.5rem)]",
529
+ "py-[var(--button-padding-y-lg,0.5rem)]",
530
+ "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
531
+ ].join(" "),
532
+ icon: "size-[var(--button-height-md,2.25rem)]",
533
+ "icon-sm": "size-[var(--button-height-sm,2rem)]",
534
+ "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
535
+ }
536
+ },
537
+ defaultVariants: {
538
+ variant: "default",
539
+ size: "default"
540
+ }
541
+ });
542
+ var badgeVariants = cva(
543
+ "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",
544
+ {
545
+ variants: {
546
+ variant: {
547
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
548
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
549
+ 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",
550
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
551
+ }
552
+ },
553
+ defaultVariants: {
554
+ variant: "default"
555
+ }
556
+ }
557
+ );
558
+ function Badge({
559
+ className,
560
+ variant,
561
+ asChild = false,
562
+ ...props
563
+ }) {
564
+ const Comp = asChild ? Slot : "span";
565
+ return /* @__PURE__ */ jsx(
566
+ Comp,
567
+ {
568
+ "data-slot": "badge",
569
+ className: cn(badgeVariants({ variant }), className),
570
+ ...props
571
+ }
572
+ );
573
+ }
400
574
  function normalizePhoneNumber(input) {
401
575
  const trimmed = input.trim();
402
576
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -575,148 +749,6 @@ function useNavigation({
575
749
  handleClick
576
750
  };
577
751
  }
578
- var baseStyles = [
579
- // Layout
580
- "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
581
- // Typography - using CSS variables with sensible defaults
582
- "font-[var(--button-font-family,inherit)]",
583
- "font-[var(--button-font-weight,500)]",
584
- "tracking-[var(--button-letter-spacing,0)]",
585
- "leading-[var(--button-line-height,1.25)]",
586
- "[text-transform:var(--button-text-transform,none)]",
587
- "text-sm",
588
- // Border radius
589
- "rounded-[var(--button-radius,var(--radius,0.375rem))]",
590
- // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
591
- "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
592
- // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
593
- "[box-shadow:var(--button-shadow,none)]",
594
- "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
595
- // Disabled state
596
- "disabled:pointer-events-none disabled:opacity-50",
597
- // SVG handling
598
- "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
599
- // Focus styles
600
- "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
601
- // Invalid state
602
- "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
603
- ].join(" ");
604
- var buttonVariants = cva(baseStyles, {
605
- variants: {
606
- variant: {
607
- // Default (Primary) variant - full customization
608
- default: [
609
- "bg-[var(--button-default-bg,hsl(var(--primary)))]",
610
- "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
611
- "border-[length:var(--button-default-border-width,0px)]",
612
- "border-[color:var(--button-default-border,transparent)]",
613
- "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
614
- "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
615
- "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
616
- "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
617
- "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
618
- ].join(" "),
619
- // Destructive variant - full customization
620
- destructive: [
621
- "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
622
- "text-[var(--button-destructive-fg,white)]",
623
- "border-[length:var(--button-destructive-border-width,0px)]",
624
- "border-[color:var(--button-destructive-border,transparent)]",
625
- "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
626
- "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
627
- "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
628
- "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
629
- "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
630
- "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
631
- "dark:bg-destructive/60"
632
- ].join(" "),
633
- // Outline variant - full customization with proper border handling
634
- outline: [
635
- "bg-[var(--button-outline-bg,hsl(var(--background)))]",
636
- "text-[var(--button-outline-fg,inherit)]",
637
- "border-[length:var(--button-outline-border-width,1px)]",
638
- "border-[color:var(--button-outline-border,hsl(var(--border)))]",
639
- "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
640
- "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
641
- "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
642
- "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
643
- "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
644
- "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
645
- ].join(" "),
646
- // Secondary variant - full customization
647
- secondary: [
648
- "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
649
- "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
650
- "border-[length:var(--button-secondary-border-width,0px)]",
651
- "border-[color:var(--button-secondary-border,transparent)]",
652
- "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
653
- "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
654
- "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
655
- "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
656
- "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
657
- ].join(" "),
658
- // Ghost variant - full customization
659
- ghost: [
660
- "bg-[var(--button-ghost-bg,transparent)]",
661
- "text-[var(--button-ghost-fg,inherit)]",
662
- "border-[length:var(--button-ghost-border-width,0px)]",
663
- "border-[color:var(--button-ghost-border,transparent)]",
664
- "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
665
- "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
666
- "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
667
- "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
668
- "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
669
- "dark:hover:bg-accent/50"
670
- ].join(" "),
671
- // Link variant - full customization
672
- link: [
673
- "bg-[var(--button-link-bg,transparent)]",
674
- "text-[var(--button-link-fg,hsl(var(--primary)))]",
675
- "border-[length:var(--button-link-border-width,0px)]",
676
- "border-[color:var(--button-link-border,transparent)]",
677
- "[box-shadow:var(--button-link-shadow,none)]",
678
- "hover:bg-[var(--button-link-hover-bg,transparent)]",
679
- "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
680
- "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
681
- "underline-offset-4 hover:underline"
682
- ].join(" ")
683
- },
684
- size: {
685
- default: [
686
- "h-[var(--button-height-md,2.25rem)]",
687
- "px-[var(--button-padding-x-md,1rem)]",
688
- "py-[var(--button-padding-y-md,0.5rem)]",
689
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
690
- ].join(" "),
691
- sm: [
692
- "h-[var(--button-height-sm,2rem)]",
693
- "px-[var(--button-padding-x-sm,0.75rem)]",
694
- "py-[var(--button-padding-y-sm,0.25rem)]",
695
- "gap-1.5",
696
- "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
697
- ].join(" "),
698
- md: [
699
- "h-[var(--button-height-md,2.25rem)]",
700
- "px-[var(--button-padding-x-md,1rem)]",
701
- "py-[var(--button-padding-y-md,0.5rem)]",
702
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
703
- ].join(" "),
704
- lg: [
705
- "h-[var(--button-height-lg,2.5rem)]",
706
- "px-[var(--button-padding-x-lg,1.5rem)]",
707
- "py-[var(--button-padding-y-lg,0.5rem)]",
708
- "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
709
- ].join(" "),
710
- icon: "size-[var(--button-height-md,2.25rem)]",
711
- "icon-sm": "size-[var(--button-height-sm,2rem)]",
712
- "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
713
- }
714
- },
715
- defaultVariants: {
716
- variant: "default",
717
- size: "default"
718
- }
719
- });
720
752
  var Pressable = React4.forwardRef(
721
753
  ({
722
754
  children,
@@ -815,38 +847,6 @@ var Pressable = React4.forwardRef(
815
847
  }
816
848
  );
817
849
  Pressable.displayName = "Pressable";
818
- var badgeVariants = cva(
819
- "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",
820
- {
821
- variants: {
822
- variant: {
823
- default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
824
- secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
825
- 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",
826
- outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
827
- }
828
- },
829
- defaultVariants: {
830
- variant: "default"
831
- }
832
- }
833
- );
834
- function Badge({
835
- className,
836
- variant,
837
- asChild = false,
838
- ...props
839
- }) {
840
- const Comp = asChild ? Slot : "span";
841
- return /* @__PURE__ */ jsx(
842
- Comp,
843
- {
844
- "data-slot": "badge",
845
- className: cn(badgeVariants({ variant }), className),
846
- ...props
847
- }
848
- );
849
- }
850
850
  var MOBILE_CLASSES = {
851
851
  "fit-left": "items-start md:items-center",
852
852
  "fit-center": "items-center",
@@ -450,6 +450,148 @@ var Section = React4__namespace.default.forwardRef(
450
450
  }
451
451
  );
452
452
  Section.displayName = "Section";
453
+ var baseStyles = [
454
+ // Layout
455
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
456
+ // Typography - using CSS variables with sensible defaults
457
+ "font-[var(--button-font-family,inherit)]",
458
+ "font-[var(--button-font-weight,500)]",
459
+ "tracking-[var(--button-letter-spacing,0)]",
460
+ "leading-[var(--button-line-height,1.25)]",
461
+ "[text-transform:var(--button-text-transform,none)]",
462
+ "text-sm",
463
+ // Border radius
464
+ "rounded-[var(--button-radius,var(--radius,0.375rem))]",
465
+ // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
466
+ "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
467
+ // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
468
+ "[box-shadow:var(--button-shadow,none)]",
469
+ "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
470
+ // Disabled state
471
+ "disabled:pointer-events-none disabled:opacity-50",
472
+ // SVG handling
473
+ "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
474
+ // Focus styles
475
+ "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
476
+ // Invalid state
477
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
478
+ ].join(" ");
479
+ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
480
+ variants: {
481
+ variant: {
482
+ // Default (Primary) variant - full customization
483
+ default: [
484
+ "bg-[var(--button-default-bg,hsl(var(--primary)))]",
485
+ "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
486
+ "border-[length:var(--button-default-border-width,0px)]",
487
+ "border-[color:var(--button-default-border,transparent)]",
488
+ "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
489
+ "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
490
+ "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
491
+ "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
492
+ "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
493
+ ].join(" "),
494
+ // Destructive variant - full customization
495
+ destructive: [
496
+ "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
497
+ "text-[var(--button-destructive-fg,white)]",
498
+ "border-[length:var(--button-destructive-border-width,0px)]",
499
+ "border-[color:var(--button-destructive-border,transparent)]",
500
+ "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
501
+ "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
502
+ "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
503
+ "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
504
+ "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
505
+ "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
506
+ "dark:bg-destructive/60"
507
+ ].join(" "),
508
+ // Outline variant - full customization with proper border handling
509
+ outline: [
510
+ "bg-[var(--button-outline-bg,hsl(var(--background)))]",
511
+ "text-[var(--button-outline-fg,inherit)]",
512
+ "border-[length:var(--button-outline-border-width,1px)]",
513
+ "border-[color:var(--button-outline-border,hsl(var(--border)))]",
514
+ "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
515
+ "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
516
+ "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
517
+ "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
518
+ "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
519
+ "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
520
+ ].join(" "),
521
+ // Secondary variant - full customization
522
+ secondary: [
523
+ "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
524
+ "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
525
+ "border-[length:var(--button-secondary-border-width,0px)]",
526
+ "border-[color:var(--button-secondary-border,transparent)]",
527
+ "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
528
+ "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
529
+ "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
530
+ "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
531
+ "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
532
+ ].join(" "),
533
+ // Ghost variant - full customization
534
+ ghost: [
535
+ "bg-[var(--button-ghost-bg,transparent)]",
536
+ "text-[var(--button-ghost-fg,inherit)]",
537
+ "border-[length:var(--button-ghost-border-width,0px)]",
538
+ "border-[color:var(--button-ghost-border,transparent)]",
539
+ "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
540
+ "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
541
+ "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
542
+ "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
543
+ "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
544
+ "dark:hover:bg-accent/50"
545
+ ].join(" "),
546
+ // Link variant - full customization
547
+ link: [
548
+ "bg-[var(--button-link-bg,transparent)]",
549
+ "text-[var(--button-link-fg,hsl(var(--primary)))]",
550
+ "border-[length:var(--button-link-border-width,0px)]",
551
+ "border-[color:var(--button-link-border,transparent)]",
552
+ "[box-shadow:var(--button-link-shadow,none)]",
553
+ "hover:bg-[var(--button-link-hover-bg,transparent)]",
554
+ "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
555
+ "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
556
+ "underline-offset-4 hover:underline"
557
+ ].join(" ")
558
+ },
559
+ size: {
560
+ default: [
561
+ "h-[var(--button-height-md,2.25rem)]",
562
+ "px-[var(--button-padding-x-md,1rem)]",
563
+ "py-[var(--button-padding-y-md,0.5rem)]",
564
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
565
+ ].join(" "),
566
+ sm: [
567
+ "h-[var(--button-height-sm,2rem)]",
568
+ "px-[var(--button-padding-x-sm,0.75rem)]",
569
+ "py-[var(--button-padding-y-sm,0.25rem)]",
570
+ "gap-1.5",
571
+ "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
572
+ ].join(" "),
573
+ md: [
574
+ "h-[var(--button-height-md,2.25rem)]",
575
+ "px-[var(--button-padding-x-md,1rem)]",
576
+ "py-[var(--button-padding-y-md,0.5rem)]",
577
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
578
+ ].join(" "),
579
+ lg: [
580
+ "h-[var(--button-height-lg,2.5rem)]",
581
+ "px-[var(--button-padding-x-lg,1.5rem)]",
582
+ "py-[var(--button-padding-y-lg,0.5rem)]",
583
+ "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
584
+ ].join(" "),
585
+ icon: "size-[var(--button-height-md,2.25rem)]",
586
+ "icon-sm": "size-[var(--button-height-sm,2rem)]",
587
+ "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
588
+ }
589
+ },
590
+ defaultVariants: {
591
+ variant: "default",
592
+ size: "default"
593
+ }
594
+ });
453
595
  function normalizePhoneNumber(input) {
454
596
  const trimmed = input.trim();
455
597
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -628,148 +770,6 @@ function useNavigation({
628
770
  handleClick
629
771
  };
630
772
  }
631
- var baseStyles = [
632
- // Layout
633
- "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
634
- // Typography - using CSS variables with sensible defaults
635
- "font-[var(--button-font-family,inherit)]",
636
- "font-[var(--button-font-weight,500)]",
637
- "tracking-[var(--button-letter-spacing,0)]",
638
- "leading-[var(--button-line-height,1.25)]",
639
- "[text-transform:var(--button-text-transform,none)]",
640
- "text-sm",
641
- // Border radius
642
- "rounded-[var(--button-radius,var(--radius,0.375rem))]",
643
- // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
644
- "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
645
- // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
646
- "[box-shadow:var(--button-shadow,none)]",
647
- "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
648
- // Disabled state
649
- "disabled:pointer-events-none disabled:opacity-50",
650
- // SVG handling
651
- "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
652
- // Focus styles
653
- "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
654
- // Invalid state
655
- "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
656
- ].join(" ");
657
- var buttonVariants = classVarianceAuthority.cva(baseStyles, {
658
- variants: {
659
- variant: {
660
- // Default (Primary) variant - full customization
661
- default: [
662
- "bg-[var(--button-default-bg,hsl(var(--primary)))]",
663
- "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
664
- "border-[length:var(--button-default-border-width,0px)]",
665
- "border-[color:var(--button-default-border,transparent)]",
666
- "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
667
- "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
668
- "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
669
- "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
670
- "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
671
- ].join(" "),
672
- // Destructive variant - full customization
673
- destructive: [
674
- "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
675
- "text-[var(--button-destructive-fg,white)]",
676
- "border-[length:var(--button-destructive-border-width,0px)]",
677
- "border-[color:var(--button-destructive-border,transparent)]",
678
- "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
679
- "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
680
- "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
681
- "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
682
- "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
683
- "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
684
- "dark:bg-destructive/60"
685
- ].join(" "),
686
- // Outline variant - full customization with proper border handling
687
- outline: [
688
- "bg-[var(--button-outline-bg,hsl(var(--background)))]",
689
- "text-[var(--button-outline-fg,inherit)]",
690
- "border-[length:var(--button-outline-border-width,1px)]",
691
- "border-[color:var(--button-outline-border,hsl(var(--border)))]",
692
- "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
693
- "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
694
- "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
695
- "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
696
- "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
697
- "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
698
- ].join(" "),
699
- // Secondary variant - full customization
700
- secondary: [
701
- "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
702
- "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
703
- "border-[length:var(--button-secondary-border-width,0px)]",
704
- "border-[color:var(--button-secondary-border,transparent)]",
705
- "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
706
- "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
707
- "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
708
- "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
709
- "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
710
- ].join(" "),
711
- // Ghost variant - full customization
712
- ghost: [
713
- "bg-[var(--button-ghost-bg,transparent)]",
714
- "text-[var(--button-ghost-fg,inherit)]",
715
- "border-[length:var(--button-ghost-border-width,0px)]",
716
- "border-[color:var(--button-ghost-border,transparent)]",
717
- "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
718
- "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
719
- "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
720
- "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
721
- "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
722
- "dark:hover:bg-accent/50"
723
- ].join(" "),
724
- // Link variant - full customization
725
- link: [
726
- "bg-[var(--button-link-bg,transparent)]",
727
- "text-[var(--button-link-fg,hsl(var(--primary)))]",
728
- "border-[length:var(--button-link-border-width,0px)]",
729
- "border-[color:var(--button-link-border,transparent)]",
730
- "[box-shadow:var(--button-link-shadow,none)]",
731
- "hover:bg-[var(--button-link-hover-bg,transparent)]",
732
- "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
733
- "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
734
- "underline-offset-4 hover:underline"
735
- ].join(" ")
736
- },
737
- size: {
738
- default: [
739
- "h-[var(--button-height-md,2.25rem)]",
740
- "px-[var(--button-padding-x-md,1rem)]",
741
- "py-[var(--button-padding-y-md,0.5rem)]",
742
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
743
- ].join(" "),
744
- sm: [
745
- "h-[var(--button-height-sm,2rem)]",
746
- "px-[var(--button-padding-x-sm,0.75rem)]",
747
- "py-[var(--button-padding-y-sm,0.25rem)]",
748
- "gap-1.5",
749
- "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
750
- ].join(" "),
751
- md: [
752
- "h-[var(--button-height-md,2.25rem)]",
753
- "px-[var(--button-padding-x-md,1rem)]",
754
- "py-[var(--button-padding-y-md,0.5rem)]",
755
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
756
- ].join(" "),
757
- lg: [
758
- "h-[var(--button-height-lg,2.5rem)]",
759
- "px-[var(--button-padding-x-lg,1.5rem)]",
760
- "py-[var(--button-padding-y-lg,0.5rem)]",
761
- "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
762
- ].join(" "),
763
- icon: "size-[var(--button-height-md,2.25rem)]",
764
- "icon-sm": "size-[var(--button-height-sm,2rem)]",
765
- "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
766
- }
767
- },
768
- defaultVariants: {
769
- variant: "default",
770
- size: "default"
771
- }
772
- });
773
773
  var Pressable = React4__namespace.forwardRef(
774
774
  ({
775
775
  children,