@opensite/ui 2.6.6 → 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.
- package/dist/article-breadcrumb-social.cjs +10 -31
- package/dist/article-breadcrumb-social.d.cts +5 -1
- package/dist/article-breadcrumb-social.d.ts +5 -1
- package/dist/article-breadcrumb-social.js +10 -30
- package/dist/article-chapters-author.cjs +112 -74
- package/dist/article-chapters-author.d.cts +5 -1
- package/dist/article-chapters-author.d.ts +5 -1
- package/dist/article-chapters-author.js +112 -74
- package/dist/article-compact-toc.cjs +25 -51
- package/dist/article-compact-toc.d.cts +5 -1
- package/dist/article-compact-toc.d.ts +5 -1
- package/dist/article-compact-toc.js +25 -51
- package/dist/article-sidebar-sticky.cjs +2 -2
- package/dist/article-sidebar-sticky.js +2 -2
- package/dist/article-split-animated.cjs +10 -29
- package/dist/article-split-animated.d.cts +1 -11
- package/dist/article-split-animated.d.ts +1 -11
- package/dist/article-split-animated.js +10 -29
- package/dist/blog-filtered-results.cjs +2 -2
- package/dist/blog-filtered-results.js +2 -2
- package/dist/carousel-portfolio-hero.cjs +1 -1
- package/dist/carousel-portfolio-hero.js +1 -1
- package/dist/case-study-stats-metrics.cjs +3 -3
- package/dist/case-study-stats-metrics.js +3 -3
- package/dist/case-study-toc-social-sidebar.cjs +3 -3
- package/dist/case-study-toc-social-sidebar.js +3 -3
- package/dist/hero-event-registration.cjs +1 -1
- package/dist/hero-event-registration.js +1 -1
- package/dist/registry.cjs +54 -112
- package/dist/registry.js +54 -112
- package/dist/resource-detail-document-sidebar.cjs +3 -3
- package/dist/resource-detail-document-sidebar.js +3 -3
- package/dist/resource-list-hero-filter.cjs +2 -2
- package/dist/resource-list-hero-filter.js +2 -2
- package/package.json +1 -1
|
@@ -10,7 +10,6 @@ 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 SeparatorPrimitive = require('@radix-ui/react-separator');
|
|
14
13
|
|
|
15
14
|
function _interopNamespace(e) {
|
|
16
15
|
if (e && e.__esModule) return e;
|
|
@@ -32,7 +31,6 @@ function _interopNamespace(e) {
|
|
|
32
31
|
|
|
33
32
|
var React5__namespace = /*#__PURE__*/_interopNamespace(React5);
|
|
34
33
|
var AvatarPrimitive__namespace = /*#__PURE__*/_interopNamespace(AvatarPrimitive);
|
|
35
|
-
var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
|
|
36
34
|
|
|
37
35
|
// components/blocks/article/article-breadcrumb-social.tsx
|
|
38
36
|
function cn(...inputs) {
|
|
@@ -521,7 +519,7 @@ function BreadcrumbList({ className, ...props }) {
|
|
|
521
519
|
{
|
|
522
520
|
"data-slot": "breadcrumb-list",
|
|
523
521
|
className: cn(
|
|
524
|
-
"
|
|
522
|
+
"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
|
|
525
523
|
className
|
|
526
524
|
),
|
|
527
525
|
...props
|
|
@@ -548,7 +546,7 @@ function BreadcrumbLink({
|
|
|
548
546
|
Comp,
|
|
549
547
|
{
|
|
550
548
|
"data-slot": "breadcrumb-link",
|
|
551
|
-
className: cn("hover:
|
|
549
|
+
className: cn("hover:underline transition-colors", className),
|
|
552
550
|
...props
|
|
553
551
|
}
|
|
554
552
|
);
|
|
@@ -561,7 +559,7 @@ function BreadcrumbPage({ className, ...props }) {
|
|
|
561
559
|
role: "link",
|
|
562
560
|
"aria-disabled": "true",
|
|
563
561
|
"aria-current": "page",
|
|
564
|
-
className: cn("
|
|
562
|
+
className: cn("font-normal", className),
|
|
565
563
|
...props
|
|
566
564
|
}
|
|
567
565
|
);
|
|
@@ -583,26 +581,6 @@ function BreadcrumbSeparator({
|
|
|
583
581
|
}
|
|
584
582
|
);
|
|
585
583
|
}
|
|
586
|
-
function Separator({
|
|
587
|
-
className,
|
|
588
|
-
orientation = "horizontal",
|
|
589
|
-
decorative = true,
|
|
590
|
-
...props
|
|
591
|
-
}) {
|
|
592
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
593
|
-
SeparatorPrimitive__namespace.Root,
|
|
594
|
-
{
|
|
595
|
-
"data-slot": "separator",
|
|
596
|
-
decorative,
|
|
597
|
-
orientation,
|
|
598
|
-
className: cn(
|
|
599
|
-
"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
|
|
600
|
-
className
|
|
601
|
-
),
|
|
602
|
-
...props
|
|
603
|
-
}
|
|
604
|
-
);
|
|
605
|
-
}
|
|
606
584
|
var maxWidthStyles = {
|
|
607
585
|
sm: "max-w-screen-sm",
|
|
608
586
|
md: "max-w-screen-md",
|
|
@@ -1010,7 +988,8 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1010
988
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
1011
989
|
spacing = "hero",
|
|
1012
990
|
pattern,
|
|
1013
|
-
patternOpacity
|
|
991
|
+
patternOpacity,
|
|
992
|
+
patternClassName
|
|
1014
993
|
}) {
|
|
1015
994
|
const [activeSection, setActiveSection] = React5__namespace.useState(
|
|
1016
995
|
sections?.[0]?.id || ""
|
|
@@ -1077,7 +1056,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1077
1056
|
] }),
|
|
1078
1057
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1079
1058
|
author.name && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: author.name }),
|
|
1080
|
-
(author.role || publishDate || readTime) && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm
|
|
1059
|
+
(author.role || publishDate || readTime) && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm", children: [author.role, publishDate, readTime].filter(Boolean).join(" \xB7 ") })
|
|
1081
1060
|
] })
|
|
1082
1061
|
]
|
|
1083
1062
|
}
|
|
@@ -1121,7 +1100,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1121
1100
|
href: `#${section.id}`,
|
|
1122
1101
|
className: cn(
|
|
1123
1102
|
"block text-sm transition-colors",
|
|
1124
|
-
isActive ? "
|
|
1103
|
+
isActive ? "underline" : ""
|
|
1125
1104
|
),
|
|
1126
1105
|
children: section.title
|
|
1127
1106
|
},
|
|
@@ -1137,7 +1116,8 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1137
1116
|
spacing,
|
|
1138
1117
|
pattern,
|
|
1139
1118
|
patternOpacity,
|
|
1140
|
-
|
|
1119
|
+
patternClassName,
|
|
1120
|
+
className: cn(pattern && "overflow-visible", className),
|
|
1141
1121
|
containerClassName,
|
|
1142
1122
|
children: [
|
|
1143
1123
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
@@ -1162,7 +1142,6 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1162
1142
|
}
|
|
1163
1143
|
) : title),
|
|
1164
1144
|
authorContent,
|
|
1165
|
-
/* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-8" }),
|
|
1166
1145
|
heroMediaContent,
|
|
1167
1146
|
children
|
|
1168
1147
|
]
|
|
@@ -1175,7 +1154,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1175
1154
|
"button",
|
|
1176
1155
|
{
|
|
1177
1156
|
onClick: scrollToTop,
|
|
1178
|
-
className: "fixed bottom-8 right-8 flex h-10 w-10 items-center justify-center rounded-full
|
|
1157
|
+
className: "fixed bottom-8 right-8 flex h-10 w-10 items-center justify-center rounded-full shadow-lg transition-opacity hover:opacity-90",
|
|
1179
1158
|
"aria-label": "Back to top",
|
|
1180
1159
|
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up", size: 20 })
|
|
1181
1160
|
}
|
|
@@ -145,7 +145,11 @@ interface ArticleBreadcrumbSocialProps {
|
|
|
145
145
|
* Pattern opacity (0-1)
|
|
146
146
|
*/
|
|
147
147
|
patternOpacity?: number;
|
|
148
|
+
/**
|
|
149
|
+
* Additional CSS classes for the pattern overlay
|
|
150
|
+
*/
|
|
151
|
+
patternClassName?: string;
|
|
148
152
|
}
|
|
149
|
-
declare function ArticleBreadcrumbSocialComponent({ className, breadcrumbClassName, articleClassName, sidebarClassName, titleClassName, authorClassName, heroImageClassName, tocClassName, breadcrumbs, breadcrumbsSlot, currentPage, title, author, authorSlot, publishDate, readTime, sections, tocSlot, renderSectionLink, heroImageSrc, heroImageAlt, heroMediaSlot, children, enableTocTracking, enableBackToTop, optixFlowConfig, background, containerClassName, spacing, pattern, patternOpacity, }: ArticleBreadcrumbSocialProps): react_jsx_runtime.JSX.Element;
|
|
153
|
+
declare function ArticleBreadcrumbSocialComponent({ className, breadcrumbClassName, articleClassName, sidebarClassName, titleClassName, authorClassName, heroImageClassName, tocClassName, breadcrumbs, breadcrumbsSlot, currentPage, title, author, authorSlot, publishDate, readTime, sections, tocSlot, renderSectionLink, heroImageSrc, heroImageAlt, heroMediaSlot, children, enableTocTracking, enableBackToTop, optixFlowConfig, background, containerClassName, spacing, pattern, patternOpacity, patternClassName, }: ArticleBreadcrumbSocialProps): react_jsx_runtime.JSX.Element;
|
|
150
154
|
|
|
151
155
|
export { type ArticleBreadcrumbSection, ArticleBreadcrumbSocialComponent as ArticleBreadcrumbSocial, type ArticleBreadcrumbSocialProps };
|
|
@@ -145,7 +145,11 @@ interface ArticleBreadcrumbSocialProps {
|
|
|
145
145
|
* Pattern opacity (0-1)
|
|
146
146
|
*/
|
|
147
147
|
patternOpacity?: number;
|
|
148
|
+
/**
|
|
149
|
+
* Additional CSS classes for the pattern overlay
|
|
150
|
+
*/
|
|
151
|
+
patternClassName?: string;
|
|
148
152
|
}
|
|
149
|
-
declare function ArticleBreadcrumbSocialComponent({ className, breadcrumbClassName, articleClassName, sidebarClassName, titleClassName, authorClassName, heroImageClassName, tocClassName, breadcrumbs, breadcrumbsSlot, currentPage, title, author, authorSlot, publishDate, readTime, sections, tocSlot, renderSectionLink, heroImageSrc, heroImageAlt, heroMediaSlot, children, enableTocTracking, enableBackToTop, optixFlowConfig, background, containerClassName, spacing, pattern, patternOpacity, }: ArticleBreadcrumbSocialProps): react_jsx_runtime.JSX.Element;
|
|
153
|
+
declare function ArticleBreadcrumbSocialComponent({ className, breadcrumbClassName, articleClassName, sidebarClassName, titleClassName, authorClassName, heroImageClassName, tocClassName, breadcrumbs, breadcrumbsSlot, currentPage, title, author, authorSlot, publishDate, readTime, sections, tocSlot, renderSectionLink, heroImageSrc, heroImageAlt, heroMediaSlot, children, enableTocTracking, enableBackToTop, optixFlowConfig, background, containerClassName, spacing, pattern, patternOpacity, patternClassName, }: ArticleBreadcrumbSocialProps): react_jsx_runtime.JSX.Element;
|
|
150
154
|
|
|
151
155
|
export { type ArticleBreadcrumbSection, ArticleBreadcrumbSocialComponent as ArticleBreadcrumbSocial, type ArticleBreadcrumbSocialProps };
|
|
@@ -9,7 +9,6 @@ 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 * as SeparatorPrimitive from '@radix-ui/react-separator';
|
|
13
12
|
|
|
14
13
|
// components/blocks/article/article-breadcrumb-social.tsx
|
|
15
14
|
function cn(...inputs) {
|
|
@@ -498,7 +497,7 @@ function BreadcrumbList({ className, ...props }) {
|
|
|
498
497
|
{
|
|
499
498
|
"data-slot": "breadcrumb-list",
|
|
500
499
|
className: cn(
|
|
501
|
-
"
|
|
500
|
+
"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
|
|
502
501
|
className
|
|
503
502
|
),
|
|
504
503
|
...props
|
|
@@ -525,7 +524,7 @@ function BreadcrumbLink({
|
|
|
525
524
|
Comp,
|
|
526
525
|
{
|
|
527
526
|
"data-slot": "breadcrumb-link",
|
|
528
|
-
className: cn("hover:
|
|
527
|
+
className: cn("hover:underline transition-colors", className),
|
|
529
528
|
...props
|
|
530
529
|
}
|
|
531
530
|
);
|
|
@@ -538,7 +537,7 @@ function BreadcrumbPage({ className, ...props }) {
|
|
|
538
537
|
role: "link",
|
|
539
538
|
"aria-disabled": "true",
|
|
540
539
|
"aria-current": "page",
|
|
541
|
-
className: cn("
|
|
540
|
+
className: cn("font-normal", className),
|
|
542
541
|
...props
|
|
543
542
|
}
|
|
544
543
|
);
|
|
@@ -560,26 +559,6 @@ function BreadcrumbSeparator({
|
|
|
560
559
|
}
|
|
561
560
|
);
|
|
562
561
|
}
|
|
563
|
-
function Separator({
|
|
564
|
-
className,
|
|
565
|
-
orientation = "horizontal",
|
|
566
|
-
decorative = true,
|
|
567
|
-
...props
|
|
568
|
-
}) {
|
|
569
|
-
return /* @__PURE__ */ jsx(
|
|
570
|
-
SeparatorPrimitive.Root,
|
|
571
|
-
{
|
|
572
|
-
"data-slot": "separator",
|
|
573
|
-
decorative,
|
|
574
|
-
orientation,
|
|
575
|
-
className: cn(
|
|
576
|
-
"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
|
|
577
|
-
className
|
|
578
|
-
),
|
|
579
|
-
...props
|
|
580
|
-
}
|
|
581
|
-
);
|
|
582
|
-
}
|
|
583
562
|
var maxWidthStyles = {
|
|
584
563
|
sm: "max-w-screen-sm",
|
|
585
564
|
md: "max-w-screen-md",
|
|
@@ -987,7 +966,8 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
987
966
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
988
967
|
spacing = "hero",
|
|
989
968
|
pattern,
|
|
990
|
-
patternOpacity
|
|
969
|
+
patternOpacity,
|
|
970
|
+
patternClassName
|
|
991
971
|
}) {
|
|
992
972
|
const [activeSection, setActiveSection] = React5.useState(
|
|
993
973
|
sections?.[0]?.id || ""
|
|
@@ -1054,7 +1034,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1054
1034
|
] }),
|
|
1055
1035
|
/* @__PURE__ */ jsxs("div", { children: [
|
|
1056
1036
|
author.name && /* @__PURE__ */ jsx("p", { className: "font-medium", children: author.name }),
|
|
1057
|
-
(author.role || publishDate || readTime) && /* @__PURE__ */ jsx("p", { className: "text-sm
|
|
1037
|
+
(author.role || publishDate || readTime) && /* @__PURE__ */ jsx("p", { className: "text-sm", children: [author.role, publishDate, readTime].filter(Boolean).join(" \xB7 ") })
|
|
1058
1038
|
] })
|
|
1059
1039
|
]
|
|
1060
1040
|
}
|
|
@@ -1098,7 +1078,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1098
1078
|
href: `#${section.id}`,
|
|
1099
1079
|
className: cn(
|
|
1100
1080
|
"block text-sm transition-colors",
|
|
1101
|
-
isActive ? "
|
|
1081
|
+
isActive ? "underline" : ""
|
|
1102
1082
|
),
|
|
1103
1083
|
children: section.title
|
|
1104
1084
|
},
|
|
@@ -1114,7 +1094,8 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1114
1094
|
spacing,
|
|
1115
1095
|
pattern,
|
|
1116
1096
|
patternOpacity,
|
|
1117
|
-
|
|
1097
|
+
patternClassName,
|
|
1098
|
+
className: cn(pattern && "overflow-visible", className),
|
|
1118
1099
|
containerClassName,
|
|
1119
1100
|
children: [
|
|
1120
1101
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
@@ -1139,7 +1120,6 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1139
1120
|
}
|
|
1140
1121
|
) : title),
|
|
1141
1122
|
authorContent,
|
|
1142
|
-
/* @__PURE__ */ jsx(Separator, { className: "my-8" }),
|
|
1143
1123
|
heroMediaContent,
|
|
1144
1124
|
children
|
|
1145
1125
|
]
|
|
@@ -1152,7 +1132,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1152
1132
|
"button",
|
|
1153
1133
|
{
|
|
1154
1134
|
onClick: scrollToTop,
|
|
1155
|
-
className: "fixed bottom-8 right-8 flex h-10 w-10 items-center justify-center rounded-full
|
|
1135
|
+
className: "fixed bottom-8 right-8 flex h-10 w-10 items-center justify-center rounded-full shadow-lg transition-opacity hover:opacity-90",
|
|
1156
1136
|
"aria-label": "Back to top",
|
|
1157
1137
|
children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/arrow-up", size: 20 })
|
|
1158
1138
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
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,43 +30,13 @@ function _interopNamespace(e) {
|
|
|
29
30
|
return Object.freeze(n);
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
var
|
|
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
|
|
36
37
|
function cn(...inputs) {
|
|
37
38
|
return tailwindMerge.twMerge(clsx.clsx(inputs));
|
|
38
39
|
}
|
|
39
|
-
function getNestedCardBg(parentBg, variant = "muted", options) {
|
|
40
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
41
|
-
if (isDark) {
|
|
42
|
-
switch (variant) {
|
|
43
|
-
case "muted":
|
|
44
|
-
return "bg-background";
|
|
45
|
-
case "card":
|
|
46
|
-
return "bg-card";
|
|
47
|
-
case "accent":
|
|
48
|
-
return "bg-accent";
|
|
49
|
-
case "subtle":
|
|
50
|
-
return "bg-background/50";
|
|
51
|
-
}
|
|
52
|
-
} else {
|
|
53
|
-
switch (variant) {
|
|
54
|
-
case "muted":
|
|
55
|
-
return "bg-muted";
|
|
56
|
-
case "card":
|
|
57
|
-
return "bg-card";
|
|
58
|
-
case "accent":
|
|
59
|
-
return "bg-accent";
|
|
60
|
-
case "subtle":
|
|
61
|
-
return "bg-muted/50";
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
function getNestedCardTextColor(parentBg, options) {
|
|
66
|
-
const isDark = parentBg === "dark" || parentBg === "secondary" || parentBg === "primary";
|
|
67
|
-
return isDark ? "text-foreground" : "";
|
|
68
|
-
}
|
|
69
40
|
function isDarkBackground(bg) {
|
|
70
41
|
return bg === "dark" || bg === "gradient" || bg === "primary" || bg === "secondary";
|
|
71
42
|
}
|
|
@@ -148,7 +119,7 @@ function useNavigation({
|
|
|
148
119
|
href,
|
|
149
120
|
onClick
|
|
150
121
|
} = {}) {
|
|
151
|
-
const linkType =
|
|
122
|
+
const linkType = React6__namespace.useMemo(() => {
|
|
152
123
|
if (!href || href.trim() === "") {
|
|
153
124
|
return onClick ? "none" : "none";
|
|
154
125
|
}
|
|
@@ -169,7 +140,7 @@ function useNavigation({
|
|
|
169
140
|
return "internal";
|
|
170
141
|
}
|
|
171
142
|
}, [href, onClick]);
|
|
172
|
-
const normalizedHref =
|
|
143
|
+
const normalizedHref = React6__namespace.useMemo(() => {
|
|
173
144
|
if (!href || href.trim() === "") {
|
|
174
145
|
return void 0;
|
|
175
146
|
}
|
|
@@ -187,7 +158,7 @@ function useNavigation({
|
|
|
187
158
|
return trimmed;
|
|
188
159
|
}
|
|
189
160
|
}, [href, linkType]);
|
|
190
|
-
const target =
|
|
161
|
+
const target = React6__namespace.useMemo(() => {
|
|
191
162
|
switch (linkType) {
|
|
192
163
|
case "external":
|
|
193
164
|
return "_blank";
|
|
@@ -200,7 +171,7 @@ function useNavigation({
|
|
|
200
171
|
return void 0;
|
|
201
172
|
}
|
|
202
173
|
}, [linkType]);
|
|
203
|
-
const rel =
|
|
174
|
+
const rel = React6__namespace.useMemo(() => {
|
|
204
175
|
if (linkType === "external") {
|
|
205
176
|
return "noopener noreferrer";
|
|
206
177
|
}
|
|
@@ -209,7 +180,7 @@ function useNavigation({
|
|
|
209
180
|
const isExternal = linkType === "external";
|
|
210
181
|
const isInternal = linkType === "internal";
|
|
211
182
|
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
212
|
-
const handleClick =
|
|
183
|
+
const handleClick = React6__namespace.useCallback(
|
|
213
184
|
(event) => {
|
|
214
185
|
if (onClick) {
|
|
215
186
|
try {
|
|
@@ -393,7 +364,7 @@ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
|
|
|
393
364
|
size: "default"
|
|
394
365
|
}
|
|
395
366
|
});
|
|
396
|
-
var Pressable =
|
|
367
|
+
var Pressable = React6__namespace.forwardRef(
|
|
397
368
|
({
|
|
398
369
|
children,
|
|
399
370
|
className,
|
|
@@ -549,7 +520,7 @@ function BreadcrumbList({ className, ...props }) {
|
|
|
549
520
|
{
|
|
550
521
|
"data-slot": "breadcrumb-list",
|
|
551
522
|
className: cn(
|
|
552
|
-
"
|
|
523
|
+
"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5",
|
|
553
524
|
className
|
|
554
525
|
),
|
|
555
526
|
...props
|
|
@@ -576,7 +547,7 @@ function BreadcrumbLink({
|
|
|
576
547
|
Comp,
|
|
577
548
|
{
|
|
578
549
|
"data-slot": "breadcrumb-link",
|
|
579
|
-
className: cn("hover:
|
|
550
|
+
className: cn("hover:underline transition-colors", className),
|
|
580
551
|
...props
|
|
581
552
|
}
|
|
582
553
|
);
|
|
@@ -589,7 +560,7 @@ function BreadcrumbPage({ className, ...props }) {
|
|
|
589
560
|
role: "link",
|
|
590
561
|
"aria-disabled": "true",
|
|
591
562
|
"aria-current": "page",
|
|
592
|
-
className: cn("
|
|
563
|
+
className: cn("font-normal", className),
|
|
593
564
|
...props
|
|
594
565
|
}
|
|
595
566
|
);
|
|
@@ -620,7 +591,7 @@ var maxWidthStyles = {
|
|
|
620
591
|
"4xl": "max-w-[1536px]",
|
|
621
592
|
full: "max-w-full"
|
|
622
593
|
};
|
|
623
|
-
var Container =
|
|
594
|
+
var Container = React6__namespace.default.forwardRef(
|
|
624
595
|
({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
|
|
625
596
|
const Component = as;
|
|
626
597
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -926,7 +897,7 @@ var spacingStyles = {
|
|
|
926
897
|
};
|
|
927
898
|
var predefinedSpacings = ["none", "sm", "md", "lg", "xl", "hero"];
|
|
928
899
|
var isPredefinedSpacing = (spacing) => predefinedSpacings.includes(spacing);
|
|
929
|
-
var Section =
|
|
900
|
+
var Section = React6__namespace.default.forwardRef(
|
|
930
901
|
({
|
|
931
902
|
id,
|
|
932
903
|
title,
|
|
@@ -987,6 +958,87 @@ var Section = React5__namespace.default.forwardRef(
|
|
|
987
958
|
}
|
|
988
959
|
);
|
|
989
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";
|
|
990
1042
|
function ArticleChaptersAuthorComponent({
|
|
991
1043
|
className,
|
|
992
1044
|
breadcrumbClassName,
|
|
@@ -1022,13 +1074,14 @@ function ArticleChaptersAuthorComponent({
|
|
|
1022
1074
|
background,
|
|
1023
1075
|
containerClassName = "px-6 sm:px-6 md:px-8 lg:px-8",
|
|
1024
1076
|
spacing = "hero",
|
|
1077
|
+
patternClassName,
|
|
1025
1078
|
pattern,
|
|
1026
1079
|
patternOpacity
|
|
1027
1080
|
}) {
|
|
1028
|
-
const [activeChapter, setActiveChapter] =
|
|
1081
|
+
const [activeChapter, setActiveChapter] = React6__namespace.useState(
|
|
1029
1082
|
chapters?.[0]?.id || ""
|
|
1030
1083
|
);
|
|
1031
|
-
|
|
1084
|
+
React6__namespace.useEffect(() => {
|
|
1032
1085
|
if (!enableChapterTracking || !chapters || chapters.length === 0) return;
|
|
1033
1086
|
const observer = new IntersectionObserver(
|
|
1034
1087
|
(entries) => {
|
|
@@ -1046,12 +1099,12 @@ function ArticleChaptersAuthorComponent({
|
|
|
1046
1099
|
});
|
|
1047
1100
|
return () => observer.disconnect();
|
|
1048
1101
|
}, [chapters, enableChapterTracking]);
|
|
1049
|
-
const breadcrumbsContent =
|
|
1102
|
+
const breadcrumbsContent = React6__namespace.useMemo(() => {
|
|
1050
1103
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
1051
1104
|
if (!breadcrumbs || breadcrumbs.length === 0) return null;
|
|
1052
1105
|
return /* @__PURE__ */ jsxRuntime.jsx(Breadcrumb, { className: cn("mb-8 md:mb-20", breadcrumbClassName), children: /* @__PURE__ */ jsxRuntime.jsxs(BreadcrumbList, { children: [
|
|
1053
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 }) }) }) }),
|
|
1054
|
-
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1107
|
+
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxRuntime.jsxs(React6__namespace.Fragment, { children: [
|
|
1055
1108
|
/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbSeparator, {}),
|
|
1056
1109
|
/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
|
|
1057
1110
|
] }, index)),
|
|
@@ -1059,7 +1112,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
1059
1112
|
/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbPage, { children: typeof currentPage === "string" ? currentPage : currentPage }) })
|
|
1060
1113
|
] }) });
|
|
1061
1114
|
}, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
|
|
1062
|
-
const chaptersNavContent =
|
|
1115
|
+
const chaptersNavContent = React6__namespace.useMemo(() => {
|
|
1063
1116
|
if (chaptersSlot) return chaptersSlot;
|
|
1064
1117
|
if (!chapters || chapters.length === 0) return null;
|
|
1065
1118
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("rounded-lg border p-4", chaptersClassName), children: [
|
|
@@ -1067,7 +1120,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
1067
1120
|
/* @__PURE__ */ jsxRuntime.jsx("nav", { className: "space-y-2", children: chapters.map((chapter) => {
|
|
1068
1121
|
const isActive = activeChapter === chapter.id;
|
|
1069
1122
|
if (renderChapterLink) {
|
|
1070
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1123
|
+
return /* @__PURE__ */ jsxRuntime.jsx(React6__namespace.Fragment, { children: renderChapterLink(chapter, isActive) }, chapter.id);
|
|
1071
1124
|
}
|
|
1072
1125
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1073
1126
|
Pressable,
|
|
@@ -1075,16 +1128,14 @@ function ArticleChaptersAuthorComponent({
|
|
|
1075
1128
|
href: `#${chapter.id}`,
|
|
1076
1129
|
className: cn(
|
|
1077
1130
|
"flex items-center gap-3 text-sm transition-colors",
|
|
1078
|
-
isActive ? "
|
|
1131
|
+
isActive ? "underline" : ""
|
|
1079
1132
|
),
|
|
1080
1133
|
children: [
|
|
1081
1134
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1082
1135
|
"span",
|
|
1083
1136
|
{
|
|
1084
1137
|
className: cn(
|
|
1085
|
-
"flex h-6 w-6 items-center justify-center rounded-full text-xs"
|
|
1086
|
-
getNestedCardBg(background),
|
|
1087
|
-
getNestedCardTextColor(background)
|
|
1138
|
+
"flex h-6 w-6 items-center justify-center rounded-full text-xs"
|
|
1088
1139
|
),
|
|
1089
1140
|
children: chapter.number
|
|
1090
1141
|
}
|
|
@@ -1103,26 +1154,14 @@ function ArticleChaptersAuthorComponent({
|
|
|
1103
1154
|
renderChapterLink,
|
|
1104
1155
|
chaptersClassName
|
|
1105
1156
|
]);
|
|
1106
|
-
const authorCardContent =
|
|
1157
|
+
const authorCardContent = React6__namespace.useMemo(() => {
|
|
1107
1158
|
if (authorSlot) return authorSlot;
|
|
1108
1159
|
if (!author) return null;
|
|
1109
1160
|
let socialLinksContent = null;
|
|
1110
1161
|
if (author.socialLinks) {
|
|
1111
1162
|
if (Array.isArray(author.socialLinks)) {
|
|
1112
1163
|
if (author.socialLinks.length > 0) {
|
|
1113
|
-
socialLinksContent = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4 flex gap-2", children: author.socialLinks.map((link, index) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
1114
|
-
Pressable,
|
|
1115
|
-
{
|
|
1116
|
-
href: link.href,
|
|
1117
|
-
className: cn(
|
|
1118
|
-
"flex h-8 w-8 items-center justify-center rounded-md border",
|
|
1119
|
-
link.className
|
|
1120
|
-
),
|
|
1121
|
-
"aria-label": link["aria-label"],
|
|
1122
|
-
children: link.icon ?? /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: `lucide/${link.platform}`, size: 14 })
|
|
1123
|
-
},
|
|
1124
|
-
index
|
|
1125
|
-
)) });
|
|
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)) });
|
|
1126
1165
|
}
|
|
1127
1166
|
} else {
|
|
1128
1167
|
const links = author.socialLinks;
|
|
@@ -1157,14 +1196,14 @@ function ArticleChaptersAuthorComponent({
|
|
|
1157
1196
|
] }),
|
|
1158
1197
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
1159
1198
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-medium", children: author.name }),
|
|
1160
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs
|
|
1199
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-xs", children: author.role })
|
|
1161
1200
|
] })
|
|
1162
1201
|
] }),
|
|
1163
|
-
author.bio && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-sm
|
|
1202
|
+
author.bio && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-sm", children: author.bio }),
|
|
1164
1203
|
socialLinksContent
|
|
1165
1204
|
] });
|
|
1166
1205
|
}, [authorSlot, author, authorClassName]);
|
|
1167
|
-
const heroMediaContent =
|
|
1206
|
+
const heroMediaContent = React6__namespace.useMemo(() => {
|
|
1168
1207
|
if (heroMediaSlot) return heroMediaSlot;
|
|
1169
1208
|
if (!heroImageSrc) return null;
|
|
1170
1209
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1186,7 +1225,7 @@ function ArticleChaptersAuthorComponent({
|
|
|
1186
1225
|
heroImageClassName,
|
|
1187
1226
|
optixFlowConfig
|
|
1188
1227
|
]);
|
|
1189
|
-
const conclusionContent =
|
|
1228
|
+
const conclusionContent = React6__namespace.useMemo(() => {
|
|
1190
1229
|
if (conclusionSlot) return conclusionSlot;
|
|
1191
1230
|
if (!conclusionTitle && !conclusionDescription && (!conclusionActions || conclusionActions.length === 0))
|
|
1192
1231
|
return null;
|
|
@@ -1195,8 +1234,6 @@ function ArticleChaptersAuthorComponent({
|
|
|
1195
1234
|
{
|
|
1196
1235
|
className: cn(
|
|
1197
1236
|
"mt-12 rounded-lg border p-6 not-prose",
|
|
1198
|
-
getNestedCardBg(background, "subtle"),
|
|
1199
|
-
getNestedCardTextColor(background),
|
|
1200
1237
|
conclusionClassName
|
|
1201
1238
|
),
|
|
1202
1239
|
children: [
|
|
@@ -1243,7 +1280,8 @@ function ArticleChaptersAuthorComponent({
|
|
|
1243
1280
|
spacing,
|
|
1244
1281
|
pattern,
|
|
1245
1282
|
patternOpacity,
|
|
1246
|
-
|
|
1283
|
+
patternClassName,
|
|
1284
|
+
className: cn(pattern && "overflow-visible", className),
|
|
1247
1285
|
containerClassName,
|
|
1248
1286
|
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative", children: [
|
|
1249
1287
|
breadcrumbsContent,
|
|
@@ -174,7 +174,11 @@ interface ArticleChaptersAuthorProps {
|
|
|
174
174
|
* Pattern opacity (0-1)
|
|
175
175
|
*/
|
|
176
176
|
patternOpacity?: number;
|
|
177
|
+
/**
|
|
178
|
+
* Additional CSS classes for the pattern overlay
|
|
179
|
+
*/
|
|
180
|
+
patternClassName?: string;
|
|
177
181
|
}
|
|
178
|
-
declare function ArticleChaptersAuthorComponent({ className, breadcrumbClassName, headerClassName, titleClassName, subtitleClassName, sidebarClassName, articleClassName, chaptersClassName, authorClassName, conclusionClassName, heroImageClassName, breadcrumbs, breadcrumbsSlot, currentPage, title, subtitle, chapters, chaptersSlot, renderChapterLink, author, authorSlot, heroImageSrc, heroImageAlt, heroMediaSlot, conclusionTitle, conclusionDescription, conclusionActions, conclusionSlot, children, enableChapterTracking, optixFlowConfig, background, containerClassName, spacing, pattern, patternOpacity, }: ArticleChaptersAuthorProps): react_jsx_runtime.JSX.Element;
|
|
182
|
+
declare function ArticleChaptersAuthorComponent({ className, breadcrumbClassName, headerClassName, titleClassName, subtitleClassName, sidebarClassName, articleClassName, chaptersClassName, authorClassName, conclusionClassName, heroImageClassName, breadcrumbs, breadcrumbsSlot, currentPage, title, subtitle, chapters, chaptersSlot, renderChapterLink, author, authorSlot, heroImageSrc, heroImageAlt, heroMediaSlot, conclusionTitle, conclusionDescription, conclusionActions, conclusionSlot, children, enableChapterTracking, optixFlowConfig, background, containerClassName, spacing, patternClassName, pattern, patternOpacity, }: ArticleChaptersAuthorProps): react_jsx_runtime.JSX.Element;
|
|
179
183
|
|
|
180
184
|
export { type ArticleAuthor, type ArticleChapter, ArticleChaptersAuthorComponent as ArticleChaptersAuthor, type ArticleChaptersAuthorProps };
|