@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.
Files changed (61) hide show
  1. package/dist/about-startup-team.cjs +2 -2
  2. package/dist/about-startup-team.js +2 -2
  3. package/dist/article-breadcrumb-social.cjs +434 -215
  4. package/dist/article-breadcrumb-social.d.cts +19 -1
  5. package/dist/article-breadcrumb-social.d.ts +19 -1
  6. package/dist/article-breadcrumb-social.js +434 -214
  7. package/dist/article-chapters-author.cjs +422 -204
  8. package/dist/article-chapters-author.d.cts +19 -1
  9. package/dist/article-chapters-author.d.ts +19 -1
  10. package/dist/article-chapters-author.js +422 -203
  11. package/dist/article-compact-toc.cjs +429 -73
  12. package/dist/article-compact-toc.d.cts +19 -1
  13. package/dist/article-compact-toc.d.ts +19 -1
  14. package/dist/article-compact-toc.js +430 -73
  15. package/dist/article-hero-prose.cjs +394 -347
  16. package/dist/article-hero-prose.d.cts +19 -1
  17. package/dist/article-hero-prose.d.ts +19 -1
  18. package/dist/article-hero-prose.js +396 -348
  19. package/dist/article-sidebar-sticky.cjs +398 -152
  20. package/dist/article-sidebar-sticky.d.cts +19 -1
  21. package/dist/article-sidebar-sticky.d.ts +19 -1
  22. package/dist/article-sidebar-sticky.js +400 -153
  23. package/dist/article-split-animated.cjs +422 -35
  24. package/dist/article-split-animated.d.cts +19 -1
  25. package/dist/article-split-animated.d.ts +19 -1
  26. package/dist/article-split-animated.js +423 -35
  27. package/dist/article-toc-sidebar.cjs +417 -356
  28. package/dist/article-toc-sidebar.d.cts +19 -1
  29. package/dist/article-toc-sidebar.d.ts +19 -1
  30. package/dist/article-toc-sidebar.js +417 -355
  31. package/dist/blog-cards-read-time.cjs +66 -27
  32. package/dist/blog-cards-read-time.js +66 -27
  33. package/dist/blog-cards-tagline-cta.cjs +64 -14
  34. package/dist/blog-cards-tagline-cta.js +64 -14
  35. package/dist/blog-carousel-apple.cjs +1255 -0
  36. package/dist/blog-carousel-apple.d.cts +113 -0
  37. package/dist/blog-carousel-apple.d.ts +113 -0
  38. package/dist/blog-carousel-apple.js +1234 -0
  39. package/dist/blog-category-overlay.cjs +77 -15
  40. package/dist/blog-category-overlay.js +77 -15
  41. package/dist/blog-featured-popular.cjs +72 -14
  42. package/dist/blog-featured-popular.js +72 -14
  43. package/dist/blog-filtered-results.cjs +122 -39
  44. package/dist/blog-filtered-results.js +122 -39
  45. package/dist/blog-grid-author-cards.cjs +40 -6
  46. package/dist/blog-grid-author-cards.js +40 -6
  47. package/dist/blog-grid-nine-posts.cjs +40 -6
  48. package/dist/blog-grid-nine-posts.js +40 -6
  49. package/dist/blog-horizontal-cards.cjs +34 -6
  50. package/dist/blog-horizontal-cards.js +34 -6
  51. package/dist/blog-horizontal-timeline.cjs +41 -12
  52. package/dist/blog-horizontal-timeline.js +41 -12
  53. package/dist/blog-masonry-featured.cjs +96 -52
  54. package/dist/blog-masonry-featured.js +96 -52
  55. package/dist/blog-related-articles.cjs +47 -9
  56. package/dist/blog-related-articles.js +47 -9
  57. package/dist/blog-tech-insights.cjs +78 -14
  58. package/dist/blog-tech-insights.js +78 -14
  59. package/dist/registry.cjs +1036 -687
  60. package/dist/registry.js +1036 -687
  61. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  "use client";
2
- import * as React4 from 'react';
2
+ import * as React6 from 'react';
3
+ import React6__default from 'react';
3
4
  import { clsx } from 'clsx';
4
5
  import { twMerge } from 'tailwind-merge';
5
6
  import { Img } from '@page-speed/img';
