@opensite/ui 0.8.1 → 0.8.3

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 (83) hide show
  1. package/dist/carousel-horizontal-cards.cjs +8 -6
  2. package/dist/carousel-horizontal-cards.js +8 -6
  3. package/dist/carousel-image-hero.cjs +119 -177
  4. package/dist/carousel-image-hero.d.cts +1 -5
  5. package/dist/carousel-image-hero.d.ts +1 -5
  6. package/dist/carousel-image-hero.js +119 -177
  7. package/dist/carousel-portfolio-hero.cjs +138 -59
  8. package/dist/carousel-portfolio-hero.js +138 -59
  9. package/dist/carousel-product-feature-showcase.cjs +148 -95
  10. package/dist/carousel-product-feature-showcase.js +148 -95
  11. package/dist/carousel-progress-slider.cjs +13 -9
  12. package/dist/carousel-progress-slider.js +13 -9
  13. package/dist/carousel-scrolling-feature-showcase.cjs +105 -54
  14. package/dist/carousel-scrolling-feature-showcase.js +105 -54
  15. package/dist/feature-accordion-image.cjs +9 -8
  16. package/dist/feature-accordion-image.js +9 -8
  17. package/dist/feature-animated-carousel.cjs +65 -49
  18. package/dist/feature-animated-carousel.js +65 -49
  19. package/dist/feature-badge-grid-six.cjs +20 -17
  20. package/dist/feature-badge-grid-six.js +21 -18
  21. package/dist/feature-bento-image-grid.cjs +12 -8
  22. package/dist/feature-bento-image-grid.js +12 -8
  23. package/dist/feature-bento-utilities.cjs +9 -5
  24. package/dist/feature-bento-utilities.js +9 -5
  25. package/dist/feature-capabilities-grid.cjs +41 -38
  26. package/dist/feature-capabilities-grid.js +41 -38
  27. package/dist/feature-card-grid-linked.cjs +18 -18
  28. package/dist/feature-card-grid-linked.js +19 -19
  29. package/dist/feature-carousel-progress.cjs +3 -3
  30. package/dist/feature-carousel-progress.js +4 -4
  31. package/dist/feature-category-image-cards.cjs +3 -3
  32. package/dist/feature-category-image-cards.js +4 -4
  33. package/dist/feature-checklist-image.cjs +2 -2
  34. package/dist/feature-checklist-image.js +2 -2
  35. package/dist/feature-checklist-three-column.cjs +6 -6
  36. package/dist/feature-checklist-three-column.js +7 -7
  37. package/dist/feature-icon-grid-accent.cjs +2 -2
  38. package/dist/feature-icon-grid-accent.js +2 -2
  39. package/dist/feature-icon-grid-bordered.cjs +29 -31
  40. package/dist/feature-icon-grid-bordered.d.cts +9 -9
  41. package/dist/feature-icon-grid-bordered.d.ts +9 -9
  42. package/dist/feature-icon-grid-bordered.js +30 -32
  43. package/dist/feature-icon-grid-muted.cjs +6 -6
  44. package/dist/feature-icon-grid-muted.d.cts +9 -9
  45. package/dist/feature-icon-grid-muted.d.ts +9 -9
  46. package/dist/feature-icon-grid-muted.js +7 -7
  47. package/dist/feature-icon-tabs-content.cjs +8 -8
  48. package/dist/feature-icon-tabs-content.d.cts +13 -13
  49. package/dist/feature-icon-tabs-content.d.ts +13 -13
  50. package/dist/feature-icon-tabs-content.js +9 -9
  51. package/dist/feature-image-cards-three-column.cjs +26 -27
  52. package/dist/feature-image-cards-three-column.js +27 -28
  53. package/dist/feature-image-overlay-badge.cjs +23 -21
  54. package/dist/feature-image-overlay-badge.js +24 -22
  55. package/dist/feature-integration-cards.cjs +19 -18
  56. package/dist/feature-integration-cards.js +20 -19
  57. package/dist/feature-numbered-cards.cjs +2 -2
  58. package/dist/feature-numbered-cards.js +3 -3
  59. package/dist/feature-pattern-grid-links.cjs +26 -29
  60. package/dist/feature-pattern-grid-links.d.cts +1 -5
  61. package/dist/feature-pattern-grid-links.d.ts +1 -5
  62. package/dist/feature-pattern-grid-links.js +27 -30
  63. package/dist/feature-showcase.cjs +441 -40
  64. package/dist/feature-showcase.d.cts +62 -5
  65. package/dist/feature-showcase.d.ts +62 -5
  66. package/dist/feature-showcase.js +438 -37
  67. package/dist/feature-split-image-reverse.cjs +15 -36
  68. package/dist/feature-split-image-reverse.js +16 -37
  69. package/dist/feature-split-image.cjs +15 -36
  70. package/dist/feature-split-image.js +16 -37
  71. package/dist/feature-stats-highlight.cjs +20 -32
  72. package/dist/feature-stats-highlight.js +21 -33
  73. package/dist/feature-tabbed-content-image.cjs +11 -6
  74. package/dist/feature-tabbed-content-image.js +11 -6
  75. package/dist/feature-three-column-values.cjs +6 -6
  76. package/dist/feature-three-column-values.js +6 -6
  77. package/dist/feature-utility-cards-grid.cjs +17 -15
  78. package/dist/feature-utility-cards-grid.js +18 -16
  79. package/dist/navbar-tabbed-sections.cjs +23 -16
  80. package/dist/navbar-tabbed-sections.js +23 -16
  81. package/dist/registry.cjs +964 -714
  82. package/dist/registry.js +966 -716
  83. package/package.json +1 -1
