@opensite/ui 3.4.4 → 3.4.6

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 (39) hide show
  1. package/dist/contact-careers.cjs +3 -3
  2. package/dist/contact-careers.js +3 -3
  3. package/dist/contact-faq.cjs +3 -3
  4. package/dist/contact-faq.js +3 -3
  5. package/dist/faq-badge-support.cjs +3 -3
  6. package/dist/faq-badge-support.js +3 -3
  7. package/dist/faq-bordered-badge.cjs +3 -3
  8. package/dist/faq-bordered-badge.js +3 -3
  9. package/dist/faq-card-categories.cjs +2 -2
  10. package/dist/faq-card-categories.js +2 -2
  11. package/dist/faq-categorized-sections.cjs +3 -3
  12. package/dist/faq-categorized-sections.js +3 -3
  13. package/dist/faq-centered-accordion.cjs +3 -3
  14. package/dist/faq-centered-accordion.js +3 -3
  15. package/dist/faq-gradient-categories.cjs +3 -3
  16. package/dist/faq-gradient-categories.js +3 -3
  17. package/dist/faq-muted-cards.cjs +1 -1
  18. package/dist/faq-muted-cards.js +1 -1
  19. package/dist/faq-profile-sidebar.cjs +3 -3
  20. package/dist/faq-profile-sidebar.js +3 -3
  21. package/dist/faq-rounded-cards.cjs +3 -3
  22. package/dist/faq-rounded-cards.js +3 -3
  23. package/dist/faq-sidebar-navigation.cjs +3 -3
  24. package/dist/faq-sidebar-navigation.js +3 -3
  25. package/dist/faq-split-help.cjs +3 -3
  26. package/dist/faq-split-help.js +3 -3
  27. package/dist/faq-split-hero.cjs +3 -3
  28. package/dist/faq-split-hero.js +3 -3
  29. package/dist/feature-checklist-image.cjs +86 -23
  30. package/dist/feature-checklist-image.d.cts +21 -1
  31. package/dist/feature-checklist-image.d.ts +21 -1
  32. package/dist/feature-checklist-image.js +86 -23
  33. package/dist/navbar-tabbed-sections.cjs +3 -3
  34. package/dist/navbar-tabbed-sections.js +3 -3
  35. package/dist/registry.cjs +128 -65
  36. package/dist/registry.js +128 -65
  37. package/dist/social-link-icon.d.cts +1 -1
  38. package/dist/social-link-icon.d.ts +1 -1
  39. package/package.json +1 -1
@@ -422,6 +422,12 @@ var Section = React__namespace.default.forwardRef(
422
422
  }
423
423
  );
424
424
  Section.displayName = "Section";
