@opensite/ui 0.6.3 → 0.6.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.
- package/dist/about-startup-team.cjs +2 -2
- package/dist/about-startup-team.js +2 -2
- package/dist/article-breadcrumb-social.cjs +434 -215
- package/dist/article-breadcrumb-social.d.cts +19 -1
- package/dist/article-breadcrumb-social.d.ts +19 -1
- package/dist/article-breadcrumb-social.js +434 -214
- package/dist/article-chapters-author.cjs +422 -204
- package/dist/article-chapters-author.d.cts +19 -1
- package/dist/article-chapters-author.d.ts +19 -1
- package/dist/article-chapters-author.js +422 -203
- package/dist/article-compact-toc.cjs +429 -73
- package/dist/article-compact-toc.d.cts +19 -1
- package/dist/article-compact-toc.d.ts +19 -1
- package/dist/article-compact-toc.js +430 -73
- package/dist/article-hero-prose.cjs +394 -347
- package/dist/article-hero-prose.d.cts +19 -1
- package/dist/article-hero-prose.d.ts +19 -1
- package/dist/article-hero-prose.js +396 -348
- package/dist/article-sidebar-sticky.cjs +398 -152
- package/dist/article-sidebar-sticky.d.cts +19 -1
- package/dist/article-sidebar-sticky.d.ts +19 -1
- package/dist/article-sidebar-sticky.js +400 -153
- package/dist/article-split-animated.cjs +422 -35
- package/dist/article-split-animated.d.cts +19 -1
- package/dist/article-split-animated.d.ts +19 -1
- package/dist/article-split-animated.js +423 -35
- package/dist/article-toc-sidebar.cjs +417 -356
- package/dist/article-toc-sidebar.d.cts +19 -1
- package/dist/article-toc-sidebar.d.ts +19 -1
- package/dist/article-toc-sidebar.js +417 -355
- package/dist/blog-cards-read-time.cjs +66 -27
- package/dist/blog-cards-read-time.js +66 -27
- package/dist/blog-cards-tagline-cta.cjs +64 -14
- package/dist/blog-cards-tagline-cta.js +64 -14
- package/dist/blog-carousel-apple.cjs +1255 -0
- package/dist/blog-carousel-apple.d.cts +113 -0
- package/dist/blog-carousel-apple.d.ts +113 -0
- package/dist/blog-carousel-apple.js +1234 -0
- package/dist/blog-category-overlay.cjs +77 -15
- package/dist/blog-category-overlay.js +77 -15
- package/dist/blog-featured-popular.cjs +72 -14
- package/dist/blog-featured-popular.js +72 -14
- package/dist/blog-filtered-results.cjs +122 -39
- package/dist/blog-filtered-results.js +122 -39
- package/dist/blog-grid-author-cards.cjs +40 -6
- package/dist/blog-grid-author-cards.js +40 -6
- package/dist/blog-grid-nine-posts.cjs +40 -6
- package/dist/blog-grid-nine-posts.js +40 -6
- package/dist/blog-horizontal-cards.cjs +34 -6
- package/dist/blog-horizontal-cards.js +34 -6
- package/dist/blog-horizontal-timeline.cjs +41 -12
- package/dist/blog-horizontal-timeline.js +41 -12
- package/dist/blog-masonry-featured.cjs +96 -52
- package/dist/blog-masonry-featured.js +96 -52
- package/dist/blog-related-articles.cjs +47 -9
- package/dist/blog-related-articles.js +47 -9
- package/dist/blog-tech-insights.cjs +78 -14
- package/dist/blog-tech-insights.js +78 -14
- package/dist/registry.cjs +1036 -687
- package/dist/registry.js +1036 -687
- package/package.json +1 -1
|
@@ -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');
|
|
@@ -29,7 +29,7 @@ function _interopNamespace(e) {
|
|
|
29
29
|
return Object.freeze(n);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
var
|
|
32
|
+
var React6__namespace = /*#__PURE__*/_interopNamespace(React6);
|
|
33
33
|
var AvatarPrimitive__namespace = /*#__PURE__*/_interopNamespace(AvatarPrimitive);
|
|
34
34
|
var SeparatorPrimitive__namespace = /*#__PURE__*/_interopNamespace(SeparatorPrimitive);
|
|
35
35
|
|
|
@@ -112,7 +112,7 @@ function useNavigation({
|
|
|
112
112
|
href,
|
|
113
113
|
onClick
|
|
114
114
|
} = {}) {
|
|
115
|
-
const linkType =
|
|
115
|
+
const linkType = React6__namespace.useMemo(() => {
|
|
116
116
|
if (!href || href.trim() === "") {
|
|
117
117
|
return onClick ? "none" : "none";
|
|
118
118
|
}
|
|
@@ -133,7 +133,7 @@ function useNavigation({
|
|
|
133
133
|
return "internal";
|
|
134
134
|
}
|
|
135
135
|
}, [href, onClick]);
|
|
136
|
-
const normalizedHref =
|
|
136
|
+
const normalizedHref = React6__namespace.useMemo(() => {
|
|
137
137
|
if (!href || href.trim() === "") {
|
|
138
138
|
return void 0;
|
|
139
139
|
}
|
|
@@ -151,7 +151,7 @@ function useNavigation({
|
|
|
151
151
|
return trimmed;
|
|
152
152
|
}
|
|
153
153
|
}, [href, linkType]);
|
|
154
|
-
const target =
|
|
154
|
+
const target = React6__namespace.useMemo(() => {
|
|
155
155
|
switch (linkType) {
|
|
156
156
|
case "external":
|
|
157
157
|
return "_blank";
|
|
@@ -164,7 +164,7 @@ function useNavigation({
|
|
|
164
164
|
return void 0;
|
|
165
165
|
}
|
|
166
166
|
}, [linkType]);
|
|
167
|
-
const rel =
|
|
167
|
+
const rel = React6__namespace.useMemo(() => {
|
|
168
168
|
if (linkType === "external") {
|
|
169
169
|
return "noopener noreferrer";
|
|
170
170
|
}
|
|
@@ -173,7 +173,7 @@ function useNavigation({
|
|
|
173
173
|
const isExternal = linkType === "external";
|
|
174
174
|
const isInternal = linkType === "internal";
|
|
175
175
|
const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
|
|
176
|
-
const handleClick =
|
|
176
|
+
const handleClick = React6__namespace.useCallback(
|
|
177
177
|
(event) => {
|
|
178
178
|
if (onClick) {
|
|
179
179
|
try {
|
|
@@ -357,7 +357,7 @@ var buttonVariants = classVarianceAuthority.cva(baseStyles, {
|
|
|
357
357
|
size: "default"
|
|
358
358
|
}
|
|
359
359
|
});
|
|
360
|
-
var Pressable =
|
|
360
|
+
var Pressable = React6__namespace.forwardRef(
|
|
361
361
|
({
|
|
362
362
|
children,
|
|
363
363
|
className,
|
|
@@ -463,10 +463,10 @@ function DynamicIcon({
|
|
|
463
463
|
className,
|
|
464
464
|
alt
|
|
465
465
|
}) {
|
|
466
|
-
const [svgContent, setSvgContent] =
|
|
467
|
-
const [isLoading, setIsLoading] =
|
|
468
|
-
const [error, setError] =
|
|
469
|
-
const { url, iconName } =
|
|
466
|
+
const [svgContent, setSvgContent] = React6__namespace.useState(null);
|
|
467
|
+
const [isLoading, setIsLoading] = React6__namespace.useState(true);
|
|
468
|
+
const [error, setError] = React6__namespace.useState(null);
|
|
469
|
+
const { url, iconName } = React6__namespace.useMemo(() => {
|
|
470
470
|
const separator = name.includes("/") ? "/" : ":";
|
|
471
471
|
const [prefix, iconName2] = name.split(separator);
|
|
472
472
|
const baseUrl = `https://icons.opensite.ai/api/icon/${prefix}/${iconName2}?format=svg&width=${size}&height=${size}`;
|
|
@@ -475,7 +475,7 @@ function DynamicIcon({
|
|
|
475
475
|
iconName: iconName2
|
|
476
476
|
};
|
|
477
477
|
}, [name, size]);
|
|
478
|
-
|
|
478
|
+
React6__namespace.useEffect(() => {
|
|
479
479
|
let isMounted = true;
|
|
480
480
|
const fetchSvg = async () => {
|
|
481
481
|
const cached = svgCache.get(url);
|
|
@@ -696,174 +696,379 @@ function Separator({
|
|
|
696
696
|
}
|
|
697
697
|
);
|
|
698
698
|
}
|
|
699
|
+
var maxWidthStyles = {
|
|
700
|
+
sm: "max-w-screen-sm",
|
|
701
|
+
md: "max-w-screen-md",
|
|
702
|
+
lg: "max-w-screen-lg",
|
|
703
|
+
xl: "max-w-7xl",
|
|
704
|
+
"2xl": "max-w-screen-2xl",
|
|
705
|
+
"4xl": "max-w-[1536px]",
|
|
706
|
+
full: "max-w-full"
|
|
707
|
+
};
|
|
708
|
+
var Container = React6__namespace.default.forwardRef(
|
|
709
|
+
({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
|
|
710
|
+
const Component = as;
|
|
711
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
712
|
+
Component,
|
|
713
|
+
{
|
|
714
|
+
ref,
|
|
715
|
+
className: cn(
|
|
716
|
+
"mx-auto w-full px-2 sm:px-4 lg:px-8",
|
|
717
|
+
maxWidthStyles[maxWidth],
|
|
718
|
+
className
|
|
719
|
+
),
|
|
720
|
+
...props,
|
|
721
|
+
children
|
|
722
|
+
}
|
|
723
|
+
);
|
|
724
|
+
}
|
|
725
|
+
);
|
|
726
|
+
Container.displayName = "Container";
|
|
699
727
|
|
|
700
|
-
// lib/
|
|
701
|
-
var
|
|
702
|
-
"https://
|
|
703
|
-
"https://
|
|
704
|
-
"https://
|
|
705
|
-
"https://
|
|
706
|
-
"https://
|
|
707
|
-
"https://
|
|
708
|
-
"https://
|
|
709
|
-
"https://
|
|
710
|
-
"https://
|
|
711
|
-
"https://
|
|
712
|
-
"https://
|
|
713
|
-
"https://
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
"
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
"
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
"
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
"
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
728
|
+
// lib/patternSvgs.ts
|
|
729
|
+
var patternSvgs = {
|
|
730
|
+
squareAltGrid: "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
|
|
731
|
+
grid1: "https://cdn.ing/assets/files/record/286186/nbdflpgp4ostrno079hygibsflp3",
|
|
732
|
+
noise: "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
|
|
733
|
+
dots: "https://cdn.ing/assets/files/record/286198/yfsjx9thvtxzhl2qtshxyhkrm524",
|
|
734
|
+
dotPattern: "https://cdn.ing/assets/files/record/286192/7ig0cku8aqbboiza8nuk6hw0nnsr",
|
|
735
|
+
dotPattern2: "https://cdn.ing/assets/files/record/286189/arez6gd2s7isn9i1o6c7sexdq7bl",
|
|
736
|
+
circles: "https://cdn.ing/assets/files/record/286190/gtmia3sncjtzetdshc20zf1d3c17",
|
|
737
|
+
waves: "https://cdn.ing/assets/files/record/286191/mqlb33fzxz9cdth1bx7if0wmpkp1",
|
|
738
|
+
crossPattern: "https://cdn.ing/assets/files/record/286193/9yfqwdbnqaipbp7fsb3wbzzmq472",
|
|
739
|
+
architect: "https://cdn.ing/assets/files/record/286194/vgs88ugpvyhxu13wqgy0acvae6re",
|
|
740
|
+
tinyCheckers: "https://cdn.ing/assets/files/record/286195/65efaknsw8kcpf9o3c2gybytsl5b",
|
|
741
|
+
p6: "https://cdn.ing/assets/i/r/286196/6kl0rqnd6mjk8j7e525fo8fo0vkc/p6.webp"
|
|
742
|
+
};
|
|
743
|
+
var maskTop = "radial-gradient(ellipse 70% 60% at 50% 0%, #000 60%, transparent 100%)";
|
|
744
|
+
var maskBottom = "radial-gradient(ellipse 100% 80% at 50% 100%, #000 50%, transparent 90%)";
|
|
745
|
+
var maskCenter = "radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 70%)";
|
|
746
|
+
var maskTopLeft = "radial-gradient(ellipse 80% 80% at 0% 0%, #000 50%, transparent 90%)";
|
|
747
|
+
var maskTopRight = "radial-gradient(ellipse 80% 80% at 100% 0%, #000 50%, transparent 90%)";
|
|
748
|
+
var maskBottomLeft = "radial-gradient(ellipse 80% 80% at 0% 100%, #000 50%, transparent 90%)";
|
|
749
|
+
var maskBottomRight = "radial-gradient(ellipse 80% 80% at 100% 100%, #000 50%, transparent 90%)";
|
|
750
|
+
var circuitBoardPattern = (id, mask) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
751
|
+
"svg",
|
|
752
|
+
{
|
|
753
|
+
className: "h-full w-full",
|
|
754
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
755
|
+
style: mask ? {
|
|
756
|
+
maskImage: mask,
|
|
757
|
+
WebkitMaskImage: mask
|
|
758
|
+
} : void 0,
|
|
759
|
+
children: [
|
|
760
|
+
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
761
|
+
"pattern",
|
|
762
|
+
{
|
|
763
|
+
id,
|
|
764
|
+
x: "0",
|
|
765
|
+
y: "0",
|
|
766
|
+
width: "100",
|
|
767
|
+
height: "100",
|
|
768
|
+
patternUnits: "userSpaceOnUse",
|
|
769
|
+
children: [
|
|
770
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
771
|
+
"path",
|
|
772
|
+
{
|
|
773
|
+
d: "M0 50h40M60 50h40M50 0v40M50 60v40",
|
|
774
|
+
stroke: "hsl(var(--muted))",
|
|
775
|
+
strokeWidth: "1",
|
|
776
|
+
fill: "none"
|
|
777
|
+
}
|
|
778
|
+
),
|
|
779
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "50", cy: "50", r: "3", fill: "hsl(var(--muted))" }),
|
|
780
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "0", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
|
|
781
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "100", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
|
|
782
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "50", cy: "0", r: "2", fill: "hsl(var(--muted))" }),
|
|
783
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "50", cy: "100", r: "2", fill: "hsl(var(--muted))" })
|
|
784
|
+
]
|
|
785
|
+
}
|
|
786
|
+
) }),
|
|
787
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
|
|
788
|
+
]
|
|
789
|
+
}
|
|
790
|
+
);
|
|
791
|
+
var gridDotsPattern = (id, mask) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
792
|
+
"svg",
|
|
793
|
+
{
|
|
794
|
+
className: "h-full w-full",
|
|
795
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
796
|
+
style: mask ? {
|
|
797
|
+
maskImage: mask,
|
|
798
|
+
WebkitMaskImage: mask
|
|
799
|
+
} : void 0,
|
|
800
|
+
children: [
|
|
801
|
+
/* @__PURE__ */ jsxRuntime.jsx("defs", { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
802
|
+
"pattern",
|
|
803
|
+
{
|
|
804
|
+
id,
|
|
805
|
+
x: "0",
|
|
806
|
+
y: "0",
|
|
807
|
+
width: "40",
|
|
808
|
+
height: "40",
|
|
809
|
+
patternUnits: "userSpaceOnUse",
|
|
810
|
+
children: [
|
|
811
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
812
|
+
"path",
|
|
813
|
+
{
|
|
814
|
+
d: "M0 20h40M20 0v40",
|
|
815
|
+
stroke: "hsl(var(--muted))",
|
|
816
|
+
strokeWidth: "0.5",
|
|
817
|
+
fill: "none"
|
|
818
|
+
}
|
|
819
|
+
),
|
|
820
|
+
/* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "20", cy: "20", r: "2", fill: "hsl(var(--muted))" })
|
|
821
|
+
]
|
|
822
|
+
}
|
|
823
|
+
) }),
|
|
824
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
|
|
825
|
+
]
|
|
826
|
+
}
|
|
827
|
+
);
|
|
828
|
+
var gridPattern = (size, mask) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
829
|
+
"div",
|
|
830
|
+
{
|
|
831
|
+
className: "h-full w-full bg-[linear-gradient(to_right,_hsl(var(--muted))_1px,_transparent_1px),linear-gradient(to_bottom,_hsl(var(--muted))_1px,_transparent_1px)]",
|
|
832
|
+
style: {
|
|
833
|
+
backgroundSize: `${size}px ${size}px`,
|
|
834
|
+
...mask ? {
|
|
835
|
+
maskImage: mask,
|
|
836
|
+
WebkitMaskImage: mask
|
|
837
|
+
} : {}
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
);
|
|
841
|
+
var diagonalCrossPattern = (mask) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
842
|
+
"div",
|
|
843
|
+
{
|
|
844
|
+
className: "h-full w-full",
|
|
845
|
+
style: {
|
|
846
|
+
backgroundImage: "repeating-linear-gradient(45deg, transparent, transparent 32px, hsl(var(--muted)) 32px, hsl(var(--muted)) 33px), repeating-linear-gradient(135deg, transparent, transparent 32px, hsl(var(--muted)) 32px, hsl(var(--muted)) 33px)",
|
|
847
|
+
...mask ? {
|
|
848
|
+
maskImage: mask,
|
|
849
|
+
WebkitMaskImage: mask
|
|
850
|
+
} : {}
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
);
|
|
854
|
+
var dashedGridMaskBase = "repeating-linear-gradient(to right, black 0px, black 3px, transparent 3px, transparent 8px), repeating-linear-gradient(to bottom, black 0px, black 3px, transparent 3px, transparent 8px)";
|
|
855
|
+
var dashedGridPattern = (fadeMask) => {
|
|
856
|
+
const mask = fadeMask ? `${dashedGridMaskBase}, ${fadeMask}` : dashedGridMaskBase;
|
|
857
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
858
|
+
"div",
|
|
821
859
|
{
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
860
|
+
className: "h-full w-full",
|
|
861
|
+
style: {
|
|
862
|
+
backgroundImage: "linear-gradient(to right, hsl(var(--muted)) 1px, transparent 1px), linear-gradient(to bottom, hsl(var(--muted)) 1px, transparent 1px)",
|
|
863
|
+
backgroundSize: "20px 20px",
|
|
864
|
+
backgroundPosition: "0 0, 0 0",
|
|
865
|
+
maskImage: mask,
|
|
866
|
+
WebkitMaskImage: mask,
|
|
867
|
+
maskComposite: "intersect",
|
|
868
|
+
WebkitMaskComposite: "source-in"
|
|
869
|
+
}
|
|
826
870
|
}
|
|
827
|
-
)
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
871
|
+
);
|
|
872
|
+
};
|
|
873
|
+
var gradientGlow = (position) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
874
|
+
"div",
|
|
875
|
+
{
|
|
876
|
+
className: cn(
|
|
877
|
+
"pointer-events-none absolute left-1/2 z-0 aspect-square w-3/4 -translate-x-1/2 rounded-full opacity-50 blur-3xl",
|
|
878
|
+
position === "top" ? "-top-1/4" : "-bottom-1/4"
|
|
879
|
+
),
|
|
880
|
+
style: {
|
|
881
|
+
background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
);
|
|
885
|
+
var spotlight = (position) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
886
|
+
"div",
|
|
887
|
+
{
|
|
888
|
+
className: cn(
|
|
889
|
+
"pointer-events-none absolute top-1/2 z-0 aspect-square w-3/4 -translate-y-1/2 rounded-full opacity-40 blur-3xl",
|
|
890
|
+
position === "left" ? "-left-1/4" : "-right-1/4"
|
|
891
|
+
),
|
|
892
|
+
style: {
|
|
893
|
+
background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
);
|
|
897
|
+
var patternOverlays = {
|
|
898
|
+
circuitBoardBasic: () => circuitBoardPattern("circuit-board-basic"),
|
|
899
|
+
circuitBoardFadeTop: () => circuitBoardPattern("circuit-board-fade-top", maskTop),
|
|
900
|
+
circuitBoardFadeBottom: () => circuitBoardPattern("circuit-board-fade-bottom", maskBottom),
|
|
901
|
+
circuitBoardFadeCenter: () => circuitBoardPattern("circuit-board-fade-center", maskCenter),
|
|
902
|
+
circuitBoardFadeTopLeft: () => circuitBoardPattern("circuit-board-fade-top-left", maskTopLeft),
|
|
903
|
+
circuitBoardFadeTopRight: () => circuitBoardPattern("circuit-board-fade-top-right", maskTopRight),
|
|
904
|
+
circuitBoardFadeBottomLeft: () => circuitBoardPattern("circuit-board-fade-bottom-left", maskBottomLeft),
|
|
905
|
+
circuitBoardFadeBottomRight: () => circuitBoardPattern("circuit-board-fade-bottom-right", maskBottomRight),
|
|
906
|
+
dashedGridBasic: () => dashedGridPattern(),
|
|
907
|
+
dashedGridFadeTop: () => dashedGridPattern(maskTop),
|
|
908
|
+
dashedGridFadeBottom: () => dashedGridPattern(maskBottom),
|
|
909
|
+
dashedGridFadeCenter: () => dashedGridPattern(maskCenter),
|
|
910
|
+
dashedGridFadeTopLeft: () => dashedGridPattern(maskTopLeft),
|
|
911
|
+
dashedGridFadeTopRight: () => dashedGridPattern(maskTopRight),
|
|
912
|
+
dashedGridFadeBottomLeft: () => dashedGridPattern(maskBottomLeft),
|
|
913
|
+
dashedGridFadeBottomRight: () => dashedGridPattern(maskBottomRight),
|
|
914
|
+
diagonalCrossBasic: () => diagonalCrossPattern(),
|
|
915
|
+
diagonalCrossFadeTop: () => diagonalCrossPattern(maskTop),
|
|
916
|
+
diagonalCrossFadeBottom: () => diagonalCrossPattern(maskBottom),
|
|
917
|
+
diagonalCrossFadeCenter: () => diagonalCrossPattern(maskCenter),
|
|
918
|
+
diagonalCrossFadeTopLeft: () => diagonalCrossPattern(maskTopLeft),
|
|
919
|
+
diagonalCrossFadeTopRight: () => diagonalCrossPattern(maskTopRight),
|
|
920
|
+
diagonalCrossFadeBottomLeft: () => diagonalCrossPattern(maskBottomLeft),
|
|
921
|
+
diagonalCrossFadeBottomRight: () => diagonalCrossPattern(maskBottomRight),
|
|
922
|
+
gridBasic: () => gridPattern(40),
|
|
923
|
+
gridFadeTop: () => gridPattern(32, maskTop),
|
|
924
|
+
gridFadeBottom: () => gridPattern(32, maskBottom),
|
|
925
|
+
gridFadeCenter: () => gridPattern(40, maskCenter),
|
|
926
|
+
gridFadeTopLeft: () => gridPattern(32, maskTopLeft),
|
|
927
|
+
gridFadeTopRight: () => gridPattern(32, maskTopRight),
|
|
928
|
+
gridFadeBottomLeft: () => gridPattern(32, maskBottomLeft),
|
|
929
|
+
gridFadeBottomRight: () => gridPattern(32, maskBottomRight),
|
|
930
|
+
gridDotsBasic: () => gridDotsPattern("grid-dots-basic"),
|
|
931
|
+
gridDotsFadeCenter: () => gridDotsPattern("grid-dots-fade-center", maskCenter),
|
|
932
|
+
gradientGlowTop: () => gradientGlow("top"),
|
|
933
|
+
gradientGlowBottom: () => gradientGlow("bottom"),
|
|
934
|
+
spotlightLeft: () => spotlight("left"),
|
|
935
|
+
spotlightRight: () => spotlight("right")
|
|
936
|
+
};
|
|
937
|
+
var inlinePatternStyles = {
|
|
938
|
+
radialGradientTop: {
|
|
939
|
+
background: "radial-gradient(125% 125% at 50% 10%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
|
|
940
|
+
},
|
|
941
|
+
radialGradientBottom: {
|
|
942
|
+
background: "radial-gradient(125% 125% at 50% 90%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
|
|
943
|
+
}
|
|
944
|
+
};
|
|
945
|
+
function PatternBackground({
|
|
946
|
+
pattern,
|
|
947
|
+
opacity = 0.08,
|
|
948
|
+
className,
|
|
949
|
+
style
|
|
950
|
+
}) {
|
|
951
|
+
if (!pattern) {
|
|
952
|
+
return null;
|
|
953
|
+
}
|
|
954
|
+
if (pattern in inlinePatternStyles) {
|
|
955
|
+
const inlineStyle = inlinePatternStyles[pattern];
|
|
956
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
957
|
+
"div",
|
|
844
958
|
{
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
optixFlowConfig
|
|
959
|
+
className: cn("pointer-events-none absolute inset-0 z-0", className),
|
|
960
|
+
style: { ...inlineStyle, opacity, ...style },
|
|
961
|
+
"aria-hidden": "true"
|
|
849
962
|
}
|
|
850
|
-
)
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
963
|
+
);
|
|
964
|
+
}
|
|
965
|
+
if (pattern in patternOverlays) {
|
|
966
|
+
const Overlay = patternOverlays[pattern];
|
|
967
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
968
|
+
"div",
|
|
969
|
+
{
|
|
970
|
+
className: cn("pointer-events-none absolute inset-0 z-0", className),
|
|
971
|
+
style: { opacity, ...style },
|
|
972
|
+
"aria-hidden": "true",
|
|
973
|
+
children: Overlay()
|
|
974
|
+
}
|
|
975
|
+
);
|
|
976
|
+
}
|
|
977
|
+
const patternUrl = pattern in patternSvgs ? patternSvgs[pattern] : pattern;
|
|
978
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
979
|
+
"div",
|
|
980
|
+
{
|
|
981
|
+
className: cn("pointer-events-none absolute inset-0 z-0", className),
|
|
982
|
+
style: {
|
|
983
|
+
backgroundImage: `url(${patternUrl})`,
|
|
984
|
+
backgroundRepeat: "repeat",
|
|
985
|
+
backgroundSize: "auto",
|
|
986
|
+
opacity,
|
|
987
|
+
...style
|
|
988
|
+
},
|
|
989
|
+
"aria-hidden": "true"
|
|
990
|
+
}
|
|
991
|
+
);
|
|
992
|
+
}
|
|
993
|
+
var backgroundStyles = {
|
|
994
|
+
default: "bg-background text-foreground",
|
|
995
|
+
white: "bg-white text-dark",
|
|
996
|
+
gray: "bg-muted/30 text-foreground",
|
|
997
|
+
dark: "bg-foreground text-background",
|
|
998
|
+
transparent: "bg-transparent text-foreground",
|
|
999
|
+
gradient: "bg-linear-to-br from-primary via-primary/90 to-foreground text-primary-foreground",
|
|
1000
|
+
primary: "bg-primary text-primary-foreground",
|
|
1001
|
+
secondary: "bg-secondary text-secondary-foreground",
|
|
1002
|
+
muted: "bg-muted text-muted-foreground"
|
|
1003
|
+
};
|
|
1004
|
+
var spacingStyles = {
|
|
1005
|
+
none: "py-0 md:py-0",
|
|
1006
|
+
sm: "py-12 md:py-16",
|
|
1007
|
+
md: "py-16 md:py-24",
|
|
1008
|
+
lg: "py-20 md:py-32",
|
|
1009
|
+
xl: "py-24 md:py-40"
|
|
1010
|
+
};
|
|
1011
|
+
var Section = React6__namespace.default.forwardRef(
|
|
1012
|
+
({
|
|
1013
|
+
id,
|
|
1014
|
+
title,
|
|
1015
|
+
subtitle,
|
|
1016
|
+
children,
|
|
1017
|
+
className,
|
|
1018
|
+
style,
|
|
1019
|
+
background = "default",
|
|
1020
|
+
spacing = "lg",
|
|
1021
|
+
pattern,
|
|
1022
|
+
patternOpacity,
|
|
1023
|
+
patternClassName,
|
|
1024
|
+
containerClassName,
|
|
1025
|
+
containerMaxWidth = "xl",
|
|
1026
|
+
...props
|
|
1027
|
+
}, ref) => {
|
|
1028
|
+
const effectivePatternOpacity = patternOpacity !== void 0 ? patternOpacity : pattern ? 1 : 0;
|
|
1029
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1030
|
+
"section",
|
|
1031
|
+
{
|
|
1032
|
+
ref,
|
|
1033
|
+
id,
|
|
1034
|
+
className: cn(
|
|
1035
|
+
"relative",
|
|
1036
|
+
pattern ? "overflow-hidden" : null,
|
|
1037
|
+
backgroundStyles[background],
|
|
1038
|
+
spacingStyles[spacing],
|
|
1039
|
+
className
|
|
1040
|
+
),
|
|
1041
|
+
style,
|
|
1042
|
+
...props,
|
|
1043
|
+
children: [
|
|
1044
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1045
|
+
PatternBackground,
|
|
1046
|
+
{
|
|
1047
|
+
pattern,
|
|
1048
|
+
opacity: effectivePatternOpacity,
|
|
1049
|
+
className: patternClassName
|
|
1050
|
+
}
|
|
1051
|
+
),
|
|
1052
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
1053
|
+
Container,
|
|
1054
|
+
{
|
|
1055
|
+
maxWidth: containerMaxWidth,
|
|
1056
|
+
className: cn("relative z-10", containerClassName),
|
|
1057
|
+
children: [
|
|
1058
|
+
(title || subtitle) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mb-12 text-center md:mb-16", children: [
|
|
1059
|
+
subtitle && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mb-2 text-sm font-semibold uppercase tracking-wider text-primary", children: subtitle }),
|
|
1060
|
+
title && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", children: title })
|
|
1061
|
+
] }),
|
|
1062
|
+
children
|
|
1063
|
+
]
|
|
1064
|
+
}
|
|
1065
|
+
)
|
|
1066
|
+
]
|
|
1067
|
+
}
|
|
1068
|
+
);
|
|
1069
|
+
}
|
|
1070
|
+
);
|
|
1071
|
+
Section.displayName = "Section";
|
|
867
1072
|
function ArticleBreadcrumbSocialComponent({
|
|
868
1073
|
className,
|
|
869
1074
|
containerClassName,
|
|
@@ -898,7 +1103,11 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
898
1103
|
children,
|
|
899
1104
|
enableTocTracking,
|
|
900
1105
|
enableBackToTop,
|
|
901
|
-
optixFlowConfig
|
|
1106
|
+
optixFlowConfig,
|
|
1107
|
+
background,
|
|
1108
|
+
spacing,
|
|
1109
|
+
pattern,
|
|
1110
|
+
patternOpacity
|
|
902
1111
|
}) {
|
|
903
1112
|
const author = authorProp ?? (authorName ? { name: authorName, image: authorImage, role: authorRole } : void 0);
|
|
904
1113
|
const platformLabels = {
|
|
@@ -915,11 +1124,11 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
915
1124
|
"aria-label": `Share on ${platformLabels[platform] || platform.charAt(0).toUpperCase() + platform.slice(1)}`,
|
|
916
1125
|
className: void 0
|
|
917
1126
|
})) : []);
|
|
918
|
-
const [activeSection, setActiveSection] =
|
|
1127
|
+
const [activeSection, setActiveSection] = React6__namespace.useState(
|
|
919
1128
|
sections?.[0]?.id || ""
|
|
920
1129
|
);
|
|
921
|
-
const [showBackToTop, setShowBackToTop] =
|
|
922
|
-
|
|
1130
|
+
const [showBackToTop, setShowBackToTop] = React6__namespace.useState(false);
|
|
1131
|
+
React6__namespace.useEffect(() => {
|
|
923
1132
|
if (!enableTocTracking || !sections || sections.length === 0) return;
|
|
924
1133
|
const observer = new IntersectionObserver(
|
|
925
1134
|
(entries) => {
|
|
@@ -937,7 +1146,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
937
1146
|
});
|
|
938
1147
|
return () => observer.disconnect();
|
|
939
1148
|
}, [sections, enableTocTracking]);
|
|
940
|
-
|
|
1149
|
+
React6__namespace.useEffect(() => {
|
|
941
1150
|
if (!enableBackToTop) return;
|
|
942
1151
|
const handleScroll = () => {
|
|
943
1152
|
setShowBackToTop(window.scrollY > 400);
|
|
@@ -945,15 +1154,15 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
945
1154
|
window.addEventListener("scroll", handleScroll);
|
|
946
1155
|
return () => window.removeEventListener("scroll", handleScroll);
|
|
947
1156
|
}, [enableBackToTop]);
|
|
948
|
-
const scrollToTop =
|
|
1157
|
+
const scrollToTop = React6__namespace.useCallback(() => {
|
|
949
1158
|
window.scrollTo({ top: 0, behavior: "smooth" });
|
|
950
1159
|
}, []);
|
|
951
|
-
const breadcrumbsContent =
|
|
1160
|
+
const breadcrumbsContent = React6__namespace.useMemo(() => {
|
|
952
1161
|
if (breadcrumbsSlot) return breadcrumbsSlot;
|
|
953
1162
|
if (!breadcrumbs || breadcrumbs.length === 0) return null;
|
|
954
1163
|
return /* @__PURE__ */ jsxRuntime.jsx(Breadcrumb, { className: cn("mb-8", breadcrumbClassName), children: /* @__PURE__ */ jsxRuntime.jsxs(BreadcrumbList, { children: [
|
|
955
1164
|
/* @__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 }) }) }) }),
|
|
956
|
-
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1165
|
+
breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxRuntime.jsxs(React6__namespace.Fragment, { children: [
|
|
957
1166
|
/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbSeparator, {}),
|
|
958
1167
|
/* @__PURE__ */ jsxRuntime.jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsxRuntime.jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
|
|
959
1168
|
] }, index)),
|
|
@@ -963,7 +1172,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
963
1172
|
] })
|
|
964
1173
|
] }) });
|
|
965
1174
|
}, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
|
|
966
|
-
const authorContent =
|
|
1175
|
+
const authorContent = React6__namespace.useMemo(() => {
|
|
967
1176
|
if (authorSlot) return authorSlot;
|
|
968
1177
|
if (!author) return null;
|
|
969
1178
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("mt-6 flex items-center gap-4 not-prose", authorClassName), children: [
|
|
@@ -977,7 +1186,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
977
1186
|
] })
|
|
978
1187
|
] });
|
|
979
1188
|
}, [authorSlot, author, publishDate, readTime, authorClassName]);
|
|
980
|
-
const heroMediaContent =
|
|
1189
|
+
const heroMediaContent = React6__namespace.useMemo(() => {
|
|
981
1190
|
if (heroMediaSlot) return heroMediaSlot;
|
|
982
1191
|
if (!heroImageSrc) return null;
|
|
983
1192
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -990,7 +1199,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
990
1199
|
}
|
|
991
1200
|
);
|
|
992
1201
|
}, [heroMediaSlot, heroImageSrc, heroImageAlt, heroImageClassName, optixFlowConfig]);
|
|
993
|
-
const tocContent =
|
|
1202
|
+
const tocContent = React6__namespace.useMemo(() => {
|
|
994
1203
|
if (tocSlot) return tocSlot;
|
|
995
1204
|
if (!sections || sections.length === 0) return null;
|
|
996
1205
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("rounded-lg border p-4", tocClassName), children: [
|
|
@@ -998,7 +1207,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
998
1207
|
/* @__PURE__ */ jsxRuntime.jsx("nav", { className: "space-y-2", children: sections.map((section) => {
|
|
999
1208
|
const isActive = activeSection === section.id;
|
|
1000
1209
|
if (renderSectionLink) {
|
|
1001
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1210
|
+
return /* @__PURE__ */ jsxRuntime.jsx(React6__namespace.Fragment, { children: renderSectionLink(section, isActive) }, section.id);
|
|
1002
1211
|
}
|
|
1003
1212
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1004
1213
|
Pressable,
|
|
@@ -1015,7 +1224,7 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1015
1224
|
}) })
|
|
1016
1225
|
] });
|
|
1017
1226
|
}, [tocSlot, sections, activeSection, renderSectionLink, tocClassName]);
|
|
1018
|
-
const shareButtonsContent =
|
|
1227
|
+
const shareButtonsContent = React6__namespace.useMemo(() => {
|
|
1019
1228
|
if (shareSlot) return shareSlot;
|
|
1020
1229
|
if (!socialLinks || socialLinks.length === 0) return null;
|
|
1021
1230
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("rounded-lg border p-4", shareClassName), children: [
|
|
@@ -1035,33 +1244,43 @@ function ArticleBreadcrumbSocialComponent({
|
|
|
1035
1244
|
)) })
|
|
1036
1245
|
] });
|
|
1037
1246
|
}, [shareSlot, socialLinks, shareClassName]);
|
|
1038
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1247
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
1248
|
+
Section,
|
|
1249
|
+
{
|
|
1250
|
+
background,
|
|
1251
|
+
spacing,
|
|
1252
|
+
pattern,
|
|
1253
|
+
patternOpacity,
|
|
1254
|
+
className,
|
|
1255
|
+
children: [
|
|
1256
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("container", containerClassName), children: [
|
|
1257
|
+
breadcrumbsContent,
|
|
1258
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-10 lg:grid-cols-[minmax(0,1fr)_280px]", children: [
|
|
1259
|
+
children && /* @__PURE__ */ jsxRuntime.jsxs("article", { className: cn("prose max-w-none dark:prose-invert", articleClassName), children: [
|
|
1260
|
+
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 })),
|
|
1261
|
+
authorContent,
|
|
1262
|
+
/* @__PURE__ */ jsxRuntime.jsx(Separator, { className: "my-8" }),
|
|
1263
|
+
heroMediaContent,
|
|
1264
|
+
children
|
|
1265
|
+
] }),
|
|
1266
|
+
/* @__PURE__ */ jsxRuntime.jsx("aside", { className: cn("hidden lg:block", sidebarClassName), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "sticky top-8 space-y-6", children: [
|
|
1267
|
+
tocContent,
|
|
1268
|
+
shareButtonsContent
|
|
1269
|
+
] }) })
|
|
1270
|
+
] })
|
|
1048
1271
|
] }),
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up", size: 20 })
|
|
1062
|
-
}
|
|
1063
|
-
)
|
|
1064
|
-
] });
|
|
1272
|
+
enableBackToTop && showBackToTop && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1273
|
+
"button",
|
|
1274
|
+
{
|
|
1275
|
+
onClick: scrollToTop,
|
|
1276
|
+
className: "fixed bottom-8 right-8 flex h-10 w-10 items-center justify-center rounded-full bg-primary text-primary-foreground shadow-lg transition-opacity hover:opacity-90",
|
|
1277
|
+
"aria-label": "Back to top",
|
|
1278
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(DynamicIcon, { name: "lucide/arrow-up", size: 20 })
|
|
1279
|
+
}
|
|
1280
|
+
)
|
|
1281
|
+
]
|
|
1282
|
+
}
|
|
1283
|
+
);
|
|
1065
1284
|
}
|
|
1066
1285
|
|
|
1067
1286
|
exports.ArticleBreadcrumbSocial = ArticleBreadcrumbSocialComponent;
|