update home template

This commit is contained in:
2025-08-05 16:03:49 +03:00
parent 38acb206dd
commit b27ea08637
268 changed files with 6303 additions and 109133 deletions

View File

@@ -1,52 +0,0 @@
/* Dark mode styles */
.dark .prose {
color: rgba(255, 255, 255, 0.9);
}
.dark .prose h1,
.dark .prose h2,
.dark .prose h3,
.dark .prose h4,
.dark .prose h5,
.dark .prose h6 {
color: white;
}
.dark .prose a {
color: #3b82f6;
}
.dark .prose strong {
color: white;
}
.dark .prose code {
color: white;
background-color: rgba(255, 255, 255, 0.1);
}
.dark .prose blockquote {
color: rgba(255, 255, 255, 0.8);
border-left-color: rgba(255, 255, 255, 0.2);
}
.dark .prose hr {
border-color: rgba(255, 255, 255, 0.2);
}
.dark .prose table th {
color: white;
}
.dark .prose table td {
color: rgba(255, 255, 255, 0.8);
}
/* Transition effects for theme switching */
html.transition,
html.transition *,
html.transition *:before,
html.transition *:after {
transition: all 0.3s ease-in-out !important;
transition-delay: 0 !important;
}

View File

@@ -1,43 +0,0 @@
/* Dropdown menu styles */
.dropdown {
position: relative;
display: inline-block;
}
.dropdown-content {
display: none;
position: absolute;
background-color: #f9f9f9;
min-width: 160px;
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
z-index: 1;
border-radius: 0.375rem;
}
.dropdown-content a {
color: black;
padding: 12px 16px;
text-decoration: none;
display: block;
}
.dropdown-content a:hover {
background-color: #f1f1f1;
}
.dropdown:hover .dropdown-content {
display: block;
}
/* Dark mode styles */
html.dark .dropdown-content {
background-color: #374151;
}
html.dark .dropdown-content a {
color: #f9fafb;
}
html.dark .dropdown-content a:hover {
background-color: #4b5563;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

1
static/images/0.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" zoomAndPan="magnify" viewBox="0 0 224.87999 225" height="300" preserveAspectRatio="xMidYMid meet" version="1.0"><defs><clipPath id="ad0b04319c"><path d="M 9.570312 9.632812 L 214.960938 9.632812 L 214.960938 215.023438 L 9.570312 215.023438 Z M 9.570312 9.632812 " clip-rule="nonzero"></path></clipPath></defs><g clip-path="url(#ad0b04319c)"><path fill="#6266F1" d="M 215.300781 112.496094 C 215.300781 169.300781 169.238281 215.363281 112.4375 215.363281 C 55.636719 215.363281 9.570312 169.300781 9.570312 112.496094 C 9.570312 55.695312 55.636719 9.632812 112.4375 9.632812 C 169.238281 9.632812 215.300781 55.695312 215.300781 112.496094 Z M 215.300781 112.496094 " fill-opacity="1" fill-rule="nonzero"></path></g><path fill="#FFFFFF" d="M 143.296875 119.8125 C 143.296875 130.636719 140.828125 138.980469 135.902344 144.84375 C 130.972656 150.707031 124.050781 153.644531 115.089844 153.644531 C 106.070312 153.644531 99.082031 150.691406 94.136719 144.78125 C 89.195312 138.871094 86.722656 130.558594 86.722656 119.8125 L 86.722656 105.183594 C 86.722656 94.355469 89.175781 86.015625 94.117188 80.152344 C 99.039062 74.28125 105.988281 71.351562 114.988281 71.351562 C 123.96875 71.351562 130.941406 74.304688 135.886719 80.214844 C 140.828125 86.121094 143.296875 94.453125 143.296875 105.246094 Z M 124.511719 102.8125 C 124.511719 97.046875 123.753906 92.746094 122.226562 89.914062 C 120.71875 87.058594 118.285156 85.65625 114.992188 85.65625 C 111.757812 85.65625 109.40625 86.960938 107.941406 89.613281 C 106.476562 92.269531 105.671875 96.246094 105.570312 101.609375 L 105.570312 122.0625 C 105.570312 128.050781 106.332031 132.433594 107.839844 135.203125 C 109.367188 137.957031 111.777344 139.34375 115.089844 139.34375 C 118.285156 139.34375 120.65625 137.996094 122.164062 135.308594 C 123.691406 132.617188 124.472656 128.394531 124.511719 122.628906 Z M 124.511719 102.8125 " fill-opacity="1" fill-rule="nonzero"></path></svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

4
static/images/1.svg Normal file
View File

@@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" zoomAndPan="magnify" viewBox="0 0 224.87999 225" height="300" preserveAspectRatio="xMidYMid meet" version="1.0">
<path fill="#6266F1" d="M 219.625 112.46875 C 219.625 171.714844 171.597656 219.742188 112.351562 219.742188 C 53.105469 219.742188 5.074219 171.714844 5.074219 112.46875 C 5.074219 53.222656 53.105469 5.195312 112.351562 5.195312 C 171.597656 5.195312 219.625 53.222656 219.625 112.46875 Z M 219.625 112.46875 " fill-opacity="1" fill-rule="nonzero"></path>
<path fill="#FFFFFF" d="M 115.15625 57.453125 C 120.320312 57.453125 124.988281 60.449219 125.539062 66.117188 C 125.539062 66.117188 125.539062 158.9375 125.539062 158.9375 C 124.988281 164.4375 120.320312 166.933594 115.820312 166.933594 C 111.15625 166.933594 106.488281 164.4375 106.488281 158.9375 C 106.488281 158.9375 106.488281 91.613281 106.488281 91.613281 C 106.488281 91.613281 99.324219 101.113281 99.324219 101.113281 C 97.324219 103.945312 94.660156 105.109375 91.660156 105.109375 C 85.660156 105.109375 80.660156 97.277344 84.492188 91.28125 C 84.492188 91.28125 106.65625 61.117188 106.65625 61.117188 C 108.988281 58.617188 112.324219 57.453125 115.15625 57.453125 Z M 115.15625 57.453125 " fill-opacity="1" fill-rule="nonzero"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

1
static/images/2.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" zoomAndPan="magnify" viewBox="0 0 224.87999 225" height="300" preserveAspectRatio="xMidYMid meet" version="1.0"><path fill="#6266F1" d="M 216.429688 112.570312 C 216.429688 170.003906 169.871094 216.5625 112.4375 216.5625 C 55.007812 216.5625 8.449219 170.003906 8.449219 112.570312 C 8.449219 55.136719 55.007812 8.582031 112.4375 8.582031 C 169.871094 8.582031 216.429688 55.136719 216.429688 112.570312 Z M 216.429688 112.570312 " fill-opacity="1" fill-rule="nonzero"></path><path fill="#FFFFFF" d="M 115.519531 148.421875 C 115.519531 148.421875 143.015625 148.421875 143.015625 148.421875 C 149.359375 148.421875 152.773438 152.652344 152.773438 156.722656 C 152.773438 160.789062 149.683594 164.859375 143.175781 164.859375 C 143.175781 164.859375 82.824219 164.859375 82.824219 164.859375 C 77.128906 164.371094 73.386719 160.300781 73.386719 155.746094 C 73.386719 153.46875 74.6875 150.863281 77.128906 148.910156 C 77.128906 148.910156 122.515625 113.273438 122.515625 113.273438 C 129.347656 108.394531 133.253906 100.09375 131.953125 91.957031 C 130.648438 81.054688 122.351562 75.847656 112.59375 75.847656 C 102.832031 75.847656 95.023438 81.542969 93.070312 90.980469 C 92.421875 96.027344 88.355469 98.464844 84.125 98.464844 C 79.242188 98.464844 74.199219 94.886719 74.851562 88.703125 C 77.453125 68.527344 93.070312 59.574219 112.59375 59.574219 C 131.136719 59.574219 148.21875 70.640625 150.171875 89.679688 C 151.960938 105.300781 144.964844 117.015625 134.066406 125.640625 C 134.066406 125.640625 104.132812 148.910156 104.132812 148.910156 C 104.132812 148.910156 115.519531 148.421875 115.519531 148.421875 Z M 115.519531 148.421875 " fill-opacity="1" fill-rule="nonzero"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

1
static/images/3.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" zoomAndPan="magnify" viewBox="0 0 224.87999 225" height="300" preserveAspectRatio="xMidYMid meet" version="1.0"><path fill="#6266F1" d="M 212.707031 112.5 C 212.707031 168.308594 167.46875 213.546875 111.660156 213.546875 C 55.851562 213.546875 10.613281 168.308594 10.613281 112.5 C 10.613281 56.691406 55.851562 11.453125 111.660156 11.453125 C 167.46875 11.453125 212.707031 56.691406 212.707031 112.5 Z M 212.707031 112.5 " fill-opacity="1" fill-rule="nonzero"></path><path fill="#FFFFFF" d="M 90.917969 132.328125 C 92.492188 146.515625 102.894531 148.882812 112.191406 148.882812 C 123.695312 148.882812 131.417969 140.054688 131.417969 127.917969 C 131.417969 117.511719 124.640625 109.632812 115.660156 109.632812 C 113.296875 109.632812 111.878906 109.945312 109.988281 111.050781 C 103.054688 115.304688 95.960938 109.945312 95.960938 103.640625 C 95.960938 101.433594 96.90625 99.226562 98.957031 97.175781 C 98.957031 97.175781 119.601562 78.105469 119.601562 78.105469 C 119.601562 78.105469 85.246094 78.105469 85.246094 78.105469 C 79.414062 78.105469 76.734375 74.164062 76.734375 70.378906 C 76.734375 66.4375 79.414062 62.5 85.246094 62.5 C 85.246094 62.5 137.878906 62.5 137.878906 62.5 C 143.238281 62.5 147.652344 66.28125 147.652344 70.851562 C 147.652344 72.585938 145.917969 75.582031 143.867188 77.632812 C 137.09375 83.777344 129.84375 90.085938 122.75 96.230469 C 140.242188 97.808594 149.226562 112.46875 149.226562 127.757812 C 149.226562 149.355469 134.414062 164.488281 112.351562 164.488281 C 92.96875 164.488281 76.105469 156.761719 73.582031 134.535156 C 73.742188 129.335938 78.3125 125.550781 82.566406 125.550781 C 86.507812 125.550781 90.761719 128.074219 90.917969 132.328125 Z M 90.917969 132.328125 " fill-opacity="1" fill-rule="nonzero"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 262 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

View File

@@ -0,0 +1,3 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" width="24" height="24" >
<path stroke-linecap="round" stroke-linejoin="round" d="M8.25 2.25A.75.75 0 0 1 9 3v.75h2.25V3a.75.75 0 0 1 1.5 0v.75H15V3a.75.75 0 0 1 1.5 0v.75h.75a3 3 0 0 1 3 3v.75H21A.75.75 0 0 1 21 9h-.75v2.25H21a.75.75 0 0 1 0 1.5h-.75V15H21a.75.75 0 0 1 0 1.5h-.75v.75a3 3 0 0 1-3 3h-.75V21a.75.75 0 0 1-1.5 0v-.75h-2.25V21a.75.75 0 0 1-1.5 0v-.75H9V21a.75.75 0 0 1-1.5 0v-.75h-.75a3 3 0 0 1-3-3v-.75H3A.75.75 0 0 1 3 15h.75v-2.25H3a.75.75 0 0 1 0-1.5h.75V9H3a.75.75 0 0 1 0-1.5h.75v-.75a3 3 0 0 1 3-3h.75V3a.75.75 0 0 1 .75-.75ZM6 6.75A.75.75 0 0 1 6.75 6h10.5a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75H6.75a.75.75 0 0 1-.75-.75V6.75Z" stroke="#FFFFFF" fill="none" stroke-width="1.5px"></path>
</svg>

After

Width:  |  Height:  |  Size: 957 B

BIN
static/images/cyberwall.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

View File

@@ -0,0 +1,3 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" width="24" height="24" >
<path stroke-linecap="round" stroke-linejoin="round" d="M11.622 1.602a.75.75 0 0 1 .756 0l2.25 1.313a.75.75 0 0 1-.756 1.295L12 3.118 10.128 4.21a.75.75 0 1 1-.756-1.295l2.25-1.313ZM5.898 5.81a.75.75 0 0 1-.27 1.025l-1.14.665 1.14.665a.75.75 0 1 1-.756 1.295L3.75 8.806v.944a.75.75 0 0 1-1.5 0V7.5a.75.75 0 0 1 .372-.648l2.25-1.312a.75.75 0 0 1 1.026.27Zm12.204 0a.75.75 0 0 1 1.026-.27l2.25 1.312a.75.75 0 0 1 .372.648v2.25a.75.75 0 0 1-1.5 0v-.944l-1.122.654a.75.75 0 1 1-.756-1.295l1.14-.665-1.14-.665a.75.75 0 0 1-.27-1.025Zm-9 5.25a.75.75 0 0 1 1.026-.27L12 11.882l1.872-1.092a.75.75 0 1 1 .756 1.295l-1.878 1.096V15a.75.75 0 0 1-1.5 0v-1.82l-1.878-1.095a.75.75 0 0 1-.27-1.025ZM3 13.5a.75.75 0 0 1 .75.75v1.82l1.878 1.095a.75.75 0 1 1-.756 1.295l-2.25-1.312a.75.75 0 0 1-.372-.648v-2.25A.75.75 0 0 1 3 13.5Zm18 0a.75.75 0 0 1 .75.75v2.25a.75.75 0 0 1-.372.648l-2.25 1.312a.75.75 0 1 1-.756-1.295l1.878-1.096V14.25a.75.75 0 0 1 .75-.75Zm-9 5.25a.75.75 0 0 1 .75.75v.944l1.122-.654a.75.75 0 1 1 .756 1.295l-2.25 1.313a.75.75 0 0 1-.756 0l-2.25-1.313a.75.75 0 1 1 .756-1.295l1.122.654V19.5a.75.75 0 0 1 .75-.75Z" stroke="#FFFFFF" fill="none" stroke-width="1.5px"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/images/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
static/images/hometech.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

BIN
static/images/hometech2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

BIN
static/images/mesh2.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 KiB

View File

@@ -0,0 +1,3 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" width="24" height="24" >
<path stroke-linecap="round" stroke-linejoin="round" d="M10.5 3.75a6 6 0 0 0-5.98 6.496A5.25 5.25 0 0 0 6.75 20.25H18a4.5 4.5 0 0 0 2.206-8.423 3.75 3.75 0 0 0-4.133-4.303A6.001 6.001 0 0 0 10.5 3.75Zm2.03 5.47a.75.75 0 0 0-1.06 0l-3 3a.75.75 0 1 0 1.06 1.06l1.72-1.72v4.94a.75.75 0 0 0 1.5 0v-4.94l1.72 1.72a.75.75 0 1 0 1.06-1.06l-3-3Z" stroke="#FFFFFF" fill="none" stroke-width="1.5px"></path>
</svg>

After

Width:  |  Height:  |  Size: 665 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

View File

@@ -0,0 +1,3 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" width="24" height="24" >
<path stroke-linecap="round" stroke-linejoin="round" d="M15 3.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 .75.75v4.5a.75.75 0 0 1-1.5 0V5.56l-3.97 3.97a.75.75 0 1 1-1.06-1.06l3.97-3.97h-2.69a.75.75 0 0 1-.75-.75Zm-12 0A.75.75 0 0 1 3.75 3h4.5a.75.75 0 0 1 0 1.5H5.56l3.97 3.97a.75.75 0 0 1-1.06 1.06L4.5 5.56v2.69a.75.75 0 0 1-1.5 0v-4.5Zm11.47 11.78a.75.75 0 1 1 1.06-1.06l3.97 3.97v-2.69a.75.75 0 0 1 1.5 0v4.5a.75.75 0 0 1-.75.75h-4.5a.75.75 0 0 1 0-1.5h2.69l-3.97-3.97Zm-4.94-1.06a.75.75 0 0 1 0 1.06L5.56 19.5h2.69a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75v-4.5a.75.75 0 0 1 1.5 0v2.69l3.97-3.97a.75.75 0 0 1 1.06 0Z" stroke="#FFFFFF" fill="none" stroke-width="1.5px"></path>
</svg>

After

Width:  |  Height:  |  Size: 949 B

View File

@@ -0,0 +1,3 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" width="24" height="24" >
<path stroke-linecap="round" stroke-linejoin="round" d="M12 1.5a5.25 5.25 0 0 0-5.25 5.25v3a3 3 0 0 0-3 3v6.75a3 3 0 0 0 3 3h10.5a3 3 0 0 0 3-3v-6.75a3 3 0 0 0-3-3v-3c0-2.9-2.35-5.25-5.25-5.25Zm3.75 8.25v-3a3.75 3.75 0 1 0-7.5 0v3h7.5Z" stroke="#FFFFFF" fill="none" stroke-width="1.5px"></path>
</svg>

After

Width:  |  Height:  |  Size: 563 B

View File

@@ -0,0 +1,3 @@
<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" width="24" height="24" >
<path stroke-linecap="round" stroke-linejoin="round" d="M3 2.25a.75.75 0 0 1 .75.75v.54l1.838-.46a9.75 9.75 0 0 1 6.725.738l.108.054A8.25 8.25 0 0 0 18 4.524l3.11-.732a.75.75 0 0 1 .917.81 47.784 47.784 0 0 0 .005 10.337.75.75 0 0 1-.574.812l-3.114.733a9.75 9.75 0 0 1-6.594-.77l-.108-.054a8.25 8.25 0 0 0-5.69-.625l-2.202.55V21a.75.75 0 0 1-1.5 0V3A.75.75 0 0 1 3 2.25Z" stroke="#FFFFFF" fill="none" stroke-width="1.5px"></path>
</svg>

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 KiB

BIN
static/images/uscase_BG.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

110
static/js/custom.js Normal file
View File

@@ -0,0 +1,110 @@
var displayedMenu = "";
var hamburgerShown = false;
let width = screen.width;
var isMobile = width < 1024;
function toggleMenu(button) {
if (displayedMenu === button.id.split("-")[0]) {
button.className = button.className.replace(
" text-blue-500 bg-stone-200 sm:bg-transparent",
" text-gray-900"
);
hideMenu(button.id.split("-")[0]);
button.lastElementChild.className = button.lastElementChild.className.replace(
"rotate-0",
"-rotate-90"
);
displayedMenu = "";
} else {
showMenu(button.id.split("-")[0]);
button.lastElementChild.className = button.lastElementChild.className.replace(
"-rotate-90",
"rotate-0"
);
button.className = button.className.replace(
" text-gray-900",
" text-blue-500 bg-stone-200 sm:bg-transparent"
);
displayedMenu = button.id.split("-")[0];
}
}
function handleClick(button) {
if (button.id === "hamburger-btn" || button.id === "close-hamburger-btn") {
toggleHamburger();
}
if (button.id.indexOf("menu") !== -1) {
toggleMenu(button);
}
}
function toggleHamburger() {
if (hamburgerShown) {
hideHamburger();
hamburgerShown = false;
} else {
showHamburger();
hamburgerShown = true;
}
}
function showMenu(menuName) {
var menuId = menuName + (isMobile ? "-mobile-menu" : "-menu");
var menuBtnId = menuName + (isMobile ? "-mobile-menu" : "-menu");
var menuElement = document.getElementById(menuId);
menuElement.className = menuElement.className.replace(" hidden", "");
setTimeout(function () {
menuElement.className = menuElement.className.replace(
"duration-200 ease-in opacity-0 -translate-y-1",
"duration-150 ease-out opacity-1 -translate-y-0"
);
}, 10);
}
function hideMenu(menuName) {
var menuId = menuName + (isMobile ? "-mobile-menu" : "-menu");
var menuElement = document.getElementById(menuId);
menuElement.className = menuElement.className.replace(
"duration-150 ease-out opacity-1 -translate-y-0",
"duration-200 ease-in opacity-0 -translate-y-1"
);
setTimeout(function () {
menuElement.className = menuElement.className + " hidden";
}, 300);
}
function showHamburger() {
document.getElementById("header-container").className = "overflow-hidden";
document.getElementById("hamburger").className =
"fixed z-20 top-0 inset-x-0 transition transform origin-top-right";
document.getElementById("hamburger-btn").className =
"hidden lg:hidden inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 focus:text-gray-500 transition duration-150 ease-in-out my-2";
document.getElementById("close-hamburger-btn").className =
"inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 focus:text-gray-500 transition duration-150 ease-in-out my-2";
}
function hideHamburger() {
document.getElementById("header-container").className = "";
document.getElementById("hamburger").className =
"hidden absolute z-20 top-0 inset-x-0 transition transform origin-top-right lg:hidden";
document.getElementById("hamburger-btn").className =
"inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 focus:text-gray-500 transition duration-150 ease-in-out my-2";
document.getElementById("close-hamburger-btn").className =
"hidden lg:hidden inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:bg-gray-100 focus:text-gray-500 transition duration-150 ease-in-out my-2";
if (displayedMenu !== "") {
hideMenu(displayedMenu);
}
}
window.onload = function () {
let elements = document.getElementsByTagName("button");
let buttons = [...elements];
buttons.forEach((button) => {
button.addEventListener("click", function () {
handleClick(button);
});
});
document
.getElementById("mobile-learn-btn")
?.addEventListener("click", toggleMenu);
};

View File

@@ -1,139 +0,0 @@
// Mobile menu toggle
document.addEventListener('DOMContentLoaded', function() {
console.log("DOM loaded - initializing dark mode");
const menuButton = document.querySelector('[aria-controls="mobile-menu"]');
const mobileMenu = document.getElementById('mobile-menu');
const menuIcons = menuButton.querySelectorAll('svg');
if (menuButton && mobileMenu) {
menuButton.addEventListener('click', function() {
const expanded = menuButton.getAttribute('aria-expanded') === 'true';
// Toggle aria-expanded
menuButton.setAttribute('aria-expanded', !expanded);
// Toggle menu visibility
mobileMenu.classList.toggle('hidden');
// Toggle icons
menuIcons.forEach(icon => {
icon.classList.toggle('hidden');
});
});
}
// Desktop dropdown menu
const whyMenuButton = document.getElementById('why-menu-button');
const desktopWhyMenu = document.getElementById('desktop-why-menu');
if (whyMenuButton && desktopWhyMenu) {
// Toggle on click
whyMenuButton.addEventListener('click', function() {
desktopWhyMenu.classList.toggle('hidden');
});
// Close when clicking outside
document.addEventListener('click', function(event) {
if (!whyMenuButton.contains(event.target) && !desktopWhyMenu.contains(event.target)) {
desktopWhyMenu.classList.add('hidden');
}
});
// Show on hover
whyMenuButton.addEventListener('mouseenter', function() {
desktopWhyMenu.classList.remove('hidden');
});
// Container for both button and menu for hover functionality
const dropdownContainer = whyMenuButton.parentElement;
// Hide on mouse leave from container
dropdownContainer.addEventListener('mouseleave', function() {
desktopWhyMenu.classList.add('hidden');
});
}
// Mobile dropdown menu
const mobileWhyMenuButton = document.querySelector('[x-data="{ open: false }"] button');
const mobileWhyMenu = document.getElementById('mobile-why-menu');
if (mobileWhyMenuButton && mobileWhyMenu) {
mobileWhyMenuButton.addEventListener('click', function() {
mobileWhyMenu.classList.toggle('hidden');
});
}
// Theme toggle functionality
const themeToggleBtn = document.getElementById('theme-toggle');
const themeToggleDarkIcon = document.getElementById('theme-toggle-dark-icon');
const themeToggleLightIcon = document.getElementById('theme-toggle-light-icon');
const mobileThemeToggleBtn = document.getElementById('mobile-theme-toggle');
// Check if dark mode is already enabled
const isDarkMode = localStorage.getItem('color-theme') === 'dark' ||
(!localStorage.getItem('color-theme') && window.matchMedia('(prefers-color-scheme: dark)').matches);
console.log("Initial dark mode state:", isDarkMode);
// Set initial theme
if (isDarkMode) {
document.documentElement.classList.add('dark');
if (themeToggleLightIcon && themeToggleDarkIcon) {
themeToggleLightIcon.classList.remove('hidden');
themeToggleDarkIcon.classList.add('hidden');
}
} else {
document.documentElement.classList.remove('dark');
if (themeToggleLightIcon && themeToggleDarkIcon) {
themeToggleLightIcon.classList.add('hidden');
themeToggleDarkIcon.classList.remove('hidden');
}
}
// Toggle theme function
function toggleTheme() {
console.log("Toggle theme clicked");
// Add transition class
document.documentElement.classList.add('transition');
// Toggle theme
const isDark = document.documentElement.classList.contains('dark');
console.log("Current dark mode:", isDark);
if (isDark) {
document.documentElement.classList.remove('dark');
localStorage.setItem('color-theme', 'light');
if (themeToggleLightIcon && themeToggleDarkIcon) {
themeToggleLightIcon.classList.add('hidden');
themeToggleDarkIcon.classList.remove('hidden');
}
console.log("Switched to light mode");
} else {
document.documentElement.classList.add('dark');
localStorage.setItem('color-theme', 'dark');
if (themeToggleLightIcon && themeToggleDarkIcon) {
themeToggleLightIcon.classList.remove('hidden');
themeToggleDarkIcon.classList.add('hidden');
}
console.log("Switched to dark mode");
}
// Remove transition class after transition completes
setTimeout(() => {
document.documentElement.classList.remove('transition');
}, 300);
}
// Add event listeners to toggle buttons
if (themeToggleBtn) {
console.log("Adding event listener to theme toggle button");
themeToggleBtn.addEventListener('click', toggleTheme);
}
if (mobileThemeToggleBtn) {
console.log("Adding event listener to mobile theme toggle button");
mobileThemeToggleBtn.addEventListener('click', toggleTheme);
}
});

BIN
static/videos/hero_bg.mp4 Normal file

Binary file not shown.