@@ -87,7 +88,7 @@ function useNavigation({
87
88
  href,
88
89
  onClick
89
90
  } = {}) {
90
- const linkType = React4.useMemo(() => {
91
+ const linkType = React6.useMemo(() => {
91
92
  if (!href || href.trim() === "") {
92
93
  return onClick ? "none" : "none";
93
94
  }
@@ -108,7 +109,7 @@ function useNavigation({
108
109
  return "internal";
109
110
  }
110
111
  }, [href, onClick]);
111
- const normalizedHref = React4.useMemo(() => {
112
+ const normalizedHref = React6.useMemo(() => {
112
113
  if (!href || href.trim() === "") {
113
114
  return void 0;
114
115
  }
@@ -126,7 +127,7 @@ function useNavigation({
126
127
  return trimmed;
127
128
  }
128
129
  }, [href, linkType]);
129
- const target = React4.useMemo(() => {
130
+ const target = React6.useMemo(() => {
130
131
  switch (linkType) {
131
132
  case "external":
132
133
  return "_blank";
@@ -139,7 +140,7 @@ function useNavigation({
139
140
  return void 0;
140
141
  }
141
142
  }, [linkType]);
142
- const rel = React4.useMemo(() => {
143
+ const rel = React6.useMemo(() => {
143
144
  if (linkType === "external") {
144
145
  return "noopener noreferrer";
145
146
  }
@@ -148,7 +149,7 @@ function useNavigation({
148
149
  const isExternal = linkType === "external";
149
150
  const isInternal = linkType === "internal";
150
151
  const shouldUseRouter = isInternal && typeof normalizedHref === "string" && normalizedHref.startsWith("/");
151
- const handleClick = React4.useCallback(
152
+ const handleClick = React6.useCallback(
152
153
  (event) => {
153
154
  if (onClick) {
154
155
  try {
@@ -332,7 +333,7 @@ var buttonVariants = cva(baseStyles, {
332
333
  size: "default"
333
334
  }
334
335
  });
335
- var Pressable = React4.forwardRef(
336
+ var Pressable = React6.forwardRef(
336
337
  ({
337
338
  children,
338
339
  className,
@@ -438,10 +439,10 @@ function DynamicIcon({
438
439
  className,
439
440
  alt
440
441
  }) {
441
- const [svgContent, setSvgContent] = React4.useState(null);
442
- const [isLoading, setIsLoading] = React4.useState(true);
443
- const [error, setError] = React4.useState(null);
444
- const { url, iconName } = React4.useMemo(() => {
442
+ const [svgContent, setSvgContent] = React6.useState(null);
443
+ const [isLoading, setIsLoading] = React6.useState(true);
444
+ const [error, setError] = React6.useState(null);
445
+ const { url, iconName } = React6.useMemo(() => {
445
446
  const separator = name.includes("/") ? "/" : ":";
446
447
  const [prefix, iconName2] = name.split(separator);
447
448
  const baseUrl = `https://icons.opensite.ai/api/icon/${prefix}/${iconName2}?format=svg&width=${size}&height=${size}`;
@@ -450,7 +451,7 @@ function DynamicIcon({
450
451
  iconName: iconName2
451
452
  };
452
453
  }, [name, size]);
453
- React4.useEffect(() => {
454
+ React6.useEffect(() => {
454
455
  let isMounted = true;
455
456
  const fetchSvg = async () => {
456
457
  const cached = svgCache.get(url);
@@ -651,175 +652,379 @@ function BreadcrumbSeparator({
651
652
  }
652
653
  );
653
654
  }
655
+ var maxWidthStyles = {
656
+ sm: "max-w-screen-sm",
657
+ md: "max-w-screen-md",
658
+ lg: "max-w-screen-lg",
659
+ xl: "max-w-7xl",
660
+ "2xl": "max-w-screen-2xl",
661
+ "4xl": "max-w-[1536px]",
662
+ full: "max-w-full"
663
+ };
664
+ var Container = React6__default.forwardRef(
665
+ ({ children, maxWidth = "xl", className, as = "div", ...props }, ref) => {
666
+ const Component = as;
667
+ return /* @__PURE__ */ jsx(
668
+ Component,
669
+ {
670
+ ref,
671
+ className: cn(
672
+ "mx-auto w-full px-2 sm:px-4 lg:px-8",
673
+ maxWidthStyles[maxWidth],
674
+ className
675
+ ),
676
+ ...props,
677
+ children
678
+ }
679
+ );
680
+ }
681
+ );
682
+ Container.displayName = "Container";
654
683
 
655
- // lib/mediaPlaceholders.ts
656
- var imagePlaceholders = [
657
- "https://toastability-production.s3.amazonaws.com/xlp46pzk3a4d73jgjx4s7xdafwpn",
658
- "https://toastability-production.s3.amazonaws.com/g1iuifb3yzoofo9c7a00koyn6q1t",
659
- "https://toastability-production.s3.amazonaws.com/z9u4sdrj2oq3eds0qyui0nxsus3j",
660
- "https://toastability-production.s3.amazonaws.com/63aotyt2pb4gqpccej2kkw8reson",
661
- "https://toastability-production.s3.amazonaws.com/pjgb223h1bjywdk15i3zi7pjhutg",
662
- "https://toastability-production.s3.amazonaws.com/we9r4e711an6d0bd3dwbl9tb9z7q",
663
- "https://toastability-production.s3.amazonaws.com/f8rfrurzo743ym1s7m5xtbombunz",
664
- "https://toastability-production.s3.amazonaws.com/oe0y4bgiylx81fbfvsw31mhdgjzs",
665
- "https://toastability-production.s3.amazonaws.com/sr370c2cnf7uk5k4f6znyshualv0",
666
- "https://toastability-production.s3.amazonaws.com/cen5x90p3kbdafb80liq1a5j222x",
667
- "https://toastability-production.s3.amazonaws.com/ygob90kp07hxmi5jj4sned76dnmc",
668
- "https://toastability-production.s3.amazonaws.com/qhz2kawawq3bbh7nusz3bvahln3v",
669
- "https://toastability-production.s3.amazonaws.com/zykfhuapdqzu94ee1535gsgnvyac",
670
- "https://toastability-production.s3.amazonaws.com/kh1p8y15v55ctp5ulobm4pd77etm",
671
- "https://toastability-production.s3.amazonaws.com/8x62o6350p1ejm3pjrp1jwvcbh4v",
672
- "https://toastability-production.s3.amazonaws.com/vvixyoo7ybq3h04q2q0kact0s5wc",
673
- "https://toastability-production.s3.amazonaws.com/t502cfynqso7ntkdvmcmfc87yjkt",
674
- "https://toastability-production.s3.amazonaws.com/ihgx63s5nfzp2e93e3ccljjnnrov",
675
- "https://toastability-production.s3.amazonaws.com/b555hwjt7ltr81et05v5254q1ak6",
676
- "https://toastability-production.s3.amazonaws.com/c4sgsy0g7o2rrjmvm9x7evxems82",
677
- "https://toastability-production.s3.amazonaws.com/a3m42usevv0iet0fpfwa1fsytxmv",
678
- "https://toastability-production.s3.amazonaws.com/qghzqu1i99vaubyew9s5dxcbel9l",
679
- "https://toastability-production.s3.amazonaws.com/9covpitzpuuobkg1m4mfokpi0enw",
680
- "https://toastability-production.s3.amazonaws.com/2d4k8d5shwg82276hzj2ztbj7mxq",
681
- "https://toastability-production.s3.amazonaws.com/op92dycs7w856e2jsvx20st0nyz9",
682
- "https://toastability-production.s3.amazonaws.com/f921uoblxbv8f9bmr4s2ik7xxugl",
683
- "https://toastability-production.s3.amazonaws.com/gl7n7p6atndufbsm6q2ac5jeqttp",
684
- "https://toastability-production.s3.amazonaws.com/sj8cs2gpbanaowqwxar1uhhwd23z",
685
- "https://toastability-production.s3.amazonaws.com/hu4gmd93sp95wdyr9qijze0rgim9",
686
- "https://toastability-production.s3.amazonaws.com/uh2vd59np82h8sevbmfnsha89sf1",
687
- "https://toastability-production.s3.amazonaws.com/gxs6zevccphti0hdq5l9fwytprpr",
688
- "https://toastability-production.s3.amazonaws.com/s4vho0wfbjhf758oife8qfuekou8",
689
- "https://toastability-production.s3.amazonaws.com/1b0gd8ul22q799d62dvm3sgyll85",
690
- "https://toastability-production.s3.amazonaws.com/102grjqg8aigxkj585s9x3xbxfv7",
691
- "https://toastability-production.s3.amazonaws.com/dvz0441h9fxjhh88lzqbwdoyxv52",
692
- "https://toastability-production.s3.amazonaws.com/50y066ms7rb5sw62u9u08jzkk8rj",
693
- "https://toastability-production.s3.amazonaws.com/9uxe0jw1zl1tujy0m5yalo7m2ht8",
694
- "https://toastability-production.s3.amazonaws.com/cyhcpla6me8vs936i3fw6wbhypi2",
695
- "https://toastability-production.s3.amazonaws.com/6ntdz6xwid3fswjz8y0otdxmzs40",
696
- "https://toastability-production.s3.amazonaws.com/y1aezpa78m2fhfvj8whcx337y9cb",
697
- "https://toastability-production.s3.amazonaws.com/eoa76d31ynbg34urr6e4619la1f7",
698
- "https://toastability-production.s3.amazonaws.com/0mh8a1dg7ftcqnyzgv303u501c8y",
699
- "https://toastability-production.s3.amazonaws.com/vvucxqs128w2d0z3n4s2z131rq7p",
700
- "https://toastability-production.s3.amazonaws.com/2rbqbw9778770i8izdeabx8v2w2k",
701
- "https://toastability-production.s3.amazonaws.com/90rcw2mljzpeuxlac8q77mor15xz",
702
- "https://toastability-production.s3.amazonaws.com/vh1aowwr93yz4qrzct2s4je0cxdo",
703
- "https://toastability-production.s3.amazonaws.com/ssgb7unxdwdqokfvhkp7cok2v79s",
704
- "https://toastability-production.s3.amazonaws.com/vvkma6b8whdkiq5nq8z4eyfe00vo",
705
- "https://toastability-production.s3.amazonaws.com/9797jh6slgbf9oq6lzlimcdiuziv",
706
- "https://toastability-production.s3.amazonaws.com/betxbx61fkijt0aygineplf489ze",
707
- "https://toastability-production.s3.amazonaws.com/0o6d7z4mm9nzeufhv9kefrhihbip",
708
- "https://toastability-production.s3.amazonaws.com/1xdx70c7gp9l883soyh5d3exesvt",
709
- "https://toastability-production.s3.amazonaws.com/jhjfvkmdzktacyijd9fh6acc7o2c",
710
- "https://toastability-production.s3.amazonaws.com/n001o4pfpszmyw03ubctig7kvf0e",
711
- "https://toastability-production.s3.amazonaws.com/l080sx0lcx51x44dqrb8006nqf08",
712
- "https://toastability-production.s3.amazonaws.com/2t36c7l0ywchaz4nys8yj2l5amae",
713
- "https://toastability-production.s3.amazonaws.com/gg5qnvb4nsl2k3g4dw4ls8bsllwh",
714
- "https://toastability-production.s3.amazonaws.com/3nqc7xvjy3e8d7jo1gdvbzty0oqg",
715
- "https://toastability-production.s3.amazonaws.com/0kx9umbfmv881wt9dfqnohv8efgi",
716
- "https://toastability-production.s3.amazonaws.com/9z0sbfnskx70vse99e3dfhper7i1",
717
- "https://toastability-production.s3.amazonaws.com/9keidwrag6g7jtqr7rdwb1ryt6ht",
718
- "https://toastability-production.s3.amazonaws.com/zm88vf14geh1gh0frd3yrdlb6pl8",
719
- "https://toastability-production.s3.amazonaws.com/0x7ktdk01jfaoysst0emzvqevu19",
720
- "https://toastability-production.s3.amazonaws.com/e83zsyvl0an0owzdmpwjnnty641x",
721
- "https://toastability-production.s3.amazonaws.com/t3k42fbzq7r7j93feldqm5cj1o1n",
722
- "https://toastability-production.s3.amazonaws.com/5sm6wc4no8fyzxfki5njmnv6gql5",
723
- "https://toastability-production.s3.amazonaws.com/w41h7890eivogu3sr78vlwkpzz8g",
724
- "https://toastability-production.s3.amazonaws.com/vrezhtksoqbw1nyo4hwnoqizrus5",
725
- "https://toastability-production.s3.amazonaws.com/8qkikcd43paeqgvw9gc1032j3yup",
726
- "https://toastability-production.s3.amazonaws.com/ihhq8unynafk4aikmys3rhbfibaz",
727
- "https://toastability-production.s3.amazonaws.com/rews5enr9ynu6izioj66s8ec90nc",
728
- "https://toastability-production.s3.amazonaws.com/6ku135fhv528eei3agnoc3zd7y75",
729
- "https://toastability-production.s3.amazonaws.com/x4scuzhsozrwrg703df5wbhygkgo",
730
- "https://toastability-production.s3.amazonaws.com/73e0s79u4crdu7cmjfp99j1l2v55",
731
- "https://toastability-production.s3.amazonaws.com/rddfyzvfpdlbzwhgep2myppwxn05",
732
- "https://toastability-production.s3.amazonaws.com/mat88x8zzdek7wpgtocjrehfivsh",
733
- "https://toastability-production.s3.amazonaws.com/3vwfdbekbkskxj2mvlvu85fz787u",
734
- "https://toastability-production.s3.amazonaws.com/ms4s4zyqpmboh0slez1cwat9qhw4",
735
- "https://toastability-production.s3.amazonaws.com/5jsc0b4e3gxnjs81iotw2c3e6da3",
736
- "https://toastability-production.s3.amazonaws.com/0g6t701zqr2r7najmdgftpeqnxmz",
737
- "https://toastability-production.s3.amazonaws.com/u3p1hlbm2c1vvkwlm8h668pe132z",
738
- "https://toastability-production.s3.amazonaws.com/ehgbcugs782765ke1l2dtbtzd918",
739
- "https://toastability-production.s3.amazonaws.com/kka8f550on7acx1lf82xleu6zhzo",
740
- "https://toastability-production.s3.amazonaws.com/67fnapqepn7f8vwt0x4nqho70hbz",
741
- "https://toastability-production.s3.amazonaws.com/t4cidbsfz3z468bn45yqdrkbx7ou",
742
- "https://toastability-production.s3.amazonaws.com/gq3c9qalkiomu0rzdzxymkdaazdu",
743
- "https://toastability-production.s3.amazonaws.com/9ujya2tfhxja7y5s9wb7d2u8crhd",
744
- "https://toastability-production.s3.amazonaws.com/hotlo54tsvl2k3eht9gg0460l9zw",
745
- "https://toastability-production.s3.amazonaws.com/ytbyjrcvrghc7wl6w1g7g8fwka22",
746
- "https://toastability-production.s3.amazonaws.com/uv0g605yf5mz106nrm1uspt9l0rr",
747
- "https://toastability-production.s3.amazonaws.com/yrp5k5xszwpe26fquupey6a6g0uu",
748
- "https://toastability-production.s3.amazonaws.com/97gctpna2hdozl1f8u5xq4ew8h0o",
749
- "https://toastability-production.s3.amazonaws.com/xjtepune0scj9yjkkqgaiwlq9hls",
750
- "https://toastability-production.s3.amazonaws.com/g607vblaarqctl1cvgxffhx4pw6g",
751
- "https://toastability-production.s3.amazonaws.com/4xpu1ljr9c8g6qzmfum5ygjzbzpb",
752
- "https://toastability-production.s3.amazonaws.com/yw5f7iwyypf4kctpr5ye5e495swt",
753
- "https://toastability-production.s3.amazonaws.com/z37cidvud212bzqhhalrhvk7ipaa",
754
- "https://toastability-production.s3.amazonaws.com/pfllskt7q7144l288lrnpc6gx606",
755
- "https://toastability-production.s3.amazonaws.com/fokd3hxzvdtsomagbfhqooyvndyv",
756
- "https://toastability-production.s3.amazonaws.com/6fffnb4phovtqkjhtzifs4rhb84u",
757
- "https://toastability-production.s3.amazonaws.com/mt87xjr79wxdhjy7496v3r6m2m9t",
758
- "https://toastability-production.s3.amazonaws.com/3dy9ge962uarlaf2xl7imdcviqgx",
759
- "https://toastability-production.s3.amazonaws.com/okf6fg4n9yv59up8ivgcdjy3w030",
760
- "https://toastability-production.s3.amazonaws.com/t7iteqw4xhtppkiws88bsoia25hv",
761
- "https://toastability-production.s3.amazonaws.com/klr5tuvulkyqfb721txtu4hgzxdm",
762
- "https://toastability-production.s3.amazonaws.com/9eddibiq5ovc9cvs3ekijkrjpahg",
763
- "https://toastability-production.s3.amazonaws.com/3ghn8dz3g9qtt4pf4nwbriaydvzb",
764
- "https://toastability-production.s3.amazonaws.com/82ykd8s8boiqaxypkulb0v0s2qiw",
765
- "https://toastability-production.s3.amazonaws.com/4eqmdeanxfk6jzvigo42y5ryv2c8",
766
- "https://toastability-production.s3.amazonaws.com/9ughnl9wnko2vdboib8n3wl3cxsy",
767
- "https://toastability-production.s3.amazonaws.com/4xjcgtlwseruezhoh3o1ga4umhj4",
768
- "https://toastability-production.s3.amazonaws.com/xwh1zzxgyd887thfm1j9lu9qnd6c",
769
- "https://toastability-production.s3.amazonaws.com/ri0dqx79spe6771np76mkmno5xfd",
770
- "https://toastability-production.s3.amazonaws.com/e13qu3083lkhdg7th64vb628172a",
771
- "https://toastability-production.s3.amazonaws.com/w87w0fyjdol9yzwo7yywkgxidvzo"
772
- ];
773
- var defaultArticleContent = (optixFlowConfig) => /* @__PURE__ */ jsxs(Fragment, { children: [
774
- /* @__PURE__ */ jsx(
775
- Img,
684
+ // lib/patternSvgs.ts
685
+ var patternSvgs = {
686
+ squareAltGrid: "https://cdn.ing/assets/files/record/286187/4gpn0yq2ptra8iwlvmwwv860ggwv",
687
+ grid1: "https://cdn.ing/assets/files/record/286186/nbdflpgp4ostrno079hygibsflp3",
688
+ noise: "https://cdn.ing/assets/i/r/286188/zrqcp9hynh3j7p2laihwzfbujgrl/noise.png",
689
+ dots: "https://cdn.ing/assets/files/record/286198/yfsjx9thvtxzhl2qtshxyhkrm524",
690
+ dotPattern: "https://cdn.ing/assets/files/record/286192/7ig0cku8aqbboiza8nuk6hw0nnsr",
691
+ dotPattern2: "https://cdn.ing/assets/files/record/286189/arez6gd2s7isn9i1o6c7sexdq7bl",
692
+ circles: "https://cdn.ing/assets/files/record/286190/gtmia3sncjtzetdshc20zf1d3c17",
693
+ waves: "https://cdn.ing/assets/files/record/286191/mqlb33fzxz9cdth1bx7if0wmpkp1",
694
+ crossPattern: "https://cdn.ing/assets/files/record/286193/9yfqwdbnqaipbp7fsb3wbzzmq472",
695
+ architect: "https://cdn.ing/assets/files/record/286194/vgs88ugpvyhxu13wqgy0acvae6re",
696
+ tinyCheckers: "https://cdn.ing/assets/files/record/286195/65efaknsw8kcpf9o3c2gybytsl5b",
697
+ p6: "https://cdn.ing/assets/i/r/286196/6kl0rqnd6mjk8j7e525fo8fo0vkc/p6.webp"
698
+ };
699
+ var maskTop = "radial-gradient(ellipse 70% 60% at 50% 0%, #000 60%, transparent 100%)";
700
+ var maskBottom = "radial-gradient(ellipse 100% 80% at 50% 100%, #000 50%, transparent 90%)";
701
+ var maskCenter = "radial-gradient(ellipse 60% 60% at 50% 50%, #000 30%, transparent 70%)";
702
+ var maskTopLeft = "radial-gradient(ellipse 80% 80% at 0% 0%, #000 50%, transparent 90%)";
703
+ var maskTopRight = "radial-gradient(ellipse 80% 80% at 100% 0%, #000 50%, transparent 90%)";
704
+ var maskBottomLeft = "radial-gradient(ellipse 80% 80% at 0% 100%, #000 50%, transparent 90%)";
705
+ var maskBottomRight = "radial-gradient(ellipse 80% 80% at 100% 100%, #000 50%, transparent 90%)";
706
+ var circuitBoardPattern = (id, mask) => /* @__PURE__ */ jsxs(
707
+ "svg",
708
+ {
709
+ className: "h-full w-full",
710
+ xmlns: "http://www.w3.org/2000/svg",
711
+ style: mask ? {
712
+ maskImage: mask,
713
+ WebkitMaskImage: mask
714
+ } : void 0,
715
+ children: [
716
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs(
717
+ "pattern",
718
+ {
719
+ id,
720
+ x: "0",
721
+ y: "0",
722
+ width: "100",
723
+ height: "100",
724
+ patternUnits: "userSpaceOnUse",
725
+ children: [
726
+ /* @__PURE__ */ jsx(
727
+ "path",
728
+ {
729
+ d: "M0 50h40M60 50h40M50 0v40M50 60v40",
730
+ stroke: "hsl(var(--muted))",
731
+ strokeWidth: "1",
732
+ fill: "none"
733
+ }
734
+ ),
735
+ /* @__PURE__ */ jsx("circle", { cx: "50", cy: "50", r: "3", fill: "hsl(var(--muted))" }),
736
+ /* @__PURE__ */ jsx("circle", { cx: "0", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
737
+ /* @__PURE__ */ jsx("circle", { cx: "100", cy: "50", r: "2", fill: "hsl(var(--muted))" }),
738
+ /* @__PURE__ */ jsx("circle", { cx: "50", cy: "0", r: "2", fill: "hsl(var(--muted))" }),
739
+ /* @__PURE__ */ jsx("circle", { cx: "50", cy: "100", r: "2", fill: "hsl(var(--muted))" })
740
+ ]
741
+ }
742
+ ) }),
743
+ /* @__PURE__ */ jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
744
+ ]
745
+ }
746
+ );
747
+ var gridDotsPattern = (id, mask) => /* @__PURE__ */ jsxs(
748
+ "svg",
749
+ {
750
+ className: "h-full w-full",
751
+ xmlns: "http://www.w3.org/2000/svg",
752
+ style: mask ? {
753
+ maskImage: mask,
754
+ WebkitMaskImage: mask
755
+ } : void 0,
756
+ children: [
757
+ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs(
758
+ "pattern",
759
+ {
760
+ id,
761
+ x: "0",
762
+ y: "0",
763
+ width: "40",
764
+ height: "40",
765
+ patternUnits: "userSpaceOnUse",
766
+ children: [
767
+ /* @__PURE__ */ jsx(
768
+ "path",
769
+ {
770
+ d: "M0 20h40M20 0v40",
771
+ stroke: "hsl(var(--muted))",
772
+ strokeWidth: "0.5",
773
+ fill: "none"
774
+ }
775
+ ),
776
+ /* @__PURE__ */ jsx("circle", { cx: "20", cy: "20", r: "2", fill: "hsl(var(--muted))" })
777
+ ]
778
+ }
779
+ ) }),
780
+ /* @__PURE__ */ jsx("rect", { width: "100%", height: "100%", fill: `url(#${id})` })
781
+ ]
782
+ }
783
+ );
784
+ var gridPattern = (size, mask) => /* @__PURE__ */ jsx(
785
+ "div",
786
+ {
787
+ 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)]",
788
+ style: {
789
+ backgroundSize: `${size}px ${size}px`,
790
+ ...mask ? {
791
+ maskImage: mask,
792
+ WebkitMaskImage: mask
793
+ } : {}
794
+ }
795
+ }
796
+ );
797
+ var diagonalCrossPattern = (mask) => /* @__PURE__ */ jsx(
798
+ "div",
799
+ {
800
+ className: "h-full w-full",
801
+ style: {
802
+ 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)",
803
+ ...mask ? {
804
+ maskImage: mask,
805
+ WebkitMaskImage: mask
806
+ } : {}
807
+ }
808
+ }
809
+ );
810
+ 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)";
811
+ var dashedGridPattern = (fadeMask) => {
812
+ const mask = fadeMask ? `${dashedGridMaskBase}, ${fadeMask}` : dashedGridMaskBase;
813
+ return /* @__PURE__ */ jsx(
814
+ "div",
776
815
  {
777
- src: imagePlaceholders[0],
778
- alt: "Article hero",
779
- className: "my-8 aspect-video w-full rounded-lg object-cover",
780
- optixFlowConfig
816
+ className: "h-full w-full",
817
+ style: {
818
+ backgroundImage: "linear-gradient(to right, hsl(var(--muted)) 1px, transparent 1px), linear-gradient(to bottom, hsl(var(--muted)) 1px, transparent 1px)",
819
+ backgroundSize: "20px 20px",
820
+ backgroundPosition: "0 0, 0 0",
821
+ maskImage: mask,
822
+ WebkitMaskImage: mask,
823
+ maskComposite: "intersect",
824
+ WebkitMaskComposite: "source-in"
825
+ }
781
826
  }
782
- ),
783
- /* @__PURE__ */ jsxs("section", { id: "chapter-1", children: [
784
- /* @__PURE__ */ jsx("h2", { children: "Chapter 1: The Foundation" }),
785
- /* @__PURE__ */ jsx("p", { children: "Design patterns are reusable solutions to common problems in software design. They represent best practices evolved over time by experienced software developers." }),
786
- /* @__PURE__ */ jsx("p", { children: "Understanding the foundation of design patterns helps you recognize when and how to apply them effectively in your own projects." })
787
- ] }),
788
- /* @__PURE__ */ jsxs("section", { id: "chapter-2", children: [
789
- /* @__PURE__ */ jsx("h2", { children: "Chapter 2: Building Blocks" }),
790
- /* @__PURE__ */ jsx("p", { children: "The building blocks of design patterns include creational, structural, and behavioral patterns. Each category addresses different aspects of software design." }),
791
- /* @__PURE__ */ jsx(
792
- Img,
827
+ );
828
+ };
829
+ var gradientGlow = (position) => /* @__PURE__ */ jsx(
830
+ "div",
831
+ {
832
+ className: cn(
833
+ "pointer-events-none absolute left-1/2 z-0 aspect-square w-3/4 -translate-x-1/2 rounded-full opacity-50 blur-3xl",
834
+ position === "top" ? "-top-1/4" : "-bottom-1/4"
835
+ ),
836
+ style: {
837
+ background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
838
+ }
839
+ }
840
+ );
841
+ var spotlight = (position) => /* @__PURE__ */ jsx(
842
+ "div",
843
+ {
844
+ className: cn(
845
+ "pointer-events-none absolute top-1/2 z-0 aspect-square w-3/4 -translate-y-1/2 rounded-full opacity-40 blur-3xl",
846
+ position === "left" ? "-left-1/4" : "-right-1/4"
847
+ ),
848
+ style: {
849
+ background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)"
850
+ }
851
+ }
852
+ );
853
+ var patternOverlays = {
854
+ circuitBoardBasic: () => circuitBoardPattern("circuit-board-basic"),
855
+ circuitBoardFadeTop: () => circuitBoardPattern("circuit-board-fade-top", maskTop),
856
+ circuitBoardFadeBottom: () => circuitBoardPattern("circuit-board-fade-bottom", maskBottom),
857
+ circuitBoardFadeCenter: () => circuitBoardPattern("circuit-board-fade-center", maskCenter),
858
+ circuitBoardFadeTopLeft: () => circuitBoardPattern("circuit-board-fade-top-left", maskTopLeft),
859
+ circuitBoardFadeTopRight: () => circuitBoardPattern("circuit-board-fade-top-right", maskTopRight),
860
+ circuitBoardFadeBottomLeft: () => circuitBoardPattern("circuit-board-fade-bottom-left", maskBottomLeft),
861
+ circuitBoardFadeBottomRight: () => circuitBoardPattern("circuit-board-fade-bottom-right", maskBottomRight),
862
+ dashedGridBasic: () => dashedGridPattern(),
863
+ dashedGridFadeTop: () => dashedGridPattern(maskTop),
864
+ dashedGridFadeBottom: () => dashedGridPattern(maskBottom),
865
+ dashedGridFadeCenter: () => dashedGridPattern(maskCenter),
866
+ dashedGridFadeTopLeft: () => dashedGridPattern(maskTopLeft),
867
+ dashedGridFadeTopRight: () => dashedGridPattern(maskTopRight),
868
+ dashedGridFadeBottomLeft: () => dashedGridPattern(maskBottomLeft),
869
+ dashedGridFadeBottomRight: () => dashedGridPattern(maskBottomRight),
870
+ diagonalCrossBasic: () => diagonalCrossPattern(),
871
+ diagonalCrossFadeTop: () => diagonalCrossPattern(maskTop),
872
+ diagonalCrossFadeBottom: () => diagonalCrossPattern(maskBottom),
873
+ diagonalCrossFadeCenter: () => diagonalCrossPattern(maskCenter),
874
+ diagonalCrossFadeTopLeft: () => diagonalCrossPattern(maskTopLeft),
875
+ diagonalCrossFadeTopRight: () => diagonalCrossPattern(maskTopRight),
876
+ diagonalCrossFadeBottomLeft: () => diagonalCrossPattern(maskBottomLeft),
877
+ diagonalCrossFadeBottomRight: () => diagonalCrossPattern(maskBottomRight),
878
+ gridBasic: () => gridPattern(40),
879
+ gridFadeTop: () => gridPattern(32, maskTop),
880
+ gridFadeBottom: () => gridPattern(32, maskBottom),
881
+ gridFadeCenter: () => gridPattern(40, maskCenter),
882
+ gridFadeTopLeft: () => gridPattern(32, maskTopLeft),
883
+ gridFadeTopRight: () => gridPattern(32, maskTopRight),
884
+ gridFadeBottomLeft: () => gridPattern(32, maskBottomLeft),
885
+ gridFadeBottomRight: () => gridPattern(32, maskBottomRight),
886
+ gridDotsBasic: () => gridDotsPattern("grid-dots-basic"),
887
+ gridDotsFadeCenter: () => gridDotsPattern("grid-dots-fade-center", maskCenter),
888
+ gradientGlowTop: () => gradientGlow("top"),
889
+ gradientGlowBottom: () => gradientGlow("bottom"),
890
+ spotlightLeft: () => spotlight("left"),
891
+ spotlightRight: () => spotlight("right")
892
+ };
893
+ var inlinePatternStyles = {
894
+ radialGradientTop: {
895
+ background: "radial-gradient(125% 125% at 50% 10%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
896
+ },
897
+ radialGradientBottom: {
898
+ background: "radial-gradient(125% 125% at 50% 90%, hsl(var(--background)) 40%, hsl(var(--primary)) 100%)"
899
+ }
900
+ };
901
+ function PatternBackground({
902
+ pattern,
903
+ opacity = 0.08,
904
+ className,
905
+ style
906
+ }) {
907
+ if (!pattern) {
908
+ return null;
909
+ }
910
+ if (pattern in inlinePatternStyles) {
911
+ const inlineStyle = inlinePatternStyles[pattern];
912
+ return /* @__PURE__ */ jsx(
913
+ "div",
793
914
  {
794
- src: imagePlaceholders[1],
795
- alt: "Pattern categories",
796
- className: "my-8 aspect-video w-full rounded-lg object-cover",
797
- optixFlowConfig
915
+ className: cn("pointer-events-none absolute inset-0 z-0", className),
916
+ style: { ...inlineStyle, opacity, ...style },
917
+ "aria-hidden": "true"
798
918
  }
799
- ),
800
- /* @__PURE__ */ jsx("p", { children: "Creational patterns deal with object creation mechanisms, structural patterns focus on class composition, and behavioral patterns characterize object interaction." })
801
- ] }),
802
- /* @__PURE__ */ jsxs("section", { id: "chapter-3", children: [
803
- /* @__PURE__ */ jsx("h2", { children: "Chapter 3: Advanced Patterns" }),
804
- /* @__PURE__ */ jsx("p", { children: "Advanced patterns build upon the fundamentals to address more complex scenarios. These include patterns for concurrency, distributed systems, and enterprise applications." }),
805
- /* @__PURE__ */ jsx("blockquote", { children: "\u201CPatterns are not invented, they are discovered.\u201D - Christopher Alexander" })
806
- ] }),
807
- /* @__PURE__ */ jsxs("section", { id: "chapter-4", children: [
808
- /* @__PURE__ */ jsx("h2", { children: "Chapter 4: Real-World Applications" }),
809
- /* @__PURE__ */ jsx("p", { children: "Seeing patterns in action helps solidify understanding. This chapter explores how major frameworks and libraries implement design patterns." }),
810
- /* @__PURE__ */ jsxs("ul", { children: [
811
- /* @__PURE__ */ jsx("li", { children: "React's use of the Observer pattern" }),
812
- /* @__PURE__ */ jsx("li", { children: "Express.js middleware as Chain of Responsibility" }),
813
- /* @__PURE__ */ jsx("li", { children: "Redux implementing the Flux pattern" }),
814
- /* @__PURE__ */ jsx("li", { children: "Dependency injection in Angular" })
815
- ] })
816
- ] }),
817
- /* @__PURE__ */ jsxs("section", { id: "chapter-5", children: [
818
- /* @__PURE__ */ jsx("h2", { children: "Chapter 5: Future Directions" }),
819
- /* @__PURE__ */ jsx("p", { children: "As software development evolves, new patterns emerge while others become less relevant. Understanding the principles behind patterns helps you adapt to changing technologies." }),
820
- /* @__PURE__ */ jsx("p", { children: "The rise of functional programming, microservices, and serverless architectures has introduced new patterns and variations on classic ones." })
821
- ] })
822
- ] });
919
+ );
920
+ }
921
+ if (pattern in patternOverlays) {
922
+ const Overlay = patternOverlays[pattern];
923
+ return /* @__PURE__ */ jsx(
924
+ "div",
925
+ {
926
+ className: cn("pointer-events-none absolute inset-0 z-0", className),
927
+ style: { opacity, ...style },
928
+ "aria-hidden": "true",
929
+ children: Overlay()
930
+ }
931
+ );
932
+ }
933
+ const patternUrl = pattern in patternSvgs ? patternSvgs[pattern] : pattern;
934
+ return /* @__PURE__ */ jsx(
935
+ "div",
936
+ {
937
+ className: cn("pointer-events-none absolute inset-0 z-0", className),
938
+ style: {
939
+ backgroundImage: `url(${patternUrl})`,
940
+ backgroundRepeat: "repeat",
941
+ backgroundSize: "auto",
942
+ opacity,
943
+ ...style
944
+ },
945
+ "aria-hidden": "true"
946
+ }
947
+ );
948
+ }
949
+ var backgroundStyles = {
950
+ default: "bg-background text-foreground",
951
+ white: "bg-white text-dark",
952
+ gray: "bg-muted/30 text-foreground",
953
+ dark: "bg-foreground text-background",
954
+ transparent: "bg-transparent text-foreground",
955
+ gradient: "bg-linear-to-br from-primary via-primary/90 to-foreground text-primary-foreground",
956
+ primary: "bg-primary text-primary-foreground",
957
+ secondary: "bg-secondary text-secondary-foreground",
958
+ muted: "bg-muted text-muted-foreground"
959
+ };
960
+ var spacingStyles = {
961
+ none: "py-0 md:py-0",
962
+ sm: "py-12 md:py-16",
963
+ md: "py-16 md:py-24",
964
+ lg: "py-20 md:py-32",
965
+ xl: "py-24 md:py-40"
966
+ };
967
+ var Section = React6__default.forwardRef(
968
+ ({
969
+ id,
970
+ title,
971
+ subtitle,
972
+ children,
973
+ className,
974
+ style,
975
+ background = "default",
976
+ spacing = "lg",
977
+ pattern,
978
+ patternOpacity,
979
+ patternClassName,
980
+ containerClassName,
981
+ containerMaxWidth = "xl",
982
+ ...props
983
+ }, ref) => {
984
+ const effectivePatternOpacity = patternOpacity !== void 0 ? patternOpacity : pattern ? 1 : 0;
985
+ return /* @__PURE__ */ jsxs(
986
+ "section",
987
+ {
988
+ ref,
989
+ id,
990
+ className: cn(
991
+ "relative",
992
+ pattern ? "overflow-hidden" : null,
993
+ backgroundStyles[background],
994
+ spacingStyles[spacing],
995
+ className
996
+ ),
997
+ style,
998
+ ...props,
999
+ children: [
1000
+ /* @__PURE__ */ jsx(
1001
+ PatternBackground,
1002
+ {
1003
+ pattern,
1004
+ opacity: effectivePatternOpacity,
1005
+ className: patternClassName
1006
+ }
1007
+ ),
1008
+ /* @__PURE__ */ jsxs(
1009
+ Container,
1010
+ {
1011
+ maxWidth: containerMaxWidth,
1012
+ className: cn("relative z-10", containerClassName),
1013
+ children: [
1014
+ (title || subtitle) && /* @__PURE__ */ jsxs("div", { className: "mb-12 text-center md:mb-16", children: [
1015
+ subtitle && /* @__PURE__ */ jsx("p", { className: "mb-2 text-sm font-semibold uppercase tracking-wider text-primary", children: subtitle }),
1016
+ title && /* @__PURE__ */ jsx("h2", { className: "text-3xl font-bold tracking-tight md:text-4xl lg:text-5xl", children: title })
1017
+ ] }),
1018
+ children
1019
+ ]
1020
+ }
1021
+ )
1022
+ ]
1023
+ }
1024
+ );
1025
+ }
1026
+ );
1027
+ Section.displayName = "Section";
823
1028
  function ArticleChaptersAuthorComponent({
824
1029
  className,
825
1030
  containerClassName,
@@ -854,13 +1059,17 @@ function ArticleChaptersAuthorComponent({
854
1059
  conclusionSlot,
855
1060
  children,
856
1061
  enableChapterTracking = true,
857
- optixFlowConfig
1062
+ optixFlowConfig,
1063
+ background,
1064
+ spacing,
1065
+ pattern,
1066
+ patternOpacity
858
1067
  }) {
859
1068
  const conclusionActions = conclusionActionsProp ?? (conclusionButtonText ? [{ label: conclusionButtonText, href: conclusionButtonHref || "#", variant: "default" }] : []);
860
- const [activeChapter, setActiveChapter] = React4.useState(
1069
+ const [activeChapter, setActiveChapter] = React6.useState(
861
1070
  chapters?.[0]?.id || ""
862
1071
  );
863
- React4.useEffect(() => {
1072
+ React6.useEffect(() => {
864
1073
  if (!enableChapterTracking || !chapters || chapters.length === 0) return;
865
1074
  const observer = new IntersectionObserver(
866
1075
  (entries) => {
@@ -878,12 +1087,12 @@ function ArticleChaptersAuthorComponent({
878
1087
  });
879
1088
  return () => observer.disconnect();
880
1089
  }, [chapters, enableChapterTracking]);
881
- const breadcrumbsContent = React4.useMemo(() => {
1090
+ const breadcrumbsContent = React6.useMemo(() => {
882
1091
  if (breadcrumbsSlot) return breadcrumbsSlot;
883
1092
  if (!breadcrumbs || breadcrumbs.length === 0) return null;
884
1093
  return /* @__PURE__ */ jsx(Breadcrumb, { className: cn("mb-8", breadcrumbClassName), children: /* @__PURE__ */ jsxs(BreadcrumbList, { children: [
885
1094
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: "#", children: /* @__PURE__ */ jsx(DynamicIcon, { name: "lucide/home", size: 16 }) }) }) }),
886
- breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React4.Fragment, { children: [
1095
+ breadcrumbs.map((crumb, index) => /* @__PURE__ */ jsxs(React6.Fragment, { children: [
887
1096
  /* @__PURE__ */ jsx(BreadcrumbSeparator, {}),
888
1097
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbLink, { asChild: true, children: /* @__PURE__ */ jsx(Pressable, { href: crumb.href, children: crumb.label }) }) })
889
1098
  ] }, index)),
@@ -891,7 +1100,7 @@ function ArticleChaptersAuthorComponent({
891
1100
  /* @__PURE__ */ jsx(BreadcrumbItem, { children: /* @__PURE__ */ jsx(BreadcrumbPage, { children: typeof currentPage === "string" ? currentPage : currentPage }) })
892
1101
  ] }) });
893
1102
  }, [breadcrumbsSlot, breadcrumbs, currentPage, breadcrumbClassName]);
894
- const chaptersNavContent = React4.useMemo(() => {
1103
+ const chaptersNavContent = React6.useMemo(() => {
895
1104
  if (chaptersSlot) return chaptersSlot;
896
1105
  if (!chapters || chapters.length === 0) return null;
897
1106
  return /* @__PURE__ */ jsxs("div", { className: cn("rounded-lg border p-4", chaptersClassName), children: [
@@ -899,7 +1108,7 @@ function ArticleChaptersAuthorComponent({
899
1108
  /* @__PURE__ */ jsx("nav", { className: "space-y-2", children: chapters.map((chapter) => {
900
1109
  const isActive = activeChapter === chapter.id;
901
1110
  if (renderChapterLink) {
902
- return /* @__PURE__ */ jsx(React4.Fragment, { children: renderChapterLink(chapter, isActive) }, chapter.id);
1111
+ return /* @__PURE__ */ jsx(React6.Fragment, { children: renderChapterLink(chapter, isActive) }, chapter.id);
903
1112
  }
904
1113
  return /* @__PURE__ */ jsxs(
905
1114
  Pressable,
@@ -919,7 +1128,7 @@ function ArticleChaptersAuthorComponent({
919
1128
  }) })
920
1129
  ] });
921
1130
  }, [chaptersSlot, chapters, activeChapter, renderChapterLink, chaptersClassName]);
922
- const authorCardContent = React4.useMemo(() => {
1131
+ const authorCardContent = React6.useMemo(() => {
923
1132
  if (authorSlot) return authorSlot;
924
1133
  if (!author) return null;
925
1134
  let socialLinksContent = null;
@@ -980,7 +1189,7 @@ function ArticleChaptersAuthorComponent({
980
1189
  socialLinksContent
981
1190
  ] });
982
1191
  }, [authorSlot, author, authorClassName]);
983
- const heroMediaContent = React4.useMemo(() => {
1192
+ const heroMediaContent = React6.useMemo(() => {
984
1193
  if (heroMediaSlot) return heroMediaSlot;
985
1194
  if (!heroImageSrc) return null;
986
1195
  return /* @__PURE__ */ jsx(
@@ -993,7 +1202,7 @@ function ArticleChaptersAuthorComponent({
993
1202
  }
994
1203
  );
995
1204
  }, [heroMediaSlot, heroImageSrc, heroImageAlt, heroImageClassName, optixFlowConfig]);
996
- const conclusionContent = React4.useMemo(() => {
1205
+ const conclusionContent = React6.useMemo(() => {
997
1206
  if (conclusionSlot) return conclusionSlot;
998
1207
  if (!conclusionTitle && !conclusionDescription && (!conclusionActions || conclusionActions.length === 0)) return null;
999
1208
  return /* @__PURE__ */ jsxs("div", { className: cn("mt-12 rounded-lg border bg-muted/50 p-6 not-prose", conclusionClassName), children: [
@@ -1018,24 +1227,34 @@ function ArticleChaptersAuthorComponent({
1018
1227
  }) })
1019
1228
  ] });
1020
1229
  }, [conclusionSlot, conclusionTitle, conclusionDescription, conclusionActions, conclusionClassName]);
1021
- return /* @__PURE__ */ jsx("section", { className: cn("py-32", className), children: /* @__PURE__ */ jsxs("div", { className: cn("container", containerClassName), children: [
1022
- breadcrumbsContent,
1023
- /* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
1024
- title && (typeof title === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
1025
- subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-lg text-muted-foreground md:text-xl", subtitleClassName), children: subtitle }) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", subtitleClassName), children: subtitle }))
1026
- ] }),
1027
- /* @__PURE__ */ jsxs("div", { className: "grid gap-10 lg:grid-cols-[280px_minmax(0,1fr)]", children: [
1028
- /* @__PURE__ */ jsx("aside", { className: cn("hidden lg:block", sidebarClassName), children: /* @__PURE__ */ jsxs("div", { className: "sticky top-8 space-y-6", children: [
1029
- chaptersNavContent,
1030
- authorCardContent
1031
- ] }) }),
1032
- /* @__PURE__ */ jsxs("article", { className: cn("prose max-w-none dark:prose-invert", articleClassName), children: [
1033
- heroMediaContent,
1034
- children || defaultArticleContent(optixFlowConfig),
1035
- conclusionContent
1230
+ return /* @__PURE__ */ jsx(
1231
+ Section,
1232
+ {
1233
+ background,
1234
+ spacing,
1235
+ pattern,
1236
+ patternOpacity,
1237
+ className,
1238
+ children: /* @__PURE__ */ jsxs("div", { className: cn("container", containerClassName), children: [
1239
+ breadcrumbsContent,
1240
+ /* @__PURE__ */ jsxs("div", { className: cn("mb-12 text-center", headerClassName), children: [
1241
+ title && (typeof title === "string" ? /* @__PURE__ */ jsx("h1", { className: cn("text-4xl font-bold tracking-tight md:text-5xl lg:text-6xl", titleClassName), children: title }) : /* @__PURE__ */ jsx("div", { className: titleClassName, children: title })),
1242
+ subtitle && (typeof subtitle === "string" ? /* @__PURE__ */ jsx("p", { className: cn("mt-4 text-lg text-muted-foreground md:text-xl", subtitleClassName), children: subtitle }) : /* @__PURE__ */ jsx("div", { className: cn("mt-4", subtitleClassName), children: subtitle }))
1243
+ ] }),
1244
+ /* @__PURE__ */ jsxs("div", { className: "grid gap-10 lg:grid-cols-[280px_minmax(0,1fr)]", children: [
1245
+ /* @__PURE__ */ jsx("aside", { className: cn("hidden lg:block", sidebarClassName), children: /* @__PURE__ */ jsxs("div", { className: "sticky top-8 space-y-6", children: [
1246
+ chaptersNavContent,
1247
+ authorCardContent
1248
+ ] }) }),
1249
+ /* @__PURE__ */ jsxs("article", { className: cn("prose max-w-none dark:prose-invert", articleClassName), children: [
1250
+ heroMediaContent,
1251
+ children,
1252
+ conclusionContent
1253
+ ] })
1254
+ ] })
1036
1255
  ] })
1037
- ] })
1038
- ] }) });
1256
+ }
1257
+ );
1039
1258
  }
1040
1259
 
1041
1260
  export { ArticleChaptersAuthorComponent as ArticleChaptersAuthor };