@opensite/ui 3.2.6 → 3.2.8

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 (37) hide show
  1. package/dist/about-developer-story.cjs +7 -1
  2. package/dist/about-developer-story.js +7 -1
  3. package/dist/badge.d.cts +1 -1
  4. package/dist/badge.d.ts +1 -1
  5. package/dist/hero-overlay-cta-grid.cjs +82 -19
  6. package/dist/hero-overlay-cta-grid.d.cts +8 -13
  7. package/dist/hero-overlay-cta-grid.d.ts +8 -13
  8. package/dist/hero-overlay-cta-grid.js +83 -20
  9. package/dist/process-expandable-timeline.cjs +1 -2
  10. package/dist/process-expandable-timeline.js +1 -2
  11. package/dist/process-icon-timeline.cjs +9 -99
  12. package/dist/process-icon-timeline.d.cts +3 -3
  13. package/dist/process-icon-timeline.d.ts +3 -3
  14. package/dist/process-icon-timeline.js +9 -99
  15. package/dist/process-mission-principles.cjs +5 -67
  16. package/dist/process-mission-principles.d.cts +3 -3
  17. package/dist/process-mission-principles.d.ts +3 -3
  18. package/dist/process-mission-principles.js +5 -67
  19. package/dist/process-numbered-services.cjs +23 -117
  20. package/dist/process-numbered-services.d.cts +3 -3
  21. package/dist/process-numbered-services.d.ts +3 -3
  22. package/dist/process-numbered-services.js +23 -117
  23. package/dist/process-scroll-image.cjs +20 -85
  24. package/dist/process-scroll-image.d.cts +3 -11
  25. package/dist/process-scroll-image.d.ts +3 -11
  26. package/dist/process-scroll-image.js +18 -83
  27. package/dist/process-steps-grid.cjs +31 -99
  28. package/dist/process-steps-grid.d.cts +3 -3
  29. package/dist/process-steps-grid.d.ts +3 -3
  30. package/dist/process-steps-grid.js +31 -99
  31. package/dist/process-sticky-steps.cjs +90 -76
  32. package/dist/process-sticky-steps.d.cts +9 -1
  33. package/dist/process-sticky-steps.d.ts +9 -1
  34. package/dist/process-sticky-steps.js +90 -76
  35. package/dist/registry.cjs +128 -182
  36. package/dist/registry.js +128 -182
  37. package/package.json +1 -1
