@x-wave/blog 2.2.4 → 2.2.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 (3) hide show
  1. package/index.js +223 -223
  2. package/package.json +1 -1
  3. package/styles/index.css +1 -1
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsxs as i, jsx as e, Fragment as U } from "react/jsx-runtime";
2
- import { useTranslation as j } from "react-i18next";
3
- import { useLocation as Y, useNavigate as Q, Link as de, useParams as pe, Navigate as qe, Routes as Xe, Route as Le } from "react-router-dom";
2
+ import { useTranslation as D } from "react-i18next";
3
+ import { useLocation as Y, useNavigate as Q, Link as de, useParams as pe, Navigate as qe, Routes as Xe, Route as xe } from "react-router-dom";
4
4
  import { CaretLeft as Ye, CaretRight as Oe, ArrowSquareOut as Ve, User as Je, CalendarBlank as Ze, X as ve, Tag as et, MagnifyingGlass as Se, List as tt, Sun as Pe, Moon as Me, Monitor as Be, CaretDown as _e, Globe as nt } from "@phosphor-icons/react";
5
5
  import { useState as T, useEffect as S, createContext as at, useContext as ot, useRef as G } from "react";
6
6
  import st from "i18next";
@@ -13,7 +13,7 @@ const lt = "_tabContainer_zk6h4_1", it = "_tab_zk6h4_1", dt = "_active_zk6h4_45"
13
13
  active: dt
14
14
  };