@@ -422,8 +422,8 @@ function CarouselScrollingFeatureShowcase({
422
422
  featuresClassName,
423
423
  numberBadgeClassName,
424
424
  optixFlowConfig,
425
- background = "white",
426
- spacing = "xl",
425
+ background,
426
+ spacing = "md",
427
427
  pattern,
428
428
  patternOpacity
429
429
  }) {
@@ -473,62 +473,113 @@ function CarouselScrollingFeatureShowcase({
473
473
  patternOpacity,
474
474
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container mx-auto px-4", containerClassName), children: [
475
475
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
476
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-bold tracking-tight md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
477
- subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-lg text-muted-foreground", subheadingClassName), children: subheading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4", subheadingClassName), children: subheading }))
478
- ] }),
479
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-8 lg:grid-cols-2 lg:gap-12", contentClassName), children: [
480
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-24", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("aspect-video overflow-hidden rounded-xl bg-muted", imageClassName), children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: activeFeatureData && /* @__PURE__ */ jsxRuntime.jsx(
481
- framerMotion.motion.div,
476
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
477
+ "h2",
482
478
  {
483
- initial: { opacity: 0 },
484
- animate: { opacity: 1 },
485
- exit: { opacity: 0 },
486
- transition: { duration: 0.3 },
487
- className: "h-full w-full",
488
- children: /* @__PURE__ */ jsxRuntime.jsx(
489
- img.Img,
490
- {
491
- src: activeFeatureData.image,
492
- alt: typeof activeFeatureData.title === "string" ? activeFeatureData.title : `Feature ${activeFeatureData.id}`,
493
- className: cn("h-full w-full object-cover", activeFeatureData.imageClassName),
494
- optixFlowConfig
495
- }
496
- )
497
- },
498
- activeFeatureData.id
499
- ) }) }) }) }),
500
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-y-24 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
501
- "div",
479
+ className: cn(
480
+ "text-3xl font-bold tracking-tight md:text-4xl",
481
+ headingClassName
482
+ ),
483
+ children: heading
484
+ }
485
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
486
+ subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
487
+ "p",
502
488
  {
503
- ref: setFeatureRef(feature.id),
504
- "data-feature-id": feature.id,
505
489
  className: cn(
506
- "scroll-mt-24 transition-opacity duration-300",
507
- activeFeature === feature.id ? "opacity-100" : "opacity-50",
508
- feature.className
490
+ "mt-4 text-lg text-muted-foreground",
491
+ subheadingClassName
509
492
  ),
510
- children: [
511
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 lg:hidden", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(
512
- img.Img,
513
- {
514
- src: feature.image,
515
- alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
516
- className: cn("h-full w-full object-cover", feature.imageClassName),
517
- optixFlowConfig
518
- }
519
- ) }) }),
520
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-4", children: [
521
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground", numberBadgeClassName), children: index + 1 }),
522
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
523
- feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-semibold", children: feature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: feature.title })),
524
- feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: feature.description }))
525
- ] })
526
- ] })
527
- ]
528
- },
529
- feature.id
530
- )) })
531
- ] })
493
+ children: subheading
494
+ }
495
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4", subheadingClassName), children: subheading }))
496
+ ] }),
497
+ /* @__PURE__ */ jsxRuntime.jsxs(
498
+ "div",
499
+ {
500
+ className: cn(
501
+ "grid gap-8 lg:grid-cols-2 lg:gap-12",
502
+ contentClassName
503
+ ),
504
+ children: [
505
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-24", children: /* @__PURE__ */ jsxRuntime.jsx(
506
+ "div",
507
+ {
508
+ className: cn(
509
+ "aspect-video overflow-hidden rounded-xl bg-muted",
510
+ imageClassName
511
+ ),
512
+ children: /* @__PURE__ */ jsxRuntime.jsx(framerMotion.AnimatePresence, { mode: "wait", children: activeFeatureData && /* @__PURE__ */ jsxRuntime.jsx(
513
+ framerMotion.motion.div,
514
+ {
515
+ initial: { opacity: 0 },
516
+ animate: { opacity: 1 },
517
+ exit: { opacity: 0 },
518
+ transition: { duration: 0.3 },
519
+ className: "h-full w-full",
520
+ children: /* @__PURE__ */ jsxRuntime.jsx(
521
+ img.Img,
522
+ {
523
+ src: activeFeatureData.image,
524
+ alt: typeof activeFeatureData.title === "string" ? activeFeatureData.title : `Feature ${activeFeatureData.id}`,
525
+ className: cn(
526
+ "h-full w-full object-cover",
527
+ activeFeatureData.imageClassName
528
+ ),
529
+ optixFlowConfig
530
+ }
531
+ )
532
+ },
533
+ activeFeatureData.id
534
+ ) })
535
+ }
536
+ ) }) }),
537
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("space-y-24 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxRuntime.jsxs(
538
+ "div",
539
+ {
540
+ ref: setFeatureRef(feature.id),
541
+ "data-feature-id": feature.id,
542
+ className: cn(
543
+ "scroll-mt-24 transition-opacity duration-300",
544
+ activeFeature === feature.id ? "opacity-100" : "opacity-50",
545
+ feature.className
546
+ ),
547
+ children: [
548
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-6 lg:hidden", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "aspect-video overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsxRuntime.jsx(
549
+ img.Img,
550
+ {
551
+ src: feature.image,
552
+ alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
553
+ className: cn(
554
+ "h-full w-full object-cover",
555
+ feature.imageClassName
556
+ ),
557
+ optixFlowConfig
558
+ }
559
+ ) }) }),
560
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start gap-4", children: [
561
+ /* @__PURE__ */ jsxRuntime.jsx(
562
+ "div",
563
+ {
564
+ className: cn(
565
+ "flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground",
566
+ numberBadgeClassName
567
+ ),
568
+ children: index + 1
569
+ }
570
+ ),
571
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
572
+ feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-semibold", children: feature.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { children: feature.title })),
573
+ feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: feature.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: feature.description }))
574
+ ] })
575
+ ] })
576
+ ]
577
+ },
578
+ feature.id
579
+ )) })
580
+ ]
581
+ }
582
+ )
532
583
  ] })
