@elmethis/qwik 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/lib/index.qwik.cjs +1678 -0
  2. package/lib/index.qwik.mjs +1678 -0
  3. package/lib/shikiInstance-BxkUyfqr.cjs +79 -0
  4. package/{src/components/code/shikiInstance.ts → lib/shikiInstance-igs7t2fe.js} +11 -8
  5. package/lib-types/components/code/elm-code-block.d.ts +21 -0
  6. package/lib-types/components/code/elm-code-block.stories.d.ts +9 -0
  7. package/lib-types/components/code/elm-katex.d.ts +15 -0
  8. package/lib-types/components/code/elm-katex.stories.d.ts +8 -0
  9. package/lib-types/components/code/elm-shiki-highlighter.d.ts +11 -0
  10. package/lib-types/components/code/elm-shiki-highlighter.stories.d.ts +6 -0
  11. package/lib-types/components/code/shikiInstance.d.ts +2 -0
  12. package/lib-types/components/containments/elm-toggle.d.ts +7 -0
  13. package/lib-types/components/containments/elm-toggle.stories.d.ts +6 -0
  14. package/lib-types/components/fallback/elm-block-fallback.d.ts +5 -0
  15. package/lib-types/components/fallback/elm-block-fallback.stories.d.ts +6 -0
  16. package/lib-types/components/fallback/elm-rectangle-wave.d.ts +4 -0
  17. package/lib-types/components/fallback/elm-rectangle-wave.stories.d.ts +6 -0
  18. package/lib-types/components/icon/elm-dot-loading-icon.d.ts +14 -0
  19. package/lib-types/components/icon/elm-dot-loading-icon.stories.d.ts +6 -0
  20. package/lib-types/components/icon/elm-inline-icon.d.ts +11 -0
  21. package/lib-types/components/icon/elm-inline-icon.stories.d.ts +6 -0
  22. package/lib-types/components/icon/elm-language-icon.d.ts +14 -0
  23. package/lib-types/components/icon/elm-language-icon.stories.d.ts +6 -0
  24. package/lib-types/components/icon/elm-mdi-icon.d.ts +8 -0
  25. package/lib-types/components/icon/elm-mdi-icon.stories.d.ts +6 -0
  26. package/lib-types/components/icon/languages/bash.d.ts +2 -0
  27. package/lib-types/components/icon/languages/c-plus-plus.d.ts +2 -0
  28. package/lib-types/components/icon/languages/c-sharp.d.ts +2 -0
  29. package/lib-types/components/icon/languages/c.d.ts +2 -0
  30. package/lib-types/components/icon/languages/css.d.ts +2 -0
  31. package/lib-types/components/icon/languages/go.d.ts +2 -0
  32. package/lib-types/components/icon/languages/html.d.ts +2 -0
  33. package/lib-types/components/icon/languages/java.d.ts +2 -0
  34. package/lib-types/components/icon/languages/javascript.d.ts +2 -0
  35. package/lib-types/components/icon/languages/json.d.ts +2 -0
  36. package/lib-types/components/icon/languages/kotlin.d.ts +2 -0
  37. package/lib-types/components/icon/languages/language-interface.d.ts +4 -0
  38. package/lib-types/components/icon/languages/lua.d.ts +2 -0
  39. package/lib-types/components/icon/languages/npm.d.ts +2 -0
  40. package/lib-types/components/icon/languages/python.d.ts +2 -0
  41. package/lib-types/components/icon/languages/rust.d.ts +2 -0
  42. package/lib-types/components/icon/languages/sql.d.ts +2 -0
  43. package/lib-types/components/icon/languages/terraform.d.ts +2 -0
  44. package/lib-types/components/icon/languages/typescript.d.ts +2 -0
  45. package/lib-types/components/media/elm-block-image.d.ts +16 -0
  46. package/lib-types/components/media/elm-block-image.stories.d.ts +12 -0
  47. package/lib-types/components/media/elm-file.d.ts +15 -0
  48. package/lib-types/components/media/elm-file.stories.d.ts +7 -0
  49. package/lib-types/components/navigation/elm-bookmark.d.ts +24 -0
  50. package/lib-types/components/navigation/elm-bookmark.stories.d.ts +12 -0
  51. package/lib-types/components/others/elm-jarkup.d.ts +5 -0
  52. package/lib-types/components/others/elm-jarkup.stories.d.ts +6 -0
  53. package/lib-types/components/table/elm-table-body.d.ts +2 -0
  54. package/lib-types/components/table/elm-table-cell.d.ts +12 -0
  55. package/lib-types/components/table/elm-table-header.d.ts +3 -0
  56. package/lib-types/components/table/elm-table-row.d.ts +2 -0
  57. package/lib-types/components/table/elm-table.d.ts +13 -0
  58. package/lib-types/components/table/elm-table.stories.d.ts +6 -0
  59. package/lib-types/components/typography/elm-block-quote.d.ts +4 -0
  60. package/lib-types/components/typography/elm-block-quote.stories.d.ts +6 -0
  61. package/lib-types/components/typography/elm-callout.d.ts +8 -0
  62. package/lib-types/components/typography/elm-callout.stories.d.ts +10 -0
  63. package/lib-types/components/typography/elm-divider.d.ts +8 -0
  64. package/lib-types/components/typography/elm-divider.stories.d.ts +6 -0
  65. package/lib-types/components/typography/elm-fragment-identifier.d.ts +7 -0
  66. package/lib-types/components/typography/elm-fragment-identifier.stories.d.ts +6 -0
  67. package/lib-types/components/typography/elm-heading.d.ts +6 -0
  68. package/lib-types/components/typography/elm-heading.stories.d.ts +7 -0
  69. package/lib-types/components/typography/elm-inline-text.d.ts +54 -0
  70. package/lib-types/components/typography/elm-inline-text.stories.d.ts +13 -0
  71. package/lib-types/components/typography/elm-list.d.ts +4 -0
  72. package/lib-types/components/typography/elm-list.stories.d.ts +8 -0
  73. package/lib-types/components/typography/elm-paragraph.d.ts +5 -0
  74. package/lib-types/components/typography/elm-paragraph.stories.d.ts +9 -0
  75. package/lib-types/entry.dev.d.ts +2 -0
  76. package/{src/entry.ssr.tsx → lib-types/entry.ssr.d.ts} +2 -9
  77. package/lib-types/hooks/useDelayedSignal.d.ts +6 -0
  78. package/lib-types/hooks/useInView.d.ts +6 -0
  79. package/lib-types/index.d.ts +27 -0
  80. package/lib-types/root.d.ts +2 -0
  81. package/package.json +5 -1
  82. package/.prettierignore +0 -6
  83. package/.storybook/main.ts +0 -23
  84. package/.storybook/preview-head.html +0 -4
  85. package/.storybook/preview.tsx +0 -51
  86. package/.storybook/sb.scss +0 -13
  87. package/.storybook/tsconfig.json +0 -24
  88. package/eslint.config.js +0 -79
  89. package/src/assets/bg1.webp +0 -0
  90. package/src/assets/bg2.webp +0 -0
  91. package/src/assets/images/2.svg +0 -4
  92. package/src/assets/images/lamdscape.svg +0 -4
  93. package/src/assets/images/portrait.svg +0 -4
  94. package/src/assets/images/square.svg +0 -4
  95. package/src/assets/vite.svg +0 -1
  96. package/src/assets/vue.svg +0 -1
  97. package/src/components/code/elm-code-block.module.scss +0 -67
  98. package/src/components/code/elm-code-block.stories.tsx +0 -44
  99. package/src/components/code/elm-code-block.tsx +0 -95
  100. package/src/components/code/elm-katex.stories.tsx +0 -28
  101. package/src/components/code/elm-katex.tsx +0 -34
  102. package/src/components/code/elm-shiki-highlighter.global.scss +0 -18
  103. package/src/components/code/elm-shiki-highlighter.stories.tsx +0 -21
  104. package/src/components/code/elm-shiki-highlighter.tsx +0 -44
  105. package/src/components/code/seed/main.rs +0 -24
  106. package/src/components/containments/elm-toggle.module.scss +0 -132
  107. package/src/components/containments/elm-toggle.stories.tsx +0 -34
  108. package/src/components/containments/elm-toggle.tsx +0 -106
  109. package/src/components/fallback/elm-block-fallback.module.scss +0 -8
  110. package/src/components/fallback/elm-block-fallback.stories.tsx +0 -14
  111. package/src/components/fallback/elm-block-fallback.tsx +0 -20
  112. package/src/components/fallback/elm-rectangle-wave.module.scss +0 -42
  113. package/src/components/fallback/elm-rectangle-wave.stories.tsx +0 -28
  114. package/src/components/fallback/elm-rectangle-wave.tsx +0 -11
  115. package/src/components/icon/elm-dot-loading-icon.module.scss +0 -53
  116. package/src/components/icon/elm-dot-loading-icon.stories.tsx +0 -15
  117. package/src/components/icon/elm-dot-loading-icon.tsx +0 -35
  118. package/src/components/icon/elm-inline-icon.module.scss +0 -21
  119. package/src/components/icon/elm-inline-icon.stories.tsx +0 -16
  120. package/src/components/icon/elm-inline-icon.tsx +0 -25
  121. package/src/components/icon/elm-language-icon.stories.tsx +0 -22
  122. package/src/components/icon/elm-language-icon.tsx +0 -167
  123. package/src/components/icon/elm-mdi-icon.module.scss +0 -8
  124. package/src/components/icon/elm-mdi-icon.stories.tsx +0 -25
  125. package/src/components/icon/elm-mdi-icon.tsx +0 -34
  126. package/src/components/icon/languages/bash.module.scss +0 -6
  127. package/src/components/icon/languages/bash.tsx +0 -27
  128. package/src/components/icon/languages/c-plus-plus.tsx +0 -33
  129. package/src/components/icon/languages/c-sharp.tsx +0 -29
  130. package/src/components/icon/languages/c.tsx +0 -27
  131. package/src/components/icon/languages/css.tsx +0 -21
  132. package/src/components/icon/languages/go.tsx +0 -22
  133. package/src/components/icon/languages/html.tsx +0 -30
  134. package/src/components/icon/languages/java.tsx +0 -37
  135. package/src/components/icon/languages/javascript.tsx +0 -22
  136. package/src/components/icon/languages/json.tsx +0 -53
  137. package/src/components/icon/languages/kotlin.tsx +0 -36
  138. package/src/components/icon/languages/language-interface.ts +0 -4
  139. package/src/components/icon/languages/lua.tsx +0 -29
  140. package/src/components/icon/languages/npm.tsx +0 -25
  141. package/src/components/icon/languages/python.tsx +0 -67
  142. package/src/components/icon/languages/rust.tsx +0 -19
  143. package/src/components/icon/languages/sql.tsx +0 -21
  144. package/src/components/icon/languages/terraform.tsx +0 -31
  145. package/src/components/icon/languages/typescript.tsx +0 -22
  146. package/src/components/media/elm-block-image.module.scss +0 -68
  147. package/src/components/media/elm-block-image.stories.tsx +0 -79
  148. package/src/components/media/elm-block-image.tsx +0 -110
  149. package/src/components/media/elm-file.module.scss +0 -43
  150. package/src/components/media/elm-file.stories.tsx +0 -27
  151. package/src/components/media/elm-file.tsx +0 -75
  152. package/src/components/navigation/elm-bookmark.module.scss +0 -100
  153. package/src/components/navigation/elm-bookmark.stories.tsx +0 -87
  154. package/src/components/navigation/elm-bookmark.tsx +0 -72
  155. package/src/components/others/elm-jarkup.module.scss +0 -26
  156. package/src/components/others/elm-jarkup.stories.tsx +0 -18
  157. package/src/components/others/elm-jarkup.tsx +0 -267
  158. package/src/components/table/elm-table-body.tsx +0 -14
  159. package/src/components/table/elm-table-cell.module.scss +0 -41
  160. package/src/components/table/elm-table-cell.tsx +0 -33
  161. package/src/components/table/elm-table-header.module.scss +0 -8
  162. package/src/components/table/elm-table-header.tsx +0 -21
  163. package/src/components/table/elm-table-row.module.scss +0 -28
  164. package/src/components/table/elm-table-row.tsx +0 -15
  165. package/src/components/table/elm-table.module.scss +0 -29
  166. package/src/components/table/elm-table.stories.tsx +0 -67
  167. package/src/components/table/elm-table.tsx +0 -63
  168. package/src/components/typography/elm-block-quote.module.scss +0 -29
  169. package/src/components/typography/elm-block-quote.stories.tsx +0 -22
  170. package/src/components/typography/elm-block-quote.tsx +0 -34
  171. package/src/components/typography/elm-callout.module.scss +0 -36
  172. package/src/components/typography/elm-callout.stories.tsx +0 -47
  173. package/src/components/typography/elm-callout.tsx +0 -52
  174. package/src/components/typography/elm-divider.module.scss +0 -6
  175. package/src/components/typography/elm-divider.stories.tsx +0 -14
  176. package/src/components/typography/elm-divider.tsx +0 -14
  177. package/src/components/typography/elm-fragment-identifier.module.scss +0 -28
  178. package/src/components/typography/elm-fragment-identifier.stories.tsx +0 -14
  179. package/src/components/typography/elm-fragment-identifier.tsx +0 -31
  180. package/src/components/typography/elm-heading.module.scss +0 -120
  181. package/src/components/typography/elm-heading.stories.tsx +0 -42
  182. package/src/components/typography/elm-heading.tsx +0 -40
  183. package/src/components/typography/elm-inline-text.module.scss +0 -114
  184. package/src/components/typography/elm-inline-text.stories.tsx +0 -70
  185. package/src/components/typography/elm-inline-text.tsx +0 -147
  186. package/src/components/typography/elm-list.global.scss +0 -66
  187. package/src/components/typography/elm-list.stories.tsx +0 -61
  188. package/src/components/typography/elm-list.tsx +0 -39
  189. package/src/components/typography/elm-paragraph.module.scss +0 -21
  190. package/src/components/typography/elm-paragraph.stories.tsx +0 -47
  191. package/src/components/typography/elm-paragraph.tsx +0 -31
  192. package/src/entry.dev.tsx +0 -17
  193. package/src/global.d.ts +0 -13
  194. package/src/hooks/useDelayedSignal.ts +0 -27
  195. package/src/hooks/useInView.tsx +0 -23
  196. package/src/index.ts +0 -113
  197. package/src/root.tsx +0 -13
  198. package/src/styles/text.module.scss +0 -17
  199. package/src/vite-env.d.ts +0 -1
  200. package/tsconfig.json +0 -21
  201. package/vite.config.ts +0 -36
  202. /package/{src/components/table/index.ts → lib-types/components/table/index.d.ts} +0 -0
