@opensite/ui 0.8.4 → 0.8.5

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 (51) hide show
  1. package/dist/article-breadcrumb-social.cjs +57 -73
  2. package/dist/article-breadcrumb-social.d.cts +2 -24
  3. package/dist/article-breadcrumb-social.d.ts +2 -24
  4. package/dist/article-breadcrumb-social.js +57 -73
  5. package/dist/article-compact-toc.cjs +1 -1
  6. package/dist/article-compact-toc.js +1 -1
  7. package/dist/article-sidebar-sticky.cjs +73 -26
  8. package/dist/article-sidebar-sticky.js +73 -26
  9. package/dist/blog-horizontal-timeline.cjs +7 -4
  10. package/dist/blog-horizontal-timeline.js +7 -4
  11. package/dist/faq-split-hero.cjs +704 -0
  12. package/dist/faq-split-hero.d.cts +118 -0
  13. package/dist/faq-split-hero.d.ts +118 -0
  14. package/dist/faq-split-hero.js +682 -0
  15. package/dist/feature-badge-grid-six.cjs +1 -1
  16. package/dist/feature-badge-grid-six.js +1 -1
  17. package/dist/feature-card-grid-linked.cjs +92 -22
  18. package/dist/feature-card-grid-linked.js +92 -22
  19. package/dist/feature-carousel-progress.cjs +1 -1
  20. package/dist/feature-carousel-progress.js +1 -1
  21. package/dist/feature-checklist-image.cjs +88 -15
  22. package/dist/feature-checklist-image.js +88 -15
  23. package/dist/feature-checklist-three-column.cjs +1 -1
  24. package/dist/feature-checklist-three-column.js +1 -1
  25. package/dist/feature-icon-grid-accent.cjs +50 -8
  26. package/dist/feature-icon-grid-accent.js +50 -8
  27. package/dist/feature-icon-grid-bordered.cjs +84 -14
  28. package/dist/feature-icon-grid-bordered.js +84 -14
  29. package/dist/feature-icon-tabs-content.cjs +217 -84
  30. package/dist/feature-icon-tabs-content.js +217 -84
  31. package/dist/feature-image-overlay-badge.cjs +106 -33
  32. package/dist/feature-image-overlay-badge.js +106 -33
  33. package/dist/feature-numbered-cards.cjs +154 -35
  34. package/dist/feature-numbered-cards.js +154 -35
  35. package/dist/feature-showcase.cjs +67 -71
  36. package/dist/feature-showcase.d.cts +1 -5
  37. package/dist/feature-showcase.d.ts +1 -5
  38. package/dist/feature-showcase.js +68 -72
  39. package/dist/feature-split-image-reverse.cjs +90 -15
  40. package/dist/feature-split-image-reverse.js +90 -15
  41. package/dist/feature-split-image.cjs +87 -15
  42. package/dist/feature-split-image.js +87 -15
  43. package/dist/feature-stats-highlight.cjs +2 -2
  44. package/dist/feature-stats-highlight.js +2 -2
  45. package/dist/feature-tabbed-content-image.cjs +207 -72
  46. package/dist/feature-tabbed-content-image.js +207 -72
  47. package/dist/feature-three-column-values.cjs +107 -14
  48. package/dist/feature-three-column-values.js +107 -14
  49. package/dist/registry.cjs +1460 -461
  50. package/dist/registry.js +1460 -461
  51. package/package.json +1 -1