@@ -31,88 +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 getAccentColor(parentBg, options) {
91
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
92
- return isDark ? "text-accent-foreground" : "text-primary";
93
- }
94
- function getBorderColor(parentBg, variant = "default", options) {
95
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
96
- if (isDark) {
97
- switch (variant) {
98
- case "default":
99
- return "border-foreground/20";
100
- case "muted":
101
- return "border-foreground/10";
102
- case "accent":
103
- return "border-accent-foreground";
104
- }
105
- } else {
106
- switch (variant) {
107
- case "default":
108
- return "border-border";
109
- case "muted":
110
- return "border-muted";
111
- case "accent":
112
- return "border-primary";
113
- }
114
- }
115
- }
116
34
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
117
35
  var DynamicIcon = React__namespace.memo(function DynamicIcon2({
118
36
  apiKey,
@@ -515,10 +433,9 @@ function ProcessStepsGrid({
515
433
  spacing,
516
434
  pattern,
517
435
  patternOpacity,
518
- // Backwards compatibility
519
- title
436
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
520
437
  }) {
521
- const resolvedHeading = title ?? heading;
438
+ const resolvedHeading = heading;
522
439
  const renderSteps = React.useMemo(() => {
523
440
  if (stepsSlot) return stepsSlot;
524
441
  if (!steps || steps.length === 0) return null;
@@ -533,30 +450,38 @@ function ProcessStepsGrid({
533
450
  "div",
534
451
  {
535
452
  className: cn(
536
- "group relative overflow-hidden rounded-lg border p-8 transition-all hover:shadow-lg",
537
- `hover:${getBorderColor(background, "accent")}/50`,
538
- getNestedCardBg(background, "card"),
539
- getNestedCardTextColor(background),
453
+ "group relative overflow-hidden rounded-lg p-8 transition-all hover:shadow-lg",
454
+ "border border-border hover:border-primary",
455
+ "bg-card text-card-foreground",
540
456
  stepCardClassName,
541
457
  step.className
542
458
  ),
543
459
  children: [
544
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: cn("absolute -right-4 -top-4 text-[120px] font-bold leading-none transition-colors", getTextColor(background, "muted"), "opacity-20 group-hover:opacity-10", `group-hover:${getAccentColor(background)}`), children: String(index + 1).padStart(2, "0") }),
460
+ /* @__PURE__ */ jsxRuntime.jsx(
461
+ "span",
462
+ {
463
+ className: cn(
464
+ "absolute -right-4 -top-4 text-[120px] font-bold leading-none transition-colors",
465
+ "opacity-20 group-hover:opacity-100",
466
+ "group-hover:text-primary"
467
+ ),
468
+ children: String(index + 1).padStart(2, "0")
469
+ }
470
+ ),
545
471
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative z-10", children: [
546
472
  (step.iconSlot || step.icon) && /* @__PURE__ */ jsxRuntime.jsx(
547
473
  "div",
548
474
  {
549
475
  className: cn(
550
476
  "mb-6 flex size-14 items-center justify-center rounded-lg transition-colors",
551
- getAccentColor(background),
552
477
  "bg-primary/10 group-hover:bg-primary group-hover:text-primary-foreground",
553
478
  stepIconClassName
554
479
  ),
555
480
  children: step.iconSlot ?? (step.icon && /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: step.icon, size: 28 }))
556
481
  }
557
482
  ),
558
- step.title && (typeof step.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-3 text-xl font-semibold tracking-tight", children: step.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-3 text-xl font-semibold tracking-tight", children: step.title })),
559
- step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("leading-relaxed", getTextColor(background, "muted")), children: step.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: cn("leading-relaxed", getTextColor(background, "muted")), children: step.description }))
483
+ step.title && (typeof step.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-3 text-xl font-semibold tracking-tight", children: step.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-3", children: step.title })),
484
+ step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("leading-relaxed"), children: step.description }) : step.description)
560
485
  ] })
561
486
  ]
562
487
  },
@@ -564,7 +489,14 @@ function ProcessStepsGrid({
564
489
  ))
565
490
  }
566
491
  );
567
- }, [stepsSlot, steps, background, stepsGridClassName, stepCardClassName, stepIconClassName]);
492
+ }, [
493
+ stepsSlot,
494
+ steps,
495
+ background,
496
+ stepsGridClassName,
497
+ stepCardClassName,
498
+ stepIconClassName
499
+ ]);
568
500
  return /* @__PURE__ */ jsxRuntime.jsx(
569
501
  Section,
570
502
  {
@@ -574,29 +506,29 @@ function ProcessStepsGrid({
574
506
  className,
575
507
  pattern,
576
508
  patternOpacity,
509
+ containerClassName,
577
510
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: contentClassName, children: [
578
511
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mb-16 text-center", headerClassName), children: [
579
512
  resolvedHeading && (typeof resolvedHeading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
580
513
  "h1",
581
514
  {
582
515
  className: cn(
583
- "mb-4 text-4xl font-semibold tracking-tight lg:text-5xl",
516
+ "mb-4 text-4xl font-semibold tracking-tight lg:text-5xl text-pretty",
584
517
  headingClassName
585
518
  ),
586
519
  children: resolvedHeading
587
520
  }
588
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: resolvedHeading })),
521
+ ) : resolvedHeading),
589
522
  description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
590
523
  "p",
591
524
  {
592
525
  className: cn(
593
- "mx-auto max-w-2xl text-lg",
594
- getTextColor(background, "muted"),
526
+ "mx-auto max-w-2xl text-lg text-balance",
595
527
  descriptionClassName
596
528
  ),
597
529
  children: description
598
530
  }
599
- ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description }))
531
+ ) : description)
600
532
  ] }),