@@ -0,0 +1,1678 @@
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";
3
+ import { mdiClipboardCheckMultipleOutline, mdiClipboardMultipleOutline, mdiChevronRight, mdiPlus, mdiMessageImageOutline, mdiFile, mdiDownload, mdiLinkVariant, mdiFormatQuoteOpen, mdiFormatQuoteClose, mdiAlertOctagram, mdiAlert, mdiShieldAlert, mdiLightbulbOn, mdiInformation } from "@mdi/js";
4
+ import { renderToString } from "katex";
5
+ import { kebabCase } from "lodash-es";
6
+ const styles$n = '.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}\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}';
7
+ const Rust = component$(({ size = 24, ...props }) => {
8
+ return /* @__PURE__ */ jsx("svg", {
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ viewBox: "0 0 128 128",
11
+ fill: "#a84f33",
12
+ width: size,
13
+ height: size,
14
+ ...props,
15
+ children: /* @__PURE__ */ jsx("path", {
16
+ d: "M62.96.242c-.232.135-1.203 1.528-2.16 3.097c-2.4 3.94-2.426 3.942-5.65.55c-2.098-2.208-2.605-2.612-3.28-2.607c-.44.002-.995.152-1.235.332s-.916 1.612-1.504 3.183c-1.346 3.6-1.41 3.715-2.156 3.86c-.46.086-1.343-.407-3.463-1.929c-1.565-1.125-3.1-2.045-3.411-2.045c-1.291 0-1.655.706-2.27 4.4c-.78 4.697-.754 4.681-4.988 2.758c-1.71-.776-3.33-1.41-3.603-1.41s-.792.293-1.15.652c-.652.652-.653.655-.475 4.246l.178 3.595l-.68.364c-.602.322-1.017.283-3.684-.348c-3.48-.822-4.216-.8-4.92.15l-.516.693l.692 2.964c.38 1.63.745 3.2.814 3.487c.067.287-.05.746-.26 1.02c-.348.448-.717.49-3.94.44c-5.452-.086-5.761.382-3.51 5.3c.718 1.56 1.305 2.98 1.305 3.15c0 .898-.717 1.224-3.794 1.727c-1.722.28-3.218.51-3.326.51c-.107 0-.43.235-.717.522c-.937.936-.671 1.816 1.453 4.814c2.646 3.735 2.642 3.75-1.73 5.421c-4.971 1.902-5.072 2.37-1.287 5.96c3.525 3.344 3.53 3.295-.461 5.804C.208 62.8.162 62.846.085 63.876c-.093 1.253-.071 1.275 3.538 3.48c3.57 2.18 3.57 2.246.067 5.56C-.078 76.48.038 77 5.013 78.877c4.347 1.64 4.353 1.66 1.702 5.394c-1.502 2.117-1.981 3-1.981 3.653c0 1.223.637 1.535 4.44 2.174c3.206.54 3.92.857 3.92 1.741c0 .182-.588 1.612-1.307 3.177c-2.236 4.87-1.981 5.275 3.31 5.275c4.93 0 4.799-.15 3.737 4.294c-.8 3.35-.813 3.992-.088 4.715c.554.556 1.6.494 4.87-.289c2.499-.596 2.937-.637 3.516-.328l.66.354l-.177 3.594c-.178 3.593-.177 3.595.475 4.248c.358.36.884.652 1.165.652s1.903-.63 3.604-1.404c4.22-1.916 4.194-1.932 4.973 2.75c.617 3.711.977 4.4 2.294 4.4c.327 0 1.83-.88 3.34-1.958c2.654-1.893 3.342-2.19 4.049-1.74c.182.115.89 1.67 1.572 3.455c1.003 2.625 1.37 3.31 1.929 3.576c1.062.51 1.72.1 4.218-2.62c3.016-3.286 3.14-3.27 5.602.72c2.72 4.406 3.424 4.396 6.212-.089c2.402-3.864 2.374-3.862 5.621-.47c2.157 2.25 2.616 2.61 3.343 2.61c.464 0 1.019-.175 1.23-.388c.214-.213.92-1.786 1.568-3.496c.649-1.71 1.321-3.2 1.495-3.31c.687-.436 1.398-.13 4.048 1.752c1.56 1.108 3.028 1.96 3.377 1.96c1.296 0 1.764-.92 2.302-4.535c.46-3.082.554-3.378 1.16-3.685c.596-.302.954-.2 3.75 1.07c1.701.77 3.323 1.402 3.604 1.402s.816-.302 1.184-.672l.672-.67l-.184-3.448c-.177-3.29-.16-3.468.364-3.943c.54-.488.596-.486 3.615.204c3.656.835 4.338.857 5.025.17c.671-.67.664-.818-.254-4.69c-1.03-4.346-1.168-4.19 3.78-4.19c3.374 0 3.75-.049 4.18-.523c.718-.793.547-1.702-.896-4.779c-.729-1.55-1.32-2.96-1.315-3.135c.024-.914.743-1.227 4.065-1.767c2.033-.329 3.553-.71 3.829-.96c.923-.833.584-1.918-1.523-4.873c-2.642-3.703-2.63-3.738 1.599-5.297c5.064-1.866 5.209-2.488 1.419-6.09c-3.51-3.335-3.512-3.317.333-5.677c4.648-2.853 4.655-3.496.082-6.335c-3.933-2.44-3.93-2.406-.405-5.753c3.78-3.593 3.678-4.063-1.295-5.965c-4.388-1.679-4.402-1.72-1.735-5.38c1.588-2.18 1.982-2.903 1.982-3.65c0-1.306-.586-1.598-4.436-2.22c-3.216-.52-3.924-.835-3.924-1.75c0-.174.588-1.574 1.307-3.113c1.406-3.013 1.604-4.22.808-4.94c-.428-.387-1-.443-4.067-.392c-3.208.054-3.618.008-4.063-.439c-.486-.488-.48-.557.278-3.725c.931-3.88.935-3.975.17-4.694c-.777-.73-1.262-.718-4.826.121c-2.597.612-3.027.653-3.617.337l-.67-.36l.185-3.582l.186-3.58l-.67-.67c-.369-.37-.891-.67-1.163-.67c-.27 0-1.884.64-3.583 1.421c-2.838 1.306-3.143 1.393-3.757 1.072c-.612-.32-.714-.637-1.237-3.829c-.603-3.693-.977-4.412-2.288-4.412c-.311 0-1.853.925-3.426 2.055c-2.584 1.856-2.93 2.032-3.574 1.807c-.533-.186-.843-.59-1.221-1.599c-.28-.742-.817-2.172-1.194-3.177c-.762-2.028-1.187-2.482-2.328-2.482c-.637 0-1.213.458-3.28 2.604c-3.25 3.375-3.261 3.374-5.65-.545C66.073 1.78 65.075.382 64.81.24c-.597-.32-1.3-.32-1.85.002m2.96 11.798c2.83 2.014 1.326 6.75-2.144 6.75c-3.368 0-5.064-4.057-2.66-6.36c1.358-1.3 3.304-1.459 4.805-.39m-3.558 12.507c1.855.705 2.616.282 6.852-3.8l3.182-3.07l1.347.18c4.225.56 12.627 4.25 17.455 7.666c4.436 3.14 10.332 9.534 12.845 13.93l.537.942l-2.38 5.364c-1.31 2.95-2.382 5.673-2.382 6.053c0 .878.576 2.267 1.13 2.726c.234.195 2.457 1.265 4.939 2.378l4.51 2.025l.178 1.148c.23 1.495.26 5.167.052 6.21l-.163.816h-2.575c-2.987 0-2.756-.267-2.918 3.396c-.118 2.656-.76 4.124-2.22 5.075c-2.377 1.551-6.304 1.27-7.97-.57c-.255-.284-.752-1.705-1.105-3.16c-1.03-4.254-2.413-6.64-5.193-8.965c-.878-.733-1.595-1.418-1.595-1.522c0-.102.965-.915 2.145-1.803c4.298-3.24 6.77-7.012 7.04-10.747c.519-7.126-5.158-13.767-13.602-15.92c-2.002-.51-2.857-.526-27.624-.526c-14.057 0-25.56-.092-25.56-.204c0-.263 3.125-3.295 4.965-4.816c5.054-4.178 11.618-7.465 18.417-9.22l2.35-.61l3.34 3.387c1.839 1.863 3.64 3.5 4.003 3.637M20.3 46.34c1.539 1.008 2.17 3.54 1.26 5.062c-1.405 2.356-4.966 2.455-6.373.178c-2.046-3.309 1.895-7.349 5.113-5.24m90.672.13c4.026 2.454.906 8.493-3.404 6.586c-2.877-1.273-2.97-5.206-.155-6.64c1.174-.6 2.523-.579 3.56.053M32.163 61.5v15.02h-13.28l-.526-2.285c-1.036-4.5-1.472-9.156-1.211-12.969l.182-2.679l4.565-2.047c2.864-1.283 4.706-2.262 4.943-2.625c1.038-1.584.94-2.715-.518-5.933l-.68-1.502h6.523V61.5M70.39 47.132c2.843.74 4.345 2.245 4.349 4.355c.002 1.55-.765 2.52-2.67 3.38c-1.348.61-1.562.625-10.063.708l-8.686.084v-8.92h7.782c6.078 0 8.112.086 9.288.393m-2.934 21.554c1.41.392 3.076 1.616 3.93 2.888c.898 1.337 1.423 3.076 2.667 8.836c1.05 4.87 1.727 6.46 3.62 8.532c2.345 2.566 1.8 2.466 13.514 2.466c5.61 0 10.198.09 10.198.2c0 .197-3.863 4.764-4.03 4.764c-.048 0-2.066-.422-4.484-.939c-6.829-1.458-7.075-1.287-8.642 6.032l-1.008 4.702l-.91.448c-1.518.75-6.453 2.292-9.01 2.82c-4.228.87-8.828 1.162-12.871.821c-6.893-.585-16.02-3.259-16.377-4.8c-.075-.327-.535-2.443-1.018-4.704c-.485-2.26-1.074-4.404-1.31-4.764c-1.13-1.724-2.318-1.83-7.547-.674c-1.98.44-3.708.796-3.84.796c-.248 0-3.923-4.249-3.923-4.535c0-.09 8.728-.194 19.396-.23l19.395-.066l.07-6.89c.05-4.865-.018-6.997-.23-7.25c-.234-.284-1.485-.358-6.011-.358H53.32v-8.36l6.597.001c3.626.002 7.02.12 7.539.264M37.57 100.02c3.084 1.88 1.605 6.804-2.043 6.8c-3.74 0-5.127-4.88-1.94-6.826c1.055-.643 2.908-.63 3.983.026m56.48.206c1.512 1.108 2.015 3.413 1.079 4.95c-2.46 4.034-8.612.827-6.557-3.419c1.01-2.085 3.695-2.837 5.478-1.53"
17
+ })
18
+ });
19
+ });
20
+ const Javascript = component$(({ size = 24, ...props }) => {
21
+ return /* @__PURE__ */ jsxs("svg", {
22
+ xmlns: "http://www.w3.org/2000/svg",
23
+ width: size,
24
+ height: size,
25
+ viewBox: "0 0 128 128",
26
+ ...props,
27
+ children: [
28
+ /* @__PURE__ */ jsx("path", {
29
+ fill: "#f0db4f",
30
+ d: "M1.408 1.408h125.184v125.185H1.408z"
31
+ }),
32
+ /* @__PURE__ */ jsx("path", {
33
+ fill: "#323330",
34
+ d: "M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981c-3.832-1.761-8.104-3.022-9.377-5.926c-.452-1.69-.512-2.642-.226-3.665c.821-3.32 4.784-4.355 7.925-3.403c2.023.678 3.938 2.237 5.093 4.724c5.402-3.498 5.391-3.475 9.163-5.879c-1.381-2.141-2.118-3.129-3.022-4.045c-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235c-5.926 6.724-4.236 18.492 2.975 23.335c7.104 5.332 17.54 6.545 18.873 11.531c1.297 6.104-4.486 8.08-10.234 7.378c-4.236-.881-6.592-3.034-9.139-6.949c-4.688 2.713-4.688 2.713-9.508 5.485c1.143 2.499 2.344 3.63 4.26 5.795c9.068 9.198 31.76 8.746 35.83-5.176c.165-.478 1.261-3.666.38-8.581M69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149c-1.713 3.558-6.152 3.117-8.175 2.427c-2.059-1.012-3.106-2.451-4.319-4.485c-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901c4.462 2.678 10.459 3.499 16.731 2.059c4.082-1.189 7.604-3.652 9.448-7.401c2.666-4.915 2.094-10.864 2.07-17.444c.06-10.735.001-21.468.001-32.237"
35
+ })
36
+ ]
37
+ });
38
+ });
39
+ const Typescript = component$(({ size = 24, ...props }) => {
40
+ return /* @__PURE__ */ jsxs("svg", {
41
+ xmlns: "http://www.w3.org/2000/svg",
42
+ width: size,
43
+ height: size,
44
+ viewBox: "0 0 128 128",
45
+ ...props,
46
+ children: [
47
+ /* @__PURE__ */ jsx("path", {
48
+ fill: "#fff",
49
+ d: "M22.67 47h99.67v73.67H22.67z"
50
+ }),
51
+ /* @__PURE__ */ jsx("path", {
52
+ fill: "#007acc",
53
+ d: "M1.5 63.91v62.5h125v-125H1.5zm100.73-5a15.56 15.56 0 0 1 7.82 4.5a20.6 20.6 0 0 1 3 4c0 .16-5.4 3.81-8.69 5.85c-.12.08-.6-.44-1.13-1.23a7.09 7.09 0 0 0-5.87-3.53c-3.79-.26-6.23 1.73-6.21 5a4.6 4.6 0 0 0 .54 2.34c.83 1.73 2.38 2.76 7.24 4.86c8.95 3.85 12.78 6.39 15.16 10c2.66 4 3.25 10.46 1.45 15.24c-2 5.2-6.9 8.73-13.83 9.9a38.3 38.3 0 0 1-9.52-.1a23 23 0 0 1-12.72-6.63c-1.15-1.27-3.39-4.58-3.25-4.82a9 9 0 0 1 1.15-.73L82 101l3.59-2.08l.75 1.11a16.8 16.8 0 0 0 4.74 4.54c4 2.1 9.46 1.81 12.16-.62a5.43 5.43 0 0 0 .69-6.92c-1-1.39-3-2.56-8.59-5c-6.45-2.78-9.23-4.5-11.77-7.24a16.5 16.5 0 0 1-3.43-6.25a25 25 0 0 1-.22-8c1.33-6.23 6-10.58 12.82-11.87a31.7 31.7 0 0 1 9.49.26zm-29.34 5.24v5.12H56.66v46.23H45.15V69.26H28.88v-5a49 49 0 0 1 .12-5.17C29.08 59 39 59 51 59h21.83z"
54
+ })
55
+ ]
56
+ });
57
+ });
58
+ const styles$m = ".path {\n fill: #293138;\n}\n[data-theme=dark] .path {\n fill: #d2dbe3;\n}";
59
+ const Bash = component$(({ size = 24, ...props }) => {
60
+ useStylesScoped$(styles$m);
61
+ return /* @__PURE__ */ jsxs("svg", {
62
+ xmlns: "http://www.w3.org/2000/svg",
63
+ viewBox: "0 0 128 128",
64
+ width: size,
65
+ height: size,
66
+ ...props,
67
+ children: [
68
+ /* @__PURE__ */ jsx("path", {
69
+ fill: "none",
70
+ d: "M4.24 4.24h119.53v119.53H4.24z"
71
+ }),
72
+ /* @__PURE__ */ jsx("path", {
73
+ class: "path",
74
+ 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
+ }),
76
+ /* @__PURE__ */ jsx("path", {
77
+ fill: "#4fa847",
78
+ d: "m99.12 90.73l-9.4 5.62c-.25.15-.43.31-.43.61v2.46c0 .3.2.43.45.28l9.54-5.8c.25-.15.29-.42.29-.72v-2.17c0-.3-.2-.42-.45-.28"
79
+ })
80
+ ]
81
+ });
82
+ });
83
+ const Terraform = component$(({ size = 24, ...props }) => {
84
+ return /* @__PURE__ */ jsx("svg", {
85
+ xmlns: "http://www.w3.org/2000/svg",
86
+ width: size,
87
+ height: size,
88
+ viewBox: "0 0 128 128",
89
+ ...props,
90
+ children: /* @__PURE__ */ jsxs("g", {
91
+ "fill-rule": "evenodd",
92
+ children: [
93
+ /* @__PURE__ */ jsx("path", {
94
+ fill: "#5c4ee5",
95
+ d: "M77.941 44.5v36.836L46.324 62.918V26.082zm0 0"
96
+ }),
97
+ /* @__PURE__ */ jsx("path", {
98
+ fill: "#4040b2",
99
+ d: "m81.41 81.336l31.633-18.418V26.082L81.41 44.5zm0 0"
100
+ }),
101
+ /* @__PURE__ */ jsx("path", {
102
+ fill: "#5c4ee5",
103
+ d: "M11.242 42.36L42.86 60.776V23.941L11.242 5.523zm66.699 43.015L46.324 66.957v36.82l31.617 18.418zm0 0"
104
+ })
105
+ ]
106
+ })
107
+ });
108
+ });
109
+ const Html = component$(({ size = 24, ...props }) => {
110
+ return /* @__PURE__ */ jsxs("svg", {
111
+ xmlns: "http://www.w3.org/2000/svg",
112
+ width: size,
113
+ height: size,
114
+ viewBox: "0 0 128 128",
115
+ ...props,
116
+ children: [
117
+ /* @__PURE__ */ jsx("path", {
118
+ fill: "#e44d26",
119
+ d: "M19.037 113.876L9.032 1.661h109.936l-10.016 112.198l-45.019 12.48z"
120
+ }),
121
+ /* @__PURE__ */ jsx("path", {
122
+ fill: "#f16529",
123
+ d: "m64 116.8l36.378-10.086l8.559-95.878H64z"
124
+ }),
125
+ /* @__PURE__ */ jsx("path", {
126
+ fill: "#ebebeb",
127
+ d: "M64 52.455H45.788L44.53 38.361H64V24.599H29.489l.33 3.692l3.382 37.927H64zm0 35.743l-.061.017l-15.327-4.14l-.979-10.975H33.816l1.928 21.609l28.193 7.826l.063-.017z"
128
+ }),
129
+ /* @__PURE__ */ jsx("path", {
130
+ fill: "#fff",
131
+ d: "M63.952 52.455v13.763h16.947l-1.597 17.849l-15.35 4.143v14.319l28.215-7.82l.207-2.325l3.234-36.233l.335-3.696h-3.708zm0-27.856v13.762h33.244l.276-3.092l.628-6.978l.329-3.692z"
132
+ })
133
+ ]
134
+ });
135
+ });
136
+ const Css = component$(({ size = 24, ...props }) => {
137
+ return /* @__PURE__ */ jsx("svg", {
138
+ xmlns: "http://www.w3.org/2000/svg",
139
+ viewBox: "0 0 24 24",
140
+ width: size,
141
+ height: size,
142
+ ...props,
143
+ children: /* @__PURE__ */ jsx("path", {
144
+ fill: "#3f9de9",
145
+ d: "m5 3l-.65 3.34h13.59L17.5 8.5H3.92l-.66 3.33h13.59l-.76 3.81l-5.48 1.81l-4.75-1.81l.33-1.64H2.85l-.79 4l7.85 3l9.05-3l1.2-6.03l.24-1.21L21.94 3z"
146
+ })
147
+ });
148
+ });
149
+ const Npm = component$(({ size = 24, ...props }) => {
150
+ return /* @__PURE__ */ jsxs("svg", {
151
+ xmlns: "http://www.w3.org/2000/svg",
152
+ width: size,
153
+ height: size,
154
+ viewBox: "0 0 128 128",
155
+ ...props,
156
+ children: [
157
+ /* @__PURE__ */ jsx("path", {
158
+ fill: "#cb3837",
159
+ d: "M0 7.062C0 3.225 3.225 0 7.062 0h113.88c3.838 0 7.063 3.225 7.063 7.062v113.88c0 3.838-3.225 7.063-7.063 7.063H7.062c-3.837 0-7.062-3.225-7.062-7.063zm23.69 97.518h40.395l.05-58.532h19.494l-.05 58.581h19.543l.05-78.075l-78.075-.1l-.1 78.126z"
160
+ }),
161
+ /* @__PURE__ */ jsx("path", {
162
+ fill: "#fff",
163
+ d: "M25.105 65.52V26.512H40.96c8.72 0 26.274.034 39.008.075l23.153.075v77.866H83.645v-58.54H64.057v58.54H25.105z"
164
+ })
165
+ ]
166
+ });
167
+ });
168
+ const Java = component$(({ size = 24, ...props }) => {
169
+ return /* @__PURE__ */ jsxs("svg", {
170
+ xmlns: "http://www.w3.org/2000/svg",
171
+ width: size,
172
+ height: size,
173
+ viewBox: "0 0 128 128",
174
+ ...props,
175
+ children: [
176
+ /* @__PURE__ */ jsx("path", {
177
+ fill: "#0074bd",
178
+ d: "M47.617 98.12s-4.767 2.774 3.397 3.71c9.892 1.13 14.947.968 25.845-1.092c0 0 2.871 1.795 6.873 3.351c-24.439 10.47-55.308-.607-36.115-5.969m-2.988-13.665s-5.348 3.959 2.823 4.805c10.567 1.091 18.91 1.18 33.354-1.6c0 0 1.993 2.025 5.132 3.131c-29.542 8.64-62.446.68-41.309-6.336"
179
+ }),
180
+ /* @__PURE__ */ jsx("path", {
181
+ fill: "#ea2d2e",
182
+ d: "M69.802 61.271c6.025 6.935-1.58 13.17-1.58 13.17s15.289-7.891 8.269-17.777c-6.559-9.215-11.587-13.792 15.635-29.58c0 .001-42.731 10.67-22.324 34.187"
183
+ }),
184
+ /* @__PURE__ */ jsx("path", {
185
+ fill: "#0074bd",
186
+ d: "M102.123 108.229s3.529 2.91-3.888 5.159c-14.102 4.272-58.706 5.56-71.094.171c-4.451-1.938 3.899-4.625 6.526-5.192c2.739-.593 4.303-.485 4.303-.485c-4.953-3.487-32.013 6.85-13.743 9.815c49.821 8.076 90.817-3.637 77.896-9.468M49.912 70.294s-22.686 5.389-8.033 7.348c6.188.828 18.518.638 30.011-.326c9.39-.789 18.813-2.474 18.813-2.474s-3.308 1.419-5.704 3.053c-23.042 6.061-67.544 3.238-54.731-2.958c10.832-5.239 19.644-4.643 19.644-4.643m40.697 22.747c23.421-12.167 12.591-23.86 5.032-22.285c-1.848.385-2.677.72-2.677.72s.688-1.079 2-1.543c14.953-5.255 26.451 15.503-4.823 23.725c0-.002.359-.327.468-.617"
187
+ }),
188
+ /* @__PURE__ */ jsx("path", {
189
+ fill: "#ea2d2e",
190
+ d: "M76.491 1.587S89.459 14.563 64.188 34.51c-20.266 16.006-4.621 25.13-.007 35.559c-11.831-10.673-20.509-20.07-14.688-28.815C58.041 28.42 81.722 22.195 76.491 1.587"
191
+ }),
192
+ /* @__PURE__ */ jsx("path", {
193
+ fill: "#0074bd",
194
+ d: "M52.214 126.021c22.476 1.437 57-.8 57.817-11.436c0 0-1.571 4.032-18.577 7.231c-19.186 3.612-42.854 3.191-56.887.874c0 .001 2.875 2.381 17.647 3.331"
195
+ })
196
+ ]
197
+ });
198
+ });
199
+ const Kotlin = component$(({ size = 24, ...props }) => {
200
+ return /* @__PURE__ */ jsxs("svg", {
201
+ xmlns: "http://www.w3.org/2000/svg",
202
+ width: size,
203
+ height: size,
204
+ viewBox: "0 0 128 128",
205
+ ...props,
206
+ children: [
207
+ /* @__PURE__ */ jsx("defs", {
208
+ children: /* @__PURE__ */ jsxs("linearGradient", {
209
+ id: "deviconKotlin0",
210
+ x1: "500.003",
211
+ x2: "-.097",
212
+ y1: "579.106",
213
+ y2: "1079.206",
214
+ gradientTransform: "translate(15.534 -96.774)scale(.1939)",
215
+ gradientUnits: "userSpaceOnUse",
216
+ children: [
217
+ /* @__PURE__ */ jsx("stop", {
218
+ offset: ".003",
219
+ "stop-color": "#e44857"
220
+ }),
221
+ /* @__PURE__ */ jsx("stop", {
222
+ offset: ".469",
223
+ "stop-color": "#c711e1"
224
+ }),
225
+ /* @__PURE__ */ jsx("stop", {
226
+ offset: "1",
227
+ "stop-color": "#7f52ff"
228
+ })
229
+ ]
230
+ })
231
+ }),
232
+ /* @__PURE__ */ jsx("path", {
233
+ fill: "url(#deviconKotlin0)",
234
+ d: "M112.484 112.484H15.516V15.516h96.968L64 64Zm0 0"
235
+ })
236
+ ]
237
+ });
238
+ });
239
+ const Go = component$(({ size = 24, ...props }) => {
240
+ return /* @__PURE__ */ jsx("svg", {
241
+ xmlns: "http://www.w3.org/2000/svg",
242
+ width: size,
243
+ height: size,
244
+ viewBox: "0 0 128 128",
245
+ ...props,
246
+ children: /* @__PURE__ */ jsxs("g", {
247
+ fill: "#00acd7",
248
+ "fill-rule": "evenodd",
249
+ children: [
250
+ /* @__PURE__ */ jsx("path", {
251
+ d: "M11.156 54.829c-.243 0-.303-.122-.182-.303l1.273-1.637c.12-.182.424-.303.666-.303H34.55c.243 0 .303.182.182.364l-1.03 1.576c-.121.181-.424.363-.606.363zm-9.152 5.575c-.242 0-.303-.12-.182-.303l1.273-1.636c.121-.182.424-.303.667-.303h27.636c.242 0 .364.182.303.364l-.485 1.454c-.06.243-.303.364-.545.364zM16.67 65.98c-.242 0-.302-.182-.181-.364l.848-1.515c.122-.182.364-.363.607-.363h12.12c.243 0 .364.181.364.424l-.12 1.454c0 .243-.243.425-.425.425zm62.91-12.242c-3.819.97-6.425 1.697-10.182 2.666c-.91.243-.97.303-1.758-.606c-.909-1.03-1.576-1.697-2.848-2.303c-3.819-1.878-7.516-1.333-10.97.91c-4.121 2.666-6.242 6.605-6.182 11.514c.06 4.849 3.394 8.849 8.182 9.516c4.121.545 7.576-.91 10.303-4c.545-.667 1.03-1.394 1.636-2.243H56.064c-1.272 0-1.575-.788-1.151-1.818c.788-1.879 2.242-5.03 3.09-6.606c.183-.364.607-.97 1.516-.97h22.06c-.12 1.637-.12 3.273-.363 4.91c-.667 4.363-2.303 8.363-4.97 11.878c-4.364 5.758-10.06 9.333-17.273 10.303c-5.939.788-11.454-.364-16.302-4c-4.485-3.394-7.03-7.879-7.697-13.454c-.788-6.606 1.151-12.546 5.151-17.758c4.303-5.636 10-9.212 16.97-10.485c5.697-1.03 11.151-.363 16.06 2.97c3.212 2.121 5.515 5.03 7.03 8.545c.364.546.122.849-.606 1.03z"
252
+ }),
253
+ /* @__PURE__ */ jsx("path", {
254
+ "fill-rule": "nonzero",
255
+ d: "M99.64 87.253c-5.515-.122-10.546-1.697-14.788-5.334c-3.576-3.09-5.818-7.03-6.545-11.697c-1.091-6.848.787-12.909 4.909-18.302c4.424-5.819 9.757-8.849 16.97-10.122c6.181-1.09 12-.484 17.272 3.091c4.788 3.273 7.757 7.697 8.545 13.515c1.03 8.182-1.333 14.849-6.97 20.546c-4 4.06-8.909 6.606-14.545 7.757c-1.636.303-3.273.364-4.848.546m14.424-24.485c-.06-.788-.06-1.394-.182-2c-1.09-6-6.606-9.394-12.363-8.06c-5.637 1.272-9.273 4.848-10.606 10.545c-1.091 4.727 1.212 9.515 5.575 11.454c3.334 1.455 6.667 1.273 9.879-.363c4.788-2.485 7.394-6.364 7.697-11.576"
256
+ })
257
+ ]
258
+ })
259
+ });
260
+ });
261
+ const Python = component$(({ size = 24, ...props }) => {
262
+ return /* @__PURE__ */ jsxs("svg", {
263
+ xmlns: "http://www.w3.org/2000/svg",
264
+ width: size,
265
+ height: size,
266
+ viewBox: "0 0 128 128",
267
+ ...props,
268
+ children: [
269
+ /* @__PURE__ */ jsxs("linearGradient", {
270
+ id: "deviconPython0",
271
+ x1: "70.252",
272
+ x2: "170.659",
273
+ y1: "1237.476",
274
+ y2: "1151.089",
275
+ gradientTransform: "matrix(.563 0 0 -.568 -29.215 707.817)",
276
+ gradientUnits: "userSpaceOnUse",
277
+ children: [
278
+ /* @__PURE__ */ jsx("stop", {
279
+ offset: "0",
280
+ "stop-color": "#5a9fd4"
281
+ }),
282
+ /* @__PURE__ */ jsx("stop", {
283
+ offset: "1",
284
+ "stop-color": "#306998"
285
+ })
286
+ ]
287
+ }),
288
+ /* @__PURE__ */ jsxs("linearGradient", {
289
+ id: "deviconPython1",
290
+ x1: "209.474",
291
+ x2: "173.62",
292
+ y1: "1098.811",
293
+ y2: "1149.537",
294
+ gradientTransform: "matrix(.563 0 0 -.568 -29.215 707.817)",
295
+ gradientUnits: "userSpaceOnUse",
296
+ children: [
297
+ /* @__PURE__ */ jsx("stop", {
298
+ offset: "0",
299
+ "stop-color": "#ffd43b"
300
+ }),
301
+ /* @__PURE__ */ jsx("stop", {
302
+ offset: "1",
303
+ "stop-color": "#ffe873"
304
+ })
305
+ ]
306
+ }),
307
+ /* @__PURE__ */ jsx("path", {
308
+ fill: "url(#deviconPython0)",
309
+ d: "M63.391 1.988c-4.222.02-8.252.379-11.8 1.007c-10.45 1.846-12.346 5.71-12.346 12.837v9.411h24.693v3.137H29.977c-7.176 0-13.46 4.313-15.426 12.521c-2.268 9.405-2.368 15.275 0 25.096c1.755 7.311 5.947 12.519 13.124 12.519h8.491V67.234c0-8.151 7.051-15.34 15.426-15.34h24.665c6.866 0 12.346-5.654 12.346-12.548V15.833c0-6.693-5.646-11.72-12.346-12.837c-4.244-.706-8.645-1.027-12.866-1.008M50.037 9.557c2.55 0 4.634 2.117 4.634 4.721c0 2.593-2.083 4.69-4.634 4.69c-2.56 0-4.633-2.097-4.633-4.69c-.001-2.604 2.073-4.721 4.633-4.721",
310
+ transform: "translate(0 10.26)"
311
+ }),
312
+ /* @__PURE__ */ jsx("path", {
313
+ fill: "url(#deviconPython1)",
314
+ d: "M91.682 28.38v10.966c0 8.5-7.208 15.655-15.426 15.655H51.591c-6.756 0-12.346 5.783-12.346 12.549v23.515c0 6.691 5.818 10.628 12.346 12.547c7.816 2.297 15.312 2.713 24.665 0c6.216-1.801 12.346-5.423 12.346-12.547v-9.412H63.938v-3.138h37.012c7.176 0 9.852-5.005 12.348-12.519c2.578-7.735 2.467-15.174 0-25.096c-1.774-7.145-5.161-12.521-12.348-12.521h-9.268zM77.809 87.927c2.561 0 4.634 2.097 4.634 4.692c0 2.602-2.074 4.719-4.634 4.719c-2.55 0-4.633-2.117-4.633-4.719c0-2.595 2.083-4.692 4.633-4.692",
315
+ transform: "translate(0 10.26)"
316
+ }),
317
+ /* @__PURE__ */ jsxs("radialGradient", {
318
+ id: "deviconPython2",
319
+ cx: "1825.678",
320
+ cy: "444.45",
321
+ r: "26.743",
322
+ gradientTransform: "matrix(0 -.24 -1.055 0 532.979 557.576)",
323
+ gradientUnits: "userSpaceOnUse",
324
+ children: [
325
+ /* @__PURE__ */ jsx("stop", {
326
+ offset: "0",
327
+ "stop-color": "#b8b8b8",
328
+ "stop-opacity": "0.498"
329
+ }),
330
+ /* @__PURE__ */ jsx("stop", {
331
+ offset: "1",
332
+ "stop-color": "#7f7f7f",
333
+ "stop-opacity": "0"
334
+ })
335
+ ]
336
+ }),
337
+ /* @__PURE__ */ jsx("path", {
338
+ fill: "url(#deviconPython2)",
339
+ d: "M97.309 119.597c0 3.543-14.816 6.416-33.091 6.416c-18.276 0-33.092-2.873-33.092-6.416s14.815-6.417 33.092-6.417c18.275 0 33.091 2.872 33.091 6.417",
340
+ opacity: "0.444"
341
+ })
342
+ ]
343
+ });
344
+ });
345
+ const Sql = component$(({ size = 24, ...props }) => {
346
+ return /* @__PURE__ */ jsx("svg", {
347
+ xmlns: "http://www.w3.org/2000/svg",
348
+ width: size,
349
+ height: size,
350
+ viewBox: "0 0 128 128",
351
+ ...props,
352
+ children: /* @__PURE__ */ jsx("path", {
353
+ fill: "#00618a",
354
+ d: "M117.688 98.242c-6.973-.191-12.297.461-16.852 2.379c-1.293.547-3.355.559-3.566 2.18c.711.746.82 1.859 1.387 2.777c1.086 1.754 2.922 4.113 4.559 5.352c1.789 1.348 3.633 2.793 5.551 3.961c3.414 2.082 7.223 3.27 10.504 5.352c1.938 1.23 3.859 2.777 5.75 4.164c.934.684 1.563 1.75 2.773 2.18v-.195c-.637-.812-.801-1.93-1.387-2.777l-2.578-2.578c-2.52-3.344-5.719-6.281-9.117-8.719c-2.711-1.949-8.781-4.578-9.91-7.73l-.199-.199c1.922-.219 4.172-.914 5.949-1.391c2.98-.797 5.645-.59 8.719-1.387l4.164-1.187v-.793c-1.555-1.594-2.664-3.707-4.359-5.152c-4.441-3.781-9.285-7.555-14.273-10.703c-2.766-1.746-6.184-2.883-9.117-4.363c-.988-.496-2.719-.758-3.371-1.586c-1.539-1.961-2.379-4.449-3.566-6.738c-2.488-4.793-4.93-10.023-7.137-15.066c-1.504-3.437-2.484-6.828-4.359-9.91c-9-14.797-18.687-23.73-33.695-32.508c-3.195-1.867-7.039-2.605-11.102-3.57l-6.543-.395c-1.332-.555-2.715-2.184-3.965-2.977C16.977 3.52 4.223-3.312.539 5.672C-1.785 11.34 4.016 16.871 6.09 19.746c1.457 2.012 3.32 4.273 4.359 6.539c.688 1.492.805 2.984 1.391 4.559c1.438 3.883 2.695 8.109 4.559 11.695c.941 1.816 1.98 3.727 3.172 5.352c.727.996 1.98 1.438 2.18 2.973c-1.227 1.715-1.297 4.375-1.984 6.543c-3.098 9.77-1.926 21.91 2.578 29.137c1.383 2.223 4.641 6.98 9.117 5.156c3.918-1.598 3.043-6.539 4.164-10.902c.254-.988.098-1.715.594-2.379v.199l3.57 7.133c2.641 4.254 7.324 8.699 11.297 11.699c2.059 1.555 3.68 4.242 6.344 5.152v-.199h-.199c-.516-.805-1.324-1.137-1.98-1.781c-1.551-1.523-3.277-3.414-4.559-5.156c-3.613-4.902-6.805-10.27-9.711-15.855c-1.391-2.668-2.598-5.609-3.77-8.324c-.453-1.047-.445-2.633-1.387-3.172c-1.281 1.988-3.172 3.598-4.164 5.945c-1.582 3.754-1.789 8.336-2.375 13.082c-.348.125-.195.039-.398.199c-2.762-.668-3.73-3.508-4.758-5.949c-2.594-6.164-3.078-16.09-.793-23.191c.59-1.836 3.262-7.617 2.18-9.316c-.516-1.691-2.219-2.672-3.172-3.965c-1.18-1.598-2.355-3.703-3.172-5.551c-2.125-4.805-3.113-10.203-5.352-15.062c-1.07-2.324-2.875-4.676-4.359-6.738c-1.645-2.289-3.484-3.977-4.758-6.742c-.453-.984-1.066-2.559-.398-3.566c.215-.684.516-.969 1.191-1.191c1.148-.887 4.352.297 5.547.793c3.18 1.32 5.832 2.578 8.527 4.363c1.289.855 2.598 2.512 4.16 2.973h1.785c2.789.641 5.914.195 8.523.988c4.609 1.402 8.738 3.582 12.488 5.949c11.422 7.215 20.766 17.48 27.156 29.734c1.027 1.973 1.473 3.852 2.379 5.945c1.824 4.219 4.125 8.559 5.941 12.688c1.816 4.113 3.582 8.27 6.148 11.695c1.348 1.801 6.551 2.766 8.918 3.766c1.66.699 4.379 1.43 5.949 2.379c3 1.809 5.906 3.965 8.723 5.945c1.402.992 5.73 3.168 5.945 4.957zm-88.605-75.52c-1.453-.027-2.48.156-3.566.395v.199h.195c.695 1.422 1.918 2.34 2.777 3.566l1.98 4.164l.199-.195c1.227-.867 1.789-2.25 1.781-4.363c-.492-.52-.562-1.164-.992-1.785c-.562-.824-1.66-1.289-2.375-1.98zm0 0"
355
+ })
356
+ });
357
+ });
358
+ const Json = component$(({ size = 24, ...props }) => {
359
+ return /* @__PURE__ */ jsxs("svg", {
360
+ xmlns: "http://www.w3.org/2000/svg",
361
+ width: size,
362
+ height: size,
363
+ viewBox: "0 0 128 128",
364
+ ...props,
365
+ children: [
366
+ /* @__PURE__ */ jsxs("linearGradient", {
367
+ id: "deviconJson0",
368
+ x1: "-670.564",
369
+ x2: "-583.105",
370
+ y1: "-280.831",
371
+ y2: "-368.306",
372
+ gradientTransform: "matrix(.9988 0 0 -.9987 689.011 -259.008)",
373
+ gradientUnits: "userSpaceOnUse",
374
+ children: [
375
+ /* @__PURE__ */ jsx("stop", {
376
+ offset: "0"
377
+ }),
378
+ /* @__PURE__ */ jsx("stop", {
379
+ offset: "1",
380
+ "stop-color": "#fff"
381
+ })
382
+ ]
383
+ }),
384
+ /* @__PURE__ */ jsx("path", {
385
+ fill: "url(#deviconJson0)",
386
+ "fill-rule": "evenodd",
387
+ d: "M63.895 94.303c27.433 37.398 54.281-10.438 54.241-39.205c-.046-34.012-34.518-53.021-54.263-53.021C32.182 2.077 2 28.269 2 64.105C2 103.937 36.596 126 63.873 126c-6.172-.889-26.742-5.296-27.019-52.674c-.186-32.044 10.453-44.846 26.974-39.214c.37.137 18.223 7.18 18.223 30.187c0 22.908-18.156 30.004-18.156 30.004",
388
+ "clip-rule": "evenodd"
389
+ }),
390
+ /* @__PURE__ */ jsxs("linearGradient", {
391
+ id: "deviconJson1",
392
+ x1: "-579.148",
393
+ x2: "-666.607",
394
+ y1: "-364.34",
395
+ y2: "-276.865",
396
+ gradientTransform: "matrix(.9988 0 0 -.9987 689.011 -259.008)",
397
+ gradientUnits: "userSpaceOnUse",
398
+ children: [
399
+ /* @__PURE__ */ jsx("stop", {
400
+ offset: "0"
401
+ }),
402
+ /* @__PURE__ */ jsx("stop", {
403
+ offset: "1",
404
+ "stop-color": "#fff"
405
+ })
406
+ ]
407
+ }),
408
+ /* @__PURE__ */ jsx("path", {
409
+ fill: "url(#deviconJson1)",
410
+ "fill-rule": "evenodd",
411
+ d: "M63.895 94.303c27.433 37.398 54.281-10.438 54.241-39.205c-.046-34.012-34.518-53.021-54.263-53.021C32.182 2.077 2 28.269 2 64.105C2 103.937 36.596 126 63.873 126c-6.172-.889-26.742-5.296-27.019-52.674c-.186-32.044 10.453-44.846 26.974-39.214c.37.137 18.223 7.18 18.223 30.187c0 22.908-18.156 30.004-18.156 30.004",
412
+ "clip-rule": "evenodd"
413
+ })
414
+ ]
415
+ });
416
+ });
417
+ const Lua = component$(({ size = 24, ...props }) => {
418
+ return /* @__PURE__ */ jsxs("svg", {
419
+ xmlns: "http://www.w3.org/2000/svg",
420
+ width: size,
421
+ height: size,
422
+ viewBox: "0 0 128 128",
423
+ ...props,
424
+ children: [
425
+ /* @__PURE__ */ jsx("path", {
426
+ fill: "#000080",
427
+ d: "M112.956.708c-7.912 0-14.335 6.424-14.335 14.336s6.424 14.335 14.335 14.335s14.335-6.41 14.335-14.335c0-7.912-6.424-14.336-14.335-14.336M64 15.058c-27.02 0-48.956 21.935-48.956 48.955S36.979 112.97 64 112.97c27.02 0 48.956-21.935 48.956-48.956c0-27.02-21.936-48.956-48.956-48.956"
428
+ }),
429
+ /* @__PURE__ */ jsx("path", {
430
+ fill: "#fff",
431
+ d: "M84.285 29.392c-7.91 0-14.335 6.424-14.335 14.335s6.424 14.336 14.335 14.336s14.336-6.424 14.336-14.336s-6.424-14.335-14.335-14.335zM30.773 56.36v32.119h19.961v-3.611H34.87V56.359Zm57.584 8.37c-3.354 0-6.126.975-7.668 2.692c-1.055 1.19-1.488 2.516-1.582 4.801h3.705c.311-2.826 1.988-4.098 5.423-4.098c3.3 0 5.153 1.231 5.153 3.435v.974c0 1.542-.92 2.205-3.827 2.556c-5.193.663-5.991.839-7.398 1.407c-2.69 1.095-4.057 3.164-4.057 6.166c0 4.193 2.908 6.83 7.574 6.83c2.907 0 5.247-1.014 7.843-3.395c.257 2.34 1.407 3.395 3.787 3.395c.757 0 1.325-.081 2.515-.392v-2.773a3 3 0 0 1-.798.095c-1.284 0-1.988-.663-1.988-1.812V71.032c0-4.098-3.002-6.302-8.682-6.302m-33.742.664V83.19c0 3.84 2.867 6.302 7.357 6.302c3.395 0 5.545-1.19 7.709-4.233v3.219h3.3V65.393h-3.652v13.09c0 4.72-2.475 7.804-6.302 7.804c-2.907 0-4.76-1.772-4.76-4.544v-16.35Zm38.773 11.67v4.139c0 1.244-.365 1.988-1.46 3.002c-1.502 1.366-3.3 2.07-5.464 2.07c-2.867 0-4.544-1.367-4.544-3.706c0-2.42 1.636-3.665 5.558-4.233c3.881-.528 4.68-.703 5.91-1.271z"
432
+ }),
433
+ /* @__PURE__ */ jsx("path", {
434
+ fill: "#808080",
435
+ d: "M61.733 0a64 64 0 0 0-5.57.436l.179 1.458a63 63 0 0 1 5.442-.426zm5.585.046l-.075 1.468a62 62 0 0 1 5.433.52L72.88.578a64 64 0 0 0-5.561-.532Zm-16.665 1.31a63 63 0 0 0-5.409 1.398l.43 1.405a62 62 0 0 1 5.284-1.367Zm27.72.237l-.33 1.431a63 63 0 0 1 5.262 1.455l.452-1.397a64 64 0 0 0-5.384-1.489M39.98 4.623a64 64 0 0 0-5.081 2.323l.668 1.308a62 62 0 0 1 4.964-2.27zm49.012.41l-.573 1.353a63 63 0 0 1 4.929 2.346l.688-1.298a64 64 0 0 0-5.044-2.4ZM30.04 9.706a64 64 0 0 0-4.6 3.17l.886 1.173a63 63 0 0 1 4.494-3.098zm-8.906 6.728a64 64 0 0 0-3.983 3.918l1.075 1.001a63 63 0 0 1 3.891-3.827zm-7.61 8.165a64 64 0 0 0-3.247 4.546l1.231.8a63 63 0 0 1 3.172-4.44zm-6.086 9.357a64 64 0 0 0-2.408 5.042l1.352.574a62 62 0 0 1 2.352-4.925zm113.623.973l-1.31.667a63 63 0 0 1 2.263 4.967l1.362-.55a64 64 0 0 0-2.315-5.083zM3.075 44.23a63 63 0 0 0-1.49 5.385l1.432.328a62 62 0 0 1 1.455-5.26Zm122.166 1.049l-1.404.429a63 63 0 0 1 1.366 5.285l1.437-.306a64 64 0 0 0-1.399-5.409zM.574 55.108a64 64 0 0 0-.528 5.561l1.467.075a63 63 0 0 1 .516-5.434Zm126.988 1.088l-1.458.179a63 63 0 0 1 .428 5.441l1.468-.05a64 64 0 0 0-.438-5.57M1.468 66.205L0 66.255a64 64 0 0 0 .435 5.57l1.458-.179a63 63 0 0 1-.425-5.441m125.018 1.071a63 63 0 0 1-.518 5.434l1.455.203a64 64 0 0 0 .53-5.561zM2.79 77.031l-1.437.304a63 63 0 0 0 1.398 5.41l1.405-.43A62 62 0 0 1 2.79 77.03Zm122.188 1.046a62 62 0 0 1-1.457 5.26l1.397.454a63 63 0 0 0 1.492-5.384zM5.981 87.459l-1.362.551a63 63 0 0 0 2.323 5.082l1.307-.669a62 62 0 0 1-2.268-4.964m115.627.99a62 62 0 0 1-2.354 4.925l1.296.69a64 64 0 0 0 2.41-5.04zM10.944 97.17l-1.245.78a64 64 0 0 0 3.17 4.6l1.172-.885a63 63 0 0 1-3.097-4.495m105.534.904a63 63 0 0 1-3.173 4.44l1.156.906a64 64 0 0 0 3.249-4.545zm-98.96 7.8l-1.092.983a64 64 0 0 0 3.917 3.983l1.002-1.074a63 63 0 0 1-3.827-3.892m92.24.79a63 63 0 0 1-3.893 3.826l.983 1.092a64 64 0 0 0 3.984-3.916zm-84.263 6.648l-.906 1.157a64 64 0 0 0 4.546 3.248l.8-1.232a63 63 0 0 1-4.44-3.173m76.16.654a63 63 0 0 1-4.495 3.096l.78 1.245a64 64 0 0 0 4.6-3.17zm-67.018 5.294l-.691 1.296a64 64 0 0 0 5.04 2.409l.575-1.352a62 62 0 0 1-4.924-2.353m57.775.496a62 62 0 0 1-4.964 2.268l.551 1.362a63 63 0 0 0 5.082-2.322zm-47.74 3.77l-.453 1.396a63 63 0 0 0 5.385 1.49l.329-1.43a62 62 0 0 1-5.26-1.456zm37.632.322a62 62 0 0 1-5.284 1.365l.304 1.437a63 63 0 0 0 5.41-1.398zm-27.003 2.122l-.203 1.455a64 64 0 0 0 5.561.529l.075-1.467a63 63 0 0 1-5.433-.517m16.335.139a63 63 0 0 1-5.442.424l.05 1.468a64 64 0 0 0 5.57-.434z"
436
+ })
437
+ ]
438
+ });
439
+ });
440
+ const Csharp = component$(({ size = 24, ...props }) => {
441
+ return /* @__PURE__ */ jsxs("svg", {
442
+ xmlns: "http://www.w3.org/2000/svg",
443
+ viewBox: "0 0 128 128",
444
+ width: size,
445
+ height: size,
446
+ ...props,
447
+ children: [
448
+ /* @__PURE__ */ jsx("path", {
449
+ fill: "#9b4f96",
450
+ d: "M115.4 30.7L67.1 2.9c-.8-.5-1.9-.7-3.1-.7s-2.3.3-3.1.7l-48 27.9c-1.7 1-2.9 3.5-2.9 5.4v55.7c0 1.1.2 2.4 1 3.5l106.8-62c-.6-1.2-1.5-2.1-2.4-2.7"
451
+ }),
452
+ /* @__PURE__ */ jsx("path", {
453
+ fill: "#68217a",
454
+ d: "M10.7 95.3c.5.8 1.2 1.5 1.9 1.9l48.2 27.9c.8.5 1.9.7 3.1.7s2.3-.3 3.1-.7l48-27.9c1.7-1 2.9-3.5 2.9-5.4V36.1c0-.9-.1-1.9-.6-2.8z"
455
+ }),
456
+ /* @__PURE__ */ jsx("path", {
457
+ fill: "#fff",
458
+ d: "M85.3 76.1C81.1 83.5 73.1 88.5 64 88.5c-13.5 0-24.5-11-24.5-24.5s11-24.5 24.5-24.5c9.1 0 17.1 5 21.3 12.5l13-7.5c-6.8-11.9-19.6-20-34.3-20c-21.8 0-39.5 17.7-39.5 39.5s17.7 39.5 39.5 39.5c14.6 0 27.4-8 34.2-19.8zM97 66.2l.9-4.3h-4.2v-4.7h5.1L100 51h4.9l-1.2 6.1h3.8l1.2-6.1h4.8l-1.2 6.1h2.4v4.7h-3.3l-.9 4.3h4.2v4.7h-5.1l-1.2 6h-4.9l1.2-6h-3.8l-1.2 6h-4.8l1.2-6h-2.4v-4.7H97zm4.8 0h3.8l.9-4.3h-3.8z"
459
+ })
460
+ ]
461
+ });
462
+ });
463
+ const Cplusplus = component$(({ size = 24, ...props }) => {
464
+ return /* @__PURE__ */ jsxs("svg", {
465
+ xmlns: "http://www.w3.org/2000/svg",
466
+ viewBox: "0 0 128 128",
467
+ width: size,
468
+ height: size,
469
+ ...props,
470
+ children: [
471
+ /* @__PURE__ */ jsx("path", {
472
+ fill: "#00599c",
473
+ d: "M118.766 95.82c.89-1.543 1.441-3.28 1.441-4.843V36.78c0-1.558-.55-3.297-1.441-4.84l-55.32 31.94Zm0 0"
474
+ }),
475
+ /* @__PURE__ */ jsx("path", {
476
+ fill: "#004482",
477
+ d: "m68.36 126.586l46.933-27.094c1.352-.781 2.582-2.129 3.473-3.672l-55.32-31.94L8.12 95.82c.89 1.543 2.121 2.89 3.473 3.672l46.933 27.094c2.703 1.562 7.13 1.562 9.832 0Zm0 0"
478
+ }),
479
+ /* @__PURE__ */ jsx("path", {
480
+ fill: "#659ad2",
481
+ d: "M118.766 31.941c-.891-1.546-2.121-2.894-3.473-3.671L68.359 1.172c-2.703-1.563-7.129-1.563-9.832 0L11.594 28.27C8.89 29.828 6.68 33.66 6.68 36.78v54.196c0 1.562.55 3.3 1.441 4.843L63.445 63.88Zm0 0"
482
+ }),
483
+ /* @__PURE__ */ jsx("path", {
484
+ fill: "#fff",
485
+ d: "M63.445 26.035c-20.867 0-37.843 16.977-37.843 37.844s16.976 37.844 37.843 37.844c13.465 0 26.024-7.247 32.77-18.91L79.84 73.335c-3.38 5.84-9.66 9.465-16.395 9.465c-10.433 0-18.922-8.488-18.922-18.922s8.49-18.922 18.922-18.922c6.73 0 13.017 3.629 16.39 9.465l16.38-9.477c-6.75-11.664-19.305-18.91-32.77-18.91zM92.88 57.57v4.207h-4.207v4.203h4.207v4.207h4.203V65.98h4.203v-4.203h-4.203V57.57zm15.766 0v4.207h-4.204v4.203h4.204v4.207h4.207V65.98h4.203v-4.203h-4.203V57.57z"
486
+ })
487
+ ]
488
+ });
489
+ });
490
+ const C = component$(({ size = 24, ...props }) => {
491
+ return /* @__PURE__ */ jsxs("svg", {
492
+ xmlns: "http://www.w3.org/2000/svg",
493
+ viewBox: "0 0 128 128",
494
+ width: size,
495
+ height: size,
496
+ ...props,
497
+ children: [
498
+ /* @__PURE__ */ jsx("path", {
499
+ fill: "#659ad3",
500
+ d: "M115.4 30.7L67.1 2.9c-.8-.5-1.9-.7-3.1-.7s-2.3.3-3.1.7l-48 27.9c-1.7 1-2.9 3.5-2.9 5.4v55.7c0 1.1.2 2.4 1 3.5l106.8-62c-.6-1.2-1.5-2.1-2.4-2.7"
501
+ }),
502
+ /* @__PURE__ */ jsx("path", {
503
+ fill: "#03599c",
504
+ d: "M10.7 95.3c.5.8 1.2 1.5 1.9 1.9l48.2 27.9c.8.5 1.9.7 3.1.7s2.3-.3 3.1-.7l48-27.9c1.7-1 2.9-3.5 2.9-5.4V36.1c0-.9-.1-1.9-.6-2.8z"
505
+ }),
506
+ /* @__PURE__ */ jsx("path", {
507
+ fill: "#fff",
508
+ d: "M85.3 76.1C81.1 83.5 73.1 88.5 64 88.5c-13.5 0-24.5-11-24.5-24.5s11-24.5 24.5-24.5c9.1 0 17.1 5 21.3 12.5l13-7.5c-6.8-11.9-19.6-20-34.3-20c-21.8 0-39.5 17.7-39.5 39.5s17.7 39.5 39.5 39.5c14.6 0 27.4-8 34.2-19.8z"
509
+ })
510
+ ]
511
+ });
512
+ });
513
+ const normalizeLanguage = (language) => {
514
+ switch (language) {
515
+ case "rust":
516
+ case "rs":
517
+ return "rust";
518
+ case "javascript":
519
+ case "js":
520
+ return "javascript";
521
+ case "typescript":
522
+ case "ts":
523
+ return "typescript";
524
+ case "bash":
525
+ case "sh":
526
+ case "shell":
527
+ return "shell";
528
+ case "tf":
529
+ case "terraform":
530
+ case "hcl":
531
+ return "terraform";
532
+ case "html":
533
+ case "html5":
534
+ return "html";
535
+ case "css":
536
+ case "css3":
537
+ return "css";
538
+ case "npm":
539
+ return "npm";
540
+ case "java":
541
+ return "java";
542
+ case "kotlin":
543
+ case "kt":
544
+ return "kotlin";
545
+ case "go":
546
+ case "golang":
547
+ return "go";
548
+ case "python":
549
+ case "py":
550
+ return "python";
551
+ case "sql":
552
+ return "sql";
553
+ case "json":
554
+ return "json";
555
+ case "lua":
556
+ return "lua";
557
+ case "cs":
558
+ case "c#":
559
+ case "csharp":
560
+ return "csharp";
561
+ case "cpp":
562
+ case "c++":
563
+ return "cpp";
564
+ case "c":
565
+ case "clang":
566
+ return "c";
567
+ default:
568
+ return "file";
569
+ }
570
+ };
571
+ const renderMap = {
572
+ rust: Rust,
573
+ javascript: Javascript,
574
+ typescript: Typescript,
575
+ shell: Bash,
576
+ terraform: Terraform,
577
+ html: Html,
578
+ css: Css,
579
+ npm: Npm,
580
+ java: Java,
581
+ kotlin: Kotlin,
582
+ go: Go,
583
+ python: Python,
584
+ sql: Sql,
585
+ json: Json,
586
+ lua: Lua,
587
+ csharp: Csharp,
588
+ cpp: Cplusplus,
589
+ c: C,
590
+ file: () => null
591
+ };
592
+ const ElmLanguageIcon = component$(({ size = 24, language }) => {
593
+ const Component2 = renderMap[normalizeLanguage(language)];
594
+ return /* @__PURE__ */ jsx(Component2, {
595
+ size
596
+ });
597
+ });
598
+ const styles$l = '.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}';
599
+ 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}";
600
+ const styles$k = ".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}";
601
+ const ElmInlineIcon = component$(({ src, alt }) => {
602
+ useStylesScoped$(styles$k);
603
+ return /* @__PURE__ */ jsx("div", {
604
+ class: "icon",
605
+ children: /* @__PURE__ */ jsx("img", {
606
+ src,
607
+ alt,
608
+ class: "icon"
609
+ })
610
+ });
611
+ });
612
+ const ElmInlineText = component$((props) => {
613
+ useStylesScoped$(styles$l);
614
+ useStylesScoped$(textStyles);
615
+ const { bold = false, italic = false, underline = false, strikethrough = false, code = false, size = "1em" } = props;
616
+ let vnode = props.text ? /* @__PURE__ */ jsx("span", {
617
+ children: props.text
618
+ }) : /* @__PURE__ */ jsx(Slot, {});
619
+ if (props.kbd) {
620
+ vnode = /* @__PURE__ */ jsx("kbd", {
621
+ class: "kbd",
622
+ children: vnode
623
+ });
624
+ }
625
+ if (strikethrough) {
626
+ vnode = /* @__PURE__ */ jsx("del", {
627
+ children: vnode
628
+ });
629
+ }
630
+ if (italic) {
631
+ vnode = /* @__PURE__ */ jsx("em", {
632
+ children: vnode
633
+ });
634
+ }
635
+ if (underline) {
636
+ vnode = /* @__PURE__ */ jsx("ins", {
637
+ children: vnode
638
+ });
639
+ }
640
+ if (bold) {
641
+ vnode = /* @__PURE__ */ jsx("strong", {
642
+ children: vnode
643
+ });
644
+ }
645
+ if (code) {
646
+ vnode = /* @__PURE__ */ jsx("code", {
647
+ class: "code",
648
+ children: vnode
649
+ });
650
+ }
651
+ if (props.ruby) {
652
+ vnode = /* @__PURE__ */ jsxs("ruby", {
653
+ class: "text",
654
+ children: [
655
+ /* @__PURE__ */ jsx("span", {
656
+ children: vnode
657
+ }),
658
+ /* @__PURE__ */ jsx("rt", {
659
+ children: props.ruby
660
+ })
661
+ ]
662
+ });
663
+ }
664
+ const wrappedVnode = /* @__PURE__ */ jsx("span", {
665
+ class: [
666
+ "text",
667
+ "text"
668
+ ],
669
+ style: {
670
+ "--color": props.color,
671
+ "--font-size": size,
672
+ "--background-color": props.backgroundColor
673
+ },
674
+ children: vnode
675
+ });
676
+ if (props.href) {
677
+ return /* @__PURE__ */ jsxs("a", {
678
+ class: "link",
679
+ href: props.href,
680
+ style: {
681
+ "--font-size": size
682
+ },
683
+ target: "_blank",
684
+ rel: "noopener noreferrer",
685
+ children: [
686
+ props.favicon && /* @__PURE__ */ jsx(ElmInlineIcon, {
687
+ src: props.favicon
688
+ }),
689
+ wrappedVnode
690
+ ]
691
+ });
692
+ }
693
+ return wrappedVnode;
694
+ });
695
+ const styles$j = '.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}';
696
+ const ElmShikiHighlighter = component$(({ code, language = "txt" }) => {
697
+ useStyles$(styles$j);
698
+ const rawHtml = useSignal("");
699
+ useTask$(async ({ track }) => {
700
+ const currentCode = track(() => code);
701
+ const currentLang = track(() => language);
702
+ const { getHighlighterSingleton } = await import("./shikiInstance-igs7t2fe.js");
703
+ const highlighter = await getHighlighterSingleton();
704
+ try {
705
+ rawHtml.value = highlighter.codeToHtml(currentCode, {
706
+ lang: currentLang,
707
+ themes: {
708
+ dark: "vitesse-dark",
709
+ light: "vitesse-light"
710
+ },
711
+ colorReplacements: {
712
+ "#ffffff": "transparent",
713
+ "#121212": "transparent"
714
+ }
715
+ });
716
+ } catch {
717
+ rawHtml.value = `<pre>${currentCode.replace(/</g, "&lt;")}</pre>`;
718
+ }
719
+ });
720
+ return /* @__PURE__ */ jsx("pre", {
721
+ dangerouslySetInnerHTML: rawHtml.value
722
+ });
723
+ });
724
+ const styles$i = ".icon {\n fill: var(--color, #555b67);\n transition: fill 200ms;\n}\n[data-theme=dark] .icon {\n fill: var(--dark-color, #b0b5be);\n}";
725
+ const ElmMdiIcon = component$(({ d, size = "1em", color, lightColor, darkColor }) => {
726
+ useStylesScoped$(styles$i);
727
+ return /* @__PURE__ */ jsx("svg", {
728
+ class: "icon",
729
+ style: {
730
+ "--color": lightColor ?? color,
731
+ "--dark-color": darkColor ?? color
732
+ },
733
+ width: size,
734
+ height: size,
735
+ viewBox: "0 0 24 24",
736
+ fill: color,
737
+ xmlns: "http://www.w3.org/2000/svg",
738
+ focusable: "false",
739
+ role: "img",
740
+ children: /* @__PURE__ */ jsx("path", {
741
+ d
742
+ })
743
+ });
744
+ });
745
+ const ElmCodeBlock = component$(({ code, language = "txt", caption, margin }) => {
746
+ useStylesScoped$(styles$n);
747
+ const timerId = useSignal(null);
748
+ const copyToClipboard = $(async () => {
749
+ if (timerId.value !== null) {
750
+ window.clearTimeout(timerId.value);
751
+ timerId.value = null;
752
+ }
753
+ try {
754
+ await navigator.clipboard.writeText(code);
755
+ timerId.value = window.setTimeout(() => timerId.value = null, 1500);
756
+ } catch (err) {
757
+ console.error("Failed to copy: ", err);
758
+ }
759
+ });
760
+ return /* @__PURE__ */ jsxs("figure", {
761
+ class: "code-block",
762
+ style: {
763
+ margin
764
+ },
765
+ children: [
766
+ /* @__PURE__ */ jsx("span", {
767
+ class: "language-icon",
768
+ children: /* @__PURE__ */ jsx(ElmLanguageIcon, {
769
+ language
770
+ })
771
+ }),
772
+ /* @__PURE__ */ jsx("span", {
773
+ class: "caption",
774
+ children: /* @__PURE__ */ jsxs(ElmInlineText, {
775
+ children: [
776
+ caption || language,
777
+ /* @__PURE__ */ jsx(Slot, {})
778
+ ]
779
+ })
780
+ }),
781
+ /* @__PURE__ */ jsx("div", {
782
+ class: "copy-icon",
783
+ onClick$: copyToClipboard,
784
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
785
+ size: "1.25rem",
786
+ d: timerId.value !== null ? mdiClipboardCheckMultipleOutline : mdiClipboardMultipleOutline,
787
+ color: timerId.value !== null ? "#59b57c" : void 0
788
+ })
789
+ }),
790
+ /* @__PURE__ */ jsx("hr", {
791
+ class: "divider"
792
+ }),
793
+ /* @__PURE__ */ jsx("div", {
794
+ class: "code",
795
+ children: /* @__PURE__ */ jsx(ElmShikiHighlighter, {
796
+ code,
797
+ language
798
+ })
799
+ })
800
+ ]
801
+ });
802
+ });
803
+ const ElmKatex = component$(({ expression, block = false }) => {
804
+ useStylesScoped$(textStyles);
805
+ const html = useComputed$(() => renderToString(expression, {
806
+ displayMode: block,
807
+ output: "mathml"
808
+ }));
809
+ return /* @__PURE__ */ jsx("div", {
810
+ class: "text",
811
+ dangerouslySetInnerHTML: html.value
812
+ });
813
+ });
814
+ const styles$h = ".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}";
815
+ const ElmToggle = component$(({ summary }) => {
816
+ useStylesScoped$(styles$h);
817
+ const isOpen = useSignal(false);
818
+ const toggle = $(() => {
819
+ isOpen.value = !isOpen.value;
820
+ });
821
+ return /* @__PURE__ */ jsxs("div", {
822
+ class: [
823
+ "toggle",
824
+ {
825
+ "toggle-open": isOpen.value,
826
+ "toggle-closed": !isOpen.value
827
+ }
828
+ ],
829
+ children: [
830
+ /* @__PURE__ */ jsxs("div", {
831
+ class: [
832
+ "summary",
833
+ {
834
+ "summary-open": isOpen.value,
835
+ "summary-closed": !isOpen.value
836
+ }
837
+ ],
838
+ onClick$: toggle,
839
+ children: [
840
+ /* @__PURE__ */ jsx("span", {
841
+ class: [
842
+ "chevron-icon",
843
+ {
844
+ "chevron-icon-open": isOpen.value,
845
+ "chevron-icon-closed": !isOpen.value
846
+ }
847
+ ],
848
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
849
+ d: mdiChevronRight
850
+ })
851
+ }),
852
+ /* @__PURE__ */ jsx("span", {
853
+ class: "summary-text",
854
+ children: summary ? summary : /* @__PURE__ */ jsx(Slot, {
855
+ name: "summary"
856
+ })
857
+ }),
858
+ /* @__PURE__ */ jsx("span", {
859
+ class: [
860
+ "plus-icon",
861
+ {
862
+ "plus-icon-open": isOpen.value,
863
+ "plus-icon-closed": !isOpen.value
864
+ }
865
+ ],
866
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
867
+ d: mdiPlus,
868
+ color: isOpen.value ? "#c56565" : "#59b57c",
869
+ size: "1rem"
870
+ })
871
+ })
872
+ ]
873
+ }),
874
+ /* @__PURE__ */ jsx("div", {
875
+ class: [
876
+ "content",
877
+ {
878
+ "content-open": isOpen.value,
879
+ "content-closed": !isOpen.value
880
+ }
881
+ ],
882
+ children: /* @__PURE__ */ jsx(Slot, {})
883
+ }),
884
+ /* @__PURE__ */ jsxs("div", {
885
+ class: "footer",
886
+ onClick$: toggle,
887
+ children: [
888
+ /* @__PURE__ */ jsx("span", {
889
+ class: "footer-chevron-icon",
890
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
891
+ d: mdiChevronRight,
892
+ color: "gray"
893
+ })
894
+ }),
895
+ /* @__PURE__ */ jsx("hr", {
896
+ class: "footer-line"
897
+ }),
898
+ /* @__PURE__ */ jsx("span", {
899
+ class: "footer-cross-icon",
900
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
901
+ d: mdiPlus,
902
+ color: "#c56565"
903
+ })
904
+ }),
905
+ /* @__PURE__ */ jsx(ElmInlineText, {
906
+ children: "CLOSE"
907
+ }),
908
+ /* @__PURE__ */ jsx("span", {
909
+ class: "footer-cross-icon",
910
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
911
+ d: mdiPlus,
912
+ color: "#c56565"
913
+ })
914
+ }),
915
+ /* @__PURE__ */ jsx("hr", {
916
+ class: "footer-line"
917
+ }),
918
+ /* @__PURE__ */ jsx("span", {
919
+ class: "footer-chevron-icon",
920
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
921
+ d: mdiChevronRight,
922
+ color: "gray"
923
+ })
924
+ })
925
+ ]
926
+ })
927
+ ]
928
+ });
929
+ });
930
+ const styles$g = ".block-fallback {\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: var(--height);\n}";
931
+ const styles$f = "@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}";
932
+ const ElmDotLoadingIcon = component$(({ size = "4em", color = "#606875" }) => {
933
+ useStylesScoped$(styles$f);
934
+ return /* @__PURE__ */ jsxs("div", {
935
+ class: "wrapper",
936
+ style: {
937
+ "--size": size,
938
+ "--color": color
939
+ },
940
+ children: [
941
+ /* @__PURE__ */ jsx("div", {
942
+ class: "dot",
943
+ "aria-hidden": "true"
944
+ }),
945
+ /* @__PURE__ */ jsx("div", {
946
+ class: "dot",
947
+ "aria-hidden": "true"
948
+ }),
949
+ /* @__PURE__ */ jsx("div", {
950
+ class: "dot",
951
+ "aria-hidden": "true"
952
+ })
953
+ ]
954
+ });
955
+ });
956
+ const styles$e = "@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}";
957
+ const ElmRectangleWave = component$(() => {
958
+ useStylesScoped$(styles$e);
959
+ return /* @__PURE__ */ jsx("div", {
960
+ "aria-hidden": "true",
961
+ class: "rectangle-wave"
962
+ });
963
+ });
964
+ const ElmBlockFallback = component$(({ height = "16rem" }) => {
965
+ useStylesScoped$(styles$g);
966
+ return /* @__PURE__ */ jsxs("div", {
967
+ class: "block-fallback",
968
+ style: {
969
+ "--height": height
970
+ },
971
+ children: [
972
+ /* @__PURE__ */ jsx(ElmDotLoadingIcon, {}),
973
+ /* @__PURE__ */ jsx(ElmRectangleWave, {})
974
+ ]
975
+ });
976
+ });
977
+ const styles$d = ".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}";
978
+ const ElmBlockImage = component$(({ src, alt, caption, width, height, enableModal = true }) => {
979
+ useStylesScoped$(styles$d);
980
+ const isLoading = useSignal(true);
981
+ const isShowModal = useSignal(false);
982
+ const handleImageLoad = $(() => {
983
+ isLoading.value = false;
984
+ });
985
+ const handleToggleModal = $(() => {
986
+ if (enableModal) {
987
+ isShowModal.value = !isShowModal.value;
988
+ }
989
+ });
990
+ const ImageComponent = /* @__PURE__ */ jsx("img", {
991
+ class: [
992
+ "image"
993
+ ],
994
+ src,
995
+ alt: alt ?? caption ?? "Image",
996
+ width,
997
+ height,
998
+ onLoad$: handleImageLoad,
999
+ style: {
1000
+ "--opacity": isLoading.value ? 0 : 1,
1001
+ "--cursor": enableModal ? isShowModal.value ? "zoom-out" : "zoom-in" : "default"
1002
+ }
1003
+ });
1004
+ const Modal = /* @__PURE__ */ jsx("div", {
1005
+ class: "modal-container",
1006
+ style: {
1007
+ pointerEvents: isShowModal.value ? "auto" : "none",
1008
+ "--opacity": isShowModal.value ? 1 : 0
1009
+ },
1010
+ onClick$: handleToggleModal,
1011
+ children: ImageComponent
1012
+ });
1013
+ return /* @__PURE__ */ jsxs("figure", {
1014
+ class: "block-image",
1015
+ children: [
1016
+ /* @__PURE__ */ jsxs("div", {
1017
+ class: "image-container",
1018
+ style: {
1019
+ "--opacity": isLoading.value ? 1 : 0
1020
+ },
1021
+ onClick$: handleToggleModal,
1022
+ children: [
1023
+ ImageComponent,
1024
+ /* @__PURE__ */ jsx("div", {
1025
+ class: "fallback",
1026
+ children: /* @__PURE__ */ jsx(ElmRectangleWave, {})
1027
+ })
1028
+ ]
1029
+ }),
1030
+ caption && /* @__PURE__ */ jsxs("figcaption", {
1031
+ class: "caption-box",
1032
+ style: {
1033
+ "--opacity": isLoading.value ? 0 : 1
1034
+ },
1035
+ children: [
1036
+ /* @__PURE__ */ jsx("span", {
1037
+ style: {
1038
+ flex: "1"
1039
+ },
1040
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
1041
+ d: mdiMessageImageOutline,
1042
+ color: "#cdb57b",
1043
+ size: "1.25rem"
1044
+ })
1045
+ }),
1046
+ /* @__PURE__ */ jsx(ElmInlineText, {
1047
+ size: "1rem",
1048
+ children: caption
1049
+ })
1050
+ ]
1051
+ }),
1052
+ Modal
1053
+ ]
1054
+ });
1055
+ });
1056
+ const styles$c = ".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}";
1057
+ function getLastPathSegmentWithoutQueryOrHash(urlString) {
1058
+ const cleanedUrl = urlString.split(/[?#]/)[0];
1059
+ const pathSegments = cleanedUrl.split("/").filter(Boolean);
1060
+ return pathSegments.length > 0 ? pathSegments[pathSegments.length - 1] : null;
1061
+ }
1062
+ const ElmFile = component$(({ name, src, filesize }) => {
1063
+ useStylesScoped$(styles$c);
1064
+ const downloadFile = $(async () => {
1065
+ let link;
1066
+ try {
1067
+ const response = await fetch(src);
1068
+ if (!response.ok) throw new Error("Failed to download file");
1069
+ const blob = await response.blob();
1070
+ link = document.createElement("a");
1071
+ link.href = URL.createObjectURL(blob);
1072
+ link.download = name ?? getLastPathSegmentWithoutQueryOrHash(src) ?? "file";
1073
+ link.click();
1074
+ } catch (error) {
1075
+ console.error("ERROR:", error);
1076
+ } finally {
1077
+ if (link) URL.revokeObjectURL(link.href);
1078
+ }
1079
+ });
1080
+ return /* @__PURE__ */ jsxs("div", {
1081
+ class: "file",
1082
+ children: [
1083
+ /* @__PURE__ */ jsx("div", {
1084
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
1085
+ d: mdiFile,
1086
+ size: "1.25rem"
1087
+ })
1088
+ }),
1089
+ /* @__PURE__ */ jsx("div", {
1090
+ children: /* @__PURE__ */ jsx(ElmInlineText, {
1091
+ children: name ?? getLastPathSegmentWithoutQueryOrHash(src)
1092
+ })
1093
+ }),
1094
+ /* @__PURE__ */ jsx("div", {
1095
+ class: "file-size",
1096
+ children: /* @__PURE__ */ jsx(ElmInlineText, {
1097
+ children: filesize
1098
+ })
1099
+ }),
1100
+ /* @__PURE__ */ jsx("div", {
1101
+ class: "download-icon",
1102
+ onClick$: downloadFile,
1103
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
1104
+ d: mdiDownload,
1105
+ size: "1.25rem"
1106
+ })
1107
+ })
1108
+ ]
1109
+ });
1110
+ });
1111
+ const styles$b = ".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}";
1112
+ const ElmBookmark = component$(({ url, image, title, description, favicon }) => {
1113
+ useStylesScoped$(styles$b);
1114
+ return /* @__PURE__ */ jsx("div", {
1115
+ class: "bookmark",
1116
+ children: /* @__PURE__ */ jsxs("a", {
1117
+ class: "container",
1118
+ href: url,
1119
+ target: "_blank",
1120
+ rel: "noopener noreferrer",
1121
+ children: [
1122
+ /* @__PURE__ */ jsx("img", {
1123
+ class: "image",
1124
+ src: image,
1125
+ alt: "OGP Image"
1126
+ }),
1127
+ /* @__PURE__ */ jsxs("div", {
1128
+ class: "content",
1129
+ children: [
1130
+ /* @__PURE__ */ jsx("div", {
1131
+ class: "title",
1132
+ children: /* @__PURE__ */ jsx(ElmInlineText, {
1133
+ bold: true,
1134
+ children: title
1135
+ })
1136
+ }),
1137
+ /* @__PURE__ */ jsx("div", {
1138
+ class: "description",
1139
+ children: /* @__PURE__ */ jsx(ElmInlineText, {
1140
+ size: "0.75rem",
1141
+ children: description
1142
+ })
1143
+ }),
1144
+ /* @__PURE__ */ jsxs("div", {
1145
+ class: "link",
1146
+ children: [
1147
+ favicon ? /* @__PURE__ */ jsx(ElmInlineIcon, {
1148
+ src: favicon
1149
+ }) : /* @__PURE__ */ jsx(ElmMdiIcon, {
1150
+ d: mdiLinkVariant,
1151
+ color: "#6987b8"
1152
+ }),
1153
+ /* @__PURE__ */ jsx(ElmInlineText, {
1154
+ size: "0.75rem",
1155
+ children: url
1156
+ })
1157
+ ]
1158
+ })
1159
+ ]
1160
+ })
1161
+ ]
1162
+ })
1163
+ });
1164
+ });
1165
+ 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}';
1166
+ const ElmBlockQuote = component$(({ cite }) => {
1167
+ useStylesScoped$(styles$a);
1168
+ useStylesScoped$(textStyles);
1169
+ return /* @__PURE__ */ jsxs("blockquote", {
1170
+ class: [
1171
+ "blockquote",
1172
+ "text"
1173
+ ],
1174
+ cite,
1175
+ children: [
1176
+ /* @__PURE__ */ jsx("div", {
1177
+ class: "icon",
1178
+ style: {
1179
+ "--inset": "0.25rem auto auto 0.5rem"
1180
+ },
1181
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
1182
+ d: mdiFormatQuoteOpen
1183
+ })
1184
+ }),
1185
+ /* @__PURE__ */ jsx("div", {
1186
+ class: "body",
1187
+ children: /* @__PURE__ */ jsx(Slot, {})
1188
+ }),
1189
+ /* @__PURE__ */ jsx("div", {
1190
+ class: "icon",
1191
+ style: {
1192
+ "--inset": "auto 0.25rem 0.25rem auto"
1193
+ },
1194
+ children: /* @__PURE__ */ jsx(ElmMdiIcon, {
1195
+ d: mdiFormatQuoteClose
1196
+ })
1197
+ })
1198
+ ]
1199
+ });
1200
+ });
1201
+ 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}';
1202
+ const COLOR_MAP = Object.freeze({
1203
+ note: {
1204
+ code: "#6987b8",
1205
+ icon: mdiInformation
1206
+ },
1207
+ tip: {
1208
+ code: "#59b57c",
1209
+ icon: mdiLightbulbOn
1210
+ },
1211
+ important: {
1212
+ code: "#9771bd",
1213
+ icon: mdiShieldAlert
1214
+ },
1215
+ warning: {
1216
+ code: "#b8a36e",
1217
+ icon: mdiAlert
1218
+ },
1219
+ caution: {
1220
+ code: "#b36472",
1221
+ icon: mdiAlertOctagram
1222
+ }
1223
+ });
1224
+ const ElmCallout = component$(({ type = "note" }) => {
1225
+ useStylesScoped$(styles$9);
1226
+ return /* @__PURE__ */ jsxs("aside", {
1227
+ class: "callout",
1228
+ style: {
1229
+ "--callout-color": COLOR_MAP[type].code
1230
+ },
1231
+ children: [
1232
+ /* @__PURE__ */ jsxs("div", {
1233
+ class: "header",
1234
+ children: [
1235
+ /* @__PURE__ */ jsx(ElmMdiIcon, {
1236
+ d: COLOR_MAP[type].icon,
1237
+ color: COLOR_MAP[type].code,
1238
+ size: "1.25rem"
1239
+ }),
1240
+ /* @__PURE__ */ jsx(ElmInlineText, {
1241
+ children: type.toLocaleUpperCase()
1242
+ })
1243
+ ]
1244
+ }),
1245
+ /* @__PURE__ */ jsx("div", {
1246
+ class: "content",
1247
+ children: /* @__PURE__ */ jsx(Slot, {})
1248
+ })
1249
+ ]
1250
+ });
1251
+ });
1252
+ const styles$8 = ".hr {\n margin: 0;\n width: 100%;\n border: none;\n border-bottom: dashed 1px #868e9c;\n}";
1253
+ const ElmDivider = component$(({ margin }) => {
1254
+ useStylesScoped$(styles$8);
1255
+ return /* @__PURE__ */ jsx("hr", {
1256
+ class: "hr",
1257
+ style: {
1258
+ marginBlock: margin
1259
+ }
1260
+ });
1261
+ });
1262
+ 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}";
1263
+ const ElmFragmentIdentifier = component$(({ id }) => {
1264
+ useStylesScoped$(styles$7);
1265
+ const handleHashClick = $((id2) => {
1266
+ const url = new URL(window.location.href);
1267
+ url.hash = id2;
1268
+ window.history.replaceState(null, "", url.toString());
1269
+ const target = document.getElementById(id2);
1270
+ if (target != null) {
1271
+ target.scrollIntoView({
1272
+ behavior: "smooth"
1273
+ });
1274
+ }
1275
+ });
1276
+ return /* @__PURE__ */ jsx("span", {
1277
+ class: "fragment",
1278
+ onClick$: () => handleHashClick(id),
1279
+ children: "#"
1280
+ });
1281
+ });
1282
+ 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 {\n border-bottom: solid 1px rgba(0, 0, 0, 0.5);\n}\n[data-theme=dark] .h2 {\n border-color: rgba(255, 255, 255, 0.5);\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\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}';
1283
+ const SIZE_MAP = Object.freeze({
1284
+ 1: 1.5,
1285
+ 2: 1.4,
1286
+ 3: 1.3,
1287
+ 4: 1.2,
1288
+ 5: 1.15,
1289
+ 6: 1.1
1290
+ });
1291
+ const ElmHeading = component$(({ level, text, id }) => {
1292
+ useStylesScoped$(styles$6);
1293
+ useStylesScoped$(textStyles);
1294
+ const Tag = `h${level}`;
1295
+ return /* @__PURE__ */ jsxs(Tag, {
1296
+ class: [
1297
+ "heading-common",
1298
+ "text",
1299
+ `h${level}`
1300
+ ],
1301
+ style: {
1302
+ "--font-size": `${SIZE_MAP[level]}em`
1303
+ },
1304
+ children: [
1305
+ text,
1306
+ /* @__PURE__ */ jsx(Slot, {}),
1307
+ id && /* @__PURE__ */ jsx("span", {
1308
+ style: {
1309
+ padding: "0.5rem"
1310
+ },
1311
+ children: /* @__PURE__ */ jsx(ElmFragmentIdentifier, {
1312
+ id
1313
+ })
1314
+ })
1315
+ ]
1316
+ });
1317
+ });
1318
+ 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}';
1319
+ const ElmList = component$(({ listStyle = "unordered" }) => {
1320
+ useStyles$(listStyles);
1321
+ useStylesScoped$(textStyles);
1322
+ if (listStyle === "ordered") {
1323
+ return /* @__PURE__ */ jsx("ol", {
1324
+ class: [
1325
+ "text",
1326
+ "elmethis-list-common",
1327
+ "elmethis-numbered-list"
1328
+ ],
1329
+ children: /* @__PURE__ */ jsx(Slot, {})
1330
+ });
1331
+ } else {
1332
+ return /* @__PURE__ */ jsx("ul", {
1333
+ class: [
1334
+ "text",
1335
+ "elmethis-list-common",
1336
+ "elmethis-bulleted-list"
1337
+ ],
1338
+ children: /* @__PURE__ */ jsx(Slot, {})
1339
+ });
1340
+ }
1341
+ });
1342
+ 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}";
1343
+ const useInView = (props) => {
1344
+ const ref = useSignal();
1345
+ const isVisible = useSignal(false);
1346
+ useVisibleTask$(() => {
1347
+ if (!ref.value) return;
1348
+ const observer = new IntersectionObserver(([entry]) => {
1349
+ isVisible.value = entry.isIntersecting;
1350
+ }, {
1351
+ rootMargin: "100px",
1352
+ threshold: 0.1
1353
+ });
1354
+ observer.observe(ref.value);
1355
+ return () => observer.disconnect();
1356
+ });
1357
+ return {
1358
+ ref,
1359
+ isVisible
1360
+ };
1361
+ };
1362
+ const ElmParagraph = component$(({ color, backgroundColor }) => {
1363
+ useStylesScoped$(styles$5);
1364
+ useStylesScoped$(textStyles);
1365
+ const { ref, isVisible } = useInView();
1366
+ return /* @__PURE__ */ jsx("p", {
1367
+ ref,
1368
+ class: [
1369
+ "paragraph",
1370
+ "text"
1371
+ ],
1372
+ style: {
1373
+ "--color": color,
1374
+ "--background-color": backgroundColor,
1375
+ "--opacity": isVisible.value ? 1 : 0
1376
+ },
1377
+ children: /* @__PURE__ */ jsx(Slot, {})
1378
+ });
1379
+ });
1380
+ 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}";
1381
+ const HasRowHeaderContext = createContextId("HasRowHeaderContext");
1382
+ const ElmTable = component$((props) => {
1383
+ useStylesScoped$(styles$4);
1384
+ useStylesScoped$(textStyles);
1385
+ const { margin, caption, hasRowHeader = false } = props;
1386
+ const hasRowHeaderComputed = useComputed$(() => hasRowHeader);
1387
+ useContextProvider(HasRowHeaderContext, hasRowHeaderComputed);
1388
+ return /* @__PURE__ */ jsxs("table", {
1389
+ class: [
1390
+ "table",
1391
+ "text"
1392
+ ],
1393
+ style: {
1394
+ "--margin-block": margin
1395
+ },
1396
+ children: [
1397
+ caption && /* @__PURE__ */ jsx("caption", {
1398
+ children: /* @__PURE__ */ jsxs("span", {
1399
+ class: "caption",
1400
+ children: [
1401
+ /* @__PURE__ */ jsx("span", {
1402
+ class: "spacing"
1403
+ }),
1404
+ /* @__PURE__ */ jsxs("span", {
1405
+ class: "caption-inner",
1406
+ children: [
1407
+ /* @__PURE__ */ jsx("svg", {
1408
+ viewBox: "0 0 24 24",
1409
+ width: "1rem",
1410
+ height: "1rem",
1411
+ children: /* @__PURE__ */ jsx("path", {
1412
+ d: "M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4M12,6A6,6 0 0,0 6,12A6,6 0 0,0 12,18A6,6 0 0,0 18,12A6,6 0 0,0 12,6M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8Z",
1413
+ fill: "#6987b8"
1414
+ })
1415
+ }),
1416
+ /* @__PURE__ */ jsx(ElmInlineText, {
1417
+ text: caption
1418
+ })
1419
+ ]
1420
+ }),
1421
+ /* @__PURE__ */ jsx("span", {
1422
+ class: "spacing"
1423
+ })
1424
+ ]
1425
+ })
1426
+ }),
1427
+ /* @__PURE__ */ jsx(Slot, {})
1428
+ ]
1429
+ });
1430
+ });
1431
+ 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}";
1432
+ const HasHeaderContext = createContextId("HasHeaderContext");
1433
+ const ElmTableHeader = component$(() => {
1434
+ useStylesScoped$(styles$3);
1435
+ useContextProvider(HasHeaderContext, true);
1436
+ return /* @__PURE__ */ jsx("thead", {
1437
+ class: "thead",
1438
+ children: /* @__PURE__ */ jsx(Slot, {})
1439
+ });
1440
+ });
1441
+ const ElmTableBody = component$(() => {
1442
+ useContextProvider(HasHeaderContext, false);
1443
+ return /* @__PURE__ */ jsx("tbody", {
1444
+ children: /* @__PURE__ */ jsx(Slot, {})
1445
+ });
1446
+ });
1447
+ 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}";
1448
+ const ElmTableRow = component$(() => {
1449
+ useStylesScoped$(styles$2);
1450
+ const hasRowHeader = useContext(HasRowHeaderContext);
1451
+ return /* @__PURE__ */ jsx("tr", {
1452
+ class: [
1453
+ "tr",
1454
+ hasRowHeader.value && "has-row-header"
1455
+ ],
1456
+ children: /* @__PURE__ */ jsx(Slot, {})
1457
+ });
1458
+ });
1459
+ 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}";
1460
+ const ElmTableCell = component$((props) => {
1461
+ useStylesScoped$(styles$1);
1462
+ const { hasHeader = false, text } = props;
1463
+ const hasHeaderInjected = useContext(HasHeaderContext, false);
1464
+ const isHeader = hasHeader || hasHeaderInjected;
1465
+ return /* @__PURE__ */ jsx(Fragment, {
1466
+ children: isHeader ? /* @__PURE__ */ jsx("th", {
1467
+ class: [
1468
+ "common",
1469
+ "th"
1470
+ ],
1471
+ children: text ? text : /* @__PURE__ */ jsx(Slot, {})
1472
+ }) : /* @__PURE__ */ jsx("td", {
1473
+ class: [
1474
+ "common",
1475
+ "td"
1476
+ ],
1477
+ children: text ? text : /* @__PURE__ */ jsx(Slot, {})
1478
+ })
1479
+ });
1480
+ });
1481
+ 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}";
1482
+ const convertInlineComponentsToPlainText = (inlineComponents) => {
1483
+ return inlineComponents.map((component) => {
1484
+ if (component.type === "Text") {
1485
+ return component.props.text;
1486
+ } else {
1487
+ return "";
1488
+ }
1489
+ }).join("");
1490
+ };
1491
+ const ElmJarkup = component$((props) => {
1492
+ useStylesScoped$(styles);
1493
+ const render = (jsonComponents) => {
1494
+ return jsonComponents.map((component, index) => {
1495
+ const key = component.id || index;
1496
+ switch (component.type) {
1497
+ case "Text": {
1498
+ const { props: p } = component;
1499
+ if (p.katex) {
1500
+ return /* @__PURE__ */ jsx(ElmKatex, {
1501
+ expression: p.text,
1502
+ block: false
1503
+ }, key);
1504
+ }
1505
+ return /* @__PURE__ */ jsx(ElmInlineText, {
1506
+ text: p.text,
1507
+ color: p.color,
1508
+ backgroundColor: p.backgroundColor,
1509
+ bold: p.bold,
1510
+ italic: p.italic,
1511
+ underline: p.underline,
1512
+ strikethrough: p.strikethrough,
1513
+ code: p.code,
1514
+ ruby: p.ruby,
1515
+ href: p.href,
1516
+ favicon: p.favicon
1517
+ }, key);
1518
+ }
1519
+ case "Icon":
1520
+ return /* @__PURE__ */ jsx(ElmInlineIcon, {
1521
+ src: component.props.src,
1522
+ alt: component.props.alt
1523
+ }, key);
1524
+ case "Heading":
1525
+ return /* @__PURE__ */ jsx(ElmHeading, {
1526
+ level: component.props.level,
1527
+ id: kebabCase(convertInlineComponentsToPlainText(component.slots.default)),
1528
+ children: render(component.slots.default)
1529
+ }, key);
1530
+ case "Paragraph":
1531
+ return /* @__PURE__ */ jsx(ElmParagraph, {
1532
+ color: component.props?.color,
1533
+ backgroundColor: component.props?.backgroundColor,
1534
+ children: render(component.slots.default)
1535
+ }, key);
1536
+ case "ListItem":
1537
+ return /* @__PURE__ */ jsx("li", {
1538
+ children: render(component.slots.default)
1539
+ }, key);
1540
+ case "List":
1541
+ return /* @__PURE__ */ jsx(ElmList, {
1542
+ listStyle: component.props?.listStyle === "unordered" ? "unordered" : "ordered",
1543
+ children: render(component.slots.default)
1544
+ }, key);
1545
+ case "BlockQuote":
1546
+ return /* @__PURE__ */ jsx(ElmBlockQuote, {
1547
+ cite: component.props?.cite,
1548
+ children: render(component.slots.default)
1549
+ }, key);
1550
+ case "Callout":
1551
+ return /* @__PURE__ */ jsx(ElmCallout, {
1552
+ type: component.props?.type,
1553
+ children: render(component.slots.default)
1554
+ }, key);
1555
+ case "Divider":
1556
+ return /* @__PURE__ */ jsx(ElmDivider, {}, key);
1557
+ case "Toggle":
1558
+ return /* @__PURE__ */ jsxs(ElmToggle, {
1559
+ children: [
1560
+ /* @__PURE__ */ jsx("div", {
1561
+ "q:slot": "summary",
1562
+ children: render(component.slots.summary)
1563
+ }),
1564
+ render(component.slots.default)
1565
+ ]
1566
+ }, key);
1567
+ case "Bookmark":
1568
+ return /* @__PURE__ */ jsx(ElmBookmark, {
1569
+ url: component.props.url,
1570
+ title: component.props.title,
1571
+ description: component.props.description,
1572
+ image: component.props.image
1573
+ }, key);
1574
+ case "File":
1575
+ return /* @__PURE__ */ jsx(ElmFile, {
1576
+ src: component.props.src,
1577
+ name: component.props.name
1578
+ }, key);
1579
+ case "Image":
1580
+ return /* @__PURE__ */ jsx(ElmBlockImage, {
1581
+ src: component.props.src,
1582
+ alt: component.props.alt,
1583
+ enableModal: true
1584
+ }, key);
1585
+ case "CodeBlock":
1586
+ return /* @__PURE__ */ jsx(ElmCodeBlock, {
1587
+ code: component.props.code,
1588
+ language: component.props.language,
1589
+ children: component.slots?.default && render(component.slots.default)
1590
+ }, key);
1591
+ case "Katex":
1592
+ return /* @__PURE__ */ jsx(ElmKatex, {
1593
+ expression: component.props.expression,
1594
+ block: true
1595
+ }, key);
1596
+ case "Table":
1597
+ return /* @__PURE__ */ jsxs(ElmTable, {
1598
+ caption: component.props?.caption,
1599
+ hasRowHeader: component.props?.hasRowHeader,
1600
+ children: [
1601
+ component.slots.header && /* @__PURE__ */ jsx(ElmTableHeader, {
1602
+ children: render(component.slots.header)
1603
+ }),
1604
+ /* @__PURE__ */ jsx(ElmTableBody, {
1605
+ children: render(component.slots.body)
1606
+ })
1607
+ ]
1608
+ }, key);
1609
+ case "TableRow":
1610
+ return /* @__PURE__ */ jsx(ElmTableRow, {
1611
+ children: render(component.slots.default)
1612
+ }, key);
1613
+ case "TableCell":
1614
+ return /* @__PURE__ */ jsx(ElmTableCell, {
1615
+ children: render(component.slots.default)
1616
+ }, key);
1617
+ case "ColumnList":
1618
+ return /* @__PURE__ */ jsx("div", {
1619
+ class: "column-list",
1620
+ children: render(component.slots.default)
1621
+ }, key);
1622
+ case "Column":
1623
+ return /* @__PURE__ */ jsx("div", {
1624
+ class: "column",
1625
+ style: {
1626
+ "--width-ratio": component.props?.widthRatio || 1,
1627
+ width: component.props?.widthRatio ? `${component.props.widthRatio * 100}%` : void 0
1628
+ },
1629
+ children: render(component.slots.default)
1630
+ }, key);
1631
+ default:
1632
+ return /* @__PURE__ */ jsxs("div", {
1633
+ style: {
1634
+ color: "red",
1635
+ border: "1px solid red"
1636
+ },
1637
+ children: [
1638
+ "Unsupported component type: ",
1639
+ component.type
1640
+ ]
1641
+ }, key);
1642
+ }
1643
+ });
1644
+ };
1645
+ return /* @__PURE__ */ jsx("div", {
1646
+ class: "jarkup-body",
1647
+ children: render(props.jsonComponents)
1648
+ });
1649
+ });
1650
+ export {
1651
+ ElmBlockFallback,
1652
+ ElmBlockImage,
1653
+ ElmBlockQuote,
1654
+ ElmBookmark,
1655
+ ElmCallout,
1656
+ ElmCodeBlock,
1657
+ ElmDivider,
1658
+ ElmDotLoadingIcon,
1659
+ ElmFile,
1660
+ ElmFragmentIdentifier,
1661
+ ElmHeading,
1662
+ ElmInlineIcon,
1663
+ ElmInlineText,
1664
+ ElmJarkup,
1665
+ ElmKatex,
1666
+ ElmLanguageIcon,
1667
+ ElmList,
1668
+ ElmMdiIcon,
1669
+ ElmParagraph,
1670
+ ElmRectangleWave,
1671
+ ElmShikiHighlighter,
1672
+ ElmTable,
1673
+ ElmTableBody,
1674
+ ElmTableCell,
1675
+ ElmTableHeader,
1676
+ ElmTableRow,
1677
+ ElmToggle
1678
+ };