@elmethis/qwik 0.0.21 → 0.0.22

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.
@@ -10,7 +10,7 @@ const marked = require("marked");
10
10
  const caption$1 = "_caption_1j0ec_27";
11
11
  const divider = "_divider_1j0ec_50";
12
12
  const code$2 = "_code_1j0ec_1";
13
- const styles$t = {
13
+ const styles$u = {
14
14
  "code-block": "_code-block_1j0ec_1",
15
15
  "language-icon": "_language-icon_1j0ec_22",
16
16
  caption: caption$1,
@@ -70,7 +70,7 @@ const Typescript = qwik.component$(({ size = 24, ...props }) => {
70
70
  });
71
71
  });
72
72
  const path = "_path_1ccs2_1";
73
- const styles$s = {
73
+ const styles$t = {
74
74
  path
75
75
  };
76
76
  const Bash = qwik.component$(({ size = 24, ...props }) => {
@@ -86,7 +86,7 @@ const Bash = qwik.component$(({ size = 24, ...props }) => {
86
86
  d: "M4.24 4.24h119.53v119.53H4.24z"
87
87
  }),
88
88
  /* @__PURE__ */ jsxRuntime.jsx("path", {
89
- class: styles$s.path,
89
+ class: styles$t.path,
90
90
  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"
91
91
  }),
92
92
  /* @__PURE__ */ jsxRuntime.jsx("path", {
@@ -526,13 +526,13 @@ const C = qwik.component$(({ size = 24, ...props }) => {
526
526
  ]
527
527
  });
528
528
  });
529
- const icon$3 = "_icon_1gvln_1";
530
- const styles$r = {
531
- icon: icon$3
529
+ const icon$4 = "_icon_1gvln_1";
530
+ const styles$s = {
531
+ icon: icon$4
532
532
  };
533
533
  const ElmMdiIcon = qwik.component$(({ d, size = "1em", color, lightColor, darkColor }) => {
534
534
  return /* @__PURE__ */ jsxRuntime.jsx("svg", {
535
- class: styles$r.icon,
535
+ class: styles$s.icon,
536
536
  style: {
537
537
  "--color": lightColor ?? color,
538
538
  "--dark-color": darkColor ?? color
@@ -641,7 +641,7 @@ const text$3 = "_text_1gswr_1";
641
641
  const code$1 = "_code_1gswr_12";
642
642
  const kbd = "_kbd_1gswr_21";
643
643
  const link$1 = "_link_1gswr_47";
644
- const styles$q = {
644
+ const styles$r = {
645
645
  text: text$3,
646
646
  code: code$1,
647
647
  kbd,
@@ -651,17 +651,17 @@ const text$2 = "_text_zryur_1";
651
651
  const textStyles = {
652
652
  text: text$2
653
653
  };
654
- const icon$2 = "_icon_19g82_1";
655
- const styles$p = {
656
- icon: icon$2
654
+ const icon$3 = "_icon_19g82_1";
655
+ const styles$q = {
656
+ icon: icon$3
657
657
  };
658
658
  const ElmInlineIcon = qwik.component$(({ src, alt }) => {
659
659
  return /* @__PURE__ */ jsxRuntime.jsx("span", {
660
- class: styles$p.icon,
660
+ class: styles$q.icon,
661
661
  children: /* @__PURE__ */ jsxRuntime.jsx("img", {
662
662
  src,
663
663
  alt,
664
- class: styles$p.icon
664
+ class: styles$q.icon
665
665
  })
666
666
  });
667
667
  });
@@ -672,7 +672,7 @@ const ElmInlineText = qwik.component$((props) => {
672
672
  }) : /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {});
673
673
  if (props.kbd) {
674
674
  vnode = /* @__PURE__ */ jsxRuntime.jsx("kbd", {
675
- class: styles$q.kbd,
675
+ class: styles$r.kbd,
676
676
  children: vnode
677
677
  });
678
678
  }
@@ -698,13 +698,13 @@ const ElmInlineText = qwik.component$((props) => {
698
698
  }
699
699
  if (code2) {
700
700
  vnode = /* @__PURE__ */ jsxRuntime.jsx("code", {
701
- class: styles$q.code,
701
+ class: styles$r.code,
702
702
  children: vnode
703
703
  });
704
704
  }
705
705
  if (props.ruby) {
706
706
  vnode = /* @__PURE__ */ jsxRuntime.jsxs("ruby", {
707
- class: styles$q.text,
707
+ class: styles$r.text,
708
708
  children: [
709
709
  /* @__PURE__ */ jsxRuntime.jsx("span", {
710
710
  children: vnode
@@ -717,7 +717,7 @@ const ElmInlineText = qwik.component$((props) => {
717
717
  }
718
718
  const wrappedVnode = /* @__PURE__ */ jsxRuntime.jsx("span", {
719
719
  class: [
720
- styles$q.text,
720
+ styles$r.text,
721
721
  textStyles.text
722
722
  ],
723
723
  style: {
@@ -729,7 +729,7 @@ const ElmInlineText = qwik.component$((props) => {
729
729
  });
730
730
  if (props.href) {
731
731
  return /* @__PURE__ */ jsxRuntime.jsxs("a", {
732
- class: styles$q.link,
732
+ class: styles$r.link,
733
733
  href: props.href,
734
734
  style: {
735
735
  "--font-size": size
@@ -747,7 +747,7 @@ const ElmInlineText = qwik.component$((props) => {
747
747
  return wrappedVnode;
748
748
  });
749
749
  const code = "_code_1sw1e_1";
750
- const styles$o = {
750
+ const styles$p = {
751
751
  code
752
752
  };
753
753
  const ElmShikiHighlighter = qwik.component$(({ code: code2, language = "txt" }) => {
@@ -772,7 +772,7 @@ const ElmShikiHighlighter = qwik.component$(({ code: code2, language = "txt" })
772
772
  }
773
773
  });
774
774
  return /* @__PURE__ */ jsxRuntime.jsx("pre", {
775
- class: styles$o.code,
775
+ class: styles$p.code,
776
776
  dangerouslySetInnerHTML: rawHtml.value
777
777
  });
778
778
  });
@@ -791,19 +791,19 @@ const ElmCodeBlock = qwik.component$(({ code: code2, language = "txt", caption:
791
791
  }
792
792
  });
793
793
  return /* @__PURE__ */ jsxRuntime.jsxs("figure", {
794
- class: styles$t["code-block"],
794
+ class: styles$u["code-block"],
795
795
  style: {
796
796
  margin
797
797
  },
798
798
  children: [
799
799
  /* @__PURE__ */ jsxRuntime.jsx("span", {
800
- class: styles$t["language-icon"],
800
+ class: styles$u["language-icon"],
801
801
  children: /* @__PURE__ */ jsxRuntime.jsx(ElmLanguageIcon, {
802
802
  language
803
803
  })
804
804
  }),
805
805
  /* @__PURE__ */ jsxRuntime.jsx("span", {
806
- class: styles$t.caption,
806
+ class: styles$u.caption,
807
807
  children: /* @__PURE__ */ jsxRuntime.jsxs(ElmInlineText, {
808
808
  children: [
809
809
  caption2 || language,
@@ -812,7 +812,7 @@ const ElmCodeBlock = qwik.component$(({ code: code2, language = "txt", caption:
812
812
  })
813
813
  }),
814
814
  /* @__PURE__ */ jsxRuntime.jsx("div", {
815
- class: styles$t["copy-icon"],
815
+ class: styles$u["copy-icon"],
816
816
  onClick$: copyToClipboard,
817
817
  children: /* @__PURE__ */ jsxRuntime.jsx(ElmMdiIcon, {
818
818
  size: "1.25rem",
@@ -821,10 +821,10 @@ const ElmCodeBlock = qwik.component$(({ code: code2, language = "txt", caption:
821
821
  })
822
822
  }),
823
823
  /* @__PURE__ */ jsxRuntime.jsx("hr", {
824
- class: styles$t.divider
824
+ class: styles$u.divider
825
825
  }),
826
826
  /* @__PURE__ */ jsxRuntime.jsx("div", {
827
- class: styles$t.code,
827
+ class: styles$u.code,
828
828
  children: /* @__PURE__ */ jsxRuntime.jsx(ElmShikiHighlighter, {
829
829
  code: code2,
830
830
  language
@@ -844,7 +844,7 @@ const ElmKatex = qwik.component$(({ expression, block = false }) => {
844
844
  });
845
845
  });
846
846
  const parallax = "_parallax_1kb0k_1";
847
- const styles$n = {
847
+ const styles$o = {
848
848
  "parallax-watcher": "_parallax-watcher_1kb0k_1",
849
849
  parallax
850
850
  };
@@ -853,13 +853,13 @@ const ElmParallax = qwik.component$(({ images }) => {
853
853
  return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
854
854
  children: [
855
855
  /* @__PURE__ */ jsxRuntime.jsx("div", {
856
- class: styles$n["parallax-watcher"],
856
+ class: styles$o["parallax-watcher"],
857
857
  "window:onScroll$": () => {
858
858
  y.value = window.scrollY;
859
859
  }
860
860
  }),
861
861
  images.map((image2, index) => /* @__PURE__ */ jsxRuntime.jsx("div", {
862
- class: styles$n.parallax,
862
+ class: styles$o.parallax,
863
863
  style: {
864
864
  backgroundImage: `url(${image2})`,
865
865
  transform: `scale(1.2) translateY(${y.value / (1e3 * (index + 1))}%)`,
@@ -873,7 +873,7 @@ const toggle = "_toggle_1nxqa_1";
873
873
  const summary = "_summary_1nxqa_14";
874
874
  const content$2 = "_content_1nxqa_60";
875
875
  const footer = "_footer_1nxqa_80";
876
- const styles$m = {
876
+ const styles$n = {
877
877
  toggle,
878
878
  "toggle-closed": "_toggle-closed_1nxqa_7",
879
879
  "toggle-open": "_toggle-open_1nxqa_10",
@@ -901,29 +901,29 @@ const ElmToggle = qwik.component$(({ summary: summary2 }) => {
901
901
  });
902
902
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
903
903
  class: [
904
- styles$m.toggle,
904
+ styles$n.toggle,
905
905
  {
906
- [styles$m["toggle-open"]]: isOpen.value,
907
- [styles$m["toggle-closed"]]: !isOpen.value
906
+ [styles$n["toggle-open"]]: isOpen.value,
907
+ [styles$n["toggle-closed"]]: !isOpen.value
908
908
  }
909
909
  ],
910
910
  children: [
911
911
  /* @__PURE__ */ jsxRuntime.jsxs("div", {
912
912
  class: [
913
- styles$m.summary,
913
+ styles$n.summary,
914
914
  {
915
- [styles$m["summary-open"]]: isOpen.value,
916
- [styles$m["summary-closed"]]: !isOpen.value
915
+ [styles$n["summary-open"]]: isOpen.value,
916
+ [styles$n["summary-closed"]]: !isOpen.value
917
917
  }
918
918
  ],
919
919
  onClick$: toggle2,
920
920
  children: [
921
921
  /* @__PURE__ */ jsxRuntime.jsx("span", {
922
922
  class: [
923
- styles$m["chevron-icon"],
923
+ styles$n["chevron-icon"],
924
924
  {
925
- [styles$m["chevron-icon-open"]]: isOpen.value,
926
- [styles$m["chevron-icon-closed"]]: !isOpen.value
925
+ [styles$n["chevron-icon-open"]]: isOpen.value,
926
+ [styles$n["chevron-icon-closed"]]: !isOpen.value
927
927
  }
928
928
  ],
929
929
  children: /* @__PURE__ */ jsxRuntime.jsx(ElmMdiIcon, {
@@ -931,17 +931,17 @@ const ElmToggle = qwik.component$(({ summary: summary2 }) => {
931
931
  })
932
932
  }),
933
933
  /* @__PURE__ */ jsxRuntime.jsx("span", {
934
- class: styles$m["summary-text"],
934
+ class: styles$n["summary-text"],
935
935
  children: summary2 ? summary2 : /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {
936
936
  name: "summary"
937
937
  })
938
938
  }),
939
939
  /* @__PURE__ */ jsxRuntime.jsx("span", {
940
940
  class: [
941
- styles$m["plus-icon"],
941
+ styles$n["plus-icon"],
942
942
  {
943
- [styles$m["plus-icon-open"]]: isOpen.value,
944
- [styles$m["plus-icon-closed"]]: !isOpen.value
943
+ [styles$n["plus-icon-open"]]: isOpen.value,
944
+ [styles$n["plus-icon-closed"]]: !isOpen.value
945
945
  }
946
946
  ],
947
947
  children: /* @__PURE__ */ jsxRuntime.jsx(ElmMdiIcon, {
@@ -954,30 +954,30 @@ const ElmToggle = qwik.component$(({ summary: summary2 }) => {
954
954
  }),
955
955
  /* @__PURE__ */ jsxRuntime.jsx("div", {
956
956
  class: [
957
- styles$m.content,
957
+ styles$n.content,
958
958
  {
959
- [styles$m["content-open"]]: isOpen.value,
960
- [styles$m["content-closed"]]: !isOpen.value
959
+ [styles$n["content-open"]]: isOpen.value,
960
+ [styles$n["content-closed"]]: !isOpen.value
961
961
  }
962
962
  ],
963
963
  children: /* @__PURE__ */ jsxRuntime.jsx(qwik.Slot, {})
964
964
  }),
965
965
  /* @__PURE__ */ jsxRuntime.jsxs("div", {
966
- class: styles$m.footer,
966
+ class: styles$n.footer,
967
967
  onClick$: toggle2,
968
968
  children: [
969
969
  /* @__PURE__ */ jsxRuntime.jsx("span", {
970
- class: styles$m["footer-chevron-icon"],
970
+ class: styles$n["footer-chevron-icon"],
971
971
  children: /* @__PURE__ */ jsxRuntime.jsx(ElmMdiIcon, {
972
972
  d: js.mdiChevronRight,
973
973
  color: "gray"
974
974
  })
975
975
  }),
976
976
  /* @__PURE__ */ jsxRuntime.jsx("hr", {
977
- class: styles$m["footer-line"]
977
+ class: styles$n["footer-line"]
978
978
  }),
979
979
  /* @__PURE__ */ jsxRuntime.jsx("span", {
980
- class: styles$m["footer-cross-icon"],
980
+ class: styles$n["footer-cross-icon"],
981
981
  children: /* @__PURE__ */ jsxRuntime.jsx(ElmMdiIcon, {
982
982
  d: js.mdiPlus,
983
983
  color: "#c56565"
@@ -987,17 +987,17 @@ const ElmToggle = qwik.component$(({ summary: summary2 }) => {
987
987
  children: "CLOSE"
988
988
  }),
989
989
  /* @__PURE__ */ jsxRuntime.jsx("span", {
990
- class: styles$m["footer-cross-icon"],
990
+ class: styles$n["footer-cross-icon"],
991
991
  children: /* @__PURE__ */ jsxRuntime.jsx(ElmMdiIcon, {
992
992
  d: js.mdiPlus,
993
993
  color: "#c56565"
994
994
  })
995
995
  }),
996
996
  /* @__PURE__ */ jsxRuntime.jsx("hr", {
997
- class: styles$m["footer-line"]
997
+ class: styles$n["footer-line"]
998
998
  }),
999
999
  /* @__PURE__ */ jsxRuntime.jsx("span", {
1000
- class: styles$m["footer-chevron-icon"],
1000
+ class: styles$n["footer-chevron-icon"],
1001
1001
  children: /* @__PURE__ */ jsxRuntime.jsx(ElmMdiIcon, {
1002
1002
  d: js.mdiChevronRight,
1003
1003
  color: "gray"
@@ -1008,50 +1008,50 @@ const ElmToggle = qwik.component$(({ summary: summary2 }) => {
1008
1008
  ]
1009
1009
  });
1010
1010
  });
1011
- const styles$l = {
1011
+ const styles$m = {
1012
1012
  "block-fallback": "_block-fallback_rt986_1"
1013
1013
  };
1014
- const wrapper$1 = "_wrapper_1yktj_12";
1014
+ const wrapper$2 = "_wrapper_1yktj_12";
1015
1015
  const dot = "_dot_1yktj_22";
1016
- const styles$k = {
1017
- wrapper: wrapper$1,
1016
+ const styles$l = {
1017
+ wrapper: wrapper$2,
1018
1018
  dot
1019
1019
  };
1020
1020
  const ElmDotLoadingIcon = qwik.component$(({ size = "4em", color = "#606875" }) => {
1021
1021
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
1022
- class: styles$k.wrapper,
1022
+ class: styles$l.wrapper,
1023
1023
  style: {
1024
1024
  "--size": size,
1025
1025
  "--color": color
1026
1026
  },
1027
1027
  children: [
1028
1028
  /* @__PURE__ */ jsxRuntime.jsx("div", {
1029
- class: styles$k.dot,
1029
+ class: styles$l.dot,
1030
1030
  "aria-hidden": "true"
1031
1031
  }),
1032
1032
  /* @__PURE__ */ jsxRuntime.jsx("div", {
1033
- class: styles$k.dot,
1033
+ class: styles$l.dot,
1034
1034
  "aria-hidden": "true"
1035
1035
  }),
1036
1036
  /* @__PURE__ */ jsxRuntime.jsx("div", {
1037
- class: styles$k.dot,
1037
+ class: styles$l.dot,
1038
1038
  "aria-hidden": "true"
1039
1039
  })
1040
1040
  ]
1041
1041
  });
1042
1042
  });
1043
- const styles$j = {
1043
+ const styles$k = {
1044
1044
  "rectangle-wave": "_rectangle-wave_hej9g_17"
1045
1045
  };
1046
1046
  const ElmRectangleWave = qwik.component$(() => {
1047
1047
  return /* @__PURE__ */ jsxRuntime.jsx("div", {
1048
1048
  "aria-hidden": "true",
1049
- class: styles$j["rectangle-wave"]
1049
+ class: styles$k["rectangle-wave"]
1050
1050
  });
1051
1051
  });
1052
1052
  const ElmBlockFallback = qwik.component$(({ height = "16rem" }) => {
1053
1053
  return /* @__PURE__ */ jsxRuntime.jsxs("div", {
1054
- class: styles$l["block-fallback"],
1054
+ class: styles$m["block-fallback"],
1055
1055
  style: {
1056
1056
  "--height": height
1057
1057
  },
@@ -1061,6 +1061,153 @@ const ElmBlockFallback = qwik.component$(({ height = "16rem" }) => {
1061
1061
  ]
1062
1062
  });
1063
1063
  });
1064
+ const loading = "_loading_1yj0v_19";
1065
+ const wrapper$1 = "_wrapper_1yj0v_33";
1066
+ const active = "_active_1yj0v_55";
1067
+ const header$1 = "_header_1yj0v_59";
1068
+ const label = "_label_1yj0v_67";
1069
+ const requierd = "_requierd_1yj0v_82";
1070
+ const body$1 = "_body_1yj0v_88";
1071
+ const input = "_input_1yj0v_109";
1072
+ const icon$2 = "_icon_1yj0v_136";
1073
+ const suffix = "_suffix_1yj0v_153";
1074
+ const styles$j = {
1075
+ loading,
1076
+ wrapper: wrapper$1,
1077
+ active,
1078
+ header: header$1,
1079
+ label,
1080
+ requierd,
1081
+ body: body$1,
1082
+ input,
1083
+ "icon-box": "_icon-box_1yj0v_136",
1084
+ icon: icon$2,
1085
+ suffix
1086
+ };
1087
+ const ElmTextField = qwik.component$((props) => {
1088
+ const id = qwik.useId();
1089
+ const isFocused = qwik.useSignal(false);
1090
+ const inputType = qwik.useSignal(props.isPassword ? "password" : "text");
1091
+ const internalValue = qwik.useSignal("");
1092
+ const input2 = props.value ?? internalValue;
1093
+ const handleDelete = qwik.$(() => {
1094
+ if (!props.loading && !props.disabled) {
1095
+ input2.value = "";
1096
+ }
1097
+ });
1098
+ const handleVisibleSwitch = qwik.$(() => {
1099
+ if (!props.loading && !props.disabled) {
1100
+ inputType.value = inputType.value === "text" ? "password" : "text";
1101
+ }
1102
+ });
1103
+ const iconMap = {
1104
+ text: js.mdiText,
1105
+ pen: js.mdiPen,
1106
+ email: js.mdiEmail,
1107
+ user: js.mdiAccount,
1108
+ lock: js.mdiLock,
1109
+ key: js.mdiKey,
1110
+ earth: js.mdiEarth,
1111
+ tag: js.mdiTag,
1112
+ archive: js.mdiArchive,
1113
+ link: js.mdiLinkVariant,
1114
+ search: js.mdiMagnify
1115
+ };
1116
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", {
1117
+ class: [
1118
+ styles$j.wrapper,
1119
+ isFocused.value && styles$j.active
1120
+ ],
1121
+ style: {
1122
+ backgroundColor: props.disabled || props.loading ? "rgba(0,0,0,0.15)" : void 0,
1123
+ "--highlight-color": isFocused.value ? "#bfa056" : void 0
1124
+ },
1125
+ children: [
1126
+ /* @__PURE__ */ jsxRuntime.jsxs("div", {
1127
+ class: styles$j.header,
1128
+ children: [
1129
+ /* @__PURE__ */ jsxRuntime.jsxs("label", {
1130
+ for: id,
1131
+ class: styles$j.label,
1132
+ children: [
1133
+ /* @__PURE__ */ jsxRuntime.jsx("span", {
1134
+ children: props.label
1135
+ }),
1136
+ props.required && /* @__PURE__ */ jsxRuntime.jsx("span", {
1137
+ class: styles$j.requierd,
1138
+ children: "*"
1139
+ })
1140
+ ]
1141
+ }),
1142
+ props.maxLength != null && /* @__PURE__ */ jsxRuntime.jsx(ElmInlineText, {
1143
+ text: `${input2.value.length} / ${props.maxLength}`,
1144
+ color: input2.value.length > props.maxLength ? "#c56565" : "gray",
1145
+ size: "0.75rem"
1146
+ })
1147
+ ]
1148
+ }),
1149
+ /* @__PURE__ */ jsxRuntime.jsxs("div", {
1150
+ class: styles$j.body,
1151
+ children: [
1152
+ props.icon && /* @__PURE__ */ jsxRuntime.jsx(ElmMdiIcon, {
1153
+ d: iconMap[props.icon],
1154
+ size: "1.5rem",
1155
+ color: "gray"
1156
+ }),
1157
+ /* @__PURE__ */ jsxRuntime.jsx("input", {
1158
+ id,
1159
+ "bind:value": input2,
1160
+ type: inputType.value,
1161
+ class: styles$j.input,
1162
+ placeholder: props.placeholder,
1163
+ onFocus$: () => isFocused.value = true,
1164
+ onBlur$: () => isFocused.value = false,
1165
+ disabled: props.disabled || props.loading,
1166
+ style: {
1167
+ cursor: props.disabled ? "not-allowed" : props.loading ? "progress" : "auto"
1168
+ },
1169
+ "aria-required": props.required
1170
+ }),
1171
+ /* @__PURE__ */ jsxRuntime.jsxs("div", {
1172
+ class: styles$j["icon-box"],
1173
+ children: [
1174
+ /* @__PURE__ */ jsxRuntime.jsx("span", {
1175
+ class: styles$j.suffix,
1176
+ children: props.suffix != null && /* @__PURE__ */ jsxRuntime.jsx(ElmInlineText, {
1177
+ text: props.suffix
1178
+ })
1179
+ }),
1180
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
1181
+ class: styles$j.icon,
1182
+ onClick$: handleVisibleSwitch,
1183
+ children: /* @__PURE__ */ jsxRuntime.jsx(ElmMdiIcon, {
1184
+ d: inputType.value === "text" ? js.mdiEyeOutline : js.mdiEyeOffOutline,
1185
+ size: "1.75em",
1186
+ color: "gray"
1187
+ })
1188
+ }),
1189
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
1190
+ class: styles$j.icon,
1191
+ onClick$: handleDelete,
1192
+ children: /* @__PURE__ */ jsxRuntime.jsx(ElmMdiIcon, {
1193
+ d: js.mdiBackspaceOutline,
1194
+ size: "1.75em",
1195
+ color: "gray"
1196
+ })
1197
+ })
1198
+ ]
1199
+ })
1200
+ ]
1201
+ }),
1202
+ /* @__PURE__ */ jsxRuntime.jsx("div", {
1203
+ class: styles$j.loading,
1204
+ style: {
1205
+ opacity: props.loading ? 0.2 : 0
1206
+ }
1207
+ })
1208
+ ]
1209
+ });
1210
+ });
1064
1211
  const LOCAL_STORAGE_KEY = "elmethis-theme";
1065
1212
  function useElmethisTheme() {
1066
1213
  const isDarkTheme = qwik.useSignal(false);
@@ -2639,5 +2786,6 @@ exports.ElmTableBody = ElmTableBody;
2639
2786
  exports.ElmTableCell = ElmTableCell;
2640
2787
  exports.ElmTableHeader = ElmTableHeader;
2641
2788
  exports.ElmTableRow = ElmTableRow;
2789
+ exports.ElmTextField = ElmTextField;
2642
2790
  exports.ElmToggle = ElmToggle;
2643
2791
  exports.ElmToggleTheme = ElmToggleTheme;
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from "@builder.io/qwik/jsx-runtime";
2
- import { component$, Slot, useSignal, useTask$, $, useComputed$, useOnDocument, useVisibleTask$, useContextProvider, createContextId, useContext, Fragment as Fragment$1 } from "@builder.io/qwik";
3
- import { mdiCodeTags, mdiClipboardCheckMultipleOutline, mdiClipboardMultipleOutline, mdiChevronRight, mdiPlus, mdiMessageImageOutline, mdiFile, mdiDownload, mdiLinkVariant, mdiHome, mdiApplicationOutline, mdiFolderOpen, mdiFormatQuoteOpen, mdiFormatQuoteClose, mdiAlertOctagram, mdiAlert, mdiShieldAlert, mdiLightbulbOn, mdiInformation } from "@mdi/js";
2
+ import { component$, Slot, useSignal, useTask$, $, useComputed$, useId, useOnDocument, useVisibleTask$, useContextProvider, createContextId, useContext, Fragment as Fragment$1 } from "@builder.io/qwik";
3
+ import { mdiCodeTags, mdiClipboardCheckMultipleOutline, mdiClipboardMultipleOutline, mdiChevronRight, mdiPlus, mdiMagnify, mdiLinkVariant, mdiArchive, mdiTag, mdiEarth, mdiKey, mdiLock, mdiAccount, mdiEmail, mdiPen, mdiText, mdiEyeOutline, mdiEyeOffOutline, mdiBackspaceOutline, mdiMessageImageOutline, mdiFile, mdiDownload, mdiHome, mdiApplicationOutline, mdiFolderOpen, mdiFormatQuoteOpen, mdiFormatQuoteClose, mdiAlertOctagram, mdiAlert, mdiShieldAlert, mdiLightbulbOn, mdiInformation } from "@mdi/js";
4
4
  import { codeToHtml } from "shiki";
5
5
  import { renderToString } from "katex";
6
6
  import { kebabCase } from "lodash-es";
@@ -8,7 +8,7 @@ import { marked } from "marked";
8
8
  const caption$1 = "_caption_1j0ec_27";
9
9
  const divider = "_divider_1j0ec_50";
10
10
  const code$2 = "_code_1j0ec_1";
11
- const styles$t = {
11
+ const styles$u = {
12
12
  "code-block": "_code-block_1j0ec_1",
13
13
  "language-icon": "_language-icon_1j0ec_22",
14
14
  caption: caption$1,
@@ -68,7 +68,7 @@ const Typescript = component$(({ size = 24, ...props }) => {
68
68
  });
69
69
  });
70
70
  const path = "_path_1ccs2_1";
71
- const styles$s = {
71
+ const styles$t = {
72
72
  path
73
73
  };
74
74
  const Bash = component$(({ size = 24, ...props }) => {
@@ -84,7 +84,7 @@ const Bash = component$(({ size = 24, ...props }) => {
84
84
  d: "M4.24 4.24h119.53v119.53H4.24z"
85
85
  }),
86
86
  /* @__PURE__ */ jsx("path", {
87
- class: styles$s.path,
87
+ class: styles$t.path,
88
88
  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"
89
89
  }),
90
90
  /* @__PURE__ */ jsx("path", {
@@ -524,13 +524,13 @@ const C = component$(({ size = 24, ...props }) => {
524
524
  ]
525
525
  });
526
526
  });
527
- const icon$3 = "_icon_1gvln_1";
528
- const styles$r = {
529
- icon: icon$3
527
+ const icon$4 = "_icon_1gvln_1";
528
+ const styles$s = {
529
+ icon: icon$4
530
530
  };
531
531
  const ElmMdiIcon = component$(({ d, size = "1em", color, lightColor, darkColor }) => {
532
532
  return /* @__PURE__ */ jsx("svg", {
533
- class: styles$r.icon,
533
+ class: styles$s.icon,
534
534
  style: {
535
535
  "--color": lightColor ?? color,
536
536
  "--dark-color": darkColor ?? color
@@ -639,7 +639,7 @@ const text$3 = "_text_1gswr_1";
639
639
  const code$1 = "_code_1gswr_12";
640
640
  const kbd = "_kbd_1gswr_21";
641
641
  const link$1 = "_link_1gswr_47";
642
- const styles$q = {
642
+ const styles$r = {
643
643
  text: text$3,
644
644
  code: code$1,
645
645
  kbd,
@@ -649,17 +649,17 @@ const text$2 = "_text_zryur_1";
649
649
  const textStyles = {
650
650
  text: text$2
651
651
  };
652
- const icon$2 = "_icon_19g82_1";
653
- const styles$p = {
654
- icon: icon$2
652
+ const icon$3 = "_icon_19g82_1";
653
+ const styles$q = {
654
+ icon: icon$3
655
655
  };
656
656
  const ElmInlineIcon = component$(({ src, alt }) => {
657
657
  return /* @__PURE__ */ jsx("span", {
658
- class: styles$p.icon,
658
+ class: styles$q.icon,
659
659
  children: /* @__PURE__ */ jsx("img", {
660
660
  src,
661
661
  alt,
662
- class: styles$p.icon
662
+ class: styles$q.icon
663
663
  })
664
664
  });
665
665
  });
@@ -670,7 +670,7 @@ const ElmInlineText = component$((props) => {
670
670
  }) : /* @__PURE__ */ jsx(Slot, {});
671
671
  if (props.kbd) {
672
672
  vnode = /* @__PURE__ */ jsx("kbd", {
673
- class: styles$q.kbd,
673
+ class: styles$r.kbd,
674
674
  children: vnode
675
675
  });
676
676
  }
@@ -696,13 +696,13 @@ const ElmInlineText = component$((props) => {
696
696
  }
697
697
  if (code2) {
698
698
  vnode = /* @__PURE__ */ jsx("code", {
699
- class: styles$q.code,
699
+ class: styles$r.code,
700
700
  children: vnode
701
701
  });
702
702
  }
703
703
  if (props.ruby) {
704
704
  vnode = /* @__PURE__ */ jsxs("ruby", {
705
- class: styles$q.text,
705
+ class: styles$r.text,
706
706
  children: [
707
707
  /* @__PURE__ */ jsx("span", {
708
708
  children: vnode
@@ -715,7 +715,7 @@ const ElmInlineText = component$((props) => {
715
715
  }
716
716
  const wrappedVnode = /* @__PURE__ */ jsx("span", {
717
717
  class: [
718
- styles$q.text,
718
+ styles$r.text,
719
719
  textStyles.text
720
720
  ],
721
721
  style: {
@@ -727,7 +727,7 @@ const ElmInlineText = component$((props) => {
727
727
  });
728
728
  if (props.href) {
729
729
  return /* @__PURE__ */ jsxs("a", {
730
- class: styles$q.link,
730
+ class: styles$r.link,
731
731
  href: props.href,
732
732
  style: {
733
733
  "--font-size": size
@@ -745,7 +745,7 @@ const ElmInlineText = component$((props) => {
745
745
  return wrappedVnode;
746
746
  });
747
747
  const code = "_code_1sw1e_1";
748
- const styles$o = {
748
+ const styles$p = {
749
749
  code
750
750
  };
751
751
  const ElmShikiHighlighter = component$(({ code: code2, language = "txt" }) => {
@@ -770,7 +770,7 @@ const ElmShikiHighlighter = component$(({ code: code2, language = "txt" }) => {
770
770
  }
771
771
  });
772
772
  return /* @__PURE__ */ jsx("pre", {
773
- class: styles$o.code,
773
+ class: styles$p.code,
774
774
  dangerouslySetInnerHTML: rawHtml.value
775
775
  });
776
776
  });
@@ -789,19 +789,19 @@ const ElmCodeBlock = component$(({ code: code2, language = "txt", caption: capti
789
789
  }
790
790
  });
791
791
  return /* @__PURE__ */ jsxs("figure", {
792
- class: styles$t["code-block"],
792
+ class: styles$u["code-block"],
793
793
  style: {
794
794
  margin
795
795
  },
796
796
  children: [
797
797
  /* @__PURE__ */ jsx("span", {
798
- class: styles$t["language-icon"],
798
+ class: styles$u["language-icon"],
799
799
  children: /* @__PURE__ */ jsx(ElmLanguageIcon, {
800
800
  language
801
801
  })
802
802
  }),
803
803
  /* @__PURE__ */ jsx("span", {
804
- class: styles$t.caption,
804
+ class: styles$u.caption,
805
805
  children: /* @__PURE__ */ jsxs(ElmInlineText, {
806
806
  children: [
807
807
  caption2 || language,
@@ -810,7 +810,7 @@ const ElmCodeBlock = component$(({ code: code2, language = "txt", caption: capti
810
810
  })
811
811
  }),
812
812
  /* @__PURE__ */ jsx("div", {
813
- class: styles$t["copy-icon"],
813
+ class: styles$u["copy-icon"],
814
814
  onClick$: copyToClipboard,
815
815
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
816
816
  size: "1.25rem",
@@ -819,10 +819,10 @@ const ElmCodeBlock = component$(({ code: code2, language = "txt", caption: capti
819
819
  })
820
820
  }),
821
821
  /* @__PURE__ */ jsx("hr", {
822
- class: styles$t.divider
822
+ class: styles$u.divider
823
823
  }),
824
824
  /* @__PURE__ */ jsx("div", {
825
- class: styles$t.code,
825
+ class: styles$u.code,
826
826
  children: /* @__PURE__ */ jsx(ElmShikiHighlighter, {
827
827
  code: code2,
828
828
  language
@@ -842,7 +842,7 @@ const ElmKatex = component$(({ expression, block = false }) => {
842
842
  });
843
843
  });
844
844
  const parallax = "_parallax_1kb0k_1";
845
- const styles$n = {
845
+ const styles$o = {
846
846
  "parallax-watcher": "_parallax-watcher_1kb0k_1",
847
847
  parallax
848
848
  };
@@ -851,13 +851,13 @@ const ElmParallax = component$(({ images }) => {
851
851
  return /* @__PURE__ */ jsxs(Fragment, {
852
852
  children: [
853
853
  /* @__PURE__ */ jsx("div", {
854
- class: styles$n["parallax-watcher"],
854
+ class: styles$o["parallax-watcher"],
855
855
  "window:onScroll$": () => {
856
856
  y.value = window.scrollY;
857
857
  }
858
858
  }),
859
859
  images.map((image2, index) => /* @__PURE__ */ jsx("div", {
860
- class: styles$n.parallax,
860
+ class: styles$o.parallax,
861
861
  style: {
862
862
  backgroundImage: `url(${image2})`,
863
863
  transform: `scale(1.2) translateY(${y.value / (1e3 * (index + 1))}%)`,
@@ -871,7 +871,7 @@ const toggle = "_toggle_1nxqa_1";
871
871
  const summary = "_summary_1nxqa_14";
872
872
  const content$2 = "_content_1nxqa_60";
873
873
  const footer = "_footer_1nxqa_80";
874
- const styles$m = {
874
+ const styles$n = {
875
875
  toggle,
876
876
  "toggle-closed": "_toggle-closed_1nxqa_7",
877
877
  "toggle-open": "_toggle-open_1nxqa_10",
@@ -899,29 +899,29 @@ const ElmToggle = component$(({ summary: summary2 }) => {
899
899
  });
900
900
  return /* @__PURE__ */ jsxs("div", {
901
901
  class: [
902
- styles$m.toggle,
902
+ styles$n.toggle,
903
903
  {
904
- [styles$m["toggle-open"]]: isOpen.value,
905
- [styles$m["toggle-closed"]]: !isOpen.value
904
+ [styles$n["toggle-open"]]: isOpen.value,
905
+ [styles$n["toggle-closed"]]: !isOpen.value
906
906
  }
907
907
  ],
908
908
  children: [
909
909
  /* @__PURE__ */ jsxs("div", {
910
910
  class: [
911
- styles$m.summary,
911
+ styles$n.summary,
912
912
  {
913
- [styles$m["summary-open"]]: isOpen.value,
914
- [styles$m["summary-closed"]]: !isOpen.value
913
+ [styles$n["summary-open"]]: isOpen.value,
914
+ [styles$n["summary-closed"]]: !isOpen.value
915
915
  }
916
916
  ],
917
917
  onClick$: toggle2,
918
918
  children: [
919
919
  /* @__PURE__ */ jsx("span", {
920
920
  class: [
921
- styles$m["chevron-icon"],
921
+ styles$n["chevron-icon"],
922
922
  {
923
- [styles$m["chevron-icon-open"]]: isOpen.value,
924
- [styles$m["chevron-icon-closed"]]: !isOpen.value
923
+ [styles$n["chevron-icon-open"]]: isOpen.value,
924
+ [styles$n["chevron-icon-closed"]]: !isOpen.value
925
925
  }
926
926
  ],
927
927
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
@@ -929,17 +929,17 @@ const ElmToggle = component$(({ summary: summary2 }) => {
929
929
  })
930
930
  }),
931
931
  /* @__PURE__ */ jsx("span", {
932
- class: styles$m["summary-text"],
932
+ class: styles$n["summary-text"],
933
933
  children: summary2 ? summary2 : /* @__PURE__ */ jsx(Slot, {
934
934
  name: "summary"
935
935
  })
936
936
  }),
937
937
  /* @__PURE__ */ jsx("span", {
938
938
  class: [
939
- styles$m["plus-icon"],
939
+ styles$n["plus-icon"],
940
940
  {
941
- [styles$m["plus-icon-open"]]: isOpen.value,
942
- [styles$m["plus-icon-closed"]]: !isOpen.value
941
+ [styles$n["plus-icon-open"]]: isOpen.value,
942
+ [styles$n["plus-icon-closed"]]: !isOpen.value
943
943
  }
944
944
  ],
945
945
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
@@ -952,30 +952,30 @@ const ElmToggle = component$(({ summary: summary2 }) => {
952
952
  }),
953
953
  /* @__PURE__ */ jsx("div", {
954
954
  class: [
955
- styles$m.content,
955
+ styles$n.content,
956
956
  {
957
- [styles$m["content-open"]]: isOpen.value,
958
- [styles$m["content-closed"]]: !isOpen.value
957
+ [styles$n["content-open"]]: isOpen.value,
958
+ [styles$n["content-closed"]]: !isOpen.value
959
959
  }
960
960
  ],
961
961
  children: /* @__PURE__ */ jsx(Slot, {})
962
962
  }),
963
963
  /* @__PURE__ */ jsxs("div", {
964
- class: styles$m.footer,
964
+ class: styles$n.footer,
965
965
  onClick$: toggle2,
966
966
  children: [
967
967
  /* @__PURE__ */ jsx("span", {
968
- class: styles$m["footer-chevron-icon"],
968
+ class: styles$n["footer-chevron-icon"],
969
969
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
970
970
  d: mdiChevronRight,
971
971
  color: "gray"
972
972
  })
973
973
  }),
974
974
  /* @__PURE__ */ jsx("hr", {
975
- class: styles$m["footer-line"]
975
+ class: styles$n["footer-line"]
976
976
  }),
977
977
  /* @__PURE__ */ jsx("span", {
978
- class: styles$m["footer-cross-icon"],
978
+ class: styles$n["footer-cross-icon"],
979
979
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
980
980
  d: mdiPlus,
981
981
  color: "#c56565"
@@ -985,17 +985,17 @@ const ElmToggle = component$(({ summary: summary2 }) => {
985
985
  children: "CLOSE"
986
986
  }),
987
987
  /* @__PURE__ */ jsx("span", {
988
- class: styles$m["footer-cross-icon"],
988
+ class: styles$n["footer-cross-icon"],
989
989
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
990
990
  d: mdiPlus,
991
991
  color: "#c56565"
992
992
  })
993
993
  }),
994
994
  /* @__PURE__ */ jsx("hr", {
995
- class: styles$m["footer-line"]
995
+ class: styles$n["footer-line"]
996
996
  }),
997
997
  /* @__PURE__ */ jsx("span", {
998
- class: styles$m["footer-chevron-icon"],
998
+ class: styles$n["footer-chevron-icon"],
999
999
  children: /* @__PURE__ */ jsx(ElmMdiIcon, {
1000
1000
  d: mdiChevronRight,
1001
1001
  color: "gray"
@@ -1006,50 +1006,50 @@ const ElmToggle = component$(({ summary: summary2 }) => {
1006
1006
  ]
1007
1007
  });
1008
1008
  });
1009
- const styles$l = {
1009
+ const styles$m = {
1010
1010
  "block-fallback": "_block-fallback_rt986_1"
1011
1011
  };
1012
- const wrapper$1 = "_wrapper_1yktj_12";
1012
+ const wrapper$2 = "_wrapper_1yktj_12";
1013
1013
  const dot = "_dot_1yktj_22";
1014
- const styles$k = {
1015
- wrapper: wrapper$1,
1014
+ const styles$l = {
1015
+ wrapper: wrapper$2,
1016
1016
  dot
1017
1017
  };
1018
1018
  const ElmDotLoadingIcon = component$(({ size = "4em", color = "#606875" }) => {
1019
1019
  return /* @__PURE__ */ jsxs("div", {
1020
- class: styles$k.wrapper,
1020
+ class: styles$l.wrapper,
1021
1021
  style: {
1022
1022
  "--size": size,
1023
1023
  "--color": color
1024
1024
  },
1025
1025
  children: [
1026
1026
  /* @__PURE__ */ jsx("div", {
1027
- class: styles$k.dot,
1027
+ class: styles$l.dot,
1028
1028
  "aria-hidden": "true"
1029
1029
  }),
1030
1030
  /* @__PURE__ */ jsx("div", {
1031
- class: styles$k.dot,
1031
+ class: styles$l.dot,
1032
1032
  "aria-hidden": "true"
1033
1033
  }),
1034
1034
  /* @__PURE__ */ jsx("div", {
1035
- class: styles$k.dot,
1035
+ class: styles$l.dot,
1036
1036
  "aria-hidden": "true"
1037
1037
  })
1038
1038
  ]
1039
1039
  });
1040
1040
  });
1041
- const styles$j = {
1041
+ const styles$k = {
1042
1042
  "rectangle-wave": "_rectangle-wave_hej9g_17"
1043
1043
  };
1044
1044
  const ElmRectangleWave = component$(() => {
1045
1045
  return /* @__PURE__ */ jsx("div", {
1046
1046
  "aria-hidden": "true",
1047
- class: styles$j["rectangle-wave"]
1047
+ class: styles$k["rectangle-wave"]
1048
1048
  });
1049
1049
  });
1050
1050
  const ElmBlockFallback = component$(({ height = "16rem" }) => {
1051
1051
  return /* @__PURE__ */ jsxs("div", {
1052
- class: styles$l["block-fallback"],
1052
+ class: styles$m["block-fallback"],
1053
1053
  style: {
1054
1054
  "--height": height
1055
1055
  },
@@ -1059,6 +1059,153 @@ const ElmBlockFallback = component$(({ height = "16rem" }) => {
1059
1059
  ]
1060
1060
  });
1061
1061
  });
1062
+ const loading = "_loading_1yj0v_19";
1063
+ const wrapper$1 = "_wrapper_1yj0v_33";
1064
+ const active = "_active_1yj0v_55";
1065
+ const header$1 = "_header_1yj0v_59";
1066
+ const label = "_label_1yj0v_67";
1067
+ const requierd = "_requierd_1yj0v_82";
1068
+ const body$1 = "_body_1yj0v_88";
1069
+ const input = "_input_1yj0v_109";
1070
+ const icon$2 = "_icon_1yj0v_136";
1071
+ const suffix = "_suffix_1yj0v_153";
1072
+ const styles$j = {
1073
+ loading,
1074
+ wrapper: wrapper$1,
1075
+ active,
1076
+ header: header$1,
1077
+ label,
1078
+ requierd,
1079
+ body: body$1,
1080
+ input,
1081
+ "icon-box": "_icon-box_1yj0v_136",
1082
+ icon: icon$2,
1083
+ suffix
1084
+ };
1085
+ const ElmTextField = component$((props) => {
1086
+ const id = useId();
1087
+ const isFocused = useSignal(false);
1088
+ const inputType = useSignal(props.isPassword ? "password" : "text");
1089
+ const internalValue = useSignal("");
1090
+ const input2 = props.value ?? internalValue;
1091
+ const handleDelete = $(() => {
1092
+ if (!props.loading && !props.disabled) {
1093
+ input2.value = "";
1094
+ }
1095
+ });
1096
+ const handleVisibleSwitch = $(() => {
1097
+ if (!props.loading && !props.disabled) {
1098
+ inputType.value = inputType.value === "text" ? "password" : "text";
1099
+ }
1100
+ });
1101
+ const iconMap = {
1102
+ text: mdiText,
1103
+ pen: mdiPen,
1104
+ email: mdiEmail,
1105
+ user: mdiAccount,
1106
+ lock: mdiLock,
1107
+ key: mdiKey,
1108
+ earth: mdiEarth,
1109
+ tag: mdiTag,
1110
+ archive: mdiArchive,
1111
+ link: mdiLinkVariant,
1112
+ search: mdiMagnify
1113
+ };
1114
+ return /* @__PURE__ */ jsxs("div", {
1115
+ class: [
1116
+ styles$j.wrapper,
1117
+ isFocused.value && styles$j.active
1118
+ ],
1119
+ style: {
1120
+ backgroundColor: props.disabled || props.loading ? "rgba(0,0,0,0.15)" : void 0,
1121
+ "--highlight-color": isFocused.value ? "#bfa056" : void 0
1122
+ },
1123
+ children: [
1124
+ /* @__PURE__ */ jsxs("div", {
1125
+ class: styles$j.header,
1126
+ children: [
1127
+ /* @__PURE__ */ jsxs("label", {
1128
+ for: id,
1129
+ class: styles$j.label,
1130
+ children: [
1131
+ /* @__PURE__ */ jsx("span", {
1132
+ children: props.label
1133
+ }),
1134
+ props.required && /* @__PURE__ */ jsx("span", {
1135
+ class: styles$j.requierd,
1136
+ children: "*"
1137
+ })
1138
+ ]
1139
+ }),
1140
+ props.maxLength != null && /* @__PURE__ */ jsx(ElmInlineText, {
1141
+ text: `${input2.value.length} / ${props.maxLength}`,
1142
+ color: input2.value.length > props.maxLength ? "#c56565" : "gray",
1143
+ size: "0.75rem"
1144
+ })
1145
+ ]
1146
+ }),
1147
+ /* @__PURE__ */ jsxs("div", {
1148
+ class: styles$j.body,
1149
+ children: [
1150
+ props.icon && /* @__PURE__ */ jsx(ElmMdiIcon, {
1151
+ d: iconMap[props.icon],
1152
+ size: "1.5rem",
1153
+ color: "gray"
1154
+ }),
1155
+ /* @__PURE__ */ jsx("input", {
1156
+ id,
1157
+ "bind:value": input2,
1158
+ type: inputType.value,
1159
+ class: styles$j.input,
1160
+ placeholder: props.placeholder,
1161
+ onFocus$: () => isFocused.value = true,
1162
+ onBlur$: () => isFocused.value = false,
1163
+ disabled: props.disabled || props.loading,
1164
+ style: {
1165
+ cursor: props.disabled ? "not-allowed" : props.loading ? "progress" : "auto"
1166
+ },
1167
+ "aria-required": props.required
1168
+ }),
1169
+ /* @__PURE__ */ jsxs("div", {
1170
+ class: styles$j["icon-box"],
1171
+ children: [
1172
+ /* @__PURE__ */ jsx("span", {
1173
+ class: styles$j.suffix,
1174
+ children: props.suffix != null && /* @__PURE__ */ jsx(ElmInlineText, {
1175
+ text: props.suffix
1176
+ })
1177
+ }),
1178
+ /* @__PURE__ */ jsx("div", {
1179
+ class: styles$j.icon,
1180
+ onClick$: handleVisibleSwitch,
1181
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
1182
+ d: inputType.value === "text" ? mdiEyeOutline : mdiEyeOffOutline,
1183
+ size: "1.75em",
1184
+ color: "gray"
1185
+ })
1186
+ }),
1187
+ /* @__PURE__ */ jsx("div", {
1188
+ class: styles$j.icon,
1189
+ onClick$: handleDelete,
1190
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
1191
+ d: mdiBackspaceOutline,
1192
+ size: "1.75em",
1193
+ color: "gray"
1194
+ })
1195
+ })
1196
+ ]
1197
+ })
1198
+ ]
1199
+ }),
1200
+ /* @__PURE__ */ jsx("div", {
1201
+ class: styles$j.loading,
1202
+ style: {
1203
+ opacity: props.loading ? 0.2 : 0
1204
+ }
1205
+ })
1206
+ ]
1207
+ });
1208
+ });
1062
1209
  const LOCAL_STORAGE_KEY = "elmethis-theme";
1063
1210
  function useElmethisTheme() {
1064
1211
  const isDarkTheme = useSignal(false);
@@ -2638,6 +2785,7 @@ export {
2638
2785
  ElmTableCell,
2639
2786
  ElmTableHeader,
2640
2787
  ElmTableRow,
2788
+ ElmTextField,
2641
2789
  ElmToggle,
2642
2790
  ElmToggleTheme
2643
2791
  };
package/lib/style.css CHANGED
@@ -434,6 +434,167 @@
434
434
  }
435
435
  [data-theme=dark] ._rectangle-wave_hej9g_17 {
436
436
  border-color: rgba(255, 255, 255, 0.7);
437
+ }@keyframes _loading_1yj0v_19 {
438
+ 0% {
439
+ transform-origin: 0%;
440
+ transform: scaleX(0);
441
+ }
442
+ 40% {
443
+ transform-origin: 0%;
444
+ transform: scaleX(1);
445
+ }
446
+ 60% {
447
+ transform-origin: 100%;
448
+ transform: scaleX(1);
449
+ }
450
+ 100% {
451
+ transform-origin: 100%;
452
+ transform: scaleX(0);
453
+ }
454
+ }
455
+ ._loading_1yj0v_19 {
456
+ position: absolute;
457
+ width: 100%;
458
+ height: 100%;
459
+ top: 0;
460
+ left: 0;
461
+ background-color: #6987b8;
462
+ transition: opacity 200ms;
463
+ pointer-events: none;
464
+ animation-name: _loading_1yj0v_19;
465
+ animation-iteration-count: infinite;
466
+ animation-duration: 1600ms;
467
+ }
468
+
469
+ ._wrapper_1yj0v_33 {
470
+ overflow: hidden;
471
+ position: relative;
472
+ box-sizing: border-box;
473
+ width: 100%;
474
+ padding: 0.25rem;
475
+ border-radius: 0.25rem;
476
+ display: flex;
477
+ flex-direction: column;
478
+ justify-content: space-between;
479
+ transition: border-color 200ms, background-color 200ms;
480
+ border-style: solid;
481
+ border-width: 1px;
482
+ border-color: transparent;
483
+ background-color: rgba(255, 255, 255, 0.8);
484
+ box-shadow: 0 0 0.125rem rgba(0, 0, 0, 0.15);
485
+ }
486
+ [data-theme=dark] ._wrapper_1yj0v_33 {
487
+ background-color: rgba(255, 255, 255, 0.15);
488
+ box-shadow: 0 0 0.125rem rgba(0, 0, 0, 0.75);
489
+ }
490
+
491
+ ._active_1yj0v_55 {
492
+ border-color: var(--highlight-color);
493
+ }
494
+
495
+ ._header_1yj0v_59 {
496
+ box-sizing: border-box;
497
+ height: 0.75rem;
498
+ padding: 0 0.25rem;
499
+ display: flex;
500
+ justify-content: space-between;
501
+ }
502
+
503
+ ._label_1yj0v_67 {
504
+ display: inline;
505
+ margin: 0;
506
+ padding: 0;
507
+ font-size: 0.75rem;
508
+ line-height: 0.75rem;
509
+ height: 0.75rem;
510
+ vertical-align: top;
511
+ transition: color 200ms;
512
+ color: var(--highlight-color, rgba(0, 0, 0, 0.65));
513
+ }
514
+ [data-theme=dark] ._label_1yj0v_67 {
515
+ color: var(--highlight-color, rgba(255, 255, 255, 0.65));
516
+ }
517
+
518
+ ._requierd_1yj0v_82 {
519
+ padding-inline: 0.25rem;
520
+ color: #c56565;
521
+ font-weight: bold;
522
+ }
523
+
524
+ ._body_1yj0v_88 {
525
+ display: flex;
526
+ justify-content: space-between;
527
+ align-items: center;
528
+ padding-right: 0.25rem;
529
+ padding-left: 0.25rem;
530
+ }
531
+
532
+ ._left-icon_1yj0v_96 {
533
+ margin: auto 0.25rem;
534
+ width: 24px;
535
+ height: 24px;
536
+ display: flex;
537
+ justify-content: center;
538
+ align-items: center;
539
+ opacity: 0.7;
540
+ }
541
+ [data-theme=dark] ._left-icon_1yj0v_96 {
542
+ filter: invert(1);
543
+ }
544
+
545
+ ._input_1yj0v_109 {
546
+ all: unset;
547
+ box-sizing: border-box;
548
+ padding: 0.5rem;
549
+ width: 100%;
550
+ color: rgba(0, 0, 0, 0.7);
551
+ caret-color: rgba(0, 0, 0, 0.7);
552
+ }
553
+ ._input_1yj0v_109::placeholder {
554
+ opacity: 0.5;
555
+ }
556
+ [data-theme=dark] ._input_1yj0v_109::placeholder {
557
+ opacity: 0.7;
558
+ }
559
+ ._input_1yj0v_109::selection {
560
+ background-color: rgba(0, 0, 0, 0.7);
561
+ color: rgba(255, 255, 255, 0.7);
562
+ }
563
+ [data-theme=dark] ._input_1yj0v_109 {
564
+ color: rgba(255, 255, 255, 0.7);
565
+ caret-color: rgba(255, 255, 255, 0.7);
566
+ }
567
+ [data-theme=dark] ._input_1yj0v_109::selection {
568
+ background-color: rgba(255, 255, 255, 0.7);
569
+ color: rgba(0, 0, 0, 0.7);
570
+ }
571
+
572
+ ._icon-box_1yj0v_136 {
573
+ display: flex;
574
+ justify-content: space-between;
575
+ align-items: center;
576
+ }
577
+
578
+ ._icon_1yj0v_136 {
579
+ box-sizing: border-box;
580
+ border-radius: 0.125em;
581
+ padding: 0.25rem;
582
+ transition: background-color 200ms;
583
+ cursor: pointer;
584
+ }
585
+ ._icon_1yj0v_136:hover {
586
+ background-color: rgba(128, 128, 128, 0.2);
587
+ }
588
+
589
+ ._suffix_1yj0v_153 {
590
+ opacity: 0.6;
591
+ padding: 0 0.5rem;
592
+ user-select: none;
593
+ transition: color 200ms;
594
+ color: rgba(0, 0, 0, 0.65);
595
+ }
596
+ [data-theme=dark] ._suffix_1yj0v_153 {
597
+ color: rgba(255, 255, 255, 0.65);
437
598
  }._icon_1husg_1 {
438
599
  display: block;
439
600
  box-sizing: border-box;
@@ -0,0 +1,14 @@
1
+ import { type Signal } from "@builder.io/qwik";
2
+ export interface ElmTextFieldProps {
3
+ label: string;
4
+ maxLength?: number;
5
+ suffix?: string;
6
+ placeholder?: string;
7
+ disabled?: boolean;
8
+ loading?: boolean;
9
+ value?: Signal<string>;
10
+ icon?: "text" | "pen" | "email" | "user" | "lock" | "key" | "earth" | "tag" | "archive" | "link" | "search";
11
+ isPassword?: boolean;
12
+ required?: boolean;
13
+ }
14
+ export declare const ElmTextField: import("@builder.io/qwik").Component<ElmTextFieldProps>;
@@ -0,0 +1,10 @@
1
+ import type { Meta, StoryObj } from "storybook-framework-qwik";
2
+ import { ElmTextField } from "./elm-text-field";
3
+ declare const meta: Meta<typeof ElmTextField>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof meta>;
6
+ export declare const Primary: Story;
7
+ export declare const WithIcon: Story;
8
+ export declare const Password: Story;
9
+ export declare const MaxLength: Story;
10
+ export declare const Loading: Story;
@@ -5,6 +5,7 @@ export { ElmParallax, type ElmParallaxProps, } from "./components/containments/e
5
5
  export { ElmToggle, type ElmToggleProps, } from "./components/containments/elm-toggle";
6
6
  export { ElmBlockFallback, type ElmBlockFallbackProps, } from "./components/fallback/elm-block-fallback";
7
7
  export { ElmRectangleWave, type ElmRectangleWaveProps, } from "./components/fallback/elm-rectangle-wave";
8
+ export { ElmTextField, type ElmTextFieldProps, } from "./components/form/elm-text-field";
8
9
  export { ElmDotLoadingIcon, type ElmDotLoadingIconProps, } from "./components/icon/elm-dot-loading-icon";
9
10
  export { ElmInlineIcon, type ElmInlineIconProps, } from "./components/icon/elm-inline-icon";
10
11
  export { ElmLanguageIcon, type ElmLanguageIconProps, } from "./components/icon/elm-language-icon";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elmethis/qwik",
3
- "version": "0.0.21",
3
+ "version": "0.0.22",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },