@opensite/ui 1.2.0 → 1.2.2

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 (33) hide show
  1. package/dist/auto-scroll-carousel.cjs +7 -9
  2. package/dist/auto-scroll-carousel.js +7 -9
  3. package/dist/blur-vignette-grid.cjs +19 -27
  4. package/dist/blur-vignette-grid.js +19 -27
  5. package/dist/carousel-badge-cards.cjs +1 -1
  6. package/dist/carousel-badge-cards.js +1 -1
  7. package/dist/carousel-gradient-overlay.cjs +1 -1
  8. package/dist/carousel-gradient-overlay.js +1 -1
  9. package/dist/carousel-gradient-text.cjs +6 -17
  10. package/dist/carousel-gradient-text.d.cts +4 -0
  11. package/dist/carousel-gradient-text.d.ts +4 -0
  12. package/dist/carousel-gradient-text.js +6 -17
  13. package/dist/carousel-icon-sidebar.cjs +49 -6
  14. package/dist/carousel-icon-sidebar.d.cts +19 -3
  15. package/dist/carousel-icon-sidebar.d.ts +19 -3
  16. package/dist/carousel-icon-sidebar.js +49 -6
  17. package/dist/carousel-icon-tabs.cjs +20 -6
  18. package/dist/carousel-icon-tabs.js +20 -6
  19. package/dist/carousel-scale-focus.cjs +4 -10
  20. package/dist/carousel-scale-focus.js +4 -10
  21. package/dist/carousel-tabs-content.cjs +6 -18
  22. package/dist/carousel-tabs-content.js +6 -18
  23. package/dist/expandable-case-study-cards.cjs +39 -80
  24. package/dist/expandable-case-study-cards.js +39 -80
  25. package/dist/interior-carousel.cjs +9 -12
  26. package/dist/interior-carousel.js +9 -12
  27. package/dist/masonry-motion-grid.cjs +5 -16
  28. package/dist/masonry-motion-grid.js +5 -16
  29. package/dist/registry.cjs +7660 -7687
  30. package/dist/registry.js +7658 -7685
  31. package/dist/testimonial-carousel-cards.cjs +10 -63
  32. package/dist/testimonial-carousel-cards.js +10 -63
  33. package/package.json +1 -1
@@ -12,36 +12,6 @@ import { Img } from '@page-speed/img';
12
12
  function cn(...inputs) {
13
13
  return twMerge(clsx(inputs));
14
14
  }