601
533
  renderSteps
602
534
  ] })
@@ -101,15 +101,15 @@ interface ProcessStepsGridProps {
101
101
  */
102
102
  optixFlowConfig?: OptixFlowConfig;
103
103
  /**
104
- * @deprecated Use `heading` instead
104
+ * Additional CSS classes for the container
105
105
  */
106
- title?: string;
106
+ containerClassName?: string;
107
107
  /** Optional Section ID */
108
108
  sectionId?: string;
109
109
  }
110
110
  /**
111
111
  * ProcessStepsGrid - A grid-based process section with numbered step cards.
112
112
  */
113
- declare function ProcessStepsGrid({ sectionId, heading, description, steps, stepsSlot, className, contentClassName, headerClassName, headingClassName, descriptionClassName, stepsGridClassName, stepCardClassName, stepIconClassName, background, spacing, pattern, patternOpacity, title, }: ProcessStepsGridProps): React.JSX.Element;
113
+ declare function ProcessStepsGrid({ sectionId, heading, description, steps, stepsSlot, className, contentClassName, headerClassName, headingClassName, descriptionClassName, stepsGridClassName, stepCardClassName, stepIconClassName, background, spacing, pattern, patternOpacity, containerClassName, }: ProcessStepsGridProps): React.JSX.Element;
114
114
 
115
115
  export { ProcessStepsGrid, type ProcessStepsGridProps };
@@ -101,15 +101,15 @@ interface ProcessStepsGridProps {
101
101
  */
102
102
  optixFlowConfig?: OptixFlowConfig;
103
103
  /**
104
- * @deprecated Use `heading` instead
104
+ * Additional CSS classes for the container
105
105
  */
106
- title?: string;
106
+ containerClassName?: string;
107
107
  /** Optional Section ID */
108
108
  sectionId?: string;
109
109
  }
110
110
  /**
111
111
  * ProcessStepsGrid - A grid-based process section with numbered step cards.
112
112
  */
113
- declare function ProcessStepsGrid({ sectionId, heading, description, steps, stepsSlot, className, contentClassName, headerClassName, headingClassName, descriptionClassName, stepsGridClassName, stepCardClassName, stepIconClassName, background, spacing, pattern, patternOpacity, title, }: ProcessStepsGridProps): React.JSX.Element;
113
+ declare function ProcessStepsGrid({ sectionId, heading, description, steps, stepsSlot, className, contentClassName, headerClassName, headingClassName, descriptionClassName, stepsGridClassName, stepCardClassName, stepIconClassName, background, spacing, pattern, patternOpacity, containerClassName, }: ProcessStepsGridProps): React.JSX.Element;
114
114
 
115
115
  export { ProcessStepsGrid, type ProcessStepsGridProps };
@@ -10,88 +10,6 @@ import { jsx, jsxs } from 'react/jsx-runtime';
10
10
  function cn(...inputs) {
11
11
  return twMerge(clsx(inputs));
12
12
  }