@@ -1081,7 +1081,6 @@ function ArticleBreadcrumbSocialComponent({
1081
1081
  authorClassName,
1082
1082
  heroImageClassName,
1083
1083
  tocClassName,
1084
- shareClassName,
1085
1084
  breadcrumbs,
1086
1085
  breadcrumbsSlot,
1087
1086
  currentPage,
@@ -1096,9 +1095,6 @@ function ArticleBreadcrumbSocialComponent({
1096
1095
  sections,
1097
1096
  tocSlot,
1098
1097
  renderSectionLink,
1099
- socialLinks: socialLinksProp,
1100
- shareUrls,
1101
- shareSlot,
1102
1098
  heroImageSrc,
1103
1099
  heroImageAlt,
1104
1100
  heroMediaSlot,
@@ -1107,35 +1103,11 @@ function ArticleBreadcrumbSocialComponent({
1107
1103
  enableBackToTop,
1108
1104
  optixFlowConfig,
1109
1105
  background,
1110
- spacing,
1106
+ spacing = "py-6 md:py-32",
1111
1107
  pattern,
1112
1108
  patternOpacity
1113
1109
  }) {
1114
1110
  const author = authorProp ?? (authorName ? { name: authorName, image: authorImage, role: authorRole } : void 0);
1115
- const platformLabels = {
1116
- twitter: "Twitter",
1117
- x: "X",
1118
- facebook: "Facebook",
1119
- linkedin: "LinkedIn",
1120
- instagram: "Instagram",
1121
- github: "GitHub"
1122
- };
1123
- const socialIconMap = {
1124
- twitter: "simple-icons/x",
1125
- // Twitter is now X
1126
- x: "simple-icons/x",
1127
- facebook: "simple-icons/facebook",
1128
- linkedin: "simple-icons/linkedin",
1129
- instagram: "simple-icons/instagram",
1130
- github: "simple-icons/github"
1131
- };
1132
- const socialLinks = socialLinksProp ?? (shareUrls ? Object.entries(shareUrls).filter(([, href]) => href).map(([platform, href]) => ({
1133
- platform,
1134
- href,
1135
- icon: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: socialIconMap[platform] || `simple-icons/${platform}`, size: 16 }),
1136
- "aria-label": `Share on ${platformLabels[platform] || platform.charAt(0).toUpperCase() + platform.slice(1)}`,
1137
- className: void 0
1138
- })) : []);
1139
1111
  const [activeSection, setActiveSection] = React6__namespace.useState(
1140
1112
  sections?.[0]?.id || ""
1141
1113
  );
@@ -1187,16 +1159,25 @@ function ArticleBreadcrumbSocialComponent({
1187
1159
  const authorContent = React6__namespace.useMemo(() => {
1188
1160
  if (authorSlot) return authorSlot;
1189
1161
  if (!author) return null;
1190
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-6 flex items-center gap-4 not-prose", authorClassName), children: [
1191
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "h-12 w-12", children: [
1192
- /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: author.image }),
1193
- /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: author.name?.charAt(0) || "A" })
1194
- ] }),
1195
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1196
- author.name && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: author.name }),
1197
- (author.role || publishDate || readTime) && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: [author.role, publishDate, readTime].filter(Boolean).join(" \xB7 ") })
1198
- ] })
1199
- ] });
1162
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1163
+ "div",
1164
+ {
1165
+ className: cn(
1166
+ "mt-6 flex items-center gap-4 not-prose",
1167
+ authorClassName
1168
+ ),
1169
+ children: [
1170
+ /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: "h-12 w-12", children: [
1171
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: author.image }),
1172
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: author.name?.charAt(0) || "A" })
1173
+ ] }),
1174
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1175
+ author.name && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: author.name }),
1176
+ (author.role || publishDate || readTime) && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm text-muted-foreground", children: [author.role, publishDate, readTime].filter(Boolean).join(" \xB7 ") })
1177
+ ] })
1178
+ ]
1179
+ }
1180
+ );
1200
1181
  }, [authorSlot, author, publishDate, readTime, authorClassName]);
1201
1182
  const heroMediaContent = React6__namespace.useMemo(() => {
1202
1183
  if (heroMediaSlot) return heroMediaSlot;
@@ -1206,11 +1187,20 @@ function ArticleBreadcrumbSocialComponent({
1206
1187
  {
1207
1188
  src: heroImageSrc,
1208
1189
  alt: heroImageAlt,
1209
- className: cn("my-8 aspect-video w-full rounded-lg object-cover", heroImageClassName),
1190
+ className: cn(
1191
+ "my-8 aspect-video w-full rounded-lg object-cover",
1192
+ heroImageClassName
1193
+ ),
1210
1194
  optixFlowConfig
1211
1195
  }
1212
1196
  );
1213
- }, [heroMediaSlot, heroImageSrc, heroImageAlt, heroImageClassName, optixFlowConfig]);
1197
+ }, [
1198
+ heroMediaSlot,
1199
+ heroImageSrc,
1200
+ heroImageAlt,
1201
+ heroImageClassName,
1202
+ optixFlowConfig
1203
+ ]);
1214
1204
  const tocContent = React6__namespace.useMemo(() => {
1215
1205
  if (tocSlot) return tocSlot;
1216
1206
  if (!sections || sections.length === 0) return null;
@@ -1236,26 +1226,6 @@ function ArticleBreadcrumbSocialComponent({
1236
1226
  }) })
1237
1227
  ] });
1238
1228
  }, [tocSlot, sections, activeSection, renderSectionLink, tocClassName]);