533
584
  }
534
585
  );
@@ -401,8 +401,8 @@ function CarouselScrollingFeatureShowcase({
401
401
  featuresClassName,
402
402
  numberBadgeClassName,
403
403
  optixFlowConfig,
404
- background = "white",
405
- spacing = "xl",
404
+ background,
405
+ spacing = "md",
406
406
  pattern,
407
407
  patternOpacity
408
408
  }) {
@@ -452,62 +452,113 @@ function CarouselScrollingFeatureShowcase({
452
452
  patternOpacity,
453
453
  children: /* @__PURE__ */ jsxs("div", { className: cn("container mx-auto px-4", containerClassName), children: [
454
454
  /* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
455
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-bold tracking-tight md:text-4xl", headingClassName), children: heading }) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
456
- subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-lg text-muted-foreground", subheadingClassName), children: subheading }) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", subheadingClassName), children: subheading }))
457
- ] }),
458
- /* @__PURE__ */ jsxs("div", { className: cn("grid gap-8 lg:grid-cols-2 lg:gap-12", contentClassName), children: [
459
- /* @__PURE__ */ jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsx("div", { className: "sticky top-24", children: /* @__PURE__ */ jsx("div", { className: cn("aspect-video overflow-hidden rounded-xl bg-muted", imageClassName), children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: activeFeatureData && /* @__PURE__ */ jsx(
460
- motion.div,
455
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
456
+ "h2",
461
457
  {
462
- initial: { opacity: 0 },
463
- animate: { opacity: 1 },
464
- exit: { opacity: 0 },
465
- transition: { duration: 0.3 },
466
- className: "h-full w-full",
467
- children: /* @__PURE__ */ jsx(
468
- Img,
469
- {
470
- src: activeFeatureData.image,
471
- alt: typeof activeFeatureData.title === "string" ? activeFeatureData.title : `Feature ${activeFeatureData.id}`,
472
- className: cn("h-full w-full object-cover", activeFeatureData.imageClassName),
473
- optixFlowConfig
474
- }
475
- )
476
- },
477
- activeFeatureData.id
478
- ) }) }) }) }),
479
- /* @__PURE__ */ jsx("div", { className: cn("space-y-24 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxs(
480
- "div",
458
+ className: cn(
459
+ "text-3xl font-bold tracking-tight md:text-4xl",
460
+ headingClassName
461
+ ),
462
+ children: heading
463
+ }
464
+ ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
465
+ subheading && (typeof subheading === "string" ? /* @__PURE__ */ jsx(
466
+ "p",
481
467
  {
482
- ref: setFeatureRef(feature.id),
483
- "data-feature-id": feature.id,
484
468
  className: cn(
485
- "scroll-mt-24 transition-opacity duration-300",
486
- activeFeature === feature.id ? "opacity-100" : "opacity-50",
487
- feature.className
469
+ "mt-4 text-lg text-muted-foreground",
470
+ subheadingClassName
488
471
  ),
489
- children: [
490
- /* @__PURE__ */ jsx("div", { className: "mb-6 lg:hidden", children: /* @__PURE__ */ jsx("div", { className: "aspect-video overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx(
491
- Img,
492
- {
493
- src: feature.image,
494
- alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
495
- className: cn("h-full w-full object-cover", feature.imageClassName),
496
- optixFlowConfig
497
- }
498
- ) }) }),
499
- /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-4", children: [
500
- /* @__PURE__ */ jsx("div", { className: cn("flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground", numberBadgeClassName), children: index + 1 }),
501
- /* @__PURE__ */ jsxs("div", { children: [
502
- feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-semibold", children: feature.title }) : /* @__PURE__ */ jsx("div", { children: feature.title })),
503
- feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: feature.description }) : /* @__PURE__ */ jsx("div", { className: "mt-4", children: feature.description }))
504
- ] })
505
- ] })
506
- ]
507
- },
508
- feature.id
509
- )) })
510
- ] })
472
+ children: subheading
473
+ }
474
+ ) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", subheadingClassName), children: subheading }))
475
+ ] }),
476
+ /* @__PURE__ */ jsxs(
477
+ "div",
478
+ {
479
+ className: cn(
480
+ "grid gap-8 lg:grid-cols-2 lg:gap-12",
481
+ contentClassName
482
+ ),
483
+ children: [
484
+ /* @__PURE__ */ jsx("div", { className: "hidden lg:block", children: /* @__PURE__ */ jsx("div", { className: "sticky top-24", children: /* @__PURE__ */ jsx(
485
+ "div",
486
+ {
487
+ className: cn(
488
+ "aspect-video overflow-hidden rounded-xl bg-muted",
489
+ imageClassName
490
+ ),
491
+ children: /* @__PURE__ */ jsx(AnimatePresence, { mode: "wait", children: activeFeatureData && /* @__PURE__ */ jsx(
492
+ motion.div,
493
+ {
494
+ initial: { opacity: 0 },
495
+ animate: { opacity: 1 },
496
+ exit: { opacity: 0 },
497
+ transition: { duration: 0.3 },
498
+ className: "h-full w-full",
499
+ children: /* @__PURE__ */ jsx(
500
+ Img,
501
+ {
502
+ src: activeFeatureData.image,
503
+ alt: typeof activeFeatureData.title === "string" ? activeFeatureData.title : `Feature ${activeFeatureData.id}`,
504
+ className: cn(
505
+ "h-full w-full object-cover",
506
+ activeFeatureData.imageClassName
507
+ ),
508
+ optixFlowConfig
509
+ }
510
+ )
511
+ },
512
+ activeFeatureData.id
513
+ ) })
514
+ }
515
+ ) }) }),
516
+ /* @__PURE__ */ jsx("div", { className: cn("space-y-24 lg:space-y-32", featuresClassName), children: featuresSlot ? featuresSlot : features?.map((feature, index) => /* @__PURE__ */ jsxs(
517
+ "div",
518
+ {
519
+ ref: setFeatureRef(feature.id),
520
+ "data-feature-id": feature.id,
521
+ className: cn(
522
+ "scroll-mt-24 transition-opacity duration-300",
523
+ activeFeature === feature.id ? "opacity-100" : "opacity-50",
524
+ feature.className
525
+ ),
526
+ children: [
527
+ /* @__PURE__ */ jsx("div", { className: "mb-6 lg:hidden", children: /* @__PURE__ */ jsx("div", { className: "aspect-video overflow-hidden rounded-lg bg-muted", children: /* @__PURE__ */ jsx(
528
+ Img,
529
+ {
530
+ src: feature.image,
531
+ alt: typeof feature.title === "string" ? feature.title : `Feature ${feature.id}`,
532
+ className: cn(
533
+ "h-full w-full object-cover",
534
+ feature.imageClassName
535
+ ),
536
+ optixFlowConfig
537
+ }
538
+ ) }) }),
539
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start gap-4", children: [
540
+ /* @__PURE__ */ jsx(
541
+ "div",
542
+ {
543
+ className: cn(
544
+ "flex h-10 w-10 shrink-0 items-center justify-center rounded-full bg-primary text-primary-foreground",
545
+ numberBadgeClassName
546
+ ),
547
+ children: index + 1
548
+ }
549
+ ),
550
+ /* @__PURE__ */ jsxs("div", { children: [
551
+ feature.title && (typeof feature.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-2xl font-semibold", children: feature.title }) : /* @__PURE__ */ jsx("div", { children: feature.title })),
552
+ feature.description && (typeof feature.description === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-4 text-lg text-muted-foreground", children: feature.description }) : /* @__PURE__ */ jsx("div", { className: "mt-4", children: feature.description }))
553
+ ] })
554
+ ] })
555
+ ]
556
+ },
557
+ feature.id
558
+ )) })
559
+ ]
560
+ }
561
+ )
511
562
  ] })
