Init Commit

This commit is contained in:
2026-05-18 11:46:02 +02:00
commit 2de3502fbc
382 changed files with 19583 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE image/jpg
AddOutputFilterByType DEFLATE image/png
AddOutputFilterByType DEFLATE image/gif
AddOutputFilterByType DEFLATE image/jpeg
AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
Binary file not shown.
@@ -0,0 +1,76 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Copyright (C) 2025 by original authors @ fontello.com</metadata>
<defs>
<font id="adritian-icons" horiz-adv-x="1000" >
<font-face font-family="adritian-icons" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="threads" unicode="&#xe800;" d="M648 465q2 0 6-2 2-2 6-4 86-41 121-119 24-54 16-131t-76-148q-100-104-278-104h-2q-205 2-312 137-96 121-98 332 2 211 98 332 107 135 312 137h2q207-2 317-137 55-66 80-160l-80-19q-20 74-63 127-86 105-254 107-168-2-252-107-76-98-78-280 2-181 78-279 84-106 252-107 145 0 221 80 47 48 53 99t-10 88q-19 43-62 68-12-78-49-127-51-64-143-68-70-4-125 31-60 43-66 116-2 72 47 117 50 45 138 53 63 1 118-6-8 43-30 68-29 35-90 35h-2q-25 0-54-10-28-11-49-43l-68 47q58 86 171 88h2q188-6 203-211h-1 1z m-304-134q2-36 33-53 33-18 72-16 39 0 74 28 34 27 43 115-39 10-85 10-14 0-28-2-62-4-88-28-25-25-21-53v-1z" horiz-adv-x="875" />
<glyph glyph-name="bluesky" unicode="&#xe801;" d="M797 350h-2q-10 2-18 4 6-2 10-2t10-2z m-234 133q-41 80-131 189-88 112-188 186-92 62-137 66-42 6-64-9-27-14-35-45t-8-57q0-22 6-86 4-64 10-129 7-66 13-90 32-95 118-133 84-35 181-25 6 2 12 2 4 0 8 2l-20-4q-94-12-162-45t-72-99q-2-69 101-188 118-113 190-88t115 117q41 90 63 172v2q5-17 11-39 20-80 55-158 37-76 105-92 71-16 192 86 96 102 96 170-2 70-67 109-64 41-158 53-2 0-2 2-10 0-18 2 6-2 10-2t10-2q98-10 182 25 86 38 117 133 6 24 13 90 6 65 10 129 6 64 6 86 0 25-8 57t-35 45q-19 13-64 9t-137-66q-100-74-188-186-89-109-130-189z" horiz-adv-x="1125" />
<glyph glyph-name="x-twitter" unicode="&#xe802;" d="M760 832h138-138 138l-300-343 353-469h-277l-217 283-248-283h-139l323 367-340 445h283l197-259 227 259z m-49-730h78-78 78l-494 652h-82l498-652z" horiz-adv-x="1000" />
<glyph glyph-name="email" unicode="&#xe803;" d="M0 62l0 576q0 1 3 19l339-290-338-325q-4 14-4 20z m45 635q7 3 17 3l913 0q9 0 18-3l-340-291-45-36-89-73-89 73-45 36z m1-694l341 327 132-107 132 107 341-327q-8-3-17-3l-913 0q-8 0-16 3z m650 364l338 290q3-9 3-19l0-576q0-9-3-20z" horiz-adv-x="1037" />
<glyph glyph-name="tiktok" unicode="&#xe804;" d="M875 516q-133 0-240 76v-347q0-102-57-182-55-80-148-117-96-34-190-10t-162 100q-64 76-76 173-10 96 37 186 49 88 135 133 88 43 187 31v-176q-46 14-89-2-43-13-73-52-27-39-27-86 0-45 27-86 30-37 74-51 43-16 90 0 45 16 73 53t27 86v681h172q0-21 4-43 21-99 105-156 61-39 131-41v-170z" horiz-adv-x="875" />
<glyph glyph-name="search" unicode="&#xe805;" d="M680 256c-55-55-126-83-197-83-65 0-129 23-182 66l-51-125-130-130c-14-10-29-15-45-15-41 0-75 37-75 77 0 16 5 32 15 45l129 130 126 51c-44 52-66 117-66 182 0 152 127 277 279 277 150 0 277-128 277-278 0-72-26-144-80-197z m-319 75c34-33 78-50 122-50 92 0 170 77 170 172 0 93-79 170-170 170-94 0-172-79-172-170 0-45 17-89 50-122z" horiz-adv-x="760" />
<glyph glyph-name="user" unicode="&#xf007;" d="M438 350c-139 0-250 112-250 250s111 250 250 250 250-112 250-250-112-250-250-250z m175-62c144 0 262-118 262-263v-81c0-52-42-94-94-94h-687c-52 0-94 42-94 94v81c0 145 118 263 263 263h32c44-20 92-32 143-32s99 12 142 32h33z" horiz-adv-x="875" />
<glyph glyph-name="table-list" unicode="&#xf00b;" d="M0 739q2 52 37 88 35 35 88 37h750q53-2 88-37t37-88v-625q-2-53-37-88t-88-37h-750q-53 2-88 37t-37 88v625z m125 0v-125 125-125h125v125h-125z m750 0h-500 500-500v-125h500v125z m-750-250v-125 125-125h125v125h-125z m750 0h-500 500-500v-125h500v125z m-750-250v-125 125-125h125v125h-125z m750 0h-500 500-500v-125h500v125z" horiz-adv-x="1000" />
<glyph glyph-name="download" unicode="&#xf019;" d="M563 864q0 27-18 45-18 17-45 17t-45-17-17-45v-475l-143 145q-20 17-45 17t-45-17q-17-20-17-45t17-45l250-250q20-18 45-18t45 18l250 250q18 19 18 45t-18 45q-20 17-45 17t-45-17l-142-145v475z m-438-625q-53-2-88-37-35-36-37-88v-63q2-53 37-88t88-37h750q53 2 88 37t37 88v63q-2 52-37 88t-88 37h-197l-90-88q-39-37-88-37-51 0-88 37l-88 88h-199z m719-110q43-4 47-47-4-42-47-46-43 4-47 46 4 43 47 47z" horiz-adv-x="1000" />
<glyph glyph-name="circle-info" unicode="&#xf05a;" d="M500-74q137 2 250 67 113 66 184 183 66 119 66 250t-66 250q-71 117-184 184-113 64-250 66-137-2-250-66-113-67-184-184-66-119-66-250t66-250q71-117 184-183 113-65 250-67z m-78 344h47-47 47v125h-47q-43 4-47 47 4 43 47 47h94q43-4 47-47v-172h15q43-4 47-47-4-43-47-47h-156q-43 4-47 47 4 43 47 47z m78 406q27 0 45-17 18-18 18-45t-18-45-45-18-45 18-17 45 17 45 45 17z" horiz-adv-x="1000" />
<glyph glyph-name="square-twitter" unicode="&#xf081;" d="M125 864q-53-2-88-37-35-36-37-88v-625q2-53 37-88t88-37h625q53 2 88 37t37 88v625q-2 52-37 88t-88 37h-625z m561-326q0-88-41-170-43-84-123-139-82-55-200-57-111 2-197 57h31q92 0 159 55-43 0-75 25-33 23-45 63 28-4 57 1-43 10-72 45-30 34-30 82v2q26-15 59-17-27 17-43 47-16 27-16 60 2 35 18 65 49-59 117-94 67-35 147-41-10 68 27 111 37 45 100 47 56-2 91-41 45 10 82 31-15-45-56-70 39 4 74 20-27-39-64-67v-15z" horiz-adv-x="875" />
<glyph glyph-name="square-facebook" unicode="&#xf082;" d="M125 864q-53-2-88-37-35-36-37-88v-625q2-53 37-88t88-37h191v285h-103v152h103v67q-1 252 245 248 25 0 58-4 31-4 51-8v-139q-20 2-59 2-60 0-88-25-25-27-25-86v-55h164l-29-152h-135v-285h252q53 2 88 37t37 88v625q-2 52-37 88t-88 37h-625z" horiz-adv-x="875" />
<glyph glyph-name="linkedin" unicode="&#xf08c;" d="M813 864h-750 750-750q-28 0-45-18-18-19-18-45v-750q0-25 18-45 17-17 45-17h750q27 0 44 17 18 20 18 45v750q0 26-18 45-17 18-44 18z m-549-750h-129 129-129v418h131v-418h-2z m-65 474q-31 0-52 22-22 21-22 53 0 33 22 54t52 22q33 0 53-22 21-21 23-54-2-32-23-53-20-22-53-22z m551-474h-129 129-129v203q2 39-10 74-9 33-58 37-49-2-65-33-13-31-11-74v-207h-131v418h125v-57h2q11 25 43 45 31 21 80 21 95-1 127-56 31-57 27-143v-228z" horiz-adv-x="875" />
<glyph glyph-name="square-github" unicode="&#xf092;" d="M875 739q-2 52-37 88-35 35-88 37h-625q-53-2-88-37t-37-88v-625q2-53 37-88t88-37h625q53 2 88 37t37 88v625z m-355-610v110q-2 45-22 58 57 4 102 28 43 25 47 115-2 49-34 76 2 8 6 31 2 24-10 57-23 4-54-14t-35-19q-39 10-80 10-43 0-83-10-3 2-35 19t-54 14q-12-33-10-57 4-23 8-31-32-27-32-76 2-90 45-113 43-26 100-30-14-11-20-43-15-7-44-7-28 0-51 35-14 21-32 27-15 6-17 6-22-2-14-10 8-10 12-10 16-9 25-27t10-20q20-41 63-41 43-1 46 2v-74q0-4 2-6 0-15-23-15-98 35-158 117-59 84-61 193 2 137 90 225t227 90q136-2 228-90t96-225q-2-109-61-193-56-82-156-117-23 0-21 15z m-178 108q0 6 6 6 8 0 8-4t-6-6q-6 0-8 4z m-18-6q-6 0-8 4 2 4 8 6 6 0 8-6-2-4-8-4z m-27 4q-6 2-6 6 2 4 8 4 6-2 6-8-2-4-8-2z m-25 13q-4 6-2 8 3 4 9 0 4-6 2-8-4-3-9 0z m-16 20q-4 6 0 8t8-2q2-6 0-8-4-2-8 2z m-12 18q-4 4-2 7 4 2 8-2 2-3 0-5-4-4-6 0z m-12 13q-3 2-3 4 2 2 5 2 4-4 2-6 0-2-4 0z" horiz-adv-x="875" />
<glyph glyph-name="circle-arrow-left" unicode="&#xf0a8;" d="M1000 426q-2 137-66 250-67 114-184 184-119 66-250 66t-250-66q-117-70-184-184-64-113-66-250 2-136 66-250 67-113 184-183 119-67 250-67t250 67q117 70 184 183 64 114 66 250z m-580 252q33 28 66 0 28-33 0-66l-138-139h418q43-4 47-47-4-43-47-47h-418l138-138q28-34 0-67-33-27-66 0l-219 219q-27 33 0 66l219 219z" horiz-adv-x="1000" />
<glyph glyph-name="circle-arrow-right" unicode="&#xf0a9;" d="M0 426q2-136 66-250 67-113 184-183 119-67 250-67t250 67q117 70 184 183 64 114 66 250-2 137-66 250-67 114-184 184-119 66-250 66t-250-66q-117-70-184-184-64-113-66-250z m580-252q-33-27-66 0-28 33 0 67l138 138h-418q-43 4-46 47 3 43 46 47h418l-138 139q-28 33 0 66 33 28 66 0l219-219q27-33 0-66l-219-219z" horiz-adv-x="1000" />
<glyph glyph-name="circle-arrow-up" unicode="&#xf0aa;" d="M500-74q137 2 250 67 113 66 184 183 66 119 66 250t-66 250q-71 117-184 184-113 64-250 66-137-2-250-66-113-67-184-184-66-119-66-250t66-250q71-117 184-183 113-65 250-67z m252 580q27-33 0-66-33-27-66 0l-139 139v-418q-4-43-47-47-43 4-47 47v418l-138-139q-34-27-67 0-27 33 0 66l219 219q33 27 66 0l219-219z" horiz-adv-x="1000" />
<glyph glyph-name="circle-arrow-down" unicode="&#xf0ab;" d="M500 926q-137-2-250-66-113-67-184-184-66-119-66-250t66-250q71-117 184-183 113-65 250-67 137 2 250 67 113 66 184 183 66 119 66 250t-66 250q-71 117-184 184-113 64-250 66z m-252-580q-27 33 0 67 33 27 67 0l138-139v418q4 43 47 47 43-4 47-47v-418l139 139q33 27 66 0 27-34 0-67l-219-219q-33-27-66 0l-219 219z" horiz-adv-x="1000" />
<glyph glyph-name="quote-left" unicode="&#xf10d;" d="M0 504q2 100 68 166t166 69h16q27 0 45-18t18-45-18-45-45-17h-16q-46-2-78-32-29-31-31-78v-15h125q53-2 88-37t37-88v-125q-2-53-37-88t-88-37h-125q-53 2-88 37t-37 88v265z m500 0q2 100 68 166t166 69h16q27 0 45-18t18-45-18-45-45-17h-16q-46-2-78-32-29-31-31-78v-15h125q53-2 88-37t37-88v-125q-2-53-37-88t-88-37h-125q-53 2-88 37t-37 88v265z" horiz-adv-x="875" />
<glyph glyph-name="face-smile" unicode="&#xf118;" d="M906 426q0 112-54 203-53 92-149 149-96 54-203 54t-203-54q-96-57-149-149-54-91-54-203t54-203q53-92 149-148 96-55 203-55t203 55q96 56 149 148 54 92 54 203z m-906 0q2 137 66 250 67 114 184 184 119 66 250 66t250-66q117-70 184-184 64-113 66-250-2-136-66-250-67-113-184-183-119-67-250-67t-250 67q-117 70-184 183-64 114-66 250z m348-121q21-25 60-45 37-19 92-21 55 2 92 21 39 20 60 45 34 29 67 2 29-31 4-66-33-35-88-65-57-29-135-31-78 2-135 31-54 30-88 65-25 35 4 66 34 27 67-2z m-67 215q2 27 20 45 17 17 43 17 27 0 45-17t17-45-17-45-45-18q-26 0-43 18t-20 45z m375 62q28 0 45-17 18-18 18-45t-18-45-45-18q-25 0-43 18t-19 45q2 27 19 45t43 17z" horiz-adv-x="1000" />
<glyph glyph-name="square-arrow-up-right" unicode="&#xf14c;" d="M750 864q53-2 88-37 35-36 37-88v-625q-2-53-37-88t-88-37h-625q-53 2-88 37t-37 88v625q2 52 37 88t88 37h625z m-437-219q-43-4-47-47 4-43 47-47h183l-264-263q-27-34 0-67 34-27 67 0l264 264v-199q3-43 46-47 43 4 47 47v312q-4 43-47 47h-296z" horiz-adv-x="875" />
<glyph glyph-name="youtube" unicode="&#xf167;" d="M1074 684q-23 72-95 96-47 10-145 15-98 4-182 6h-179q-84-2-182-6-98-5-144-15-73-24-96-96-10-45-16-103-4-61-6-108v-96q2-46 6-105 6-61 16-106 23-72 96-93 46-10 144-16 98-4 182-6h179q84 2 182 6 98 6 145 16 72 21 95 93 10 45 16 106 4 59 6 105v96q-2 47-6 108-6 58-16 103z m-621-418v318-318 318l279-158-279-160z" horiz-adv-x="1125" />
<glyph glyph-name="square-xing" unicode="&#xf169;" d="M875 739q-2 52-37 88-35 35-88 37h-625q-53-2-88-37t-37-88v-625q2-53 37-88t88-37h625q53 2 88 37t37 88v625z m-691-438q-18 2-12 20l96 170-61 105q-8 18 12 20h90q15 0 25-18l63-107q-4-6-98-172-10-18-26-18h-89z m318 65l129-233q6-17-12-19h-92q-15 0-25 17l-129 235q6 9 125 216 20 36 41 75 18 31 37 64 10 18 24 18h91q18-2 12-20l-201-353z" horiz-adv-x="875" />
<glyph glyph-name="stack-overflow" unicode="&#xf16c;" d="M568 319l-382 80 382-80-382 80-16-76 383-80z m100 170l-301 250 301-250-301 250-49-61 299-250z m-61-78l-355 166 355-166-355 166-31-73 353-164z m-95 453l-63-47 63 47-63-47 233-313 62 47z m41-641h-391 391-391v-78h391v78z m76-156h-545 545-545v234h-78v-312h701v312h-78v-234z" horiz-adv-x="750" />
<glyph glyph-name="instagram" unicode="&#xf16d;" d="M438 651q-96-2-159-67-64-62-66-158 2-95 66-158 63-64 159-66 95 2 158 66 64 63 66 158-2 96-66 158-63 65-158 67z m0-371q-63 2-104 43-41 41-43 103 2 63 43 104t104 43q62-2 103-43t43-104q-2-62-43-103t-103-43z m287 381q-6-49-53-53-49 4-53 53 0 21 16 37 13 13 37 13 21 0 37-13 14-16 16-37z m148-55q0 107-72 184-76 72-182 72-39 2-111 2h-141q-72 0-109-2-106 0-184-72-72-77-70-182-4-39-4-111v-141t4-109q-2-108 70-184 76-72 184-70 37-2 109-4h141q72 2 111 4 106-2 182 70 72 76 72 184 2 39 2 109v141q0 72-2 111v-2z m-94-438q-25-58-84-84-39-13-105-15t-121-2h-63q-54 0-121 2-64 2-105 15-59 26-84 84-14 41-16 106-2 66-2 121v62q0 55 2 122t16 105q25 59 84 84 41 14 105 16 67 4 121 2h63q54 0 121-2t105-16q59-25 84-84 14-39 16-105 4-67 2-122v-62q2-55-2-121-2-67-16-106z" horiz-adv-x="875" />
<glyph glyph-name="dribbble" unicode="&#xf17d;" d="M500 911q-135-2-244-67-109-64-174-174-64-109-66-244 2-135 66-244t174-174 244-66q135 2 244 66t174 174 66 244q-2 135-66 244t-174 174-244 67z m320-223q90-109 94-258-14 4-98 14t-191-2q-16 39-35 82 113 51 170 101 55 49 60 63z m-47 47q-3-12-54-59-53-47-162-90-53 94-98 162-45 67-57 81 100 23 198-2 97-24 173-92z m-449 64q10-11 55-78 45-66 98-160-149-37-256-45t-125-6q19 98 80 172 60 76 148 117z m-238-373v12q20-2 143 6 123 10 283 53 17-36 33-71-113-33-207-111t-145-166q-103 113-107 277z m160-326q33 68 117 141 84 72 211 117 43-115 63-199 21-84 25-114-101-43-213-31-109 14-203 86z m485-18q-2 22-22 102-18 80-59 193 100 14 172 0 73-11 86-17-13-86-60-158-47-71-117-120z" horiz-adv-x="1000" />
<glyph glyph-name="behance" unicode="&#xf1b4;" d="M453 463q94 41 94 145-2 101-65 137-64 37-156 35h-326v-694h336q98 0 168 49 72 47 76 153 0 134-127 175z m-301 198h143-143 143q43 2 72-16 31-16 31-63 0-44-25-64t-66-20h-155v163z m163-457h-163 163-163v191h166q106 4 110-100-2-50-33-72-32-19-80-19z m701 470h-282 282-282v69h282v-69z m109-343q0 113-62 191-63 76-182 80-115-2-186-76-68-74-70-190 0-119 68-189 69-72 188-74 180 0 234 170h-121q-12-34-43-49-33-18-66-18-121 4-123 129h361q2 12 2 26z m-363 60q11 104 115 107 102-3 109-107h-224z" horiz-adv-x="1125" />
<glyph glyph-name="file-pdf" unicode="&#xf1c1;" d="M0 801q2 53 37 88 35 35 88 37h313v-250q0-27 17-45t45-17h250v-282h-406q-53-1-88-37t-37-88v-281h-94q-53 2-88 37t-37 88v750z m750-125h-250 250-250v250l250-250z m-406-437h62-62 62q47-2 78-32 30-31 32-78-2-47-32-78-31-29-78-31h-31v-63q-2-29-31-31-29 2-31 31v250q2 30 31 32z m62-157q43 4 47 47-4 43-47 47h-31v-94h31z m188 157h62-62 62q39-2 67-28 25-27 27-66v-125q-2-39-27-67-28-25-67-27h-62q-29 2-31 31v250q2 30 31 32z m62-250q30 2 32 31v125q-2 29-32 31h-31v-187h31z m157 218q2 30 31 32h94q29-2 31-32-2-29-31-31h-63v-62h63q29-2 31-32-2-29-31-31h-63v-94q-2-29-31-31-29 2-31 31v250z" horiz-adv-x="1000" />
<glyph glyph-name="codepen" unicode="&#xf1cb;" d="M981 614l-458 304 458-304-458 304q-23 16-46 0l-457-304q-20-12-20-35v-305q0-22 20-35l457-305q23-16 46 0l458 305q19 13 19 35v305q0 23-19 35z m-438 189l336-224-336 224 336-224-150-100-186 123v201z m-86 0v-201 201-201l-185-123-151 100 336 224z m-371-305l107-72-107 72 107-72-107-72v144z m371-449l-336 225 336-225-336 225 151 99 185-123v-201z m43 276l-152 101 152-101-152 101 152 102 152-102-152-101z m43-276v201-201 201l186 123 150-99-336-225z m371 305l-107 72 107-72-107 72 107 72v-144z" horiz-adv-x="1000" />
<glyph glyph-name="yelp" unicode="&#xf1e9;" d="M84 457l195-95-195 95 195-95q28-16 24-45-2-27-33-39l-209-51q-22-6-38 6t-19 31q-10 86 18 166 7 20 25 27 19 8 37 0z m86-468q70-47 154-63 20-2 37 10 14 14 16 33l8 217q-2 31-28 43-27 10-50-12l-145-160q-14-16-12-35 4-22 20-33z m283 215l115-184-115 184 115-184q12-16 32-20t35 10q66 55 103 131 8 20 0 37-7 20-27 26l-205 66q-31 8-49-14-17-23-4-52z m291 259q-35 78-99 135-16 14-36 10-19-2-31-20l-121-177q-16-30 2-53 16-24 47-16l209 59q19 6 27 25 10 18 2 37z m-623 405q-17-10-23-28-6-19 4-35l203-353q21-28 51-20t33 43v406q0 20-14 34-16 13-35 11-113-10-219-58z" horiz-adv-x="750" />
<glyph glyph-name="medium" unicode="&#xf23a;" d="M0 788h875v-876h-875v876z m727-208v10h-162l-116-289-132 289h-170v-10l54-66c6-5 9-12 8-19v-260c1-9-2-19-8-26l-62-74v-10h176v10l-62 74c-7 7-10 17-9 26v225l154-335h18l132 335v-268c0-7 0-8-5-13l-47-46v-9h230v10l-46 45c-4 2-6 8-5 13v330c-1 5 1 10 5 13z" horiz-adv-x="875" />
<glyph glyph-name="meetup" unicode="&#xf2e0;" d="M193 118q2-20-15-26-18-2-24 16-2 19 16 25 18 2 23-15z m280-141q-20-16-8-39 17-20 39-6 19 16 8 39-16 20-39 6z m-168 904q19 6 17 28-6 19-27 17-20-8-18-27 6-22 28-18z m-239-396q-33 19-58-12-20-35 12-60 33-20 58 9 20 37-12 63z m532 334q33 23 15 58-23 32-58 16-32-23-14-61 22-31 57-13z m-373-113q23 19 9 44-19 24-46 10-22-21-8-47 19-23 45-7z m728-305q-25-8-21-33 8-24 31-22 23 8 21 33-7 24-31 22z m76 109q-4 18-23 16-18-4-16-24 6-17 26-15 17 6 13 23z m-156 145q-25-22-10-51 22-25 51-10 26 22 10 51-22 27-51 10z m-12-272q37-66 24-136-14-71-76-116-51-37-110-35-23-68-86-88-64-19-121 26 0-2-2-2l-4-4q-60-39-125-28-66 12-109 71-27 43-29 92-65 13-98 60-35 49-33 108 4 58 51 105-39 72-8 141 33 68 113 84 41 99 137 132 94 34 181-27 104 29 182-29 78-61 74-168 61-24 75-82 11-59-36-104z m-136-146q-10 25-41 25-18 2-30 8-11 4-13 21-2 24 9 59 14 35 32 72 15 37 27 67 12 31 10 52-6 34-26 45t-41 12q-33 0-41-8v-2h-2q-7-9-21 2l-4 4q-14 16-33 22-31 4-53-20l-4-4q-6-6-15-11t-20-2q-6 2-19 9l-28 12q-25 10-53-2-27-14-41-37-17-33-41-105-21-73-35-118-4-15-6-21-11-41 10-67 24-27 63-25 29-2 48 33 4 8 18 41 14 35 29 76 14 40 26 69t15 35q8 14 28 10 15-12 11-30 0-9-9-35t-22-52q-21-51-25-65-2-33 27-37t49 29q4 10 23 49l45 90q24 45 28 55 11 15 23 15 14 4 14-21-2-8-12-30t-21-48q-16-30-28-55-11-27-15-39-6-31 7-59 14-25 41-41 24-9 69-11 47-2 47 33z m9-180q-31-27-9-63 25-33 62-11 31 25 12 62-27 34-65 12z" horiz-adv-x="1000" />
<glyph glyph-name="cloud-arrow-down" unicode="&#xf381;" d="M281-11q-119 4-199 82-78 80-82 199 2 94 53 164t135 102v15q3 133 91 221t221 92q88-2 158-43 71-43 114-114 44 32 103 32 80-2 133-55t55-133q0-35-12-68 86-18 142-86 55-66 57-158-2-106-72-178-72-70-178-72h-719z m155 326l156-156-156 156 156-156q33-28 66 0l157 156q27 33 0 66-34 28-67 0l-76-76v262q-4 43-47 47-43-4-47-47v-262l-76 76q-33 28-66 0-28-33 0-66z" horiz-adv-x="1250" />
</font>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.
Binary file not shown.
Binary file not shown.
+222
View File
@@ -0,0 +1,222 @@
{
"name": "adritian-icons",
"css_prefix_text": "icon-",
"css_use_suffix": false,
"hinting": true,
"units_per_em": 1000,
"ascent": 850,
"glyphs": [
{
"uid": "22cf3e1e61eb72f5709bdd9ba87fb460",
"css": "threads",
"code": 59392,
"src": "fa6brands"
},
{
"uid": "f17c7d2c6d0538532c9b1bfe27bc6086",
"css": "bluesky",
"code": 59393,
"src": "fa6brands"
},
{
"uid": "7bd660dcae7933286cc6cd48008a350f",
"css": "x-twitter",
"code": 59394,
"src": "fa6brands"
},
{
"uid": "78a202510fab97ccf154c90c63017fc7",
"css": "square-twitter",
"code": 61569,
"src": "fa6brands"
},
{
"uid": "80533f94e92fbff05d81c4198edb1f8b",
"css": "behance",
"code": 61876,
"src": "fa6brands"
},
{
"uid": "789b202e8bb7dfd894d7de63433472cc",
"css": "dribbble",
"code": 61821,
"src": "fa6brands"
},
{
"uid": "f9bc495af91e43a90d3ea50a7e951006",
"css": "instagram",
"code": 61805,
"src": "fa6brands"
},
{
"uid": "da346ddd4a063e1059216662e6d0a761",
"css": "user",
"code": 61447,
"src": "fa5solid"
},
{
"uid": "0225237a65185e82049f6cf4af0c0a5f",
"css": "face-smile",
"code": 61720,
"src": "fa6regular"
},
{
"uid": "de7a531bc39f744ea8d7dde2bc4cec7d",
"css": "youtube",
"code": 61799,
"src": "fa6brands"
},
{
"uid": "0d6904fd6d71bb15eb031f2a1808383d",
"css": "quote-left",
"code": 61709,
"src": "fa6solid"
},
{
"uid": "a58032f4aafd0eec54803075f5b320d4",
"css": "email",
"code": 59395,
"src": "zocial"
},
{
"uid": "e812a789980550da24341fcbb4e52a52",
"css": "codepen",
"code": 61899,
"src": "fa6brands"
},
{
"uid": "1b5d1a165d2a0faed2aebda42e980ec4",
"css": "square-facebook",
"code": 61570,
"src": "fa6brands"
},
{
"uid": "4d8f2dbd4bf4f195e759c1121b364c8f",
"css": "square-github",
"code": 61586,
"src": "fa6brands"
},
{
"uid": "91fb752fe999405a8dde5220cfb532a4",
"css": "linkedin",
"code": 61580,
"src": "fa6brands"
},
{
"uid": "682603a472a824287f24a93476cce10c",
"css": "yelp",
"code": 61929,
"src": "fa6brands"
},
{
"uid": "4b1676624d44038d36d33bd538d549fe",
"css": "download",
"code": 61465,
"src": "fa6solid"
},
{
"uid": "1c9c53430169877cd218b79d3b1780bd",
"css": "file-pdf",
"code": 61889,
"src": "fa6solid"
},
{
"uid": "6c1121466423a9681a8408e889f5695d",
"css": "circle-arrow-left",
"code": 61608,
"src": "fa6solid"
},
{
"uid": "919ee1a7ee21d14e4d40122937a33160",
"css": "circle-arrow-right",
"code": 61609,
"src": "fa6solid"
},
{
"uid": "304f96ad84267f3857957b12d15ac009",
"css": "circle-arrow-up",
"code": 61610,
"src": "fa6solid"
},
{
"uid": "c9c307d1fa78fa912df2b7a1c7b1f53b",
"css": "circle-arrow-down",
"code": 61611,
"src": "fa6solid"
},
{
"uid": "6d60d32286fd0fd7967089117ba49da5",
"css": "cloud-arrow-down",
"code": 62337,
"src": "fa6solid"
},
{
"uid": "14fb7c860f56db56ef65c1d41a31488d",
"css": "square-arrow-up-right",
"code": 61772,
"src": "fa6solid"
},
{
"uid": "89815b2565674eb5018b3bd9b07b12d4",
"css": "circle-info",
"code": 61530,
"src": "fa6solid"
},
{
"uid": "dcf0306d04831e66595e9ff59f9f95c7",
"css": "table-list",
"code": 61451,
"src": "fa6solid"
},
{
"uid": "4bef0175d5b8f8b2a32bfeddf99621b5",
"css": "square-xing",
"code": 61801,
"src": "fa6brands"
},
{
"uid": "d1daf4965871e9f5774809ff067eb2a1",
"css": "medium",
"code": 62010,
"src": "fa5brands"
},
{
"uid": "6dc762948858f158982bd0ff5bf82a13",
"css": "meetup",
"code": 62176,
"src": "fa6brands"
},
{
"uid": "e58f71a3b371f724de2fc2cad9f6db22",
"css": "stack-overflow",
"code": 61804,
"src": "fa6brands"
},
{
"uid": "c6856fc28332f168e75ba0e10ebd2a03",
"css": "tiktok",
"code": 59396,
"src": "fa6brands"
},
{
"uid": "id8wp0cygl9trzbhlbd9o0fygiesi629",
"css": "search",
"code": 59397,
"src": "modernpics"
},
{
"uid": "da1cfcf95ecf3727f4f9870f036fbe47",
"css": "freelancermap",
"code": 59392,
"src": "custom_icons",
"selected": false,
"svg": {
"path": "M500 0C223.8 0 0 223.8 0 500S223.8 1000 500 1000L499.5 941.8H500C744 941.8 941.8 744 941.8 500H1000C1000 223.8 776.2 0 500 0M500 883.6C288.2 883.6 116.4 711.8 116.4 500S288.2 116.3 500 116.3 883.6 288.1 883.6 499.9 711.8 883.5 500 883.5ZM763.6 692C912.6 481.6 770.8 266.5 644.2 208.1 493.8 232 358.4 371.6 342.9 537.7 460.3 738.4 697.2 713.6 763.7 692M350.7 631.6C361.7 699.8 380.9 766.9 421.6 816.5 564.3 853.4 690.4 783.9 752.6 706.4 621.3 767.4 475 732.4 350.8 631.6M196.1 378C117 586.1 251.3 758.9 390.9 807.3 346.1 752.7 313.7 675.5 305.4 599 245.8 539.4 204.9 463.7 196 378M596.3 188.8C467.5 146.8 344.1 196.7 273.7 263.6 275.5 350 289.3 417.5 311.5 474.8 342 329.8 459.5 210.6 596.3 188.8",
"width": 1000
},
"search": [
"freelancermap"
]
}
]
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,199 @@
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 100;
font-display: swap;
src: url("Inter-Thin-BETA.woff2") format("woff2"),
url("Inter-Thin-BETA.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 100;
font-display: swap;
src: url("Inter-ThinItalic-BETA.woff2") format("woff2"),
url("Inter-ThinItalic-BETA.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 200;
font-display: swap;
src: url("Inter-ExtraLight-BETA.woff2") format("woff2"),
url("Inter-ExtraLight-BETA.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 200;
font-display: swap;
src: url("Inter-ExtraLightItalic-BETA.woff2") format("woff2"),
url("Inter-ExtraLightItalic-BETA.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 300;
font-display: swap;
src: url("Inter-Light-BETA.woff2") format("woff2"),
url("Inter-Light-BETA.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 300;
font-display: swap;
src: url("Inter-LightItalic-BETA.woff2") format("woff2"),
url("Inter-LightItalic-BETA.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("Inter-Regular.woff2") format("woff2"),
url("Inter-Regular.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 400;
font-display: swap;
src: url("Inter-Italic.woff2") format("woff2"),
url("Inter-Italic.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url("Inter-Medium.woff2") format("woff2"),
url("Inter-Medium.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 500;
font-display: swap;
src: url("Inter-MediumItalic.woff2") format("woff2"),
url("Inter-MediumItalic.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("Inter-SemiBold.woff2") format("woff2"),
url("Inter-SemiBold.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 600;
font-display: swap;
src: url("Inter-SemiBoldItalic.woff2") format("woff2"),
url("Inter-SemiBoldItalic.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url("Inter-Bold.woff2") format("woff2"),
url("Inter-Bold.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 700;
font-display: swap;
src: url("Inter-BoldItalic.woff2") format("woff2"),
url("Inter-BoldItalic.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 800;
font-display: swap;
src: url("Inter-ExtraBold.woff2") format("woff2"),
url("Inter-ExtraBold.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 800;
src: url("Inter-ExtraBoldItalic.woff2") format("woff2"),
url("Inter-ExtraBoldItalic.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 900;
font-display: swap;
src: url("Inter-Black.woff2") format("woff2"),
url("Inter-Black.woff") format("woff");
}
@font-face {
font-family: 'Inter';
font-style: italic;
font-weight: 900;
font-display: swap;
src: url("Inter-BlackItalic.woff2") format("woff2"),
url("Inter-BlackItalic.woff") format("woff");
}
/* -------------------------------------------------------
Variable font.
Usage:
html { font-family: 'Inter', sans-serif; }
@supports (font-variation-settings: normal) {
html { font-family: 'Inter var', sans-serif; }
}
*/
@font-face {
font-family: 'Inter var';
font-weight: 100 900;
font-style: normal;
font-display: swap;
font-named-instance: 'Regular';
src: url("Inter-upright.var.woff2") format("woff2");
}
@font-face {
font-family: 'Inter var';
font-weight: 100 900;
font-style: italic;
font-display: swap;
font-named-instance: 'Italic';
src: url("Inter-italic.var.woff2") format("woff2");
}
/* --------------------------------------------------------------------------
[EXPERIMENTAL] Multi-axis, single variable font.
Slant axis is not yet widely supported (as of February 2019) and thus this
multi-axis single variable font is opt-in rather than the default.
When using this, you will probably need to set font-variation-settings
explicitly, e.g.
* { font-variation-settings: "slnt" 0deg }
.italic { font-variation-settings: "slnt" 10deg }
*/
@font-face {
font-family: 'Inter var experimental';
font-weight: 100 900;
font-style: oblique 0deg 10deg;
font-display: swap;
src: url("Inter.var.woff2") format("woff2");
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="14" viewBox="0 0 16 14">
<g fill="none" fill-rule="evenodd">
<path d="M-1-2h18v18H-1z"/>
<path fill="#FFF" fill-rule="nonzero" d="M1.25.25h13.5a.75.75 0 0 1 .75.75v12a.75.75 0 0 1-.75.75H1.25A.75.75 0 0 1 .5 13V1a.75.75 0 0 1 .75-.75zm6.795 6.512L3.236 2.68l-.971 1.143 5.79 4.916 5.686-4.92-.982-1.135-4.713 4.08h-.001z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 419 B

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
<g fill="none" fill-rule="evenodd">
<path d="M-1-1h18v18H-1z"/>
<path fill="#FFF" fill-rule="nonzero" d="M8 15.5a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15zM4.25 8a3.75 3.75 0 0 0 7.5 0h-1.5a2.25 2.25 0 1 1-4.5 0h-1.5z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 337 B

+1
View File
@@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Hugo</title><path d="M11.754 0a3.998 3.998 0 00-2.049.596L3.33 4.532a4.252 4.252 0 00-2.017 3.615v8.03c0 1.473.79 2.838 2.067 3.574l6.486 3.733a3.88 3.88 0 003.835.018l7.043-3.966a3.817 3.817 0 001.943-3.323V7.752a3.57 3.57 0 00-1.774-3.084L13.817.541a3.998 3.998 0 00-2.063-.54zm.022 1.674c.413-.006.828.1 1.2.315l7.095 4.127c.584.34.941.96.94 1.635v8.462c0 .774-.414 1.484-1.089 1.864l-7.042 3.966a2.199 2.199 0 01-2.179-.01l-6.485-3.734a2.447 2.447 0 01-1.228-2.123v-8.03c0-.893.461-1.72 1.221-2.19l6.376-3.935a2.323 2.323 0 011.19-.347zm-4.7 3.844V18.37h2.69v-5.62h4.46v5.62h2.696V5.518h-2.696v4.681h-4.46V5.518Z"/></svg>

After

Width:  |  Height:  |  Size: 703 B

@@ -0,0 +1 @@
!function(){function e(e,t){document.addEventListener?e.addEventListener("scroll",t,!1):e.attachEvent("scroll",t)}function t(e){this.a=document.createElement("div"),this.a.setAttribute("aria-hidden","true"),this.a.appendChild(document.createTextNode(e)),this.b=document.createElement("span"),this.c=document.createElement("span"),this.h=document.createElement("span"),this.f=document.createElement("span"),this.g=-1,this.b.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",this.c.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",this.f.style.cssText="max-width:none;display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;font-size:16px;",this.h.style.cssText="display:inline-block;width:200%;height:200%;font-size:16px;max-width:none;",this.b.appendChild(this.h),this.c.appendChild(this.f),this.a.appendChild(this.b),this.a.appendChild(this.c)}function n(e,t){e.a.style.cssText="max-width:none;min-width:20px;min-height:20px;display:inline-block;overflow:hidden;position:absolute;width:auto;margin:0;padding:0;top:-999px;white-space:nowrap;font-synthesis:none;font:"+t+";"}function i(e){var t=e.a.offsetWidth,n=t+100;return e.f.style.width=n+"px",e.c.scrollLeft=n,e.b.scrollLeft=e.b.scrollWidth+100,e.g!==t&&(e.g=t,!0)}function o(t,n){function o(){var e=s;i(e)&&e.a.parentNode&&n(e.g)}var s=t;e(t.b,o),e(t.c,o),i(t)}function s(e,t){var n=t||{};this.family=e,this.style=n.style||"normal",this.weight=n.weight||"normal",this.stretch=n.stretch||"normal"}var a=null,d=null,r=null,c=null;function l(){return null===c&&(c=!!document.fonts),c}function h(){if(null===r){var e=document.createElement("div");try{e.style.font="condensed 100px sans-serif"}catch(e){}r=""!==e.style.font}return r}function u(e,t){return[e.style,e.weight,h()?e.stretch:"","100px",t].join(" ")}s.prototype.load=function(e,i){var s=this,r=e||"BESbswy",c=0,h=i||3e3,f=(new Date).getTime();return new Promise(function(e,i){if(l()&&!function(){if(null===d)if(l()&&/Apple/.test(window.navigator.vendor)){var e=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))(?:\.([0-9]+))/.exec(window.navigator.userAgent);d=!!e&&603>parseInt(e[1],10)}else d=!1;return d}()){var p=new Promise(function(e,t){!function n(){(new Date).getTime()-f>=h?t(Error(h+"ms timeout exceeded")):document.fonts.load(u(s,'"'+s.family+'"'),r).then(function(t){1<=t.length?e():setTimeout(n,25)},t)}()}),m=new Promise(function(e,t){c=setTimeout(function(){t(Error(h+"ms timeout exceeded"))},h)});Promise.race([m,p]).then(function(){clearTimeout(c),e(s)},i)}else!function(e){document.body?e():document.addEventListener?document.addEventListener("DOMContentLoaded",function t(){document.removeEventListener("DOMContentLoaded",t),e()}):document.attachEvent("onreadystatechange",function t(){"interactive"!=document.readyState&&"complete"!=document.readyState||(document.detachEvent("onreadystatechange",t),e())})}(function(){function d(){var t;(t=-1!=w&&-1!=v||-1!=w&&-1!=y||-1!=v&&-1!=y)&&((t=w!=v&&w!=y&&v!=y)||(null===a&&(t=/AppleWebKit\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent),a=!!t&&(536>parseInt(t[1],10)||536===parseInt(t[1],10)&&11>=parseInt(t[2],10))),t=a&&(w==x&&v==x&&y==x||w==b&&v==b&&y==b||w==g&&v==g&&y==g)),t=!t),t&&(E.parentNode&&E.parentNode.removeChild(E),clearTimeout(c),e(s))}var l=new t(r),p=new t(r),m=new t(r),w=-1,v=-1,y=-1,x=-1,b=-1,g=-1,E=document.createElement("div");E.dir="ltr",n(l,u(s,"sans-serif")),n(p,u(s,"serif")),n(m,u(s,"monospace")),E.appendChild(l.a),E.appendChild(p.a),E.appendChild(m.a),document.body.appendChild(E),x=l.a.offsetWidth,b=p.a.offsetWidth,g=m.a.offsetWidth,function e(){if((new Date).getTime()-f>=h)E.parentNode&&E.parentNode.removeChild(E),i(Error(h+"ms timeout exceeded"));else{var t=document.hidden;!0!==t&&void 0!==t||(w=l.a.offsetWidth,v=p.a.offsetWidth,y=m.a.offsetWidth,d()),c=setTimeout(e,50)}}(),o(l,function(e){w=e,d()}),n(l,u(s,'"'+s.family+'",sans-serif')),o(p,function(e){v=e,d()}),n(p,u(s,'"'+s.family+'",serif')),o(m,function(e){y=e,d()}),n(m,u(s,'"'+s.family+'",monospace'))})})},"object"==typeof module?module.exports=s:(window.FontFaceObserver=s,window.FontFaceObserver.prototype.load=s.prototype.load)}();
@@ -0,0 +1 @@
document.addEventListener("DOMContentLoaded",function(){var e=[].slice.call(document.querySelectorAll("img.lazy")),t=[].slice.call(document.querySelectorAll(".lazy-background")),n=[].slice.call(document.querySelectorAll("[data-bg]"));if("IntersectionObserver"in window){let c=new IntersectionObserver(function(e,t){e.forEach(function(e){if(e.isIntersecting){let t=e.target;t.src=t.dataset.src,t.srcset=t.dataset.srcset,t.classList.remove("lazy"),c.unobserve(t)}})});e.forEach(function(e){c.observe(e)});let r=new IntersectionObserver(function(e,t){e.forEach(function(e){e.isIntersecting&&(e.target.classList.add("visible"),r.unobserve(e.target))})});t.forEach(function(e){r.observe(e)});let s=new IntersectionObserver(function(e,t){e.forEach(function(e){if(e.isIntersecting){let t=e.target;t.style.backgroundImage="url("+t.dataset.bg+")",s.unobserve(t)}})});n.forEach(function(e){s.observe(e)})}else e.forEach(function(e){e.src=e.dataset.src,e.srcset=e.dataset.srcset}),t.forEach(function(e){e.classList.add("visible")}),n.forEach(function(e){e.style.backgroundImage="url("+e.dataset.bg+")"})});
+10
View File
@@ -0,0 +1,10 @@
/*! lozad.js - v1.14.0 - 2019-10-19
* https://github.com/ApoorvSaxena/lozad.js
* Copyright (c) 2019 Apoorv Saxena; Licensed MIT */
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).lozad=e()}(this,function(){"use strict";
/**
* Detect IE browser
* @const {boolean}
* @private
*/var d="undefined"!=typeof document&&document.documentMode,c={rootMargin:"0px",threshold:0,load:function(t){if("picture"===t.nodeName.toLowerCase()){var e=document.createElement("img");d&&t.getAttribute("data-iesrc")&&(e.src=t.getAttribute("data-iesrc")),t.getAttribute("data-alt")&&(e.alt=t.getAttribute("data-alt")),t.append(e)}if("video"===t.nodeName.toLowerCase()&&!t.getAttribute("data-src")&&t.children){for(var r=t.children,a=void 0,o=0;o<=r.length-1;o++)(a=r[o].getAttribute("data-src"))&&(r[o].src=a);t.load()}if(t.getAttribute("data-src")&&(t.src=t.getAttribute("data-src")),t.getAttribute("data-srcset")&&t.setAttribute("srcset",t.getAttribute("data-srcset")),t.getAttribute("data-background-image"))t.style.backgroundImage="url('"+t.getAttribute("data-background-image").split(",").join("'),url('")+"')";else if(t.getAttribute("data-background-image-set")){var i=t.getAttribute("data-background-image-set").split(","),n=i[0].substr(0,i[0].indexOf(" "))||i[0];// Substring before ... 1x
n=-1===n.indexOf("url(")?"url("+n+")":n,1===i.length?t.style.backgroundImage=n:t.setAttribute("style",(t.getAttribute("style")||"")+"background-image: "+n+"; background-image: -webkit-image-set("+i+"); background-image: image-set("+i+")")}t.getAttribute("data-toggle-class")&&t.classList.toggle(t.getAttribute("data-toggle-class"))},loaded:function(){}};function l(t){t.setAttribute("data-loaded",!0)}var b=function(t){return"true"===t.getAttribute("data-loaded")};return function(){var r,a,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:".lozad",t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=Object.assign({},c,t),i=e.root,n=e.rootMargin,d=e.threshold,u=e.load,s=e.loaded,g=void 0;return"undefined"!=typeof window&&window.IntersectionObserver&&(g=new IntersectionObserver((r=u,a=s,function(t,e){t.forEach(function(t){(0<t.intersectionRatio||t.isIntersecting)&&(e.unobserve(t.target),b(t.target)||(r(t.target),l(t.target),a(t.target)))})}),{root:i,rootMargin:n,threshold:d})),{observe:function(){for(var t=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:document;return t instanceof Element?[t]:t instanceof NodeList?t:e.querySelectorAll(t)}(o,i),e=0;e<t.length;e++)b(t[e])||(g?g.observe(t[e]):(u(t[e]),l(t[e]),s(t[e])))},triggerLoad:function(t){b(t)||(u(t),l(t),s(t))},observer:g}}});
File diff suppressed because one or more lines are too long
View File
@@ -0,0 +1 @@
let sectionIntersectOptions={rootMargin:"9999px 0px 0px 0px",threshold:.2};const onSectionIntersect=e=>{let t=0;animatedNodes.forEach(n=>{e.target.contains(n)&&(n.style.animationDelay=`${nodeDelayDelta*t+.1}s`,n.classList.add("rad-animate"),t++)})},onSectionIntersectChange=(e,t)=>{e.forEach(e=>{e.isIntersecting&&onSectionIntersect(e)})};let animationObserver=new IntersectionObserver(onSectionIntersectChange,sectionIntersectOptions);const animatedNodes=Array.from(document.querySelectorAll(".rad-fade-down, .rad-fade-in, .rad-fade-in-long, .rad-scale-down")),animatedSections=Array.from(document.querySelectorAll(".rad-animation-group")),nodeDelayDelta=.2,sectionDelayDelta=.2;animatedNodes.forEach((e,t)=>{e.classList.add("rad-waiting")}),animatedSections.forEach((e,t)=>{animationObserver.observe(e)});
+378
View File
@@ -0,0 +1,378 @@
summaryInclude = 60;
const fuseOptions = {
shouldSort: true,
includeMatches: true,
threshold: 0.0,
tokenize: true,
location: 0,
distance: 100,
maxPatternLength: 32,
minMatchCharLength: 1,
keys: [
{ name: "title", weight: 0.9 },
{ name: "contents", weight: 0.5 },
{ name: "tags", weight: 0.3 },
{ name: "categories", weight: 0.3 },
],
};
// Display error message in the search results container
function displayError(message) {
const searchResultsElement = document.getElementById("search-results");
if (searchResultsElement) {
const sanitizedMessage = DOMPurify.sanitize(message);
searchResultsElement.innerHTML = `<div class="alert alert-danger">${sanitizedMessage}</div>`;
} else {
console.error("Search results container not found");
}
}
// Safely get DOM element with error handling
function getElement(id) {
const element = document.getElementById(id);
if (!element) {
console.error(`Element with ID '${id}' not found`);
}
return element;
}
// Debounce function to prevent excessive search calls
function debounce(func, wait) {
let timeout;
return function executedFunction(...args) {
const later = () => {
clearTimeout(timeout);
func(...args);
};
clearTimeout(timeout);
timeout = setTimeout(later, wait);
};
}
// Function to update URL with search query
function updateURL(query) {
try {
// Create a URL object from the current URL
const url = new URL(window.location.href);
if (query && query.length >= 2) {
// Set or update the 's' parameter
url.searchParams.set("s", query);
} else {
// Remove the 's' parameter if query is empty or too short
url.searchParams.delete("s");
}
// Update the URL without reloading the page
window.history.replaceState({}, "", url.toString());
} catch (error) {
console.error("Error updating URL:", error);
// Continue without URL update - non-critical error
}
}
// Safe parameter extraction with error handling
function param(name) {
try {
const paramValue = (location.search.split(`${name}=`)[1] || "").split("&")[0];
return paramValue ? decodeURIComponent(paramValue).replace(/\+/g, " ") : "";
} catch (error) {
console.error(`Error parsing URL parameter '${name}':`, error);
return "";
}
}
// Get search query from URL parameter
const searchQuery = param("s");
try {
const searchInput = getElement("search-query");
const searchResults = getElement("search-results");
if (searchInput && searchQuery) {
searchInput.value = searchQuery;
executeSearch(searchQuery);
} else if (searchResults) {
searchResults.innerHTML =
"<div class='alert'>Please enter at least 2 characters to search</div>";
}
} catch (error) {
console.error("Error initializing search:", error);
displayError(
"There was a problem initializing the search. Please try again later.",
);
}
// Add event listener for real-time searching
document.addEventListener("DOMContentLoaded", () => {
try {
const searchInput = getElement("search-query");
if (!searchInput) {
throw new Error("Search input not found");
}
// Create debounced search function - 300ms is a good balance
const debouncedSearch = debounce((query) => {
// Update URL with current search query
updateURL(query);
const searchResults = getElement("search-results");
if (!searchResults) {
throw new Error("Search results container not found");
}
if (query.length >= 2) {
executeSearch(query);
} else if (query.length === 0 || query.length === 1) {
searchResults.innerHTML =
"<div class='alert'>Please enter at least 2 characters to search</div>";
}
}, 300);
// Set up input event for real-time searching
searchInput.addEventListener("input", function () {
const query = this.value.trim();
debouncedSearch(query);
});
// Handle form submission to prevent page reload
const searchForm = searchInput.closest("form");
if (searchForm) {
searchForm.addEventListener("submit", (e) => {
e.preventDefault();
const query = searchInput.value.trim();
if (query.length >= 2) {
updateURL(query);
executeSearch(query);
}
});
}
} catch (error) {
console.error("Error setting up search event listeners:", error);
displayError(
"There was a problem setting up the search functionality. Please try reloading the page.",
);
}
});
function executeSearch(searchQuery) {
try {
if (!searchQuery || typeof searchQuery !== "string") {
throw new Error("Invalid search query");
}
const searchResults = getElement("search-results");
if (!searchResults) {
throw new Error("Search results container not found");
}
// Show loading indicator
searchResults.innerHTML =
'<div class="spinner-border text-primary" role="status"><span class="visually-hidden">Loading...</span></div>';
fetch("/index.json")
.then((response) => {
if (!response.ok) {
throw new Error(
`Network response was not ok: ${response.status} ${response.statusText}`,
);
}
return response.json();
})
.then((data) => {
if (!Array.isArray(data)) {
throw new Error("Received invalid data format from server");
}
const pages = data;
const fuse = new Fuse(pages, fuseOptions);
const result = fuse.search(searchQuery);
// Clear previous results only when we have new results to show
searchResults.innerHTML = "";
if (result.length > 0) {
populateResults(result);
} else {
searchResults.insertAdjacentHTML(
"beforeend",
"<div class='alert'>No matches found</div>",
);
}
})
.catch((error) => {
console.error("Error executing search:", error);
displayError(`Failed to search: ${error.message}`);
});
} catch (error) {
console.error("Error in search execution:", error);
displayError("There was a problem with the search. Please try again later.");
}
}
function populateResults(result) {
try {
if (!Array.isArray(result)) {
throw new Error("Invalid search results");
}
const searchResults = getElement("search-results");
if (!searchResults) {
throw new Error("Search results container not found");
}
const templateElement = document.getElementById("search-result-template");
if (!templateElement) {
throw new Error("Search result template not found");
}
const templateDefinition = templateElement.innerHTML;
for (const [key, value] of result.entries()) {
if (!value || !value.item) {
console.warn("Skipping invalid search result item", value);
continue;
}
const contents = value.item.contents || "";
let snippet = "";
const snippetHighlights = [];
let start;
let end;
if (fuseOptions.tokenize) {
snippetHighlights.push(searchQuery);
} else {
if (value.matches) {
for (const mvalue of value.matches) {
if (!mvalue || typeof mvalue.key !== "string") {
continue;
}
if (
mvalue.key === "tags" ||
mvalue.key === "categories"
) {
snippetHighlights.push(mvalue.value);
} else if (
mvalue.key === "contents" &&
Array.isArray(mvalue.indices) &&
mvalue.indices.length > 0
) {
try {
start =
mvalue.indices[0][0] - summaryInclude > 0
? mvalue.indices[0][0] - summaryInclude
: 0;
end =
mvalue.indices[0][1] + summaryInclude < contents.length
? mvalue.indices[0][1] + summaryInclude
: contents.length;
snippet += contents.substring(start, end);
if (typeof mvalue.value === "string") {
const highlightValue =
mvalue.indices[0][1] - mvalue.indices[0][0] + 1;
if (
highlightValue > 0 &&
mvalue.indices[0][0] < mvalue.value.length
) {
snippetHighlights.push(
mvalue.value.substring(
mvalue.indices[0][0],
mvalue.indices[0][0] + highlightValue,
),
);
}
}
} catch (e) {
console.warn("Error processing match indices", e);
}
}
}
}
}
if (snippet.length < 1 && contents) {
snippet += contents.substring(0, summaryInclude * 2);
}
try {
// Insert the templated result
const output = render(templateDefinition, {
key: key,
title: value.item.title || "Untitled",
link: value.item.permalink || "#",
tags: value.item.tags || "",
categories: value.item.categories || "",
snippet: snippet || "No preview available",
});
searchResults.insertAdjacentHTML("beforeend", output);
// Add highlighting after insertion
for (const snipvalue of snippetHighlights) {
if (!snipvalue) continue;
const summaryElem = document.getElementById(`summary-${key}`);
if (summaryElem && typeof Mark !== "undefined") {
try {
const markInstance = new Mark(summaryElem);
markInstance.mark(snipvalue);
} catch (e) {
console.warn("Error highlighting text:", e);
}
}
}
} catch (error) {
console.error("Error rendering search result:", error);
}
}
} catch (error) {
console.error("Error populating results:", error);
displayError("There was a problem displaying search results.");
}
}
function render(templateString, data) {
try {
if (!templateString || !data) {
throw new Error("Invalid template or data");
}
let conditionalMatches, conditionalPattern, copy;
conditionalPattern = /\$\{\s*isset ([a-zA-Z]*) \s*\}(.*)\$\{\s*end\s*}/g;
// Since loop below depends on re.lastIndex, we use a copy to capture any manipulations
copy = templateString;
while ((conditionalMatches = conditionalPattern.exec(templateString)) !== null) {
if (conditionalMatches.length < 3) continue;
if (data[conditionalMatches[1]]) {
// Valid key, remove conditionals, leave contents
copy = copy.replace(conditionalMatches[0], conditionalMatches[2]);
} else {
// Not valid, remove entire section
copy = copy.replace(conditionalMatches[0], "");
}
}
let result = copy;
// Now any conditionals removed we can do simple substitution
for (const key in data) {
if (Object.prototype.hasOwnProperty.call(data, key)) {
const value = data[key];
if (value !== undefined && value !== null) {
const find = `\\$\\{\\s*${key}\\s*\\}`;
const re = new RegExp(find, "g");
result = result.replace(re, value);
}
}
}
return result;
} catch (error) {
console.error("Error rendering template:", error);
return '<div class="alert alert-danger">Error rendering result</div>';
}
}
@@ -0,0 +1,27 @@
const scroll = new SmoothScroll('a[href*="#"]');
const navLinks = document.querySelectorAll('a.nav-link');
navLinks.forEach(navLink => {
navLink.addEventListener('click', (e) => {
const navbar = document.getElementById('navbarSupportedContent');
if (navbar && navbar.classList.contains('show')) {
simulateClick(document.querySelector('.navbar-toggler'));
}
});
});
/**
* Simulate a click event.
* @public
* @param {Element} elem the element to simulate a click on
* @see https://gomakethings.com/how-to-simulate-a-click-event-with-javascript/
*/
var simulateClick = function (elem) {
// Create our event (with options)
var evt = new MouseEvent('click', {
bubbles: true,
cancelable: true,
view: window
});
// If cancelled, don't dispatch our event
var canceled = !elem.dispatchEvent(evt);
};
@@ -0,0 +1,45 @@
class StickyHeader {
constructor(t) {
(this.header = t),
(this.body = document.querySelector("body")),
(this.thresholdPosition = 15),
(this.triggeredStickyClass = "header--sticky-triggered"),
(this.stickyClass = "header--sticky"),
(this.ticking = false),
(this.bodyPosition = 0),
window.addEventListener("DOMContentLoaded", () => this.initSticky()),
this.scrollChanged();
this.navbar = document.getElementById('navbarSupportedContent');
// add window resize listener
window.addEventListener("resize", () => this.resizeHandler());
}
initSticky() {
(this.headerStaticHeight = this.header.getBoundingClientRect().height),
this.header.classList.toggle(this.stickyClass, true),
window.addEventListener("scroll", () => this.scrollHandler());
}
scrollHandler() {
this.ticking ||
(window.requestAnimationFrame(() => {
this.scrollChanged(), (this.ticking = false);
}),
(this.ticking = true));
}
scrollChanged() {
(this.bodyPosition = Math.abs(this.body.getBoundingClientRect().top)),
this.bodyPosition > this.thresholdPosition
? this.header.classList.toggle(this.triggeredStickyClass, true)
: this.header.classList.toggle(this.triggeredStickyClass, false);
}
resizeHandler() {
// if the window size is larger than 992px and the navbar is displayed,
// toggle the navbar to hide it
if (window.innerWidth > 991) {
if (this.navbar?.classList.contains('show')) {
simulateClick(document.querySelector('.navbar-toggler'));
}
}
}
}
const stickyHeader = new StickyHeader(document.querySelector(".header"));
@@ -0,0 +1 @@
const radSubscriptionRequest=(e="",s={})=>fetch(e,{method:"POST",mode:"cors",cache:"no-cache",credentials:"same-origin",headers:{"Content-Type":"application/json"},redirect:"follow",referrer:"no-referrer",body:JSON.stringify(s)}).then(e=>e.json()),makeSubscriptionRequest=async(e,s)=>{e.preventDefault();try{s.querySelector("#rad-subscription-submit").classList.add("is-loading"),await radSubscriptionRequest("",{email:s.querySelector("#rad-subscription-email").value}),s.classList.add("d-none"),document.querySelector("#rad-subscription-success").classList.remove("d-none"),document.querySelector("#rad-subscription-success").classList.add("d-flex")}catch(e){s.classList.add("d-none"),document.querySelector("#rad-subscription-fail").classList.remove("d-none"),document.querySelector("#rad-subscription-fail").classList.add("d-flex")}finally{s.querySelector("#rad-subscription-submit").classList.remove("is-loading")}},initRadSubscription=()=>{const e=document.querySelector("#rad-subscription");e&&e.addEventListener("submit",s=>makeSubscriptionRequest(s,e))};initRadSubscription();
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.
@@ -0,0 +1,14 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by Fontastic.me</metadata>
<defs>
<font id="slick" horiz-adv-x="512">
<font-face font-family="slick" units-per-em="512" ascent="480" descent="-32"/>
<missing-glyph horiz-adv-x="512" />
<glyph unicode="&#8594;" d="M241 113l130 130c4 4 6 8 6 13 0 5-2 9-6 13l-130 130c-3 3-7 5-12 5-5 0-10-2-13-5l-29-30c-4-3-6-7-6-12 0-5 2-10 6-13l87-88-87-88c-4-3-6-8-6-13 0-5 2-9 6-12l29-30c3-3 8-5 13-5 5 0 9 2 12 5z m234 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
<glyph unicode="&#8592;" d="M296 113l29 30c4 3 6 7 6 12 0 5-2 10-6 13l-87 88 87 88c4 3 6 8 6 13 0 5-2 9-6 12l-29 30c-3 3-8 5-13 5-5 0-9-2-12-5l-130-130c-4-4-6-8-6-13 0-5 2-9 6-13l130-130c3-3 7-5 12-5 5 0 10 2 13 5z m179 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
<glyph unicode="&#8226;" d="M475 256c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
<glyph unicode="&#97;" d="M475 439l0-128c0-5-1-9-5-13-4-4-8-5-13-5l-128 0c-8 0-13 3-17 11-3 7-2 14 4 20l40 39c-28 26-62 39-100 39-20 0-39-4-57-11-18-8-33-18-46-32-14-13-24-28-32-46-7-18-11-37-11-57 0-20 4-39 11-57 8-18 18-33 32-46 13-14 28-24 46-32 18-7 37-11 57-11 23 0 44 5 64 15 20 9 38 23 51 42 2 1 4 3 7 3 3 0 5-1 7-3l39-39c2-2 3-3 3-6 0-2-1-4-2-6-21-25-46-45-76-59-29-14-60-20-93-20-30 0-58 5-85 17-27 12-51 27-70 47-20 19-35 43-47 70-12 27-17 55-17 85 0 30 5 58 17 85 12 27 27 51 47 70 19 20 43 35 70 47 27 12 55 17 85 17 28 0 55-5 81-15 26-11 50-26 70-45l37 37c6 6 12 7 20 4 8-4 11-9 11-17z"/>
</font></defs></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.
@@ -0,0 +1 @@
.slick-list,.slick-slider,.slick-track{position:relative;display:block}.slick-loading .slick-slide,.slick-loading .slick-track{visibility:hidden}.slick-slider{box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:0}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{top:0;left:0;margin-left:auto;margin-right:auto}.slick-track:after,.slick-track:before{display:table;content:''}.slick-track:after{clear:both}.slick-slide{display:none;float:left;height:100%;min-height:1px}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none}
File diff suppressed because one or more lines are too long