13
- function getNestedCardBg(parentBg, variant = "muted", options) {
14
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
15
- if (isDark) {
16
- switch (variant) {
17
- case "muted":
18
- return "bg-background";
19
- case "card":
20
- return "bg-card";
21
- case "accent":
22
- return "bg-accent";
23
- case "subtle":
24
- return "bg-background/50";
25
- }
26
- } else {
27
- switch (variant) {
28
- case "muted":
29
- return "bg-muted";
30
- case "card":
31
- return "bg-card";
32
- case "accent":
33
- return "bg-accent";
34
- case "subtle":
35
- return "bg-muted/50";
36
- }
37
- }
38
- }
39
- function getNestedCardTextColor(parentBg, options) {
40
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
41
- return isDark ? "text-foreground" : "";
42
- }
43
- function getTextColor(parentBg, variant = "default", options) {
44
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
45
- if (isDark) {
46
- switch (variant) {
47
- case "default":
48
- return "text-foreground";
49
- case "muted":
50
- return "text-foreground/80";
51
- case "subtle":
52
- return "text-foreground/60";
53
- case "accent":
54
- return "text-accent-foreground";
55
- }
56
- } else {
57
- switch (variant) {
58
- case "default":
59
- return "text-foreground";
60
- case "muted":
61
- return "text-muted-foreground";
62
- case "subtle":
63
- return "text-muted-foreground/70";
64
- case "accent":
65
- return "text-primary";
66
- }
67
- }
68
- }
69
- function getAccentColor(parentBg, options) {
70
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
71
- return isDark ? "text-accent-foreground" : "text-primary";
72
- }
73
- function getBorderColor(parentBg, variant = "default", options) {
74
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
75
- if (isDark) {
76
- switch (variant) {
77
- case "default":
78
- return "border-foreground/20";
79
- case "muted":
80
- return "border-foreground/10";
81
- case "accent":
82
- return "border-accent-foreground";
83
- }
84
- } else {
85
- switch (variant) {
86
- case "default":
87
- return "border-border";
88
- case "muted":
89
- return "border-muted";
90
- case "accent":
91
- return "border-primary";
92
- }
93
- }
94
- }
95
13
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
96
14
  var DynamicIcon = React.memo(function DynamicIcon2({
97
15
  apiKey,
@@ -494,10 +412,9 @@ function ProcessStepsGrid({
494
412
  spacing,
495
413
  pattern,
496
414
  patternOpacity,
497
- // Backwards compatibility
498
- title
415
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
499
416
  }) {
500
- const resolvedHeading = title ?? heading;
417
+ const resolvedHeading = heading;
501
418
  const renderSteps = useMemo(() => {
502
419
  if (stepsSlot) return stepsSlot;
503
420
  if (!steps || steps.length === 0) return null;
@@ -512,30 +429,38 @@ function ProcessStepsGrid({
512
429
  "div",
513
430
  {
514
431
  className: cn(
515
- "group relative overflow-hidden rounded-lg border p-8 transition-all hover:shadow-lg",
516
- `hover:${getBorderColor(background, "accent")}/50`,
517
- getNestedCardBg(background, "card"),
518
- getNestedCardTextColor(background),
432
+ "group relative overflow-hidden rounded-lg p-8 transition-all hover:shadow-lg",
433
+ "border border-border hover:border-primary",
434
+ "bg-card text-card-foreground",
519
435
  stepCardClassName,
520
436
  step.className
521
437
  ),
522
438
  children: [
523
- /* @__PURE__ */ jsx("span", { className: cn("absolute -right-4 -top-4 text-[120px] font-bold leading-none transition-colors", getTextColor(background, "muted"), "opacity-20 group-hover:opacity-10", `group-hover:${getAccentColor(background)}`), children: String(index + 1).padStart(2, "0") }),
439
+ /* @__PURE__ */ jsx(
440
+ "span",
441
+ {
442
+ className: cn(
443
+ "absolute -right-4 -top-4 text-[120px] font-bold leading-none transition-colors",
444
+ "opacity-20 group-hover:opacity-100",
445
+ "group-hover:text-primary"
446
+ ),
447
+ children: String(index + 1).padStart(2, "0")
448
+ }
449
+ ),
524
450
  /* @__PURE__ */ jsxs("div", { className: "relative z-10", children: [
525
451
  (step.iconSlot || step.icon) && /* @__PURE__ */ jsx(
526
452
  "div",
527
453
  {
528
454
  className: cn(
529
455
  "mb-6 flex size-14 items-center justify-center rounded-lg transition-colors",
530
- getAccentColor(background),
531
456
  "bg-primary/10 group-hover:bg-primary group-hover:text-primary-foreground",
532
457
  stepIconClassName
533
458
  ),
534
459
  children: step.iconSlot ?? (step.icon && /* @__PURE__ */ jsx(DynamicIcon, { name: step.icon, size: 28 }))
535
460
  }
536
461
  ),
537
- step.title && (typeof step.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "mb-3 text-xl font-semibold tracking-tight", children: step.title }) : /* @__PURE__ */ jsx("div", { className: "mb-3 text-xl font-semibold tracking-tight", children: step.title })),
538
- step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("leading-relaxed", getTextColor(background, "muted")), children: step.description }) : /* @__PURE__ */ jsx("div", { className: cn("leading-relaxed", getTextColor(background, "muted")), children: step.description }))
462
+ step.title && (typeof step.title === "string" ? /* @__PURE__ */ jsx("h3", { className: "mb-3 text-xl font-semibold tracking-tight", children: step.title }) : /* @__PURE__ */ jsx("div", { className: "mb-3", children: step.title })),
463
+ step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("leading-relaxed"), children: step.description }) : step.description)
539
464
  ] })
540
465
  ]
541
466
  },