512
563
  }
513
564
  );
@@ -572,7 +572,7 @@ function FeatureAccordionImage({
572
572
  description,
573
573
  items,
574
574
  itemsSlot,
575
- defaultValue = "item-0",
575
+ defaultValue,
576
576
  className,
577
577
  containerClassName,
578
578
  headerClassName,
@@ -589,24 +589,25 @@ function FeatureAccordionImage({
589
589
  patternOpacity,
590
590
  patternClassName
591
591
  }) {
592
- const [activeItem, setActiveItem] = React__namespace.useState(defaultValue);
592
+ const [activeItem, setActiveItem] = React__namespace.useState(defaultValue || "item-0");
593
593
  const activeIndex = parseInt(activeItem.replace("item-", ""), 10) || 0;
594
594
  const currentImage = items?.[activeIndex] || items?.[0];
595
595
  const accordionItemsContent = React.useMemo(() => {
596
596
  if (itemsSlot) return itemsSlot;
597
597
  if (!items || items.length === 0) return null;
598
598
  return items.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs(AccordionItem, { value: `item-${index}`, className: item.className, children: [
599
- /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
600
- /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: cn("text-muted-foreground", item.contentClassName), children: item.content })
599
+ item.title && /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
600
+ item.content && /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: cn("text-muted-foreground", item.contentClassName), children: item.content })
601
601
  ] }, index));