15
- function getNestedCardBg(parentBg, variant = "muted", options) {
16
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
17
- if (isDark) {
18
- switch (variant) {
19
- case "muted":
20
- return "bg-background";
21
- case "card":
22
- return "bg-card";
23
- case "accent":
24
- return "bg-accent";
25
- case "subtle":
26
- return "bg-background/50";
27
- }
28
- } else {
29
- switch (variant) {
30
- case "muted":
31
- return "bg-muted";
32
- case "card":
33
- return "bg-card";
34
- case "accent":
35
- return "bg-accent";
36
- case "subtle":
37
- return "bg-muted/50";
38
- }
39
- }
40
- }
41
- function getNestedCardTextColor(parentBg, options) {
42
- const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
43
- return isDark ? "text-foreground" : "";
44
- }
45
15
  var badgeVariants = cva(
46
16
  "inline-flex items-center justify-center rounded-full border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
47
17
  {
@@ -582,7 +552,7 @@ function ExpandableCaseStudyCards({
582
552
  {
583
553
  "data-state": selection === item.id ? "open" : "closed",
584
554
  className: cn(
585
- 'group max-lg:w-full max-lg:flex-1 max-md:h-[200px] md:max-lg:aspect-1336/420 lg:transform-gpu lg:transition-all lg:data-[state="closed"]:w-[20%] lg:data-[state="closed"]:duration-500 lg:data-[state="open"]:w-[60%] lg:data-[state="open"]:duration-400',
555
+ "group h-[280px] w-full lg:h-auto lg:w-auto lg:transform-gpu lg:transition-all lg:data-[state=closed]:w-[20%] lg:data-[state=closed]:duration-500 lg:data-[state=open]:w-[60%] lg:data-[state=open]:duration-400",
586
556
  item.className,
587
557
  cardClassName
588
558
  ),
@@ -593,72 +563,61 @@ function ExpandableCaseStudyCards({
593
563
  "a",
594
564
  {
595
565
  href: item.href,
596
- className: "relative block h-full w-full overflow-hidden rounded-xl bg-primary text-primary-foreground dark:bg-card",
566
+ className: "relative block h-full w-full overflow-hidden rounded-xl",
597
567
  children: [
598
- /* @__PURE__ */ jsxs("div", { className: 'absolute -inset-[50%] hidden h-[200%] w-[200%] md:block lg:group-data-[state="closed"]:blur-sm', children: [
599
- /* @__PURE__ */ jsx("div", { className: "absolute top-[calc(25%+40px)] aspect-square h-[calc(50%+40px)] max-lg:right-[calc(50%+40px)] lg:right-[50%]", children: /* @__PURE__ */ jsx("div", { className: "h-full w-full overflow-clip rounded-xl", children: /* @__PURE__ */ jsx(
600
- Img,
601
- {
602
- src: item.image,
603
- alt: typeof item.title === "string" ? item.title : item.imageAlt || "Case study image",
604
- className: cn(
605
- "h-full w-full object-cover object-center",
606
- imageClassName
607
- ),
608
- loading: "lazy",
609
- optixFlowConfig
610
- }
611
- ) }) }),
612
- /* @__PURE__ */ jsx(
568
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-0 lg:group-data-[state=closed]:blur-xs lg:transition-[filter] lg:duration-500", children: /* @__PURE__ */ jsx(
569
+ Img,
570
+ {
571
+ src: item.image,
572
+ alt: typeof item.title === "string" ? item.title : item.imageAlt || "Case study image",
573
+ className: cn(
574
+ "h-full w-full object-cover object-center",
575
+ imageClassName
576
+ ),
577
+ loading: "lazy",
578
+ optixFlowConfig
579
+ }
580
+ ) }),
581
+ /* @__PURE__ */ jsx("div", { className: "absolute inset-x-0 bottom-0 h-[70%] bg-linear-to-t from-black/90 from-30% to-transparent" }),
582
+ /* @__PURE__ */ jsxs("div", { className: "absolute inset-0 flex flex-col justify-end p-4 pb-5 lg:transition-opacity lg:delay-200 lg:duration-500 lg:group-data-[state=closed]:opacity-0", children: [
583
+ item.badges && item.badges.length > 0 && /* @__PURE__ */ jsx(
613
584
  "div",
614
585
  {
615
586
  className: cn(
616
- "absolute top-[50%] left-[50%] flex size-16 -translate-x-1/2 -translate-y-1/2 items-center justify-center rounded-full max-lg:hidden",
617
- getNestedCardBg(background, "accent"),
618
- getNestedCardTextColor(background)
587
+ "mb-3 flex flex-wrap items-center gap-2",
588
+ badgesClassName
619
589
  ),
620
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/plus", size: 32 })
590
+ children: item.badges.map((badge, idx) => /* @__PURE__ */ jsx(
591
+ Badge,
592
+ {
593
+ variant: "secondary",
594
+ className: badgeClassName,
595
+ children: badge
596
+ },
597
+ idx
598
+ ))
621
599
  }
622
600
  ),
623
- /* @__PURE__ */ jsx("div", { className: "absolute inset-x-0 bottom-0 hidden h-[50%] bg-linear-to-t from-primary from-50% to-transparent lg:block" })
624
- ] }),
625
- /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col justify-between gap-4 md:absolute md:inset-0 md:max-lg:inset-x-[50%] md:max-lg:w-[50%]", children: [
626
- /* @__PURE__ */ jsx("div", { className: 'flex flex-col gap-3 p-4 pt-6 transition-all delay-200 duration-500 lg:group-data-[state="closed"]:opacity-0', children: /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-2", children: [
627
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
601
+ /* @__PURE__ */ jsxs("div", { className: "flex items-end justify-between gap-3", children: [
602
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1.5", children: [
628
603
  item.logo && /* @__PURE__ */ jsx("div", { className: "mb-1", children: /* @__PURE__ */ jsx(
629
604
  Img,
630
605
  {
631
606
  src: item.logo,
632
607
  alt: item.logoAlt || item.company || "Logo",
633
- className: cn("h-6 max-w-[120px] object-contain object-left lg:h-8 lg:max-w-[150px]", logoClassName),
608
+ className: cn(
609
+ "h-6 max-w-[120px] object-contain object-left invert lg:h-8 lg:max-w-[150px]",
610
+ logoClassName
611
+ ),
634
612
  loading: "lazy",
635
613
  optixFlowConfig
636
614
  }
637
615
  ) }),
638
- /* @__PURE__ */ jsx("div", { className: "text-base font-medium lg:text-lg", children: item.title }),
639
- item.description && /* @__PURE__ */ jsx("div", { className: "text-sm text-primary-foreground/70", children: item.description })
616
+ /* @__PURE__ */ jsx("div", { className: "text-base font-medium text-white lg:text-lg", children: item.title }),
617
+ item.description && /* @__PURE__ */ jsx("div", { className: "text-sm text-white/80", children: item.description })
640
618
  ] }),
641
- /* @__PURE__ */ jsx(
642
- "div",
643
- {
644
- className: cn(
645
- "flex size-8 shrink-0 items-center justify-center rounded-full text-foreground transition-transform group-hover:translate-x-1 group-hover:-translate-y-1 lg:size-10",
646
- getNestedCardBg(background, "card")
647
- ),
648
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 20 })
649
- }
650
- )
651
- ] }) }),
652
- /* @__PURE__ */ jsx(
653
- "div",
654
- {
655
- className: cn(
656
- 'flex h-20 items-center gap-2 px-4 pb-4 transition-opacity delay-200 duration-500 lg:group-data-[state="closed"]:opacity-0',
657
- badgesClassName
658
- ),
659
- children: item.badges?.map((badge, idx) => /* @__PURE__ */ jsx(Badge, { variant: "secondary", className: badgeClassName, children: badge }, idx))
660
- }
661
- )
619
+ /* @__PURE__ */ jsx("div", { className: "flex size-8 shrink-0 items-center justify-center rounded-full bg-white/20 text-white backdrop-blur-sm transition-transform group-hover:translate-x-1 group-hover:-translate-y-1 lg:size-10", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-up-right", size: 20 }) })
620
+ ] })
662
621
  ] })
663
622
  ]