1239
- const shareButtonsContent = React6__namespace.useMemo(() => {
1240
- if (shareSlot) return shareSlot;
1241
- if (!socialLinks || socialLinks.length === 0) return null;
1242
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("rounded-lg border p-4", shareClassName), children: [
1243
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "mb-4 text-sm font-semibold", children: "Share this article" }),
1244
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-2", children: socialLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx(
1245
- Pressable,
1246
- {
1247
- href: link.href,
1248
- className: cn(
1249
- "flex h-9 w-9 items-center justify-center rounded-md border hover:bg-muted",
1250
- link.className
1251
- ),
1252
- "aria-label": link["aria-label"],
1253
- children: link.icon
1254
- },
1255
- index
1256
- )) })
1257
- ] });
1258
- }, [shareSlot, socialLinks, shareClassName]);
1259
1229
  return /* @__PURE__ */ jsxRuntime.jsxs(
1260
1230
  Section,
1261
1231
  {
@@ -1268,18 +1238,32 @@ function ArticleBreadcrumbSocialComponent({
1268
1238
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container", containerClassName), children: [
1269
1239
  breadcrumbsContent,
1270
1240
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-10 lg:grid-cols-[minmax(0,1fr)_280px]", children: [
1271
- children && /* @__PURE__ */ jsxRuntime.jsxs("article", { className: cn("prose max-w-none dark:prose-invert", articleClassName), children: [
1272
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
1273
- authorContent,
1274
- /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-8" }),
1275
- heroMediaContent,
1276
- children,
1277
- shareButtonsContent && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "not-prose mt-8 lg:hidden", children: shareButtonsContent })
1278
- ] }),
1279
- /* @__PURE__ */ jsxRuntime.jsx("aside", { className: cn("hidden lg:block", sidebarClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sticky top-8 space-y-6", children: [
1280
- tocContent,
1281
- shareButtonsContent
1282
- ] }) })
1241
+ children && /* @__PURE__ */ jsxRuntime.jsxs(
1242
+ "article",
1243
+ {
1244
+ className: cn(
1245
+ "prose max-w-none dark:prose-invert",
1246
+ articleClassName
1247
+ ),
1248
+ children: [
1249
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1250
+ "h1",
1251
+ {
1252
+ className: cn(
1253
+ "text-4xl font-bold tracking-tight md:text-5xl",
1254
+ titleClassName
1255
+ ),
1256
+ children: title
1257
+ }
1258
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
1259
+ authorContent,
1260
+ /* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-8" }),
1261
+ heroMediaContent,
1262
+ children
1263
+ ]
1264
+ }
1265
+ ),
1266
+ /* @__PURE__ */ jsxRuntime.jsx("aside", { className: cn("hidden lg:block", sidebarClassName), children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "sticky top-8 space-y-6", children: tocContent }) })
1283
1267
  ] })
1284
1268
  ] }),