@@ -543,7 +468,14 @@ function ProcessStepsGrid({
543
468
  ))
544
469
  }
545
470
  );
546
- }, [stepsSlot, steps, background, stepsGridClassName, stepCardClassName, stepIconClassName]);
471
+ }, [
472
+ stepsSlot,
473
+ steps,
474
+ background,
475
+ stepsGridClassName,
476
+ stepCardClassName,
477
+ stepIconClassName
478
+ ]);
547
479
  return /* @__PURE__ */ jsx(
548
480
  Section,
549
481
  {
@@ -553,29 +485,29 @@ function ProcessStepsGrid({
553
485
  className,
554
486
  pattern,
555
487
  patternOpacity,
488
+ containerClassName,
556
489
  children: /* @__PURE__ */ jsxs("div", { className: contentClassName, children: [
557
490
  /* @__PURE__ */ jsxs("div", { className: cn("mb-16 text-center", headerClassName), children: [
558
491
  resolvedHeading && (typeof resolvedHeading === "string" ? /* @__PURE__ */ jsx(
559
492
  "h1",
560
493
  {
561
494
  className: cn(
562
- "mb-4 text-4xl font-semibold tracking-tight lg:text-5xl",
495
+ "mb-4 text-4xl font-semibold tracking-tight lg:text-5xl text-pretty",
563
496
  headingClassName
564
497
  ),
565
498
  children: resolvedHeading
566
499
  }
567
- ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: resolvedHeading })),
500
+ ) : resolvedHeading),
568
501
  description && (typeof description === "string" ? /* @__PURE__ */ jsx(
569
502
  "p",
570
503
  {
571
504
  className: cn(
572
- "mx-auto max-w-2xl text-lg",
573
- getTextColor(background, "muted"),
505
+ "mx-auto max-w-2xl text-lg text-balance",
574
506
  descriptionClassName
575
507
  ),
576
508
  children: description
577
509
  }
578
- ) : /* @__PURE__ */ jsx("div", { className: descriptionClassName, children: description }))
510
+ ) : description)
579
511
  ] }),
580
512
  renderSteps
581
513
  ] })
@@ -32,36 +32,6 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
32
32
  function cn(...inputs) {
33
33
  return tailwindMerge.twMerge(clsx.clsx(inputs));
34
34
  }
35
- function getNestedCardBg(parentBg, variant = "muted", options) {
36
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
37
- if (isDark) {
38
- switch (variant) {
39
- case "muted":
40
- return "bg-background";
41
- case "card":
42
- return "bg-card";
43
- case "accent":
44
- return "bg-accent";
45
- case "subtle":
46
- return "bg-background/50";
47
- }
48
- } else {
49
- switch (variant) {
50
- case "muted":
51
- return "bg-muted";
52
- case "card":
53
- return "bg-card";
54
- case "accent":
55
- return "bg-accent";
56
- case "subtle":
57
- return "bg-muted/50";
58
- }
59
- }
60
- }
61
- function getNestedCardTextColor(parentBg, options) {
62
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
63
- return isDark ? "text-foreground" : "";
64
- }
65
35
  var DEFAULT_ICON_API_KEY = "au382bi7fsh96w9h9xlrnat2jglx";