664
623
  }
@@ -1240,29 +1240,26 @@ function InteriorCarousel({
1240
1240
  patternClassName,
1241
1241
  className,
1242
1242
  children: [
1243
- heading || descriptionContent ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-10", children: [
1244
- heading && /* @__PURE__ */ jsxRuntime.jsx(
1243
+ heading || description ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 mb-6 md:mb-16 px-6 md:px-8", children: [
1244
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1245
1245
  "h2",
1246
1246
  {
1247
1247
  className: cn(
1248
- "mb-4 text-center text-4xl font-semibold",
1248
+ "text-xl font-medium tracking-tight md:text-2xl lg:text-3xl text-balance",
1249
1249
  headingClassName
1250
1250
  ),
1251
1251
  children: heading
1252
1252
  }
1253
- ),
1254
- descriptionContent && /* @__PURE__ */ jsxRuntime.jsx(
1255
- "p",
1253
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: headingClassName, children: heading })),
1254
+ descriptionContent && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-lg text-balance", descriptionClassName), children: descriptionContent }) : /* @__PURE__ */ jsxRuntime.jsx(
1255
+ "div",
1256
1256
  {
1257
- className: cn(
1258
- "text-center text-sm text-muted-foreground",
1259
- descriptionClassName
1260
- ),
1257
+ className: cn("max-w-lg text-balance", descriptionClassName),
1261
1258
  children: descriptionContent
1262
1259
  }
1263
- )
1260
+ ))
1264
1261
  ] }) : null,