1285
1269
  enableBackToTop && showBackToTop && /* @__PURE__ */ jsxRuntime.jsx(
@@ -2,7 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { f as SectionBackground, g as SectionSpacing } from './community-initiatives-Sm_ZSgyv.cjs';
4
4
  import { P as PatternName } from './pattern-background-a7gKHzHy.cjs';
5
- import { a as SocialLinkItem, O as OptixFlowConfig } from './blocks-Cohq4eio.cjs';
5
+ import { O as OptixFlowConfig } from './blocks-Cohq4eio.cjs';
6
6
  import 'class-variance-authority';
7
7
  import './button-variants-lRElsmTc.cjs';
8
8
  import 'class-variance-authority/types';
@@ -57,10 +57,6 @@ interface ArticleBreadcrumbSocialProps {
57
57
  * Additional CSS classes for the TOC container
58
58
  */
59
59
  tocClassName?: string;
60
- /**
61
- * Additional CSS classes for the share buttons container
62
- */
63
- shareClassName?: string;
64
60
  /**
65
61
  * Breadcrumb navigation items
66
62
  */
@@ -120,24 +116,6 @@ interface ArticleBreadcrumbSocialProps {
120
116
  * Render callback for section links (overrides default rendering)
121
117
  */
122
118
  renderSectionLink?: (section: ArticleBreadcrumbSection, isActive: boolean) => React.ReactNode;
123
- /**
124
- * Social share links
125
- */
126
- socialLinks?: SocialLinkItem[];
127
- /**
128
- * @deprecated Use socialLinks instead
129
- * Share URLs object (backward compatibility)
130
- */
131
- shareUrls?: {
132
- twitter?: string;
133
- facebook?: string;
134
- linkedin?: string;
135
- instagram?: string;
136
- };
137
- /**
138
- * Custom slot for rendering share buttons (overrides socialLinks)
139
- */
140
- shareSlot?: React.ReactNode;
141
119
  /**
142
120
  * Hero image source URL
143
121
  */
@@ -183,6 +161,6 @@ interface ArticleBreadcrumbSocialProps {
183
161
  */
184
162
  patternOpacity?: number;
185
163
  }
186
- declare function ArticleBreadcrumbSocialComponent({ className, containerClassName, breadcrumbClassName, articleClassName, sidebarClassName, titleClassName, authorClassName, heroImageClassName, tocClassName, shareClassName, breadcrumbs, breadcrumbsSlot, currentPage, title, author: authorProp, authorName, authorImage, authorRole, authorSlot, publishDate, readTime, sections, tocSlot, renderSectionLink, socialLinks: socialLinksProp, shareUrls, shareSlot, heroImageSrc, heroImageAlt, heroMediaSlot, children, enableTocTracking, enableBackToTop, optixFlowConfig, background, spacing, pattern, patternOpacity, }: ArticleBreadcrumbSocialProps): react_jsx_runtime.JSX.Element;
164
+ declare function ArticleBreadcrumbSocialComponent({ className, containerClassName, breadcrumbClassName, articleClassName, sidebarClassName, titleClassName, authorClassName, heroImageClassName, tocClassName, breadcrumbs, breadcrumbsSlot, currentPage, title, author: authorProp, authorName, authorImage, authorRole, authorSlot, publishDate, readTime, sections, tocSlot, renderSectionLink, heroImageSrc, heroImageAlt, heroMediaSlot, children, enableTocTracking, enableBackToTop, optixFlowConfig, background, spacing, pattern, patternOpacity, }: ArticleBreadcrumbSocialProps): react_jsx_runtime.JSX.Element;
187
165
 
188
166
  export { type ArticleBreadcrumbSection, ArticleBreadcrumbSocialComponent as ArticleBreadcrumbSocial, type ArticleBreadcrumbSocialProps };
@@ -2,7 +2,7 @@ import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import { f as SectionBackground, g as SectionSpacing } from './community-initiatives-BeWIIjA4.js';
4
4
  import { P as PatternName } from './pattern-background-a7gKHzHy.js';
5
- import { a as SocialLinkItem, O as OptixFlowConfig } from './blocks-k17uluAz.js';
5
+ import { O as OptixFlowConfig } from './blocks-k17uluAz.js';
6
6
  import 'class-variance-authority';
7
7
  import './button-variants-lRElsmTc.js';
8
8
  import 'class-variance-authority/types';
@@ -57,10 +57,6 @@ interface ArticleBreadcrumbSocialProps {
57
57
  * Additional CSS classes for the TOC container
58
58
  */
59
59
  tocClassName?: string;
60
- /**
61
- * Additional CSS classes for the share buttons container
62
- */
63
- shareClassName?: string;
64
60
  /**
65
61
  * Breadcrumb navigation items
66
62
  */
@@ -120,24 +116,6 @@ interface ArticleBreadcrumbSocialProps {
120
116
  * Render callback for section links (overrides default rendering)
121
117
  */
122
118
  renderSectionLink?: (section: ArticleBreadcrumbSection, isActive: boolean) => React.ReactNode;
123
- /**
124
- * Social share links
125
- */
126
- socialLinks?: SocialLinkItem[];
127
- /**
128
- * @deprecated Use socialLinks instead
129
- * Share URLs object (backward compatibility)
130
- */
131
- shareUrls?: {
132
- twitter?: string;
133
- facebook?: string;
134
- linkedin?: string;
135
- instagram?: string;
136
- };
137
- /**
138
- * Custom slot for rendering share buttons (overrides socialLinks)
139
- */
140
- shareSlot?: React.ReactNode;
141
119
  /**
142
120
  * Hero image source URL
143
121
  */
@@ -183,6 +161,6 @@ interface ArticleBreadcrumbSocialProps {
183
161
  */
184
162
  patternOpacity?: number;
185
163
  }
186
- declare function ArticleBreadcrumbSocialComponent({ className, containerClassName, breadcrumbClassName, articleClassName, sidebarClassName, titleClassName, authorClassName, heroImageClassName, tocClassName, shareClassName, breadcrumbs, breadcrumbsSlot, currentPage, title, author: authorProp, authorName, authorImage, authorRole, authorSlot, publishDate, readTime, sections, tocSlot, renderSectionLink, socialLinks: socialLinksProp, shareUrls, shareSlot, heroImageSrc, heroImageAlt, heroMediaSlot, children, enableTocTracking, enableBackToTop, optixFlowConfig, background, spacing, pattern, patternOpacity, }: ArticleBreadcrumbSocialProps): react_jsx_runtime.JSX.Element;
164
+ declare function ArticleBreadcrumbSocialComponent({ className, containerClassName, breadcrumbClassName, articleClassName, sidebarClassName, titleClassName, authorClassName, heroImageClassName, tocClassName, breadcrumbs, breadcrumbsSlot, currentPage, title, author: authorProp, authorName, authorImage, authorRole, authorSlot, publishDate, readTime, sections, tocSlot, renderSectionLink, heroImageSrc, heroImageAlt, heroMediaSlot, children, enableTocTracking, enableBackToTop, optixFlowConfig, background, spacing, pattern, patternOpacity, }: ArticleBreadcrumbSocialProps): react_jsx_runtime.JSX.Element;
187
165
 
188
166
  export { type ArticleBreadcrumbSection, ArticleBreadcrumbSocialComponent as ArticleBreadcrumbSocial, type ArticleBreadcrumbSocialProps };
@@ -1058,7 +1058,6 @@ function ArticleBreadcrumbSocialComponent({
1058
1058
  authorClassName,
1059
1059
  heroImageClassName,
1060
1060
  tocClassName,
1061
- shareClassName,
1062
1061
  breadcrumbs,
1063
1062
  breadcrumbsSlot,
1064
1063
  currentPage,
@@ -1073,9 +1072,6 @@ function ArticleBreadcrumbSocialComponent({
1073
1072
  sections,
1074
1073
  tocSlot,
1075
1074
  renderSectionLink,
1076
- socialLinks: socialLinksProp,
1077
- shareUrls,
1078
- shareSlot,
1079
1075
  heroImageSrc,
1080
1076
  heroImageAlt,
1081
1077
  heroMediaSlot,
@@ -1084,35 +1080,11 @@ function ArticleBreadcrumbSocialComponent({
1084
1080
  enableBackToTop,
1085
1081
  optixFlowConfig,
1086
1082
  background,
1087
- spacing,
1083
+ spacing = "py-6 md:py-32",
1088
1084
  pattern,
1089
1085
  patternOpacity
1090
1086
  }) {
1091
1087
  const author = authorProp ?? (authorName ? { name: authorName, image: authorImage, role: authorRole } : void 0);
1092
- const platformLabels = {
1093
- twitter: "Twitter",
1094
- x: "X",
1095
- facebook: "Facebook",
1096
- linkedin: "LinkedIn",
1097
- instagram: "Instagram",
1098
- github: "GitHub"
1099
- };
1100
- const socialIconMap = {
1101
- twitter: "simple-icons/x",
1102
- // Twitter is now X
1103
- x: "simple-icons/x",
1104
- facebook: "simple-icons/facebook",
1105
- linkedin: "simple-icons/linkedin",
1106
- instagram: "simple-icons/instagram",
1107
- github: "simple-icons/github"
1108
- };
1109
- const socialLinks = socialLinksProp ?? (shareUrls ? Object.entries(shareUrls).filter(([, href]) => href).map(([platform, href]) => ({
1110
- platform,
1111
- href,
1112
- icon: /* @__PURE__ */ jsx(DynamicIcon, { name: socialIconMap[platform] || `simple-icons/${platform}`, size: 16 }),
1113
- "aria-label": `Share on ${platformLabels[platform] || platform.charAt(0).toUpperCase() + platform.slice(1)}`,
1114
- className: void 0
1115
- })) : []);
1116
1088
  const [activeSection, setActiveSection] = React6.useState(
1117
1089
  sections?.[0]?.id || ""
1118
1090
  );
@@ -1164,16 +1136,25 @@ function ArticleBreadcrumbSocialComponent({
1164
1136
  const authorContent = React6.useMemo(() => {
1165
1137
  if (authorSlot) return authorSlot;
1166
1138
  if (!author) return null;
1167
- return /* @__PURE__ */ jsxs("div", { className: cn("mt-6 flex items-center gap-4 not-prose", authorClassName), children: [
1168
- /* @__PURE__ */ jsxs(Avatar, { className: "h-12 w-12", children: [
1169
- /* @__PURE__ */ jsx(AvatarImage, { src: author.image }),
1170
- /* @__PURE__ */ jsx(AvatarFallback, { children: author.name?.charAt(0) || "A" })
1171
- ] }),
1172
- /* @__PURE__ */ jsxs("div", { children: [
1173
- author.name && /* @__PURE__ */ jsx("p", { className: "font-medium", children: author.name }),
1174
- (author.role || publishDate || readTime) && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: [author.role, publishDate, readTime].filter(Boolean).join(" \xB7 ") })
1175
- ] })
1176
- ] });
1139
+ return /* @__PURE__ */ jsxs(
1140
+ "div",
1141
+ {
1142
+ className: cn(
1143
+ "mt-6 flex items-center gap-4 not-prose",
1144
+ authorClassName
1145
+ ),
1146
+ children: [
1147
+ /* @__PURE__ */ jsxs(Avatar, { className: "h-12 w-12", children: [
1148
+ /* @__PURE__ */ jsx(AvatarImage, { src: author.image }),
1149
+ /* @__PURE__ */ jsx(AvatarFallback, { children: author.name?.charAt(0) || "A" })
1150
+ ] }),
1151
+ /* @__PURE__ */ jsxs("div", { children: [
1152
+ author.name && /* @__PURE__ */ jsx("p", { className: "font-medium", children: author.name }),
1153
+ (author.role || publishDate || readTime) && /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: [author.role, publishDate, readTime].filter(Boolean).join(" \xB7 ") })
1154
+ ] })
1155
+ ]
1156
+ }
1157
+ );
1177
1158
  }, [authorSlot, author, publishDate, readTime, authorClassName]);
1178
1159
  const heroMediaContent = React6.useMemo(() => {
1179
1160
  if (heroMediaSlot) return heroMediaSlot;
@@ -1183,11 +1164,20 @@ function ArticleBreadcrumbSocialComponent({
1183
1164
  {
1184
1165
  src: heroImageSrc,
1185
1166
  alt: heroImageAlt,
1186
- className: cn("my-8 aspect-video w-full rounded-lg object-cover", heroImageClassName),
1167
+ className: cn(
1168
+ "my-8 aspect-video w-full rounded-lg object-cover",
1169
+ heroImageClassName
1170
+ ),
1187
1171
  optixFlowConfig
1188
1172
  }
1189
1173
  );
1190
- }, [heroMediaSlot, heroImageSrc, heroImageAlt, heroImageClassName, optixFlowConfig]);
1174
+ }, [
1175
+ heroMediaSlot,
1176
+ heroImageSrc,
1177
+ heroImageAlt,
1178
+ heroImageClassName,
1179
+ optixFlowConfig
1180
+ ]);
1191
1181
  const tocContent = React6.useMemo(() => {
1192
1182
  if (tocSlot) return tocSlot;
1193
1183
  if (!sections || sections.length === 0) return null;
@@ -1213,26 +1203,6 @@ function ArticleBreadcrumbSocialComponent({
1213
1203
  }) })
1214
1204
  ] });
1215
1205
  }, [tocSlot, sections, activeSection, renderSectionLink, tocClassName]);
1216
- const shareButtonsContent = React6.useMemo(() => {
1217
- if (shareSlot) return shareSlot;
1218
- if (!socialLinks || socialLinks.length === 0) return null;
1219
- return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", shareClassName), children: [
1220
- /* @__PURE__ */ jsx("h3", { className: "mb-4 text-sm font-semibold", children: "Share this article" }),
1221
- /* @__PURE__ */ jsx("div", { className: "flex gap-2", children: socialLinks.map((link, index) => /* @__PURE__ */ jsx(
1222
- Pressable,
1223
- {
1224
- href: link.href,
1225
- className: cn(
1226
- "flex h-9 w-9 items-center justify-center rounded-md border hover:bg-muted",
1227
- link.className
1228
- ),
1229
- "aria-label": link["aria-label"],
1230
- children: link.icon
1231
- },
1232
- index
1233
- )) })
1234
- ] });
1235
- }, [shareSlot, socialLinks, shareClassName]);
1236
1206
  return /* @__PURE__ */ jsxs(
1237
1207
  Section,
1238
1208
  {
@@ -1245,18 +1215,32 @@ function ArticleBreadcrumbSocialComponent({
1245
1215
  /* @__PURE__ */ jsxs("div", { className: cn("container", containerClassName), children: [
1246
1216
  breadcrumbsContent,
1247
1217
  /* @__PURE__ */ jsxs("div", { className: "grid gap-10 lg:grid-cols-[minmax(0,1fr)_280px]", children: [
1248
- children && /* @__PURE__ */ jsxs("article", { className: cn("prose max-w-none dark:prose-invert", articleClassName), children: [
1249
- title && (typeof title === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
1250
- authorContent,
1251
- /* @__PURE__ */ jsx(Separator, { className: "my-8" }),
1252
- heroMediaContent,
1253
- children,
1254
- shareButtonsContent && /* @__PURE__ */ jsx("div", { className: "not-prose mt-8 lg:hidden", children: shareButtonsContent })
1255
- ] }),
1256
- /* @__PURE__ */ jsx("aside", { className: cn("hidden lg:block", sidebarClassName), children: /* @__PURE__ */ jsxs("div", { className: "sticky top-8 space-y-6", children: [
1257
- tocContent,
1258
- shareButtonsContent
1259
- ] }) })
1218
+ children && /* @__PURE__ */ jsxs(
1219
+ "article",
1220
+ {
1221
+ className: cn(
1222
+ "prose max-w-none dark:prose-invert",
1223
+ articleClassName
1224
+ ),
1225
+ children: [
1226
+ title && (typeof title === "string" ? /* @__PURE__ */ jsx(
1227
+ "h1",
1228
+ {
1229
+ className: cn(
1230
+ "text-4xl font-bold tracking-tight md:text-5xl",
1231
+ titleClassName
1232
+ ),
1233
+ children: title
1234
+ }
1235
+ ) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
1236
+ authorContent,
1237
+ /* @__PURE__ */ jsx(Separator, { className: "my-8" }),
1238
+ heroMediaContent,
1239
+ children
1240
+ ]
1241
+ }
1242
+ ),
1243
+ /* @__PURE__ */ jsx("aside", { className: cn("hidden lg:block", sidebarClassName), children: /* @__PURE__ */ jsx("div", { className: "sticky top-8 space-y-6", children: tocContent }) })
1260
1244
  ] })
1261
1245
  ] }),
1262
1246
  enableBackToTop && showBackToTop && /* @__PURE__ */ jsx(
@@ -1087,7 +1087,7 @@ function ArticleCompactTocComponent({
1087
1087
  enableTocTracking = true,
1088
1088
  optixFlowConfig,
1089
1089
  background,
1090
- spacing,
1090
+ spacing = "py-6 md:py-32",
1091
1091
  pattern,
1092
1092
  patternOpacity
1093
1093
  }) {
@@ -1064,7 +1064,7 @@ function ArticleCompactTocComponent({
1064
1064
  enableTocTracking = true,
1065
1065
  optixFlowConfig,
1066
1066
  background,
1067
- spacing,
1067
+ spacing = "py-6 md:py-32",
1068
1068
  pattern,
1069
1069
  patternOpacity
1070
1070
  }) {
@@ -1002,7 +1002,7 @@ function ArticleSidebarStickyComponent({
1002
1002
  children,
1003
1003
  optixFlowConfig,
1004
1004
  background,
1005
- spacing,
1005
+ spacing = "py-6 md:py-32",
1006
1006
  pattern,
1007
1007
  patternOpacity
1008
1008
  }) {
@@ -1013,7 +1013,10 @@ function ArticleSidebarStickyComponent({
1013
1013
  Pressable,
1014
1014
  {
1015
1015
  href: backHref,
1016
- className: cn("inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground", backLinkClassName),
1016
+ className: cn(
1017
+ "inline-flex items-center gap-2 text-sm text-muted-foreground hover:text-foreground",
1018
+ backLinkClassName
1019
+ ),
1017
1020
  children: [
1018
1021
  backIcon ?? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/chevron-left", size: 16 }),
1019
1022
  backText
@@ -1021,21 +1024,38 @@ function ArticleSidebarStickyComponent({
1021
1024
  }
1022
1025
  );
1023
1026
  }, [backLinkSlot, backHref, backText, backIcon, backLinkClassName]);
1024
- const renderAuthor = React__namespace.useCallback((isMobile = false) => {
1025
- if (authorSlot) return authorSlot;
1026
- if (!authorName) return null;
1027
- const avatarSize = isMobile ? "h-8 w-8" : "h-10 w-10";
1028
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
1029
- /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: avatarSize, children: [
1030
- /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: authorImage }),
1031
- /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: authorName.charAt(0) })
1032
- ] }),
1033
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1034
- authorHref ? /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: authorHref, className: "text-sm font-medium hover:underline", children: authorName }) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: authorName }),
1035
- publishDate && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: publishDate })
1036
- ] })
1037
- ] });
1038
- }, [authorSlot, authorName, authorImage, authorHref, publishDate, authorClassName]);
1027
+ const renderAuthor = React__namespace.useCallback(
1028
+ (isMobile = false) => {
1029
+ if (authorSlot) return authorSlot;
1030
+ if (!authorName) return null;
1031
+ const avatarSize = isMobile ? "h-8 w-8" : "h-10 w-10";
1032
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("flex items-center gap-3", authorClassName), children: [
1033
+ /* @__PURE__ */ jsxRuntime.jsxs(Avatar, { className: avatarSize, children: [
1034
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarImage, { src: authorImage }),
1035
+ /* @__PURE__ */ jsxRuntime.jsx(AvatarFallback, { children: authorName.charAt(0) })
1036
+ ] }),
1037
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1038
+ authorHref ? /* @__PURE__ */ jsxRuntime.jsx(
1039
+ Pressable,
1040
+ {
1041
+ href: authorHref,
1042
+ className: "text-sm font-medium hover:underline",
1043
+ children: authorName
1044
+ }
1045
+ ) : /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm font-medium", children: authorName }),
1046
+ publishDate && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs text-muted-foreground", children: publishDate })
1047
+ ] })
1048
+ ] });
1049
+ },
1050
+ [
1051
+ authorSlot,
1052
+ authorName,
1053
+ authorImage,
1054
+ authorHref,
1055
+ publishDate,
1056
+ authorClassName
1057
+ ]
1058
+ );
1039
1059
  const heroMediaContent = React__namespace.useMemo(() => {
1040
1060
  if (heroMediaSlot) return heroMediaSlot;
1041
1061
  if (!heroImageSrc) return null;
@@ -1044,11 +1064,20 @@ function ArticleSidebarStickyComponent({
1044
1064
  {
1045
1065
  src: heroImageSrc,
1046
1066
  alt: heroImageAlt,
1047
- className: cn("my-8 aspect-video w-full rounded-lg object-cover", heroImageClassName),
1067
+ className: cn(
1068
+ "my-8 aspect-video w-full rounded-lg object-cover",
1069
+ heroImageClassName
1070
+ ),
1048
1071
  optixFlowConfig
1049
1072
  }
1050
1073
  );
1051
- }, [heroMediaSlot, heroImageSrc, heroImageAlt, heroImageClassName, optixFlowConfig]);
1074
+ }, [
1075
+ heroMediaSlot,
1076
+ heroImageSrc,
1077
+ heroImageAlt,
1078
+ heroImageClassName,
1079
+ optixFlowConfig
1080
+ ]);
1052
1081
  return /* @__PURE__ */ jsxRuntime.jsx(
1053
1082
  Section,
1054
1083
  {
@@ -1062,13 +1091,31 @@ function ArticleSidebarStickyComponent({
1062
1091
  backLinkContent,
1063
1092
  /* @__PURE__ */ jsxRuntime.jsx("div", { className: "space-y-4", children: renderAuthor(false) })
1064
1093
  ] }) }),
