@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.
- package/dist/about-culture-tabs.cjs +174 -174
- package/dist/about-culture-tabs.js +174 -174
- package/dist/about-developer-profile.cjs +200 -200
- package/dist/about-developer-profile.js +198 -198
- package/dist/about-developer-story.cjs +142 -142
- package/dist/about-developer-story.js +142 -142
- package/dist/about-mission-dual-image.cjs +142 -142
- package/dist/about-mission-dual-image.js +142 -142
- package/dist/about-mission-features.cjs +142 -142
- package/dist/about-mission-features.js +142 -142
- package/dist/about-network-spotlight.cjs +142 -142
- package/dist/about-network-spotlight.js +142 -142
- package/dist/about-story-expertise.cjs +142 -142
- package/dist/about-story-expertise.js +142 -142
- package/dist/about-streamline-team.cjs +142 -142
- package/dist/about-streamline-team.js +142 -142
- package/dist/carousel-icon-sidebar.cjs +5 -4
- package/dist/carousel-icon-sidebar.js +5 -4
- package/dist/community-initiatives.cjs +142 -142
- package/dist/community-initiatives.js +142 -142
- package/dist/components.cjs +723 -1364
- package/dist/components.d.cts +0 -2
- package/dist/components.d.ts +0 -2
- package/dist/components.js +633 -1273
- package/dist/contact-map.cjs +14 -1069
- package/dist/contact-map.d.cts +13 -3
- package/dist/contact-map.d.ts +13 -3
- package/dist/contact-map.js +14 -1069
- package/dist/cta-feature-checklist.cjs +142 -142
- package/dist/cta-feature-checklist.js +142 -142
- package/dist/faq-numbered-grid.cjs +142 -142
- package/dist/faq-numbered-grid.js +142 -142
- package/dist/feature-animated-carousel.cjs +142 -142
- package/dist/feature-animated-carousel.js +142 -142
- package/dist/feature-bento-utilities.cjs +142 -142
- package/dist/feature-bento-utilities.js +142 -142
- package/dist/feature-capabilities-grid.cjs +142 -142
- package/dist/feature-capabilities-grid.js +142 -142
- package/dist/feature-category-image-cards.cjs +142 -142
- package/dist/feature-category-image-cards.js +142 -142
- package/dist/feature-icon-grid-bordered.cjs +142 -142
- package/dist/feature-icon-grid-bordered.js +142 -142
- package/dist/feature-icon-grid-muted.cjs +142 -142
- package/dist/feature-icon-grid-muted.js +142 -142
- package/dist/feature-numbered-cards.cjs +142 -142
- package/dist/feature-numbered-cards.js +142 -142
- package/dist/feature-three-column-values.cjs +142 -142
- package/dist/feature-three-column-values.js +142 -142
- package/dist/hero-ad-campaign-expert.cjs +142 -142
- package/dist/hero-ad-campaign-expert.js +142 -142
- package/dist/hero-adaptable-product-grid.cjs +142 -142
- package/dist/hero-adaptable-product-grid.js +142 -142
- package/dist/hero-agency-animated-images.cjs +142 -142
- package/dist/hero-agency-animated-images.js +142 -142
- package/dist/hero-announcement-badge.cjs +142 -142
- package/dist/hero-announcement-badge.js +142 -142
- package/dist/hero-badge-image-split.cjs +142 -142
- package/dist/hero-badge-image-split.js +142 -142
- package/dist/hero-business-carousel-dots.cjs +142 -142
- package/dist/hero-business-carousel-dots.js +142 -142
- package/dist/hero-business-operations-mosaic.cjs +142 -142
- package/dist/hero-business-operations-mosaic.js +142 -142
- package/dist/hero-conversation-intelligence.cjs +142 -142
- package/dist/hero-conversation-intelligence.js +142 -142
- package/dist/hero-creative-studio-stacked.cjs +142 -142
- package/dist/hero-creative-studio-stacked.js +142 -142
- package/dist/hero-crm-streamlined.cjs +142 -142
- package/dist/hero-crm-streamlined.js +142 -142
- package/dist/hero-customer-support-layered.cjs +142 -142
- package/dist/hero-customer-support-layered.js +142 -142
- package/dist/hero-design-showcase-logos.cjs +142 -142
- package/dist/hero-design-showcase-logos.js +142 -142
- package/dist/hero-design-system-3d.cjs +142 -142
- package/dist/hero-design-system-3d.js +142 -142
- package/dist/hero-developer-tools-code.cjs +142 -142
- package/dist/hero-developer-tools-code.js +142 -142
- package/dist/hero-digital-agency-fullscreen.cjs +142 -142
- package/dist/hero-digital-agency-fullscreen.js +142 -142
- package/dist/hero-ecommerce-product-showcase.cjs +174 -174
- package/dist/hero-ecommerce-product-showcase.js +174 -174
- package/dist/hero-event-registration.cjs +142 -142
- package/dist/hero-event-registration.js +142 -142
- package/dist/hero-fullscreen-background-image.cjs +142 -142
- package/dist/hero-fullscreen-background-image.js +142 -142
- package/dist/hero-gradient-avatars-rating.cjs +142 -142
- package/dist/hero-gradient-avatars-rating.js +142 -142
- package/dist/hero-gradient-client-focused.cjs +142 -142
- package/dist/hero-gradient-client-focused.js +142 -142
- package/dist/hero-hiring-animated-text.cjs +142 -142
- package/dist/hero-hiring-animated-text.js +142 -142
- package/dist/hero-image-left-content.cjs +142 -142
- package/dist/hero-image-left-content.js +142 -142
- package/dist/hero-innovation-image-grid.cjs +142 -142
- package/dist/hero-innovation-image-grid.js +142 -142
- package/dist/hero-mental-health-team.cjs +142 -142
- package/dist/hero-mental-health-team.js +142 -142
- package/dist/hero-minimal-centered-dark.cjs +174 -174
- package/dist/hero-minimal-centered-dark.js +174 -174
- package/dist/hero-presentation-platform-video.cjs +142 -142
- package/dist/hero-presentation-platform-video.js +142 -142
- package/dist/hero-product-showcase-floating.cjs +174 -174
- package/dist/hero-product-showcase-floating.js +174 -174
- package/dist/hero-shared-inbox-layered.cjs +142 -142
- package/dist/hero-shared-inbox-layered.js +142 -142
- package/dist/hero-software-growth-video-dialog.cjs +142 -142
- package/dist/hero-software-growth-video-dialog.js +142 -142
- package/dist/hero-spiral-pattern-cards.cjs +174 -174
- package/dist/hero-spiral-pattern-cards.js +174 -174
- package/dist/hero-split-geometric-shapes.cjs +142 -142
- package/dist/hero-split-geometric-shapes.js +142 -142
- package/dist/hero-startup-launch-cta.cjs +174 -174
- package/dist/hero-startup-launch-cta.js +174 -174
- package/dist/hero-stats-social-proof.cjs +174 -174
- package/dist/hero-stats-social-proof.js +174 -174
- package/dist/hero-task-timer-animated.cjs +142 -142
- package/dist/hero-task-timer-animated.js +142 -142
- package/dist/hero-testimonial-image-grid.cjs +142 -142
- package/dist/hero-testimonial-image-grid.js +142 -142
- package/dist/hero-therapy-testimonial-grid.cjs +142 -142
- package/dist/hero-therapy-testimonial-grid.js +142 -142
- package/dist/hero-ui-library-showcase.cjs +142 -142
- package/dist/hero-ui-library-showcase.js +142 -142
- package/dist/hero-video-background-dark.cjs +174 -174
- package/dist/hero-video-background-dark.js +174 -174
- package/dist/hero-video-dialog-gradient.cjs +142 -142
- package/dist/hero-video-dialog-gradient.js +142 -142
- package/dist/hero-video-overlay-stars.cjs +142 -142
- package/dist/hero-video-overlay-stars.js +142 -142
- package/dist/hero-welcome-asymmetric-images.cjs +142 -142
- package/dist/hero-welcome-asymmetric-images.js +142 -142
- package/dist/index.cjs +725 -1366
- package/dist/index.d.cts +0 -2
- package/dist/index.d.ts +0 -2
- package/dist/index.js +634 -1274
- package/dist/registry.cjs +2371 -2915
- package/dist/registry.js +1120 -1664
- package/dist/testimonials-large-quote.cjs +74 -43
- package/dist/testimonials-large-quote.d.cts +5 -1
- package/dist/testimonials-large-quote.d.ts +5 -1
- package/dist/testimonials-large-quote.js +74 -43
- package/dist/testimonials-logo-cards.cjs +8 -2
- package/dist/testimonials-logo-cards.js +8 -2
- package/dist/testimonials-masonry-grid.cjs +486 -69
- package/dist/testimonials-masonry-grid.d.cts +5 -1
- package/dist/testimonials-masonry-grid.d.ts +5 -1
- package/dist/testimonials-masonry-grid.js +483 -63
- package/dist/testimonials-mini-dividers.cjs +2 -3
- package/dist/testimonials-mini-dividers.js +2 -3
- package/dist/testimonials-minimal-numbered.cjs +5 -4
- package/dist/testimonials-minimal-numbered.js +5 -4
- package/dist/testimonials-parallax-number.cjs +5 -4
- package/dist/testimonials-parallax-number.js +5 -4
- package/dist/testimonials-scrolling-columns.cjs +7 -12
- package/dist/testimonials-scrolling-columns.js +7 -12
- package/dist/testimonials-stats-header.cjs +528 -87
- package/dist/testimonials-stats-header.d.cts +39 -3
- package/dist/testimonials-stats-header.d.ts +39 -3
- package/dist/testimonials-stats-header.js +523 -82
- package/package.json +4 -7
- package/dist/geo-map.cjs +0 -1103
- package/dist/geo-map.d.cts +0 -92
- package/dist/geo-map.d.ts +0 -92
- package/dist/geo-map.js +0 -1081
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
919
|
+
const smartPlatformName = React4__namespace.useMemo(() => {
|
|
920
920
|
return platform || platformName;
|
|
921
921
|
}, [platform, platformName]);
|
|
922
|
-
const iconName =
|
|
922
|
+
const iconName = React4__namespace.useMemo(() => {
|
|
923
923
|
return iconNameOverride || platformIconMap[smartPlatformName];
|
|
924
924
|
}, [iconNameOverride, smartPlatformName]);
|
|
925
|
-
const accessibleLabel =
|
|
925
|
+
const accessibleLabel = React4__namespace.useMemo(() => {
|
|
926
926
|
return label || platformName;
|
|
927
927
|
}, [label, platformName]);
|
|
928
|
-
const icon =
|
|
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 =
|
|
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 =
|
|
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));
|