602
602
  }, [itemsSlot, items]);
603
603
  const imageContent = React.useMemo(() => {
604
604
  if (currentImage?.imageSlot) return currentImage.imageSlot;
605
+ if (!currentImage?.imageSrc) return null;
605
606
  return /* @__PURE__ */ jsxRuntime.jsx(
606
607
  img.Img,
607
608
  {
608
- src: currentImage?.imageSrc || "",
609
- alt: currentImage?.imageAlt || "",
609
+ src: currentImage.imageSrc,
610
+ alt: currentImage.imageAlt || "",
610
611
  className: cn("h-full w-full object-cover transition-opacity duration-300", imageClassName),
611
612
  loading: "lazy",
612
613
  optixFlowConfig
@@ -624,11 +625,11 @@ function FeatureAccordionImage({
624
625
  className,
625
626
  containerClassName,
626
627
  children: [
627
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
628
+ (title || description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
628
629
  title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h2", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title })),
629
630
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mt-4 text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mt-4 text-muted-foreground lg:text-lg", descriptionClassName), children: description }))
630
631
  ] }),
631
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
632
+ (itemsSlot || items && items.length > 0) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
632
633
  /* @__PURE__ */ jsxRuntime.jsx(
633
634
  Accordion,
634
635
  {
@@ -550,7 +550,7 @@ function FeatureAccordionImage({
550
550
  description,
551
551
  items,
552
552
  itemsSlot,
553
- defaultValue = "item-0",
553
+ defaultValue,
554
554
  className,
555
555
  containerClassName,
556
556
  headerClassName,
@@ -567,24 +567,25 @@ function FeatureAccordionImage({
567
567
  patternOpacity,
568
568
  patternClassName
569
569
  }) {
570
- const [activeItem, setActiveItem] = React.useState(defaultValue);
570
+ const [activeItem, setActiveItem] = React.useState(defaultValue || "item-0");
571
571
  const activeIndex = parseInt(activeItem.replace("item-", ""), 10) || 0;
572
572
  const currentImage = items?.[activeIndex] || items?.[0];
573
573
  const accordionItemsContent = useMemo(() => {
574
574
  if (itemsSlot) return itemsSlot;
575
575
  if (!items || items.length === 0) return null;
576
576
  return items.map((item, index) => /* @__PURE__ */ jsxs(AccordionItem, { value: `item-${index}`, className: item.className, children: [
577
- /* @__PURE__ */ jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
578
- /* @__PURE__ */ jsx(AccordionContent, { className: cn("text-muted-foreground", item.contentClassName), children: item.content })
577
+ item.title && /* @__PURE__ */ jsx(AccordionTrigger, { className: cn("text-left text-lg font-medium", item.triggerClassName), children: item.title }),
578
+ item.content && /* @__PURE__ */ jsx(AccordionContent, { className: cn("text-muted-foreground", item.contentClassName), children: item.content })
579
579
  ] }, index));
580
580
  }, [itemsSlot, items]);
581
581
  const imageContent = useMemo(() => {
582
582
  if (currentImage?.imageSlot) return currentImage.imageSlot;
583
+ if (!currentImage?.imageSrc) return null;
583
584
  return /* @__PURE__ */ jsx(
584
585
  Img,
585
586
  {
586
- src: currentImage?.imageSrc || "",
587
- alt: currentImage?.imageAlt || "",
587
+ src: currentImage.imageSrc,
588
+ alt: currentImage.imageAlt || "",
588
589
  className: cn("h-full w-full object-cover transition-opacity duration-300", imageClassName),
589
590
  loading: "lazy",
590
591
  optixFlowConfig
@@ -602,11 +603,11 @@ function FeatureAccordionImage({
602
603
  className,
603
604
  containerClassName,
604
605
  children: [
605
- /* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
606
+ (title || description) && /* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
606
607
  title && (typeof title === "string" ? /* @__PURE__ */ jsx("h2", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: cn("text-3xl font-semibold md:text-4xl lg:text-5xl", titleClassName), children: title })),
607
608
  description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-muted-foreground lg:text-lg", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("mt-4 text-muted-foreground lg:text-lg", descriptionClassName), children: description }))
608
609
  ] }),
609
- /* @__PURE__ */ jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
610
+ (itemsSlot || items && items.length > 0) && /* @__PURE__ */ jsxs("div", { className: cn("grid gap-10 lg:grid-cols-2 lg:gap-16", gridClassName), children: [
610
611
  /* @__PURE__ */ jsx(
611
612
  Accordion,
612
613
  {