@opensite/ui 2.0.5 → 2.0.7
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/hero-adaptable-product-grid.cjs +11 -8
- package/dist/hero-adaptable-product-grid.d.cts +1 -1
- package/dist/hero-adaptable-product-grid.d.ts +1 -1
- package/dist/hero-adaptable-product-grid.js +11 -8
- package/dist/hero-business-operations-mosaic.cjs +542 -22
- package/dist/hero-business-operations-mosaic.d.cts +20 -8
- package/dist/hero-business-operations-mosaic.d.ts +20 -8
- package/dist/hero-business-operations-mosaic.js +542 -19
- package/dist/hero-centered-gradient-cta.cjs +3 -3
- package/dist/hero-centered-gradient-cta.js +3 -3
- package/dist/hero-community-survey-cta.cjs +3 -2
- package/dist/hero-community-survey-cta.js +3 -2
- package/dist/hero-conversion-video-play.cjs +1 -1
- package/dist/hero-conversion-video-play.js +1 -1
- package/dist/hero-crm-streamlined.cjs +4 -4
- package/dist/hero-crm-streamlined.js +4 -4
- package/dist/hero-design-showcase-logos.cjs +4 -1
- package/dist/hero-design-showcase-logos.js +4 -1
- package/dist/hero-design-system-3d.cjs +1 -1
- package/dist/hero-design-system-3d.js +1 -1
- package/dist/hero-feature-cards-grid.cjs +2 -2
- package/dist/hero-feature-cards-grid.js +2 -2
- package/dist/hero-fullscreen-background-image.cjs +4 -3
- package/dist/hero-fullscreen-background-image.js +4 -3
- package/dist/hero-fullscreen-logo-cta.cjs +7 -5
- package/dist/hero-fullscreen-logo-cta.js +7 -5
- package/dist/hero-gradient-avatars-rating.cjs +3 -3
- package/dist/hero-gradient-avatars-rating.js +3 -3
- package/dist/hero-gradient-client-focused.cjs +2 -2
- package/dist/hero-gradient-client-focused.js +2 -2
- package/dist/hero-grid-pattern-solutions.cjs +2 -2
- package/dist/hero-grid-pattern-solutions.d.cts +1 -1
- package/dist/hero-grid-pattern-solutions.d.ts +1 -1
- package/dist/hero-grid-pattern-solutions.js +2 -2
- package/dist/hero-innovation-image-grid.cjs +48 -42
- package/dist/hero-innovation-image-grid.js +48 -42
- package/dist/hero-mental-health-team.cjs +633 -89
- package/dist/hero-mental-health-team.d.cts +26 -6
- package/dist/hero-mental-health-team.d.ts +26 -6
- package/dist/hero-mental-health-team.js +614 -85
- package/dist/hero-minimal-centered-dark.cjs +841 -807
- package/dist/hero-minimal-centered-dark.d.cts +1 -1
- package/dist/hero-minimal-centered-dark.d.ts +1 -1
- package/dist/hero-minimal-centered-dark.js +840 -806
- package/dist/hero-presentation-platform-video.cjs +8 -2
- package/dist/hero-presentation-platform-video.js +8 -2
- package/dist/hero-product-showcase-floating.cjs +715 -612
- package/dist/hero-product-showcase-floating.d.cts +5 -1
- package/dist/hero-product-showcase-floating.d.ts +5 -1
- package/dist/hero-product-showcase-floating.js +712 -609
- package/dist/hero-saas-dashboard-preview.cjs +82 -107
- package/dist/hero-saas-dashboard-preview.d.cts +1 -1
- package/dist/hero-saas-dashboard-preview.d.ts +1 -1
- package/dist/hero-saas-dashboard-preview.js +82 -107
- package/dist/hero-software-growth-video-dialog.cjs +5 -5
- package/dist/hero-software-growth-video-dialog.js +5 -5
- package/dist/hero-split-image-newsletter.cjs +41 -32
- package/dist/hero-split-image-newsletter.js +41 -32
- package/dist/hero-stats-social-proof.cjs +1 -1
- package/dist/hero-stats-social-proof.js +1 -1
- package/dist/hero-testimonial-image-grid.cjs +2 -2
- package/dist/hero-testimonial-image-grid.js +2 -2
- package/dist/hero-therapy-testimonial-grid.cjs +682 -638
- package/dist/hero-therapy-testimonial-grid.d.cts +5 -1
- package/dist/hero-therapy-testimonial-grid.d.ts +5 -1
- package/dist/hero-therapy-testimonial-grid.js +671 -627
- package/dist/hero-ui-library-showcase.cjs +51 -42
- package/dist/hero-ui-library-showcase.js +51 -42
- package/dist/hero-video-dialog-gradient.cjs +2 -2
- package/dist/hero-video-dialog-gradient.js +2 -2
- package/dist/hero-video-overlay-stars.cjs +7 -15
- package/dist/hero-video-overlay-stars.js +7 -15
- package/dist/registry.cjs +608 -438
- package/dist/registry.js +608 -438
- package/package.json +1 -1
|
@@ -1,50 +1,37 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var React3 = 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
|
+
var classVarianceAuthority = require('class-variance-authority');
|
|
9
10
|
|
|
10
|
-
function
|
|
11
|
+
function _interopNamespace(e) {
|
|
12
|
+
if (e && e.__esModule) return e;
|
|
13
|
+
var n = Object.create(null);
|
|
14
|
+
if (e) {
|
|
15
|
+
Object.keys(e).forEach(function (k) {
|
|
16
|
+
if (k !== 'default') {
|
|
17
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
18
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () { return e[k]; }
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
n.default = e;
|
|
26
|
+
return Object.freeze(n);
|
|
27
|
+
}
|
|
11
28
|
|
|
12
|
-
var
|
|
29
|
+
var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
|
|
13
30
|
|
|
14
31
|
// components/blocks/hero/hero-mental-health-team.tsx
|
|
15
32
|
function cn(...inputs) {
|
|
16
33
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
17
34
|
}
|
|
18
|
-
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
19
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
20
|
-
if (isDark) {
|
|
21
|
-
switch (variant) {
|
|
22
|
-
case "muted":
|
|
23
|
-
return "bg-background";
|
|
24
|
-
case "card":
|
|
25
|
-
return "bg-card";
|
|
26
|
-
case "accent":
|
|
27
|
-
return "bg-accent";
|
|
28
|
-
case "subtle":
|
|
29
|
-
return "bg-background/50";
|
|
30
|
-
}
|
|
31
|
-
} else {
|
|
32
|
-
switch (variant) {
|
|
33
|
-
case "muted":
|
|
34
|
-
return "bg-muted";
|
|
35
|
-
case "card":
|
|
36
|
-
return "bg-card";
|
|
37
|
-
case "accent":
|
|
38
|
-
return "bg-accent";
|
|
39
|
-
case "subtle":
|
|
40
|
-
return "bg-muted/50";
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
function getNestedCardTextColor(parentBg, options) {
|
|
45
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
46
|
-
return isDark ? "text-foreground" : "";
|
|
47
|
-
}
|
|
48
35
|
var maxWidthStyles = {
|
|
49
36
|
sm: "max-w-screen-sm",
|
|
50
37
|
md: "max-w-screen-md",
|
|
@@ -54,7 +41,7 @@ var maxWidthStyles = {
|
|
|
54
41
|
"4xl": "max-w-[1536px]",
|
|
55
42
|
full: "max-w-full"
|
|
56
43
|
};
|
|
57
|
-
var Container =
|
|
44
|
+
var Container = React3__namespace.default.forwardRef(
|
|
58
45
|
({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
|
|
59
46
|
const Component = as;
|
|
60
47
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -359,7 +346,7 @@ var spacingStyles = {
|
|
|
359
346
|
};
|
|
360
347
|
var predefinedSpacings = ["none", "sm", "md", "lg", "xl"];
|
|
361
348
|
var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
|
|
362
|
-
var Section =
|
|
349
|
+
var Section = React3__namespace.default.forwardRef(
|
|
363
350
|
({
|
|
364
351
|
id,
|
|
365
352
|
title,
|
|
@@ -420,79 +407,575 @@ var Section = React__default.default.forwardRef(
|
|
|
420
407
|
}
|
|
421
408
|
);
|
|
422
409
|
Section.displayName = "Section";
|
|
410
|
+
var baseStyles = [
|
|
411
|
+
// Layout
|
|
412
|
+
"inline-flex items-center justify-center gap-2 whitespace-nowrap shrink-0",
|
|
413
|
+
// Typography - using CSS variables with sensible defaults
|
|
414
|
+
"font-[var(--button-font-family,inherit)]",
|
|
415
|
+
"font-[var(--button-font-weight,500)]",
|
|
416
|
+
"tracking-[var(--button-letter-spacing,0)]",
|
|
417
|
+
"leading-[var(--button-line-height,1.25)]",
|
|
418
|
+
"[text-transform:var(--button-text-transform,none)]",
|
|
419
|
+
"text-sm",
|
|
420
|
+
// Border radius
|
|
421
|
+
"rounded-[var(--button-radius,var(--radius,0.375rem))]",
|
|
422
|
+
// Smooth transition - using [transition:...] to set full shorthand property (not just transition-property)
|
|
423
|
+
"[transition:var(--button-transition,all_250ms_cubic-bezier(0.4,0,0.2,1))]",
|
|
424
|
+
// Box shadow (master level) - using [box-shadow:...] for complex multi-value shadows
|
|
425
|
+
"[box-shadow:var(--button-shadow,none)]",
|
|
426
|
+
"hover:[box-shadow:var(--button-shadow-hover,var(--button-shadow,none))]",
|
|
427
|
+
// Disabled state
|
|
428
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
429
|
+
// SVG handling
|
|
430
|
+
"[&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 [&_svg]:shrink-0",
|
|
431
|
+
// Focus styles
|
|
432
|
+
"outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
433
|
+
// Invalid state
|
|
434
|
+
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive"
|
|
435
|
+
].join(" ");
|
|
436
|
+
var buttonVariants = classVarianceAuthority.cva(baseStyles, {
|
|
437
|
+
variants: {
|
|
438
|
+
variant: {
|
|
439
|
+
// Default (Primary) variant - full customization
|
|
440
|
+
default: [
|
|
441
|
+
"bg-[var(--button-default-bg,hsl(var(--primary)))]",
|
|
442
|
+
"text-[var(--button-default-fg,hsl(var(--primary-foreground)))]",
|
|
443
|
+
"border-[length:var(--button-default-border-width,0px)]",
|
|
444
|
+
"border-[color:var(--button-default-border,transparent)]",
|
|
445
|
+
"[box-shadow:var(--button-default-shadow,var(--button-shadow,none))]",
|
|
446
|
+
"hover:bg-[var(--button-default-hover-bg,hsl(var(--primary)/0.9))]",
|
|
447
|
+
"hover:text-[var(--button-default-hover-fg,var(--button-default-fg,hsl(var(--primary-foreground))))]",
|
|
448
|
+
"hover:border-[color:var(--button-default-hover-border,var(--button-default-border,transparent))]",
|
|
449
|
+
"hover:[box-shadow:var(--button-default-shadow-hover,var(--button-shadow-hover,var(--button-default-shadow,var(--button-shadow,none))))]"
|
|
450
|
+
].join(" "),
|
|
451
|
+
// Destructive variant - full customization
|
|
452
|
+
destructive: [
|
|
453
|
+
"bg-[var(--button-destructive-bg,hsl(var(--destructive)))]",
|
|
454
|
+
"text-[var(--button-destructive-fg,white)]",
|
|
455
|
+
"border-[length:var(--button-destructive-border-width,0px)]",
|
|
456
|
+
"border-[color:var(--button-destructive-border,transparent)]",
|
|
457
|
+
"[box-shadow:var(--button-destructive-shadow,var(--button-shadow,none))]",
|
|
458
|
+
"hover:bg-[var(--button-destructive-hover-bg,hsl(var(--destructive)/0.9))]",
|
|
459
|
+
"hover:text-[var(--button-destructive-hover-fg,var(--button-destructive-fg,white))]",
|
|
460
|
+
"hover:border-[color:var(--button-destructive-hover-border,var(--button-destructive-border,transparent))]",
|
|
461
|
+
"hover:[box-shadow:var(--button-destructive-shadow-hover,var(--button-shadow-hover,var(--button-destructive-shadow,var(--button-shadow,none))))]",
|
|
462
|
+
"focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40",
|
|
463
|
+
"dark:bg-destructive/60"
|
|
464
|
+
].join(" "),
|
|
465
|
+
// Outline variant - full customization with proper border handling
|
|
466
|
+
outline: [
|
|
467
|
+
"bg-[var(--button-outline-bg,hsl(var(--background)))]",
|
|
468
|
+
"text-[var(--button-outline-fg,inherit)]",
|
|
469
|
+
"border-[length:var(--button-outline-border-width,1px)]",
|
|
470
|
+
"border-[color:var(--button-outline-border,hsl(var(--border)))]",
|
|
471
|
+
"[box-shadow:var(--button-outline-shadow,var(--button-shadow,0_1px_2px_0_rgb(0_0_0/0.05)))]",
|
|
472
|
+
"hover:bg-[var(--button-outline-hover-bg,hsl(var(--accent)))]",
|
|
473
|
+
"hover:text-[var(--button-outline-hover-fg,hsl(var(--accent-foreground)))]",
|
|
474
|
+
"hover:border-[color:var(--button-outline-hover-border,var(--button-outline-border,hsl(var(--border))))]",
|
|
475
|
+
"hover:[box-shadow:var(--button-outline-shadow-hover,var(--button-shadow-hover,var(--button-outline-shadow,var(--button-shadow,none))))]",
|
|
476
|
+
"dark:bg-input/30 dark:border-input dark:hover:bg-input/50"
|
|
477
|
+
].join(" "),
|
|
478
|
+
// Secondary variant - full customization
|
|
479
|
+
secondary: [
|
|
480
|
+
"bg-[var(--button-secondary-bg,hsl(var(--secondary)))]",
|
|
481
|
+
"text-[var(--button-secondary-fg,hsl(var(--secondary-foreground)))]",
|
|
482
|
+
"border-[length:var(--button-secondary-border-width,0px)]",
|
|
483
|
+
"border-[color:var(--button-secondary-border,transparent)]",
|
|
484
|
+
"[box-shadow:var(--button-secondary-shadow,var(--button-shadow,none))]",
|
|
485
|
+
"hover:bg-[var(--button-secondary-hover-bg,hsl(var(--secondary)/0.8))]",
|
|
486
|
+
"hover:text-[var(--button-secondary-hover-fg,var(--button-secondary-fg,hsl(var(--secondary-foreground))))]",
|
|
487
|
+
"hover:border-[color:var(--button-secondary-hover-border,var(--button-secondary-border,transparent))]",
|
|
488
|
+
"hover:[box-shadow:var(--button-secondary-shadow-hover,var(--button-shadow-hover,var(--button-secondary-shadow,var(--button-shadow,none))))]"
|
|
489
|
+
].join(" "),
|
|
490
|
+
// Ghost variant - full customization
|
|
491
|
+
ghost: [
|
|
492
|
+
"bg-[var(--button-ghost-bg,transparent)]",
|
|
493
|
+
"text-[var(--button-ghost-fg,inherit)]",
|
|
494
|
+
"border-[length:var(--button-ghost-border-width,0px)]",
|
|
495
|
+
"border-[color:var(--button-ghost-border,transparent)]",
|
|
496
|
+
"[box-shadow:var(--button-ghost-shadow,var(--button-shadow,none))]",
|
|
497
|
+
"hover:bg-[var(--button-ghost-hover-bg,hsl(var(--accent)))]",
|
|
498
|
+
"hover:text-[var(--button-ghost-hover-fg,hsl(var(--accent-foreground)))]",
|
|
499
|
+
"hover:border-[color:var(--button-ghost-hover-border,var(--button-ghost-border,transparent))]",
|
|
500
|
+
"hover:[box-shadow:var(--button-ghost-shadow-hover,var(--button-shadow-hover,var(--button-ghost-shadow,var(--button-shadow,none))))]",
|
|
501
|
+
"dark:hover:bg-accent/50"
|
|
502
|
+
].join(" "),
|
|
503
|
+
// Link variant - full customization
|
|
504
|
+
link: [
|
|
505
|
+
"bg-[var(--button-link-bg,transparent)]",
|
|
506
|
+
"text-[var(--button-link-fg,hsl(var(--primary)))]",
|
|
507
|
+
"border-[length:var(--button-link-border-width,0px)]",
|
|
508
|
+
"border-[color:var(--button-link-border,transparent)]",
|
|
509
|
+
"[box-shadow:var(--button-link-shadow,none)]",
|
|
510
|
+
"hover:bg-[var(--button-link-hover-bg,transparent)]",
|
|
511
|
+
"hover:text-[var(--button-link-hover-fg,var(--button-link-fg,hsl(var(--primary))))]",
|
|
512
|
+
"hover:[box-shadow:var(--button-link-shadow-hover,none)]",
|
|
513
|
+
"underline-offset-4 hover:underline"
|
|
514
|
+
].join(" ")
|
|
515
|
+
},
|
|
516
|
+
size: {
|
|
517
|
+
default: [
|
|
518
|
+
"h-[var(--button-height-md,2.25rem)]",
|
|
519
|
+
"px-[var(--button-padding-x-md,1rem)]",
|
|
520
|
+
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
521
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
522
|
+
].join(" "),
|
|
523
|
+
sm: [
|
|
524
|
+
"h-[var(--button-height-sm,2rem)]",
|
|
525
|
+
"px-[var(--button-padding-x-sm,0.75rem)]",
|
|
526
|
+
"py-[var(--button-padding-y-sm,0.25rem)]",
|
|
527
|
+
"gap-1.5",
|
|
528
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-sm,0.75rem)*0.83)]"
|
|
529
|
+
].join(" "),
|
|
530
|
+
md: [
|
|
531
|
+
"h-[var(--button-height-md,2.25rem)]",
|
|
532
|
+
"px-[var(--button-padding-x-md,1rem)]",
|
|
533
|
+
"py-[var(--button-padding-y-md,0.5rem)]",
|
|
534
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-md,1rem)*0.75)]"
|
|
535
|
+
].join(" "),
|
|
536
|
+
lg: [
|
|
537
|
+
"h-[var(--button-height-lg,2.5rem)]",
|
|
538
|
+
"px-[var(--button-padding-x-lg,1.5rem)]",
|
|
539
|
+
"py-[var(--button-padding-y-lg,0.5rem)]",
|
|
540
|
+
"has-[>svg]:px-[calc(var(--button-padding-x-lg,1.5rem)*0.67)]"
|
|
541
|
+
].join(" "),
|
|
542
|
+
icon: "size-[var(--button-height-md,2.25rem)]",
|
|
543
|
+
"icon-sm": "size-[var(--button-height-sm,2rem)]",
|
|
544
|
+
"icon-lg": "size-[var(--button-height-lg,2.5rem)]"
|
|
545
|
+
}
|
|
546
|
+
},
|
|
547
|
+
defaultVariants: {
|
|
548
|
+
variant: "default",
|
|
549
|
+
size: "default"
|
|
550
|
+
}
|
|
551
|
+
});
|
|
552
|
+
function normalizePhoneNumber(input) {
|
|
553
|
+
const trimmed = input.trim();
|
|
554
|
+
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
555
|
+
return trimmed;
|
|
556
|
+
}
|
|
557
|
+
const match = trimmed.match(/^[\s\+\-\(\)]*(\d[\d\s\-\(\)\.]*\d)[\s\-]*(x|ext\.?|extension)?[\s\-]*(\d+)?$/i);
|
|
558
|
+
if (match) {
|
|
559
|
+
const mainNumber = match[1].replace(/[\s\-\(\)\.]/g, "");
|
|
560
|
+
const extension = match[3];
|
|
561
|
+
const normalized = mainNumber.length >= 10 && !trimmed.startsWith("+") ? `+${mainNumber}` : mainNumber;
|
|
562
|
+
const withExtension = extension ? `${normalized};ext=${extension}` : normalized;
|
|
563
|
+
return `tel:${withExtension}`;
|
|
564
|
+
}
|
|
565
|
+
const cleaned = trimmed.replace(/[\s\-\(\)\.]/g, "");
|
|
566
|
+
return `tel:${cleaned}`;
|
|
567
|
+
}
|
|
568
|
+
function normalizeEmail(input) {
|
|
569
|
+
const trimmed = input.trim();
|
|
570
|
+
if (trimmed.toLowerCase().startsWith("mailto:")) {
|
|
571
|
+
return trimmed;
|
|
572
|
+
}
|
|
573
|
+
return `mailto:${trimmed}`;
|
|
574
|
+
}
|
|
575
|
+
function isEmail(input) {
|
|
576
|
+
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
577
|
+
return emailRegex.test(input.trim());
|
|
578
|
+
}
|
|
579
|
+
function isPhoneNumber(input) {
|
|
580
|
+
const trimmed = input.trim();
|
|
581
|
+
if (trimmed.toLowerCase().startsWith("tel:")) {
|
|
582
|
+
return true;
|
|
583
|
+
}
|
|
584
|
+
const phoneRegex = /^[\s\+\-\(\)]*\d[\d\s\-\(\)\.]*\d[\s\-]*(x|ext\.?|extension)?[\s\-]*\d*$/i;
|
|
585
|
+
return phoneRegex.test(trimmed);
|
|
586
|
+
}
|
|
587
|
+
function isInternalUrl(href) {
|
|
588
|
+
if (typeof window === "undefined") {
|
|
589
|
+
return href.startsWith("/") && !href.startsWith("//");
|
|
590
|
+
}
|
|
591
|
+
const trimmed = href.trim();
|
|
592
|
+
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
593
|
+
return true;
|
|
594
|
+
}
|
|
595
|
+
try {
|
|
596
|
+
const url = new URL(trimmed, window.location.href);
|
|
597
|
+
const currentOrigin = window.location.origin;
|
|
598
|
+
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
599
|
+
return normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin);
|
|
600
|
+
} catch {
|
|
601
|
+
return false;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
function toRelativePath(href) {
|
|
605
|
+
if (typeof window === "undefined") {
|
|
606
|
+
return href;
|
|
607
|
+
}
|
|
608
|
+
const trimmed = href.trim();
|
|
609
|
+
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) {
|
|
610
|
+
return trimmed;
|
|
611
|
+
}
|
|
612
|
+
try {
|
|
613
|
+
const url = new URL(trimmed, window.location.href);
|
|
614
|
+
const currentOrigin = window.location.origin;
|
|
615
|
+
const normalizeOrigin = (origin) => origin.replace(/^(https?:\/\/)(www\.)?/, "$1");
|
|
616
|
+
if (normalizeOrigin(url.origin) === normalizeOrigin(currentOrigin)) {
|
|
617
|
+
return url.pathname + url.search + url.hash;
|
|
618
|
+
}
|
|
619
|
+
} catch {
|
|
620
|
+
}
|
|
621
|
+
return trimmed;
|
|
622
|
+
}
|
|
623
|
+
function useNavigation({
|
|
624
|
+
href,
|
|
625
|
+
onClick
|
|
626
|
+
} = {}) {
|
|
627
|
+
const linkType = React3__namespace.useMemo(() => {
|
|
628
|
+
if (!href || href.trim() === "") {
|
|
629
|
+
return onClick ? "none" : "none";
|
|
630
|
+
}
|
|
631
|
+
const trimmed = href.trim();
|
|
632
|
+
if (trimmed.toLowerCase().startsWith("mailto:") || isEmail(trimmed)) {
|
|
633
|
+
return "mailto";
|
|
634
|
+
}
|
|
635
|
+
if (trimmed.toLowerCase().startsWith("tel:") || isPhoneNumber(trimmed)) {
|
|
636
|
+
return "tel";
|
|
637
|
+
}
|
|
638
|
+
if (isInternalUrl(trimmed)) {
|
|
639
|
+
return "internal";
|
|
640
|
+
}
|
|
641
|
+
try {
|
|
642
|
+
new URL(trimmed, typeof window !== "undefined" ? window.location.href : "http://localhost");
|
|
643
|
+
return "external";
|
|
644
|
+
} catch {
|
|
645
|
+
return "internal";
|
|
646
|
+
}
|
|
647
|
+
}, [href, onClick]);
|
|
648
|
+
const normalizedHref = React3__namespace.useMemo(() => {
|
|
649
|
+
if (!href || href.trim() === "") {
|
|
650
|
+
return void 0;
|
|
651
|
+
}
|
|
652
|
+
const trimmed = href.trim();
|
|
653
|
+
switch (linkType) {
|
|
654
|
+
case "tel":
|
|
655
|
+
return normalizePhoneNumber(trimmed);
|
|
656
|
+
case "mailto":
|
|
657
|
+
return normalizeEmail(trimmed);
|
|
658
|
+
case "internal":
|
|
659
|
+
return toRelativePath(trimmed);
|
|
660
|
+
case "external":
|
|
661
|
+
return trimmed;
|
|
662
|
+
default:
|
|
663
|
+
return trimmed;
|
|
664
|
+
}
|
|
665
|
+
}, [href, linkType]);
|
|
666
|
+
const target = React3__namespace.useMemo(() => {
|
|
667
|
+
switch (linkType) {
|
|
668
|
+
case "external":
|
|
669
|
+
return "_blank";
|
|
670
|
+
case "internal":
|
|
671
|
+
return "_self";
|
|
672
|
+
case "mailto":
|
|
673
|
+
case "tel":
|
|
674
|
+
return void 0;
|
|
675
|
+
default:
|
|
676
|
+
return void 0;
|
|
677
|
+
}
|
|
678
|
+
}, [linkType]);
|
|
679
|
+
const rel = React3__namespace.useMemo(() => {
|
|
680
|
+
if (linkType === "external") {
|
|
681
|
+
return "noopener noreferrer";
|
|
682
|
+
}
|
|
683
|
+
return void 0;
|
|
684
|
+
}, [linkType]);
|
|
685
|
+
const isExternal = linkType === "external";
|
|
686
|
+
const isInternal = linkType === "internal";
|
|
687
|
+
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
688
|
+
const handleClick = React3__namespace.useCallback(
|
|
689
|
+
(event) => {
|
|
690
|
+
if (onClick) {
|
|
691
|
+
try {
|
|
692
|
+
onClick(event);
|
|
693
|
+
} catch (error) {
|
|
694
|
+
console.error("Error in user onClick handler:", error);
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
if (event.defaultPrevented) {
|
|
698
|
+
return;
|
|
699
|
+
}
|
|
700
|
+
if (shouldUseRouter && normalizedHref && event.button === 0 && // left-click only
|
|
701
|
+
!event.metaKey && !event.altKey && !event.ctrlKey && !event.shiftKey) {
|
|
702
|
+
if (typeof window !== "undefined") {
|
|
703
|
+
const handler = window.__opensiteNavigationHandler;
|
|
704
|
+
if (typeof handler === "function") {
|
|
705
|
+
try {
|
|
706
|
+
const handled = handler(normalizedHref, event.nativeEvent || event);
|
|
707
|
+
if (handled !== false) {
|
|
708
|
+
event.preventDefault();
|
|
709
|
+
}
|
|
710
|
+
} catch (error) {
|
|
711
|
+
console.error("Error in navigation handler:", error);
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
},
|
|
717
|
+
[onClick, shouldUseRouter, normalizedHref]
|
|
718
|
+
);
|
|
719
|
+
return {
|
|
720
|
+
linkType,
|
|
721
|
+
normalizedHref,
|
|
722
|
+
target,
|
|
723
|
+
rel,
|
|
724
|
+
isExternal,
|
|
725
|
+
isInternal,
|
|
726
|
+
shouldUseRouter,
|
|
727
|
+
handleClick
|
|
728
|
+
};
|
|
729
|
+
}
|
|
730
|
+
var Pressable = React3__namespace.forwardRef(
|
|
731
|
+
({
|
|
732
|
+
children,
|
|
733
|
+
className,
|
|
734
|
+
href,
|
|
735
|
+
onClick,
|
|
736
|
+
variant,
|
|
737
|
+
size,
|
|
738
|
+
asButton = false,
|
|
739
|
+
fallbackComponentType = "span",
|
|
740
|
+
componentType,
|
|
741
|
+
"aria-label": ariaLabel,
|
|
742
|
+
"aria-describedby": ariaDescribedby,
|
|
743
|
+
id,
|
|
744
|
+
...props
|
|
745
|
+
}, ref) => {
|
|
746
|
+
const navigation = useNavigation({ href, onClick });
|
|
747
|
+
const {
|
|
748
|
+
normalizedHref,
|
|
749
|
+
target,
|
|
750
|
+
rel,
|
|
751
|
+
linkType,
|
|
752
|
+
isInternal,
|
|
753
|
+
handleClick
|
|
754
|
+
} = navigation;
|
|
755
|
+
const shouldRenderLink = normalizedHref && linkType !== "none";
|
|
756
|
+
const shouldRenderButton = !shouldRenderLink && onClick;
|
|
757
|
+
const effectiveComponentType = componentType || (shouldRenderLink ? "a" : shouldRenderButton ? "button" : fallbackComponentType);
|
|
758
|
+
const finalComponentType = isInternal && shouldRenderLink ? "a" : effectiveComponentType;
|
|
759
|
+
const shouldApplyButtonStyles = asButton || variant || size;
|
|
760
|
+
const combinedClassName = cn(
|
|
761
|
+
shouldApplyButtonStyles && buttonVariants({ variant, size }),
|
|
762
|
+
className
|
|
763
|
+
);
|
|
764
|
+
const dataProps = Object.fromEntries(
|
|
765
|
+
Object.entries(props).filter(([key]) => key.startsWith("data-"))
|
|
766
|
+
);
|
|
767
|
+
const buttonDataAttributes = shouldApplyButtonStyles ? {
|
|
768
|
+
"data-slot": "button",
|
|
769
|
+
"data-variant": variant ?? "default",
|
|
770
|
+
"data-size": size ?? "default"
|
|
771
|
+
} : {};
|
|
772
|
+
const commonProps = {
|
|
773
|
+
className: combinedClassName,
|
|
774
|
+
onClick: handleClick,
|
|
775
|
+
"aria-label": ariaLabel,
|
|
776
|
+
"aria-describedby": ariaDescribedby,
|
|
777
|
+
id,
|
|
778
|
+
...dataProps,
|
|
779
|
+
...buttonDataAttributes
|
|
780
|
+
};
|
|
781
|
+
if (finalComponentType === "a" && shouldRenderLink) {
|
|
782
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
783
|
+
"a",
|
|
784
|
+
{
|
|
785
|
+
ref,
|
|
786
|
+
href: normalizedHref,
|
|
787
|
+
target,
|
|
788
|
+
rel,
|
|
789
|
+
...commonProps,
|
|
790
|
+
...props,
|
|
791
|
+
children
|
|
792
|
+
}
|
|
793
|
+
);
|
|
794
|
+
}
|
|
795
|
+
if (finalComponentType === "button") {
|
|
796
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
797
|
+
"button",
|
|
798
|
+
{
|
|
799
|
+
ref,
|
|
800
|
+
type: props.type || "button",
|
|
801
|
+
...commonProps,
|
|
802
|
+
...props,
|
|
803
|
+
children
|
|
804
|
+
}
|
|
805
|
+
);
|
|
806
|
+
}
|
|
807
|
+
if (finalComponentType === "div") {
|
|
808
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
809
|
+
"div",
|
|
810
|
+
{
|
|
811
|
+
ref,
|
|
812
|
+
...commonProps,
|
|
813
|
+
children
|
|
814
|
+
}
|
|
815
|
+
);
|
|
816
|
+
}
|
|
817
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
818
|
+
"span",
|
|
819
|
+
{
|
|
820
|
+
ref,
|
|
821
|
+
...commonProps,
|
|
822
|
+
children
|
|
823
|
+
}
|
|
824
|
+
);
|
|
825
|
+
}
|
|
826
|
+
);
|
|
827
|
+
Pressable.displayName = "Pressable";
|
|
828
|
+
var MOBILE_CLASSES = {
|
|
829
|
+
"fit-left": "items-start md:items-center",
|
|
830
|
+
"fit-center": "items-center",
|
|
831
|
+
"fit-right": "items-end md:items-center",
|
|
832
|
+
"full-left": "items-stretch md:items-center",
|
|
833
|
+
"full-center": "items-stretch md:items-center",
|
|
834
|
+
"full-right": "items-stretch md:items-center"
|
|
835
|
+
};
|
|
836
|
+
function BlockActions({
|
|
837
|
+
mobileConfig,
|
|
838
|
+
actionsClassName,
|
|
839
|
+
verticalSpacing = "mt-4 md:mt-8",
|
|
840
|
+
actions,
|
|
841
|
+
actionsSlot
|
|
842
|
+
}) {
|
|
843
|
+
const width = mobileConfig?.width ?? "full";
|
|
844
|
+
const position = mobileConfig?.position ?? "center";
|
|
845
|
+
const mobileLayoutClass = MOBILE_CLASSES[`${width}-${position}`];
|
|
846
|
+
if (actionsSlot) {
|
|
847
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { children: actionsSlot });
|
|
848
|
+
} else if (actions && actions?.length > 0) {
|
|
849
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
850
|
+
"div",
|
|
851
|
+
{
|
|
852
|
+
className: cn(
|
|
853
|
+
"flex flex-col md:flex-row flex-wrap gap-4",
|
|
854
|
+
mobileLayoutClass,
|
|
855
|
+
actionsClassName,
|
|
856
|
+
verticalSpacing
|
|
857
|
+
),
|
|
858
|
+
children: actions.map((action, index) => /* @__PURE__ */ jsxRuntime.jsx(ActionComponent, { action }, index))
|
|
859
|
+
}
|
|
860
|
+
);
|
|
861
|
+
} else {
|
|
862
|
+
return null;
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
function ActionComponent({ action }) {
|
|
866
|
+
const {
|
|
867
|
+
label,
|
|
868
|
+
icon,
|
|
869
|
+
iconAfter,
|
|
870
|
+
children,
|
|
871
|
+
href,
|
|
872
|
+
onClick,
|
|
873
|
+
className: actionClassName,
|
|
874
|
+
...pressableProps
|
|
875
|
+
} = action;
|
|
876
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
877
|
+
Pressable,
|
|
878
|
+
{
|
|
879
|
+
href,
|
|
880
|
+
onClick,
|
|
881
|
+
asButton: action.asButton ?? true,
|
|
882
|
+
className: actionClassName,
|
|
883
|
+
...pressableProps,
|
|
884
|
+
children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
885
|
+
icon,
|
|
886
|
+
label,
|
|
887
|
+
iconAfter
|
|
888
|
+
] })
|
|
889
|
+
}
|
|
890
|
+
);
|
|
891
|
+
}
|
|
423
892
|
function HeroMentalHealthTeam({
|
|
424
|
-
|
|
893
|
+
description,
|
|
894
|
+
descriptionClassName,
|
|
895
|
+
actions,
|
|
896
|
+
actionsSlot,
|
|
897
|
+
actionsClassName,
|
|
425
898
|
heading,
|
|
426
|
-
|
|
427
|
-
|
|
899
|
+
smallImages,
|
|
900
|
+
smallImagesSlot,
|
|
428
901
|
testimonial,
|
|
429
902
|
testimonialSlot,
|
|
430
903
|
featureImage,
|
|
431
904
|
featureImageSlot,
|
|
432
905
|
background,
|
|
433
|
-
spacing,
|
|
906
|
+
spacing = "xl",
|
|
434
907
|
pattern,
|
|
435
908
|
patternOpacity,
|
|
436
909
|
className,
|
|
437
|
-
containerClassName,
|
|
910
|
+
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
438
911
|
headerClassName,
|
|
439
912
|
headingClassName,
|
|
440
913
|
gridClassName,
|
|
441
914
|
optixFlowConfig
|
|
442
915
|
}) {
|
|
443
|
-
const
|
|
444
|
-
if (
|
|
445
|
-
if (!
|
|
916
|
+
const renderSmallImages = React3.useMemo(() => {
|
|
917
|
+
if (smallImagesSlot) return smallImagesSlot;
|
|
918
|
+
if (!smallImages || smallImages.length === 0) return null;
|
|
446
919
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
447
|
-
|
|
920
|
+
smallImages[0] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[1/2] row-[1/2] w-full", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
448
921
|
img.Img,
|
|
449
922
|
{
|
|
450
|
-
src:
|
|
451
|
-
alt:
|
|
452
|
-
className: cn(
|
|
923
|
+
src: smallImages[0].src,
|
|
924
|
+
alt: smallImages[0].alt,
|
|
925
|
+
className: cn(
|
|
926
|
+
"block h-full w-full object-cover object-center",
|
|
927
|
+
smallImages[0].className
|
|
928
|
+
),
|
|
453
929
|
optixFlowConfig
|
|
454
930
|
}
|
|
455
931
|
) }) }),
|
|
456
|
-
|
|
932
|
+
smallImages[1] && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[2/3] row-[1/2] w-full md:col-[2/3] md:row-[1/2]", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full max-h-77.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
457
933
|
img.Img,
|
|
458
934
|
{
|
|
459
|
-
src:
|
|
460
|
-
alt:
|
|
461
|
-
className: cn(
|
|
935
|
+
src: smallImages[1].src,
|
|
936
|
+
alt: smallImages[1].alt,
|
|
937
|
+
className: cn(
|
|
938
|
+
"block h-full w-full object-cover object-center",
|
|
939
|
+
smallImages[1].className
|
|
940
|
+
),
|
|
462
941
|
optixFlowConfig
|
|
463
942
|
}
|
|
464
943
|
) }) })
|
|
465
944
|
] });
|
|
466
|
-
}, [
|
|
467
|
-
const renderTestimonial =
|
|
945
|
+
}, [smallImagesSlot, smallImages, optixFlowConfig]);
|
|
946
|
+
const renderTestimonial = React3.useMemo(() => {
|
|
468
947
|
if (testimonialSlot) return testimonialSlot;
|
|
469
948
|
if (!testimonial) return null;
|
|
470
949
|
const avatarSrc = testimonial.avatarSrc ?? testimonial.avatar?.src;
|
|
471
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[1/3] row-[3/4] w-full md:col-[1/3] md:row-[2/3]", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
472
|
-
"
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
950
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[1/3] row-[3/4] w-full md:col-[1/3] md:row-[2/3]", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
951
|
+
"div",
|
|
952
|
+
{
|
|
953
|
+
className: cn(
|
|
954
|
+
"flex h-full min-h-37.5 flex-col gap-3 overflow-hidden rounded-3xl p-5 px-5 md:flex-row md:items-center md:gap-7 md:py-8 bg-muted"
|
|
955
|
+
),
|
|
956
|
+
children: [
|
|
957
|
+
avatarSrc && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-20 w-20 shrink-0 overflow-hidden rounded-xl md:h-30 md:w-30", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
958
|
+
img.Img,
|
|
959
|
+
{
|
|
960
|
+
src: avatarSrc,
|
|
961
|
+
alt: testimonial.avatar?.alt ?? "",
|
|
962
|
+
className: "h-full w-full object-cover object-center",
|
|
963
|
+
optixFlowConfig
|
|
964
|
+
}
|
|
965
|
+
) }),
|
|
966
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex h-full w-full flex-col justify-between gap-2 text-muted-foreground", children: [
|
|
967
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "text-lg font-medium", children: [
|
|
968
|
+
'"',
|
|
969
|
+
testimonial.quote,
|
|
970
|
+
'"'
|
|
971
|
+
] }),
|
|
972
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "", children: testimonial.author })
|
|
973
|
+
] })
|
|
974
|
+
]
|
|
975
|
+
}
|
|
976
|
+
) });
|
|
494
977
|
}, [testimonialSlot, testimonial, optixFlowConfig]);
|
|
495
|
-
const renderFeatureImage =
|
|
978
|
+
const renderFeatureImage = React3.useMemo(() => {
|
|
496
979
|
if (featureImageSlot) return featureImageSlot;
|
|
497
980
|
if (!featureImage) return null;
|
|
498
981
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "col-[1/3] row-[2/3] h-100 w-full md:col-[3/5] md:row-[1/3] md:h-auto", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-full max-h-130.5 w-full overflow-hidden rounded-2xl", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -500,7 +983,10 @@ function HeroMentalHealthTeam({
|
|
|
500
983
|
{
|
|
501
984
|
src: featureImage.src,
|
|
502
985
|
alt: featureImage.alt,
|
|
503
|
-
className: cn(
|
|
986
|
+
className: cn(
|
|
987
|
+
"block h-full w-full object-cover object-center",
|
|
988
|
+
featureImage.className
|
|
989
|
+
),
|
|
504
990
|
optixFlowConfig
|
|
505
991
|
}
|
|
506
992
|
) }) });
|
|
@@ -508,17 +994,75 @@ function HeroMentalHealthTeam({
|
|
|
508
994
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
509
995
|
Section,
|
|
510
996
|
{
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
997
|
+
background,
|
|
998
|
+
spacing,
|
|
999
|
+
pattern,
|
|
1000
|
+
patternOpacity,
|
|
1001
|
+
className,
|
|
1002
|
+
containerClassName,
|
|
1003
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pt-10 md:pt-0", children: [
|
|
1004
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1005
|
+
"div",
|
|
1006
|
+
{
|
|
1007
|
+
className: cn(
|
|
1008
|
+
"mx-auto mb-16 flex max-w-[900px] flex-col items-center gap-6",
|
|
1009
|
+
headerClassName
|
|
1010
|
+
),
|
|
1011
|
+
children: [
|
|
1012
|
+
heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1013
|
+
"h1",
|
|
1014
|
+
{
|
|
1015
|
+
className: cn(
|
|
1016
|
+
"text-center text-4xl leading-tight font-medium sm:text-5xl md:text-6xl text-balance",
|
|
1017
|
+
headingClassName
|
|
1018
|
+
),
|
|
1019
|
+
children: heading
|
|
1020
|
+
}
|
|
1021
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1022
|
+
"h1",
|
|
1023
|
+
{
|
|
1024
|
+
className: cn(
|
|
1025
|
+
"text-center text-4xl leading-tight font-medium sm:text-5xl md:text-6xl text-balance",
|
|
1026
|
+
headingClassName
|
|
1027
|
+
),
|
|
1028
|
+
children: heading
|
|
1029
|
+
}
|
|
1030
|
+
)),
|
|
1031
|
+
description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1032
|
+
"p",
|
|
1033
|
+
{
|
|
1034
|
+
className: cn(
|
|
1035
|
+
"text-center text-lg md:text-xl text-balance",
|
|
1036
|
+
descriptionClassName
|
|
1037
|
+
),
|
|
1038
|
+
children: description
|
|
1039
|
+
}
|
|
1040
|
+
) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
|
|
1041
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1042
|
+
BlockActions,
|
|
1043
|
+
{
|
|
1044
|
+
actions,
|
|
1045
|
+
actionsSlot,
|
|
1046
|
+
actionsClassName
|
|
1047
|
+
}
|
|
1048
|
+
)
|
|
1049
|
+
]
|
|
1050
|
+
}
|
|
1051
|
+
),
|
|
1052
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1053
|
+
"div",
|
|
1054
|
+
{
|
|
1055
|
+
className: cn(
|
|
1056
|
+
"grid w-full max-w-332.5 auto-cols-auto grid-cols-2 grid-rows-[auto_auto] justify-center gap-5 md:grid-cols-[repeat(4,1fr)]",
|
|
1057
|
+
gridClassName
|
|
1058
|
+
),
|
|
1059
|
+
children: [
|
|
1060
|
+
renderSmallImages,
|
|
1061
|
+
renderTestimonial,
|
|
1062
|
+
renderFeatureImage
|
|
1063
|
+
]
|
|
1064
|
+
}
|
|
1065
|
+
)
|
|
522
1066
|
] })
|
|
523
1067
|
}
|
|
524
1068
|
);
|