425
+ function isRenderableNode(value) {
426
+ return value !== null && value !== void 0 && typeof value !== "boolean" && !(typeof value === "string" && value.trim().length === 0);
427
+ }
428
+ function firstRenderableNode(...values) {
429
+ return values.find(isRenderableNode);
430
+ }
425
431
  function FeatureChecklistImage({
426
432
  sectionId = "feature-checklist-image",
427
433
  title,
@@ -434,9 +440,10 @@ function FeatureChecklistImage({
434
440
  actions,
435
441
  actionsSlot,
436
442
  checklistItems,
443
+ benefits,
437
444
  checklistSlot,
438
445
  className,
439
- containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
446
+ containerClassName = "max-w-screen-2xl px-6 sm:px-6 md:px-6 lg:px-8",
440
447
  contentWrapperClassName,
441
448
  imageClassName,
442
449
  contentClassName,
@@ -493,33 +500,69 @@ function FeatureChecklistImage({
493
500
  if (imageSlot) return imageSlot;
494
501
  if (!imageSrc) return null;
495
502
  return /* @__PURE__ */ jsxRuntime.jsx(
496
- img.Img,
503
+ "div",
497
504
  {
498
- src: imageSrc,
499
- alt: imageAlt || "Feature illustration",
500
505
  className: cn(
501
- "max-h-96 w-full rounded-lg object-cover md:max-h-[500px] md:w-1/2 shadow-xl",
506
+ "relative aspect-[3/2] w-full overflow-hidden rounded-lg shadow-xl",
502
507
  imageClassName
503
508
  ),
504
- loading: "lazy",
505
- optixFlowConfig
509
+ children: /* @__PURE__ */ jsxRuntime.jsx(
510
+ img.Img,
511
+ {
512
+ src: imageSrc,
513
+ alt: imageAlt || "Feature illustration",
514
+ className: cn(
515
+ "block h-full w-full object-cover object-center",
516
+ imageClassName
517
+ ),
518
+ loading: "lazy",
519
+ optixFlowConfig
520
+ }
521
+ )
506
522
  }
507
523
  );
508
524
  }, [imageSlot, imageSrc, imageAlt, imageClassName, optixFlowConfig]);
509
525
  const checklistContent = React.useMemo(() => {
510
526
  if (checklistSlot) return checklistSlot;
511
- if (!checklistItems || checklistItems.length === 0) return null;
512
- return checklistItems.map((item, index) => {
527
+ const items = checklistItems ?? benefits;
528
+ if (!items || items.length === 0) return null;
529
+ const renderedItems = [];
530
+ items.forEach((item, index) => {
513
531
  const isString = typeof item === "string";
514
- const content = isString ? item : item.content;
515
- const iconElement = isString ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/circle-check-big", size: 16 }) : item.icon ?? (item.iconName ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 16 }) : /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/circle-check-big", size: 16 }));
532
+ const content = isString ? item : firstRenderableNode(item.content, item.text, item.label);
533
+ const title2 = isString ? void 0 : item.title;
534
+ const description2 = isString ? void 0 : item.description;
535
+ if (!isRenderableNode(content) && !isRenderableNode(title2) && !isRenderableNode(description2)) {
536
+ return;
537
+ }
538
+ const iconElement = isString ? /* @__PURE__ */ jsxRuntime.jsx(
539
+ DynamicIcon,
540
+ {
541
+ name: "lucide/circle-check-big",
542
+ size: 20,
543
+ className: "h-5 w-5"
544
+ }
545
+ ) : item.icon ?? (item.iconName ? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: item.iconName, size: 20, className: "h-5 w-5" }) : /* @__PURE__ */ jsxRuntime.jsx(
546
+ DynamicIcon,
547
+ {
548
+ name: "lucide/circle-check-big",
549
+ size: 20,
550
+ className: "h-5 w-5"
551
+ }
552
+ ));
516
553
  const itemClassName = isString ? void 0 : item.className;
517
- return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: cn("flex items-start gap-3", itemClassName), children: [
518
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1", children: iconElement }),
519
- content
520
- ] }, index);
554
+ renderedItems.push(
555
+ /* @__PURE__ */ jsxRuntime.jsxs("li", { className: cn("flex items-start gap-3", itemClassName), children: [
556
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 flex h-5 w-5 shrink-0 items-center justify-center", children: iconElement }),
557
+ isRenderableNode(content) ? typeof content === "string" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-base font-medium leading-relaxed md:text-lg", children: content }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 text-base font-medium leading-relaxed md:text-lg", children: content }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
558
+ isRenderableNode(title2) && (typeof title2 === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base font-semibold leading-snug md:text-lg", children: title2 }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-base font-semibold leading-snug md:text-lg", children: title2 })),
559
+ isRenderableNode(description2) && (typeof description2 === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-1 text-sm leading-relaxed text-current/75 md:text-base", children: description2 }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-1 text-sm leading-relaxed text-current/75 md:text-base", children: description2 }))
560
+ ] })
561
+ ] }, index)
562
+ );
521
563
  });
