@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
@@ -1,14 +1,14 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var React3 = require('react');
4
+ var React4 = require('react');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var img = require('@page-speed/img');
8
8
  var jsxRuntime = require('react/jsx-runtime');
9
9
  var classVarianceAuthority = require('class-variance-authority');
10
- var icon = require('@page-speed/icon');
11
10
  var reactSlot = require('@radix-ui/react-slot');
11
+ var icon = require('@page-speed/icon');
12
12
  var usePlatformFromUrl = require('@opensite/hooks/usePlatformFromUrl');
13
13
 
14
14
  function _interopNamespace(e) {
@@ -29,7 +29,7 @@ function _interopNamespace(e) {
29
29
  return Object.freeze(n);
30
30
  }
31
31
 
32
- var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
32
+ var React4__namespace = /*#__PURE__*/_interopNamespace(React4);
33
33
 
34
34
  // components/blocks/about/about-developer-profile.tsx
35
35
  function cn(...inputs) {
@@ -44,7 +44,7 @@ var maxWidthStyles = {
44
44
  "4xl": "max-w-[1536px]",
45
45
  full: "max-w-full"
46
46
  };
47
- var Container = React3__namespace.default.forwardRef(
47
+ var Container = React4__namespace.default.forwardRef(
48
48
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
49
49
  const Component = as;
50
50
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -350,7 +350,7 @@ var spacingStyles = {
350
350
  };
351
351
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
352
352
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
353
- var Section = React3__namespace.default.forwardRef(
353
+ var Section = React4__namespace.default.forwardRef(
354
354
  ({
355
355
  id,
356
356
  title,
@@ -411,6 +411,188 @@ var Section = React3__namespace.default.forwardRef(
411
411
  }
412
412
  );
413
413
  Section.displayName = "Section";
414
+ var baseStyles = [
415
+ // Layout
416
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
417
+ // Typography - using CSS variables with sensible defaults
418
+ "font-[var(--button-font-family,inherit)]",
419
+ "font-[var(--button-font-weight,500)]",
420
+ "tracking-[var(--button-letter-spacing,0)]",
421
+ "leading-[var(--button-line-height,1.25)]",
422
+ "[text-transform:var(--button-text-transform,none)]",
423
+ "text-sm",
424
+ // Border radius
425
+ "rounded-[var(--button-radius,var(--radius,0.375rem))]",
426
+ // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
427
+ "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
428
+ // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
429
+ "[box-shadow:var(--button-shadow,none)]",
430
+ "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
431
+ // Disabled state
432
+ "disabled:pointer-events-none disabled:opacity-50",
433
+ // SVG handling
434
+ "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
435
+ // Focus styles
436
+ "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
437
+ // Invalid state
438
+ "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
439
+ ].join(" ");
440
+ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
441
+ variants: {
442
+ variant: {
443
+ // Default (Primary) variant - full customization
444
+ default: [
445
+ "bg-[var(--button-default-bg,hsl(var(--primary)))]",
446
+ "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
447
+ "border-[length:var(--button-default-border-width,0px)]",
448
+ "border-[color:var(--button-default-border,transparent)]",
449
+ "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
450
+ "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
451
+ "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
452
+ "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
453
+ "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
454
+ ].join(" "),
455
+ // Destructive variant - full customization
456
+ destructive: [
457
+ "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
458
+ "text-[var(--button-destructive-fg,white)]",
459
+ "border-[length:var(--button-destructive-border-width,0px)]",
460
+ "border-[color:var(--button-destructive-border,transparent)]",
461
+ "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
462
+ "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
463
+ "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
464
+ "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
465
+ "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
466
+ "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
467
+ "dark:bg-destructive/60"
468
+ ].join(" "),
469
+ // Outline variant - full customization with proper border handling
470
+ outline: [
471
+ "bg-[var(--button-outline-bg,hsl(var(--background)))]",
472
+ "text-[var(--button-outline-fg,inherit)]",
473
+ "border-[length:var(--button-outline-border-width,1px)]",
474
+ "border-[color:var(--button-outline-border,hsl(var(--border)))]",
475
+ "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
476
+ "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
477
+ "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
478
+ "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
479
+ "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
480
+ "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
481
+ ].join(" "),
482
+ // Secondary variant - full customization
483
+ secondary: [
484
+ "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
485
+ "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
486
+ "border-[length:var(--button-secondary-border-width,0px)]",
487
+ "border-[color:var(--button-secondary-border,transparent)]",
488
+ "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
489
+ "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
490
+ "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
491
+ "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
492
+ "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
493
+ ].join(" "),
494
+ // Ghost variant - full customization
495
+ ghost: [
496
+ "bg-[var(--button-ghost-bg,transparent)]",
497
+ "text-[var(--button-ghost-fg,inherit)]",
498
+ "border-[length:var(--button-ghost-border-width,0px)]",
499
+ "border-[color:var(--button-ghost-border,transparent)]",
500
+ "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
501
+ "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
502
+ "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
503
+ "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
504
+ "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
505
+ "dark:hover:bg-accent/50"
506
+ ].join(" "),
507
+ // Link variant - full customization
508
+ link: [
509
+ "bg-[var(--button-link-bg,transparent)]",
510
+ "text-[var(--button-link-fg,hsl(var(--primary)))]",
511
+ "border-[length:var(--button-link-border-width,0px)]",
512
+ "border-[color:var(--button-link-border,transparent)]",
513
+ "[box-shadow:var(--button-link-shadow,none)]",
514
+ "hover:bg-[var(--button-link-hover-bg,transparent)]",
515
+ "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
516
+ "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
517
+ "underline-offset-4 hover:underline"
518
+ ].join(" ")
519
+ },
520
+ size: {
521
+ default: [
522
+ "h-[var(--button-height-md,2.25rem)]",
523
+ "px-[var(--button-padding-x-md,1rem)]",
524
+ "py-[var(--button-padding-y-md,0.5rem)]",
525
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
526
+ ].join(" "),
527
+ sm: [
528
+ "h-[var(--button-height-sm,2rem)]",
529
+ "px-[var(--button-padding-x-sm,0.75rem)]",
530
+ "py-[var(--button-padding-y-sm,0.25rem)]",
531
+ "gap-1.5",
532
+ "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
533
+ ].join(" "),
534
+ md: [
535
+ "h-[var(--button-height-md,2.25rem)]",
536
+ "px-[var(--button-padding-x-md,1rem)]",
537
+ "py-[var(--button-padding-y-md,0.5rem)]",
538
+ "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
539
+ ].join(" "),
540
+ lg: [
541
+ "h-[var(--button-height-lg,2.5rem)]",
542
+ "px-[var(--button-padding-x-lg,1.5rem)]",
543
+ "py-[var(--button-padding-y-lg,0.5rem)]",
544
+ "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
545
+ ].join(" "),
546
+ icon: "size-[var(--button-height-md,2.25rem)]",
547
+ "icon-sm": "size-[var(--button-height-sm,2rem)]",
548
+ "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
549
+ }
550
+ },
551
+ defaultVariants: {
552
+ variant: "default",
553
+ size: "default"
554
+ }
555
+ });
556
+ var badgeVariants = classVarianceAuthority.cva(
557
+ "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",
558
+ {
559
+ variants: {
560
+ variant: {
561
+ default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
562
+ secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
563
+ 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",
564
+ outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
565
+ }
566
+ },
567
+ defaultVariants: {
568
+ variant: "default"
569
+ }
570
+ }
571
+ );
572
+ function Badge({
573
+ className,
574
+ variant,
575
+ asChild = false,
576
+ ...props
577
+ }) {
578
+ const Comp = asChild ? reactSlot.Slot : "span";
579
+ return /* @__PURE__ */ jsxRuntime.jsx(
580
+ Comp,
581
+ {
582
+ "data-slot": "badge",
583
+ className: cn(badgeVariants({ variant }), className),
584
+ ...props
585
+ }
586
+ );
587
+ }
588
+ var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
589
+ var DynamicIcon = React4__namespace.memo(function DynamicIcon2({
590
+ apiKey,
591
+ ...props
592
+ }) {
593
+ return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
594
+ });
595
+ DynamicIcon.displayName = "DynamicIcon";
414
596
  function normalizePhoneNumber(input) {
415
597
  const trimmed = input.trim();
416
598
  if (trimmed.toLowerCase().startsWith("tel:")) {
@@ -486,7 +668,7 @@ function useNavigation({
486
668
  href,
487
669
  onClick
488
670
  } = {}) {
489
- const linkType = React3__namespace.useMemo(() => {
671
+ const linkType = React4__namespace.useMemo(() => {
490
672
  if (!href || href.trim() === "") {
491
673
  return onClick ? "none" : "none";
492
674
  }
@@ -507,7 +689,7 @@ function useNavigation({
507
689
  return "internal";
508
690
  }
509
691
  }, [href, onClick]);
510
- const normalizedHref = React3__namespace.useMemo(() => {
692
+ const normalizedHref = React4__namespace.useMemo(() => {
511
693
  if (!href || href.trim() === "") {
512
694
  return void 0;
513
695
  }
@@ -525,7 +707,7 @@ function useNavigation({
525
707
  return trimmed;
526
708
  }
527
709
  }, [href, linkType]);
528
- const target = React3__namespace.useMemo(() => {
710
+ const target = React4__namespace.useMemo(() => {
529
711
  switch (linkType) {
530
712
  case "external":
531
713
  return "_blank";
@@ -538,7 +720,7 @@ function useNavigation({
538
720
  return void 0;
539
721
  }
540
722
  }, [linkType]);
541
- const rel = React3__namespace.useMemo(() => {
723
+ const rel = React4__namespace.useMemo(() => {
542
724
  if (linkType === "external") {
543
725
  return "noopener noreferrer";
544
726
  }
@@ -547,7 +729,7 @@ function useNavigation({
547
729
  const isExternal = linkType === "external";
548
730
  const isInternal = linkType === "internal";
549
731
  const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
550
- const handleClick = React3__namespace.useCallback(
732
+ const handleClick = React4__namespace.useCallback(
551
733
  (event) => {
552
734
  if (onClick) {
553
735
  try {
@@ -589,149 +771,7 @@ function useNavigation({
589
771
  handleClick
590
772
  };
591
773
  }
592
- var baseStyles = [
593
- // Layout
594
- "inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
595
- // Typography - using CSS variables with sensible defaults
596
- "font-[var(--button-font-family,inherit)]",
597
- "font-[var(--button-font-weight,500)]",
598
- "tracking-[var(--button-letter-spacing,0)]",
599
- "leading-[var(--button-line-height,1.25)]",
600
- "[text-transform:var(--button-text-transform,none)]",
601
- "text-sm",
602
- // Border radius
603
- "rounded-[var(--button-radius,var(--radius,0.375rem))]",
604
- // Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
605
- "[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
606
- // Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
607
- "[box-shadow:var(--button-shadow,none)]",
608
- "hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
609
- // Disabled state
610
- "disabled:pointer-events-none disabled:opacity-50",
611
- // SVG handling
612
- "[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
613
- // Focus styles
614
- "outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
615
- // Invalid state
616
- "aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
617
- ].join(" ");
618
- var buttonVariants = classVarianceAuthority.cva(baseStyles, {
619
- variants: {
620
- variant: {
621
- // Default (Primary) variant - full customization
622
- default: [
623
- "bg-[var(--button-default-bg,hsl(var(--primary)))]",
624
- "text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
625
- "border-[length:var(--button-default-border-width,0px)]",
626
- "border-[color:var(--button-default-border,transparent)]",
627
- "[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
628
- "hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
629
- "hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
630
- "hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
631
- "hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
632
- ].join(" "),
633
- // Destructive variant - full customization
634
- destructive: [
635
- "bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
636
- "text-[var(--button-destructive-fg,white)]",
637
- "border-[length:var(--button-destructive-border-width,0px)]",
638
- "border-[color:var(--button-destructive-border,transparent)]",
639
- "[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
640
- "hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
641
- "hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
642
- "hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
643
- "hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
644
- "focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
645
- "dark:bg-destructive/60"
646
- ].join(" "),
647
- // Outline variant - full customization with proper border handling
648
- outline: [
649
- "bg-[var(--button-outline-bg,hsl(var(--background)))]",
650
- "text-[var(--button-outline-fg,inherit)]",
651
- "border-[length:var(--button-outline-border-width,1px)]",
652
- "border-[color:var(--button-outline-border,hsl(var(--border)))]",
653
- "[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
654
- "hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
655
- "hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
656
- "hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
657
- "hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
658
- "dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
659
- ].join(" "),
660
- // Secondary variant - full customization
661
- secondary: [
662
- "bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
663
- "text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
664
- "border-[length:var(--button-secondary-border-width,0px)]",
665
- "border-[color:var(--button-secondary-border,transparent)]",
666
- "[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
667
- "hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
668
- "hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
669
- "hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
670
- "hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
671
- ].join(" "),
672
- // Ghost variant - full customization
673
- ghost: [
674
- "bg-[var(--button-ghost-bg,transparent)]",
675
- "text-[var(--button-ghost-fg,inherit)]",
676
- "border-[length:var(--button-ghost-border-width,0px)]",
677
- "border-[color:var(--button-ghost-border,transparent)]",
678
- "[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
679
- "hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
680
- "hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
681
- "hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
682
- "hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
683
- "dark:hover:bg-accent/50"
684
- ].join(" "),
685
- // Link variant - full customization
686
- link: [
687
- "bg-[var(--button-link-bg,transparent)]",
688
- "text-[var(--button-link-fg,hsl(var(--primary)))]",
689
- "border-[length:var(--button-link-border-width,0px)]",
690
- "border-[color:var(--button-link-border,transparent)]",
691
- "[box-shadow:var(--button-link-shadow,none)]",
692
- "hover:bg-[var(--button-link-hover-bg,transparent)]",
693
- "hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
694
- "hover:[box-shadow:var(--button-link-shadow-hover,none)]",
695
- "underline-offset-4 hover:underline"
696
- ].join(" ")
697
- },
698
- size: {
699
- default: [
700
- "h-[var(--button-height-md,2.25rem)]",
701
- "px-[var(--button-padding-x-md,1rem)]",
702
- "py-[var(--button-padding-y-md,0.5rem)]",
703
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
704
- ].join(" "),
705
- sm: [
706
- "h-[var(--button-height-sm,2rem)]",
707
- "px-[var(--button-padding-x-sm,0.75rem)]",
708
- "py-[var(--button-padding-y-sm,0.25rem)]",
709
- "gap-1.5",
710
- "has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
711
- ].join(" "),
712
- md: [
713
- "h-[var(--button-height-md,2.25rem)]",
714
- "px-[var(--button-padding-x-md,1rem)]",
715
- "py-[var(--button-padding-y-md,0.5rem)]",
716
- "has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
717
- ].join(" "),
718
- lg: [
719
- "h-[var(--button-height-lg,2.5rem)]",
720
- "px-[var(--button-padding-x-lg,1.5rem)]",
721
- "py-[var(--button-padding-y-lg,0.5rem)]",
722
- "has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
723
- ].join(" "),
724
- icon: "size-[var(--button-height-md,2.25rem)]",
725
- "icon-sm": "size-[var(--button-height-sm,2rem)]",
726
- "icon-lg": "size-[var(--button-height-lg,2.5rem)]"
727
- }
728
- },
729
- defaultVariants: {
730
- variant: "default",
731
- size: "default"
732
- }
733
- });
734
- var Pressable = React3__namespace.forwardRef(
774
+ var Pressable = React4__namespace.forwardRef(
735
775
  ({
736
776
  children,
737
777
  className,
@@ -829,46 +869,6 @@ var Pressable = React3__namespace.forwardRef(
829
869
  }
830
870
  );
831
871
  Pressable.displayName = "Pressable";
832
- var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
833
- var DynamicIcon = React3__namespace.memo(function DynamicIcon2({
834
- apiKey,
835
- ...props
836
- }) {
837
- return /* @__PURE__ */ jsxRuntime.jsx(icon.Icon, { ...props, apiKey: apiKey ?? DEFAULT_ICON_API_KEY });
838
- });
839
- DynamicIcon.displayName = "DynamicIcon";
840
- var badgeVariants = classVarianceAuthority.cva(
841
- "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",
842
- {
843
- variants: {
844
- variant: {
845
- default: "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
846
- secondary: "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
847
- 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",
848
- outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"
849
- }
850
- },
851
- defaultVariants: {
852
- variant: "default"
853
- }
854
- }
855
- );
856
- function Badge({
857
- className,
858
- variant,
859
- asChild = false,
860
- ...props
861
- }) {
862
- const Comp = asChild ? reactSlot.Slot : "span";
863
- return /* @__PURE__ */ jsxRuntime.jsx(
864
- Comp,
865
- {
866
- "data-slot": "badge",
867
- className: cn(badgeVariants({ variant }), className),
868
- ...props
869
- }
870
- );
871
- }
872
872
  var platformIconMap = {
873
873
  instagram: "cib/instagram",
874
874
  linkedin: "cib/linkedin",
@@ -902,7 +902,7 @@ var platformIconMap = {
902
902
  dribbble: "cib/dribbble",
903
903
  unknown: "icon-park-solid/circular-connection"
904
904
  };
905
- var SocialLinkIcon = React3__namespace.forwardRef(
905
+ var SocialLinkIcon = React4__namespace.forwardRef(
906
906
  ({
907
907
  platformName,
908
908
  label,
@@ -916,16 +916,16 @@ var SocialLinkIcon = React3__namespace.forwardRef(
916
916
  ...pressableProps
917
917
  }, ref) => {
918
918
  const platform = usePlatformFromUrl.usePlatformFromUrl(href);
919
- const smartPlatformName = React3__namespace.useMemo(() => {
919
+ const smartPlatformName = React4__namespace.useMemo(() => {
920
920
  return platform || platformName;
921
921
  }, [platform, platformName]);
922
- const iconName = React3__namespace.useMemo(() => {
922
+ const iconName = React4__namespace.useMemo(() => {
923
923
  return iconNameOverride || platformIconMap[smartPlatformName];
924
924
  }, [iconNameOverride, smartPlatformName]);
925
- const accessibleLabel = React3__namespace.useMemo(() => {
925
+ const accessibleLabel = React4__namespace.useMemo(() => {
926
926
  return label || platformName;
927
927
  }, [label, platformName]);
928
- const icon = React3__namespace.useMemo(() => {
928
+ const icon = React4__namespace.useMemo(() => {
929
929
  return /* @__PURE__ */ jsxRuntime.jsx(
930
930
  DynamicIcon,
931
931
  {
@@ -1050,7 +1050,7 @@ function AboutDeveloperProfile({
1050
1050
  pattern,
1051
1051
  patternOpacity
1052
1052
  }) {
1053
- const socialLinksContent = React3.useMemo(() => {
1053
+ const socialLinksContent = React4.useMemo(() => {
1054
1054
  if (socialLinksSlot) return socialLinksSlot;
1055
1055
  if (!socialLinks || socialLinks.length === 0) return null;
1056
1056
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -1073,7 +1073,7 @@ function AboutDeveloperProfile({
1073
1073
  }
1074
1074
  );
1075
1075
  }, [socialLinksSlot, socialLinks, background]);
1076
- const skillsContent = React3.useMemo(() => {
1076
+ const skillsContent = React4.useMemo(() => {
1077
1077
  if (skillsSlot) return skillsSlot;
1078
1078
  if (!skills || skills.length === 0) return null;
1079
1079
  return skills.map((skill, idx) => /* @__PURE__ */ jsxRuntime.jsx(Badge, { className: cn("px-4", skillTagClassName), children: skill }, idx));