1065
- /* @__PURE__ */ jsxRuntime.jsxs("article", { className: cn("prose max-w-none dark:prose-invert", articleClassName), children: [
1066
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-8 lg:hidden", children: backLinkContent }),
1067
- title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl", titleClassName), children: title }) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
1068
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "not-prose mt-4 lg:hidden", children: renderAuthor(true) }),
1069
- heroMediaContent,
1070
- children
1071
- ] })
1094
+ /* @__PURE__ */ jsxRuntime.jsxs(
1095
+ "article",
1096
+ {
1097
+ className: cn(
1098
+ "prose max-w-none dark:prose-invert",
1099
+ articleClassName
1100
+ ),
1101
+ children: [
1102
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-8 lg:hidden", children: backLinkContent }),
1103
+ title && (typeof title === "string" ? /* @__PURE__ */ jsxRuntime.jsx(
1104
+ "h1",
1105
+ {
1106
+ className: cn(
1107
+ "text-4xl font-bold tracking-tight md:text-5xl",
1108
+ titleClassName
1109
+ ),
1110
+ children: title
1111
+ }
1112
+ ) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: titleClassName, children: title })),
1113
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "not-prose mt-4 lg:hidden", children: renderAuthor(true) }),
1114
+ heroMediaContent,
1115
+ children
1116
+ ]
1117
+ }
1118
+ )
1072
1119
  ] }) })
1073
1120
  }
1074
1121
  );