@opensite/ui 3.2.6 → 3.2.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.
Files changed (35) hide show
  1. package/dist/about-developer-story.cjs +7 -1
  2. package/dist/about-developer-story.js +7 -1
  3. package/dist/hero-overlay-cta-grid.cjs +82 -19
  4. package/dist/hero-overlay-cta-grid.d.cts +8 -13
  5. package/dist/hero-overlay-cta-grid.d.ts +8 -13
  6. package/dist/hero-overlay-cta-grid.js +83 -20
  7. package/dist/process-expandable-timeline.cjs +1 -2
  8. package/dist/process-expandable-timeline.js +1 -2
  9. package/dist/process-icon-timeline.cjs +9 -99
  10. package/dist/process-icon-timeline.d.cts +3 -3
  11. package/dist/process-icon-timeline.d.ts +3 -3
  12. package/dist/process-icon-timeline.js +9 -99
  13. package/dist/process-mission-principles.cjs +5 -67
  14. package/dist/process-mission-principles.d.cts +3 -3
  15. package/dist/process-mission-principles.d.ts +3 -3
  16. package/dist/process-mission-principles.js +5 -67
  17. package/dist/process-numbered-services.cjs +22 -116
  18. package/dist/process-numbered-services.d.cts +3 -3
  19. package/dist/process-numbered-services.d.ts +3 -3
  20. package/dist/process-numbered-services.js +22 -116
  21. package/dist/process-scroll-image.cjs +20 -85
  22. package/dist/process-scroll-image.d.cts +3 -11
  23. package/dist/process-scroll-image.d.ts +3 -11
  24. package/dist/process-scroll-image.js +18 -83
  25. package/dist/process-steps-grid.cjs +31 -99
  26. package/dist/process-steps-grid.d.cts +3 -3
  27. package/dist/process-steps-grid.d.ts +3 -3
  28. package/dist/process-steps-grid.js +31 -99
  29. package/dist/process-sticky-steps.cjs +6 -35
  30. package/dist/process-sticky-steps.d.cts +5 -1
  31. package/dist/process-sticky-steps.d.ts +5 -1
  32. package/dist/process-sticky-steps.js +6 -35
  33. package/dist/registry.cjs +107 -140
  34. package/dist/registry.js +107 -140
  35. package/package.json +1 -1