15
15
  function ut({ hasAdvanced: t }) {
16
- const { t: n } = j(), s = Y(), c = Q();
16
+ const { t: n } = D(), s = Y(), c = Q();
17
17
  if (!t) return null;
18
18
  const r = new URLSearchParams(s.search).has("advanced"), _ = () => {
19
19
  if (r) {
@@ -71,12 +71,12 @@ function He(t) {
71
71
  continue;
72
72
  }
73
73
  if (l && !k.startsWith("-") && (a[o] = v.slice(), v.length = 0, l = !1), k != null && k.includes(":")) {
74
- const [f, ...b] = k.split(":"), $ = b.join(":").trim();
75
- if (o = f.trim(), !$) {
74
+ const [f, ...b] = k.split(":"), y = b.join(":").trim();
75
+ if (o = f.trim(), !y) {
76
76
  l = !0;
77
77
  continue;
78
78
  }
79
- $ === "true" ? a[o] = !0 : $ === "false" ? a[o] = !1 : a[o] = $;
79
+ y === "true" ? a[o] = !0 : y === "false" ? a[o] = !1 : a[o] = y;
80
80
  }
81
81
  }
82
82
  l && v.length > 0 && (a[o] = v);
@@ -193,10 +193,10 @@ function Vo(t) {
193
193
  discoverArticles: n.discoverArticles
194
194
  };
195
195
  }
196
- const Ee = "app-theme", Fe = () => typeof window > "u" ? "light" : window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light", Ae = (t) => t === "system" ? Fe() : t, ze = (t) => {
197
- const n = () => t || (typeof window > "u" ? "system" : localStorage.getItem(Ee) || "system"), [s, c] = T(n);
196
+ const je = "app-theme", Fe = () => typeof window > "u" ? "light" : window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light", Ee = (t) => t === "system" ? Fe() : t, ze = (t) => {
197
+ const n = () => t || (typeof window > "u" ? "system" : localStorage.getItem(je) || "system"), [s, c] = T(n);
198
198
  return S(() => {
199
- const r = Ae(s), _ = document.querySelector(".xw-blog-root");
199
+ const r = Ee(s), _ = document.querySelector(".xw-blog-root");
200
200
  if (_ && (_.classList.remove("light", "dark"), _.classList.add(r)), s === "system") {
201
201
  const d = window.matchMedia("(prefers-color-scheme: dark)"), u = () => {
202
202
  const a = Fe(), m = document.querySelector(".xw-blog-root");
@@ -207,11 +207,11 @@ const Ee = "app-theme", Fe = () => typeof window > "u" ? "light" : window.matchM
207
207
  }, [s]), {
208
208
  theme: s,
209
209
  setTheme: (r) => {
210
- localStorage.setItem(Ee, r), c(r);
210
+ localStorage.setItem(je, r), c(r);
211
211
  },
212
- effectiveTheme: Ae(s)
212
+ effectiveTheme: Ee(s)
213
213
  };
214
- }, mt = (t) => "items" in t, De = (t) => "items" in t, _t = async (t, n, s) => {
214
+ }, mt = (t) => "items" in t, Ae = (t) => "items" in t, _t = async (t, n, s) => {
215
215
  const c = [];
216
216
  for (const h of t)
217
217
  if (mt(h)) {
@@ -320,7 +320,7 @@ function Ue(t) {
320
320
  h === "advanced" ? n.advanced = !0 : h.startsWith("a=") && (n.anchor = h.substring(2));
321
321
  return n;
322
322
  }
323
- function je(t, n = 80) {
323
+ function De(t, n = 80) {
324
324
  const s = document.getElementById(t);
325
325
  if (s) {
326
326
  const h = s.getBoundingClientRect().top + window.pageYOffset - n;
@@ -341,15 +341,15 @@ function ft(t = "smooth") {
341
341
  behavior: t
342
342
  });
343
343
  }
344
- const bt = "_articleNavigation_kz84g_1", kt = "_navContainer_kz84g_7", Nt = "_navLink_kz84g_24", wt = "_navLinkContent_kz84g_61", It = "_navIcon_kz84g_76", $t = "_navText_kz84g_83", Ct = "_navLabel_kz84g_90", yt = "_navTitle_kz84g_98", q = {
344
+ const bt = "_articleNavigation_kz84g_1", kt = "_navContainer_kz84g_7", Nt = "_navLink_kz84g_24", wt = "_navLinkContent_kz84g_61", It = "_navIcon_kz84g_76", yt = "_navText_kz84g_83", $t = "_navLabel_kz84g_90", Ct = "_navTitle_kz84g_98", q = {
345
345
  articleNavigation: bt,
346
346
  navContainer: kt,
347
347
  navLink: Nt,
348
348
  navLinkContent: wt,
349
349
  navIcon: It,
350
- navText: $t,
351
- navLabel: Ct,
352
- navTitle: yt
350
+ navText: yt,
351
+ navLabel: $t,
352
+ navTitle: Ct
353
353
  };
354
354
  function Tt({
355
355
  prevSlug: t,
@@ -358,7 +358,7 @@ function Tt({
358
358
  nextTitle: c,
359
359
  language: h
360
360
  }) {
361
- const { t: r } = j(), { config: _ } = R(), d = Y(), a = Ue(d.search).advanced, m = _.basePath || "", o = (v) => {
361
+ const { t: r } = D(), { config: _ } = R(), d = Y(), a = Ue(d.search).advanced, m = _.basePath || "", o = (v) => {
362
362
  const w = `${m}/${h}/${v}`;
363
363
  return a ? `${w}?advanced=true` : w;
364
364
  };
@@ -400,15 +400,15 @@ function Tt({
400
400
  ) : /* @__PURE__ */ e("div", {})
401
401
  ] }) });
402
402
  }
403
- const xt = "_blogSidebar_n1up9_1", Lt = "_section_n1up9_21", St = "_sectionTitle_n1up9_28", Pt = "_linksList_n1up9_35", Mt = "_link_n1up9_35", oe = {
404
- blogSidebar: xt,
405
- section: Lt,
403
+ const Lt = "_blogSidebar_n1up9_1", xt = "_section_n1up9_21", St = "_sectionTitle_n1up9_28", Pt = "_linksList_n1up9_35", Mt = "_link_n1up9_35", oe = {
404
+ blogSidebar: Lt,
405
+ section: xt,
406
406
  sectionTitle: St,
407
407
  linksList: Pt,
408
408
  link: Mt
409
409
  };
410
410
  function Bt() {
411
- const { t } = j(), { config: n } = R(), s = n.socialLinks || [];
411
+ const { t } = D(), { config: n } = R(), s = n.socialLinks || [];
412
412
  return s.length === 0 ? null : /* @__PURE__ */ e("aside", { className: oe.blogSidebar, children: /* @__PURE__ */ i("div", { className: oe.section, children: [
413
413
  /* @__PURE__ */ e("h3", { className: oe.sectionTitle, children: t("ui.connect") }),
414
414
  /* @__PURE__ */ e("div", { className: oe.linksList, children: s.map((c, h) => {
@@ -430,16 +430,16 @@ function Bt() {
430
430
  }) })
431
431
  ] }) });
432
432
  }
433
- const Et = "_breadcrumb_rarc4_1", At = "_breadcrumbList_rarc4_5", Dt = "_breadcrumbItem_rarc4_15", jt = "_breadcrumbLink_rarc4_21", Rt = "_breadcrumbSeparator_rarc4_41", qt = "_breadcrumbCurrent_rarc4_46", X = {
434
- breadcrumb: Et,
435
- breadcrumbList: At,
436
- breadcrumbItem: Dt,
437
- breadcrumbLink: jt,
433
+ const jt = "_breadcrumb_rarc4_1", Et = "_breadcrumbList_rarc4_5", At = "_breadcrumbItem_rarc4_15", Dt = "_breadcrumbLink_rarc4_21", Rt = "_breadcrumbSeparator_rarc4_41", qt = "_breadcrumbCurrent_rarc4_46", X = {
434
+ breadcrumb: jt,
435
+ breadcrumbList: Et,
436
+ breadcrumbItem: At,
437
+ breadcrumbLink: Dt,
438
438
  breadcrumbSeparator: Rt,
439
439
  breadcrumbCurrent: qt
440
440
  };
441
441
  function Ot({ articleTitle: t, language: n }) {
442
- const { t: s } = j(), { config: c } = R(), h = Q(), _ = `${c.basePath || ""}/${n}`, d = (a) => {
442
+ const { t: s } = D(), { config: c } = R(), h = Q(), _ = `${c.basePath || ""}/${n}`, d = (a) => {
443
443
  a.preventDefault(), window.scrollTo({ top: 0, left: 0, behavior: "auto" }), h(_);
444
444
  }, u = (a, m = 60) => a.length <= m ? a : `${a.substring(0, m)}…`;
445
445
  return /* @__PURE__ */ e("nav", { className: X.breadcrumb, "aria-label": "Breadcrumb", children: /* @__PURE__ */ i("ol", { className: X.breadcrumbList, children: [
@@ -464,7 +464,7 @@ const Wt = "_metadata_bsge0_1", Ht = "_author_bsge0_9", Ft = "_date_bsge0_10", m
464
464
  date: Ft
465
465
  };
466
466
  function ge({ date: t, author: n }) {
467
- const { t: s } = j();
467
+ const { t: s } = D();
468
468
  return !t && !n ? null : /* @__PURE__ */ i("div", { className: me.metadata, children: [
469
469
  n && /* @__PURE__ */ i("span", { className: me.author, children: [
470
470
  /* @__PURE__ */ e(Je, { size: 16, weight: "regular" }),
@@ -497,20 +497,20 @@ function an({
497
497
  content: t,
498
498
  englishContent: n
499
499
  }) {
500
- const { t: s } = j(), c = Y(), h = Q(), [r, _] = T([]), [d, u] = T(""), a = G(null);
500
+ const { t: s } = D(), c = Y(), h = Q(), [r, _] = T([]), [d, u] = T(""), a = G(null);
501
501
  S(() => {
502
502
  u(""), (() => {
503
503
  const l = /^(#{1,6})\s+(.+)$/gm, v = [];
504
504
  let w = l.exec(t);
505
505
  const g = [];
506
506
  for (; w !== null; ) {
507
- const $ = w[1].length, P = w[2].trim();
508
- g.push({ level: $, text: P }), w = l.exec(t);
507
+ const y = w[1].length, P = w[2].trim();
508
+ g.push({ level: y, text: P }), w = l.exec(t);
509
509
  }
510
510
  const k = /^(#{1,6})\s+(.+)$/gm;
511
511
  let f = k.exec(n), b = 0;
512
512
  for (; f !== null && b < g.length; ) {
513
- const $ = f[2].trim(), P = ee($);
513
+ const y = f[2].trim(), P = ee(y);
514
514
  v.push({
515
515
  id: P,
516
516
  text: g[b].text,
@@ -605,7 +605,7 @@ function pn({
605
605
  language: s,
606
606
  onClose: c
607
607
  }) {
608
- const { t: h } = j(), { config: r } = R(), _ = Q(), d = (u) => {
608
+ const { t: h } = D(), { config: r } = R(), _ = Q(), d = (u) => {
609
609
  const a = r.basePath || "";
610
610
  _(`${a}/${s}/${u}`), c();
611
611
  };
@@ -656,7 +656,7 @@ const vn = "_tags_11t8a_1", fn = "_compact_11t8a_9", bn = "_tagLabel_11t8a_15",
656
656
  tag: wn
657
657
  };
658
658
  function In({ tags: t, variant: n = "default", onTagClick: s }) {
659
- const { t: c } = j();
659
+ const { t: c } = D();
660
660
  if (!t || t.length === 0) return null;
661
661
  const h = (r) => {
662
662
  s && s(r);
@@ -688,18 +688,18 @@ function In({ tags: t, variant: n = "default", onTagClick: s }) {
688
688
  }
689
689
  );
690
690
  }
691
- const $n = "_contentPage_mc666_1", Cn = "_withMetadata_mc666_30", yn = "_loadingContainer_mc666_64", Tn = "_errorContainer_mc666_65", xn = "_skeletonTitle_mc666_87", Ln = "_skeletonParagraph_mc666_96", Sn = "_skeletonParagraphShort_mc666_109", Pn = "_errorText_mc666_123", Mn = "_mdxContent_mc666_128", Bn = "_codeBlock_mc666_316", En = "_codeLanguage_mc666_320", D = {
692
- contentPage: $n,
693
- withMetadata: Cn,
694
- loadingContainer: yn,
691
+ const yn = "_contentPage_1jss6_1", $n = "_withMetadata_1jss6_30", Cn = "_loadingContainer_1jss6_64", Tn = "_errorContainer_1jss6_65", Ln = "_skeletonTitle_1jss6_87", xn = "_skeletonParagraph_1jss6_96", Sn = "_skeletonParagraphShort_1jss6_109", Pn = "_errorText_1jss6_123", Mn = "_mdxContent_1jss6_128", Bn = "_codeBlock_1jss6_316", jn = "_codeLanguage_1jss6_320", A = {
692
+ contentPage: yn,
693
+ withMetadata: $n,
694
+ loadingContainer: Cn,
695
695
  errorContainer: Tn,
696
- skeletonTitle: xn,
697
- skeletonParagraph: Ln,
696
+ skeletonTitle: Ln,
697
+ skeletonParagraph: xn,
698
698
  skeletonParagraphShort: Sn,
699
699
  errorText: Pn,
700
700
  mdxContent: Mn,
701
701
  codeBlock: Bn,
702
- codeLanguage: En
702
+ codeLanguage: jn
703
703
  }, Re = (t) => {
704
704
  const n = t.match(/^\s*#\s+(.+)\s*(?:\n+|$)/);
705
705
  return n ? {
@@ -707,9 +707,9 @@ const $n = "_contentPage_mc666_1", Cn = "_withMetadata_mc666_30", yn = "_loading
707
707
  content: t.replace(/^\s*#\s+.+\s*(?:\n+|$)/, "")
708
708
  } : { title: void 0, content: t };
709
709
  };
710
- function An({ language: t }) {
711
- var we, Ie, $e, Ce, ye;
712
- const { slug: n } = pe(), s = Y(), { config: c, loadContent: h, loadEnglishContent: r, discoverArticles: _ } = R(), [d, u] = T(""), [a, m] = T(""), [o, l] = T({}), [v, w] = T(!0), [g, k] = T(null), [f, b] = T(!0), [$, P] = T(null), [N, y] = T(""), [M, W] = T({}), z = G(0), te = G([]), ce = Ue(s.search), V = ce.advanced;
710
+ function En({ language: t }) {
711
+ var we, Ie, ye, $e, Ce;
712
+ const { slug: n } = pe(), s = Y(), { config: c, loadContent: h, loadEnglishContent: r, discoverArticles: _ } = R(), [d, u] = T(""), [a, m] = T(""), [o, l] = T({}), [v, w] = T(!0), [g, k] = T(null), [f, b] = T(!0), [y, P] = T(null), [N, C] = T(""), [M, W] = T({}), z = G(0), te = G([]), ce = Ue(s.search), V = ce.advanced;
713
713
  if (S(() => {
714
714
  (async () => {
715
715
  if (n) {
@@ -726,28 +726,28 @@ function An({ language: t }) {
726
726
  }
727
727
  const B = I.frontmatter.showTableOfContents !== !1;
728
728
  b(B);
729
- let x = "";
729
+ let L = "";
730
730
  try {
731
- x = await r(n, V);
731
+ L = await r(n, V);
732
732
  } catch {
733
- V && (x = await r(n, !1));
733
+ V && (L = await r(n, !1));
734
734
  }
735
- const A = typeof I.frontmatter.title == "string" ? I.frontmatter.title : void 0;
736
- let ne = I.content, J = x, ue = "";
737
- if (A) {
738
- const ie = Re(x), Qe = Re(I.content);
735
+ const E = typeof I.frontmatter.title == "string" ? I.frontmatter.title : void 0;
736
+ let ne = I.content, J = L, ue = "";
737
+ if (E) {
738
+ const ie = Re(L), Qe = Re(I.content);
739
739
  ue = ie.title || "", J = ie.content, ne = Qe.content;
740
740
  } else
741
741
  ue = "";
742
- const Te = /^(#{1,6})\s+(.+)$/gm, xe = [];
742
+ const Te = /^(#{1,6})\s+(.+)$/gm, Le = [];
743
743
  let he = Te.exec(
744
744
  J
745
745
  );
746
746
  for (; he !== null; ) {
747
747
  const ie = he[2].trim();
748
- xe.push(ie), he = Te.exec(J);
748
+ Le.push(ie), he = Te.exec(J);
749
749
  }
750
- te.current = xe, y(ue), m(J), u(ne), l(I.frontmatter);
750
+ te.current = Le, C(ue), m(J), u(ne), l(I.frontmatter);
751
751
  } catch (I) {
752
752
  k(I instanceof Error ? I.message : "Failed to load content");
753
753
  } finally {
@@ -758,7 +758,7 @@ function An({ language: t }) {
758
758
  }, [n, t, V, h, r]), S(() => {
759
759
  if (!v && ce.anchor) {
760
760
  const p = setTimeout(() => {
761
- je(ce.anchor);
761
+ De(ce.anchor);
762
762
  }, 150);
763
763
  return () => clearTimeout(p);
764
764
  }
@@ -776,14 +776,14 @@ function An({ language: t }) {
776
776
  }
777
777
  })();
778
778
  }, [n, t, c.showArticleNavigation, _]), v)
779
- return /* @__PURE__ */ e("div", { className: D.contentPage, children: /* @__PURE__ */ i("div", { className: D.loadingContainer, children: [
780
- /* @__PURE__ */ e("div", { className: D.skeletonTitle }),
781
- /* @__PURE__ */ e("div", { className: D.skeletonParagraph }),
782
- /* @__PURE__ */ e("div", { className: D.skeletonParagraph }),
783
- /* @__PURE__ */ e("div", { className: D.skeletonParagraphShort })
779
+ return /* @__PURE__ */ e("div", { className: A.contentPage, children: /* @__PURE__ */ i("div", { className: A.loadingContainer, children: [
780
+ /* @__PURE__ */ e("div", { className: A.skeletonTitle }),
781
+ /* @__PURE__ */ e("div", { className: A.skeletonParagraph }),
782
+ /* @__PURE__ */ e("div", { className: A.skeletonParagraph }),
783
+ /* @__PURE__ */ e("div", { className: A.skeletonParagraphShort })
784
784
  ] }) });
785
785
  if (g)
786
- return /* @__PURE__ */ e("div", { className: D.contentPage, children: /* @__PURE__ */ e("div", { className: D.errorContainer, children: /* @__PURE__ */ i("div", { className: D.errorText, children: [
786
+ return /* @__PURE__ */ e("div", { className: A.contentPage, children: /* @__PURE__ */ e("div", { className: A.errorContainer, children: /* @__PURE__ */ i("div", { className: A.errorText, children: [
787
787
  "Error: ",
788
788
  g
789
789
  ] }) }) });
@@ -791,10 +791,10 @@ function An({ language: t }) {
791
791
  z.current = 0;
792
792
  let Ne = !1;
793
793
  const le = (p, I) => {
794
- p.preventDefault(), je(I), vt(I, V);
794
+ p.preventDefault(), De(I), vt(I, V);
795
795
  };
796
796
  return /* @__PURE__ */ i(U, { children: [
797
- /* @__PURE__ */ i("div", { className: D.contentPage, children: [
797
+ /* @__PURE__ */ i("div", { className: A.contentPage, children: [
798
798
  /* @__PURE__ */ e(ut, { hasAdvanced: o.hasAdvanced || !1 }),
799
799
  re && /* @__PURE__ */ i(U, { children: [
800
800
  /* @__PURE__ */ e(Ot, { articleTitle: o.title, language: t }),
@@ -802,40 +802,40 @@ function An({ language: t }) {
802
802
  "h1",
803
803
  {
804
804
  id: Ge,
805
- className: ke ? D.withMetadata : void 0,
805
+ className: ke ? A.withMetadata : void 0,
806
806
  style: c.articleTitleFont ? { fontFamily: c.articleTitleFont } : void 0,
807
807
  children: o.title
808
808
  }
809
809
  ),
810
810
  ke && /* @__PURE__ */ e(ge, { date: o.date, author: o.author })
811
811
  ] }),
812
- /* @__PURE__ */ e("div", { className: D.mdxContent, children: /* @__PURE__ */ e(
812
+ /* @__PURE__ */ e("div", { className: A.mdxContent, children: /* @__PURE__ */ e(
813
813
  ct,
814
814
  {
815
815
  remarkPlugins: [rt],
816
816
  components: {
817
817
  h1: ({ children: p }) => {
818
- const I = z.current++, B = te.current[I] || "", x = ee(B), A = !Ne;
818
+ const I = z.current++, B = te.current[I] || "", L = ee(B), E = !Ne;
819
819
  Ne = !0;
820
820
  const ne = o.date || o.author;
821
821
  return /* @__PURE__ */ i(U, { children: [
822
822
  /* @__PURE__ */ e(
823
823
  "h1",
824
824
  {
825
- id: x,
826
- className: A && ne && !re ? D.withMetadata : void 0,
825
+ id: L,
826
+ className: E && ne && !re ? A.withMetadata : void 0,
827
827
  children: /* @__PURE__ */ e(
828
828
  "a",
829
829
  {
830
- href: `#${x}`,
831
- onClick: (J) => le(J, x),
830
+ href: `#${L}`,
831
+ onClick: (J) => le(J, L),
832
832
  style: { color: "inherit", textDecoration: "none" },
833
833
  children: p
834
834
  }
835
835
  )
836
836
  }
837
837
  ),
838
- A && ne && !re && /* @__PURE__ */ e(
838
+ E && ne && !re && /* @__PURE__ */ e(
839
839
  ge,
840
840
  {
841
841
  date: o.date,
@@ -845,36 +845,36 @@ function An({ language: t }) {
845
845
  ] });
846
846
  },
847
847
  h2: ({ children: p }) => {
848
- const I = z.current++, B = te.current[I] || "", x = ee(B);
849
- return /* @__PURE__ */ e("h2", { id: x, children: /* @__PURE__ */ e(
848
+ const I = z.current++, B = te.current[I] || "", L = ee(B);
849
+ return /* @__PURE__ */ e("h2", { id: L, children: /* @__PURE__ */ e(
850
850
  "a",
851
851
  {
852
- href: `#${x}`,
853
- onClick: (A) => le(A, x),
852
+ href: `#${L}`,
853
+ onClick: (E) => le(E, L),
854
854
  style: { color: "inherit", textDecoration: "none" },
855
855
  children: p
856
856
  }
857
857
  ) });
858
858
  },
859
859
  h3: ({ children: p }) => {
860
- const I = z.current++, B = te.current[I] || "", x = ee(B);
861
- return /* @__PURE__ */ e("h3", { id: x, children: /* @__PURE__ */ e(
860
+ const I = z.current++, B = te.current[I] || "", L = ee(B);
861
+ return /* @__PURE__ */ e("h3", { id: L, children: /* @__PURE__ */ e(
862
862
  "a",
863
863
  {
864
- href: `#${x}`,
865
- onClick: (A) => le(A, x),
864
+ href: `#${L}`,
865
+ onClick: (E) => le(E, L),
866
866
  style: { color: "inherit", textDecoration: "none" },
867
867
  children: p
868
868
  }
869
869
  ) });
870
870
  },
871
871
  h4: ({ children: p }) => {
872
- const I = z.current++, B = te.current[I] || "", x = ee(B);
873
- return /* @__PURE__ */ e("h4", { id: x, children: /* @__PURE__ */ e(
872
+ const I = z.current++, B = te.current[I] || "", L = ee(B);
873
+ return /* @__PURE__ */ e("h4", { id: L, children: /* @__PURE__ */ e(
874
874
  "a",
875
875
  {
876
- href: `#${x}`,
877
- onClick: (A) => le(A, x),
876
+ href: `#${L}`,
877
+ onClick: (E) => le(E, L),
878
878
  style: { color: "inherit", textDecoration: "none" },
879
879
  children: p
880
880
  }
@@ -895,9 +895,9 @@ function An({ language: t }) {
895
895
  code: ({ className: p, children: I, ...B }) => {
896
896
  if (!p)
897
897
  return /* @__PURE__ */ e("code", { ...B, children: I });
898
- const A = (p == null ? void 0 : p.replace("language-", "")) || "";
899
- return /* @__PURE__ */ i("div", { className: D.codeBlock, children: [
900
- A && /* @__PURE__ */ e("div", { className: D.codeLanguage, children: A }),
898
+ const E = (p == null ? void 0 : p.replace("language-", "")) || "";
899
+ return /* @__PURE__ */ i("div", { className: A.codeBlock, children: [
900
+ E && /* @__PURE__ */ e("div", { className: A.codeLanguage, children: E }),
901
901
  /* @__PURE__ */ e("pre", { children: /* @__PURE__ */ e("code", { className: p, ...B, children: I }) })
902
902
  ] });
903
903
  },
@@ -906,12 +906,12 @@ function An({ language: t }) {
906
906
  blockquote: ({ children: p }) => /* @__PURE__ */ e("blockquote", { children: p }),
907
907
  a: ({ href: p, children: I, ...B }) => {
908
908
  if (p != null && p.startsWith("./")) {
909
- const x = p.slice(2), A = pt(
910
- x,
909
+ const L = p.slice(2), E = pt(
910
+ L,
911
911
  t,
912
912
  c.basePath
913
913
  );
914
- return /* @__PURE__ */ e("a", { href: A, ...B, children: I });
914
+ return /* @__PURE__ */ e("a", { href: E, ...B, children: I });
915
915
  }
916
916
  return p != null && p.startsWith("http://") || p != null && p.startsWith("https://") ? /* @__PURE__ */ e(
917
917
  "a",
@@ -944,27 +944,27 @@ function An({ language: t }) {
944
944
  {
945
945
  prevSlug: (we = M.prev) == null ? void 0 : we.slug,
946
946
  prevTitle: (Ie = M.prev) == null ? void 0 : Ie.title,
947
- nextSlug: ($e = M.next) == null ? void 0 : $e.slug,
948
- nextTitle: (Ce = M.next) == null ? void 0 : Ce.title,
947
+ nextSlug: (ye = M.next) == null ? void 0 : ye.slug,
948
+ nextTitle: ($e = M.next) == null ? void 0 : $e.title,
949
949
  language: t
950
950
  }
951
951
  )
952
952
  ] }),
953
953
  f && /* @__PURE__ */ e(an, { content: d, englishContent: a }),
954
- $ && ((ye = c.tagIndex) == null ? void 0 : ye[t]) && /* @__PURE__ */ e(
954
+ y && ((Ce = c.tagIndex) == null ? void 0 : Ce[t]) && /* @__PURE__ */ e(
955
955
  pn,
956
956
  {
957
- tag: $,
958
- results: c.tagIndex[t][$] || [],
957
+ tag: y,
958
+ results: c.tagIndex[t][y] || [],
959
959
  language: t,
960
960
  onClose: () => P(null)
961
961
  }
962
962
  )
963
963
  ] });
964
964
  }
965
- const Dn = "_searchButton_1k9sl_1", jn = "_searchIcon_1k9sl_17", Rn = "_searchHint_1k9sl_23", qn = "_kbd_1k9sl_27", On = "_searchOverlay_1k9sl_42", Wn = "_searchModal_1k9sl_67", Hn = "_searchHeader_1k9sl_91", Fn = "_searchInput_1k9sl_105", zn = "_closeButton_1k9sl_123", Kn = "_searchResults_1k9sl_144", Un = "_resultsList_1k9sl_152", Gn = "_resultItem_1k9sl_158", Qn = "_selected_1k9sl_173", Xn = "_resultTitle_1k9sl_176", Yn = "_resultSlug_1k9sl_180", Vn = "_noResults_1k9sl_186", Jn = "_searchHints_1k9sl_193", Zn = "_hint_1k9sl_210", L = {
966
- searchButton: Dn,
967
- searchIcon: jn,
965
+ const An = "_searchButton_1k9sl_1", Dn = "_searchIcon_1k9sl_17", Rn = "_searchHint_1k9sl_23", qn = "_kbd_1k9sl_27", On = "_searchOverlay_1k9sl_42", Wn = "_searchModal_1k9sl_67", Hn = "_searchHeader_1k9sl_91", Fn = "_searchInput_1k9sl_105", zn = "_closeButton_1k9sl_123", Kn = "_searchResults_1k9sl_144", Un = "_resultsList_1k9sl_152", Gn = "_resultItem_1k9sl_158", Qn = "_selected_1k9sl_173", Xn = "_resultTitle_1k9sl_176", Yn = "_resultSlug_1k9sl_180", Vn = "_noResults_1k9sl_186", Jn = "_searchHints_1k9sl_193", Zn = "_hint_1k9sl_210", x = {
966
+ searchButton: An,
967
+ searchIcon: Dn,
968
968
  searchHint: Rn,
969
969
  kbd: qn,
970
970
  searchOverlay: On,
@@ -983,7 +983,7 @@ const Dn = "_searchButton_1k9sl_1", jn = "_searchIcon_1k9sl_17", Rn = "_searchHi
983
983
  hint: Zn
984
984
  };
985
985
  function ea({ language: t }) {
986
- const { t: n } = j(), s = Q(), { config: c, discoverArticles: h } = R(), [r, _] = T(!1), [d, u] = T(""), [a, m] = T([]), [o, l] = T(0), [v, w] = T([]), g = G(null), k = G(null), b = typeof navigator < "u" && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) ? "⌘K" : "Ctrl+K";
986
+ const { t: n } = D(), s = Q(), { config: c, discoverArticles: h } = R(), [r, _] = T(!1), [d, u] = T(""), [a, m] = T([]), [o, l] = T(0), [v, w] = T([]), g = G(null), k = G(null), b = typeof navigator < "u" && /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform) ? "⌘K" : "Ctrl+K";
987
987
  S(() => {
988
988
  (async () => {
989
989
  try {
@@ -993,8 +993,8 @@ function ea({ language: t }) {
993
993
  description: W.description
994
994
  }));
995
995
  w(M);
996
- } catch (y) {
997
- console.error("Failed to build search index:", y);
996
+ } catch (C) {
997
+ console.error("Failed to build search index:", C);
998
998
  }
999
999
  })();
1000
1000
  }, [t, h]), S(() => {
@@ -1002,19 +1002,19 @@ function ea({ language: t }) {
1002
1002
  m([]), l(0);
1003
1003
  return;
1004
1004
  }
1005
- const N = d.toLowerCase(), y = v.filter(
1005
+ const N = d.toLowerCase(), C = v.filter(
1006
1006
  (M) => {
1007
1007
  var W;
1008
1008
  return M.title.toLowerCase().includes(N) || M.slug.toLowerCase().includes(N) || ((W = M.description) == null ? void 0 : W.toLowerCase().includes(N));
1009
1009
  }
1010
1010
  );
1011
- m(y), l(0);
1011
+ m(C), l(0);
1012
1012
  }, [d, v]), S(() => {
1013
- const N = (y) => {
1014
- (y.metaKey || y.ctrlKey) && y.key === "k" && (y.preventDefault(), _(!0), setTimeout(() => {
1013
+ const N = (C) => {
1014
+ (C.metaKey || C.ctrlKey) && C.key === "k" && (C.preventDefault(), _(!0), setTimeout(() => {
1015
1015
  var M;
1016
1016
  return (M = g.current) == null ? void 0 : M.focus();
1017
- }, 100)), y.key === "Escape" && r && (_(!1), u(""));
1017
+ }, 100)), C.key === "Escape" && r && (_(!1), u(""));
1018
1018
  };
1019
1019
  return document.addEventListener("keydown", N), () => document.removeEventListener("keydown", N);
1020
1020
  }, [r]), S(() => {
@@ -1023,32 +1023,32 @@ function ea({ language: t }) {
1023
1023
  var M;
1024
1024
  return (M = g.current) == null ? void 0 : M.focus();
1025
1025
  }, 100);
1026
- }, y = () => {
1026
+ }, C = () => {
1027
1027
  _(!1), u("");
1028
1028
  };
1029
- return window.addEventListener("blog:open-search", N), window.addEventListener("blog:close-search", y), () => {
1030
- window.removeEventListener("blog:open-search", N), window.removeEventListener("blog:close-search", y);
1029
+ return window.addEventListener("blog:open-search", N), window.addEventListener("blog:close-search", C), () => {
1030
+ window.removeEventListener("blog:open-search", N), window.removeEventListener("blog:close-search", C);
1031
1031
  };
1032
1032
  }, []);
1033
- const $ = (N) => {
1034
- N.key === "ArrowDown" ? (N.preventDefault(), l((y) => Math.min(y + 1, a.length - 1))) : N.key === "ArrowUp" ? (N.preventDefault(), l((y) => Math.max(y - 1, 0))) : N.key === "Enter" && a[o] && (N.preventDefault(), P(a[o].slug));
1033
+ const y = (N) => {
1034
+ N.key === "ArrowDown" ? (N.preventDefault(), l((C) => Math.min(C + 1, a.length - 1))) : N.key === "ArrowUp" ? (N.preventDefault(), l((C) => Math.max(C - 1, 0))) : N.key === "Enter" && a[o] && (N.preventDefault(), P(a[o].slug));
1035
1035
  };
1036
1036
  S(() => {
1037
- const N = (y) => {
1038
- k.current && !k.current.contains(y.target) && (_(!1), u(""));
1037
+ const N = (C) => {
1038
+ k.current && !k.current.contains(C.target) && (_(!1), u(""));
1039
1039
  };
1040
1040
  return r && document.addEventListener("mousedown", N), () => document.removeEventListener("mousedown", N);
1041
1041
  }, [r]);
1042
1042
  const P = (N) => {
1043
- const y = c.basePath || "";
1044
- s(`${y}/${t}/${N}`), _(!1), u("");
1043
+ const C = c.basePath || "";
1044
+ s(`${C}/${t}/${N}`), _(!1), u("");
1045
1045
  };
1046
1046
  return /* @__PURE__ */ i(U, { children: [
1047
1047
  /* @__PURE__ */ i(
1048
1048
  "button",
1049
1049
  {
1050
1050
  type: "button",
1051
- className: L.searchButton,
1051
+ className: x.searchButton,
1052
1052
  onClick: () => {
1053
1053
  _(!0), setTimeout(() => {
1054
1054
  var N;
@@ -1057,9 +1057,9 @@ function ea({ language: t }) {
1057
1057
  },
1058
1058
  "aria-label": n("ui.search"),
1059
1059
  children: [
1060
- /* @__PURE__ */ e(Se, { className: L.searchIcon }),
1061
- /* @__PURE__ */ e("span", { className: L.searchHint, children: n("ui.search") }),
1062
- /* @__PURE__ */ e("kbd", { className: L.kbd, children: b })
1060
+ /* @__PURE__ */ e(Se, { className: x.searchIcon }),
1061
+ /* @__PURE__ */ e("span", { className: x.searchHint, children: n("ui.search") }),
1062
+ /* @__PURE__ */ e("kbd", { className: x.kbd, children: b })
1063
1063
  ]
1064
1064
  }
1065
1065
  ),
@@ -1067,36 +1067,36 @@ function ea({ language: t }) {
1067
1067
  /* @__PURE__ */ e(
1068
1068
  "div",
1069
1069
  {
1070
- className: L.searchOverlay,
1070
+ className: x.searchOverlay,
1071
1071
  onClick: () => {
1072
1072
  _(!1), u("");
1073
1073
  },
1074
1074
  children: /* @__PURE__ */ i(
1075
1075
  "div",
1076
1076
  {
1077
- className: L.searchModal,
1077
+ className: x.searchModal,
1078
1078
  ref: k,
1079
1079
  onClick: (N) => N.stopPropagation(),
1080
1080
  children: [
1081
- /* @__PURE__ */ i("div", { className: L.searchHeader, children: [
1082
- /* @__PURE__ */ e(Se, { className: L.searchIcon }),
1081
+ /* @__PURE__ */ i("div", { className: x.searchHeader, children: [
1082
+ /* @__PURE__ */ e(Se, { className: x.searchIcon }),
1083
1083
  /* @__PURE__ */ e(
1084
1084
  "input",
1085
1085
  {
1086
1086
  ref: g,
1087
1087
  type: "text",
1088
- className: L.searchInput,
1088
+ className: x.searchInput,
1089
1089
  placeholder: n("ui.searchPlaceholder"),
1090
1090
  value: d,
1091
1091
  onChange: (N) => u(N.target.value),
1092
- onKeyDown: $
1092
+ onKeyDown: y
1093
1093
  }
1094
1094
  ),
1095
1095
  /* @__PURE__ */ e(
1096
1096
  "button",
1097
1097
  {
1098
1098
  type: "button",
1099
- className: L.closeButton,
1099
+ className: x.closeButton,
1100
1100
  onClick: () => {
1101
1101
  _(!1), u("");
1102
1102
  },
@@ -1105,33 +1105,33 @@ function ea({ language: t }) {
1105
1105
  }
1106
1106
  )
1107
1107
  ] }),
1108
- d && /* @__PURE__ */ e("div", { className: L.searchResults, children: a.length === 0 ? /* @__PURE__ */ e("div", { className: L.noResults, children: n("ui.noSearchResults") }) : /* @__PURE__ */ e("ul", { className: L.resultsList, children: a.map((N, y) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ i(
1108
+ d && /* @__PURE__ */ e("div", { className: x.searchResults, children: a.length === 0 ? /* @__PURE__ */ e("div", { className: x.noResults, children: n("ui.noSearchResults") }) : /* @__PURE__ */ e("ul", { className: x.resultsList, children: a.map((N, C) => /* @__PURE__ */ e("li", { children: /* @__PURE__ */ i(
1109
1109
  "button",
1110
1110
  {
1111
1111
  type: "button",
1112
- className: `${L.resultItem} ${y === o ? L.selected : ""}`,
1112
+ className: `${x.resultItem} ${C === o ? x.selected : ""}`,
1113
1113
  onClick: () => P(N.slug),
1114
- onMouseEnter: () => l(y),
1114
+ onMouseEnter: () => l(C),
1115
1115
  children: [
1116
- /* @__PURE__ */ e("div", { className: L.resultTitle, children: N.title }),
1117
- /* @__PURE__ */ i("div", { className: L.resultSlug, children: [
1116
+ /* @__PURE__ */ e("div", { className: x.resultTitle, children: N.title }),
1117
+ /* @__PURE__ */ i("div", { className: x.resultSlug, children: [
1118
1118
  "/",
1119
1119
  N.slug
1120
1120
  ] })
1121
1121
  ]
1122
1122
  }
1123
1123
  ) }, N.slug)) }) }),
1124
- !d && /* @__PURE__ */ i("div", { className: L.searchHints, children: [
1125
- /* @__PURE__ */ i("div", { className: L.hint, children: [
1124
+ !d && /* @__PURE__ */ i("div", { className: x.searchHints, children: [
1125
+ /* @__PURE__ */ i("div", { className: x.hint, children: [
1126
1126
  /* @__PURE__ */ e("kbd", { children: "↑" }),
1127
1127
  /* @__PURE__ */ e("kbd", { children: "↓" }),
1128
1128
  /* @__PURE__ */ e("span", { children: n("ui.searchNavigate") })
1129
1129
  ] }),
1130
- /* @__PURE__ */ i("div", { className: L.hint, children: [
1130
+ /* @__PURE__ */ i("div", { className: x.hint, children: [
1131
1131
  /* @__PURE__ */ e("kbd", { children: "↵" }),
1132
1132
  /* @__PURE__ */ e("span", { children: n("ui.searchSelect") })
1133
1133
  ] }),
1134
- /* @__PURE__ */ i("div", { className: L.hint, children: [
1134
+ /* @__PURE__ */ i("div", { className: x.hint, children: [
1135
1135
  /* @__PURE__ */ e("kbd", { children: "esc" }),
1136
1136
  /* @__PURE__ */ e("span", { children: n("ui.searchClose") })
1137
1137
  ] })
@@ -1145,7 +1145,7 @@ function ea({ language: t }) {
1145
1145
  )
1146
1146
  ] });
1147
1147
  }
1148
- const ta = "_header_jrobc_1", na = "_container_jrobc_24", aa = "_content_jrobc_36", oa = "_leftSection_jrobc_43", sa = "_mobileMenuButton_jrobc_49", ca = "_burgerIcon_jrobc_87", ra = "_logo_jrobc_92", la = "_nav_jrobc_98", ia = "_navLink_jrobc_109", da = "_externalIcon_jrobc_135", ua = "_supportDropdown_jrobc_141", ha = "_themeDropdown_jrobc_145", ma = "_themeButton_jrobc_149", _a = "_themeIcon_jrobc_171", ga = "_supportButton_jrobc_177", pa = "_caretIcon_jrobc_198", va = "_dropdownMenu_jrobc_208", fa = "_dropdownItem_jrobc_221", ba = "_dropdownIcon_jrobc_244", C = {
1148
+ const ta = "_header_jrobc_1", na = "_container_jrobc_24", aa = "_content_jrobc_36", oa = "_leftSection_jrobc_43", sa = "_mobileMenuButton_jrobc_49", ca = "_burgerIcon_jrobc_87", ra = "_logo_jrobc_92", la = "_nav_jrobc_98", ia = "_navLink_jrobc_109", da = "_externalIcon_jrobc_135", ua = "_supportDropdown_jrobc_141", ha = "_themeDropdown_jrobc_145", ma = "_themeButton_jrobc_149", _a = "_themeIcon_jrobc_171", ga = "_supportButton_jrobc_177", pa = "_caretIcon_jrobc_198", va = "_dropdownMenu_jrobc_208", fa = "_dropdownItem_jrobc_221", ba = "_dropdownIcon_jrobc_244", $ = {
1149
1149
  header: ta,
1150
1150
  container: na,
1151
1151
  content: aa,
@@ -1167,47 +1167,47 @@ const ta = "_header_jrobc_1", na = "_container_jrobc_24", aa = "_content_jrobc_3
1167
1167
  dropdownIcon: ba
1168
1168
  };
1169
1169
  function ka({ onMobileMenuToggle: t }) {
1170
- const { t: n, i18n: s } = j(), { config: c } = R(), h = c.header ?? {}, r = h.navLinks ?? [], _ = h.dropdownItems ?? [], [d, u] = T(!1), [a, m] = T(!1), { theme: o, setTheme: l } = ze(), v = G(null), w = G(null);
1170
+ const { t: n, i18n: s } = D(), { config: c } = R(), h = c.header ?? {}, r = h.navLinks ?? [], _ = h.dropdownItems ?? [], [d, u] = T(!1), [a, m] = T(!1), { theme: o, setTheme: l } = ze(), v = G(null), w = G(null);
1171
1171
  return S(() => {
1172
1172
  const g = (k) => {
1173
1173
  v.current && !v.current.contains(k.target) && u(!1), w.current && !w.current.contains(k.target) && m(!1);
1174
1174
  };
1175
1175
  return document.addEventListener("mousedown", g), () => document.removeEventListener("mousedown", g);
1176
- }, []), /* @__PURE__ */ e("header", { className: C.header, children: /* @__PURE__ */ e("div", { className: C.container, children: /* @__PURE__ */ i("div", { className: C.content, children: [
1177
- /* @__PURE__ */ i("div", { className: C.leftSection, children: [
1176
+ }, []), /* @__PURE__ */ e("header", { className: $.header, children: /* @__PURE__ */ e("div", { className: $.container, children: /* @__PURE__ */ i("div", { className: $.content, children: [
1177
+ /* @__PURE__ */ i("div", { className: $.leftSection, children: [
1178
1178
  /* @__PURE__ */ e(
1179
1179
  "button",
1180
1180
  {
1181
1181
  type: "button",
1182
- className: C.mobileMenuButton,
1182
+ className: $.mobileMenuButton,
1183
1183
  onClick: t,
1184
1184
  "aria-label": "Open menu",
1185
- children: /* @__PURE__ */ e(tt, { className: C.burgerIcon })
1185
+ children: /* @__PURE__ */ e(tt, { className: $.burgerIcon })
1186
1186
  }
1187
1187
  ),
1188
- /* @__PURE__ */ e("div", { className: C.logo })
1188
+ /* @__PURE__ */ e("div", { className: $.logo })
1189
1189
  ] }),
1190
- /* @__PURE__ */ i("nav", { className: C.nav, children: [
1190
+ /* @__PURE__ */ i("nav", { className: $.nav, children: [
1191
1191
  /* @__PURE__ */ e(ea, { language: s.language }),
1192
- /* @__PURE__ */ i("div", { className: C.themeDropdown, ref: w, children: [
1192
+ /* @__PURE__ */ i("div", { className: $.themeDropdown, ref: w, children: [
1193
1193
  /* @__PURE__ */ i(
1194
1194
  "button",
1195
1195
  {
1196
1196
  type: "button",
1197
- className: C.themeButton,
1197
+ className: $.themeButton,
1198
1198
  onClick: () => m(!a),
1199
1199
  "aria-expanded": a,
1200
1200
  "aria-haspopup": "true",
1201
1201
  "aria-label": n("ui.theme"),
1202
1202
  children: [
1203
- o === "light" && /* @__PURE__ */ e(Pe, { className: C.themeIcon }),
1204
- o === "dark" && /* @__PURE__ */ e(Me, { className: C.themeIcon }),
1205
- o === "system" && /* @__PURE__ */ e(Be, { className: C.themeIcon }),
1206
- /* @__PURE__ */ e(_e, { className: C.caretIcon })
1203
+ o === "light" && /* @__PURE__ */ e(Pe, { className: $.themeIcon }),
1204
+ o === "dark" && /* @__PURE__ */ e(Me, { className: $.themeIcon }),
1205
+ o === "system" && /* @__PURE__ */ e(Be, { className: $.themeIcon }),
1206
+ /* @__PURE__ */ e(_e, { className: $.caretIcon })
1207
1207
  ]
1208
1208
  }
1209
1209
  ),
1210
- a && /* @__PURE__ */ i("div", { className: C.dropdownMenu, children: [
1210
+ a && /* @__PURE__ */ i("div", { className: $.dropdownMenu, children: [
1211
1211
  /* @__PURE__ */ i(
1212
1212
  "button",
1213
1213
  {
@@ -1215,9 +1215,9 @@ function ka({ onMobileMenuToggle: t }) {
1215
1215
  onClick: () => {
1216
1216
  l("light"), m(!1);
1217
1217
  },
1218
- className: C.dropdownItem,
1218
+ className: $.dropdownItem,
1219
1219
  children: [
1220
- /* @__PURE__ */ e(Pe, { className: C.dropdownIcon }),
1220
+ /* @__PURE__ */ e(Pe, { className: $.dropdownIcon }),
1221
1221
  n("ui.light")
1222
1222
  ]
1223
1223
  }
@@ -1229,9 +1229,9 @@ function ka({ onMobileMenuToggle: t }) {
1229
1229
  onClick: () => {
1230
1230
  l("dark"), m(!1);
1231
1231
  },
1232
- className: C.dropdownItem,
1232
+ className: $.dropdownItem,
1233
1233
  children: [
1234
- /* @__PURE__ */ e(Me, { className: C.dropdownIcon }),
1234
+ /* @__PURE__ */ e(Me, { className: $.dropdownIcon }),
1235
1235
  n("ui.dark")
1236
1236
  ]
1237
1237
  }
@@ -1243,41 +1243,41 @@ function ka({ onMobileMenuToggle: t }) {
1243
1243
  onClick: () => {
1244
1244
  l("system"), m(!1);
1245
1245
  },
1246
- className: C.dropdownItem,
1246
+ className: $.dropdownItem,
1247
1247
  children: [
1248
- /* @__PURE__ */ e(Be, { className: C.dropdownIcon }),
1248
+ /* @__PURE__ */ e(Be, { className: $.dropdownIcon }),
1249
1249
  n("ui.system")
1250
1250
  ]
1251
1251
  }
1252
1252
  )
1253
1253
  ] })
1254
1254
  ] }),
1255
- _.length > 0 && /* @__PURE__ */ i("div", { className: C.supportDropdown, ref: v, children: [
1255
+ _.length > 0 && /* @__PURE__ */ i("div", { className: $.supportDropdown, ref: v, children: [
1256
1256
  /* @__PURE__ */ i(
1257
1257
  "button",
1258
1258
  {
1259
1259
  type: "button",
1260
- className: C.supportButton,
1260
+ className: $.supportButton,
1261
1261
  onClick: () => u(!d),
1262
1262
  "aria-expanded": d,
1263
1263
  "aria-haspopup": "true",
1264
1264
  children: [
1265
1265
  n("ui.support"),
1266
- /* @__PURE__ */ e(_e, { className: C.caretIcon })
1266
+ /* @__PURE__ */ e(_e, { className: $.caretIcon })
1267
1267
  ]
1268
1268
  }
1269
1269
  ),
1270
- d && /* @__PURE__ */ e("div", { className: C.dropdownMenu, children: _.map((g, k) => {
1271
- const f = g.target ?? (g.url.startsWith("http") ? "_blank" : "_self"), b = g.rel ?? (f === "_blank" ? "noopener noreferrer" : void 0), $ = g.icon;
1270
+ d && /* @__PURE__ */ e("div", { className: $.dropdownMenu, children: _.map((g, k) => {
1271
+ const f = g.target ?? (g.url.startsWith("http") ? "_blank" : "_self"), b = g.rel ?? (f === "_blank" ? "noopener noreferrer" : void 0), y = g.icon;
1272
1272
  return /* @__PURE__ */ i(
1273
1273
  "a",
1274
1274
  {
1275
1275
  href: g.url,
1276
1276
  target: f,
1277
1277
  rel: b,
1278
- className: C.dropdownItem,
1278
+ className: $.dropdownItem,
1279
1279
  children: [
1280
- $ && /* @__PURE__ */ e($, { className: C.dropdownIcon }),
1280
+ y && /* @__PURE__ */ e(y, { className: $.dropdownIcon }),
1281
1281
  g.label
1282
1282
  ]
1283
1283
  },
@@ -1286,17 +1286,17 @@ function ka({ onMobileMenuToggle: t }) {
1286
1286
  }) })
1287
1287
  ] }),
1288
1288
  r.map((g, k) => {
1289
- const f = g.target ?? (typeof g.url == "string" && g.url.startsWith("http") ? "_blank" : "_self"), b = g.rel ?? (f === "_blank" ? "noopener noreferrer" : void 0), $ = g.icon;
1289
+ const f = g.target ?? (typeof g.url == "string" && g.url.startsWith("http") ? "_blank" : "_self"), b = g.rel ?? (f === "_blank" ? "noopener noreferrer" : void 0), y = g.icon;
1290
1290
  return /* @__PURE__ */ i(
1291
1291
  "a",
1292
1292
  {
1293
1293
  href: g.url,
1294
1294
  target: f,
1295
1295
  rel: b,
1296
- className: g.className ?? C.navLink,
1296
+ className: g.className ?? $.navLink,
1297
1297
  children: [
1298
1298
  g.label,
1299
- $ && /* @__PURE__ */ e($, { className: C.externalIcon })
1299
+ y && /* @__PURE__ */ e(y, { className: $.externalIcon })
1300
1300
  ]
1301
1301
  },
1302
1302
  k
@@ -1309,7 +1309,7 @@ function fe({
1309
1309
  styles: t,
1310
1310
  onLanguageChange: n
1311
1311
  }) {
1312
- const { i18n: s } = j(), c = Y(), h = Q(), { config: r } = R(), [_, d] = T(!1), u = G(null), a = s.language, m = (l) => {
1312
+ const { i18n: s } = D(), c = Y(), h = Q(), { config: r } = R(), [_, d] = T(!1), u = G(null), a = s.language, m = (l) => {
1313
1313
  const v = r.basePath || "";
1314
1314
  let w = c.pathname;
1315
1315
  v && w.startsWith(v) && (w = w.slice(v.length));
@@ -1357,7 +1357,7 @@ function fe({
1357
1357
  ] });
1358
1358
  }
1359
1359
  function be({ styles: t, onLinkClick: n }) {
1360
- const { i18n: s } = j(), c = Y(), { config: h, loadContent: r } = R(), [_, d] = T([]), [u, a] = T({}), [m, o] = T(!0), l = s.language;
1360
+ const { i18n: s } = D(), c = Y(), { config: h, loadContent: r } = R(), [_, d] = T([]), [u, a] = T({}), [m, o] = T(!0), l = s.language;
1361
1361
  S(() => {
1362
1362
  (async () => {
1363
1363
  if (!h.navigationData) {
@@ -1369,17 +1369,17 @@ function be({ styles: t, onLinkClick: n }) {
1369
1369
  h.navigationData,
1370
1370
  l,
1371
1371
  r
1372
- ), $ = b.reduce(
1373
- (P, N, y) => {
1374
- if (De(N)) {
1375
- const M = h.navigationData[y], W = "items" in M && M.defaultOpen === !0;
1372
+ ), y = b.reduce(
1373
+ (P, N, C) => {
1374
+ if (Ae(N)) {
1375
+ const M = h.navigationData[C], W = "items" in M && M.defaultOpen === !0;
1376
1376
  P[N.title] = W;
1377
1377
  }
1378
1378
  return P;
1379
1379
  },
1380
1380
  {}
1381
1381
  );
1382
- a($), d(b), o(!1);
1382
+ a(y), d(b), o(!1);
1383
1383
  } catch (b) {
1384
1384
  console.error("Failed to load navigation data:", b), o(!1);
1385
1385
  }
@@ -1392,15 +1392,15 @@ function be({ styles: t, onLinkClick: n }) {
1392
1392
  }));
1393
1393
  }, w = (f) => {
1394
1394
  const b = h.basePath || "";
1395
- let $ = c.pathname;
1396
- b && $.startsWith(b) && ($ = $.slice(b.length));
1397
- const P = $.split("/").filter(Boolean);
1395
+ let y = c.pathname;
1396
+ b && y.startsWith(b) && (y = y.slice(b.length));
1397
+ const P = y.split("/").filter(Boolean);
1398
1398
  return P[P.length - 1] === f;
1399
1399
  }, g = (f) => {
1400
1400
  const b = h.basePath || "";
1401
- let $ = c.pathname;
1402
- b && $.startsWith(b) && ($ = $.slice(b.length));
1403
- const P = $.split("/").filter(Boolean);
1401
+ let y = c.pathname;
1402
+ b && y.startsWith(b) && (y = y.slice(b.length));
1403
+ const P = y.split("/").filter(Boolean);
1404
1404
  return P[0] && h.supportedLanguages.includes(P[0]) ? `${b}/${P[0]}/${f}` : `${b}/${l}/${f}`;
1405
1405
  }, k = () => {
1406
1406
  n == null || n();
@@ -1420,7 +1420,7 @@ function be({ styles: t, onLinkClick: n }) {
1420
1420
  /* @__PURE__ */ e("div", { className: t.skeletonItem })
1421
1421
  ] })
1422
1422
  ] })
1423
- ] }) : /* @__PURE__ */ e("div", { className: t.navigation, children: _.map((f) => De(f) ? /* @__PURE__ */ i("div", { className: t.section, children: [
1423
+ ] }) : /* @__PURE__ */ e("div", { className: t.navigation, children: _.map((f) => Ae(f) ? /* @__PURE__ */ i("div", { className: t.section, children: [
1424
1424
  /* @__PURE__ */ i(
1425
1425
  "button",
1426
1426
  {
@@ -1464,24 +1464,24 @@ function Zo({
1464
1464
  /* @__PURE__ */ e(be, { styles: t, onLinkClick: n })
1465
1465
  ] });
1466
1466
  }
1467
- const Na = "_backdrop_1a7pu_1", wa = "_open_1a7pu_13", Ia = "_mobileMenu_1a7pu_18", $a = "_header_1a7pu_37", Ca = "_brand_1a7pu_46", ya = "_cloudIcon_1a7pu_53", Ta = "_title_1a7pu_62", xa = "_closeButton_1a7pu_69", La = "_closeIcon_1a7pu_101", Sa = "_languageSection_1a7pu_106", Pa = "_languageSelect_1a7pu_112", Ma = "_languageButton_1a7pu_117", Ba = "_icon_1a7pu_156", Ea = "_chevron_1a7pu_162", Aa = "_languageDropdown_1a7pu_172", Da = "_languageOption_1a7pu_185", ja = "_selected_1a7pu_226", Ra = "_scrollArea_1a7pu_231", qa = "_navigation_1a7pu_237", Oa = "_section_1a7pu_241", Wa = "_sectionButton_1a7pu_245", Ha = "_expanded_1a7pu_285", Fa = "_sectionItems_1a7pu_289", za = "_navItem_1a7pu_297", Ka = "_active_1a7pu_310", Ua = "_navItemContent_1a7pu_316", Ga = "_navItemTitle_1a7pu_322", O = {
1467
+ const Na = "_backdrop_1a7pu_1", wa = "_open_1a7pu_13", Ia = "_mobileMenu_1a7pu_18", ya = "_header_1a7pu_37", $a = "_brand_1a7pu_46", Ca = "_cloudIcon_1a7pu_53", Ta = "_title_1a7pu_62", La = "_closeButton_1a7pu_69", xa = "_closeIcon_1a7pu_101", Sa = "_languageSection_1a7pu_106", Pa = "_languageSelect_1a7pu_112", Ma = "_languageButton_1a7pu_117", Ba = "_icon_1a7pu_156", ja = "_chevron_1a7pu_162", Ea = "_languageDropdown_1a7pu_172", Aa = "_languageOption_1a7pu_185", Da = "_selected_1a7pu_226", Ra = "_scrollArea_1a7pu_231", qa = "_navigation_1a7pu_237", Oa = "_section_1a7pu_241", Wa = "_sectionButton_1a7pu_245", Ha = "_expanded_1a7pu_285", Fa = "_sectionItems_1a7pu_289", za = "_navItem_1a7pu_297", Ka = "_active_1a7pu_310", Ua = "_navItemContent_1a7pu_316", Ga = "_navItemTitle_1a7pu_322", O = {
1468
1468
  backdrop: Na,
1469
1469
  open: wa,
1470
1470
  mobileMenu: Ia,
1471
- header: $a,
1472
- brand: Ca,
1473
- cloudIcon: ya,
1471
+ header: ya,
1472
+ brand: $a,
1473
+ cloudIcon: Ca,
1474
1474
  title: Ta,
1475
- closeButton: xa,
1476
- closeIcon: La,
1475
+ closeButton: La,
1476
+ closeIcon: xa,
1477
1477
  languageSection: Sa,
1478
1478
  languageSelect: Pa,
1479
1479
  languageButton: Ma,
1480
1480
  icon: Ba,
1481
- chevron: Ea,
1482
- languageDropdown: Aa,
1483
- languageOption: Da,
1484
- selected: ja,
1481
+ chevron: ja,
1482
+ languageDropdown: Ea,
1483
+ languageOption: Aa,
1484
+ selected: Da,
1485
1485
  scrollArea: Ra,
1486
1486
  navigation: qa,
1487
1487
  section: Oa,
@@ -1574,15 +1574,15 @@ function wo() {
1574
1574
  /* @__PURE__ */ e("div", { className: K.scrollArea, children: /* @__PURE__ */ e(be, { styles: K }) })
1575
1575
  ] });
1576
1576
  }
1577
- const Io = "_app_h5ex0_1", $o = "_layout_h5ex0_9", Co = "_main_h5ex0_15", yo = "_fullWidth_h5ex0_21", To = "_contentWrapper_h5ex0_30", se = {
1577
+ const Io = "_app_b0d4r_1", yo = "_layout_b0d4r_9", $o = "_main_b0d4r_15", Co = "_fullWidth_b0d4r_21", To = "_contentWrapper_b0d4r_30", se = {
1578
1578
  app: Io,
1579
- layout: $o,
1580
- main: Co,
1581
- fullWidth: yo,
1579
+ layout: yo,
1580
+ main: $o,
1581
+ fullWidth: Co,
1582
1582
  contentWrapper: To
1583
1583
  };
1584
- function xo({ children: t }) {
1585
- const { language: n } = pe(), { i18n: s } = j(), { config: c } = R(), [h, r] = T(!1);
1584
+ function Lo({ children: t }) {
1585
+ const { language: n } = pe(), { i18n: s } = D(), { config: c } = R(), [h, r] = T(!1);
1586
1586
  S(() => {
1587
1587
  n && c.supportedLanguages.includes(n) && s.changeLanguage(n);
1588
1588
  }, [n, s, c.supportedLanguages]);
@@ -1609,22 +1609,22 @@ function xo({ children: t }) {
1609
1609
  ] })
1610
1610
  ] });
1611
1611
  }
1612
- const Lo = "_homePage_1q89n_1", So = "_header_1q89n_20", Po = "_title_1q89n_24", Mo = "_articlesList_1q89n_31", Bo = "_articleCard_1q89n_37", Eo = "_articleTitle_1q89n_56", Ao = "_articleDescription_1q89n_63", Do = "_empty_1q89n_71", jo = "_skeletonCard_1q89n_85", Ro = "_skeletonTitle_1q89n_95", qo = "_skeletonText_1q89n_104", Oo = "_skeletonMetadata_1q89n_113", E = {
1613
- homePage: Lo,
1612
+ const xo = "_homePage_1otqy_1", So = "_header_1otqy_20", Po = "_title_1otqy_24", Mo = "_articlesList_1otqy_31", Bo = "_articleCard_1otqy_37", jo = "_articleTitle_1otqy_56", Eo = "_articleDescription_1otqy_63", Ao = "_empty_1otqy_71", Do = "_skeletonCard_1otqy_85", Ro = "_skeletonTitle_1otqy_95", qo = "_skeletonText_1otqy_104", Oo = "_skeletonMetadata_1otqy_113", j = {
1613
+ homePage: xo,
1614
1614
  header: So,
1615
1615
  title: Po,
1616
1616
  articlesList: Mo,
1617
1617
  articleCard: Bo,
1618
- articleTitle: Eo,
1619
- articleDescription: Ao,
1620
- empty: Do,
1621
- skeletonCard: jo,
1618
+ articleTitle: jo,
1619
+ articleDescription: Eo,
1620
+ empty: Ao,
1621
+ skeletonCard: Do,
1622
1622
  skeletonTitle: Ro,
1623
1623
  skeletonText: qo,
1624
1624
  skeletonMetadata: Oo
1625
1625
  };
1626
1626
  function Wo() {
1627
- const { i18n: t, t: n } = j(), { config: s, discoverArticles: c } = R(), h = Q(), [r, _] = T([]), [d, u] = T(!0), a = s.articleTitleFont ? { fontFamily: s.articleTitleFont } : void 0;
1627
+ const { i18n: t, t: n } = D(), { config: s, discoverArticles: c } = R(), h = Q(), [r, _] = T([]), [d, u] = T(!0), a = s.articleTitleFont ? { fontFamily: s.articleTitleFont } : void 0;
1628
1628
  S(() => {
1629
1629
  (async () => {
1630
1630
  try {
@@ -1641,26 +1641,26 @@ function Wo() {
1641
1641
  const l = s.basePath || "";
1642
1642
  window.scrollTo({ top: 0, left: 0, behavior: "auto" }), h(`${l}/${t.language}/${o}`);
1643
1643
  };
1644
- return d ? /* @__PURE__ */ i("div", { className: E.homePage, children: [
1645
- /* @__PURE__ */ e("div", { className: E.header, children: /* @__PURE__ */ e("h2", { className: E.title, children: n("ui.latestPosts") }) }),
1646
- /* @__PURE__ */ e("div", { className: E.articlesList, children: [...Array(5)].map((o, l) => /* @__PURE__ */ i("div", { className: E.skeletonCard, children: [
1647
- /* @__PURE__ */ e("div", { className: E.skeletonTitle }),
1648
- /* @__PURE__ */ e("div", { className: E.skeletonText }),
1649
- /* @__PURE__ */ e("div", { className: E.skeletonText }),
1650
- /* @__PURE__ */ e("div", { className: E.skeletonMetadata })
1644
+ return d ? /* @__PURE__ */ i("div", { className: j.homePage, children: [
1645
+ /* @__PURE__ */ e("div", { className: j.header, children: /* @__PURE__ */ e("h2", { className: j.title, children: n("ui.latestPosts") }) }),
1646
+ /* @__PURE__ */ e("div", { className: j.articlesList, children: [...Array(5)].map((o, l) => /* @__PURE__ */ i("div", { className: j.skeletonCard, children: [
1647
+ /* @__PURE__ */ e("div", { className: j.skeletonTitle }),
1648
+ /* @__PURE__ */ e("div", { className: j.skeletonText }),
1649
+ /* @__PURE__ */ e("div", { className: j.skeletonText }),
1650
+ /* @__PURE__ */ e("div", { className: j.skeletonMetadata })
1651
1651
  ] }, l)) })
1652
- ] }) : r.length === 0 ? /* @__PURE__ */ e("div", { className: E.empty, children: n("ui.noArticlesFound") }) : /* @__PURE__ */ i(U, { children: [
1653
- /* @__PURE__ */ i("div", { className: E.homePage, children: [
1654
- /* @__PURE__ */ e("div", { className: E.header, children: /* @__PURE__ */ e("h3", { className: E.title, children: n("ui.latestPosts") }) }),
1655
- /* @__PURE__ */ e("div", { className: E.articlesList, children: r.map((o) => /* @__PURE__ */ i(
1652
+ ] }) : r.length === 0 ? /* @__PURE__ */ e("div", { className: j.empty, children: n("ui.noArticlesFound") }) : /* @__PURE__ */ i(U, { children: [
1653
+ /* @__PURE__ */ i("div", { className: j.homePage, children: [
1654
+ /* @__PURE__ */ e("div", { className: j.header, children: /* @__PURE__ */ e("h3", { className: j.title, children: n("ui.latestPosts") }) }),
1655
+ /* @__PURE__ */ e("div", { className: j.articlesList, children: r.map((o) => /* @__PURE__ */ i(
1656
1656
  "button",
1657
1657
  {
1658
- className: E.articleCard,
1658
+ className: j.articleCard,
1659
1659
  onClick: () => m(o.slug),
1660
1660
  type: "button",
1661
1661
  children: [
1662
- /* @__PURE__ */ e("h2", { className: E.articleTitle, style: a, children: o.title }),
1663
- o.description && /* @__PURE__ */ e("p", { className: E.articleDescription, children: o.description }),
1662
+ /* @__PURE__ */ e("h2", { className: j.articleTitle, style: a, children: o.title }),
1663
+ o.description && /* @__PURE__ */ e("p", { className: j.articleDescription, children: o.description }),
1664
1664
  /* @__PURE__ */ e(ge, { date: o.date, author: o.author })
1665
1665
  ]
1666
1666
  },
@@ -1672,10 +1672,10 @@ function Wo() {
1672
1672
  }
1673
1673
  function es() {
1674
1674
  const { language: t } = pe(), { config: n } = R();
1675
- return /* @__PURE__ */ e(xo, { children: /* @__PURE__ */ i(Xe, { children: [
1676
- /* @__PURE__ */ e(Le, { path: "/:slug", element: /* @__PURE__ */ e(An, { language: t }) }),
1675
+ return /* @__PURE__ */ e(Lo, { children: /* @__PURE__ */ i(Xe, { children: [
1676
+ /* @__PURE__ */ e(xe, { path: "/:slug", element: /* @__PURE__ */ e(En, { language: t }) }),
1677
1677
  /* @__PURE__ */ e(
1678
- Le,
1678
+ xe,
1679
1679
  {
1680
1680
  index: !0,
1681
1681
  element: (n.defaultRoute || "latest") === "latest" ? /* @__PURE__ */ e(Wo, {}) : /* @__PURE__ */ e(qe, { to: `./${n.defaultRoute}`, replace: !0 })
@@ -1694,7 +1694,7 @@ function ts() {
1694
1694
  };
1695
1695
  }
1696
1696
  function ns() {
1697
- const { i18n: t } = j(), n = Y(), s = Q(), { config: c } = R();
1697
+ const { i18n: t } = D(), n = Y(), s = Q(), { config: c } = R();
1698
1698
  return (h) => {
1699
1699
  const r = c.basePath || "";
1700
1700
  let _ = n.pathname;
@@ -1713,8 +1713,8 @@ export {
1713
1713
  ht as BlogRoot,
1714
1714
  Bt as BlogSidebar,
1715
1715
  Ot as Breadcrumb,
1716
- An as ContentPage,
1717
- xo as DocumentationLayout,
1716
+ En as ContentPage,
1717
+ Lo as DocumentationLayout,
1718
1718
  es as DocumentationRoutes,
1719
1719
  ka as Header,
1720
1720
  Wo as HomePage,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@x-wave/blog",
3
- "version": "2.2.4",
3
+ "version": "2.2.5",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
package/styles/index.css CHANGED
@@ -214,4 +214,4 @@
214
214
  --xw-sidebar-border: oklch(1 0 0 / 10%);
215
215
  --xw-sidebar-ring: oklch(0.556 0 0);
216
216
  }
217
- ._tabContainer_zk6h4_1{display:inline-flex;background-color:var(--xw-card);border:1px solid var(--xw-border);border-radius:.5rem;margin-bottom:2rem;overflow:hidden}._tab_zk6h4_1{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._tab_zk6h4_1:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._tab_zk6h4_1:disabled{pointer-events:none;opacity:.5}._tab_zk6h4_1{padding:.5rem 1rem;font-size:.87rem;font-weight:500;background-color:transparent;border:none;border-radius:0;color:var(--xw-muted-foreground);cursor:pointer;white-space:nowrap}._tab_zk6h4_1:not(:last-child){border-right:1px solid var(--xw-border)}._tab_zk6h4_1._active_zk6h4_45{background-color:var(--xw-accent);color:var(--xw-accent-foreground)}._tab_zk6h4_1:hover:not(._active_zk6h4_45){background-color:var(--xw-muted);color:var(--xw-foreground)}._tab_zk6h4_1:focus-visible{outline:2px solid var(--xw-accent);outline-offset:-2px}._articleNavigation_kz84g_1{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--xw-border)}._navContainer_kz84g_7{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:767px){._navContainer_kz84g_7{grid-template-columns:1fr;gap:1rem}}@media(min-width:1024px){._navContainer_kz84g_7{gap:1.5rem}}._navLink_kz84g_24{display:flex;padding:1rem;border:1px solid var(--xw-border);border-radius:.5rem;text-decoration:none;color:var(--xw-foreground);background-color:var(--xw-background);transition:all .2s ease;box-shadow:0 1px 3px #0000000d}._navLink_kz84g_24:hover{border-color:var(--xw-ring);background-color:var(--xw-card);transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}._navLink_kz84g_24:first-child{justify-content:flex-start}@media(max-width:767px){._navLink_kz84g_24:first-child{justify-content:center;text-align:center}}._navLink_kz84g_24:last-child{justify-content:flex-end;text-align:right}@media(max-width:767px){._navLink_kz84g_24:last-child{justify-content:center;text-align:center}}._navLinkContent_kz84g_61{display:flex;align-items:center;gap:.75rem;min-width:0;width:100%}@media(max-width:767px){._navLinkContent_kz84g_61{justify-content:center;flex-direction:column;text-align:center}}._navIcon_kz84g_76{display:flex;align-items:center;color:var(--xw-primary);flex-shrink:0}._navText_kz84g_83{display:flex;flex-direction:column;gap:.25rem;min-width:0}._navLabel_kz84g_90{font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--xw-muted-foreground)}._navTitle_kz84g_98{font-size:.875rem;font-weight:400;color:var(--xw-foreground);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;line-height:1.4}@media(min-width:1024px){._navTitle_kz84g_98{font-size:.9rem}}._blogSidebar_n1up9_1{position:sticky;top:0;align-self:flex-start;height:fit-content;max-height:calc(100vh - 8rem);overflow-y:auto;padding:0 0 2rem 1.5rem;margin-left:2rem;background:transparent;border-left:1px solid var(--xw-border);flex-shrink:0;width:250px}@media(max-width:1024px){._blogSidebar_n1up9_1{display:none}}._section_n1up9_21{margin-bottom:2rem}._section_n1up9_21:last-child{margin-bottom:0}._sectionTitle_n1up9_28{font-size:.75rem;font-weight:600;color:var(--xw-foreground);margin:0 0 1rem}._linksList_n1up9_35{display:flex;flex-direction:column;gap:.25rem}._link_n1up9_35{display:flex;align-items:center;gap:.5rem;padding:.5rem;color:var(--xw-foreground);text-decoration:none;border-radius:.25rem;transition:all .15s cubic-bezier(.4,0,.2,1);font-size:.875rem}._link_n1up9_35:hover{color:var(--xw-primary)}._link_n1up9_35 svg{flex-shrink:0}._breadcrumb_rarc4_1{margin-bottom:1rem}._breadcrumbList_rarc4_5{display:flex;align-items:center;list-style:none;margin:0;padding:0;font-size:.875rem;color:var(--xw-muted-foreground)}._breadcrumbItem_rarc4_15{display:flex;align-items:center;gap:.25rem}._breadcrumbLink_rarc4_21{background:none;border:none;cursor:pointer;color:var(--xw-link);text-decoration:none;font-size:inherit;padding:0;font-weight:500;transition:color .2s ease}._breadcrumbLink_rarc4_21:hover{color:var(--xw-primary);text-decoration:underline}._breadcrumbLink_rarc4_21:focus-visible{outline:2px solid var(--xw-primary);outline-offset:2px}._breadcrumbSeparator_rarc4_41{color:var(--xw-border);margin:0 .5rem}._breadcrumbCurrent_rarc4_46{color:var(--xw-foreground);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:20rem}@media(max-width:767px){._breadcrumbCurrent_rarc4_46{max-width:10rem}}._metadata_bsge0_1{display:flex;align-items:center;gap:1.5rem;margin-top:1rem;margin-bottom:1rem}._author_bsge0_9,._date_bsge0_10{display:flex;align-items:center;gap:.5rem;font-weight:500;font-size:.9rem}._author_bsge0_9 svg,._date_bsge0_10 svg{flex-shrink:0}._date_bsge0_10{color:var(--xw-text-secondary, #666)}._tableOfContents_9ofak_1{position:sticky;top:5rem;align-self:flex-start;height:fit-content;max-height:calc(100vh - 8rem);overflow-y:auto;padding:2rem 0 2rem 1.5rem;margin-left:2rem;background:transparent;border-left:1px solid var(--xw-border);flex-shrink:0;max-width:250px}@media(max-width:1024px){._tableOfContents_9ofak_1{display:none}}._header_9ofak_21{margin-bottom:1rem}._title_9ofak_25{font-size:.75rem;font-weight:500;color:var(--xw-muted-foreground);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}._nav_9ofak_34 ul{margin:0;padding:0;list-style:none}._list_9ofak_40{display:flex;flex-direction:column;gap:.125rem;margin:0}._link_9ofak_47{display:block;width:100%;padding:.25rem 0;text-align:left;background:none;border:none;cursor:pointer;font-size:.875rem;line-height:1.4;color:var(--xw-muted-foreground);text-decoration:none;border-radius:.25rem;transition:all .15s cubic-bezier(.4,0,.2,1);position:relative;font-family:inherit}._link_9ofak_47:hover{color:var(--xw-foreground)}._link_9ofak_47:focus{outline:none;color:var(--xw-foreground)}._link_9ofak_47._active_9ofak_71{color:var(--xw-primary);font-weight:500}._link_9ofak_47._active_9ofak_71:before{content:"";position:absolute;left:-1.5rem;top:50%;transform:translateY(-50%);width:1px;height:1rem;background-color:var(--xw-primary);border-radius:.5px}._level1_9ofak_87{font-weight:500;padding-left:0;margin-bottom:.125rem}._level2_9ofak_93{padding-left:.5rem;margin-bottom:.0625rem}._level3_9ofak_98{padding-left:1rem;font-size:.8125rem;margin-bottom:.0625rem}._level4_9ofak_104{padding-left:1.5rem;font-size:.8125rem;margin-bottom:.0625rem}._level5_9ofak_110{padding-left:2rem;font-size:.75rem;margin-bottom:.0625rem}._level6_9ofak_116{padding-left:2.5rem;font-size:.75rem;margin-bottom:.0625rem}._tableOfContents_9ofak_1::-webkit-scrollbar{width:4px}._tableOfContents_9ofak_1::-webkit-scrollbar-track{background:transparent}._tableOfContents_9ofak_1::-webkit-scrollbar-thumb{background:var(--xw-border);border-radius:2px}._tableOfContents_9ofak_1::-webkit-scrollbar-thumb:hover{background:var(--xw-muted-foreground)}._overlay_1e1d4_1{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2000;display:flex;align-items:flex-start;justify-content:center;padding-top:10vh;animation:_fadeIn_1e1d4_1 .2s ease;height:100vh}@keyframes _fadeIn_1e1d4_1{0%{opacity:0}to{opacity:1}}._modal_1e1d4_26{width:90%;max-width:600px;background:var(--xw-card);border:1px solid var(--xw-border);border-radius:.75rem;box-shadow:0 20px 60px #0000004d;animation:_slideIn_1e1d4_1 .2s ease;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}@keyframes _slideIn_1e1d4_1{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}._header_1e1d4_50{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--xw-border)}._title_1e1d4_58{font-size:1.125rem;font-weight:600;color:var(--xw-foreground);margin:0}._closeButton_1e1d4_65{background:none;border:none;color:var(--xw-muted-foreground);cursor:pointer;padding:.25rem;display:flex;align-items:center;justify-content:center;border-radius:.25rem;transition:all .2s ease}._closeButton_1e1d4_65 svg{width:1.25rem;height:1.25rem}._closeButton_1e1d4_65:hover{background:var(--xw-secondary);color:var(--xw-foreground)}._results_1e1d4_86{flex:1;overflow-y:auto;padding:.5rem;min-height:200px;max-height:400px}._resultsList_1e1d4_94{list-style:none;padding:0;margin:0}._resultItem_1e1d4_100{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;width:100%;padding:.75rem 1rem;background:none;border:none;border-radius:.5rem;cursor:pointer;text-align:left;transition:all .15s ease;color:var(--xw-foreground)}._resultItem_1e1d4_100:hover{background:var(--xw-secondary)}._resultTitle_1e1d4_119{font-weight:500;font-size:.95rem}._resultSlug_1e1d4_124{font-size:.8rem;color:var(--xw-muted-foreground);opacity:.8}._noResults_1e1d4_130{padding:3rem 1rem;text-align:center;color:var(--xw-muted-foreground);font-size:.9rem}._tags_11t8a_1{display:flex;align-items:center;gap:.75rem;margin:2rem 0 1rem;padding:1rem 0 0;border-top:1px solid var(--xw-border)}._tags_11t8a_1._compact_11t8a_9{margin:2rem 0 1rem;padding:1rem 0 0;border-top:1px solid var(--xw-border)}._tagLabel_11t8a_15{display:flex;align-items:center;gap:.5rem;color:var(--xw-muted-foreground);font-size:.875rem;font-weight:500;white-space:nowrap}._tagIcon_11t8a_25{width:1.125rem;height:1.125rem}._tagList_11t8a_30{display:flex;flex-wrap:wrap;gap:.5rem}._tag_11t8a_1{display:inline-flex;align-items:center;padding:.25rem .75rem;background:none;border:1px solid var(--xw-border);border-radius:.75rem;color:var(--xw-muted-foreground);font-size:.8rem;font-weight:400;cursor:pointer;transition:all .2s ease}._tag_11t8a_1:hover{color:var(--xw-foreground);border-color:var(--xw-ring)}._contentPage_mc666_1{flex:1;max-width:48rem;margin:0;padding:0 0 2rem}@media(max-width:767px){._contentPage_mc666_1{padding:1rem;max-width:none}}@media(max-width:1024px){._contentPage_mc666_1{max-width:none;padding:2rem}}._contentPage_mc666_1>h1{font-size:1.875rem;font-weight:600;letter-spacing:-.025em;margin-top:1.5rem;margin-bottom:1.5rem;border-bottom:1px solid var(--xw-border);padding-bottom:.75rem;line-height:1.2;scroll-margin-top:5rem}._contentPage_mc666_1>h1._withMetadata_mc666_30{border-bottom:none;padding-bottom:0;margin-bottom:.5rem}._metadata_mc666_36{display:flex;gap:1rem;align-items:center;padding:.5rem 0 1rem;color:var(--xw-muted-foreground);font-size:.875rem;border-bottom:1px solid var(--xw-border);margin-bottom:1rem}._metadata_mc666_36 ._author_mc666_46,._metadata_mc666_36 ._date_mc666_47{display:flex;align-items:center;gap:.5rem}._metadata_mc666_36 ._author_mc666_46{font-weight:500;color:var(--xw-foreground)}@media(max-width:767px){._metadata_mc666_36{flex-direction:column;align-items:flex-start;gap:.25rem}}._loadingContainer_mc666_64,._errorContainer_mc666_65{display:flex;align-items:center;justify-content:center;height:16rem}._loadingContainer_mc666_64{flex-direction:column;align-items:flex-start;gap:1.5rem;padding:2rem 0}@keyframes _shimmer_mc666_1{0%{background-position:-1000px 0}to{background-position:1000px 0}}._skeletonTitle_mc666_87{width:60%;height:2.5rem;background:linear-gradient(90deg,var(--xw-muted) 0%,color-mix(in oklch,var(--xw-muted) 50%,white) 50%,var(--xw-muted) 100%);background-size:1000px 100%;animation:_shimmer_mc666_1 2s infinite linear;border-radius:.5rem}._skeletonParagraph_mc666_96{width:100%;height:1rem;background:linear-gradient(90deg,var(--xw-muted) 0%,color-mix(in oklch,var(--xw-muted) 50%,white) 50%,var(--xw-muted) 100%);background-size:1000px 100%;animation:_shimmer_mc666_1 2s infinite linear;border-radius:.25rem;margin-bottom:.5rem}._skeletonParagraph_mc666_96:not(:last-child){margin-bottom:1rem}._skeletonParagraphShort_mc666_109{width:70%;height:1rem;background:linear-gradient(90deg,var(--xw-muted) 0%,color-mix(in oklch,var(--xw-muted) 50%,white) 50%,var(--xw-muted) 100%);background-size:1000px 100%;animation:_shimmer_mc666_1 2s infinite linear;border-radius:.25rem}._loadingText_mc666_118{color:var(--xw-muted-foreground);font-size:1rem}._errorText_mc666_123{color:var(--xw-destructive);font-size:1rem}._mdxContent_mc666_128{max-width:none}._mdxContent_mc666_128 h1{font-size:1.875rem;font-weight:600;letter-spacing:-.025em;margin-bottom:1.5rem;border-bottom:1px solid var(--xw-border);padding-bottom:.75rem;line-height:1.2;scroll-margin-top:5rem}._mdxContent_mc666_128 h1._withMetadata_mc666_30{border-bottom:none;padding-bottom:0;margin-bottom:.5rem}._mdxContent_mc666_128 h1 a{color:inherit;text-decoration:none;border:none;position:relative}._mdxContent_mc666_128 h1 a:hover{color:inherit;border:none}._mdxContent_mc666_128 h1 a:hover:before{content:"#";position:absolute;left:-1.5rem;color:var(--xw-link);opacity:.7;font-weight:400}._mdxContent_mc666_128 h2{font-size:1.5rem;font-weight:500;letter-spacing:-.02em;margin-bottom:1rem;margin-top:2.5rem;border-bottom:1px solid var(--xw-border);padding-bottom:.5rem;line-height:1.3;scroll-margin-top:5rem}._mdxContent_mc666_128 h2 a{color:inherit;text-decoration:none;border:none;position:relative}._mdxContent_mc666_128 h2 a:hover{color:inherit;border:none}._mdxContent_mc666_128 h2 a:hover:before{content:"#";position:absolute;left:-1.5rem;color:var(--xw-link);opacity:.7;font-weight:400}._mdxContent_mc666_128 h3{font-size:1.25rem;font-weight:500;letter-spacing:-.015em;margin-bottom:.75rem;margin-top:2rem;line-height:1.4;scroll-margin-top:5rem}._mdxContent_mc666_128 h3 a{color:inherit;text-decoration:none;border:none;position:relative}._mdxContent_mc666_128 h3 a:hover{color:inherit;border:none}._mdxContent_mc666_128 h3 a:hover:before{content:"#";position:absolute;left:-1.5rem;color:var(--xw-link);opacity:.7;font-weight:400}._mdxContent_mc666_128 h4{font-size:1.125rem;font-weight:500;letter-spacing:-.01em;margin-bottom:.5rem;margin-top:1.5rem;line-height:1.4;scroll-margin-top:5rem}._mdxContent_mc666_128 h4 a{color:inherit;text-decoration:none;border:none;position:relative}._mdxContent_mc666_128 h4 a:hover{color:inherit;border:none}._mdxContent_mc666_128 h4 a:hover:before{content:"#";position:absolute;left:-1.5rem;color:var(--xw-link);opacity:.7;font-weight:400}._mdxContent_mc666_128 h5{font-size:1rem;font-weight:500;margin-bottom:.5rem;margin-top:1.25rem;line-height:1.5}._mdxContent_mc666_128 h6{font-size:.875rem;font-weight:500;margin-bottom:.5rem;margin-top:1rem;line-height:1.5}._mdxContent_mc666_128 p{font-size:1rem;line-height:1.65;margin-bottom:1rem;color:var(--xw-foreground)}._mdxContent_mc666_128 ul,._mdxContent_mc666_128 ol{margin-bottom:1rem;padding-left:1.5rem}._mdxContent_mc666_128 ul li,._mdxContent_mc666_128 ol li{font-size:1rem;line-height:1.65;margin-bottom:.375rem}._mdxContent_mc666_128 ul ul,._mdxContent_mc666_128 ul ol,._mdxContent_mc666_128 ol ul,._mdxContent_mc666_128 ol ol{margin-top:.375rem;margin-bottom:.375rem}._mdxContent_mc666_128 ul{list-style-type:disc}._mdxContent_mc666_128 ol{list-style-type:decimal}._mdxContent_mc666_128 code{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.875rem;background-color:var(--xw-muted);padding:.1875rem .4375rem;border-radius:.25rem;color:var(--xw-foreground);font-weight:500}._mdxContent_mc666_128 pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;background-color:var(--xw-muted);padding:1.25rem;border-radius:.75rem;overflow-x:auto;margin:1.5rem 0;position:relative;border:1px solid var(--xw-border)}._mdxContent_mc666_128 pre code{background-color:transparent;padding:0;color:inherit;font-weight:400}._mdxContent_mc666_128 ._codeBlock_mc666_316{position:relative;margin-bottom:1.5rem}._mdxContent_mc666_128 ._codeLanguage_mc666_320{position:absolute;top:.5rem;right:.5rem;font-size:.75rem;color:var(--xw-muted-foreground);background-color:var(--xw-background);padding:.25rem .5rem;border-radius:.25rem;border:1px solid var(--xw-border)}._mdxContent_mc666_128 blockquote{border-left:3px solid var(--xw-accent);padding-left:1rem;font-style:italic;color:var(--xw-muted-foreground);margin-bottom:1rem;margin-top:1rem}._mdxContent_mc666_128 blockquote p{margin-bottom:.5rem}._mdxContent_mc666_128 blockquote p:last-child{margin-bottom:0}._mdxContent_mc666_128 a{color:var(--xw-link);text-decoration:none;transition:color .15s cubic-bezier(.4,0,.2,1);border-bottom:1px solid transparent}._mdxContent_mc666_128 a:hover{color:color-mix(in oklch,var(--xw-link) 80%,transparent);border-bottom-color:currentColor}._mdxContent_mc666_128 strong{font-weight:600}._mdxContent_mc666_128 em{font-style:italic}._mdxContent_mc666_128 table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.95rem}._mdxContent_mc666_128 table th,._mdxContent_mc666_128 table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--xw-border);line-height:1.4}._mdxContent_mc666_128 table th{font-weight:500;background-color:var(--xw-muted);font-size:.875rem;letter-spacing:.025em}._mdxContent_mc666_128 table tbody tr:hover{background-color:color-mix(in oklch,var(--xw-muted) 50%,transparent)}._mdxContent_mc666_128 img{max-width:100%;height:auto;border-radius:.5rem;margin:1.5rem 0;border:1px solid var(--xw-border)}._mdxContent_mc666_128 hr{border:none;border-top:1px solid var(--xw-border);margin:2rem 0}._searchButton_1k9sl_1{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:.375rem;background:none;border:none;color:var(--xw-muted-foreground);cursor:pointer;transition:all .2s ease;font-size:.875rem}._searchButton_1k9sl_1:hover{border-color:var(--xw-input)}._searchButton_1k9sl_1 ._searchIcon_1k9sl_17{width:1rem;height:1rem;opacity:.6}@media(max-width:768px){._searchButton_1k9sl_1 ._searchHint_1k9sl_23{display:none}}._searchButton_1k9sl_1 ._kbd_1k9sl_27{display:none;padding:.125rem .375rem;background:var(--xw-card);border:1px solid var(--xw-border);border-radius:.25rem;font-size:.75rem;font-family:monospace}@media(min-width:768px){._searchButton_1k9sl_1 ._kbd_1k9sl_27{display:block}}._searchOverlay_1k9sl_42{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2000;display:flex;align-items:flex-start;justify-content:center;padding-top:10vh;animation:_fadeIn_1k9sl_1 .2s ease;height:100vh}@keyframes _fadeIn_1k9sl_1{0%{opacity:0}to{opacity:1}}._searchModal_1k9sl_67{width:90%;max-width:600px;background:var(--xw-card);border:1px solid var(--xw-border);border-radius:.75rem;box-shadow:0 20px 60px #0000004d;animation:_slideIn_1k9sl_1 .2s ease;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}@keyframes _slideIn_1k9sl_1{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}._searchHeader_1k9sl_91{display:flex;align-items:center;gap:.75rem;padding:1rem 1.25rem;border-bottom:1px solid var(--xw-border)}._searchHeader_1k9sl_91 ._searchIcon_1k9sl_17{width:1.25rem;height:1.25rem;opacity:.5;flex-shrink:0}._searchInput_1k9sl_105{flex:1;border:none;background:transparent;color:var(--xw-foreground);font-size:1rem;outline:none}._searchInput_1k9sl_105:focus{border:none;outline:none;box-shadow:none}._searchInput_1k9sl_105::placeholder{color:var(--xw-muted-foreground);opacity:.6}._closeButton_1k9sl_123{background:none;border:none;color:var(--xw-muted-foreground);cursor:pointer;padding:.25rem;display:flex;align-items:center;justify-content:center;border-radius:.25rem;transition:all .2s ease}._closeButton_1k9sl_123 svg{width:1.25rem;height:1.25rem}._closeButton_1k9sl_123:hover{background:var(--xw-secondary);color:var(--xw-foreground)}._searchResults_1k9sl_144{flex:1;overflow-y:auto;padding:.5rem;min-height:200px;max-height:400px}._resultsList_1k9sl_152{list-style:none;padding:0;margin:0}._resultItem_1k9sl_158{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;width:100%;padding:.75rem 1rem;background:none;border:none;border-radius:.5rem;cursor:pointer;text-align:left;transition:all .15s ease;color:var(--xw-foreground)}._resultItem_1k9sl_158:hover,._resultItem_1k9sl_158._selected_1k9sl_173{background:var(--xw-secondary)}._resultItem_1k9sl_158 ._resultTitle_1k9sl_176{font-weight:500;font-size:.95rem}._resultItem_1k9sl_158 ._resultSlug_1k9sl_180{font-size:.8rem;color:var(--xw-muted-foreground);opacity:.8}._noResults_1k9sl_186{padding:3rem 1rem;text-align:center;color:var(--xw-muted-foreground);font-size:.9rem}._searchHints_1k9sl_193{display:flex;align-items:center;gap:1.5rem;padding:.75rem 1.25rem;border-top:1px solid var(--xw-border);background:var(--xw-secondary);font-size:.8rem;color:var(--xw-muted-foreground)}@media(max-width:768px){._searchHints_1k9sl_193{flex-direction:column;align-items:flex-start;gap:.5rem}}._searchHints_1k9sl_193 ._hint_1k9sl_210{display:flex;align-items:center;gap:.5rem}._searchHints_1k9sl_193 ._hint_1k9sl_210 kbd{padding:.125rem .375rem;background:var(--xw-card);border:1px solid var(--xw-border);border-radius:.25rem;font-size:.75rem;font-family:monospace;min-width:1.5rem;text-align:center}._header_jrobc_1{position:sticky;top:0;z-index:1020;background-color:#fffc;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);height:3.5rem;padding-left:16rem}.dark ._header_jrobc_1{background-color:#2020201a}@supports not (backdrop-filter: blur(12px)){._header_jrobc_1{background-color:var(--xw-background)}}@media(max-width:767px){._header_jrobc_1{padding:0}}._container_jrobc_24{width:100%;max-width:1400px;margin:0 auto;padding:0 1.5rem}@media(max-width:767px){._container_jrobc_24{padding:0 1rem}}._content_jrobc_36{display:flex;align-items:center;justify-content:space-between;height:3.5rem}._leftSection_jrobc_43{display:flex;align-items:center;gap:1rem}._mobileMenuButton_jrobc_49{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._mobileMenuButton_jrobc_49:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._mobileMenuButton_jrobc_49:disabled{pointer-events:none;opacity:.5}._mobileMenuButton_jrobc_49{padding:.5rem;background-color:transparent;color:var(--xw-muted-foreground);border-radius:.5rem;display:none}._mobileMenuButton_jrobc_49:hover{background-color:var(--xw-muted);color:var(--xw-foreground)}@media(max-width:767px){._mobileMenuButton_jrobc_49{display:flex}}._burgerIcon_jrobc_87{width:1.25rem;height:1.25rem}._logo_jrobc_92,._nav_jrobc_98{display:flex;align-items:center;gap:.5rem}@media(max-width:767px){._nav_jrobc_98{gap:.25rem}}._navLink_jrobc_109{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;font-weight:500;color:var(--xw-muted-foreground);text-decoration:none;transition:all .15s cubic-bezier(.4,0,.2,1)}._navLink_jrobc_109:hover{color:var(--xw-foreground)}._navLink_jrobc_109:focus{outline:none}._githubIcon_jrobc_128{width:1rem;height:1rem;flex-shrink:0;transition:transform .15s cubic-bezier(.4,0,.2,1)}._externalIcon_jrobc_135{width:1rem;height:1rem;flex-shrink:0}._supportDropdown_jrobc_141,._themeDropdown_jrobc_145{position:relative}._themeButton_jrobc_149{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem;border-radius:.5rem;font-size:.875rem;font-weight:500;color:var(--xw-muted-foreground);background:none;border:none;cursor:pointer;transition:all .15s cubic-bezier(.4,0,.2,1)}._themeButton_jrobc_149:hover{color:var(--xw-foreground);background-color:var(--xw-muted)}._themeButton_jrobc_149:focus{outline:none}._themeIcon_jrobc_171{width:1.125rem;height:1.125rem;flex-shrink:0}._supportButton_jrobc_177{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;font-weight:500;color:var(--xw-muted-foreground);background:none;border:none;cursor:pointer;transition:all .15s cubic-bezier(.4,0,.2,1)}._supportButton_jrobc_177:hover{color:var(--xw-foreground)}._supportButton_jrobc_177:focus{outline:none}._caretIcon_jrobc_198{width:.875rem;height:.875rem;flex-shrink:0;transition:transform .15s cubic-bezier(.4,0,.2,1)}button[aria-expanded=true] ._caretIcon_jrobc_198{transform:rotate(180deg)}._dropdownMenu_jrobc_208{position:absolute;top:calc(100% + .25rem);right:0;min-width:10rem;background-color:var(--xw-popover);border:1px solid var(--xw-border);border-radius:.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;z-index:1000;overflow:hidden}._dropdownItem_jrobc_221{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--xw-popover-foreground);text-decoration:none;background:none;border:none;cursor:pointer;text-align:left;transition:background-color .15s cubic-bezier(.4,0,.2,1)}._dropdownItem_jrobc_221:hover{background-color:var(--xw-muted)}._dropdownItem_jrobc_221:focus{outline:none;background-color:var(--xw-muted)}._dropdownIcon_jrobc_244{width:1rem;height:1rem;flex-shrink:0}@media(max-width:767px){._logoText_jrobc_251{font-size:1rem}._navLink_jrobc_109{padding:.25rem .5rem;font-size:.8rem;gap:.25rem}._githubIcon_jrobc_128{width:.875rem;height:.875rem}}._backdrop_1a7pu_1{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;z-index:1040;opacity:0;visibility:hidden;transition:all .15s cubic-bezier(.4,0,.2,1)}._backdrop_1a7pu_1._open_1a7pu_13{opacity:1;visibility:visible}._mobileMenu_1a7pu_18{position:fixed;top:0;left:0;width:320px;height:100vh;background-color:var(--xw-background);border-right:1px solid var(--xw-border);z-index:1050;transform:translate(-100%);transition:transform .15s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;overflow:hidden}._mobileMenu_1a7pu_18._open_1a7pu_13{transform:translate(0)}._header_1a7pu_37{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-bottom:1px solid var(--xw-border);flex-shrink:0}._brand_1a7pu_46{flex:1;display:flex;align-items:center;gap:.5rem}._cloudIcon_1a7pu_53{width:1.5rem;height:1.5rem;flex-shrink:0}._cloudIcon_1a7pu_53 .accent{fill:#d33079}._title_1a7pu_62{font-size:1.125rem;font-weight:600;color:var(--xw-foreground);margin:0}._closeButton_1a7pu_69{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._closeButton_1a7pu_69:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._closeButton_1a7pu_69:disabled{pointer-events:none;opacity:.5}._closeButton_1a7pu_69{padding:.5rem;background-color:transparent;color:var(--xw-muted-foreground);border-radius:.5rem}._closeButton_1a7pu_69:hover{background-color:var(--xw-muted);color:var(--xw-foreground)}._closeIcon_1a7pu_101{width:1.25rem;height:1.25rem}._languageSection_1a7pu_106{padding:1.5rem;border-bottom:1px solid var(--xw-border);flex-shrink:0}._languageSelect_1a7pu_112{position:relative;width:100%}._languageButton_1a7pu_117{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._languageButton_1a7pu_117:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._languageButton_1a7pu_117:disabled{pointer-events:none;opacity:.5}._languageButton_1a7pu_117{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem 1rem;background-color:var(--xw-background);border:1px solid var(--xw-border);color:var(--xw-foreground);gap:.5rem}._languageButton_1a7pu_117:hover,._languageButton_1a7pu_117[aria-expanded=true]{background-color:var(--xw-muted)}._icon_1a7pu_156{width:1rem;height:1rem;flex-shrink:0}._chevron_1a7pu_162{width:1rem;height:1rem;transition:transform .15s cubic-bezier(.4,0,.2,1);margin-left:auto}._languageButton_1a7pu_117[aria-expanded=true] ._chevron_1a7pu_162{transform:rotate(180deg)}._languageDropdown_1a7pu_172{position:absolute;top:100%;left:0;right:0;background-color:var(--xw-popover);border:1px solid var(--xw-border);border-radius:.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;z-index:1000;margin-top:.25rem}._languageOption_1a7pu_185{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._languageOption_1a7pu_185:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._languageOption_1a7pu_185:disabled{pointer-events:none;opacity:.5}._languageOption_1a7pu_185{width:100%;padding:.5rem 1rem;background-color:transparent;color:var(--xw-foreground);text-align:left;justify-content:flex-start;border-radius:0}._languageOption_1a7pu_185:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}._languageOption_1a7pu_185:last-child{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}._languageOption_1a7pu_185:hover{background-color:var(--xw-muted)}._languageOption_1a7pu_185._selected_1a7pu_226{background-color:var(--xw-accent);color:var(--xw-accent-foreground)}._scrollArea_1a7pu_231{flex:1;overflow-y:auto;padding:1.5rem 0}._navigation_1a7pu_237{padding:0 1.5rem}._section_1a7pu_241{margin-bottom:1rem}._sectionButton_1a7pu_245{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._sectionButton_1a7pu_245:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._sectionButton_1a7pu_245:disabled{pointer-events:none;opacity:.5}._sectionButton_1a7pu_245{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem 1rem;background-color:transparent;color:var(--xw-foreground);font-weight:600;gap:.5rem;border-radius:.5rem}._sectionButton_1a7pu_245:hover{background-color:var(--xw-muted)}._sectionButton_1a7pu_245 ._icon_1a7pu_156{transition:transform .15s cubic-bezier(.4,0,.2,1);margin-left:auto}._sectionButton_1a7pu_245._expanded_1a7pu_285 ._icon_1a7pu_156{transform:rotate(90deg)}._sectionItems_1a7pu_289{margin-top:.5rem;margin-left:1rem;display:flex;flex-direction:column;gap:.25rem}._navItem_1a7pu_297{display:block;padding:.5rem 1rem;border-radius:.5rem;color:var(--xw-muted-foreground);text-decoration:none;transition:all .15s cubic-bezier(.4,0,.2,1);font-size:.875rem}._navItem_1a7pu_297:hover{background-color:var(--xw-muted);color:var(--xw-foreground)}._navItem_1a7pu_297._active_1a7pu_310{background-color:var(--xw-accent);color:var(--xw-accent-foreground);font-weight:500}._navItemContent_1a7pu_316{display:flex;align-items:center;gap:.5rem}._navItemTitle_1a7pu_322{flex:1}@media(min-width:1024px){._mobileMenu_1a7pu_18,._backdrop_1a7pu_1{display:none}}._sidebar_1qgjy_1{position:fixed;top:0;left:0;width:16rem;height:100vh;background-color:var(--xw-sidebar);overflow-y:auto;z-index:1020}@media(max-width:767px){._sidebar_1qgjy_1{display:none}}._header_1qgjy_17{position:sticky;top:0;z-index:1020;padding:1rem;background-color:var(--xw-sidebar);display:flex;flex-direction:column;gap:.5rem;padding-bottom:0}._brand_1qgjy_29{display:flex;align-items:center;gap:.5rem}._cloudIcon_1qgjy_35{width:1.5rem;height:1.5rem;flex-shrink:0}._cloudIcon_1qgjy_35 .accent{fill:#d33079}._title_1qgjy_44{font-size:1rem;font-weight:600;line-height:1.5;margin:0;letter-spacing:-.02em;color:var(--xw-foreground)}._languageSelect_1qgjy_55{position:relative;margin-top:.25rem;width:100%}._languageButton_1qgjy_61{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._languageButton_1qgjy_61:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._languageButton_1qgjy_61:disabled{pointer-events:none;opacity:.5}._languageButton_1qgjy_61{display:flex;align-items:center;justify-content:space-between;padding:.25rem .5rem;width:100%;gap:.25rem;font-size:.8rem;background:transparent;border:1px solid var(--xw-border);border-radius:.25rem;color:var(--xw-muted-foreground)}._languageButton_1qgjy_61:hover{background-color:var(--xw-muted);color:var(--xw-foreground)}._languageButton_1qgjy_61 ._icon_1qgjy_99{width:.875rem;height:.875rem;flex-shrink:0}._languageButton_1qgjy_61 ._chevron_1qgjy_104{width:.875rem;height:.875rem;flex-shrink:0;transition:transform .15s cubic-bezier(.4,0,.2,1)}._languageButton_1qgjy_61[aria-expanded=true] ._chevron_1qgjy_104{transform:rotate(180deg)}._languageDropdown_1qgjy_114{position:absolute;top:100%;left:0;right:0;margin-top:.25rem;background-color:var(--xw-popover);border:1px solid var(--xw-border);border-radius:.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;z-index:1000;overflow:hidden}._languageOption_1qgjy_128{display:block;width:100%;padding:.25rem .5rem;text-align:left;background:none;border:none;color:var(--xw-popover-foreground);font-size:.85rem;cursor:pointer;transition:background-color .15s cubic-bezier(.4,0,.2,1)}._languageOption_1qgjy_128:hover{background-color:var(--xw-muted)}._languageOption_1qgjy_128:focus{outline:none;background-color:var(--xw-muted)}._languageOption_1qgjy_128._selected_1qgjy_147{background-color:var(--xw-muted);color:var(--xw-foreground)}._scrollArea_1qgjy_152{height:calc(100vh - 120px);padding:1rem .5rem 1rem 1rem;overflow-y:auto}._navigation_1qgjy_158{display:flex;flex-direction:column;gap:.125rem}._section_1qgjy_164{display:flex;flex-direction:column;gap:0}._sectionButton_1qgjy_170{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._sectionButton_1qgjy_170:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._sectionButton_1qgjy_170:disabled{pointer-events:none;opacity:.5}._sectionButton_1qgjy_170{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.25rem .5rem;font-weight:500;font-size:.85rem;color:var(--xw-muted-foreground);background:transparent;text-align:left;letter-spacing:-.01em;border:none}._sectionButton_1qgjy_170:hover{color:var(--xw-foreground)}._sectionButton_1qgjy_170 ._icon_1qgjy_99{width:.875rem;height:.875rem;transition:transform .15s cubic-bezier(.4,0,.2,1)}._sectionButton_1qgjy_170._expanded_1qgjy_213 ._icon_1qgjy_99{transform:rotate(90deg)}._sectionItems_1qgjy_217{margin-top:.25rem;padding-left:1rem;display:flex;flex-direction:column;gap:.125rem}._navItem_1qgjy_225{display:block;width:100%;padding:.25rem .5rem;border-radius:.25rem;font-size:.85rem;color:var(--xw-muted-foreground);text-decoration:none;transition:color .15s cubic-bezier(.4,0,.2,1)}._navItem_1qgjy_225:hover{color:var(--xw-foreground)}._navItem_1qgjy_225._active_1qgjy_238{color:var(--xw-foreground);font-weight:500}._navItemContent_1qgjy_243{display:flex;align-items:center;justify-content:space-between;width:100%}._sidebar_1qgjy_1::-webkit-scrollbar{width:6px}._sidebar_1qgjy_1::-webkit-scrollbar-track{background:transparent}._sidebar_1qgjy_1::-webkit-scrollbar-thumb{background:var(--xw-muted-foreground);border-radius:9999px;opacity:.3}._sidebar_1qgjy_1::-webkit-scrollbar-thumb:hover{opacity:.6}._skeletonSection_1qgjy_267{display:flex;flex-direction:column;gap:0;margin-bottom:.5rem}._skeletonSectionTitle_1qgjy_274{height:1rem;width:60%;position:relative;overflow:hidden;background-color:#80808026;border-radius:.25rem;margin-bottom:.25rem}._skeletonSectionTitle_1qgjy_274:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.15) 50%,transparent 100%);animation:_skeleton-loading_1qgjy_1 1.5s ease-in-out infinite}._skeletonSectionItems_1qgjy_294{padding-left:1rem;display:flex;flex-direction:column;gap:.25rem;margin-top:.25rem}._skeletonItem_1qgjy_302{height:1rem;width:85%;position:relative;overflow:hidden;background-color:#80808026;border-radius:.25rem;margin-bottom:.125rem}._skeletonItem_1qgjy_302:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.15) 50%,transparent 100%);animation:_skeleton-loading_1qgjy_1 1.5s ease-in-out infinite}._skeletonItem_1qgjy_302:nth-child(2){width:75%}._skeletonItem_1qgjy_302:nth-child(2):before{animation-delay:.1s}@keyframes _skeleton-loading_1qgjy_1{0%{transform:translate(-100%)}to{transform:translate(200%)}}._app_h5ex0_1{min-height:100vh;background-color:var(--xw-background);color:var(--xw-foreground);display:flex;flex-direction:column}._layout_h5ex0_9{display:flex;flex:1;min-height:calc(100vh - 3.5rem)}._main_h5ex0_15{flex:1;display:flex;flex-direction:column;margin-left:16rem}._main_h5ex0_15._fullWidth_h5ex0_21{margin-left:0}@media(max-width:767px){._main_h5ex0_15{margin-left:0}}._contentWrapper_h5ex0_30{display:flex;flex:1;position:relative;width:100%;max-width:80rem;margin:0 auto;padding:2rem;padding-top:0}._main_h5ex0_15._fullWidth_h5ex0_21 ._contentWrapper_h5ex0_30{width:auto}@media(max-width:1024px){._contentWrapper_h5ex0_30{padding:1.5rem;padding-top:0}}@media(max-width:767px){._contentWrapper_h5ex0_30{padding:.5rem;padding-top:0}}._homePage_1q89n_1{flex:1;max-width:48rem;margin:0;padding:0 0 2rem}@media(max-width:767px){._homePage_1q89n_1{padding:1rem;max-width:none}}@media(max-width:1024px){._homePage_1q89n_1{max-width:none;padding:2rem}}._header_1q89n_20{margin-bottom:1rem}._title_1q89n_24{font-size:1.5rem;font-weight:700;color:var(--xw-foreground);margin-bottom:0!important}._articlesList_1q89n_31{display:flex;flex-direction:column;gap:1rem}._articleCard_1q89n_37{padding:1rem;border:1px solid var(--xw-border);border-radius:.5rem;background:transparent;cursor:pointer;text-align:left;transition:all .2s ease-in-out}._articleCard_1q89n_37:hover{border-color:var(--xw-primary);background-color:var(--xw-card);transform:translateY(-2px)}._articleCard_1q89n_37:focus-visible{outline:2px solid var(--xw-primary);outline-offset:2px}._articleTitle_1q89n_56{font-size:1.25rem;font-weight:600;margin:0 0 .5rem;color:var(--xw-foreground)}._articleDescription_1q89n_63{font-size:.9rem;color:var(--xw-muted-foreground);margin:0 0 .5rem;line-height:1.5}._loading_1q89n_70,._empty_1q89n_71{padding:2rem;text-align:center;color:var(--xw-muted-foreground)}@keyframes _shimmer_1q89n_1{0%{background-position:-1000px 0}to{background-position:1000px 0}}._skeletonCard_1q89n_85{padding:1rem;border:1px solid var(--xw-border);border-radius:.5rem;background:transparent;display:flex;flex-direction:column;gap:.5rem}._skeletonTitle_1q89n_95{width:70%;height:1.5rem;background:linear-gradient(90deg,var(--xw-muted) 0%,color-mix(in oklch,var(--xw-muted) 50%,white) 50%,var(--xw-muted) 100%);background-size:1000px 100%;animation:_shimmer_1q89n_1 2s infinite linear;border-radius:.5rem}._skeletonText_1q89n_104{width:100%;height:1rem;background:linear-gradient(90deg,var(--xw-muted) 0%,color-mix(in oklch,var(--xw-muted) 50%,white) 50%,var(--xw-muted) 100%);background-size:1000px 100%;animation:_shimmer_1q89n_1 2s infinite linear;border-radius:.25rem}._skeletonMetadata_1q89n_113{width:40%;height:.875rem;background:linear-gradient(90deg,var(--xw-muted) 0%,color-mix(in oklch,var(--xw-muted) 50%,white) 50%,var(--xw-muted) 100%);background-size:1000px 100%;animation:_shimmer_1q89n_1 2s infinite linear;border-radius:.25rem;margin-top:.25rem}
217
+ ._tabContainer_zk6h4_1{display:inline-flex;background-color:var(--xw-card);border:1px solid var(--xw-border);border-radius:.5rem;margin-bottom:2rem;overflow:hidden}._tab_zk6h4_1{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._tab_zk6h4_1:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._tab_zk6h4_1:disabled{pointer-events:none;opacity:.5}._tab_zk6h4_1{padding:.5rem 1rem;font-size:.87rem;font-weight:500;background-color:transparent;border:none;border-radius:0;color:var(--xw-muted-foreground);cursor:pointer;white-space:nowrap}._tab_zk6h4_1:not(:last-child){border-right:1px solid var(--xw-border)}._tab_zk6h4_1._active_zk6h4_45{background-color:var(--xw-accent);color:var(--xw-accent-foreground)}._tab_zk6h4_1:hover:not(._active_zk6h4_45){background-color:var(--xw-muted);color:var(--xw-foreground)}._tab_zk6h4_1:focus-visible{outline:2px solid var(--xw-accent);outline-offset:-2px}._articleNavigation_kz84g_1{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--xw-border)}._navContainer_kz84g_7{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:767px){._navContainer_kz84g_7{grid-template-columns:1fr;gap:1rem}}@media(min-width:1024px){._navContainer_kz84g_7{gap:1.5rem}}._navLink_kz84g_24{display:flex;padding:1rem;border:1px solid var(--xw-border);border-radius:.5rem;text-decoration:none;color:var(--xw-foreground);background-color:var(--xw-background);transition:all .2s ease;box-shadow:0 1px 3px #0000000d}._navLink_kz84g_24:hover{border-color:var(--xw-ring);background-color:var(--xw-card);transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}._navLink_kz84g_24:first-child{justify-content:flex-start}@media(max-width:767px){._navLink_kz84g_24:first-child{justify-content:center;text-align:center}}._navLink_kz84g_24:last-child{justify-content:flex-end;text-align:right}@media(max-width:767px){._navLink_kz84g_24:last-child{justify-content:center;text-align:center}}._navLinkContent_kz84g_61{display:flex;align-items:center;gap:.75rem;min-width:0;width:100%}@media(max-width:767px){._navLinkContent_kz84g_61{justify-content:center;flex-direction:column;text-align:center}}._navIcon_kz84g_76{display:flex;align-items:center;color:var(--xw-primary);flex-shrink:0}._navText_kz84g_83{display:flex;flex-direction:column;gap:.25rem;min-width:0}._navLabel_kz84g_90{font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--xw-muted-foreground)}._navTitle_kz84g_98{font-size:.875rem;font-weight:400;color:var(--xw-foreground);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;line-height:1.4}@media(min-width:1024px){._navTitle_kz84g_98{font-size:.9rem}}._blogSidebar_n1up9_1{position:sticky;top:0;align-self:flex-start;height:fit-content;max-height:calc(100vh - 8rem);overflow-y:auto;padding:0 0 2rem 1.5rem;margin-left:2rem;background:transparent;border-left:1px solid var(--xw-border);flex-shrink:0;width:250px}@media(max-width:1024px){._blogSidebar_n1up9_1{display:none}}._section_n1up9_21{margin-bottom:2rem}._section_n1up9_21:last-child{margin-bottom:0}._sectionTitle_n1up9_28{font-size:.75rem;font-weight:600;color:var(--xw-foreground);margin:0 0 1rem}._linksList_n1up9_35{display:flex;flex-direction:column;gap:.25rem}._link_n1up9_35{display:flex;align-items:center;gap:.5rem;padding:.5rem;color:var(--xw-foreground);text-decoration:none;border-radius:.25rem;transition:all .15s cubic-bezier(.4,0,.2,1);font-size:.875rem}._link_n1up9_35:hover{color:var(--xw-primary)}._link_n1up9_35 svg{flex-shrink:0}._breadcrumb_rarc4_1{margin-bottom:1rem}._breadcrumbList_rarc4_5{display:flex;align-items:center;list-style:none;margin:0;padding:0;font-size:.875rem;color:var(--xw-muted-foreground)}._breadcrumbItem_rarc4_15{display:flex;align-items:center;gap:.25rem}._breadcrumbLink_rarc4_21{background:none;border:none;cursor:pointer;color:var(--xw-link);text-decoration:none;font-size:inherit;padding:0;font-weight:500;transition:color .2s ease}._breadcrumbLink_rarc4_21:hover{color:var(--xw-primary);text-decoration:underline}._breadcrumbLink_rarc4_21:focus-visible{outline:2px solid var(--xw-primary);outline-offset:2px}._breadcrumbSeparator_rarc4_41{color:var(--xw-border);margin:0 .5rem}._breadcrumbCurrent_rarc4_46{color:var(--xw-foreground);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:20rem}@media(max-width:767px){._breadcrumbCurrent_rarc4_46{max-width:10rem}}._metadata_bsge0_1{display:flex;align-items:center;gap:1.5rem;margin-top:1rem;margin-bottom:1rem}._author_bsge0_9,._date_bsge0_10{display:flex;align-items:center;gap:.5rem;font-weight:500;font-size:.9rem}._author_bsge0_9 svg,._date_bsge0_10 svg{flex-shrink:0}._date_bsge0_10{color:var(--xw-text-secondary, #666)}._tableOfContents_9ofak_1{position:sticky;top:5rem;align-self:flex-start;height:fit-content;max-height:calc(100vh - 8rem);overflow-y:auto;padding:2rem 0 2rem 1.5rem;margin-left:2rem;background:transparent;border-left:1px solid var(--xw-border);flex-shrink:0;max-width:250px}@media(max-width:1024px){._tableOfContents_9ofak_1{display:none}}._header_9ofak_21{margin-bottom:1rem}._title_9ofak_25{font-size:.75rem;font-weight:500;color:var(--xw-muted-foreground);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}._nav_9ofak_34 ul{margin:0;padding:0;list-style:none}._list_9ofak_40{display:flex;flex-direction:column;gap:.125rem;margin:0}._link_9ofak_47{display:block;width:100%;padding:.25rem 0;text-align:left;background:none;border:none;cursor:pointer;font-size:.875rem;line-height:1.4;color:var(--xw-muted-foreground);text-decoration:none;border-radius:.25rem;transition:all .15s cubic-bezier(.4,0,.2,1);position:relative;font-family:inherit}._link_9ofak_47:hover{color:var(--xw-foreground)}._link_9ofak_47:focus{outline:none;color:var(--xw-foreground)}._link_9ofak_47._active_9ofak_71{color:var(--xw-primary);font-weight:500}._link_9ofak_47._active_9ofak_71:before{content:"";position:absolute;left:-1.5rem;top:50%;transform:translateY(-50%);width:1px;height:1rem;background-color:var(--xw-primary);border-radius:.5px}._level1_9ofak_87{font-weight:500;padding-left:0;margin-bottom:.125rem}._level2_9ofak_93{padding-left:.5rem;margin-bottom:.0625rem}._level3_9ofak_98{padding-left:1rem;font-size:.8125rem;margin-bottom:.0625rem}._level4_9ofak_104{padding-left:1.5rem;font-size:.8125rem;margin-bottom:.0625rem}._level5_9ofak_110{padding-left:2rem;font-size:.75rem;margin-bottom:.0625rem}._level6_9ofak_116{padding-left:2.5rem;font-size:.75rem;margin-bottom:.0625rem}._tableOfContents_9ofak_1::-webkit-scrollbar{width:4px}._tableOfContents_9ofak_1::-webkit-scrollbar-track{background:transparent}._tableOfContents_9ofak_1::-webkit-scrollbar-thumb{background:var(--xw-border);border-radius:2px}._tableOfContents_9ofak_1::-webkit-scrollbar-thumb:hover{background:var(--xw-muted-foreground)}._overlay_1e1d4_1{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2000;display:flex;align-items:flex-start;justify-content:center;padding-top:10vh;animation:_fadeIn_1e1d4_1 .2s ease;height:100vh}@keyframes _fadeIn_1e1d4_1{0%{opacity:0}to{opacity:1}}._modal_1e1d4_26{width:90%;max-width:600px;background:var(--xw-card);border:1px solid var(--xw-border);border-radius:.75rem;box-shadow:0 20px 60px #0000004d;animation:_slideIn_1e1d4_1 .2s ease;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}@keyframes _slideIn_1e1d4_1{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}._header_1e1d4_50{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid var(--xw-border)}._title_1e1d4_58{font-size:1.125rem;font-weight:600;color:var(--xw-foreground);margin:0}._closeButton_1e1d4_65{background:none;border:none;color:var(--xw-muted-foreground);cursor:pointer;padding:.25rem;display:flex;align-items:center;justify-content:center;border-radius:.25rem;transition:all .2s ease}._closeButton_1e1d4_65 svg{width:1.25rem;height:1.25rem}._closeButton_1e1d4_65:hover{background:var(--xw-secondary);color:var(--xw-foreground)}._results_1e1d4_86{flex:1;overflow-y:auto;padding:.5rem;min-height:200px;max-height:400px}._resultsList_1e1d4_94{list-style:none;padding:0;margin:0}._resultItem_1e1d4_100{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;width:100%;padding:.75rem 1rem;background:none;border:none;border-radius:.5rem;cursor:pointer;text-align:left;transition:all .15s ease;color:var(--xw-foreground)}._resultItem_1e1d4_100:hover{background:var(--xw-secondary)}._resultTitle_1e1d4_119{font-weight:500;font-size:.95rem}._resultSlug_1e1d4_124{font-size:.8rem;color:var(--xw-muted-foreground);opacity:.8}._noResults_1e1d4_130{padding:3rem 1rem;text-align:center;color:var(--xw-muted-foreground);font-size:.9rem}._tags_11t8a_1{display:flex;align-items:center;gap:.75rem;margin:2rem 0 1rem;padding:1rem 0 0;border-top:1px solid var(--xw-border)}._tags_11t8a_1._compact_11t8a_9{margin:2rem 0 1rem;padding:1rem 0 0;border-top:1px solid var(--xw-border)}._tagLabel_11t8a_15{display:flex;align-items:center;gap:.5rem;color:var(--xw-muted-foreground);font-size:.875rem;font-weight:500;white-space:nowrap}._tagIcon_11t8a_25{width:1.125rem;height:1.125rem}._tagList_11t8a_30{display:flex;flex-wrap:wrap;gap:.5rem}._tag_11t8a_1{display:inline-flex;align-items:center;padding:.25rem .75rem;background:none;border:1px solid var(--xw-border);border-radius:.75rem;color:var(--xw-muted-foreground);font-size:.8rem;font-weight:400;cursor:pointer;transition:all .2s ease}._tag_11t8a_1:hover{color:var(--xw-foreground);border-color:var(--xw-ring)}._contentPage_1jss6_1{flex:1;max-width:48rem;margin:0;padding:2rem 0}@media(max-width:767px){._contentPage_1jss6_1{padding:1rem;max-width:none}}@media(max-width:1024px){._contentPage_1jss6_1{max-width:none;padding:2rem}}._contentPage_1jss6_1>h1{font-size:1.875rem;font-weight:600;letter-spacing:-.025em;margin-top:1.5rem;margin-bottom:1.5rem;border-bottom:1px solid var(--xw-border);padding-bottom:.75rem;line-height:1.2;scroll-margin-top:5rem}._contentPage_1jss6_1>h1._withMetadata_1jss6_30{border-bottom:none;padding-bottom:0;margin-bottom:.5rem}._metadata_1jss6_36{display:flex;gap:1rem;align-items:center;padding:.5rem 0 1rem;color:var(--xw-muted-foreground);font-size:.875rem;border-bottom:1px solid var(--xw-border);margin-bottom:1rem}._metadata_1jss6_36 ._author_1jss6_46,._metadata_1jss6_36 ._date_1jss6_47{display:flex;align-items:center;gap:.5rem}._metadata_1jss6_36 ._author_1jss6_46{font-weight:500;color:var(--xw-foreground)}@media(max-width:767px){._metadata_1jss6_36{flex-direction:column;align-items:flex-start;gap:.25rem}}._loadingContainer_1jss6_64,._errorContainer_1jss6_65{display:flex;align-items:center;justify-content:center;height:16rem}._loadingContainer_1jss6_64{flex-direction:column;align-items:flex-start;gap:1.5rem;padding:2rem 0}@keyframes _shimmer_1jss6_1{0%{background-position:-1000px 0}to{background-position:1000px 0}}._skeletonTitle_1jss6_87{width:60%;height:2.5rem;background:linear-gradient(90deg,var(--xw-muted) 0%,color-mix(in oklch,var(--xw-muted) 50%,white) 50%,var(--xw-muted) 100%);background-size:1000px 100%;animation:_shimmer_1jss6_1 2s infinite linear;border-radius:.5rem}._skeletonParagraph_1jss6_96{width:100%;height:1rem;background:linear-gradient(90deg,var(--xw-muted) 0%,color-mix(in oklch,var(--xw-muted) 50%,white) 50%,var(--xw-muted) 100%);background-size:1000px 100%;animation:_shimmer_1jss6_1 2s infinite linear;border-radius:.25rem;margin-bottom:.5rem}._skeletonParagraph_1jss6_96:not(:last-child){margin-bottom:1rem}._skeletonParagraphShort_1jss6_109{width:70%;height:1rem;background:linear-gradient(90deg,var(--xw-muted) 0%,color-mix(in oklch,var(--xw-muted) 50%,white) 50%,var(--xw-muted) 100%);background-size:1000px 100%;animation:_shimmer_1jss6_1 2s infinite linear;border-radius:.25rem}._loadingText_1jss6_118{color:var(--xw-muted-foreground);font-size:1rem}._errorText_1jss6_123{color:var(--xw-destructive);font-size:1rem}._mdxContent_1jss6_128{max-width:none}._mdxContent_1jss6_128 h1{font-size:1.875rem;font-weight:600;letter-spacing:-.025em;margin-bottom:1.5rem;border-bottom:1px solid var(--xw-border);padding-bottom:.75rem;line-height:1.2;scroll-margin-top:5rem}._mdxContent_1jss6_128 h1._withMetadata_1jss6_30{border-bottom:none;padding-bottom:0;margin-bottom:.5rem}._mdxContent_1jss6_128 h1 a{color:inherit;text-decoration:none;border:none;position:relative}._mdxContent_1jss6_128 h1 a:hover{color:inherit;border:none}._mdxContent_1jss6_128 h1 a:hover:before{content:"#";position:absolute;left:-1.5rem;color:var(--xw-link);opacity:.7;font-weight:400}._mdxContent_1jss6_128 h2{font-size:1.5rem;font-weight:500;letter-spacing:-.02em;margin-bottom:1rem;margin-top:2.5rem;border-bottom:1px solid var(--xw-border);padding-bottom:.5rem;line-height:1.3;scroll-margin-top:5rem}._mdxContent_1jss6_128 h2 a{color:inherit;text-decoration:none;border:none;position:relative}._mdxContent_1jss6_128 h2 a:hover{color:inherit;border:none}._mdxContent_1jss6_128 h2 a:hover:before{content:"#";position:absolute;left:-1.5rem;color:var(--xw-link);opacity:.7;font-weight:400}._mdxContent_1jss6_128 h3{font-size:1.25rem;font-weight:500;letter-spacing:-.015em;margin-bottom:.75rem;margin-top:2rem;line-height:1.4;scroll-margin-top:5rem}._mdxContent_1jss6_128 h3 a{color:inherit;text-decoration:none;border:none;position:relative}._mdxContent_1jss6_128 h3 a:hover{color:inherit;border:none}._mdxContent_1jss6_128 h3 a:hover:before{content:"#";position:absolute;left:-1.5rem;color:var(--xw-link);opacity:.7;font-weight:400}._mdxContent_1jss6_128 h4{font-size:1.125rem;font-weight:500;letter-spacing:-.01em;margin-bottom:.5rem;margin-top:1.5rem;line-height:1.4;scroll-margin-top:5rem}._mdxContent_1jss6_128 h4 a{color:inherit;text-decoration:none;border:none;position:relative}._mdxContent_1jss6_128 h4 a:hover{color:inherit;border:none}._mdxContent_1jss6_128 h4 a:hover:before{content:"#";position:absolute;left:-1.5rem;color:var(--xw-link);opacity:.7;font-weight:400}._mdxContent_1jss6_128 h5{font-size:1rem;font-weight:500;margin-bottom:.5rem;margin-top:1.25rem;line-height:1.5}._mdxContent_1jss6_128 h6{font-size:.875rem;font-weight:500;margin-bottom:.5rem;margin-top:1rem;line-height:1.5}._mdxContent_1jss6_128 p{font-size:1rem;line-height:1.65;margin-bottom:1rem;color:var(--xw-foreground)}._mdxContent_1jss6_128 ul,._mdxContent_1jss6_128 ol{margin-bottom:1rem;padding-left:1.5rem}._mdxContent_1jss6_128 ul li,._mdxContent_1jss6_128 ol li{font-size:1rem;line-height:1.65;margin-bottom:.375rem}._mdxContent_1jss6_128 ul ul,._mdxContent_1jss6_128 ul ol,._mdxContent_1jss6_128 ol ul,._mdxContent_1jss6_128 ol ol{margin-top:.375rem;margin-bottom:.375rem}._mdxContent_1jss6_128 ul{list-style-type:disc}._mdxContent_1jss6_128 ol{list-style-type:decimal}._mdxContent_1jss6_128 code{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.875rem;background-color:var(--xw-muted);padding:.1875rem .4375rem;border-radius:.25rem;color:var(--xw-foreground);font-weight:500}._mdxContent_1jss6_128 pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;background-color:var(--xw-muted);padding:1.25rem;border-radius:.75rem;overflow-x:auto;margin:1.5rem 0;position:relative;border:1px solid var(--xw-border)}._mdxContent_1jss6_128 pre code{background-color:transparent;padding:0;color:inherit;font-weight:400}._mdxContent_1jss6_128 ._codeBlock_1jss6_316{position:relative;margin-bottom:1.5rem}._mdxContent_1jss6_128 ._codeLanguage_1jss6_320{position:absolute;top:.5rem;right:.5rem;font-size:.75rem;color:var(--xw-muted-foreground);background-color:var(--xw-background);padding:.25rem .5rem;border-radius:.25rem;border:1px solid var(--xw-border)}._mdxContent_1jss6_128 blockquote{border-left:3px solid var(--xw-accent);padding-left:1rem;font-style:italic;color:var(--xw-muted-foreground);margin-bottom:1rem;margin-top:1rem}._mdxContent_1jss6_128 blockquote p{margin-bottom:.5rem}._mdxContent_1jss6_128 blockquote p:last-child{margin-bottom:0}._mdxContent_1jss6_128 a{color:var(--xw-link);text-decoration:none;transition:color .15s cubic-bezier(.4,0,.2,1);border-bottom:1px solid transparent}._mdxContent_1jss6_128 a:hover{color:color-mix(in oklch,var(--xw-link) 80%,transparent);border-bottom-color:currentColor}._mdxContent_1jss6_128 strong{font-weight:600}._mdxContent_1jss6_128 em{font-style:italic}._mdxContent_1jss6_128 table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.95rem}._mdxContent_1jss6_128 table th,._mdxContent_1jss6_128 table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--xw-border);line-height:1.4}._mdxContent_1jss6_128 table th{font-weight:500;background-color:var(--xw-muted);font-size:.875rem;letter-spacing:.025em}._mdxContent_1jss6_128 table tbody tr:hover{background-color:color-mix(in oklch,var(--xw-muted) 50%,transparent)}._mdxContent_1jss6_128 img{max-width:100%;height:auto;border-radius:.5rem;margin:1.5rem 0;border:1px solid var(--xw-border)}._mdxContent_1jss6_128 hr{border:none;border-top:1px solid var(--xw-border);margin:2rem 0}._searchButton_1k9sl_1{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:.375rem;background:none;border:none;color:var(--xw-muted-foreground);cursor:pointer;transition:all .2s ease;font-size:.875rem}._searchButton_1k9sl_1:hover{border-color:var(--xw-input)}._searchButton_1k9sl_1 ._searchIcon_1k9sl_17{width:1rem;height:1rem;opacity:.6}@media(max-width:768px){._searchButton_1k9sl_1 ._searchHint_1k9sl_23{display:none}}._searchButton_1k9sl_1 ._kbd_1k9sl_27{display:none;padding:.125rem .375rem;background:var(--xw-card);border:1px solid var(--xw-border);border-radius:.25rem;font-size:.75rem;font-family:monospace}@media(min-width:768px){._searchButton_1k9sl_1 ._kbd_1k9sl_27{display:block}}._searchOverlay_1k9sl_42{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2000;display:flex;align-items:flex-start;justify-content:center;padding-top:10vh;animation:_fadeIn_1k9sl_1 .2s ease;height:100vh}@keyframes _fadeIn_1k9sl_1{0%{opacity:0}to{opacity:1}}._searchModal_1k9sl_67{width:90%;max-width:600px;background:var(--xw-card);border:1px solid var(--xw-border);border-radius:.75rem;box-shadow:0 20px 60px #0000004d;animation:_slideIn_1k9sl_1 .2s ease;max-height:80vh;display:flex;flex-direction:column;overflow:hidden}@keyframes _slideIn_1k9sl_1{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}._searchHeader_1k9sl_91{display:flex;align-items:center;gap:.75rem;padding:1rem 1.25rem;border-bottom:1px solid var(--xw-border)}._searchHeader_1k9sl_91 ._searchIcon_1k9sl_17{width:1.25rem;height:1.25rem;opacity:.5;flex-shrink:0}._searchInput_1k9sl_105{flex:1;border:none;background:transparent;color:var(--xw-foreground);font-size:1rem;outline:none}._searchInput_1k9sl_105:focus{border:none;outline:none;box-shadow:none}._searchInput_1k9sl_105::placeholder{color:var(--xw-muted-foreground);opacity:.6}._closeButton_1k9sl_123{background:none;border:none;color:var(--xw-muted-foreground);cursor:pointer;padding:.25rem;display:flex;align-items:center;justify-content:center;border-radius:.25rem;transition:all .2s ease}._closeButton_1k9sl_123 svg{width:1.25rem;height:1.25rem}._closeButton_1k9sl_123:hover{background:var(--xw-secondary);color:var(--xw-foreground)}._searchResults_1k9sl_144{flex:1;overflow-y:auto;padding:.5rem;min-height:200px;max-height:400px}._resultsList_1k9sl_152{list-style:none;padding:0;margin:0}._resultItem_1k9sl_158{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem;width:100%;padding:.75rem 1rem;background:none;border:none;border-radius:.5rem;cursor:pointer;text-align:left;transition:all .15s ease;color:var(--xw-foreground)}._resultItem_1k9sl_158:hover,._resultItem_1k9sl_158._selected_1k9sl_173{background:var(--xw-secondary)}._resultItem_1k9sl_158 ._resultTitle_1k9sl_176{font-weight:500;font-size:.95rem}._resultItem_1k9sl_158 ._resultSlug_1k9sl_180{font-size:.8rem;color:var(--xw-muted-foreground);opacity:.8}._noResults_1k9sl_186{padding:3rem 1rem;text-align:center;color:var(--xw-muted-foreground);font-size:.9rem}._searchHints_1k9sl_193{display:flex;align-items:center;gap:1.5rem;padding:.75rem 1.25rem;border-top:1px solid var(--xw-border);background:var(--xw-secondary);font-size:.8rem;color:var(--xw-muted-foreground)}@media(max-width:768px){._searchHints_1k9sl_193{flex-direction:column;align-items:flex-start;gap:.5rem}}._searchHints_1k9sl_193 ._hint_1k9sl_210{display:flex;align-items:center;gap:.5rem}._searchHints_1k9sl_193 ._hint_1k9sl_210 kbd{padding:.125rem .375rem;background:var(--xw-card);border:1px solid var(--xw-border);border-radius:.25rem;font-size:.75rem;font-family:monospace;min-width:1.5rem;text-align:center}._header_jrobc_1{position:sticky;top:0;z-index:1020;background-color:#fffc;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);height:3.5rem;padding-left:16rem}.dark ._header_jrobc_1{background-color:#2020201a}@supports not (backdrop-filter: blur(12px)){._header_jrobc_1{background-color:var(--xw-background)}}@media(max-width:767px){._header_jrobc_1{padding:0}}._container_jrobc_24{width:100%;max-width:1400px;margin:0 auto;padding:0 1.5rem}@media(max-width:767px){._container_jrobc_24{padding:0 1rem}}._content_jrobc_36{display:flex;align-items:center;justify-content:space-between;height:3.5rem}._leftSection_jrobc_43{display:flex;align-items:center;gap:1rem}._mobileMenuButton_jrobc_49{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._mobileMenuButton_jrobc_49:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._mobileMenuButton_jrobc_49:disabled{pointer-events:none;opacity:.5}._mobileMenuButton_jrobc_49{padding:.5rem;background-color:transparent;color:var(--xw-muted-foreground);border-radius:.5rem;display:none}._mobileMenuButton_jrobc_49:hover{background-color:var(--xw-muted);color:var(--xw-foreground)}@media(max-width:767px){._mobileMenuButton_jrobc_49{display:flex}}._burgerIcon_jrobc_87{width:1.25rem;height:1.25rem}._logo_jrobc_92,._nav_jrobc_98{display:flex;align-items:center;gap:.5rem}@media(max-width:767px){._nav_jrobc_98{gap:.25rem}}._navLink_jrobc_109{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;font-weight:500;color:var(--xw-muted-foreground);text-decoration:none;transition:all .15s cubic-bezier(.4,0,.2,1)}._navLink_jrobc_109:hover{color:var(--xw-foreground)}._navLink_jrobc_109:focus{outline:none}._githubIcon_jrobc_128{width:1rem;height:1rem;flex-shrink:0;transition:transform .15s cubic-bezier(.4,0,.2,1)}._externalIcon_jrobc_135{width:1rem;height:1rem;flex-shrink:0}._supportDropdown_jrobc_141,._themeDropdown_jrobc_145{position:relative}._themeButton_jrobc_149{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem;border-radius:.5rem;font-size:.875rem;font-weight:500;color:var(--xw-muted-foreground);background:none;border:none;cursor:pointer;transition:all .15s cubic-bezier(.4,0,.2,1)}._themeButton_jrobc_149:hover{color:var(--xw-foreground);background-color:var(--xw-muted)}._themeButton_jrobc_149:focus{outline:none}._themeIcon_jrobc_171{width:1.125rem;height:1.125rem;flex-shrink:0}._supportButton_jrobc_177{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;font-weight:500;color:var(--xw-muted-foreground);background:none;border:none;cursor:pointer;transition:all .15s cubic-bezier(.4,0,.2,1)}._supportButton_jrobc_177:hover{color:var(--xw-foreground)}._supportButton_jrobc_177:focus{outline:none}._caretIcon_jrobc_198{width:.875rem;height:.875rem;flex-shrink:0;transition:transform .15s cubic-bezier(.4,0,.2,1)}button[aria-expanded=true] ._caretIcon_jrobc_198{transform:rotate(180deg)}._dropdownMenu_jrobc_208{position:absolute;top:calc(100% + .25rem);right:0;min-width:10rem;background-color:var(--xw-popover);border:1px solid var(--xw-border);border-radius:.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;z-index:1000;overflow:hidden}._dropdownItem_jrobc_221{display:flex;align-items:center;gap:.5rem;width:100%;padding:.5rem 1rem;font-size:.875rem;color:var(--xw-popover-foreground);text-decoration:none;background:none;border:none;cursor:pointer;text-align:left;transition:background-color .15s cubic-bezier(.4,0,.2,1)}._dropdownItem_jrobc_221:hover{background-color:var(--xw-muted)}._dropdownItem_jrobc_221:focus{outline:none;background-color:var(--xw-muted)}._dropdownIcon_jrobc_244{width:1rem;height:1rem;flex-shrink:0}@media(max-width:767px){._logoText_jrobc_251{font-size:1rem}._navLink_jrobc_109{padding:.25rem .5rem;font-size:.8rem;gap:.25rem}._githubIcon_jrobc_128{width:.875rem;height:.875rem}}._backdrop_1a7pu_1{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;z-index:1040;opacity:0;visibility:hidden;transition:all .15s cubic-bezier(.4,0,.2,1)}._backdrop_1a7pu_1._open_1a7pu_13{opacity:1;visibility:visible}._mobileMenu_1a7pu_18{position:fixed;top:0;left:0;width:320px;height:100vh;background-color:var(--xw-background);border-right:1px solid var(--xw-border);z-index:1050;transform:translate(-100%);transition:transform .15s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;overflow:hidden}._mobileMenu_1a7pu_18._open_1a7pu_13{transform:translate(0)}._header_1a7pu_37{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-bottom:1px solid var(--xw-border);flex-shrink:0}._brand_1a7pu_46{flex:1;display:flex;align-items:center;gap:.5rem}._cloudIcon_1a7pu_53{width:1.5rem;height:1.5rem;flex-shrink:0}._cloudIcon_1a7pu_53 .accent{fill:#d33079}._title_1a7pu_62{font-size:1.125rem;font-weight:600;color:var(--xw-foreground);margin:0}._closeButton_1a7pu_69{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._closeButton_1a7pu_69:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._closeButton_1a7pu_69:disabled{pointer-events:none;opacity:.5}._closeButton_1a7pu_69{padding:.5rem;background-color:transparent;color:var(--xw-muted-foreground);border-radius:.5rem}._closeButton_1a7pu_69:hover{background-color:var(--xw-muted);color:var(--xw-foreground)}._closeIcon_1a7pu_101{width:1.25rem;height:1.25rem}._languageSection_1a7pu_106{padding:1.5rem;border-bottom:1px solid var(--xw-border);flex-shrink:0}._languageSelect_1a7pu_112{position:relative;width:100%}._languageButton_1a7pu_117{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._languageButton_1a7pu_117:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._languageButton_1a7pu_117:disabled{pointer-events:none;opacity:.5}._languageButton_1a7pu_117{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem 1rem;background-color:var(--xw-background);border:1px solid var(--xw-border);color:var(--xw-foreground);gap:.5rem}._languageButton_1a7pu_117:hover,._languageButton_1a7pu_117[aria-expanded=true]{background-color:var(--xw-muted)}._icon_1a7pu_156{width:1rem;height:1rem;flex-shrink:0}._chevron_1a7pu_162{width:1rem;height:1rem;transition:transform .15s cubic-bezier(.4,0,.2,1);margin-left:auto}._languageButton_1a7pu_117[aria-expanded=true] ._chevron_1a7pu_162{transform:rotate(180deg)}._languageDropdown_1a7pu_172{position:absolute;top:100%;left:0;right:0;background-color:var(--xw-popover);border:1px solid var(--xw-border);border-radius:.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;z-index:1000;margin-top:.25rem}._languageOption_1a7pu_185{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._languageOption_1a7pu_185:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._languageOption_1a7pu_185:disabled{pointer-events:none;opacity:.5}._languageOption_1a7pu_185{width:100%;padding:.5rem 1rem;background-color:transparent;color:var(--xw-foreground);text-align:left;justify-content:flex-start;border-radius:0}._languageOption_1a7pu_185:first-child{border-top-left-radius:.5rem;border-top-right-radius:.5rem}._languageOption_1a7pu_185:last-child{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}._languageOption_1a7pu_185:hover{background-color:var(--xw-muted)}._languageOption_1a7pu_185._selected_1a7pu_226{background-color:var(--xw-accent);color:var(--xw-accent-foreground)}._scrollArea_1a7pu_231{flex:1;overflow-y:auto;padding:1.5rem 0}._navigation_1a7pu_237{padding:0 1.5rem}._section_1a7pu_241{margin-bottom:1rem}._sectionButton_1a7pu_245{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._sectionButton_1a7pu_245:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._sectionButton_1a7pu_245:disabled{pointer-events:none;opacity:.5}._sectionButton_1a7pu_245{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.5rem 1rem;background-color:transparent;color:var(--xw-foreground);font-weight:600;gap:.5rem;border-radius:.5rem}._sectionButton_1a7pu_245:hover{background-color:var(--xw-muted)}._sectionButton_1a7pu_245 ._icon_1a7pu_156{transition:transform .15s cubic-bezier(.4,0,.2,1);margin-left:auto}._sectionButton_1a7pu_245._expanded_1a7pu_285 ._icon_1a7pu_156{transform:rotate(90deg)}._sectionItems_1a7pu_289{margin-top:.5rem;margin-left:1rem;display:flex;flex-direction:column;gap:.25rem}._navItem_1a7pu_297{display:block;padding:.5rem 1rem;border-radius:.5rem;color:var(--xw-muted-foreground);text-decoration:none;transition:all .15s cubic-bezier(.4,0,.2,1);font-size:.875rem}._navItem_1a7pu_297:hover{background-color:var(--xw-muted);color:var(--xw-foreground)}._navItem_1a7pu_297._active_1a7pu_310{background-color:var(--xw-accent);color:var(--xw-accent-foreground);font-weight:500}._navItemContent_1a7pu_316{display:flex;align-items:center;gap:.5rem}._navItemTitle_1a7pu_322{flex:1}@media(min-width:1024px){._mobileMenu_1a7pu_18,._backdrop_1a7pu_1{display:none}}._sidebar_1qgjy_1{position:fixed;top:0;left:0;width:16rem;height:100vh;background-color:var(--xw-sidebar);overflow-y:auto;z-index:1020}@media(max-width:767px){._sidebar_1qgjy_1{display:none}}._header_1qgjy_17{position:sticky;top:0;z-index:1020;padding:1rem;background-color:var(--xw-sidebar);display:flex;flex-direction:column;gap:.5rem;padding-bottom:0}._brand_1qgjy_29{display:flex;align-items:center;gap:.5rem}._cloudIcon_1qgjy_35{width:1.5rem;height:1.5rem;flex-shrink:0}._cloudIcon_1qgjy_35 .accent{fill:#d33079}._title_1qgjy_44{font-size:1rem;font-weight:600;line-height:1.5;margin:0;letter-spacing:-.02em;color:var(--xw-foreground)}._languageSelect_1qgjy_55{position:relative;margin-top:.25rem;width:100%}._languageButton_1qgjy_61{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._languageButton_1qgjy_61:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._languageButton_1qgjy_61:disabled{pointer-events:none;opacity:.5}._languageButton_1qgjy_61{display:flex;align-items:center;justify-content:space-between;padding:.25rem .5rem;width:100%;gap:.25rem;font-size:.8rem;background:transparent;border:1px solid var(--xw-border);border-radius:.25rem;color:var(--xw-muted-foreground)}._languageButton_1qgjy_61:hover{background-color:var(--xw-muted);color:var(--xw-foreground)}._languageButton_1qgjy_61 ._icon_1qgjy_99{width:.875rem;height:.875rem;flex-shrink:0}._languageButton_1qgjy_61 ._chevron_1qgjy_104{width:.875rem;height:.875rem;flex-shrink:0;transition:transform .15s cubic-bezier(.4,0,.2,1)}._languageButton_1qgjy_61[aria-expanded=true] ._chevron_1qgjy_104{transform:rotate(180deg)}._languageDropdown_1qgjy_114{position:absolute;top:100%;left:0;right:0;margin-top:.25rem;background-color:var(--xw-popover);border:1px solid var(--xw-border);border-radius:.5rem;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;z-index:1000;overflow:hidden}._languageOption_1qgjy_128{display:block;width:100%;padding:.25rem .5rem;text-align:left;background:none;border:none;color:var(--xw-popover-foreground);font-size:.85rem;cursor:pointer;transition:background-color .15s cubic-bezier(.4,0,.2,1)}._languageOption_1qgjy_128:hover{background-color:var(--xw-muted)}._languageOption_1qgjy_128:focus{outline:none;background-color:var(--xw-muted)}._languageOption_1qgjy_128._selected_1qgjy_147{background-color:var(--xw-muted);color:var(--xw-foreground)}._scrollArea_1qgjy_152{height:calc(100vh - 120px);padding:1rem .5rem 1rem 1rem;overflow-y:auto}._navigation_1qgjy_158{display:flex;flex-direction:column;gap:.125rem}._section_1qgjy_164{display:flex;flex-direction:column;gap:0}._sectionButton_1qgjy_170{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:.5rem;font-size:.875rem;font-weight:500;transition:.15s cubic-bezier(.4,0,.2,1);cursor:pointer;border:none;outline:none}._sectionButton_1qgjy_170:focus-visible{outline:2px solid var(--xw-ring);outline-offset:2px}._sectionButton_1qgjy_170:disabled{pointer-events:none;opacity:.5}._sectionButton_1qgjy_170{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.25rem .5rem;font-weight:500;font-size:.85rem;color:var(--xw-muted-foreground);background:transparent;text-align:left;letter-spacing:-.01em;border:none}._sectionButton_1qgjy_170:hover{color:var(--xw-foreground)}._sectionButton_1qgjy_170 ._icon_1qgjy_99{width:.875rem;height:.875rem;transition:transform .15s cubic-bezier(.4,0,.2,1)}._sectionButton_1qgjy_170._expanded_1qgjy_213 ._icon_1qgjy_99{transform:rotate(90deg)}._sectionItems_1qgjy_217{margin-top:.25rem;padding-left:1rem;display:flex;flex-direction:column;gap:.125rem}._navItem_1qgjy_225{display:block;width:100%;padding:.25rem .5rem;border-radius:.25rem;font-size:.85rem;color:var(--xw-muted-foreground);text-decoration:none;transition:color .15s cubic-bezier(.4,0,.2,1)}._navItem_1qgjy_225:hover{color:var(--xw-foreground)}._navItem_1qgjy_225._active_1qgjy_238{color:var(--xw-foreground);font-weight:500}._navItemContent_1qgjy_243{display:flex;align-items:center;justify-content:space-between;width:100%}._sidebar_1qgjy_1::-webkit-scrollbar{width:6px}._sidebar_1qgjy_1::-webkit-scrollbar-track{background:transparent}._sidebar_1qgjy_1::-webkit-scrollbar-thumb{background:var(--xw-muted-foreground);border-radius:9999px;opacity:.3}._sidebar_1qgjy_1::-webkit-scrollbar-thumb:hover{opacity:.6}._skeletonSection_1qgjy_267{display:flex;flex-direction:column;gap:0;margin-bottom:.5rem}._skeletonSectionTitle_1qgjy_274{height:1rem;width:60%;position:relative;overflow:hidden;background-color:#80808026;border-radius:.25rem;margin-bottom:.25rem}._skeletonSectionTitle_1qgjy_274:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.15) 50%,transparent 100%);animation:_skeleton-loading_1qgjy_1 1.5s ease-in-out infinite}._skeletonSectionItems_1qgjy_294{padding-left:1rem;display:flex;flex-direction:column;gap:.25rem;margin-top:.25rem}._skeletonItem_1qgjy_302{height:1rem;width:85%;position:relative;overflow:hidden;background-color:#80808026;border-radius:.25rem;margin-bottom:.125rem}._skeletonItem_1qgjy_302:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.15) 50%,transparent 100%);animation:_skeleton-loading_1qgjy_1 1.5s ease-in-out infinite}._skeletonItem_1qgjy_302:nth-child(2){width:75%}._skeletonItem_1qgjy_302:nth-child(2):before{animation-delay:.1s}@keyframes _skeleton-loading_1qgjy_1{0%{transform:translate(-100%)}to{transform:translate(200%)}}._app_b0d4r_1{min-height:100vh;background-color:var(--xw-background);color:var(--xw-foreground);display:flex;flex-direction:column}._layout_b0d4r_9{display:flex;flex:1;min-height:calc(100vh - 3.5rem)}._main_b0d4r_15{flex:1;display:flex;flex-direction:column;margin-left:16rem}._main_b0d4r_15._fullWidth_b0d4r_21{margin-left:0}@media(max-width:767px){._main_b0d4r_15{margin-left:0}}._contentWrapper_b0d4r_30{display:flex;flex:1;position:relative;width:100%;max-width:80rem;margin:0 auto;padding:0 2rem 2rem}._main_b0d4r_15._fullWidth_b0d4r_21 ._contentWrapper_b0d4r_30{width:auto}@media(max-width:1024px){._contentWrapper_b0d4r_30{padding:1.5rem}}@media(max-width:767px){._contentWrapper_b0d4r_30{padding:1rem}}._homePage_1otqy_1{flex:1;max-width:48rem;margin:0;padding:0 0 2rem}@media(max-width:767px){._homePage_1otqy_1{padding:1rem;max-width:none}}@media(max-width:1024px){._homePage_1otqy_1{max-width:none;padding:2rem}}._header_1otqy_20{margin-bottom:1.5rem}._title_1otqy_24{font-size:1.5rem;font-weight:700;color:var(--xw-foreground);margin-bottom:0!important}._articlesList_1otqy_31{display:flex;flex-direction:column;gap:1rem}._articleCard_1otqy_37{padding:1rem;border:1px solid var(--xw-border);border-radius:.5rem;background:transparent;cursor:pointer;text-align:left;transition:all .2s ease-in-out}._articleCard_1otqy_37:hover{border-color:var(--xw-primary);background-color:var(--xw-card);transform:translateY(-2px)}._articleCard_1otqy_37:focus-visible{outline:2px solid var(--xw-primary);outline-offset:2px}._articleTitle_1otqy_56{font-size:1.25rem;font-weight:600;margin:0 0 .5rem;color:var(--xw-foreground)}._articleDescription_1otqy_63{font-size:.9rem;color:var(--xw-muted-foreground);margin:0 0 .5rem;line-height:1.5}._loading_1otqy_70,._empty_1otqy_71{padding:2rem;text-align:center;color:var(--xw-muted-foreground)}@keyframes _shimmer_1otqy_1{0%{background-position:-1000px 0}to{background-position:1000px 0}}._skeletonCard_1otqy_85{padding:1rem;border:1px solid var(--xw-border);border-radius:.5rem;background:transparent;display:flex;flex-direction:column;gap:.5rem}._skeletonTitle_1otqy_95{width:70%;height:1.5rem;background:linear-gradient(90deg,var(--xw-muted) 0%,color-mix(in oklch,var(--xw-muted) 50%,white) 50%,var(--xw-muted) 100%);background-size:1000px 100%;animation:_shimmer_1otqy_1 2s infinite linear;border-radius:.5rem}._skeletonText_1otqy_104{width:100%;height:1rem;background:linear-gradient(90deg,var(--xw-muted) 0%,color-mix(in oklch,var(--xw-muted) 50%,white) 50%,var(--xw-muted) 100%);background-size:1000px 100%;animation:_shimmer_1otqy_1 2s infinite linear;border-radius:.25rem}._skeletonMetadata_1otqy_113{width:40%;height:.875rem;background:linear-gradient(90deg,var(--xw-muted) 0%,color-mix(in oklch,var(--xw-muted) 50%,white) 50%,var(--xw-muted) 100%);background-size:1000px 100%;animation:_shimmer_1otqy_1 2s infinite linear;border-radius:.25rem;margin-top:.25rem}