@elmethis/qwik 0.0.12 → 0.0.14

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.
@@ -1,9 +1,19 @@
1
1
  import { jsx, jsxs, Fragment } from "@builder.io/qwik/jsx-runtime";
2
- import { component$, useStylesScoped$, Slot, useStyles$, useSignal, useTask$, $, useComputed$, useVisibleTask$, useContextProvider, createContextId, useContext } from "@builder.io/qwik";
2
+ import { component$, Slot, useSignal, useTask$, $, useComputed$, useVisibleTask$, useContextProvider, createContextId, useContext } from "@builder.io/qwik";
3
3
  import { mdiCodeTags, mdiClipboardCheckMultipleOutline, mdiClipboardMultipleOutline, mdiChevronRight, mdiPlus, mdiMessageImageOutline, mdiFile, mdiDownload, mdiLinkVariant, mdiHome, mdiApplicationOutline, mdiFolderOpen, mdiFormatQuoteOpen, mdiFormatQuoteClose, mdiAlertOctagram, mdiAlert, mdiShieldAlert, mdiLightbulbOn, mdiInformation } from "@mdi/js";
4
4
  import { renderToString } from "katex";
5
5
  import { kebabCase } from "lodash-es";
6
- const styles$p = '.code-block {\n display: grid;\n grid-template-rows: 2.75rem 1px 1fr;\n grid-template-columns: 2rem 1fr 2.5rem;\n grid-template-areas: "language-icon caption copy-icon" "divider divider divider" "code code code";\n align-items: center;\n justify-content: center;\n gap: 0;\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n padding: 0.25rem;\n border-radius: 0.25rem;\n background-color: rgba(255, 255, 255, 0.4);\n box-shadow: 0 0 0.125rem rgba(62, 67, 75, 0.3);\n}\n[data-theme=dark] .code-block {\n background-color: rgba(44, 48, 55, 0.9);\n box-shadow: 0 0 0.125rem rgba(0, 0, 0, 0.4);\n}\n\n.language-icon {\n grid-area: language-icon;\n padding-inline-start: 0.75rem;\n}\n\n.caption {\n grid-area: caption;\n padding: 1rem;\n font-family: monospace;\n font-size: 1rem;\n}\n\n.copy-icon {\n grid-area: copy-icon;\n padding: 0.25rem;\n width: 1.25rem;\n height: 1.25rem;\n border-radius: 0.125rem;\n transition: background-color 100ms;\n cursor: pointer;\n}\n.copy-icon:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\n[data-theme=dark] .copy-icon:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n\n.divider {\n grid-area: divider;\n width: calc(100% - 1rem);\n border: none;\n border-bottom: solid 1px rgba(128, 128, 128, 0.5);\n}\n\n.code {\n grid-area: code;\n box-sizing: border-box;\n padding: 0 1rem;\n overflow-x: auto;\n scrollbar-width: thin;\n}';
6
+ const caption$1 = "_caption_1j0ec_27";
7
+ const divider = "_divider_1j0ec_50";
8
+ const code$2 = "_code_1j0ec_1";
9
+ const styles$r = {
10
+ "code-block": "_code-block_1j0ec_1",
11
+ "language-icon": "_language-icon_1j0ec_22",
12
+ caption: caption$1,
13
+ "copy-icon": "_copy-icon_1j0ec_34",
14
+ divider,
15
+ code: code$2
16
+ };
7
17
  const Rust = component$(({ size = 24, ...props }) => {
8
18
  return /* @__PURE__ */ jsx("svg", {
9
19
  xmlns: "http://www.w3.org/2000/svg",
@@ -55,9 +65,11 @@ const Typescript = component$(({ size = 24, ...props }) => {
55
65
  ]
56
66
  });
57
67
  });
58
- const styles$o = ".path {\n fill: #293138;\n}\n[data-theme=dark] .path {\n fill: #d2dbe3;\n}";
68
+ const path = "_path_1ccs2_1";
69
+ const styles$q = {
70
+ path
71
+ };
59
72
  const Bash = component$(({ size = 24, ...props }) => {
60
- useStylesScoped$(styles$o);
61
73
  return /* @__PURE__ */ jsxs("svg", {
62
74
  xmlns: "http://www.w3.org/2000/svg",
63
75
  viewBox: "0 0 128 128",
@@ -70,7 +82,7 @@ const Bash = component$(({ size = 24, ...props }) => {
70
82
  d: "M4.24 4.24h119.53v119.53H4.24z"
71
83
  }),
72
84
  /* @__PURE__ */ jsx("path", {
73
- class: "path",
85
+ class: styles$q.path,
74
86
  d: "M109.01 28.64L71.28 6.24c-2.25-1.33-4.77-2-7.28-2s-5.03.67-7.28 2.01l-37.74 22.4c-4.5 2.67-7.28 7.61-7.28 12.96v44.8c0 5.35 2.77 10.29 7.28 12.96l37.73 22.4c2.25 1.34 4.76 2 7.28 2c2.51 0 5.03-.67 7.28-2l37.74-22.4c4.5-2.67 7.28-7.62 7.28-12.96V41.6c0-5.34-2.77-10.29-7.28-12.96M79.79 98.59l.06 3.22c0 .39-.25.83-.55.99l-1.91 1.1c-.3.15-.56-.03-.56-.42l-.03-3.17c-1.63.68-3.29.84-4.34.42c-.2-.08-.29-.37-.21-.71l.69-2.91c.06-.23.18-.46.34-.6c.06-.06.12-.1.18-.13c.11-.06.22-.07.31-.03c1.14.38 2.59.2 3.99-.5c1.78-.9 2.97-2.72 2.95-4.52c-.02-1.64-.9-2.31-3.05-2.33c-2.74.01-5.3-.53-5.34-4.57c-.03-3.32 1.69-6.78 4.43-8.96l-.03-3.25c0-.4.24-.84.55-1l1.85-1.18c.3-.15.56.04.56.43l.03 3.25c1.36-.54 2.54-.69 3.61-.44c.23.06.34.38.24.75l-.72 2.88c-.06.22-.18.44-.33.58a.8.8 0 0 1-.19.14c-.1.05-.19.06-.28.05c-.49-.11-1.65-.36-3.48.56c-1.92.97-2.59 2.64-2.58 3.88c.02 1.48.77 1.93 3.39 1.97c3.49.06 4.99 1.58 5.03 5.09c.05 3.44-1.79 7.15-4.61 9.41m26.34-60.5l-35.7 22.05c-4.45 2.6-7.73 5.52-7.74 10.89v43.99c0 3.21 1.3 5.29 3.29 5.9c-.65.11-1.32.19-1.98.19c-2.09 0-4.15-.57-5.96-1.64l-37.73-22.4c-3.69-2.19-5.98-6.28-5.98-10.67V41.6c0-4.39 2.29-8.48 5.98-10.67l37.74-22.4c1.81-1.07 3.87-1.64 5.96-1.64s4.15.57 5.96 1.64l37.74 22.4c3.11 1.85 5.21 5.04 5.8 8.63c-1.27-2.67-4.09-3.39-7.38-1.47"
75
87
  }),
76
88
  /* @__PURE__ */ jsx("path", {
@@ -510,11 +522,13 @@ const C = component$(({ size = 24, ...props }) => {
510
522
  ]
511
523
  });
512
524
  });
513
- const styles$n = ".icon {\n fill: var(--color, #555b67);\n transition: fill 200ms;\n}\n[data-theme=dark] .icon {\n fill: var(--dark-color, #b0b5be);\n}";
525
+ const icon$2 = "_icon_1gvln_1";
526
+ const styles$p = {
527
+ icon: icon$2
528
+ };
514
529
  const ElmMdiIcon = component$(({ d, size = "1em", color, lightColor, darkColor }) => {
515
- useStylesScoped$(styles$n);
516
530
  return /* @__PURE__ */ jsx("svg", {
517
- class: "icon",
531
+ class: styles$p.icon,
518
532
  style: {
519
533
  "--color": lightColor ?? color,
520
534
  "--dark-color": darkColor ?? color
@@ -619,30 +633,42 @@ const ElmLanguageIcon = component$(({ size = 24, language }) => {
619
633
  size
620
634
  });
621
635
  });
622
- const styles$m = '.text {\n padding: 0;\n margin: 0;\n white-space: pre-line;\n font-size: var(--font-size, 1em);\n line-height: var(--font-size, 1em);\n background-color: var(--background-color);\n transition: color 200ms;\n text-decoration-color: var(--color);\n}\n\n.code {\n margin-inline: 0.25rem;\n padding: 2px 0.5em;\n font-size: calc(1em - 2px);\n border-radius: 0.125rem;\n background-color: rgba(0, 0, 0, 0.075);\n font-family: "Source Code Pro" monospace;\n}\n\n.kbd {\n padding: 0.125rem 0.25rem;\n position: relative;\n border-radius: 0.125rem;\n background-color: #e6e6e6;\n}\n[data-theme=dark] .kbd {\n background-color: #404040;\n}\n.kbd::before {\n z-index: -1;\n position: absolute;\n content: "";\n bottom: -0.25em;\n left: 0;\n height: 100%;\n width: 100%;\n background-color: #ccc;\n border-radius: 0 0 0.125rem 0.125rem;\n box-shadow: 0 0 0.125em rgba(0, 0, 0, 0.5);\n}\n[data-theme=dark] .kbd::before {\n background-color: #595959;\n box-shadow: 0 0 0.125em rgba(255, 255, 255, 0.5);\n}\n\n.link {\n all: unset;\n box-sizing: border-box;\n padding: 0 0.25rem;\n font-size: var(--font-size);\n display: inline-flex;\n align-items: center;\n gap: 0.25rem;\n cursor: pointer;\n color: #6987b8;\n border-radius: 0.125rem;\n transition: background-color 200ms, color 200ms, opacity 200ms;\n}\n.link:hover {\n background-color: rgba(105, 135, 184, 0.2);\n}\n.link:active {\n opacity: 0.5;\n}\n.link:visited {\n color: #9771bd;\n border-bottom: dashed 1px #9771bd;\n}\n.link:visited:hover {\n background-color: rgba(151, 113, 189, 0.2);\n}\n\n.ogp {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n overflow: hidden;\n border-radius: 0.25rem;\n box-shadow: 0 0 0.125rem rgba(0, 0, 0, 0.3);\n background-color: rgba(255, 255, 255, 0.8);\n}\n[data-theme=dark] .ogp {\n background-color: rgba(255, 255, 255, 0.1);\n}\n\n.ogp-text {\n box-sizing: border-box;\n padding: 0.5rem;\n}\n\n.ogp-title {\n box-sizing: border-box;\n font-weight: bold;\n padding-block-end: 0.25rem;\n}\n\n.ogp-description {\n opacity: 0.7;\n padding: 0.25rem;\n}';
623
- const textStyles = ".text {\n color: var(--color, #606875);\n}\n.text::selection {\n color: #cccfd5;\n background-color: var(--color, #3e434b);\n}\n[data-theme=dark] .text {\n color: var(--color, #b0b5be);\n}\n[data-theme=dark] .text::selection {\n color: #3e434b;\n background-color: var(--color, #cccfd5);\n}";
624
- const styles$l = ".icon {\n margin: 0;\n padding: 0;\n display: inline-block;\n vertical-align: middle;\n height: 1em;\n}\n.icon::selection {\n filter: brightness(1000%);\n background-color: var(--color, rgba(0, 0, 0, 0.25));\n}\n[data-theme=dark] .icon {\n color: var(--color, rgba(255, 255, 255, 0.7));\n}\n[data-theme=dark] .icon::selection {\n color: rgba(0, 0, 0, 0.7);\n background-color: var(--color, rgba(255, 255, 255, 0.25));\n}";
636
+ const text$3 = "_text_1gswr_1";
637
+ const code$1 = "_code_1gswr_12";
638
+ const kbd = "_kbd_1gswr_21";
639
+ const link$1 = "_link_1gswr_47";
640
+ const styles$o = {
641
+ text: text$3,
642
+ code: code$1,
643
+ kbd,
644
+ link: link$1
645
+ };
646
+ const text$2 = "_text_zryur_1";
647
+ const textStyles = {
648
+ text: text$2
649
+ };
650
+ const icon$1 = "_icon_19g82_1";
651
+ const styles$n = {
652
+ icon: icon$1
653
+ };
625
654
  const ElmInlineIcon = component$(({ src, alt }) => {
626
- useStylesScoped$(styles$l);
627
655
  return /* @__PURE__ */ jsx("span", {
628
- class: "icon",
656
+ class: styles$n.icon,
629
657
  children: /* @__PURE__ */ jsx("img", {
630
658
  src,
631
659
  alt,
632
- class: "icon"
660
+ class: styles$n.icon
633
661
  })
634
662
  });
635
663
  });
636
664
  const ElmInlineText = component$((props) => {
637
- useStylesScoped$(styles$m);
638
- useStylesScoped$(textStyles);
639
- const { bold = false, italic = false, underline = false, strikethrough = false, code = false, size = "1em" } = props;
665
+ const { bold = false, italic = false, underline = false, strikethrough = false, code: code2 = false, size = "1em" } = props;
640
666
  let vnode = props.text ? /* @__PURE__ */ jsx("span", {
641
667
  children: props.text
642
668
  }) : /* @__PURE__ */ jsx(Slot, {});
643
669
  if (props.kbd) {
644
670
  vnode = /* @__PURE__ */ jsx("kbd", {
645
- class: "kbd",
671
+ class: styles$o.kbd,
646
672
  children: vnode
647
673
  });
648
674
  }
@@ -666,15 +692,15 @@ const ElmInlineText = component$((props) => {
666
692
  children: vnode
667
693
  });
668
694
  }
669
- if (code) {
695
+ if (code2) {
670
696
  vnode = /* @__PURE__ */ jsx("code", {
671
- class: "code",
697
+ class: styles$o.code,
672
698
  children: vnode
673
699
  });
674
700
  }
675
701
  if (props.ruby) {
676
702
  vnode = /* @__PURE__ */ jsxs("ruby", {
677
- class: "text",
703
+ class: styles$o.text,
678
704
  children: [
679
705
  /* @__PURE__ */ jsx("span", {
680
706
  children: vnode
@@ -687,8 +713,8 @@ const ElmInlineText = component$((props) => {
687
713
  }
688
714
  const wrappedVnode = /* @__PURE__ */ jsx("span", {
689
715
  class: [
690
- "text",
691
- "text"
716
+ styles$o.text,
717
+ textStyles.text
692
718
  ],
693
719
  style: {
694
720
  "--color": props.color,
@@ -699,7 +725,7 @@ const ElmInlineText = component$((props) => {
699
725
  });
700
726
  if (props.href) {
701
727
  return /* @__PURE__ */ jsxs("a", {
702
- class: "link",
728
+ class: styles$o.link,
703
729
  href: props.href,
704
730
  style: {
705
731
  "--font-size": size
@@ -716,17 +742,14 @@ const ElmInlineText = component$((props) => {
716
742
  }
717
743
  return wrappedVnode;
718
744
  });
719
- const styles$k = '.shiki,\n.shiki span {\n font-family: "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace !important;\n}\n.shiki *::selection,\n.shiki span *::selection {\n background-color: rgba(0, 0, 0, 0.1);\n}\n[data-theme=dark] .shiki *::selection,\n[data-theme=dark] .shiki span *::selection {\n background-color: rgba(255, 255, 255, 0.15);\n}\n[data-theme=dark] .shiki,\n[data-theme=dark] .shiki span {\n color: var(--shiki-dark) !important;\n background-color: var(--shiki-dark-bg) !important;\n}';
720
- const ElmShikiHighlighter = component$(({ code, language = "txt" }) => {
721
- useStyles$(styles$k);
722
- useStylesScoped$(`
723
- .code {
724
- font-size: 1rem;
725
- line-height: 1.5rem;
726
- }`);
745
+ const code = "_code_1sw1e_1";
746
+ const styles$m = {
747
+ code
748
+ };
749
+ const ElmShikiHighlighter = component$(({ code: code2, language = "txt" }) => {
727
750
  const rawHtml = useSignal("");
728
751
  useTask$(async ({ track }) => {
729
- const currentCode = track(() => code);
752
+ const currentCode = track(() => code2);
730
753
  const currentLang = track(() => language);
731
754
  const { getHighlighterSingleton } = await import("./shikiInstance-igs7t2fe.js");
732
755
  const highlighter = await getHighlighterSingleton();
@@ -747,12 +770,11 @@ const ElmShikiHighlighter = component$(({ code, language = "txt" }) => {
747
770
  }
748
771
  });
749
772
  return /* @__PURE__ */ jsx("pre", {
750
- class: "code",
773
+ class: styles$m.code,
751
774
  dangerouslySetInnerHTML: rawHtml.value
752
775
  });
753
776
  });
754
- const ElmCodeBlock = component$(({ code, language = "txt", caption, margin }) => {
755
- useStylesScoped$(styles$p);
777
+ const ElmCodeBlock = component$(({ code: code2, language = "txt", caption: caption2, margin }) => {
756
778
  const timerId = useSignal(null);
757
779
  const copyToClipboard = $(async () => {
758
780
  if (timerId.value !== null) {
@@ -760,35 +782,35 @@ const ElmCodeBlock = component$(({ code, language = "txt", caption, margin }) =>
760
782
  timerId.value = null;
761
783
  }
762
784
  try {
763
- await navigator.clipboard.writeText(code);
785
+ await navigator.clipboard.writeText(code2);
764
786
  timerId.value = window.setTimeout(() => timerId.value = null, 1500);
765
787
  } catch (err) {
766
788
  console.error("Failed to copy: ", err);
767
789
  }
768
790
  });
769
791
  return /* @__PURE__ */ jsxs("figure", {
770
- class: "code-block",
792
+ class: styles$r["code-block"],
771
793
  style: {
772
794
  margin
773
795
  },
774
796
  children: [
775
797
  /* @__PURE__ */ jsx("span", {
776
- class: "language-icon",
798
+ class: styles$r["language-icon"],
777
799
  children: /* @__PURE__ */ jsx(ElmLanguageIcon, {
778
800
  language
779
801
  })
780
802
  }),
781
803
  /* @__PURE__ */ jsx("span", {
782
- class: "caption",
804
+ class: styles$r.caption,
783
805
  children: /* @__PURE__ */ jsxs(ElmInlineText, {
784
806
  children: [
785
- caption || language,
807
+ caption2 || language,
786
808
  /* @__PURE__ */ jsx(Slot, {})
787
809
  ]
788
810
  })
789
811
  }),
790
812
  /* @__PURE__ */ jsx("div", {
791
- class: "copy-icon",
813
+ class: styles$r["copy-icon"],
792
814
  onClick$: copyToClipboard,
793
815
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
794
816
  size: "1.25rem",
@@ -797,12 +819,12 @@ const ElmCodeBlock = component$(({ code, language = "txt", caption, margin }) =>
797
819
  })
798
820
  }),
799
821
  /* @__PURE__ */ jsx("hr", {
800
- class: "divider"
822
+ class: styles$r.divider
801
823
  }),
802
824
  /* @__PURE__ */ jsx("div", {
803
- class: "code",
825
+ class: styles$r.code,
804
826
  children: /* @__PURE__ */ jsx(ElmShikiHighlighter, {
805
- code,
827
+ code: code2,
806
828
  language
807
829
  })
808
830
  })
@@ -810,32 +832,34 @@ const ElmCodeBlock = component$(({ code, language = "txt", caption, margin }) =>
810
832
  });
811
833
  });
812
834
  const ElmKatex = component$(({ expression, block = false }) => {
813
- useStylesScoped$(textStyles);
814
835
  const html = useComputed$(() => renderToString(expression, {
815
836
  displayMode: block,
816
837
  output: "mathml"
817
838
  }));
818
839
  return /* @__PURE__ */ jsx("div", {
819
- class: "text",
820
- dangerouslySetInnerHTML: html.value
840
+ class: textStyles.text,
841
+ dangerouslySetInnerHTML: html.value ?? ""
821
842
  });
822
843
  });
823
- const styles$j = ".parallax-watcher {\n display: none;\n z-index: -1;\n position: fixed;\n}\n\n.parallax {\n position: fixed;\n height: 2000vh;\n width: 100%;\n top: 0;\n left: 0;\n z-index: -1;\n background-repeat: repeat;\n background-size: auto;\n opacity: 0.2;\n}\n[data-theme=dark] .parallax {\n opacity: 0.1;\n}";
844
+ const parallax = "_parallax_1kb0k_1";
845
+ const styles$l = {
846
+ "parallax-watcher": "_parallax-watcher_1kb0k_1",
847
+ parallax
848
+ };
824
849
  const ElmParallax = component$(({ images }) => {
825
- useStylesScoped$(styles$j);
826
850
  const y = useSignal(0);
827
851
  return /* @__PURE__ */ jsxs(Fragment, {
828
852
  children: [
829
853
  /* @__PURE__ */ jsx("div", {
830
- class: "parallax-watcher",
854
+ class: styles$l["parallax-watcher"],
831
855
  "window:onScroll$": () => {
832
856
  y.value = window.scrollY;
833
857
  }
834
858
  }),
835
- images.map((image, index) => /* @__PURE__ */ jsx("div", {
836
- class: "parallax",
859
+ images.map((image2, index) => /* @__PURE__ */ jsx("div", {
860
+ class: styles$l.parallax,
837
861
  style: {
838
- backgroundImage: `url(${image})`,
862
+ backgroundImage: `url(${image2})`,
839
863
  transform: `scale(1.2) translateY(${y.value / (1e3 * (index + 1))}%)`,
840
864
  transformOrigin: "bottom"
841
865
  }
@@ -843,38 +867,61 @@ const ElmParallax = component$(({ images }) => {
843
867
  ]
844
868
  });
845
869
  });
846
- const styles$i = ".toggle {\n margin: 0;\n display: grid;\n transition: grid 200ms;\n overflow: hidden;\n}\n.toggle.toggle-closed {\n grid-template-rows: 3.5rem 0fr 0rem;\n}\n.toggle.toggle-open {\n grid-template-rows: 3.5rem 1fr 3rem;\n}\n\n.summary {\n box-sizing: border-box;\n padding-inline: 1rem;\n display: grid;\n grid-template-columns: min-content 1fr min-content;\n gap: 1rem;\n align-items: center;\n cursor: pointer;\n border: 1px solid rgba(0, 0, 0, 0.125);\n background-color: rgba(62, 67, 75, 0.05);\n}\n[data-theme=dark] .summary {\n border: 1px solid rgba(255, 255, 255, 0.125);\n background-color: rgba(190, 194, 202, 0.1);\n}\n.summary.summary-open {\n border-radius: 0.25rem 0.25rem 0 0;\n border-bottom-color: transparent;\n}\n.summary.summary-closed {\n border-radius: 0.25rem;\n}\n\n.chevron-icon {\n transition: transform 200ms;\n}\n.chevron-icon.chevron-icon-open {\n transform: rotate(90deg);\n}\n.chevron-icon.chevron-icon-closed {\n transform: rotate(0deg);\n}\n\n.plus-icon {\n height: 1rem;\n width: 1rem;\n transform-origin: center;\n transition: transform 200ms;\n}\n.plus-icon.plus-icon-open {\n transform: rotate(135deg);\n}\n.plus-icon.plus-icon-closed {\n transform: rotate(0deg);\n}\n\n.content {\n box-sizing: border-box;\n padding: 1rem;\n overflow: hidden;\n transition: opacity 200ms;\n border: 1px solid rgba(0, 0, 0, 0.125);\n border-radius: 0 0 0.25rem 0.25rem;\n background-color: rgba(62, 67, 75, 0.0125);\n}\n[data-theme=dark] .content {\n border-color: rgba(255, 255, 255, 0.125);\n background-color: rgba(190, 194, 202, 0.025);\n}\n.content.content-open {\n opacity: 1;\n}\n.content.content-closed {\n opacity: 0;\n}\n\n.footer {\n box-sizing: border-box;\n margin: 0.25rem 0rem;\n padding: 0.5rem;\n color: #c56565;\n font-family: monospace;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 0.5rem;\n user-select: none;\n cursor: pointer;\n border-radius: 0.25rem;\n transition: opacity 200ms, background-color 200ms;\n}\n.footer:hover {\n opacity: 0.5;\n background-color: rgba(96, 104, 117, 0.1);\n}\n.footer.footer-line {\n box-sizing: border-box;\n margin: 0 0.25rem;\n flex-grow: 1;\n border: none;\n border-bottom: solid 1px rgba(128, 128, 128, 0.3);\n}\n.footer.footer-cross-icon {\n transform: rotate(45deg);\n}\n.footer.footer-chevron-icon {\n transform: rotate(-90deg);\n}";
847
- const ElmToggle = component$(({ summary }) => {
848
- useStylesScoped$(styles$i);
870
+ const toggle = "_toggle_1nxqa_1";
871
+ const summary = "_summary_1nxqa_14";
872
+ const content$2 = "_content_1nxqa_60";
873
+ const footer = "_footer_1nxqa_80";
874
+ const styles$k = {
875
+ toggle,
876
+ "toggle-closed": "_toggle-closed_1nxqa_7",
877
+ "toggle-open": "_toggle-open_1nxqa_10",
878
+ summary,
879
+ "summary-open": "_summary-open_1nxqa_29",
880
+ "summary-closed": "_summary-closed_1nxqa_33",
881
+ "chevron-icon": "_chevron-icon_1nxqa_37",
882
+ "chevron-icon-open": "_chevron-icon-open_1nxqa_40",
883
+ "chevron-icon-closed": "_chevron-icon-closed_1nxqa_43",
884
+ "plus-icon": "_plus-icon_1nxqa_47",
885
+ "plus-icon-open": "_plus-icon-open_1nxqa_53",
886
+ "plus-icon-closed": "_plus-icon-closed_1nxqa_56",
887
+ content: content$2,
888
+ "content-open": "_content-open_1nxqa_73",
889
+ "content-closed": "_content-closed_1nxqa_76",
890
+ footer,
891
+ "footer-line": "_footer-line_1nxqa_99",
892
+ "footer-cross-icon": "_footer-cross-icon_1nxqa_106",
893
+ "footer-chevron-icon": "_footer-chevron-icon_1nxqa_109"
894
+ };
895
+ const ElmToggle = component$(({ summary: summary2 }) => {
849
896
  const isOpen = useSignal(false);
850
- const toggle = $(() => {
897
+ const toggle2 = $(() => {
851
898
  isOpen.value = !isOpen.value;
852
899
  });
853
900
  return /* @__PURE__ */ jsxs("div", {
854
901
  class: [
855
- "toggle",
902
+ styles$k.toggle,
856
903
  {
857
- "toggle-open": isOpen.value,
858
- "toggle-closed": !isOpen.value
904
+ [styles$k["toggle-open"]]: isOpen.value,
905
+ [styles$k["toggle-closed"]]: !isOpen.value
859
906
  }
860
907
  ],
861
908
  children: [
862
909
  /* @__PURE__ */ jsxs("div", {
863
910
  class: [
864
- "summary",
911
+ styles$k.summary,
865
912
  {
866
- "summary-open": isOpen.value,
867
- "summary-closed": !isOpen.value
913
+ [styles$k["summary-open"]]: isOpen.value,
914
+ [styles$k["summary-closed"]]: !isOpen.value
868
915
  }
869
916
  ],
870
- onClick$: toggle,
917
+ onClick$: toggle2,
871
918
  children: [
872
919
  /* @__PURE__ */ jsx("span", {
873
920
  class: [
874
- "chevron-icon",
921
+ styles$k["chevron-icon"],
875
922
  {
876
- "chevron-icon-open": isOpen.value,
877
- "chevron-icon-closed": !isOpen.value
923
+ [styles$k["chevron-icon-open"]]: isOpen.value,
924
+ [styles$k["chevron-icon-closed"]]: !isOpen.value
878
925
  }
879
926
  ],
880
927
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
@@ -882,17 +929,17 @@ const ElmToggle = component$(({ summary }) => {
882
929
  })
883
930
  }),
884
931
  /* @__PURE__ */ jsx("span", {
885
- class: "summary-text",
886
- children: summary ? summary : /* @__PURE__ */ jsx(Slot, {
932
+ class: styles$k["summary-text"],
933
+ children: summary2 ? summary2 : /* @__PURE__ */ jsx(Slot, {
887
934
  name: "summary"
888
935
  })
889
936
  }),
890
937
  /* @__PURE__ */ jsx("span", {
891
938
  class: [
892
- "plus-icon",
939
+ styles$k["plus-icon"],
893
940
  {
894
- "plus-icon-open": isOpen.value,
895
- "plus-icon-closed": !isOpen.value
941
+ [styles$k["plus-icon-open"]]: isOpen.value,
942
+ [styles$k["plus-icon-closed"]]: !isOpen.value
896
943
  }
897
944
  ],
898
945
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
@@ -905,30 +952,30 @@ const ElmToggle = component$(({ summary }) => {
905
952
  }),
906
953
  /* @__PURE__ */ jsx("div", {
907
954
  class: [
908
- "content",
955
+ styles$k.content,
909
956
  {
910
- "content-open": isOpen.value,
911
- "content-closed": !isOpen.value
957
+ [styles$k["content-open"]]: isOpen.value,
958
+ [styles$k["content-closed"]]: !isOpen.value
912
959
  }
913
960
  ],
914
961
  children: /* @__PURE__ */ jsx(Slot, {})
915
962
  }),
916
963
  /* @__PURE__ */ jsxs("div", {
917
- class: "footer",
918
- onClick$: toggle,
964
+ class: styles$k.footer,
965
+ onClick$: toggle2,
919
966
  children: [
920
967
  /* @__PURE__ */ jsx("span", {
921
- class: "footer-chevron-icon",
968
+ class: styles$k["footer-chevron-icon"],
922
969
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
923
970
  d: mdiChevronRight,
924
971
  color: "gray"
925
972
  })
926
973
  }),
927
974
  /* @__PURE__ */ jsx("hr", {
928
- class: "footer-line"
975
+ class: styles$k["footer-line"]
929
976
  }),
930
977
  /* @__PURE__ */ jsx("span", {
931
- class: "footer-cross-icon",
978
+ class: styles$k["footer-cross-icon"],
932
979
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
933
980
  d: mdiPlus,
934
981
  color: "#c56565"
@@ -938,17 +985,17 @@ const ElmToggle = component$(({ summary }) => {
938
985
  children: "CLOSE"
939
986
  }),
940
987
  /* @__PURE__ */ jsx("span", {
941
- class: "footer-cross-icon",
988
+ class: styles$k["footer-cross-icon"],
942
989
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
943
990
  d: mdiPlus,
944
991
  color: "#c56565"
945
992
  })
946
993
  }),
947
994
  /* @__PURE__ */ jsx("hr", {
948
- class: "footer-line"
995
+ class: styles$k["footer-line"]
949
996
  }),
950
997
  /* @__PURE__ */ jsx("span", {
951
- class: "footer-chevron-icon",
998
+ class: styles$k["footer-chevron-icon"],
952
999
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
953
1000
  d: mdiChevronRight,
954
1001
  color: "gray"
@@ -959,44 +1006,50 @@ const ElmToggle = component$(({ summary }) => {
959
1006
  ]
960
1007
  });
961
1008
  });
962
- const styles$h = ".block-fallback {\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: var(--height);\n}";
963
- const styles$g = "@keyframes bounce {\n 0% {\n transform: translateY(0%) scaleY(0.3) scaleX(1.5);\n }\n 10% {\n transform: scaleY(0.8) scaleX(1.2);\n }\n 100% {\n transform: translateY(-400%) scaleY(1.1);\n }\n}\n.wrapper {\n width: var(--size);\n height: var(--size);\n user-select: none;\n position: relative;\n display: flex;\n justify-content: space-around;\n align-items: flex-end;\n}\n\n.dot {\n width: 20%;\n height: 20%;\n border-radius: 50%;\n animation-name: bounce;\n animation-duration: 0.4s;\n animation-iteration-count: infinite;\n animation-direction: alternate;\n animation-timing-function: ease-out;\n transition: background-color 400ms;\n background-color: var(--color, #606875);\n}\n[data-theme=dark] .dot {\n background-color: #b0b5be;\n}\n.dot:nth-last-of-type(1) {\n animation-delay: -100ms;\n}\n.dot:nth-last-of-type(2) {\n animation-delay: 0ms;\n}\n.dot:nth-last-of-type(3) {\n animation-delay: 100ms;\n}";
1009
+ const styles$j = {
1010
+ "block-fallback": "_block-fallback_rt986_1"
1011
+ };
1012
+ const wrapper$1 = "_wrapper_1yktj_12";
1013
+ const dot = "_dot_1yktj_22";
1014
+ const styles$i = {
1015
+ wrapper: wrapper$1,
1016
+ dot
1017
+ };
964
1018
  const ElmDotLoadingIcon = component$(({ size = "4em", color = "#606875" }) => {
965
- useStylesScoped$(styles$g);
966
1019
  return /* @__PURE__ */ jsxs("div", {
967
- class: "wrapper",
1020
+ class: styles$i.wrapper,
968
1021
  style: {
969
1022
  "--size": size,
970
1023
  "--color": color
971
1024
  },
972
1025
  children: [
973
1026
  /* @__PURE__ */ jsx("div", {
974
- class: "dot",
1027
+ class: styles$i.dot,
975
1028
  "aria-hidden": "true"
976
1029
  }),
977
1030
  /* @__PURE__ */ jsx("div", {
978
- class: "dot",
1031
+ class: styles$i.dot,
979
1032
  "aria-hidden": "true"
980
1033
  }),
981
1034
  /* @__PURE__ */ jsx("div", {
982
- class: "dot",
1035
+ class: styles$i.dot,
983
1036
  "aria-hidden": "true"
984
1037
  })
985
1038
  ]
986
1039
  });
987
1040
  });
988
- const styles$f = "@keyframes elm-rectangle-wave {\n 0% {\n transform: scale(0);\n opacity: 0;\n }\n 30% {\n opacity: 0;\n }\n 40% {\n opacity: 1;\n }\n 100% {\n transform: scale(1);\n opacity: 0;\n }\n}\n.rectangle-wave {\n box-sizing: border-box;\n position: absolute;\n overflow: hidden;\n margin: 0;\n width: 100%;\n height: 100%;\n animation-name: elm-rectangle-wave;\n animation-duration: 1200ms;\n animation-iteration-count: infinite;\n animation-fill-mode: both;\n border-style: solid;\n border-width: 1px;\n border-color: rgba(0, 0, 0, 0.7);\n}\n[data-theme=dark] .rectangle-wave {\n border-color: rgba(255, 255, 255, 0.7);\n}";
1041
+ const styles$h = {
1042
+ "rectangle-wave": "_rectangle-wave_hej9g_17"
1043
+ };
989
1044
  const ElmRectangleWave = component$(() => {
990
- useStylesScoped$(styles$f);
991
1045
  return /* @__PURE__ */ jsx("div", {
992
1046
  "aria-hidden": "true",
993
- class: "rectangle-wave"
1047
+ class: styles$h["rectangle-wave"]
994
1048
  });
995
1049
  });
996
1050
  const ElmBlockFallback = component$(({ height = "16rem" }) => {
997
- useStylesScoped$(styles$h);
998
1051
  return /* @__PURE__ */ jsxs("div", {
999
- class: "block-fallback",
1052
+ class: styles$j["block-fallback"],
1000
1053
  style: {
1001
1054
  "--height": height
1002
1055
  },
@@ -1006,9 +1059,17 @@ const ElmBlockFallback = component$(({ height = "16rem" }) => {
1006
1059
  ]
1007
1060
  });
1008
1061
  });
1009
- const styles$e = ".block-image {\n margin: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n gap: 0.5rem;\n width: 100%;\n}\n\n.image-container {\n width: 100%;\n height: 100%;\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.image {\n max-width: 100%;\n max-height: 100%;\n border-radius: 0.25rem;\n box-shadow: 0 0 0.125rem rgba(0, 0, 0, 0.1);\n transition: opacity 400ms;\n opacity: var(--opacity, 1);\n user-select: none;\n cursor: var(--cursor);\n}\n\n.fallback {\n width: 100%;\n height: 100%;\n inset: 0 0 auto auto;\n position: absolute;\n transition: opacity 400ms;\n opacity: var(--opacity, 1);\n pointer-events: none;\n}\n\n.caption-box {\n box-sizing: border-box;\n padding: 0rem 1rem;\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 1rem;\n opacity: 0.75;\n opacity: var(--opacity, 1);\n transition: opacity 400ms;\n}\n\n.modal-container {\n width: 100vw;\n height: 100vh;\n display: flex;\n justify-content: center;\n align-items: center;\n position: fixed;\n inset: 0 0 auto auto;\n z-index: 100;\n background-color: rgba(35, 38, 42, 0.8);\n cursor: zoom-out;\n opacity: var(--opacity, 1);\n transition: opacity 200ms;\n}";
1010
- const ElmBlockImage = component$(({ src, alt, caption, width, height, enableModal = true }) => {
1011
- useStylesScoped$(styles$e);
1062
+ const image$1 = "_image_zq5gl_11";
1063
+ const fallback = "_fallback_zq5gl_31";
1064
+ const styles$g = {
1065
+ "block-image": "_block-image_zq5gl_1",
1066
+ "image-container": "_image-container_zq5gl_11",
1067
+ image: image$1,
1068
+ fallback,
1069
+ "caption-box": "_caption-box_zq5gl_41",
1070
+ "modal-container": "_modal-container_zq5gl_53"
1071
+ };
1072
+ const ElmBlockImage = component$(({ src, alt, caption: caption2, width, height, enableModal = true }) => {
1012
1073
  const isLoading = useSignal(true);
1013
1074
  const isShowModal = useSignal(false);
1014
1075
  const handleImageLoad = $(() => {
@@ -1020,11 +1081,9 @@ const ElmBlockImage = component$(({ src, alt, caption, width, height, enableModa
1020
1081
  }
1021
1082
  });
1022
1083
  const ImageComponent = /* @__PURE__ */ jsx("img", {
1023
- class: [
1024
- "image"
1025
- ],
1084
+ class: styles$g.image,
1026
1085
  src,
1027
- alt: alt ?? caption ?? "Image",
1086
+ alt: alt ?? caption2 ?? "Image",
1028
1087
  width,
1029
1088
  height,
1030
1089
  onLoad$: handleImageLoad,
@@ -1034,7 +1093,7 @@ const ElmBlockImage = component$(({ src, alt, caption, width, height, enableModa
1034
1093
  }
1035
1094
  });
1036
1095
  const Modal = /* @__PURE__ */ jsx("div", {
1037
- class: "modal-container",
1096
+ class: styles$g["modal-container"],
1038
1097
  style: {
1039
1098
  pointerEvents: isShowModal.value ? "auto" : "none",
1040
1099
  "--opacity": isShowModal.value ? 1 : 0
@@ -1043,10 +1102,10 @@ const ElmBlockImage = component$(({ src, alt, caption, width, height, enableModa
1043
1102
  children: ImageComponent
1044
1103
  });
1045
1104
  return /* @__PURE__ */ jsxs("figure", {
1046
- class: "block-image",
1105
+ class: styles$g["block-image"],
1047
1106
  children: [
1048
1107
  /* @__PURE__ */ jsxs("div", {
1049
- class: "image-container",
1108
+ class: styles$g["image-container"],
1050
1109
  style: {
1051
1110
  "--opacity": isLoading.value ? 1 : 0
1052
1111
  },
@@ -1054,13 +1113,13 @@ const ElmBlockImage = component$(({ src, alt, caption, width, height, enableModa
1054
1113
  children: [
1055
1114
  ImageComponent,
1056
1115
  /* @__PURE__ */ jsx("div", {
1057
- class: "fallback",
1116
+ class: styles$g.fallback,
1058
1117
  children: /* @__PURE__ */ jsx(ElmRectangleWave, {})
1059
1118
  })
1060
1119
  ]
1061
1120
  }),
1062
- caption && /* @__PURE__ */ jsxs("figcaption", {
1063
- class: "caption-box",
1121
+ caption2 && /* @__PURE__ */ jsxs("figcaption", {
1122
+ class: styles$g["caption-box"],
1064
1123
  style: {
1065
1124
  "--opacity": isLoading.value ? 0 : 1
1066
1125
  },
@@ -1077,7 +1136,7 @@ const ElmBlockImage = component$(({ src, alt, caption, width, height, enableModa
1077
1136
  }),
1078
1137
  /* @__PURE__ */ jsx(ElmInlineText, {
1079
1138
  size: "1rem",
1080
- children: caption
1139
+ children: caption2
1081
1140
  })
1082
1141
  ]
1083
1142
  }),
@@ -1085,32 +1144,36 @@ const ElmBlockImage = component$(({ src, alt, caption, width, height, enableModa
1085
1144
  ]
1086
1145
  });
1087
1146
  });
1088
- const styles$d = ".file {\n margin: 0;\n padding: 1rem;\n display: grid;\n grid-template-columns: 1.5rem 1fr 1fr 1.5rem;\n gap: 1rem;\n align-items: center;\n box-shadow: 0 0 0.125rem rgba(0, 0, 0, 0.2);\n border-radius: 0.25rem;\n background-color: rgba(255, 255, 255, 0.2);\n}\n[data-theme=dark] .file {\n background-color: rgba(0, 0, 0, 0.2);\n}\n\n.file-size {\n text-align: right;\n opacity: 0.5;\n}\n\n.download-icon {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 1.5rem;\n width: 1.5rem;\n padding: 0.125rem;\n border-radius: 0.125rem;\n cursor: pointer;\n transition: color 200ms, background-color 200ms;\n}\n.download-icon:hover {\n background-color: rgba(0, 0, 0, 0.1);\n}\n[data-theme=dark] .download-icon:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}";
1147
+ const file = "_file_14a0w_1";
1148
+ const styles$f = {
1149
+ file,
1150
+ "file-size": "_file-size_14a0w_16",
1151
+ "download-icon": "_download-icon_14a0w_21"
1152
+ };
1089
1153
  function getLastPathSegmentWithoutQueryOrHash(urlString) {
1090
1154
  const cleanedUrl = urlString.split(/[?#]/)[0];
1091
1155
  const pathSegments = cleanedUrl.split("/").filter(Boolean);
1092
1156
  return pathSegments.length > 0 ? pathSegments[pathSegments.length - 1] : null;
1093
1157
  }
1094
1158
  const ElmFile = component$(({ name, src, filesize }) => {
1095
- useStylesScoped$(styles$d);
1096
1159
  const downloadFile = $(async () => {
1097
- let link;
1160
+ let link2;
1098
1161
  try {
1099
1162
  const response = await fetch(src);
1100
1163
  if (!response.ok) throw new Error("Failed to download file");
1101
1164
  const blob = await response.blob();
1102
- link = document.createElement("a");
1103
- link.href = URL.createObjectURL(blob);
1104
- link.download = name ?? getLastPathSegmentWithoutQueryOrHash(src) ?? "file";
1105
- link.click();
1165
+ link2 = document.createElement("a");
1166
+ link2.href = URL.createObjectURL(blob);
1167
+ link2.download = name ?? getLastPathSegmentWithoutQueryOrHash(src) ?? "file";
1168
+ link2.click();
1106
1169
  } catch (error) {
1107
1170
  console.error("ERROR:", error);
1108
1171
  } finally {
1109
- if (link) URL.revokeObjectURL(link.href);
1172
+ if (link2) URL.revokeObjectURL(link2.href);
1110
1173
  }
1111
1174
  });
1112
1175
  return /* @__PURE__ */ jsxs("div", {
1113
- class: "file",
1176
+ class: styles$f.file,
1114
1177
  children: [
1115
1178
  /* @__PURE__ */ jsx("div", {
1116
1179
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
@@ -1124,13 +1187,13 @@ const ElmFile = component$(({ name, src, filesize }) => {
1124
1187
  })
1125
1188
  }),
1126
1189
  /* @__PURE__ */ jsx("div", {
1127
- class: "file-size",
1190
+ class: styles$f["file-size"],
1128
1191
  children: /* @__PURE__ */ jsx(ElmInlineText, {
1129
1192
  children: filesize
1130
1193
  })
1131
1194
  }),
1132
1195
  /* @__PURE__ */ jsx("div", {
1133
- class: "download-icon",
1196
+ class: styles$f["download-icon"],
1134
1197
  onClick$: downloadFile,
1135
1198
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
1136
1199
  d: mdiDownload,
@@ -1140,41 +1203,55 @@ const ElmFile = component$(({ name, src, filesize }) => {
1140
1203
  ]
1141
1204
  });
1142
1205
  });
1143
- const styles$c = ".bookmark {\n all: unset;\n display: block;\n container-type: inline-size;\n border-radius: 0.25rem;\n box-shadow: 0 0 0.125rem rgba(0, 0, 0, 0.1);\n overflow: hidden;\n transition: background-color 200ms, transform 200ms;\n}\n.bookmark:hover {\n background-color: rgba(105, 135, 184, 0.1);\n transform: translateX(-0.125rem) translateY(-0.125rem);\n}\n.bookmark:active {\n background-color: rgba(89, 181, 124, 0.1);\n transform: translateX(0) translateY(0);\n}\n\n.container {\n all: unset;\n cursor: pointer;\n width: 100%;\n display: flex;\n flex-direction: row;\n}\n@container (max-width: 700px) {\n .container {\n flex-direction: column;\n }\n}\n\n.image {\n overflow: hidden;\n height: 100%;\n opacity: 0.9;\n display: flex;\n justify-content: center;\n align-items: center;\n object-fit: cover;\n object-position: center;\n aspect-ratio: 2/1;\n width: min-content;\n max-width: 35%;\n}\n@container (max-width: 700px) {\n .image {\n min-width: unset;\n max-width: unset;\n width: 100%;\n }\n}\n\n.content {\n flex: 1;\n width: 75%;\n box-sizing: border-box;\n padding: 0.5rem;\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n justify-content: space-between;\n transition: background-color 200ms;\n background-color: rgba(255, 255, 255, 0.4);\n}\n@container (max-width: 700px) {\n .content {\n width: 100%;\n }\n}\n[data-theme=dark] .content {\n background-color: rgba(0, 0, 0, 0.2);\n}\n.content .title {\n box-sizing: border-box;\n}\n.content .description {\n box-sizing: border-box;\n opacity: 0.7;\n}\n.content .link {\n line-height: 0.75rem;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 0.25rem;\n opacity: 0.7;\n}";
1144
- const ElmBookmark = component$(({ url, image, title, description, favicon }) => {
1145
- useStylesScoped$(styles$c);
1206
+ const bookmark = "_bookmark_rgq1s_1";
1207
+ const container$1 = "_container_rgq1s_19";
1208
+ const image = "_image_rgq1s_32";
1209
+ const content$1 = "_content_rgq1s_53";
1210
+ const title = "_title_rgq1s_73";
1211
+ const description = "_description_rgq1s_76";
1212
+ const link = "_link_rgq1s_80";
1213
+ const styles$e = {
1214
+ bookmark,
1215
+ container: container$1,
1216
+ image,
1217
+ content: content$1,
1218
+ title,
1219
+ description,
1220
+ link
1221
+ };
1222
+ const ElmBookmark = component$(({ url, image: image2, title: title2, description: description2, favicon }) => {
1146
1223
  return /* @__PURE__ */ jsx("div", {
1147
- class: "bookmark",
1224
+ class: styles$e.bookmark,
1148
1225
  children: /* @__PURE__ */ jsxs("a", {
1149
- class: "container",
1226
+ class: styles$e.container,
1150
1227
  href: url,
1151
1228
  target: "_blank",
1152
1229
  rel: "noopener noreferrer",
1153
1230
  children: [
1154
1231
  /* @__PURE__ */ jsx("img", {
1155
- class: "image",
1156
- src: image,
1232
+ class: styles$e.image,
1233
+ src: image2,
1157
1234
  alt: "OGP Image"
1158
1235
  }),
1159
1236
  /* @__PURE__ */ jsxs("div", {
1160
- class: "content",
1237
+ class: styles$e.content,
1161
1238
  children: [
1162
1239
  /* @__PURE__ */ jsx("div", {
1163
- class: "title",
1240
+ class: styles$e.title,
1164
1241
  children: /* @__PURE__ */ jsx(ElmInlineText, {
1165
1242
  bold: true,
1166
- children: title
1243
+ children: title2
1167
1244
  })
1168
1245
  }),
1169
1246
  /* @__PURE__ */ jsx("div", {
1170
- class: "description",
1247
+ class: styles$e.description,
1171
1248
  children: /* @__PURE__ */ jsx(ElmInlineText, {
1172
1249
  size: "0.75rem",
1173
- children: description
1250
+ children: description2
1174
1251
  })
1175
1252
  }),
1176
1253
  /* @__PURE__ */ jsxs("div", {
1177
- class: "link",
1254
+ class: styles$e.link,
1178
1255
  children: [
1179
1256
  favicon ? /* @__PURE__ */ jsx(ElmInlineIcon, {
1180
1257
  src: favicon
@@ -1194,19 +1271,24 @@ const ElmBookmark = component$(({ url, image, title, description, favicon }) =>
1194
1271
  })
1195
1272
  });
1196
1273
  });
1197
- const styles$b = ".container {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n align-items: center;\n gap: 0;\n user-select: none;\n}\n\n.link-container {\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 0;\n box-sizing: border-box;\n padding: 0.25rem;\n border-radius: 0.25rem;\n cursor: pointer;\n transition: background-color 100ms, opacity 100ms, transform 100ms;\n}\n.link-container:hover {\n background-color: rgba(134, 142, 156, 0.2);\n transform: translateX(-1px) translateY(-1px);\n}\n.link-container:active {\n opacity: 0.5;\n transform: translateX(1px) translateY(1px);\n}\n\n.text {\n opacity: var(--opacity);\n transition: opacity 200ms;\n transition-delay: var(--delay);\n padding: 0 0.25rem;\n}";
1274
+ const container = "_container_xsa12_1";
1275
+ const text$1 = "_text_xsa12_30";
1276
+ const styles$d = {
1277
+ container,
1278
+ "link-container": "_link-container_xsa12_10",
1279
+ text: text$1
1280
+ };
1198
1281
  const ElmBreadcrumb = component$(({ links }) => {
1199
- useStylesScoped$(styles$b);
1200
1282
  return /* @__PURE__ */ jsx("nav", {
1201
- class: "container",
1202
- children: links.map((link, index) => /* @__PURE__ */ jsxs(Fragment, {
1283
+ class: styles$d.container,
1284
+ children: links.map((link2, index) => /* @__PURE__ */ jsxs(Fragment, {
1203
1285
  children: [
1204
1286
  /* @__PURE__ */ jsxs("span", {
1205
- class: "link-container",
1206
- onClick$: link.onClick$,
1287
+ class: styles$d["link-container"],
1288
+ onClick$: link2.onClick$,
1207
1289
  children: [
1208
1290
  /* @__PURE__ */ jsx("span", {
1209
- class: "icon",
1291
+ class: styles$d.icon,
1210
1292
  style: {
1211
1293
  "--delay": `${index * 100}ms`
1212
1294
  },
@@ -1216,18 +1298,18 @@ const ElmBreadcrumb = component$(({ links }) => {
1216
1298
  })
1217
1299
  }),
1218
1300
  /* @__PURE__ */ jsx("span", {
1219
- class: "text",
1301
+ class: styles$d.text,
1220
1302
  style: {
1221
1303
  "--delay": `${index * 100 + 50}ms`
1222
1304
  },
1223
1305
  children: /* @__PURE__ */ jsx(ElmInlineText, {
1224
- children: link.text
1306
+ children: link2.text
1225
1307
  })
1226
1308
  })
1227
1309
  ]
1228
1310
  }),
1229
1311
  links.length !== index + 1 && /* @__PURE__ */ jsx("span", {
1230
- class: "text",
1312
+ class: styles$d.text,
1231
1313
  style: {
1232
1314
  "--delay": `${index * 100 + 100}ms`
1233
1315
  },
@@ -1241,19 +1323,84 @@ const ElmBreadcrumb = component$(({ links }) => {
1241
1323
  }))
1242
1324
  });
1243
1325
  });
1244
- const styles$a = '.blockquote {\n box-sizing: border-box;\n width: 100%;\n margin: 0;\n background-color: rgba(134, 142, 156, 0.1);\n position: relative;\n}\n.blockquote::after {\n position: absolute;\n content: "";\n top: 0;\n left: 0;\n width: 4px;\n height: 100%;\n background-color: #868e9c;\n}\n\n.body {\n box-sizing: border-box;\n padding: 2rem 1.5rem;\n}\n\n.icon {\n position: absolute;\n content: "";\n inset: var(--inset);\n opacity: 0.5;\n}';
1326
+ const wrapper = "_wrapper_nud26_1";
1327
+ const partial = "_partial_nud26_52";
1328
+ const text = "_text_nud26_85";
1329
+ const styles$c = {
1330
+ wrapper,
1331
+ "wrapper--visible": "_wrapper--visible_nud26_20",
1332
+ partial,
1333
+ text
1334
+ };
1335
+ const ElmPageTop = component$(({ position = "right" }) => {
1336
+ const isVisible = useSignal(false);
1337
+ useVisibleTask$(({ cleanup }) => {
1338
+ const checkScroll = () => {
1339
+ isVisible.value = window.scrollY > 100;
1340
+ };
1341
+ window.addEventListener("scroll", checkScroll, {
1342
+ passive: true
1343
+ });
1344
+ checkScroll();
1345
+ cleanup(() => window.removeEventListener("scroll", checkScroll));
1346
+ });
1347
+ const toTop = $(() => {
1348
+ window.scrollTo({
1349
+ top: 0,
1350
+ behavior: "smooth"
1351
+ });
1352
+ });
1353
+ return /* @__PURE__ */ jsxs("nav", {
1354
+ class: [
1355
+ styles$c.wrapper,
1356
+ {
1357
+ [styles$c["wrapper--visible"]]: isVisible.value
1358
+ }
1359
+ ],
1360
+ style: {
1361
+ "--size": `${64}px`,
1362
+ left: position === "left" ? "0" : "auto",
1363
+ right: position === "right" ? "0" : "auto"
1364
+ },
1365
+ onClick$: toTop,
1366
+ children: [
1367
+ /* @__PURE__ */ jsx("div", {
1368
+ "aria-hidden": "true",
1369
+ class: styles$c.partial
1370
+ }),
1371
+ /* @__PURE__ */ jsx("div", {
1372
+ "aria-hidden": "true",
1373
+ class: styles$c.partial
1374
+ }),
1375
+ /* @__PURE__ */ jsx("div", {
1376
+ "aria-hidden": "true",
1377
+ class: styles$c.partial
1378
+ }),
1379
+ /* @__PURE__ */ jsx("span", {
1380
+ class: styles$c.text,
1381
+ children: "Back to Top"
1382
+ })
1383
+ ]
1384
+ });
1385
+ });
1386
+ const blockquote = "_blockquote_b5jd8_1";
1387
+ const body = "_body_b5jd8_18";
1388
+ const icon = "_icon_b5jd8_23";
1389
+ const styles$b = {
1390
+ blockquote,
1391
+ body,
1392
+ icon
1393
+ };
1245
1394
  const ElmBlockQuote = component$(({ cite }) => {
1246
- useStylesScoped$(styles$a);
1247
- useStylesScoped$(textStyles);
1248
1395
  return /* @__PURE__ */ jsxs("blockquote", {
1249
1396
  class: [
1250
- "blockquote",
1251
- "text"
1397
+ styles$b.blockquote,
1398
+ textStyles.text
1252
1399
  ],
1253
1400
  cite,
1254
1401
  children: [
1255
1402
  /* @__PURE__ */ jsx("div", {
1256
- class: "icon",
1403
+ class: styles$b.icon,
1257
1404
  style: {
1258
1405
  "--inset": "0.25rem auto auto 0.5rem"
1259
1406
  },
@@ -1262,11 +1409,11 @@ const ElmBlockQuote = component$(({ cite }) => {
1262
1409
  })
1263
1410
  }),
1264
1411
  /* @__PURE__ */ jsx("div", {
1265
- class: "body",
1412
+ class: styles$b.body,
1266
1413
  children: /* @__PURE__ */ jsx(Slot, {})
1267
1414
  }),
1268
1415
  /* @__PURE__ */ jsx("div", {
1269
- class: "icon",
1416
+ class: styles$b.icon,
1270
1417
  style: {
1271
1418
  "--inset": "auto 0.25rem 0.25rem auto"
1272
1419
  },
@@ -1277,7 +1424,14 @@ const ElmBlockQuote = component$(({ cite }) => {
1277
1424
  ]
1278
1425
  });
1279
1426
  });
1280
- const styles$9 = '.callout {\n position: relative;\n padding: 1rem;\n}\n.callout::after {\n position: absolute;\n content: "";\n inset: 0 auto auto 0;\n height: 100%;\n width: 0.25rem;\n background-color: var(--callout-color);\n}\n.callout::before {\n position: absolute;\n content: "";\n inset: 0 0 auto auto;\n height: 100%;\n width: 100%;\n background-color: var(--callout-color);\n opacity: 0.15;\n z-index: -1;\n pointer-events: none;\n}\n\n.header {\n display: flex;\n align-items: center;\n gap: 0.5rem;\n}\n\n.content {\n padding-block-start: 1rem;\n padding-block-end: 0.25rem;\n}';
1427
+ const callout = "_callout_1d8l2_1";
1428
+ const header = "_header_1d8l2_25";
1429
+ const content = "_content_1d8l2_31";
1430
+ const styles$a = {
1431
+ callout,
1432
+ header,
1433
+ content
1434
+ };
1281
1435
  const COLOR_MAP = Object.freeze({
1282
1436
  note: {
1283
1437
  code: "#6987b8",
@@ -1301,15 +1455,14 @@ const COLOR_MAP = Object.freeze({
1301
1455
  }
1302
1456
  });
1303
1457
  const ElmCallout = component$(({ type = "note" }) => {
1304
- useStylesScoped$(styles$9);
1305
1458
  return /* @__PURE__ */ jsxs("aside", {
1306
- class: "callout",
1459
+ class: styles$a.callout,
1307
1460
  style: {
1308
1461
  "--callout-color": COLOR_MAP[type].code
1309
1462
  },
1310
1463
  children: [
1311
1464
  /* @__PURE__ */ jsxs("div", {
1312
- class: "header",
1465
+ class: styles$a.header,
1313
1466
  children: [
1314
1467
  /* @__PURE__ */ jsx(ElmMdiIcon, {
1315
1468
  d: COLOR_MAP[type].icon,
@@ -1322,25 +1475,29 @@ const ElmCallout = component$(({ type = "note" }) => {
1322
1475
  ]
1323
1476
  }),
1324
1477
  /* @__PURE__ */ jsx("div", {
1325
- class: "content",
1478
+ class: styles$a.content,
1326
1479
  children: /* @__PURE__ */ jsx(Slot, {})
1327
1480
  })
1328
1481
  ]
1329
1482
  });
1330
1483
  });
1331
- const styles$8 = ".hr {\n margin: 0;\n width: 100%;\n border: none;\n border-bottom: dashed 1px #868e9c;\n}";
1484
+ const hr = "_hr_1g58p_1";
1485
+ const styles$9 = {
1486
+ hr
1487
+ };
1332
1488
  const ElmDivider = component$(({ margin }) => {
1333
- useStylesScoped$(styles$8);
1334
1489
  return /* @__PURE__ */ jsx("hr", {
1335
- class: "hr",
1490
+ class: styles$9.hr,
1336
1491
  style: {
1337
1492
  marginBlock: margin
1338
1493
  }
1339
1494
  });
1340
1495
  });
1341
- const styles$7 = ".fragment {\n font-size: 1rem;\n width: 1rem;\n height: 1rem;\n padding: 0.125rem;\n margin-inline-start: 0.5rem;\n border-radius: 0.125rem;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n color: #b69545;\n cursor: pointer;\n user-select: none;\n opacity: 1;\n transition: background-color 200ms, opacity 100ms, transform 100ms;\n}\n.fragment:hover {\n background-color: rgba(134, 142, 156, 0.2);\n}\n.fragment:active {\n opacity: 0.5;\n transform: translateX(1px) translateY(1px);\n}";
1496
+ const fragment = "_fragment_1kofp_1";
1497
+ const styles$8 = {
1498
+ fragment
1499
+ };
1342
1500
  const ElmFragmentIdentifier = component$(({ id }) => {
1343
- useStylesScoped$(styles$7);
1344
1501
  const handleHashClick = $((id2) => {
1345
1502
  const url = new URL(window.location.href);
1346
1503
  url.hash = id2;
@@ -1353,12 +1510,28 @@ const ElmFragmentIdentifier = component$(({ id }) => {
1353
1510
  }
1354
1511
  });
1355
1512
  return /* @__PURE__ */ jsx("span", {
1356
- class: "fragment",
1513
+ class: styles$8.fragment,
1357
1514
  onClick$: () => handleHashClick(id),
1358
1515
  children: "#"
1359
1516
  });
1360
1517
  });
1361
- const styles$6 = '.heading-common {\n margin: 0;\n position: relative;\n font-size: var(--font-size);\n line-height: var(--font-size);\n opacity: var(--opacity);\n transition: color 400ms, opacity 800ms;\n}\n\n.h1::after {\n position: absolute;\n content: "";\n bottom: -4px;\n left: 0;\n width: 100%;\n height: 0.25px;\n background-color: rgba(0, 0, 0, 0.5);\n transition: transform 800ms;\n transform: scaleX(var(--scale));\n}\n[data-theme=dark] .h1::after {\n background-color: rgba(255, 255, 255, 0.5);\n}\n.h1::before {\n position: absolute;\n content: "";\n bottom: -6px;\n left: 45%;\n width: 10%;\n height: 2px;\n background-color: rgba(0, 0, 0, 0.6);\n transition: transform 800ms;\n transform: scaleY(var(--scale));\n transform-origin: top;\n}\n[data-theme=dark] .h1::before {\n background-color: rgba(255, 255, 255, 0.6);\n}\n\n.h2::after {\n position: absolute;\n content: "";\n right: 2px;\n bottom: -4px;\n width: 6px;\n height: 8px;\n opacity: 0.8;\n transform: skewX(-25deg);\n background-color: rgba(0, 0, 0, 0.8);\n}\n[data-theme=dark] .h2::after {\n background-color: rgba(255, 255, 255, 0.8);\n}\n.h2::before {\n position: absolute;\n content: "";\n right: 10px;\n bottom: -4px;\n width: 6px;\n height: 8px;\n opacity: 0.8;\n transform: skewX(-25deg);\n background-color: rgba(0, 0, 0, 0.8);\n}\n[data-theme=dark] .h2::before {\n background-color: rgba(255, 255, 255, 0.8);\n}\n.h2__underline {\n overflow: hidden;\n position: absolute;\n content: "";\n bottom: -6px;\n left: 0;\n width: 100%;\n height: 0.25px;\n background-color: rgba(0, 0, 0, 0.5);\n transition: transform 800ms;\n transform: scaleX(var(--scale));\n transform-origin: left;\n}\n[data-theme=dark] .h2__underline {\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.h3 {\n box-sizing: border-box;\n padding-left: 0.75rem;\n}\n.h3::after {\n position: absolute;\n content: "";\n width: 3px;\n height: 12px;\n top: calc(50% - 8px);\n left: 0;\n background-color: rgba(0, 0, 0, 0.5);\n}\n[data-theme=dark] .h3::after {\n background-color: rgba(255, 255, 255, 0.5);\n}\n\n.h4 {\n position: relative;\n}\n\n.h5 {\n position: relative;\n}\n\n.h6 {\n position: relative;\n}';
1518
+ const h1 = "_h1_16jof_10";
1519
+ const h2 = "_h2_16jof_40";
1520
+ const h2__underline = "_h2__underline_16jof_68";
1521
+ const h3 = "_h3_16jof_85";
1522
+ const h4 = "_h4_16jof_102";
1523
+ const h5 = "_h5_16jof_106";
1524
+ const h6 = "_h6_16jof_110";
1525
+ const styles$7 = {
1526
+ "heading-common": "_heading-common_16jof_1",
1527
+ h1,
1528
+ h2,
1529
+ h2__underline,
1530
+ h3,
1531
+ h4,
1532
+ h5,
1533
+ h6
1534
+ };
1362
1535
  const SIZE_MAP = Object.freeze({
1363
1536
  1: 1.5,
1364
1537
  2: 1.4,
@@ -1367,22 +1540,20 @@ const SIZE_MAP = Object.freeze({
1367
1540
  5: 1.15,
1368
1541
  6: 1.1
1369
1542
  });
1370
- const ElmHeading = component$(({ level, text, id }) => {
1371
- useStylesScoped$(styles$6);
1372
- useStylesScoped$(textStyles);
1543
+ const ElmHeading = component$(({ level, text: text2, id }) => {
1373
1544
  const Tag = `h${level}`;
1374
1545
  return /* @__PURE__ */ jsxs(Tag, {
1375
1546
  class: [
1376
- "heading-common",
1377
- "text",
1378
- `h${level}`
1547
+ styles$7["heading-common"],
1548
+ textStyles.text,
1549
+ styles$7[`h${level}`]
1379
1550
  ],
1380
1551
  style: {
1381
1552
  "--font-size": `${SIZE_MAP[level]}em`
1382
1553
  },
1383
1554
  children: [
1384
1555
  /* @__PURE__ */ jsx("span", {
1385
- children: text
1556
+ children: text2
1386
1557
  }),
1387
1558
  /* @__PURE__ */ jsx(Slot, {}),
1388
1559
  id && /* @__PURE__ */ jsx("span", {
@@ -1394,37 +1565,42 @@ const ElmHeading = component$(({ level, text, id }) => {
1394
1565
  })
1395
1566
  }),
1396
1567
  level === 2 && /* @__PURE__ */ jsx("span", {
1397
- class: "h2__underline",
1568
+ class: styles$7["h2__underline"],
1398
1569
  "aria-hidden": "true"
1399
1570
  })
1400
1571
  ]
1401
1572
  });
1402
1573
  });
1403
- const listStyles = '.elmethis-list-common {\n margin-block: 1rem;\n opacity: var(--opacity);\n transition: opacity 800ms;\n box-sizing: border-box;\n padding-left: 1.25rem;\n}\n\n.elmethis-bulleted-list li {\n box-sizing: border-box;\n padding-left: 0.5rem;\n margin-block: 0.75rem;\n}\n.elmethis-bulleted-list li::marker {\n content: url("data:image/svg+xml;base64,ICA8c3ZnCiAgICB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnCiAgICB2aWV3Qm94PScwIDAgMTYgMTYnCiAgICB3aWR0aD0nMTJweCcKICAgIGhlaWdodD0nMTJweCcKICA+CiAgICA8cGF0aAogICAgICBmaWxsPScjNDQ5NzYzJwogICAgICBvcGFjaXR5PScwLjgnCiAgICAgIGQ9J00zIDMuNzMyYTEuNSAxLjUgMCAwIDEgMi4zMDUtMS4yNjVsNi43MDYgNC4yNjdhMS41IDEuNSAwIDAgMSAwIDIuNTMxbC02LjcwNiA0LjI2OEExLjUgMS41IDAgMCAxIDMgMTIuMjY3VjMuNzMyWicKICAgIC8+CiAgPC9zdmc+");\n}\n.elmethis-bulleted-list li ul li::marker {\n content: url("data:image/svg+xml;base64,ICA8c3ZnCiAgICB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnCiAgICB2aWV3Qm94PScwIDAgMjQgMjQnCiAgICB3aWR0aD0nMTJweCcKICAgIGhlaWdodD0nMTJweCcKICAgIHN0cm9rZT0nIzQ0OTc2MycKICAgIGZpbGw9J3RyYW5zcGFyZW50JwogID4KICAgIDxwYXRoCiAgICAgIHN0cm9rZUxpbmVjYXA9J3JvdW5kJwogICAgICBzdHJva2VMaW5lam9pbj0ncm91bmQnCiAgICAgIGQ9J001LjI1IDUuNjUzYzAtLjg1Ni45MTctMS4zOTggMS42NjctLjk4NmwxMS41NCA2LjM0N2ExLjEyNSAxLjEyNSAwIDAgMSAwIDEuOTcybC0xMS41NCA2LjM0N2ExLjEyNSAxLjEyNSAwIDAgMS0xLjY2Ny0uOTg2VjUuNjUzWicKICAgIC8+CiAgPC9zdmc+");\n}\n.elmethis-bulleted-list li ul li ul li::marker {\n content: url("data:image/svg+xml;base64,ICA8c3ZnCiAgICB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnCiAgICB2aWV3Qm94PScwIDAgMjAgMjAnCiAgICB3aWR0aD0nMTJweCcKICAgIGhlaWdodD0nMTJweCcKICAgIHN0cm9rZT0nIzQ0OTc2MycKICAgIGZpbGw9JyM0NDk3NjMnCiAgPgogICAgPHBhdGgKICAgICAgZmlsbFJ1bGU9J2V2ZW5vZGQnCiAgICAgIGQ9J004LjIyIDUuMjJhLjc1Ljc1IDAgMCAxIDEuMDYgMGw0LjI1IDQuMjVhLjc1Ljc1IDAgMCAxIDAgMS4wNmwtNC4yNSA0LjI1YS43NS43NSAwIDAgMS0xLjA2LTEuMDZMMTEuOTQgMTAgOC4yMiA2LjI4YS43NS43NSAwIDAgMSAwLTEuMDZaJwogICAgICBjbGlwUnVsZT0nZXZlbm9kZCcKICAgIC8+CiAgPC9zdmc+");\n}\n\n.elmethis-numbered-list li {\n box-sizing: border-box;\n padding-left: 0.25rem;\n margin-block: 0.75rem;\n margin-left: 0.25rem;\n list-style-type: decimal;\n}\n.elmethis-numbered-list li::marker {\n font-weight: bold;\n color: #9771bd;\n}\n.elmethis-numbered-list li ol li {\n list-style-type: lower-alpha;\n}\n.elmethis-numbered-list li ol li ol li {\n list-style-type: lower-roman;\n}\n.elmethis-numbered-list li ol li ol li ol li {\n list-style-type: lower-greek;\n}';
1574
+ const styles$6 = {
1575
+ "elmethis-list-common": "_elmethis-list-common_14epx_1",
1576
+ "elmethis-bulleted-list": "_elmethis-bulleted-list_14epx_9",
1577
+ "elmethis-numbered-list": "_elmethis-numbered-list_14epx_24"
1578
+ };
1404
1579
  const ElmList = component$(({ listStyle = "unordered" }) => {
1405
- useStyles$(listStyles);
1406
- useStylesScoped$(textStyles);
1407
1580
  if (listStyle === "ordered") {
1408
1581
  return /* @__PURE__ */ jsx("ol", {
1409
1582
  class: [
1410
- "text",
1411
- "elmethis-list-common",
1412
- "elmethis-numbered-list"
1583
+ textStyles.text,
1584
+ styles$6["elmethis-list-common"],
1585
+ styles$6["elmethis-numbered-list"]
1413
1586
  ],
1414
1587
  children: /* @__PURE__ */ jsx(Slot, {})
1415
1588
  });
1416
1589
  } else {
1417
1590
  return /* @__PURE__ */ jsx("ul", {
1418
1591
  class: [
1419
- "text",
1420
- "elmethis-list-common",
1421
- "elmethis-bulleted-list"
1592
+ textStyles.text,
1593
+ styles$6["elmethis-list-common"],
1594
+ styles$6["elmethis-bulleted-list"]
1422
1595
  ],
1423
1596
  children: /* @__PURE__ */ jsx(Slot, {})
1424
1597
  });
1425
1598
  }
1426
1599
  });
1427
- const styles$5 = ".paragraph {\n opacity: var(--opacity, 0);\n opacity: var(--opacity);\n transition: opacity 800ms;\n color: var(--color, #606875);\n background-color: var(--background-color, inherit);\n}\n.paragraph::selection {\n color: rgba(255, 255, 255, 0.7);\n background-color: rgba(0, 0, 0, 0.7);\n}\n[data-theme=dark] .paragraph {\n color: rgba(255, 255, 255, 0.7);\n}\n[data-theme=dark] .paragraph::selection {\n color: rgba(0, 0, 0, 0.7);\n background-color: rgba(255, 255, 255, 0.7);\n}";
1600
+ const paragraph = "_paragraph_jz10s_1";
1601
+ const styles$5 = {
1602
+ paragraph
1603
+ };
1428
1604
  const useInView = (props) => {
1429
1605
  const ref = useSignal();
1430
1606
  const isVisible = useSignal(false);
@@ -1445,14 +1621,12 @@ const useInView = (props) => {
1445
1621
  };
1446
1622
  };
1447
1623
  const ElmParagraph = component$(({ color, backgroundColor }) => {
1448
- useStylesScoped$(styles$5);
1449
- useStylesScoped$(textStyles);
1450
1624
  const { ref, isVisible } = useInView();
1451
1625
  return /* @__PURE__ */ jsx("p", {
1452
1626
  ref,
1453
1627
  class: [
1454
- "paragraph",
1455
- "text"
1628
+ styles$5.paragraph,
1629
+ textStyles.text
1456
1630
  ],
1457
1631
  style: {
1458
1632
  "--color": color,
@@ -1462,32 +1636,38 @@ const ElmParagraph = component$(({ color, backgroundColor }) => {
1462
1636
  children: /* @__PURE__ */ jsx(Slot, {})
1463
1637
  });
1464
1638
  });
1465
- const styles$4 = ".table {\n margin-block: var(--margin-block);\n border-collapse: collapse;\n border-spacing: 0;\n box-shadow: 0 0 0.125rem rgba(0, 0, 0, 0.2);\n}\n\n.caption {\n position: relative;\n width: 100%;\n display: inline-flex;\n justify-content: center;\n align-items: center;\n gap: 1rem;\n margin-block-end: 1rem;\n}\n\n.caption-inner {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n gap: 0.25rem;\n}\n\n.spacing {\n flex-grow: 1;\n height: 1px;\n background-color: rgba(128, 128, 128, 0.2);\n}";
1639
+ const table = "_table_x2nyq_1";
1640
+ const caption = "_caption_x2nyq_8";
1641
+ const spacing = "_spacing_x2nyq_25";
1642
+ const styles$4 = {
1643
+ table,
1644
+ caption,
1645
+ "caption-inner": "_caption-inner_x2nyq_18",
1646
+ spacing
1647
+ };
1466
1648
  const HasRowHeaderContext = createContextId("HasRowHeaderContext");
1467
1649
  const ElmTable = component$((props) => {
1468
- useStylesScoped$(styles$4);
1469
- useStylesScoped$(textStyles);
1470
- const { margin, caption, hasRowHeader = false } = props;
1650
+ const { margin, caption: caption2, hasRowHeader = false } = props;
1471
1651
  const hasRowHeaderComputed = useComputed$(() => hasRowHeader);
1472
1652
  useContextProvider(HasRowHeaderContext, hasRowHeaderComputed);
1473
1653
  return /* @__PURE__ */ jsxs("table", {
1474
1654
  class: [
1475
- "table",
1476
- "text"
1655
+ styles$4.table,
1656
+ textStyles.text
1477
1657
  ],
1478
1658
  style: {
1479
1659
  "--margin-block": margin
1480
1660
  },
1481
1661
  children: [
1482
- caption && /* @__PURE__ */ jsx("caption", {
1662
+ caption2 && /* @__PURE__ */ jsx("caption", {
1483
1663
  children: /* @__PURE__ */ jsxs("span", {
1484
- class: "caption",
1664
+ class: styles$4.caption,
1485
1665
  children: [
1486
1666
  /* @__PURE__ */ jsx("span", {
1487
- class: "spacing"
1667
+ class: styles$4.spacing
1488
1668
  }),
1489
1669
  /* @__PURE__ */ jsxs("span", {
1490
- class: "caption-inner",
1670
+ class: styles$4["caption-inner"],
1491
1671
  children: [
1492
1672
  /* @__PURE__ */ jsx("svg", {
1493
1673
  viewBox: "0 0 24 24",
@@ -1499,12 +1679,12 @@ const ElmTable = component$((props) => {
1499
1679
  })
1500
1680
  }),
1501
1681
  /* @__PURE__ */ jsx(ElmInlineText, {
1502
- text: caption
1682
+ text: caption2
1503
1683
  })
1504
1684
  ]
1505
1685
  }),
1506
1686
  /* @__PURE__ */ jsx("span", {
1507
- class: "spacing"
1687
+ class: styles$4.spacing
1508
1688
  })
1509
1689
  ]
1510
1690
  })
@@ -1513,13 +1693,15 @@ const ElmTable = component$((props) => {
1513
1693
  ]
1514
1694
  });
1515
1695
  });
1516
- const styles$3 = ".thead {\n text-align: left;\n transition: background-color 400ms, color 400ms;\n border-bottom: 2px solid rgba(128, 128, 128, 0.5);\n}";
1696
+ const thead = "_thead_1brzu_1";
1697
+ const styles$3 = {
1698
+ thead
1699
+ };
1517
1700
  const HasHeaderContext = createContextId("HasHeaderContext");
1518
1701
  const ElmTableHeader = component$(() => {
1519
- useStylesScoped$(styles$3);
1520
1702
  useContextProvider(HasHeaderContext, true);
1521
1703
  return /* @__PURE__ */ jsx("thead", {
1522
- class: "thead",
1704
+ class: styles$3.thead,
1523
1705
  children: /* @__PURE__ */ jsx(Slot, {})
1524
1706
  });
1525
1707
  });
@@ -1529,41 +1711,55 @@ const ElmTableBody = component$(() => {
1529
1711
  children: /* @__PURE__ */ jsx(Slot, {})
1530
1712
  });
1531
1713
  });
1532
- const styles$2 = ".tr {\n transition: background-color 200ms;\n}\n.tr:nth-child(odd) {\n background-color: transparent;\n}\n.tr:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.015);\n}\n[data-theme=dark] .tr:nth-child(even) {\n background-color: rgba(255, 255, 255, 0.015);\n}\n.tr:hover {\n background-color: rgba(105, 135, 184, 0.15);\n}\n[data-theme=dark] .tr:hover {\n background-color: rgba(105, 135, 184, 0.15);\n}\n\n.has-row-header td:first-child,\n.has-row-header tr:first-child {\n background-color: rgba(128, 128, 128, 0.15);\n}";
1714
+ const tr = "_tr_2ogbz_1";
1715
+ const styles$2 = {
1716
+ tr,
1717
+ "has-row-header": "_has-row-header_2ogbz_20"
1718
+ };
1533
1719
  const ElmTableRow = component$(() => {
1534
- useStylesScoped$(styles$2);
1535
1720
  const hasRowHeader = useContext(HasRowHeaderContext);
1536
1721
  return /* @__PURE__ */ jsx("tr", {
1537
1722
  class: [
1538
- "tr",
1539
- hasRowHeader.value && "has-row-header"
1723
+ styles$2.tr,
1724
+ hasRowHeader.value && styles$2["has-row-header"]
1540
1725
  ],
1541
1726
  children: /* @__PURE__ */ jsx(Slot, {})
1542
1727
  });
1543
1728
  });
1544
- const styles$1 = ".common {\n padding: 0.75rem 1rem;\n color: rgba(0, 0, 0, 0.7);\n border-right: 1px dotted rgba(0, 0, 0, 0.15);\n}\n.common::selection {\n color: rgba(255, 255, 255, 0.7);\n background-color: rgba(0, 0, 0, 0.7);\n}\n[data-theme=dark] .common {\n color: rgba(255, 255, 255, 0.7);\n}\n[data-theme=dark] .common::selection {\n color: rgba(0, 0, 0, 0.7);\n background-color: rgba(255, 255, 255, 0.7);\n}\n[data-theme=dark] .common {\n border-right: 1px dotted rgba(255, 255, 255, 0.15);\n}\n.common:last-child {\n border-right: none;\n}\n\n.td {\n border-top: 1px solid rgba(0, 0, 0, 0.15);\n}\n[data-theme=dark] .td {\n border-top-color: rgba(255, 255, 255, 0.15);\n}\n\n.th {\n background-color: rgba(128, 128, 128, 0.15);\n}";
1729
+ const common = "_common_1puhv_1";
1730
+ const td = "_td_1puhv_24";
1731
+ const th = "_th_1puhv_31";
1732
+ const styles$1 = {
1733
+ common,
1734
+ td,
1735
+ th
1736
+ };
1545
1737
  const ElmTableCell = component$((props) => {
1546
- useStylesScoped$(styles$1);
1547
- const { hasHeader = false, text } = props;
1738
+ const { hasHeader = false, text: text2 } = props;
1548
1739
  const hasHeaderInjected = useContext(HasHeaderContext, false);
1549
1740
  const isHeader = hasHeader || hasHeaderInjected;
1550
1741
  return /* @__PURE__ */ jsx(Fragment, {
1551
1742
  children: isHeader ? /* @__PURE__ */ jsx("th", {
1552
1743
  class: [
1553
- "common",
1554
- "th"
1744
+ styles$1.common,
1745
+ styles$1.th
1555
1746
  ],
1556
- children: text ? text : /* @__PURE__ */ jsx(Slot, {})
1747
+ children: text2 ? text2 : /* @__PURE__ */ jsx(Slot, {})
1557
1748
  }) : /* @__PURE__ */ jsx("td", {
1558
1749
  class: [
1559
- "common",
1560
- "td"
1750
+ styles$1.common,
1751
+ styles$1.td
1561
1752
  ],
1562
- children: text ? text : /* @__PURE__ */ jsx(Slot, {})
1753
+ children: text2 ? text2 : /* @__PURE__ */ jsx(Slot, {})
1563
1754
  })
1564
1755
  });
1565
1756
  });
1566
- const styles = ".jarkup-body {\n display: flex;\n flex-direction: column;\n gap: 2rem;\n}\n\n.column-list {\n box-sizing: content-box;\n padding-block: 0.25rem;\n width: 100%;\n display: flex;\n flex-direction: row;\n gap: 0.25rem;\n justify-content: space-around;\n overflow: auto;\n}\n\n.column {\n box-sizing: border-box;\n padding: 0.125rem;\n flex: var(--width-ratio, 1);\n}\n.column > * + * {\n margin-block-start: 2em;\n}";
1757
+ const column = "_column_1l2bp_7";
1758
+ const styles = {
1759
+ "jarkup-body": "_jarkup-body_1l2bp_1",
1760
+ "column-list": "_column-list_1l2bp_7",
1761
+ column
1762
+ };
1567
1763
  const convertInlineComponentsToPlainText = (inlineComponents) => {
1568
1764
  return inlineComponents.map((component) => {
1569
1765
  if (component.type === "Text") {
@@ -1574,7 +1770,6 @@ const convertInlineComponentsToPlainText = (inlineComponents) => {
1574
1770
  }).join("");
1575
1771
  };
1576
1772
  const ElmJarkup = component$((props) => {
1577
- useStylesScoped$(styles);
1578
1773
  const render = (jsonComponents) => {
1579
1774
  return jsonComponents.map((component, index) => {
1580
1775
  const key = component.id || index;
@@ -1701,12 +1896,12 @@ const ElmJarkup = component$((props) => {
1701
1896
  }, key);
1702
1897
  case "ColumnList":
1703
1898
  return /* @__PURE__ */ jsx("div", {
1704
- class: "column-list",
1899
+ class: styles["column-list"],
1705
1900
  children: render(component.slots.default)
1706
1901
  }, key);
1707
1902
  case "Column":
1708
1903
  return /* @__PURE__ */ jsx("div", {
1709
- class: "column",
1904
+ class: styles.column,
1710
1905
  style: {
1711
1906
  "--width-ratio": component.props?.widthRatio || 1,
1712
1907
  width: component.props?.widthRatio ? `${component.props.widthRatio * 100}%` : void 0
@@ -1728,7 +1923,7 @@ const ElmJarkup = component$((props) => {
1728
1923
  });
1729
1924
  };
1730
1925
  return /* @__PURE__ */ jsx("div", {
1731
- class: "jarkup-body",
1926
+ class: styles["jarkup-body"],
1732
1927
  children: render(props.jsonComponents)
1733
1928
  });
1734
1929
  });
@@ -1752,6 +1947,7 @@ export {
1752
1947
  ElmLanguageIcon,
1753
1948
  ElmList,
1754
1949
  ElmMdiIcon,
1950
+ ElmPageTop,
1755
1951
  ElmParagraph,
1756
1952
  ElmParallax,
1757
1953
  ElmRectangleWave,