1265
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "relative", children: /* @__PURE__ */ jsxRuntime.jsxs(
1262
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "px-6 md:px-0", children: /* @__PURE__ */ jsxRuntime.jsxs(
1266
1263
  Carousel,
1267
1264
  {
1268
1265
  opts: {
@@ -1216,29 +1216,26 @@ function InteriorCarousel({
1216
1216
  patternClassName,
1217
1217
  className,
1218
1218
  children: [
1219
- heading || descriptionContent ? /* @__PURE__ */ jsxs("div", { className: "mb-10", children: [
1220
- heading && /* @__PURE__ */ jsx(
1219
+ heading || description ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 mb-6 md:mb-16 px-6 md:px-8", children: [
1220
+ heading && (typeof heading === "string" ? /* @__PURE__ */ jsx(
1221
1221
  "h2",
1222
1222
  {
1223
1223
  className: cn(
1224
- "mb-4 text-center text-4xl font-semibold",
1224
+ "text-xl font-medium tracking-tight md:text-2xl lg:text-3xl text-balance",
1225
1225
  headingClassName
1226
1226
  ),
1227
1227
  children: heading
1228
1228
  }
1229
- ),
1230
- descriptionContent && /* @__PURE__ */ jsx(
1231
- "p",
1229
+ ) : /* @__PURE__ */ jsx("div", { className: headingClassName, children: heading })),
1230
+ descriptionContent && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-lg text-balance", descriptionClassName), children: descriptionContent }) : /* @__PURE__ */ jsx(
1231
+ "div",
1232
1232
  {
1233
- className: cn(
1234
- "text-center text-sm text-muted-foreground",
1235
- descriptionClassName
1236
- ),
1233
+ className: cn("max-w-lg text-balance", descriptionClassName),
1237
1234
  children: descriptionContent
1238
1235
  }
1239
- )
1236
+ ))
1240
1237
  ] }) : null,
1241
- /* @__PURE__ */ jsx("div", { className: "relative", children: /* @__PURE__ */ jsxs(
1238
+ /* @__PURE__ */ jsx("div", { className: "px-6 md:px-0", children: /* @__PURE__ */ jsxs(
1242
1239
  Carousel,
1243
1240
  {
1244
1241
  opts: {
@@ -628,34 +628,23 @@ function MasonryMotionGrid({
628
628
  patternOpacity,
629
629
  patternClassName,
630
630
  className,
631
+ containerClassName: "px-4",
631
632
  children: [
632
- title || description ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4", children: [
633
+ title || description ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 mb-6 md:mb-16", children: [
633
634
  title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
634
635
  "h2",
635
636
  {
636
637
  className: cn(
637
- "text-xl font-medium tracking-tight md:text-2xl lg:text-3xl",
638
+ "text-xl font-medium tracking-tight md:text-2xl lg:text-3xl text-balance",
638
639
  titleClassName
639
640
  ),
640
641
  children: title
641
642
  }
642
643
  ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
643
- description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
644
- "p",
645
- {
646
- className: cn(
647
- "max-w-lg text-muted-foreground",
648
- descriptionClassName
649
- ),
650
- children: description
651
- }
652
- ) : /* @__PURE__ */ jsxRuntime.jsx(
644
+ description && (typeof description === "string" ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: cn("max-w-lg text-balance", descriptionClassName), children: description }) : /* @__PURE__ */ jsxRuntime.jsx(
653
645
  "div",
654
646
  {
655
- className: cn(
656
- "max-w-lg text-muted-foreground",
657
- descriptionClassName
658
- ),
647
+ className: cn("max-w-lg text-balance", descriptionClassName),
659
648
  children: description
660
649
  }
661
650
  ))
@@ -622,34 +622,23 @@ function MasonryMotionGrid({
622
622
  patternOpacity,
623
623
  patternClassName,
624
624
  className,
625
+ containerClassName: "px-4",
625
626
  children: [
626
- title || description ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
627
+ title || description ? /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 mb-6 md:mb-16", children: [
627
628
  title && (typeof title === "string" ? /* @__PURE__ */ jsx(
628
629
  "h2",
629
630
  {
630
631
  className: cn(
631
- "text-xl font-medium tracking-tight md:text-2xl lg:text-3xl",
632
+ "text-xl font-medium tracking-tight md:text-2xl lg:text-3xl text-balance",
632
633
  titleClassName
633
634
  ),
634
635
  children: title
635
636
  }
636
637
  ) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
637
- description && (typeof description === "string" ? /* @__PURE__ */ jsx(
638
- "p",
639
- {
640
- className: cn(
641
- "max-w-lg text-muted-foreground",
642
- descriptionClassName
643
- ),
644
- children: description
645
- }
646
- ) : /* @__PURE__ */ jsx(
638
+ description && (typeof description === "string" ? /* @__PURE__ */ jsx("p", { className: cn("max-w-lg text-balance", descriptionClassName), children: description }) : /* @__PURE__ */ jsx(
647
639
  "div",
648
640
  {
649
- className: cn(
650
- "max-w-lg text-muted-foreground",
651
- descriptionClassName
652
- ),
641
+ className: cn("max-w-lg text-balance", descriptionClassName),
653
642
  children: description
654
643
  }
655
644
  ))