66
36
  var DynamicIcon = React__namespace.memo(function DynamicIcon2({
67
37
  apiKey,
@@ -446,6 +416,70 @@ var Section = React__namespace.default.forwardRef(
446
416
  }
447
417
  );
448
418
  Section.displayName = "Section";
419
+ var MOBILE_CLASSES = {
420
+ "fit-left": "items-start md:items-center",
421
+ "fit-center": "items-center",
422
+ "fit-right": "items-end md:items-center",
423
+ "full-left": "items-stretch md:items-center",
424
+ "full-center": "items-stretch md:items-center",
425
+ "full-right": "items-stretch md:items-center"
426
+ };
427
+ function BlockActions({
428
+ mobileConfig,
429
+ actionsClassName,
430
+ verticalSpacing = "mt-4 md:mt-8",
431
+ actions,
432
+ actionsSlot
433
+ }) {
434
+ const width = mobileConfig?.width ?? "full";
435
+ const position = mobileConfig?.position ?? "center";
436
+ const mobileLayoutClass = MOBILE_CLASSES[`${width}-${position}`];
437
+ if (actionsSlot) {
438
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { children: actionsSlot });
439
+ } else if (actions && actions?.length > 0) {
440
+ return /* @__PURE__ */ jsxRuntime.jsx(
441
+ "div",
442
+ {
443
+ className: cn(
444
+ "flex flex-col md:flex-row flex-wrap gap-4",
445
+ mobileLayoutClass,
446
+ actionsClassName,
447
+ verticalSpacing
448
+ ),
449
+ children: actions.map((action, index) => /* @__PURE__ */ jsxRuntime.jsx(ActionComponent, { action }, index))
450
+ }
451
+ );
452
+ } else {
453
+ return null;
454
+ }
455
+ }
456
+ function ActionComponent({ action }) {
457
+ const {
458
+ label,
459
+ icon,
460
+ iconAfter,
461
+ children,
462
+ href,
463
+ onClick,
464
+ className: actionClassName,
465
+ ...pressableProps
466
+ } = action;
467
+ return /* @__PURE__ */ jsxRuntime.jsx(
468
+ pressable.Pressable,
469
+ {
470
+ href,
471
+ onClick,
472
+ asButton: action.asButton ?? true,
473
+ className: actionClassName,
474
+ ...pressableProps,
475
+ children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
476
+ icon,
477
+ label,
478
+ iconAfter
479
+ ] })
480
+ }
481
+ );
482
+ }
449
483
  var CornerIllustration = (props) => {
450
484
  return /* @__PURE__ */ jsxRuntime.jsxs(
451
485
  "svg",
@@ -499,46 +533,11 @@ function ProcessStickySteps({
499
533
  stepsClassName,
500
534
  stepItemClassName,
501
535
  background,
502
- spacing = "py-6 md:py-32",
536
+ spacing = "lg",
503
537
  pattern,
504
- patternOpacity
538
+ patternOpacity,
539
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8"
505
540
  }) {
506
- const renderActions = React.useMemo(() => {
507
- return () => {
508
- if (actionsSlot) return actionsSlot;
509
- if (!actions?.length) return null;
510
- return /* @__PURE__ */ jsxRuntime.jsx(
511
- "div",
512
- {
513
- className: cn("flex flex-wrap items-center gap-2", actionsClassName),
514
- children: actions.map((action, index) => {
515
- const {
516
- label,
517
- icon,
518
- iconAfter,
519
- children,
520
- className: actionClassName,
521
- ...pressableProps
522
- } = action;
523
- return /* @__PURE__ */ jsxRuntime.jsx(
524
- pressable.Pressable,
525
- {
526
- asButton: true,
527
- className: cn(actionClassName),
528
- ...pressableProps,
529
- children: children ?? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
530
- icon,
531
- label,
532
- iconAfter
533
- ] })
534
- },
535
- index
536
- );
537
- })
538
- }
539
- );
540
- };
541
- }, [actionsSlot, actions, actionsClassName]);
542
541
  const renderSteps = React.useMemo(() => {
543
542
  if (stepsSlot) return stepsSlot;
544
543
  if (!steps?.length) return null;
@@ -551,21 +550,28 @@ function ProcessStickySteps({
551
550
  step.className
552
551
  ),
553
552
  children: [
554
- /* @__PURE__ */ jsxRuntime.jsx(CornerIllustration, { className: "absolute top-4 right-0" }),
553
+ /* @__PURE__ */ jsxRuntime.jsx(
554
+ pressable.Pressable,
555
+ {
556
+ href: step.href,
557
+ "aria-label": typeof step.title === "string" ? step.title : "View step",
558
+ className: "absolute top-4 right-0 inline-flex",
559
+ children: /* @__PURE__ */ jsxRuntime.jsx(CornerIllustration, {})
560
+ }
561
+ ),
555
562
  /* @__PURE__ */ jsxRuntime.jsx(
556
563
  "div",
557
564
  {
558
565
  className: cn(
559
566
  "flex size-12 items-center justify-center px-4 py-1 tracking-tighter",
560
- getNestedCardBg(background, "muted"),
561
- getNestedCardTextColor(background)
567
+ "bg-muted text-muted-foreground"
562
568
  ),
563
569
  children: step.step ?? `0${index + 1}`
564
570
  }
565
571
  ),
566
572
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
567
- step.title && (typeof step.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 text-2xl font-semibold tracking-tighter lg:text-3xl", children: step.title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: step.title })),
568
- step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "", children: step.description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "", children: step.description }))
573
+ step.title && (typeof step.title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(pressable.Pressable, { href: step.href, className: "mb-4 block", children: /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-2xl font-semibold tracking-tighter lg:text-3xl", children: step.title }) }) : /* @__PURE__ */ jsxRuntime.jsx(pressable.Pressable, { href: step.href, className: "mb-4 block", children: step.title })),
574
+ step.description && (typeof step.description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { children: step.description }) : step.description)
569
575
  ] })
570
576
  ]
