@opensite/ui 2.6.7 → 2.6.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.
@@ -519,7 +519,7 @@ function BreadcrumbList({ className, ...props }) {
519
519
  {
520
520
  "data-slot": "breadcrumb-list",
521
521
  className: cn(
522
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
522
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
523
523
  className
524
524
  ),
525
525
  ...props
@@ -546,7 +546,7 @@ function BreadcrumbLink({
546
546
  Comp,
547
547
  {
548
548
  "data-slot": "breadcrumb-link",
549
- className: cn("hover:text-foreground transition-colors", className),
549
+ className: cn("hover:underline transition-colors", className),
550
550
  ...props
551
551
  }
552
552
  );
@@ -559,7 +559,7 @@ function BreadcrumbPage({ className, ...props }) {
559
559
  role: "link",
560
560
  "aria-disabled": "true",
561
561
  "aria-current": "page",
562
- className: cn("text-foreground font-normal", className),
562
+ className: cn("font-normal", className),
563
563
  ...props
564
564
  }
565
565
  );
@@ -497,7 +497,7 @@ function BreadcrumbList({ className, ...props }) {
497
497
  {
498
498
  "data-slot": "breadcrumb-list",
499
499
  className: cn(
500
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
500
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
501
501
  className
502
502
  ),
503
503
  ...props
@@ -524,7 +524,7 @@ function BreadcrumbLink({
524
524
  Comp,
525
525
  {
526
526
  "data-slot": "breadcrumb-link",
527
- className: cn("hover:text-foreground transition-colors", className),
527
+ className: cn("hover:underline transition-colors", className),
528
528
  ...props
529
529
  }
530
530
  );
@@ -537,7 +537,7 @@ function BreadcrumbPage({ className, ...props }) {
537
537
  role: "link",
538
538
  "aria-disabled": "true",
539
539
  "aria-current": "page",
540
- className: cn("text-foreground font-normal", className),
540
+ className: cn("font-normal", className),
541
541
  ...props
542
542
  }
543
543
  );
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  'use strict';
3
3
 
4
- var React5 = require('react');
4
+ var React6 = require('react');
5
5
  var clsx = require('clsx');
6
6
  var tailwindMerge = require('tailwind-merge');
7
7
  var img = require('@page-speed/img');
@@ -10,6 +10,7 @@ var jsxRuntime = require('react/jsx-runtime');
10
10
  var icon = require('@page-speed/icon');
11
11
  var AvatarPrimitive = require('@radix-ui/react-avatar');
12
12
  var reactSlot = require('@radix-ui/react-slot');
13
+ var usePlatformFromUrl = require('@opensite/hooks/usePlatformFromUrl');
13
14
 
14
15
  function _interopNamespace(e) {
15
16
  if (e && e.__esModule) return e;
@@ -29,7 +30,7 @@ function _interopNamespace(e) {
29
30
  return Object.freeze(n);
30
31
  }
31
32
 
32
- var React5__namespace = /*#__PURE__*/_interopNamespace(React5);
33
+ var React6__namespace = /*#__PURE__*/_interopNamespace(React6);
33
34
  var AvatarPrimitive__namespace = /*#__PURE__*/_interopNamespace(AvatarPrimitive);
34
35
 
35
36
  // components/blocks/article/article-chapters-author.tsx
@@ -118,7 +119,7 @@ function useNavigation({
118
119
  href,
119
120
  onClick
120
121
  } = {}) {
121
- const linkType = React5__namespace.useMemo(() => {
122
+ const linkType = React6__namespace.useMemo(() => {
122
123
  if (!href || href.trim() === "") {
123
124
  return onClick ? "none" : "none";
124
125
  }
@@ -139,7 +140,7 @@ function useNavigation({
139
140
  return "internal";
140
141
  }
141
142
  }, [href, onClick]);
142
- const normalizedHref = React5__namespace.useMemo(() => {
143
+ const normalizedHref = React6__namespace.useMemo(() => {
143
144
  if (!href || href.trim() === "") {
144
145
  return void 0;
145
146
  }
@@ -157,7 +158,7 @@ function useNavigation({
157
158
  return trimmed;
158
159
  }
159
160
  }, [href, linkType]);
160
- const target = React5__namespace.useMemo(() => {
161
+ const target = React6__namespace.useMemo(() => {
161
162
  switch (linkType) {
162
163
  case "external":
163
164
  return "_blank";
@@ -170,7 +171,7 @@ function useNavigation({
170
171
  return void 0;
171
172
  }
172
173
  }, [linkType]);
173
- const rel = React5__namespace.useMemo(() => {
174
+ const rel = React6__namespace.useMemo(() => {
174
175
  if (linkType === "external") {
175
176
  return "noopener noreferrer";
176
177
  }
@@ -179,7 +180,7 @@ function useNavigation({
179
180
  const isExternal = linkType === "external";
180
181
  const isInternal = linkType === "internal";
181
182
  const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
182
- const handleClick = React5__namespace.useCallback(
183
+ const handleClick = React6__namespace.useCallback(
183
184
  (event) => {
184
185
  if (onClick) {
185
186
  try {
@@ -363,7 +364,7 @@ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
363
364
  size: "default"
364
365
  }
365
366
  });
366
- var Pressable = React5__namespace.forwardRef(
367
+ var Pressable = React6__namespace.forwardRef(
367
368
  ({
368
369
  children,
369
370
  className,
@@ -519,7 +520,7 @@ function BreadcrumbList({ className, ...props }) {
519
520
  {
520
521
  "data-slot": "breadcrumb-list",
521
522
  className: cn(
522
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
523
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
523
524
  className
524
525
  ),
525
526
  ...props
@@ -546,7 +547,7 @@ function BreadcrumbLink({
546
547
  Comp,
547
548
  {
548
549
  "data-slot": "breadcrumb-link",
549
- className: cn("hover:text-foreground transition-colors", className),
550
+ className: cn("hover:underline transition-colors", className),
550
551
  ...props
551
552
  }
552
553
  );
@@ -559,7 +560,7 @@ function BreadcrumbPage({ className, ...props }) {
559
560
  role: "link",
560
561
  "aria-disabled": "true",
561
562
  "aria-current": "page",
562
- className: cn("text-foreground font-normal", className),
563
+ className: cn("font-normal", className),
563
564
  ...props
564
565
  }
565
566
  );
@@ -590,7 +591,7 @@ var maxWidthStyles = {
590
591
  "4xl": "max-w-[1536px]",
591
592
  full: "max-w-full"
592
593
  };
593
- var Container = React5__namespace.default.forwardRef(
594
+ var Container = React6__namespace.default.forwardRef(
594
595
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
595
596
  const Component = as;
596
597
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -896,7 +897,7 @@ var spacingStyles = {
896
897
  };
897
898
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
898
899
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
899
- var Section = React5__namespace.default.forwardRef(
900
+ var Section = React6__namespace.default.forwardRef(
900
901
  ({
901
902
  id,
902
903
  title,
@@ -957,6 +958,87 @@ var Section = React5__namespace.default.forwardRef(
957
958
  }
958
959
  );
959
960
  Section.displayName = "Section";
961
+ var platformIconMap = {
962
+ instagram: "cib/instagram",
963
+ linkedin: "cib/linkedin",
964
+ google: "cib/google",
965
+ facebook: "cib/facebook",
966
+ tiktok: "cib/tiktok",
967
+ youtube: "cib/youtube",
968
+ yelp: "cib/yelp",
969
+ spotify: "cib/spotify",
970
+ apple: "cib/apple",
971
+ x: "prime/twitter",
972
+ github: "cib/github",
973
+ snapchat: "cib/snapchat",
974
+ discord: "cib/discord",
975
+ dev: "simple-icons/devdotto",
976
+ substack: "simple-icons/substack",
977
+ reddit: "cib/reddit",
978
+ pinterest: "cib/pinterest",
979
+ threads: "simple-icons/threads",
980
+ twitch: "cib/twitch",
981
+ whatsapp: "cib/whatsapp",
982
+ telegram: "cib/telegram",
983
+ medium: "simple-icons/medium",
984
+ patreon: "cib/patreon",
985
+ onlyfans: "simple-icons/onlyfans",
986
+ eventbrite: "cib/eventbrite",
987
+ npmjs: "simple-icons/npm",
988
+ crates: "cib/rust",
989
+ rubygems: "cib/rubygems",
990
+ behance: "cib/behance",
991
+ dribbble: "cib/dribbble",
992
+ unknown: "icon-park-solid/circular-connection"
993
+ };
994
+ var SocialLinkIcon = React6__namespace.forwardRef(
995
+ ({
996
+ platformName,
997
+ label,
998
+ iconSize = 20,
999
+ iconColor,
1000
+ href,
1001
+ iconClassName,
1002
+ className,
1003
+ iconNameOverride,
1004
+ ...pressableProps
1005
+ }, ref) => {
1006
+ const platform = usePlatformFromUrl.usePlatformFromUrl(href);
1007
+ const smartPlatformName = React6__namespace.useMemo(() => {
1008
+ return platform || platformName;
1009
+ }, [platform, platformName]);
1010
+ const iconName = React6__namespace.useMemo(() => {
1011
+ return iconNameOverride || platformIconMap[smartPlatformName];
1012
+ }, [iconNameOverride, smartPlatformName]);
1013
+ const accessibleLabel = React6__namespace.useMemo(() => {
1014
+ return label || platformName;
1015
+ }, [label, platformName]);
1016
+ return /* @__PURE__ */ jsxRuntime.jsx(
1017
+ Pressable,
1018
+ {
1019
+ ref,
1020
+ href,
1021
+ "aria-label": accessibleLabel,
1022
+ className: cn(
1023
+ "inline-flex items-center justify-center transition-colors",
1024
+ className
1025
+ ),
1026
+ ...pressableProps,
1027
+ children: /* @__PURE__ */ jsxRuntime.jsx(
1028
+ DynamicIcon,
1029
+ {
1030
+ name: iconName,
1031
+ size: iconSize,
1032
+ color: iconColor,
1033
+ className: iconClassName,
1034
+ alt: accessibleLabel
1035
+ }
1036
+ )
1037
+ }
1038
+ );
1039
+ }
1040
+ );
1041
+ SocialLinkIcon.displayName = "SocialLinkIcon";
960
1042
  function ArticleChaptersAuthorComponent({
961
1043
  className,
962
1044
  breadcrumbClassName,
@@ -996,10 +1078,10 @@ function ArticleChaptersAuthorComponent({
996
1078
  pattern,
997
1079
  patternOpacity
998
1080
  }) {
999
- const [activeChapter, setActiveChapter] = React5__namespace.useState(
1081
+ const [activeChapter, setActiveChapter] = React6__namespace.useState(
1000
1082
  chapters?.[0]?.id || ""
1001
1083
  );
1002
- React5__namespace.useEffect(() => {
1084
+ React6__namespace.useEffect(() => {
1003
1085
  if (!enableChapterTracking || !chapters || chapters.length === 0) return;
1004
1086
  const observer = new IntersectionObserver(
1005
1087
  (entries) => {
@@ -1017,12 +1099,12 @@ function ArticleChaptersAuthorComponent({
1017
1099
  });
1018
1100
  return () => observer.disconnect();
1019
1101
  }, [chapters, enableChapterTracking]);
1020
- const breadcrumbsContent = React5__namespace.useMemo(() => {
1102
+ const breadcrumbsContent = React6__namespace.useMemo(() => {
1021
1103
  if (breadcrumbsSlot) return breadcrumbsSlot;
1022
1104
  if (!breadcrumbs || breadcrumbs.length === 0) return null;
1023
1105
  return /* @__PURE__ */ jsxRuntime.jsx(Breadcrumb, { className: cn("mb-8 md:mb-20", breadcrumbClassName), children: /* @__PURE__ */ jsxRuntime.jsxs(BreadcrumbList, { children: [
1024
1106
  /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
1025
- breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxRuntime.jsxs(React5__namespace.Fragment, { children: [
1107
+ breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxRuntime.jsxs(React6__namespace.Fragment, { children: [
1026
1108
  /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbSeparator, {}),
1027
1109
  /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
1028
1110
  ] }, index)),
@@ -1030,7 +1112,7 @@ function ArticleChaptersAuthorComponent({
1030
1112
  /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbPage, { children: typeof currentPage === "string" ? currentPage : currentPage }) })
1031
1113
  ] }) });
1032
1114
  }, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
1033
- const chaptersNavContent = React5__namespace.useMemo(() => {
1115
+ const chaptersNavContent = React6__namespace.useMemo(() => {
1034
1116
  if (chaptersSlot) return chaptersSlot;
1035
1117
  if (!chapters || chapters.length === 0) return null;
1036
1118
  return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("rounded-lg border p-4", chaptersClassName), children: [
@@ -1038,7 +1120,7 @@ function ArticleChaptersAuthorComponent({
1038
1120
  /* @__PURE__ */ jsxRuntime.jsx("nav", { className: "space-y-2", children: chapters.map((chapter) => {
1039
1121
  const isActive = activeChapter === chapter.id;
1040
1122
  if (renderChapterLink) {
1041
- return /* @__PURE__ */ jsxRuntime.jsx(React5__namespace.Fragment, { children: renderChapterLink(chapter, isActive) }, chapter.id);
1123
+ return /* @__PURE__ */ jsxRuntime.jsx(React6__namespace.Fragment, { children: renderChapterLink(chapter, isActive) }, chapter.id);
1042
1124
  }
1043
1125
  return /* @__PURE__ */ jsxRuntime.jsxs(
1044
1126
  Pressable,
@@ -1072,26 +1154,14 @@ function ArticleChaptersAuthorComponent({
1072
1154
  renderChapterLink,
1073
1155
  chaptersClassName
1074
1156
  ]);
1075
- const authorCardContent = React5__namespace.useMemo(() => {
1157
+ const authorCardContent = React6__namespace.useMemo(() => {
1076
1158
  if (authorSlot) return authorSlot;
1077
1159
  if (!author) return null;
1078
1160
  let socialLinksContent = null;
1079
1161
  if (author.socialLinks) {
1080
1162
  if (Array.isArray(author.socialLinks)) {
1081
1163
  if (author.socialLinks.length > 0) {
1082
- socialLinksContent = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex gap-2", children: author.socialLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx(
1083
- Pressable,
1084
- {
1085
- href: link.href,
1086
- className: cn(
1087
- "flex h-8 w-8 items-center justify-center rounded-md border",
1088
- link.className
1089
- ),
1090
- "aria-label": link["aria-label"],
1091
- children: link.icon ?? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: `lucide/${link.platform}`, size: 14 })
1092
- },
1093
- index
1094
- )) });
1164
+ socialLinksContent = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex gap-2", children: author.socialLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx(SocialLinkIcon, { href: link.href }, index)) });
1095
1165
  }
1096
1166
  } else {
1097
1167
  const links = author.socialLinks;
@@ -1133,7 +1203,7 @@ function ArticleChaptersAuthorComponent({
1133
1203
  socialLinksContent
1134
1204
  ] });
1135
1205
  }, [authorSlot, author, authorClassName]);
1136
- const heroMediaContent = React5__namespace.useMemo(() => {
1206
+ const heroMediaContent = React6__namespace.useMemo(() => {
1137
1207
  if (heroMediaSlot) return heroMediaSlot;
1138
1208
  if (!heroImageSrc) return null;
1139
1209
  return /* @__PURE__ */ jsxRuntime.jsx(
@@ -1155,7 +1225,7 @@ function ArticleChaptersAuthorComponent({
1155
1225
  heroImageClassName,
1156
1226
  optixFlowConfig
1157
1227
  ]);
1158
- const conclusionContent = React5__namespace.useMemo(() => {
1228
+ const conclusionContent = React6__namespace.useMemo(() => {
1159
1229
  if (conclusionSlot) return conclusionSlot;
1160
1230
  if (!conclusionTitle && !conclusionDescription && (!conclusionActions || conclusionActions.length === 0))
1161
1231
  return null;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import * as React5 from 'react';
3
- import React5__default from 'react';
2
+ import * as React6 from 'react';
3
+ import React6__default from 'react';
4
4
  import { clsx } from 'clsx';
5
5
  import { twMerge } from 'tailwind-merge';
6
6
  import { Img } from '@page-speed/img';
@@ -9,6 +9,7 @@ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
9
9
  import { Icon } from '@page-speed/icon';
10
10
  import * as AvatarPrimitive from '@radix-ui/react-avatar';
11
11
  import { Slot } from '@radix-ui/react-slot';
12
+ import { usePlatformFromUrl } from '@opensite/hooks/usePlatformFromUrl';
12
13
 
13
14
  // components/blocks/article/article-chapters-author.tsx
14
15
  function cn(...inputs) {
@@ -96,7 +97,7 @@ function useNavigation({
96
97
  href,
97
98
  onClick
98
99
  } = {}) {
99
- const linkType = React5.useMemo(() => {
100
+ const linkType = React6.useMemo(() => {
100
101
  if (!href || href.trim() === "") {
101
102
  return onClick ? "none" : "none";
102
103
  }
@@ -117,7 +118,7 @@ function useNavigation({
117
118
  return "internal";
118
119
  }
119
120
  }, [href, onClick]);
120
- const normalizedHref = React5.useMemo(() => {
121
+ const normalizedHref = React6.useMemo(() => {
121
122
  if (!href || href.trim() === "") {
122
123
  return void 0;
123
124
  }
@@ -135,7 +136,7 @@ function useNavigation({
135
136
  return trimmed;
136
137
  }
137
138
  }, [href, linkType]);
138
- const target = React5.useMemo(() => {
139
+ const target = React6.useMemo(() => {
139
140
  switch (linkType) {
140
141
  case "external":
141
142
  return "_blank";
@@ -148,7 +149,7 @@ function useNavigation({
148
149
  return void 0;
149
150
  }
150
151
  }, [linkType]);
151
- const rel = React5.useMemo(() => {
152
+ const rel = React6.useMemo(() => {
152
153
  if (linkType === "external") {
153
154
  return "noopener noreferrer";
154
155
  }
@@ -157,7 +158,7 @@ function useNavigation({
157
158
  const isExternal = linkType === "external";
158
159
  const isInternal = linkType === "internal";
159
160
  const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
160
- const handleClick = React5.useCallback(
161
+ const handleClick = React6.useCallback(
161
162
  (event) => {
162
163
  if (onClick) {
163
164
  try {
@@ -341,7 +342,7 @@ var buttonVariants = cva(baseStyles, {
341
342
  size: "default"
342
343
  }
343
344
  });
344
- var Pressable = React5.forwardRef(
345
+ var Pressable = React6.forwardRef(
345
346
  ({
346
347
  children,
347
348
  className,
@@ -497,7 +498,7 @@ function BreadcrumbList({ className, ...props }) {
497
498
  {
498
499
  "data-slot": "breadcrumb-list",
499
500
  className: cn(
500
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
501
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
501
502
  className
502
503
  ),
503
504
  ...props
@@ -524,7 +525,7 @@ function BreadcrumbLink({
524
525
  Comp,
525
526
  {
526
527
  "data-slot": "breadcrumb-link",
527
- className: cn("hover:text-foreground transition-colors", className),
528
+ className: cn("hover:underline transition-colors", className),
528
529
  ...props
529
530
  }
530
531
  );
@@ -537,7 +538,7 @@ function BreadcrumbPage({ className, ...props }) {
537
538
  role: "link",
538
539
  "aria-disabled": "true",
539
540
  "aria-current": "page",
540
- className: cn("text-foreground font-normal", className),
541
+ className: cn("font-normal", className),
541
542
  ...props
542
543
  }
543
544
  );
@@ -568,7 +569,7 @@ var maxWidthStyles = {
568
569
  "4xl": "max-w-[1536px]",
569
570
  full: "max-w-full"
570
571
  };
571
- var Container = React5__default.forwardRef(
572
+ var Container = React6__default.forwardRef(
572
573
  ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
573
574
  const Component = as;
574
575
  return /* @__PURE__ */ jsx(
@@ -874,7 +875,7 @@ var spacingStyles = {
874
875
  };
875
876
  var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
876
877
  var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
877
- var Section = React5__default.forwardRef(
878
+ var Section = React6__default.forwardRef(
878
879
  ({
879
880
  id,
880
881
  title,
@@ -935,6 +936,87 @@ var Section = React5__default.forwardRef(
935
936
  }
936
937
  );
937
938
  Section.displayName = "Section";
939
+ var platformIconMap = {
940
+ instagram: "cib/instagram",
941
+ linkedin: "cib/linkedin",
942
+ google: "cib/google",
943
+ facebook: "cib/facebook",
944
+ tiktok: "cib/tiktok",
945
+ youtube: "cib/youtube",
946
+ yelp: "cib/yelp",
947
+ spotify: "cib/spotify",
948
+ apple: "cib/apple",
949
+ x: "prime/twitter",
950
+ github: "cib/github",
951
+ snapchat: "cib/snapchat",
952
+ discord: "cib/discord",
953
+ dev: "simple-icons/devdotto",
954
+ substack: "simple-icons/substack",
955
+ reddit: "cib/reddit",
956
+ pinterest: "cib/pinterest",
957
+ threads: "simple-icons/threads",
958
+ twitch: "cib/twitch",
959
+ whatsapp: "cib/whatsapp",
960
+ telegram: "cib/telegram",
961
+ medium: "simple-icons/medium",
962
+ patreon: "cib/patreon",
963
+ onlyfans: "simple-icons/onlyfans",
964
+ eventbrite: "cib/eventbrite",
965
+ npmjs: "simple-icons/npm",
966
+ crates: "cib/rust",
967
+ rubygems: "cib/rubygems",
968
+ behance: "cib/behance",
969
+ dribbble: "cib/dribbble",
970
+ unknown: "icon-park-solid/circular-connection"
971
+ };
972
+ var SocialLinkIcon = React6.forwardRef(
973
+ ({
974
+ platformName,
975
+ label,
976
+ iconSize = 20,
977
+ iconColor,
978
+ href,
979
+ iconClassName,
980
+ className,
981
+ iconNameOverride,
982
+ ...pressableProps
983
+ }, ref) => {
984
+ const platform = usePlatformFromUrl(href);
985
+ const smartPlatformName = React6.useMemo(() => {
986
+ return platform || platformName;
987
+ }, [platform, platformName]);
988
+ const iconName = React6.useMemo(() => {
989
+ return iconNameOverride || platformIconMap[smartPlatformName];
990
+ }, [iconNameOverride, smartPlatformName]);
991
+ const accessibleLabel = React6.useMemo(() => {
992
+ return label || platformName;
993
+ }, [label, platformName]);
994
+ return /* @__PURE__ */ jsx(
995
+ Pressable,
996
+ {
997
+ ref,
998
+ href,
999
+ "aria-label": accessibleLabel,
1000
+ className: cn(
1001
+ "inline-flex items-center justify-center transition-colors",
1002
+ className
1003
+ ),
1004
+ ...pressableProps,
1005
+ children: /* @__PURE__ */ jsx(
1006
+ DynamicIcon,
1007
+ {
1008
+ name: iconName,
1009
+ size: iconSize,
1010
+ color: iconColor,
1011
+ className: iconClassName,
1012
+ alt: accessibleLabel
1013
+ }
1014
+ )
1015
+ }
1016
+ );
1017
+ }
1018
+ );
1019
+ SocialLinkIcon.displayName = "SocialLinkIcon";
938
1020
  function ArticleChaptersAuthorComponent({
939
1021
  className,
940
1022
  breadcrumbClassName,
@@ -974,10 +1056,10 @@ function ArticleChaptersAuthorComponent({
974
1056
  pattern,
975
1057
  patternOpacity
976
1058
  }) {
977
- const [activeChapter, setActiveChapter] = React5.useState(
1059
+ const [activeChapter, setActiveChapter] = React6.useState(
978
1060
  chapters?.[0]?.id || ""
979
1061
  );
980
- React5.useEffect(() => {
1062
+ React6.useEffect(() => {
981
1063
  if (!enableChapterTracking || !chapters || chapters.length === 0) return;
982
1064
  const observer = new IntersectionObserver(
983
1065
  (entries) => {
@@ -995,12 +1077,12 @@ function ArticleChaptersAuthorComponent({
995
1077
  });
996
1078
  return () => observer.disconnect();
997
1079
  }, [chapters, enableChapterTracking]);
998
- const breadcrumbsContent = React5.useMemo(() => {
1080
+ const breadcrumbsContent = React6.useMemo(() => {
999
1081
  if (breadcrumbsSlot) return breadcrumbsSlot;
1000
1082
  if (!breadcrumbs || breadcrumbs.length === 0) return null;
1001
1083
  return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-8 md:mb-20", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
1002
1084
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
1003
- breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React5.Fragment, { children: [
1085
+ breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React6.Fragment, { children: [
1004
1086
  /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
1005
1087
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
1006
1088
  ] }, index)),
@@ -1008,7 +1090,7 @@ function ArticleChaptersAuthorComponent({
1008
1090
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: typeof currentPage === "string" ? currentPage : currentPage }) })
1009
1091
  ] }) });
1010
1092
  }, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
1011
- const chaptersNavContent = React5.useMemo(() => {
1093
+ const chaptersNavContent = React6.useMemo(() => {
1012
1094
  if (chaptersSlot) return chaptersSlot;
1013
1095
  if (!chapters || chapters.length === 0) return null;
1014
1096
  return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", chaptersClassName), children: [
@@ -1016,7 +1098,7 @@ function ArticleChaptersAuthorComponent({
1016
1098
  /* @__PURE__ */ jsx("nav", { className: "space-y-2", children: chapters.map((chapter) => {
1017
1099
  const isActive = activeChapter === chapter.id;
1018
1100
  if (renderChapterLink) {
1019
- return /* @__PURE__ */ jsx(React5.Fragment, { children: renderChapterLink(chapter, isActive) }, chapter.id);
1101
+ return /* @__PURE__ */ jsx(React6.Fragment, { children: renderChapterLink(chapter, isActive) }, chapter.id);
1020
1102
  }
1021
1103
  return /* @__PURE__ */ jsxs(
1022
1104
  Pressable,
@@ -1050,26 +1132,14 @@ function ArticleChaptersAuthorComponent({
1050
1132
  renderChapterLink,
1051
1133
  chaptersClassName
1052
1134
  ]);
1053
- const authorCardContent = React5.useMemo(() => {
1135
+ const authorCardContent = React6.useMemo(() => {
1054
1136
  if (authorSlot) return authorSlot;
1055
1137
  if (!author) return null;
1056
1138
  let socialLinksContent = null;
1057
1139
  if (author.socialLinks) {
1058
1140
  if (Array.isArray(author.socialLinks)) {
1059
1141
  if (author.socialLinks.length > 0) {
1060
- socialLinksContent = /* @__PURE__ */ jsx("div", { className: "mt-4 flex gap-2", children: author.socialLinks.map((link, index) => /* @__PURE__ */ jsx(
1061
- Pressable,
1062
- {
1063
- href: link.href,
1064
- className: cn(
1065
- "flex h-8 w-8 items-center justify-center rounded-md border",
1066
- link.className
1067
- ),
1068
- "aria-label": link["aria-label"],
1069
- children: link.icon ?? /* @__PURE__ */ jsx(DynamicIcon, { name: `lucide/${link.platform}`, size: 14 })
1070
- },
1071
- index
1072
- )) });
1142
+ socialLinksContent = /* @__PURE__ */ jsx("div", { className: "mt-4 flex gap-2", children: author.socialLinks.map((link, index) => /* @__PURE__ */ jsx(SocialLinkIcon, { href: link.href }, index)) });
1073
1143
  }
1074
1144
  } else {
1075
1145
  const links = author.socialLinks;
@@ -1111,7 +1181,7 @@ function ArticleChaptersAuthorComponent({
1111
1181
  socialLinksContent
1112
1182
  ] });
1113
1183
  }, [authorSlot, author, authorClassName]);
1114
- const heroMediaContent = React5.useMemo(() => {
1184
+ const heroMediaContent = React6.useMemo(() => {
1115
1185
  if (heroMediaSlot) return heroMediaSlot;
1116
1186
  if (!heroImageSrc) return null;
1117
1187
  return /* @__PURE__ */ jsx(
@@ -1133,7 +1203,7 @@ function ArticleChaptersAuthorComponent({
1133
1203
  heroImageClassName,
1134
1204
  optixFlowConfig
1135
1205
  ]);
1136
- const conclusionContent = React5.useMemo(() => {
1206
+ const conclusionContent = React6.useMemo(() => {
1137
1207
  if (conclusionSlot) return conclusionSlot;
1138
1208
  if (!conclusionTitle && !conclusionDescription && (!conclusionActions || conclusionActions.length === 0))
1139
1209
  return null;
@@ -476,7 +476,7 @@ function BreadcrumbList({ className, ...props }) {
476
476
  {
477
477
  "data-slot": "breadcrumb-list",
478
478
  className: cn(
479
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
479
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
480
480
  className
481
481
  ),
482
482
  ...props
@@ -503,7 +503,7 @@ function BreadcrumbLink({
503
503
  Comp,
504
504
  {
505
505
  "data-slot": "breadcrumb-link",
506
- className: cn("hover:text-foreground transition-colors", className),
506
+ className: cn("hover:underline transition-colors", className),
507
507
  ...props
508
508
  }
509
509
  );
@@ -516,7 +516,7 @@ function BreadcrumbPage({ className, ...props }) {
516
516
  role: "link",
517
517
  "aria-disabled": "true",
518
518
  "aria-current": "page",
519
- className: cn("text-foreground font-normal", className),
519
+ className: cn("font-normal", className),
520
520
  ...props
521
521
  }
522
522
  );
@@ -1035,23 +1035,6 @@ function ArticleCompactTocComponent({
1035
1035
  /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbPage, { children: currentPage }) })
1036
1036
  ] }) });
1037
1037
  }, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
1038
- const shareContent = React5__namespace.useMemo(() => {
1039
- if (shareSlot) return shareSlot;
1040
- if (!socialLinks || socialLinks.length === 0) return null;
1041
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-6 flex items-center gap-2", shareClassName), children: [
1042
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: "Share:" }),
1043
- socialLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx(
1044
- Pressable,
1045
- {
1046
- href: link.href,
1047
- className: "flex h-8 w-8 items-center justify-center rounded-md hover:bg-muted",
1048
- "aria-label": link["aria-label"] || `Share on ${link.platform}`,
1049
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: `lucide/${link.platform}`, size: 16 })
1050
- },
1051
- index
1052
- ))
1053
- ] });
1054
- }, [shareSlot, socialLinks, shareClassName]);
1055
1038
  const renderTocLinks = React5__namespace.useCallback(
1056
1039
  (onLinkClick) => {
1057
1040
  if (!sections) return null;
@@ -1180,7 +1163,6 @@ function ArticleCompactTocComponent({
1180
1163
  ]
1181
1164
  }
1182
1165
  ),
1183
- shareContent,
1184
1166
  tocContent,
1185
1167
  children && /* @__PURE__ */ jsxRuntime.jsxs(
1186
1168
  "article",
@@ -453,7 +453,7 @@ function BreadcrumbList({ className, ...props }) {
453
453
  {
454
454
  "data-slot": "breadcrumb-list",
455
455
  className: cn(
456
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
456
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
457
457
  className
458
458
  ),
459
459
  ...props
@@ -480,7 +480,7 @@ function BreadcrumbLink({
480
480
  Comp,
481
481
  {
482
482
  "data-slot": "breadcrumb-link",
483
- className: cn("hover:text-foreground transition-colors", className),
483
+ className: cn("hover:underline transition-colors", className),
484
484
  ...props
485
485
  }
486
486
  );
@@ -493,7 +493,7 @@ function BreadcrumbPage({ className, ...props }) {
493
493
  role: "link",
494
494
  "aria-disabled": "true",
495
495
  "aria-current": "page",
496
- className: cn("text-foreground font-normal", className),
496
+ className: cn("font-normal", className),
497
497
  ...props
498
498
  }
499
499
  );
@@ -1012,23 +1012,6 @@ function ArticleCompactTocComponent({
1012
1012
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: currentPage }) })
1013
1013
  ] }) });
1014
1014
  }, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
1015
- const shareContent = React5.useMemo(() => {
1016
- if (shareSlot) return shareSlot;
1017
- if (!socialLinks || socialLinks.length === 0) return null;
1018
- return /* @__PURE__ */ jsxs("div", { className: cn("mt-6 flex items-center gap-2", shareClassName), children: [
1019
- /* @__PURE__ */ jsx("span", { className: "text-sm", children: "Share:" }),
1020
- socialLinks.map((link, index) => /* @__PURE__ */ jsx(
1021
- Pressable,
1022
- {
1023
- href: link.href,
1024
- className: "flex h-8 w-8 items-center justify-center rounded-md hover:bg-muted",
1025
- "aria-label": link["aria-label"] || `Share on ${link.platform}`,
1026
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: `lucide/${link.platform}`, size: 16 })
1027
- },
1028
- index
1029
- ))
1030
- ] });
1031
- }, [shareSlot, socialLinks, shareClassName]);
1032
1015
  const renderTocLinks = React5.useCallback(
1033
1016
  (onLinkClick) => {
1034
1017
  if (!sections) return null;
@@ -1157,7 +1140,6 @@ function ArticleCompactTocComponent({
1157
1140
  ]
1158
1141
  }
1159
1142
  ),
1160
- shareContent,
1161
1143
  tocContent,
1162
1144
  children && /* @__PURE__ */ jsxs(
1163
1145
  "article",
@@ -896,7 +896,7 @@ function ArticleHeroProseComponent({
896
896
  dateFormat = "MMMM d, yyyy",
897
897
  optixFlowConfig,
898
898
  background,
899
- containerClassName,
899
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
900
900
  spacing = "hero",
901
901
  pattern,
902
902
  patternOpacity
@@ -874,7 +874,7 @@ function ArticleHeroProseComponent({
874
874
  dateFormat = "MMMM d, yyyy",
875
875
  optixFlowConfig,
876
876
  background,
877
- containerClassName,
877
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
878
878
  spacing = "hero",
879
879
  pattern,
880
880
  patternOpacity
@@ -1048,7 +1048,7 @@ function ArticleSplitAnimatedComponent({
1048
1048
  children: [
1049
1049
  heroMediaContent,
1050
1050
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-linear-to-t from-black/60 via-transparent to-transparent" }),
1051
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-0 left-0 p-6", children: categoryContent })
1051
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-0 left-0 p-4 md:p-6", children: categoryContent })
1052
1052
  ]
1053
1053
  }
1054
1054
  ),
@@ -1025,7 +1025,7 @@ function ArticleSplitAnimatedComponent({
1025
1025
  children: [
1026
1026
  heroMediaContent,
1027
1027
  /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-linear-to-t from-black/60 via-transparent to-transparent" }),
1028
- /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-0 p-6", children: categoryContent })
1028
+ /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-0 p-4 md:p-6", children: categoryContent })
1029
1029
  ]
1030
1030
  }
1031
1031
  ),
@@ -506,7 +506,7 @@ function BreadcrumbList({ className, ...props }) {
506
506
  {
507
507
  "data-slot": "breadcrumb-list",
508
508
  className: cn(
509
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
509
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
510
510
  className
511
511
  ),
512
512
  ...props
@@ -533,7 +533,7 @@ function BreadcrumbLink({
533
533
  Comp,
534
534
  {
535
535
  "data-slot": "breadcrumb-link",
536
- className: cn("hover:text-foreground transition-colors", className),
536
+ className: cn("hover:underline transition-colors", className),
537
537
  ...props
538
538
  }
539
539
  );
@@ -482,7 +482,7 @@ function BreadcrumbList({ className, ...props }) {
482
482
  {
483
483
  "data-slot": "breadcrumb-list",
484
484
  className: cn(
485
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
485
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
486
486
  className
487
487
  ),
488
488
  ...props
@@ -509,7 +509,7 @@ function BreadcrumbLink({
509
509
  Comp,
510
510
  {
511
511
  "data-slot": "breadcrumb-link",
512
- className: cn("hover:text-foreground transition-colors", className),
512
+ className: cn("hover:underline transition-colors", className),
513
513
  ...props
514
514
  }
515
515
  );
@@ -474,7 +474,7 @@ function BreadcrumbList({ className, ...props }) {
474
474
  {
475
475
  "data-slot": "breadcrumb-list",
476
476
  className: cn(
477
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
477
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
478
478
  className
479
479
  ),
480
480
  ...props
@@ -501,7 +501,7 @@ function BreadcrumbLink({
501
501
  Comp,
502
502
  {
503
503
  "data-slot": "breadcrumb-link",
504
- className: cn("hover:text-foreground transition-colors", className),
504
+ className: cn("hover:underline transition-colors", className),
505
505
  ...props
506
506
  }
507
507
  );
@@ -514,7 +514,7 @@ function BreadcrumbPage({ className, ...props }) {
514
514
  role: "link",
515
515
  "aria-disabled": "true",
516
516
  "aria-current": "page",
517
- className: cn("text-foreground font-normal", className),
517
+ className: cn("font-normal", className),
518
518
  ...props
519
519
  }
520
520
  );
@@ -452,7 +452,7 @@ function BreadcrumbList({ className, ...props }) {
452
452
  {
453
453
  "data-slot": "breadcrumb-list",
454
454
  className: cn(
455
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
455
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
456
456
  className
457
457
  ),
458
458
  ...props
@@ -479,7 +479,7 @@ function BreadcrumbLink({
479
479
  Comp,
480
480
  {
481
481
  "data-slot": "breadcrumb-link",
482
- className: cn("hover:text-foreground transition-colors", className),
482
+ className: cn("hover:underline transition-colors", className),
483
483
  ...props
484
484
  }
485
485
  );
@@ -492,7 +492,7 @@ function BreadcrumbPage({ className, ...props }) {
492
492
  role: "link",
493
493
  "aria-disabled": "true",
494
494
  "aria-current": "page",
495
- className: cn("text-foreground font-normal", className),
495
+ className: cn("font-normal", className),
496
496
  ...props
497
497
  }
498
498
  );
@@ -505,7 +505,7 @@ function BreadcrumbList({ className, ...props }) {
505
505
  {
506
506
  "data-slot": "breadcrumb-list",
507
507
  className: cn(
508
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
508
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
509
509
  className
510
510
  ),
511
511
  ...props
@@ -532,7 +532,7 @@ function BreadcrumbLink({
532
532
  Comp,
533
533
  {
534
534
  "data-slot": "breadcrumb-link",
535
- className: cn("hover:text-foreground transition-colors", className),
535
+ className: cn("hover:underline transition-colors", className),
536
536
  ...props
537
537
  }
538
538
  );
@@ -545,7 +545,7 @@ function BreadcrumbPage({ className, ...props }) {
545
545
  role: "link",
546
546
  "aria-disabled": "true",
547
547
  "aria-current": "page",
548
- className: cn("text-foreground font-normal", className),
548
+ className: cn("font-normal", className),
549
549
  ...props
550
550
  }
551
551
  );
@@ -482,7 +482,7 @@ function BreadcrumbList({ className, ...props }) {
482
482
  {
483
483
  "data-slot": "breadcrumb-list",
484
484
  className: cn(
485
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
485
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
486
486
  className
487
487
  ),
488
488
  ...props
@@ -509,7 +509,7 @@ function BreadcrumbLink({
509
509
  Comp,
510
510
  {
511
511
  "data-slot": "breadcrumb-link",
512
- className: cn("hover:text-foreground transition-colors", className),
512
+ className: cn("hover:underline transition-colors", className),
513
513
  ...props
514
514
  }
515
515
  );
@@ -522,7 +522,7 @@ function BreadcrumbPage({ className, ...props }) {
522
522
  role: "link",
523
523
  "aria-disabled": "true",
524
524
  "aria-current": "page",
525
- className: cn("text-foreground font-normal", className),
525
+ className: cn("font-normal", className),
526
526
  ...props
527
527
  }
528
528
  );
@@ -944,7 +944,7 @@ function HeroEventRegistration({
944
944
  locationSublabel,
945
945
  locationSlot,
946
946
  background,
947
- containerClassName = "mx-auto w-full max-w-full md:max-w-7xl relative z-10 px-6 sm:px-8 md:px-12 lg:px-18",
947
+ containerClassName = "mx-auto w-full max-w-full md:max-w-7xl relative z-10 px-6",
948
948
  spacing = "py-16 md:py-40",
949
949
  pattern,
950
950
  patternOpacity,
@@ -923,7 +923,7 @@ function HeroEventRegistration({
923
923
  locationSublabel,
924
924
  locationSlot,
925
925
  background,
926
- containerClassName = "mx-auto w-full max-w-full md:max-w-7xl relative z-10 px-6 sm:px-8 md:px-12 lg:px-18",
926
+ containerClassName = "mx-auto w-full max-w-full md:max-w-7xl relative z-10 px-6",
927
927
  spacing = "py-16 md:py-40",
928
928
  pattern,
929
929
  patternOpacity,
package/dist/registry.cjs CHANGED
@@ -36468,7 +36468,7 @@ function BreadcrumbList({ className, ...props }) {
36468
36468
  {
36469
36469
  "data-slot": "breadcrumb-list",
36470
36470
  className: cn(
36471
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
36471
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
36472
36472
  className
36473
36473
  ),
36474
36474
  ...props
@@ -36495,7 +36495,7 @@ function BreadcrumbLink({
36495
36495
  Comp,
36496
36496
  {
36497
36497
  "data-slot": "breadcrumb-link",
36498
- className: cn("hover:text-foreground transition-colors", className),
36498
+ className: cn("hover:underline transition-colors", className),
36499
36499
  ...props
36500
36500
  }
36501
36501
  );
@@ -36508,7 +36508,7 @@ function BreadcrumbPage({ className, ...props }) {
36508
36508
  role: "link",
36509
36509
  "aria-disabled": "true",
36510
36510
  "aria-current": "page",
36511
- className: cn("text-foreground font-normal", className),
36511
+ className: cn("font-normal", className),
36512
36512
  ...props
36513
36513
  }
36514
36514
  );
@@ -37620,7 +37620,7 @@ function ArticleHeroProseComponent({
37620
37620
  dateFormat = "MMMM d, yyyy",
37621
37621
  optixFlowConfig,
37622
37622
  background,
37623
- containerClassName,
37623
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
37624
37624
  spacing = "hero",
37625
37625
  pattern,
37626
37626
  patternOpacity
@@ -38400,23 +38400,6 @@ function ArticleCompactTocComponent({
38400
38400
  /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbPage, { children: currentPage }) })
38401
38401
  ] }) });
38402
38402
  }, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
38403
- const shareContent = React30__namespace.useMemo(() => {
38404
- if (shareSlot) return shareSlot;
38405
- if (!socialLinks || socialLinks.length === 0) return null;
38406
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-6 flex items-center gap-2", shareClassName), children: [
38407
- /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm", children: "Share:" }),
38408
- socialLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx(
38409
- Pressable,
38410
- {
38411
- href: link.href,
38412
- className: "flex h-8 w-8 items-center justify-center rounded-md hover:bg-muted",
38413
- "aria-label": link["aria-label"] || `Share on ${link.platform}`,
38414
- children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: `lucide/${link.platform}`, size: 16 })
38415
- },
38416
- index
38417
- ))
38418
- ] });
38419
- }, [shareSlot, socialLinks, shareClassName]);
38420
38403
  const renderTocLinks = React30__namespace.useCallback(
38421
38404
  (onLinkClick) => {
38422
38405
  if (!sections) return null;
@@ -38545,7 +38528,6 @@ function ArticleCompactTocComponent({
38545
38528
  ]
38546
38529
  }
38547
38530
  ),
38548
- shareContent,
38549
38531
  tocContent,
38550
38532
  children && /* @__PURE__ */ jsxRuntime.jsxs(
38551
38533
  "article",
@@ -38689,19 +38671,7 @@ function ArticleChaptersAuthorComponent({
38689
38671
  if (author.socialLinks) {
38690
38672
  if (Array.isArray(author.socialLinks)) {
38691
38673
  if (author.socialLinks.length > 0) {
38692
- socialLinksContent = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex gap-2", children: author.socialLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx(
38693
- Pressable,
38694
- {
38695
- href: link.href,
38696
- className: cn(
38697
- "flex h-8 w-8 items-center justify-center rounded-md border",
38698
- link.className
38699
- ),
38700
- "aria-label": link["aria-label"],
38701
- children: link.icon ?? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: `lucide/${link.platform}`, size: 14 })
38702
- },
38703
- index
38704
- )) });
38674
+ socialLinksContent = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex gap-2", children: author.socialLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx(SocialLinkIcon, { href: link.href }, index)) });
38705
38675
  }
38706
38676
  } else {
38707
38677
  const links = author.socialLinks;
@@ -39023,7 +38993,7 @@ function ArticleSplitAnimatedComponent({
39023
38993
  children: [
39024
38994
  heroMediaContent,
39025
38995
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-0 bg-linear-to-t from-black/60 via-transparent to-transparent" }),
39026
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-0 left-0 p-6", children: categoryContent })
38996
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute bottom-0 left-0 p-4 md:p-6", children: categoryContent })
39027
38997
  ]
39028
38998
  }
39029
38999
  ),
@@ -58638,7 +58608,7 @@ function HeroEventRegistration({
58638
58608
  locationSublabel,
58639
58609
  locationSlot,
58640
58610
  background,
58641
- containerClassName = "mx-auto w-full max-w-full md:max-w-7xl relative z-10 px-6 sm:px-8 md:px-12 lg:px-18",
58611
+ containerClassName = "mx-auto w-full max-w-full md:max-w-7xl relative z-10 px-6",
58642
58612
  spacing = "py-16 md:py-40",
58643
58613
  pattern,
58644
58614
  patternOpacity,
package/dist/registry.js CHANGED
@@ -36428,7 +36428,7 @@ function BreadcrumbList({ className, ...props }) {
36428
36428
  {
36429
36429
  "data-slot": "breadcrumb-list",
36430
36430
  className: cn(
36431
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
36431
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
36432
36432
  className
36433
36433
  ),
36434
36434
  ...props
@@ -36455,7 +36455,7 @@ function BreadcrumbLink({
36455
36455
  Comp,
36456
36456
  {
36457
36457
  "data-slot": "breadcrumb-link",
36458
- className: cn("hover:text-foreground transition-colors", className),
36458
+ className: cn("hover:underline transition-colors", className),
36459
36459
  ...props
36460
36460
  }
36461
36461
  );
@@ -36468,7 +36468,7 @@ function BreadcrumbPage({ className, ...props }) {
36468
36468
  role: "link",
36469
36469
  "aria-disabled": "true",
36470
36470
  "aria-current": "page",
36471
- className: cn("text-foreground font-normal", className),
36471
+ className: cn("font-normal", className),
36472
36472
  ...props
36473
36473
  }
36474
36474
  );
@@ -37580,7 +37580,7 @@ function ArticleHeroProseComponent({
37580
37580
  dateFormat = "MMMM d, yyyy",
37581
37581
  optixFlowConfig,
37582
37582
  background,
37583
- containerClassName,
37583
+ containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
37584
37584
  spacing = "hero",
37585
37585
  pattern,
37586
37586
  patternOpacity
@@ -38360,23 +38360,6 @@ function ArticleCompactTocComponent({
38360
38360
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: currentPage }) })
38361
38361
  ] }) });
38362
38362
  }, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
38363
- const shareContent = React30.useMemo(() => {
38364
- if (shareSlot) return shareSlot;
38365
- if (!socialLinks || socialLinks.length === 0) return null;
38366
- return /* @__PURE__ */ jsxs("div", { className: cn("mt-6 flex items-center gap-2", shareClassName), children: [
38367
- /* @__PURE__ */ jsx("span", { className: "text-sm", children: "Share:" }),
38368
- socialLinks.map((link, index) => /* @__PURE__ */ jsx(
38369
- Pressable,
38370
- {
38371
- href: link.href,
38372
- className: "flex h-8 w-8 items-center justify-center rounded-md hover:bg-muted",
38373
- "aria-label": link["aria-label"] || `Share on ${link.platform}`,
38374
- children: /* @__PURE__ */ jsx(DynamicIcon, { name: `lucide/${link.platform}`, size: 16 })
38375
- },
38376
- index
38377
- ))
38378
- ] });
38379
- }, [shareSlot, socialLinks, shareClassName]);
38380
38363
  const renderTocLinks = React30.useCallback(
38381
38364
  (onLinkClick) => {
38382
38365
  if (!sections) return null;
@@ -38505,7 +38488,6 @@ function ArticleCompactTocComponent({
38505
38488
  ]
38506
38489
  }
38507
38490
  ),
38508
- shareContent,
38509
38491
  tocContent,
38510
38492
  children && /* @__PURE__ */ jsxs(
38511
38493
  "article",
@@ -38649,19 +38631,7 @@ function ArticleChaptersAuthorComponent({
38649
38631
  if (author.socialLinks) {
38650
38632
  if (Array.isArray(author.socialLinks)) {
38651
38633
  if (author.socialLinks.length > 0) {
38652
- socialLinksContent = /* @__PURE__ */ jsx("div", { className: "mt-4 flex gap-2", children: author.socialLinks.map((link, index) => /* @__PURE__ */ jsx(
38653
- Pressable,
38654
- {
38655
- href: link.href,
38656
- className: cn(
38657
- "flex h-8 w-8 items-center justify-center rounded-md border",
38658
- link.className
38659
- ),
38660
- "aria-label": link["aria-label"],
38661
- children: link.icon ?? /* @__PURE__ */ jsx(DynamicIcon, { name: `lucide/${link.platform}`, size: 14 })
38662
- },
38663
- index
38664
- )) });
38634
+ socialLinksContent = /* @__PURE__ */ jsx("div", { className: "mt-4 flex gap-2", children: author.socialLinks.map((link, index) => /* @__PURE__ */ jsx(SocialLinkIcon, { href: link.href }, index)) });
38665
38635
  }
38666
38636
  } else {
38667
38637
  const links = author.socialLinks;
@@ -38983,7 +38953,7 @@ function ArticleSplitAnimatedComponent({
38983
38953
  children: [
38984
38954
  heroMediaContent,
38985
38955
  /* @__PURE__ */ jsx("div", { className: "absolute inset-0 bg-linear-to-t from-black/60 via-transparent to-transparent" }),
38986
- /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-0 p-6", children: categoryContent })
38956
+ /* @__PURE__ */ jsx("div", { className: "absolute bottom-0 left-0 p-4 md:p-6", children: categoryContent })
38987
38957
  ]
38988
38958
  }
38989
38959
  ),
@@ -58598,7 +58568,7 @@ function HeroEventRegistration({
58598
58568
  locationSublabel,
58599
58569
  locationSlot,
58600
58570
  background,
58601
- containerClassName = "mx-auto w-full max-w-full md:max-w-7xl relative z-10 px-6 sm:px-8 md:px-12 lg:px-18",
58571
+ containerClassName = "mx-auto w-full max-w-full md:max-w-7xl relative z-10 px-6",
58602
58572
  spacing = "py-16 md:py-40",
58603
58573
  pattern,
58604
58574
  patternOpacity,
@@ -505,7 +505,7 @@ function BreadcrumbList({ className, ...props }) {
505
505
  {
506
506
  "data-slot": "breadcrumb-list",
507
507
  className: cn(
508
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
508
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
509
509
  className
510
510
  ),
511
511
  ...props
@@ -532,7 +532,7 @@ function BreadcrumbLink({
532
532
  Comp,
533
533
  {
534
534
  "data-slot": "breadcrumb-link",
535
- className: cn("hover:text-foreground transition-colors", className),
535
+ className: cn("hover:underline transition-colors", className),
536
536
  ...props
537
537
  }
538
538
  );
@@ -545,7 +545,7 @@ function BreadcrumbPage({ className, ...props }) {
545
545
  role: "link",
546
546
  "aria-disabled": "true",
547
547
  "aria-current": "page",
548
- className: cn("text-foreground font-normal", className),
548
+ className: cn("font-normal", className),
549
549
  ...props
550
550
  }
551
551
  );
@@ -482,7 +482,7 @@ function BreadcrumbList({ className, ...props }) {
482
482
  {
483
483
  "data-slot": "breadcrumb-list",
484
484
  className: cn(
485
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
485
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
486
486
  className
487
487
  ),
488
488
  ...props
@@ -509,7 +509,7 @@ function BreadcrumbLink({
509
509
  Comp,
510
510
  {
511
511
  "data-slot": "breadcrumb-link",
512
- className: cn("hover:text-foreground transition-colors", className),
512
+ className: cn("hover:underline transition-colors", className),
513
513
  ...props
514
514
  }
515
515
  );
@@ -522,7 +522,7 @@ function BreadcrumbPage({ className, ...props }) {
522
522
  role: "link",
523
523
  "aria-disabled": "true",
524
524
  "aria-current": "page",
525
- className: cn("text-foreground font-normal", className),
525
+ className: cn("font-normal", className),
526
526
  ...props
527
527
  }
528
528
  );
@@ -593,7 +593,7 @@ function BreadcrumbList({ className, ...props }) {
593
593
  {
594
594
  "data-slot": "breadcrumb-list",
595
595
  className: cn(
596
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
596
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
597
597
  className
598
598
  ),
599
599
  ...props
@@ -620,7 +620,7 @@ function BreadcrumbLink({
620
620
  Comp,
621
621
  {
622
622
  "data-slot": "breadcrumb-link",
623
- className: cn("hover:text-foreground transition-colors", className),
623
+ className: cn("hover:underline transition-colors", className),
624
624
  ...props
625
625
  }
626
626
  );
@@ -569,7 +569,7 @@ function BreadcrumbList({ className, ...props }) {
569
569
  {
570
570
  "data-slot": "breadcrumb-list",
571
571
  className: cn(
572
- "text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5",
572
+ "flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
573
573
  className
574
574
  ),
575
575
  ...props
@@ -596,7 +596,7 @@ function BreadcrumbLink({
596
596
  Comp,
597
597
  {
598
598
  "data-slot": "breadcrumb-link",
599
- className: cn("hover:text-foreground transition-colors", className),
599
+ className: cn("hover:underline transition-colors", className),
600
600
  ...props
601
601
  }
602
602
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opensite/ui",
3
- "version": "2.6.7",
3
+ "version": "2.6.8",
4
4
  "description": "Foundational UI component library for OpenSite Semantic Site Builder with tree-shakable exports and abstract styling",
5
5
  "keywords": [
6
6
  "react",