522
- }, [checklistSlot, checklistItems]);
564
+ return renderedItems.length > 0 ? renderedItems : null;
565
+ }, [checklistSlot, checklistItems, benefits]);
523
566
  return /* @__PURE__ */ jsxRuntime.jsx(
524
567
  Section,
525
568
  {
@@ -535,7 +578,8 @@ function FeatureChecklistImage({
535
578
  "div",
536
579
  {
537
580
  className: cn(
538
- "flex flex-col gap-6 md:gap-12 md:flex-row",
581
+ "grid gap-8 md:gap-12 lg:items-center",
582
+ imageContent ? "lg:grid-cols-2" : "lg:grid-cols-1",
539
583
  contentWrapperClassName
540
584
  ),
541
585
  children: [
@@ -544,7 +588,8 @@ function FeatureChecklistImage({
544
588
  "div",
545
589
  {
546
590
  className: cn(
547
- "px-0 md:px-6 lg:px-10 py-4 md:py-0 flex flex-col gap-6 md:gap-10",
591
+ "flex min-w-0 flex-col gap-6 py-2 md:gap-8 md:py-0 lg:gap-10",
592
+ imageContent && "lg:pl-8",
548
593
  contentClassName
549
594
  ),
550
595
  children: [
@@ -552,7 +597,7 @@ function FeatureChecklistImage({
552
597
  "h2",
553
598
  {
554
599
  className: cn(
555
- "text-xl font-semibold text-balance md:text-2xl lg:text-3xl",
600
+ "text-2xl font-semibold text-balance sm:text-3xl lg:text-4xl",
556
601
  titleClassName
557
602
  ),
558
603
  children: title
@@ -561,18 +606,36 @@ function FeatureChecklistImage({
561
606
  "div",
562
607
  {
563
608
  className: cn(
564
- "text-xl font-semibold text-balance md:text-2xl lg:text-3xl",
609
+ "text-2xl font-semibold text-balance sm:text-3xl lg:text-4xl",
565
610
  titleClassName
566
611
  ),
567
612
  children: title
568
613
  }
569
614
  )),
570
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("relative", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("relative", descriptionClassName), children: description })),
615
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
616
+ "p",
617
+ {
618
+ className: cn(
619
+ "relative text-base leading-relaxed md:text-lg",
620
+ descriptionClassName
621
+ ),
622
+ children: description
623
+ }
624
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
625
+ "div",
626
+ {
627
+ className: cn(
628
+ "relative text-base leading-relaxed md:text-lg",
629
+ descriptionClassName
630
+ ),
631
+ children: description
632
+ }
633
+ )),
571
634
  actionsContent && /* @__PURE__ */ jsxRuntime.jsx(
572
635
  "div",
573
636
  {
574
637
  className: cn(
575
- "flex flex-wrap items-center gap-4",
638
+ "flex flex-col items-start gap-4 sm:flex-row sm:flex-wrap sm:items-center",
576
639
  actionsClassName
577
640
  ),
578
641
  children: actionsContent
@@ -582,7 +645,7 @@ function FeatureChecklistImage({
582
645
  "ul",
583
646
  {
584
647
  className: cn(
585
- "flex-wrap items-center space-y-2 md:flex",
648
+ "flex flex-col space-y-3 md:space-y-4",
586
649
  checklistClassName
587
650
  ),
588
651
  children: checklistContent
@@ -11,6 +11,22 @@ interface FeatureChecklistItem {
11
11
  * Checklist item content
12
12
  */
13
13
  content?: React.ReactNode;
14
+ /**
15
+ * Text content alias used by some generated payloads
16
+ */
17
+ text?: React.ReactNode;
18
+ /**
19
+ * Label content alias used by some generated payloads
20
+ */
21
+ label?: React.ReactNode;
22
+ /**
23
+ * Checklist item title
24
+ */
25
+ title?: React.ReactNode;
26
+ /**
27
+ * Checklist item description
28
+ */
29
+ description?: React.ReactNode;
14
30
  /**
15
31
  * Icon element (overrides default check icon)
16
32
  */
@@ -57,6 +73,10 @@ interface FeatureChecklistImageProps {
57
73
  * Array of checklist items (can be strings or FeatureChecklistItem objects)
58
74
  */
59
75
  checklistItems?: (string | FeatureChecklistItem)[];
76
+ /**
77
+ * Alias for checklistItems used by registry examples and builder payloads
78
+ */
79
+ benefits?: (string | FeatureChecklistItem)[];
60
80
  /**
61
81
  * Custom slot for rendering checklist (overrides checklistItems array)
62
82
  */
@@ -143,6 +163,6 @@ interface FeatureChecklistImageProps {
143
163
  * />
144
164
  * ```
145
165
  */
146
- declare function FeatureChecklistImage({ sectionId, title, description, titleClassName, descriptionClassName, imageSrc, imageAlt, imageSlot, actions, actionsSlot, checklistItems, checklistSlot, className, containerClassName, contentWrapperClassName, imageClassName, contentClassName, actionsClassName, checklistClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, patternClassName, }: FeatureChecklistImageProps): React.JSX.Element;
166
+ declare function FeatureChecklistImage({ sectionId, title, description, titleClassName, descriptionClassName, imageSrc, imageAlt, imageSlot, actions, actionsSlot, checklistItems, benefits, checklistSlot, className, containerClassName, contentWrapperClassName, imageClassName, contentClassName, actionsClassName, checklistClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, patternClassName, }: FeatureChecklistImageProps): React.JSX.Element;
147
167
 
148
168
  export { FeatureChecklistImage, type FeatureChecklistImageProps };
@@ -11,6 +11,22 @@ interface FeatureChecklistItem {
11
11
  * Checklist item content
12
12
  */
13
13
  content?: React.ReactNode;
14
+ /**
15
+ * Text content alias used by some generated payloads
16
+ */
17
+ text?: React.ReactNode;
18
+ /**
19
+ * Label content alias used by some generated payloads
20
+ */
21
+ label?: React.ReactNode;
22
+ /**
23
+ * Checklist item title
24
+ */
25
+ title?: React.ReactNode;
26
+ /**
27
+ * Checklist item description
28
+ */
29
+ description?: React.ReactNode;
14
30
  /**
15
31
  * Icon element (overrides default check icon)
16
32
  */
@@ -57,6 +73,10 @@ interface FeatureChecklistImageProps {
57
73
  * Array of checklist items (can be strings or FeatureChecklistItem objects)
58
74
  */
59
75
  checklistItems?: (string | FeatureChecklistItem)[];
76
+ /**
77
+ * Alias for checklistItems used by registry examples and builder payloads
78
+ */
79
+ benefits?: (string | FeatureChecklistItem)[];
60
80
  /**
61
81
  * Custom slot for rendering checklist (overrides checklistItems array)
62
82
  */
@@ -143,6 +163,6 @@ interface FeatureChecklistImageProps {
143
163
  * />
144
164
  * ```
145
165
  */
146
- declare function FeatureChecklistImage({ sectionId, title, description, titleClassName, descriptionClassName, imageSrc, imageAlt, imageSlot, actions, actionsSlot, checklistItems, checklistSlot, className, containerClassName, contentWrapperClassName, imageClassName, contentClassName, actionsClassName, checklistClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, patternClassName, }: FeatureChecklistImageProps): React.JSX.Element;
166
+ declare function FeatureChecklistImage({ sectionId, title, description, titleClassName, descriptionClassName, imageSrc, imageAlt, imageSlot, actions, actionsSlot, checklistItems, benefits, checklistSlot, className, containerClassName, contentWrapperClassName, imageClassName, contentClassName, actionsClassName, checklistClassName, optixFlowConfig, background, spacing, pattern, patternOpacity, patternClassName, }: FeatureChecklistImageProps): React.JSX.Element;
147
167
 
148
168
  export { FeatureChecklistImage, type FeatureChecklistImageProps };
@@ -401,6 +401,12 @@ var Section = React__default.forwardRef(
401
401
  }
402
402
  );
403
403
  Section.displayName = "Section";
404
+ function isRenderableNode(value) {
405
+ return value !== null && value !== void 0 && typeof value !== "boolean" && !(typeof value === "string" && value.trim().length === 0);
406
+ }
407
+ function firstRenderableNode(...values) {
408
+ return values.find(isRenderableNode);
409
+ }
404
410
  function FeatureChecklistImage({
405
411
  sectionId = "feature-checklist-image",
406
412
  title,
@@ -413,9 +419,10 @@ function FeatureChecklistImage({
413
419
  actions,
414
420
  actionsSlot,
415
421
  checklistItems,
422
+ benefits,
416
423
  checklistSlot,
417
424
  className,
418
- containerClassName = "px-6 sm:px-6 md:px-6 lg:px-8",
425
+ containerClassName = "max-w-screen-2xl px-6 sm:px-6 md:px-6 lg:px-8",
419
426
  contentWrapperClassName,
420
427
  imageClassName,
421
428
  contentClassName,
@@ -472,33 +479,69 @@ function FeatureChecklistImage({
472
479
  if (imageSlot) return imageSlot;
473
480
  if (!imageSrc) return null;
474
481
  return /* @__PURE__ */ jsx(
475
- Img,
482
+ "div",
476
483
  {
477
- src: imageSrc,
478
- alt: imageAlt || "Feature illustration",
479
484
  className: cn(
480
- "max-h-96 w-full rounded-lg object-cover md:max-h-[500px] md:w-1/2 shadow-xl",
485
+ "relative aspect-[3/2] w-full overflow-hidden rounded-lg shadow-xl",
481
486
  imageClassName
482
487
  ),
483
- loading: "lazy",
484
- optixFlowConfig
488
+ children: /* @__PURE__ */ jsx(
489
+ Img,
490
+ {
491
+ src: imageSrc,
492
+ alt: imageAlt || "Feature illustration",
493
+ className: cn(
494
+ "block h-full w-full object-cover object-center",
495
+ imageClassName
496
+ ),
497
+ loading: "lazy",
498
+ optixFlowConfig
499
+ }
500
+ )
485
501
  }
486
502
  );
487
503
  }, [imageSlot, imageSrc, imageAlt, imageClassName, optixFlowConfig]);
488
504
  const checklistContent = useMemo(() => {
489
505
  if (checklistSlot) return checklistSlot;
490
- if (!checklistItems || checklistItems.length === 0) return null;
491
- return checklistItems.map((item, index) => {
506
+ const items = checklistItems ?? benefits;
507
+ if (!items || items.length === 0) return null;
508
+ const renderedItems = [];
509
+ items.forEach((item, index) => {
492
510
  const isString = typeof item === "string";
493
- const content = isString ? item : item.content;
494
- const iconElement = isString ? /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-check-big", size: 16 }) : item.icon ?? (item.iconName ? /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 16 }) : /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/circle-check-big", size: 16 }));
511
+ const content = isString ? item : firstRenderableNode(item.content, item.text, item.label);
512
+ const title2 = isString ? void 0 : item.title;
513
+ const description2 = isString ? void 0 : item.description;
514
+ if (!isRenderableNode(content) && !isRenderableNode(title2) && !isRenderableNode(description2)) {
515
+ return;
516
+ }
517
+ const iconElement = isString ? /* @__PURE__ */ jsx(
518
+ DynamicIcon,
519
+ {
520
+ name: "lucide/circle-check-big",
521
+ size: 20,
522
+ className: "h-5 w-5"
523
+ }
524
+ ) : item.icon ?? (item.iconName ? /* @__PURE__ */ jsx(DynamicIcon, { name: item.iconName, size: 20, className: "h-5 w-5" }) : /* @__PURE__ */ jsx(
525
+ DynamicIcon,
526
+ {
527
+ name: "lucide/circle-check-big",
528
+ size: 20,
529
+ className: "h-5 w-5"
530
+ }
531
+ ));
495
532
  const itemClassName = isString ? void 0 : item.className;
496
- return /* @__PURE__ */ jsxs("li", { className: cn("flex items-start gap-3", itemClassName), children: [
497
- /* @__PURE__ */ jsx("div", { className: "mt-1", children: iconElement }),
498
- content
499
- ] }, index);
533
+ renderedItems.push(
534
+ /* @__PURE__ */ jsxs("li", { className: cn("flex items-start gap-3", itemClassName), children: [
535
+ /* @__PURE__ */ jsx("div", { className: "mt-1 flex h-5 w-5 shrink-0 items-center justify-center", children: iconElement }),
536
+ isRenderableNode(content) ? typeof content === "string" ? /* @__PURE__ */ jsx("span", { className: "text-base font-medium leading-relaxed md:text-lg", children: content }) : /* @__PURE__ */ jsx("div", { className: "min-w-0 text-base font-medium leading-relaxed md:text-lg", children: content }) : /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
537
+ isRenderableNode(title2) && (typeof title2 === "string" ? /* @__PURE__ */ jsx("h3", { className: "text-base font-semibold leading-snug md:text-lg", children: title2 }) : /* @__PURE__ */ jsx("div", { className: "text-base font-semibold leading-snug md:text-lg", children: title2 })),
538
+ isRenderableNode(description2) && (typeof description2 === "string" ? /* @__PURE__ */ jsx("p", { className: "mt-1 text-sm leading-relaxed text-current/75 md:text-base", children: description2 }) : /* @__PURE__ */ jsx("div", { className: "mt-1 text-sm leading-relaxed text-current/75 md:text-base", children: description2 }))
539
+ ] })
540
+ ] }, index)
541
+ );
500
542
  });
501
- }, [checklistSlot, checklistItems]);
543
+ return renderedItems.length > 0 ? renderedItems : null;
544
+ }, [checklistSlot, checklistItems, benefits]);
502
545
  return /* @__PURE__ */ jsx(
503
546
  Section,
504
547
  {
@@ -514,7 +557,8 @@ function FeatureChecklistImage({
514
557
  "div",
515
558
  {
516
559
  className: cn(
517
- "flex flex-col gap-6 md:gap-12 md:flex-row",
560
+ "grid gap-8 md:gap-12 lg:items-center",
561
+ imageContent ? "lg:grid-cols-2" : "lg:grid-cols-1",
518
562
  contentWrapperClassName
519
563
  ),
520
564
  children: [
@@ -523,7 +567,8 @@ function FeatureChecklistImage({
523
567
  "div",
524
568
  {
525
569
  className: cn(
526
- "px-0 md:px-6 lg:px-10 py-4 md:py-0 flex flex-col gap-6 md:gap-10",
570
+ "flex min-w-0 flex-col gap-6 py-2 md:gap-8 md:py-0 lg:gap-10",
571
+ imageContent && "lg:pl-8",
527
572
  contentClassName
528
573
  ),
529
574
  children: [
@@ -531,7 +576,7 @@ function FeatureChecklistImage({
531
576
  "h2",
532
577
  {
533
578
  className: cn(
534
- "text-xl font-semibold text-balance md:text-2xl lg:text-3xl",
579
+ "text-2xl font-semibold text-balance sm:text-3xl lg:text-4xl",
535
580
  titleClassName
536
581
  ),
537
582
  children: title
@@ -540,18 +585,36 @@ function FeatureChecklistImage({
540
585
  "div",
541
586
  {
542
587
  className: cn(
543
- "text-xl font-semibold text-balance md:text-2xl lg:text-3xl",
588
+ "text-2xl font-semibold text-balance sm:text-3xl lg:text-4xl",
544
589
  titleClassName
545
590
  ),
546
591
  children: title
547
592
  }
548
593
  )),
549
- description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("relative", descriptionClassName), children: description }) : /* @__PURE__ */ jsx("div", { className: cn("relative", descriptionClassName), children: description })),
594
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx(
595
+ "p",
596
+ {
597
+ className: cn(
598
+ "relative text-base leading-relaxed md:text-lg",
599
+ descriptionClassName
600
+ ),
601
+ children: description
602
+ }
603
+ ) : /* @__PURE__ */ jsx(
604
+ "div",
605
+ {
606
+ className: cn(
607
+ "relative text-base leading-relaxed md:text-lg",
608
+ descriptionClassName
609
+ ),
610
+ children: description
611
+ }
612
+ )),
550
613
  actionsContent && /* @__PURE__ */ jsx(
551
614
  "div",
552
615
  {
553
616
  className: cn(
554
- "flex flex-wrap items-center gap-4",
617
+ "flex flex-col items-start gap-4 sm:flex-row sm:flex-wrap sm:items-center",
555
618
  actionsClassName
556
619
  ),
557
620
  children: actionsContent
@@ -561,7 +624,7 @@ function FeatureChecklistImage({
561
624
  "ul",
562
625
  {
563
626
  className: cn(
564
- "flex-wrap items-center space-y-2 md:flex",
627
+ "flex flex-col space-y-3 md:space-y-4",
565
628
  checklistClassName
566
629
  ),
567
630
  children: checklistContent
@@ -960,10 +960,10 @@ var NavbarTabbedSections = ({
960
960
  className: "border-b-0",
961
961
  children: [
962
962
  /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "h-15 items-center p-0 px-4! text-base leading-[3.75] font-normal text-muted-foreground hover:bg-muted hover:no-underline", children: item.title }),
963
- /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "overflow-x-none pb-4", children: /* @__PURE__ */ jsxRuntime.jsx(Accordion, { type: "multiple", className: "w-full pl-4", children: item.tabs.map((tab) => /* @__PURE__ */ jsxRuntime.jsxs(
963
+ /* @__PURE__ */ jsxRuntime.jsx(AccordionContent, { className: "overflow-x-none pb-4", children: /* @__PURE__ */ jsxRuntime.jsx(Accordion, { type: "multiple", className: "w-full pl-4", children: item.tabs.map((tab, idx) => /* @__PURE__ */ jsxRuntime.jsxs(
964
964
  AccordionItem,
965
965
  {
966
- value: tab.id,
966
+ value: tab.id || `tab-${idx}`,
967
967
  className: "border-b-0",
968
968
  children: [
969
969
  /* @__PURE__ */ jsxRuntime.jsx(AccordionTrigger, { className: "h-12 items-center p-0 px-4! text-sm leading-[3] font-medium text-muted-foreground hover:bg-muted hover:no-underline", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
@@ -985,7 +985,7 @@ var NavbarTabbedSections = ({
985
985
  )) }) })
986
986
  ]
987
987
  },
988
- tab.id
988
+ tab.id || idx
989
989
  )) }) })
990
990
  ]
991
991
  },
@@ -936,10 +936,10 @@ var NavbarTabbedSections = ({
936
936
  className: "border-b-0",
937
937
  children: [
938
938
  /* @__PURE__ */ jsx(AccordionTrigger, { className: "h-15 items-center p-0 px-4! text-base leading-[3.75] font-normal text-muted-foreground hover:bg-muted hover:no-underline", children: item.title }),
939
- /* @__PURE__ */ jsx(AccordionContent, { className: "overflow-x-none pb-4", children: /* @__PURE__ */ jsx(Accordion, { type: "multiple", className: "w-full pl-4", children: item.tabs.map((tab) => /* @__PURE__ */ jsxs(
939
+ /* @__PURE__ */ jsx(AccordionContent, { className: "overflow-x-none pb-4", children: /* @__PURE__ */ jsx(Accordion, { type: "multiple", className: "w-full pl-4", children: item.tabs.map((tab, idx) => /* @__PURE__ */ jsxs(
940
940
  AccordionItem,
941
941
  {
942
- value: tab.id,
942
+ value: tab.id || `tab-${idx}`,
943
943
  className: "border-b-0",
944
944
  children: [
945
945
  /* @__PURE__ */ jsx(AccordionTrigger, { className: "h-12 items-center p-0 px-4! text-sm leading-[3] font-medium text-muted-foreground hover:bg-muted hover:no-underline", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
@@ -961,7 +961,7 @@ var NavbarTabbedSections = ({
961
961
  )) }) })
962
962
  ]
963
963
  },
964
- tab.id
964
+ tab.id || idx
965
965
  )) }) })
966
966
  ]
967
967
  },