571
577
  },
@@ -581,6 +587,7 @@ function ProcessStickySteps({
581
587
  className,
582
588
  pattern,
583
589
  patternOpacity,
590
+ containerClassName,
584
591
  children: /* @__PURE__ */ jsxRuntime.jsxs(
585
592
  "div",
586
593
  {
@@ -591,7 +598,7 @@ function ProcessStickySteps({
591
598
  children: [
592
599
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "top-10 col-span-2 h-fit w-fit gap-3 space-y-7 py-8 lg:sticky", children: [
593
600
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative w-fit text-5xl font-semibold tracking-tight lg:text-7xl", children: [
594
- heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("w-fit", headingClassName), children: heading }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
601
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("w-fit", headingClassName), children: heading }) : heading),
595
602
  /* @__PURE__ */ jsxRuntime.jsx(
596
603
  DynamicIcon,
597
604
  {
@@ -601,8 +608,15 @@ function ProcessStickySteps({
601
608
  }
602
609
  )
603
610
  ] }),
604
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-base ", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: descriptionClassName, children: description })),
605
- renderActions()
611
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("text-base ", descriptionClassName), children: description }) : description),
612
+ /* @__PURE__ */ jsxRuntime.jsx(
613
+ BlockActions,
614
+ {
615
+ actions,
616
+ actionsSlot,
617
+ actionsClassName
618
+ }
619
+ )
606
620
  ] }),
607
621
  renderSteps
608
622
  ]