@@ -643,7 +643,13 @@ function AboutDeveloperStory({
643
643
  containerClassName,
644
644
  children: [
645
645
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto flex max-w-4xl flex-col items-center gap-8 text-center", children: [
646
- /* @__PURE__ */ jsxRuntime.jsx(ContentGroup, { items: contentItems }),
646
+ /* @__PURE__ */ jsxRuntime.jsx(
647
+ ContentGroup,
648
+ {
649
+ items: contentItems,
650
+ className: "flex flex-col justify-center items-center gap-6"
651
+ }
652
+ ),
647
653
  /* @__PURE__ */ jsxRuntime.jsx(
648
654
  BlockActions,
649
655
  {
@@ -622,7 +622,13 @@ function AboutDeveloperStory({
622
622
  containerClassName,
623
623
  children: [
624
624
  /* @__PURE__ */ jsxs("div", { className: "mx-auto flex max-w-4xl flex-col items-center gap-8 text-center", children: [
625
- /* @__PURE__ */ jsx(ContentGroup, { items: contentItems }),
625
+ /* @__PURE__ */ jsx(
626
+ ContentGroup,
627
+ {
628
+ items: contentItems,
629
+ className: "flex flex-col justify-center items-center gap-6"
630
+ }
631
+ ),
626
632
  /* @__PURE__ */ jsx(
627
633
  BlockActions,
628
634
  {
@@ -418,6 +418,70 @@ var Section = React__namespace.default.forwardRef(
418
418
  }
419
419
  );
420
420
  Section.displayName = "Section";
421
+ var MOBILE_CLASSES = {
422
+ "fit-left": "items-start md:items-center",
423
+ "fit-center": "items-center",
424
+ "fit-right": "items-end md:items-center",
425
+ "full-left": "items-stretch md:items-center",
426
+ "full-center": "items-stretch md:items-center",
427
+ "full-right": "items-stretch md:items-center"
428
+ };
429
+ function BlockActions({
430
+ mobileConfig,
431
+ actionsClassName,
432
+ verticalSpacing = "mt-4 md:mt-8",
433
+ actions,
434
+ actionsSlot
435
+ }) {
436
+ const width = mobileConfig?.width ?? "full";
437
+ const position = mobileConfig?.position ?? "center";
438
+ const mobileLayoutClass = MOBILE_CLASSES[`${width}-${position}`];
439
+ if (actionsSlot) {
440
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { children: actionsSlot });
441
+ } else if (actions && actions?.length > 0) {
442
+ return /* @__PURE__ */ jsxRuntime.jsx(
443
+ "div",
444
+ {
445
+ className: cn(
446
+ "flex flex-col md:flex-row flex-wrap gap-4",
447
+ mobileLayoutClass,
448
+ actionsClassName,
449
+ verticalSpacing
450
+ ),
451
+ children: actions.map((action, index) => /* @__PURE__ */ jsxRuntime.jsx(ActionComponent, { action }, index))
452
+ }
453
+ );
454
+ } else {
455
+ return null;
456
+ }
457
+ }
458
+ function ActionComponent({ action }) {
459
+ const {
460
+ label,
461
+ icon,
462
+ iconAfter,
463
+ children,
464
+ href,
465
+ onClick,
466
+ className: actionClassName,
467
+ ...pressableProps
468
+ } = action;
469
+ return /* @__PURE__ */ jsxRuntime.jsx(
470
+ pressable.Pressable,
471
+ {
472
+ href,
473
+ onClick,
474
+ asButton: action.asButton ?? true,
475
+ className: actionClassName,
476
+ ...pressableProps,
477
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
478
+ icon,
479
+ label,
480
+ iconAfter
481
+ ] })
482
+ }
483
+ );
484
+ }
421
485
  function HeroOverlayCtaGrid({
422
486
  sectionId = "hero-overlay-cta-grid",
423
487
  badgeText,
@@ -425,9 +489,9 @@ function HeroOverlayCtaGrid({
425
489
  badgeSlot,
426
490
  heading,
427
491
  description,
428
- primaryCta,
429
- secondaryCta,
492
+ actions,
430
493
  actionsSlot,
494
+ actionsClassName,
431
495
  cards,
432
496
  cardsSlot,
433
497
  backgroundImage,
@@ -452,24 +516,16 @@ function HeroOverlayCtaGrid({
452
516
  badgeText
453
517
  ] });
454
518
  }, [badgeSlot, badgeText, badgeIcon]);
455
- const renderActions = React.useMemo(() => {
456
- if (actionsSlot) return actionsSlot;
457
- if (!primaryCta && !secondaryCta) return null;
458
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-8 flex flex-col items-center justify-center gap-4 sm:flex-row", children: [
459
- primaryCta && /* @__PURE__ */ jsxRuntime.jsx(pressable.Pressable, { href: primaryCta.href, size: "lg", variant: "default", children: primaryCta.label }),
460
- secondaryCta && /* @__PURE__ */ jsxRuntime.jsx(pressable.Pressable, { href: secondaryCta.href, size: "lg", variant: "secondary", children: secondaryCta.label })
461
- ] });
462
- }, [actionsSlot, primaryCta, secondaryCta]);
463
519
  const renderCards = React.useMemo(() => {
464
520
  if (cardsSlot) return cardsSlot;
465
521
  if (!cards || cards.length === 0) return null;
466
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto w-full max-w-6xl overflow-hidden rounded-3xl border border-border bg-white/95 shadow-2xl px-0", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 divide-y divide-border md:grid-cols-3 md:divide-x md:divide-y-0", children: cards.map((card) => /* @__PURE__ */ jsxRuntime.jsxs(
522
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto w-full max-w-6xl overflow-hidden rounded-3xl border border-border bg-card shadow-2xl px-0", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 divide-y divide-border md:grid-cols-3 md:divide-x md:divide-y-0", children: cards.map((card) => /* @__PURE__ */ jsxRuntime.jsxs(
467
523
  pressable.Pressable,
468
524
  {
469
525
  href: card.href,
470
526
  className: "group flex items-center gap-4 px-6 py-6 transition-colors",
471
527
  children: [
472
- /* @__PURE__ */ jsxRuntime.jsx(
528
+ card.icon ? /* @__PURE__ */ jsxRuntime.jsx(
473
529
  "div",
474
530
  {
475
531
  className: cn(
@@ -477,19 +533,19 @@ function HeroOverlayCtaGrid({
477
533
  ),
478
534
  children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: card.icon, size: 22 })
479
535
  }
480
- ),
536
+ ) : null,
481
537
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
482
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-semibold ", children: card.label }),
483
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-black"), children: card.subtitle })
538
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-base font-semibold text-card-foreground", children: card.label }),
539
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-sm text-card-foreground"), children: card.subtitle })
484
540
  ] }),
485
- /* @__PURE__ */ jsxRuntime.jsx(
541
+ card.href ? /* @__PURE__ */ jsxRuntime.jsx(
486
542
  DynamicIcon,
487
543
  {
488
544
  name: "lucide/arrow-right",
489
545
  size: 18,
490
- className: cn("ml-auto flex-none text-muted")
546
+ className: cn("ml-auto flex-none text-card-foreground")
491
547
  }
492
- )
548
+ ) : null
493
549
  ]
494
550
  },
495
551
  card.label
@@ -574,7 +630,14 @@ function HeroOverlayCtaGrid({
574
630
  children: description
575
631
  }
576
632
  )),
577
- renderActions
633
+ /* @__PURE__ */ jsxRuntime.jsx(
634
+ BlockActions,
635
+ {
636
+ actions,
637
+ actionsSlot,
638
+ actionsClassName
639
+ }
640
+ )
578
641
  ]
579
642
  }
580
643
  ),
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives-B4p2JldF.cjs';
3
+ import { ActionConfig } from '@page-speed/maps/components/geo-map';
3
4
  import './blocks-DCvdF54D.cjs';
4
5
  import 'class-variance-authority';
5
6
  import '@page-speed/pressable';
@@ -46,23 +47,17 @@ interface HeroOverlayCtaGridProps {
46
47
  */
47
48
  description?: React.ReactNode;
48
49
  /**
49
- * Primary call-to-action config
50
+ * Array of action configurations
50
51
  */
51
- primaryCta?: {
52
- label: string;
53
- href: string;
54
- };
52
+ actions?: ActionConfig[];
55
53
  /**
56
- * Secondary call-to-action config
54
+ * Custom slot for rendering actions (overrides actions array)
57
55
  */
58
- secondaryCta?: {
59
- label: string;
60
- href: string;
61
- };
56
+ actionsSlot?: React.ReactNode;
62
57
  /**
63
- * Custom slot for actions (overrides primaryCta and secondaryCta)
58
+ * Additional CSS classes for the actions container
64
59
  */
65
- actionsSlot?: React.ReactNode;
60
+ actionsClassName?: string;
66
61
  /**
67
62
  * CTA cards displayed beneath the hero copy
68
63
  */
@@ -134,6 +129,6 @@ interface HeroOverlayCtaGridProps {
134
129
  * and a supporting grid of icon cards. Ideal for service-focused landing pages that
135
130
  * need a strong hero statement plus quick navigation to top offerings.
136
131
  */
137
- declare function HeroOverlayCtaGrid({ sectionId, badgeText, badgeIcon, badgeSlot, heading, description, primaryCta, secondaryCta, actionsSlot, cards, cardsSlot, backgroundImage, backgroundAlt, backgroundSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, optixFlowConfig, }: HeroOverlayCtaGridProps): React.JSX.Element;
132
+ declare function HeroOverlayCtaGrid({ sectionId, badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, cards, cardsSlot, backgroundImage, backgroundAlt, backgroundSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, optixFlowConfig, }: HeroOverlayCtaGridProps): React.JSX.Element;
138
133
 
139
134
  export { HeroOverlayCtaGrid, type HeroOverlayCtaGridProps };
@@ -1,5 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { S as SectionBackground, s as SectionSpacing, t as PatternName } from './community-initiatives--8cXayNa.js';
3
+ import { ActionConfig } from '@page-speed/maps/components/geo-map';
3
4
  import './blocks-DCvdF54D.js';
4
5
  import 'class-variance-authority';
5
6
  import '@page-speed/pressable';
@@ -46,23 +47,17 @@ interface HeroOverlayCtaGridProps {
46
47
  */
47
48
  description?: React.ReactNode;
48
49
  /**
49
- * Primary call-to-action config
50
+ * Array of action configurations
50
51
  */
51
- primaryCta?: {
52
- label: string;
53
- href: string;
54
- };
52
+ actions?: ActionConfig[];
55
53
  /**
56
- * Secondary call-to-action config
54
+ * Custom slot for rendering actions (overrides actions array)
57
55
  */
58
- secondaryCta?: {
59
- label: string;
60
- href: string;
61
- };
56
+ actionsSlot?: React.ReactNode;
62
57
  /**
63
- * Custom slot for actions (overrides primaryCta and secondaryCta)
58
+ * Additional CSS classes for the actions container
64
59
  */
65
- actionsSlot?: React.ReactNode;
60
+ actionsClassName?: string;
66
61
  /**
67
62
  * CTA cards displayed beneath the hero copy
68
63
  */
@@ -134,6 +129,6 @@ interface HeroOverlayCtaGridProps {
134
129
  * and a supporting grid of icon cards. Ideal for service-focused landing pages that
135
130
  * need a strong hero statement plus quick navigation to top offerings.
136
131
  */
137
- declare function HeroOverlayCtaGrid({ sectionId, badgeText, badgeIcon, badgeSlot, heading, description, primaryCta, secondaryCta, actionsSlot, cards, cardsSlot, backgroundImage, backgroundAlt, backgroundSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, optixFlowConfig, }: HeroOverlayCtaGridProps): React.JSX.Element;
132
+ declare function HeroOverlayCtaGrid({ sectionId, badgeText, badgeIcon, badgeSlot, heading, description, actions, actionsSlot, actionsClassName, cards, cardsSlot, backgroundImage, backgroundAlt, backgroundSlot, background, spacing, pattern, patternOpacity, className, containerClassName, contentClassName, headingClassName, descriptionClassName, optixFlowConfig, }: HeroOverlayCtaGridProps): React.JSX.Element;
138
133
 
139
134
  export { HeroOverlayCtaGrid, type HeroOverlayCtaGridProps };
@@ -6,7 +6,7 @@ import { clsx } from 'clsx';
6
6
  import { twMerge } from 'tailwind-merge';
7
7
  import { Img } from '@page-speed/img';
8
8
  import { Icon } from '@page-speed/icon';
9
- import { jsx, jsxs } from 'react/jsx-runtime';
9
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
10
10
  import { Pressable } from '@page-speed/pressable';
11
11
 
12
12
  // components/blocks/hero/hero-overlay-cta-grid.tsx
@@ -397,6 +397,70 @@ var Section = React__default.forwardRef(
397
397
  }
398
398
  );
399
399
  Section.displayName = "Section";
400
+ var MOBILE_CLASSES = {
401
+ "fit-left": "items-start md:items-center",
402
+ "fit-center": "items-center",
403
+ "fit-right": "items-end md:items-center",
404
+ "full-left": "items-stretch md:items-center",
405
+ "full-center": "items-stretch md:items-center",
406
+ "full-right": "items-stretch md:items-center"
407
+ };
408
+ function BlockActions({
409
+ mobileConfig,
410
+ actionsClassName,
411
+ verticalSpacing = "mt-4 md:mt-8",
412
+ actions,
413
+ actionsSlot
414
+ }) {
415
+ const width = mobileConfig?.width ?? "full";
416
+ const position = mobileConfig?.position ?? "center";
417
+ const mobileLayoutClass = MOBILE_CLASSES[`${width}-${position}`];
418
+ if (actionsSlot) {
419
+ return /* @__PURE__ */ jsx("div", { children: actionsSlot });
420
+ } else if (actions && actions?.length > 0) {
421
+ return /* @__PURE__ */ jsx(
422
+ "div",
423
+ {
424
+ className: cn(
425
+ "flex flex-col md:flex-row flex-wrap gap-4",
426
+ mobileLayoutClass,
427
+ actionsClassName,
428
+ verticalSpacing
429
+ ),
430
+ children: actions.map((action, index) => /* @__PURE__ */ jsx(ActionComponent, { action }, index))
431
+ }
432
+ );
433
+ } else {
434
+ return null;
435
+ }
436
+ }
437
+ function ActionComponent({ action }) {
438
+ const {
439
+ label,
440
+ icon,
441
+ iconAfter,
442
+ children,
443
+ href,
444
+ onClick,
445
+ className: actionClassName,
446
+ ...pressableProps
447
+ } = action;
448
+ return /* @__PURE__ */ jsx(
449
+ Pressable,
450
+ {
451
+ href,
452
+ onClick,
453
+ asButton: action.asButton ?? true,
454
+ className: actionClassName,
455
+ ...pressableProps,
456
+ children: children ?? /* @__PURE__ */ jsxs(Fragment, { children: [
457
+ icon,
458
+ label,
459
+ iconAfter
460
+ ] })
461
+ }
462
+ );
463
+ }
400
464
  function HeroOverlayCtaGrid({
401
465
  sectionId = "hero-overlay-cta-grid",
402
466
  badgeText,
@@ -404,9 +468,9 @@ function HeroOverlayCtaGrid({
404
468
  badgeSlot,
405
469
  heading,
406
470
  description,
407
- primaryCta,
408
- secondaryCta,
471
+ actions,
409
472
  actionsSlot,
473
+ actionsClassName,
410
474
  cards,
411
475
  cardsSlot,
412
476
  backgroundImage,
@@ -431,24 +495,16 @@ function HeroOverlayCtaGrid({
431
495
  badgeText
432
496
  ] });
433
497
  }, [badgeSlot, badgeText, badgeIcon]);
434
- const renderActions = useMemo(() => {
435
- if (actionsSlot) return actionsSlot;
436
- if (!primaryCta && !secondaryCta) return null;
437
- return /* @__PURE__ */ jsxs("div", { className: "mt-8 flex flex-col items-center justify-center gap-4 sm:flex-row", children: [
438
- primaryCta && /* @__PURE__ */ jsx(Pressable, { href: primaryCta.href, size: "lg", variant: "default", children: primaryCta.label }),
439
- secondaryCta && /* @__PURE__ */ jsx(Pressable, { href: secondaryCta.href, size: "lg", variant: "secondary", children: secondaryCta.label })
440
- ] });
441
- }, [actionsSlot, primaryCta, secondaryCta]);
442
498
  const renderCards = useMemo(() => {
443
499
  if (cardsSlot) return cardsSlot;
444
500
  if (!cards || cards.length === 0) return null;
445
- return /* @__PURE__ */ jsx("div", { className: "mx-auto w-full max-w-6xl overflow-hidden rounded-3xl border border-border bg-white/95 shadow-2xl px-0", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 divide-y divide-border md:grid-cols-3 md:divide-x md:divide-y-0", children: cards.map((card) => /* @__PURE__ */ jsxs(
501
+ return /* @__PURE__ */ jsx("div", { className: "mx-auto w-full max-w-6xl overflow-hidden rounded-3xl border border-border bg-card shadow-2xl px-0", children: /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 divide-y divide-border md:grid-cols-3 md:divide-x md:divide-y-0", children: cards.map((card) => /* @__PURE__ */ jsxs(
446
502
  Pressable,
447
503
  {
448
504
  href: card.href,
449
505
  className: "group flex items-center gap-4 px-6 py-6 transition-colors",
450
506
  children: [
451
- /* @__PURE__ */ jsx(
507
+ card.icon ? /* @__PURE__ */ jsx(
452
508
  "div",
453
509
  {
454
510
  className: cn(
@@ -456,19 +512,19 @@ function HeroOverlayCtaGrid({
456
512
  ),
457
513
  children: /* @__PURE__ */ jsx(DynamicIcon, { name: card.icon, size: 22 })
458
514
  }
459
- ),
515
+ ) : null,
460
516
  /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
461
- /* @__PURE__ */ jsx("p", { className: "text-base font-semibold ", children: card.label }),
462
- /* @__PURE__ */ jsx("p", { className: cn("text-sm text-black"), children: card.subtitle })
517
+ /* @__PURE__ */ jsx("p", { className: "text-base font-semibold text-card-foreground", children: card.label }),
518
+ /* @__PURE__ */ jsx("p", { className: cn("text-sm text-card-foreground"), children: card.subtitle })
463
519
  ] }),
464
- /* @__PURE__ */ jsx(
520
+ card.href ? /* @__PURE__ */ jsx(
465
521
  DynamicIcon,
466
522
  {
467
523
  name: "lucide/arrow-right",
468
524
  size: 18,
469
- className: cn("ml-auto flex-none text-muted")
525
+ className: cn("ml-auto flex-none text-card-foreground")
470
526
  }
471
- )
527
+ ) : null
472
528
  ]
473
529
  },
474
530
  card.label
@@ -553,7 +609,14 @@ function HeroOverlayCtaGrid({
553
609
  children: description
554
610
  }
555
611
  )),
556
- renderActions
612
+ /* @__PURE__ */ jsx(
613
+ BlockActions,
614
+ {
615
+ actions,
616
+ actionsSlot,
617
+ actionsClassName
618
+ }
619
+ )
557
620
  ]
558
621
  }
559
622
  ),
@@ -487,7 +487,7 @@ function ProcessExpandableTimeline({
487
487
  onClick: () => toggleExpand(index),
488
488
  className: cn(
489
489
  "group relative flex w-full items-start gap-6 border-b p-6 text-left transition-colors",
490
- `hover:bg-card hover:text-card-foreground`,
490
+ "hover:bg-card hover:text-card-foreground",
491
491
  expandedIndex === index ? "bg-card text-card-foreground" : "",
492
492
  stepItemClassName
493
493
  ),
@@ -604,7 +604,6 @@ function ProcessExpandableTimeline({
604
604
  {
605
605
  className: cn(
606
606
  "absolute left-6 top-0 bottom-0 w-px",
607
- "border-2 border-dashed",
608
607
  timelineLineClassName
609
608
  )
610
609
  }
@@ -466,7 +466,7 @@ function ProcessExpandableTimeline({
466
466
  onClick: () => toggleExpand(index),
467
467
  className: cn(
468
468
  "group relative flex w-full items-start gap-6 border-b p-6 text-left transition-colors",
469
- `hover:bg-card hover:text-card-foreground`,
469
+ "hover:bg-card hover:text-card-foreground",
470
470
  expandedIndex === index ? "bg-card text-card-foreground" : "",
471
471
  stepItemClassName
472
472
  ),
@@ -583,7 +583,6 @@ function ProcessExpandableTimeline({
583
583
  {
584
584
  className: cn(
585
585
  "absolute left-6 top-0 bottom-0 w-px",
586
- "border-2 border-dashed",
587
586
  timelineLineClassName
588
587
  )
589
588
  }
@@ -31,84 +31,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
31
31
  function cn(...inputs) {
32
32
  return tailwindMerge.twMerge(clsx.clsx(inputs));
33
33
  }
34
- function getNestedCardBg(parentBg, variant = "muted", options) {
35
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
36
- if (isDark) {
37
- switch (variant) {
38
- case "muted":
39
- return "bg-background";
40
- case "card":
41
- return "bg-card";
42
- case "accent":
43
- return "bg-accent";
44
- case "subtle":
45
- return "bg-background/50";
46
- }
47
- } else {
48
- switch (variant) {
49
- case "muted":
50
- return "bg-muted";
51
- case "card":
52
- return "bg-card";
53
- case "accent":
54
- return "bg-accent";
55
- case "subtle":
56
- return "bg-muted/50";
57
- }
58
- }
59
- }
60
- function getNestedCardTextColor(parentBg, options) {
61
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
62
- return isDark ? "text-foreground" : "";
63
- }
64
- function getTextColor(parentBg, variant = "default", options) {
65
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
66
- if (isDark) {
67
- switch (variant) {
68
- case "default":
69
- return "text-foreground";
70
- case "muted":
71
- return "text-foreground/80";
72
- case "subtle":
73
- return "text-foreground/60";
74
- case "accent":
75
- return "text-accent-foreground";
76
- }
77
- } else {
78
- switch (variant) {
79
- case "default":
80
- return "text-foreground";
81
- case "muted":
82
- return "text-muted-foreground";
83
- case "subtle":
84
- return "text-muted-foreground/70";
85
- case "accent":
86
- return "text-primary";
87
- }
88
- }
89
- }
90
- function getBorderColor(parentBg, variant = "default", options) {
91
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
92
- if (isDark) {
93
- switch (variant) {
94
- case "default":
95
- return "border-foreground/20";
96
- case "muted":
97
- return "border-foreground/10";
98
- case "accent":
99
- return "border-accent-foreground";
100
- }
101
- } else {
102
- switch (variant) {
103
- case "default":
104
- return "border-border";
105
- case "muted":
106
- return "border-muted";
107
- case "accent":
108
- return "border-primary";
109
- }
110
- }
111
- }
112
34
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
113
35
  var DynamicIcon = React__namespace.memo(function DynamicIcon2({
114
36
  apiKey,
@@ -512,10 +434,9 @@ function ProcessIconTimeline({
512
434
  spacing,
513
435
  pattern,
514
436
  patternOpacity,
515
- // Backwards compatibility
516
- title
437
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
517
438
  }) {
518
- const resolvedHeading = title ?? heading;
439
+ const resolvedHeading = heading;
519
440
  const renderSteps = React.useMemo(() => {
520
441
  if (stepsSlot) return stepsSlot;
521
442
  if (!steps?.length) return null;
@@ -551,14 +472,13 @@ function ProcessIconTimeline({
551
472
  {
552
473
  className: cn(
553
474
  "rounded-lg border p-6 shadow-sm",
554
- getNestedCardBg(background, "card"),
555
- getNestedCardTextColor(background),
475
+ "bg-card text-card-foreground",
556
476
  index % 2 === 0 ? "lg:mr-12" : "lg:ml-12",
557
477
  stepCardClassName
558
478
  ),
559
479
  children: [
560
480
  step.title && (typeof step.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-2 text-xl font-semibold tracking-tight", children: step.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2 text-xl font-semibold tracking-tight", children: step.title })),
561
- step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-4", getTextColor(background, "muted")), children: step.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4", getTextColor(background, "muted")), children: step.description })),
481
+ step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("mb-4"), children: step.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("mb-4"), children: step.description })),
562
482
  step.highlights?.length ? /* @__PURE__ */ jsxRuntime.jsx(
563
483
  "div",
564
484
  {
@@ -571,8 +491,7 @@ function ProcessIconTimeline({
571
491
  {
572
492
  className: cn(
573
493
  "rounded-full px-3 py-1 text-xs font-medium",
574
- getNestedCardBg(background, "muted"),
575
- getNestedCardTextColor(background)
494
+ "bg-primary text-primary-foreground"
576
495
  ),
577
496
  children: highlight
578
497
  },
@@ -600,6 +519,7 @@ function ProcessIconTimeline({
600
519
  className,
601
520
  pattern,
602
521
  patternOpacity,
522
+ containerClassName,
603
523
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: contentClassName, children: [
604
524
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-16 max-w-2xl", headerClassName), children: [
605
525
  resolvedHeading && (typeof resolvedHeading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
@@ -611,18 +531,8 @@ function ProcessIconTimeline({
611
531
  ),
612
532
  children: resolvedHeading
613
533
  }
614
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: resolvedHeading })),
615
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
616
- "p",
617
- {
618
- className: cn(
619
- "text-lg",
620
- getTextColor(background, "muted"),
621
- descriptionClassName
622
- ),
623
- children: description
624
- }
625
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
534
+ ) : resolvedHeading),
535
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-lg", descriptionClassName), children: description }) : description)
626
536
  ] }),
627
537
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("relative", timelineClassName), children: [
628
538
  /* @__PURE__ */ jsxRuntime.jsx(
@@ -630,7 +540,7 @@ function ProcessIconTimeline({
630
540
  {
631
541
  className: cn(
632
542
  "absolute left-6 top-0 bottom-0 w-px lg:left-1/2 lg:-translate-x-1/2",
633
- getBorderColor(background, "default"),
543
+ "border-border border",
634
544
  timelineLineClassName
635
545
  )
636
546
  }
@@ -113,15 +113,15 @@ interface ProcessIconTimelineProps {
113
113
  */
114
114
  optixFlowConfig?: OptixFlowConfig;
115
115
  /**
116
- * @deprecated Use `heading` instead
116
+ * Additional CSS classes for the container
117
117
  */
118
- title?: string;
118
+ containerClassName?: string;
119
119
  /** Optional Section ID */
120
120
  sectionId?: string;
121
121
  }
122
122
  /**
123
123
  * ProcessIconTimeline - A process section with icon-based timeline steps.
124
124
  */
125
- declare function ProcessIconTimeline({ sectionId, heading, description, steps, stepsSlot, className, contentClassName, headerClassName, headingClassName, descriptionClassName, timelineClassName, timelineLineClassName, stepCardClassName, stepBadgeClassName, background, spacing, pattern, patternOpacity, title, }: ProcessIconTimelineProps): React.JSX.Element;
125
+ declare function ProcessIconTimeline({ sectionId, heading, description, steps, stepsSlot, className, contentClassName, headerClassName, headingClassName, descriptionClassName, timelineClassName, timelineLineClassName, stepCardClassName, stepBadgeClassName, background, spacing, pattern, patternOpacity, containerClassName, }: ProcessIconTimelineProps): React.JSX.Element;
126
126
 
127
127
  export { ProcessIconTimeline, type ProcessIconTimelineProps };
@@ -113,15 +113,15 @@ interface ProcessIconTimelineProps {
113
113
  */
114
114
  optixFlowConfig?: OptixFlowConfig;
115
115
  /**
116
- * @deprecated Use `heading` instead
116
+ * Additional CSS classes for the container
117
117
  */
118
- title?: string;
118
+ containerClassName?: string;
119
119
  /** Optional Section ID */
120
120
  sectionId?: string;
121
121
  }
122
122
  /**
123
123
  * ProcessIconTimeline - A process section with icon-based timeline steps.
124
124
  */
125
- declare function ProcessIconTimeline({ sectionId, heading, description, steps, stepsSlot, className, contentClassName, headerClassName, headingClassName, descriptionClassName, timelineClassName, timelineLineClassName, stepCardClassName, stepBadgeClassName, background, spacing, pattern, patternOpacity, title, }: ProcessIconTimelineProps): React.JSX.Element;
125
+ declare function ProcessIconTimeline({ sectionId, heading, description, steps, stepsSlot, className, contentClassName, headerClassName, headingClassName, descriptionClassName, timelineClassName, timelineLineClassName, stepCardClassName, stepBadgeClassName, background, spacing, pattern, patternOpacity, containerClassName, }: ProcessIconTimelineProps): React.JSX.Element;
126
126
 
127
127
  export { ProcessIconTimeline, type ProcessIconTimelineProps };