update home template
@@ -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;
|
||||
}
|
@@ -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;
|
||||
}
|
107833
static/css/main.css
BIN
static/fonts/BebasNeue-Bold.ttf
Normal file
BIN
static/fonts/CercoDEMO-Bold.otf
Normal file
BIN
static/fonts/CercoDEMO-Light.otf
Normal file
BIN
static/fonts/CercoDEMO-Medium.otf
Normal file
1
static/images/0.svg
Normal 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
@@ -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
@@ -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
@@ -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 |
Before Width: | Height: | Size: 262 KiB |
Before Width: | Height: | Size: 178 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 114 KiB |
3
static/images/computing.svg
Normal 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
After Width: | Height: | Size: 256 KiB |
3
static/images/decentralized.svg
Normal 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
After Width: | Height: | Size: 15 KiB |
BIN
static/images/geomind_logo.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
static/images/hometech.jpg
Normal file
After Width: | Height: | Size: 174 KiB |
BIN
static/images/hometech2.jpg
Normal file
After Width: | Height: | Size: 108 KiB |
BIN
static/images/logo-placeholder.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
BIN
static/images/logo.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
static/images/mesh2.gif
Normal file
After Width: | Height: | Size: 592 KiB |
3
static/images/performance.svg
Normal 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 |
BIN
static/images/revolutionizing_data_center.png
Normal file
After Width: | Height: | Size: 266 KiB |
3
static/images/scalability.svg
Normal 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 |
3
static/images/security.svg
Normal 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 |
3
static/images/sovereignty.svg
Normal 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 |
Before Width: | Height: | Size: 219 KiB |
Before Width: | Height: | Size: 116 KiB |
Before Width: | Height: | Size: 202 KiB |
BIN
static/images/tf9_depin_hub.png
Normal file
After Width: | Height: | Size: 102 KiB |
BIN
static/images/tf9_dunia_yetu.png
Normal file
After Width: | Height: | Size: 280 KiB |
BIN
static/images/uscase_BG.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
static/images/usecases_cyber.png
Normal file
After Width: | Height: | Size: 299 KiB |
BIN
static/images/usecases_digital_zone.png
Normal file
After Width: | Height: | Size: 208 KiB |
BIN
static/images/usecases_sovereign.png
Normal file
After Width: | Height: | Size: 272 KiB |
BIN
static/images/usecases_tfgrid.png
Normal file
After Width: | Height: | Size: 226 KiB |
BIN
static/images/usecases_tiers.png
Normal file
After Width: | Height: | Size: 182 KiB |
110
static/js/custom.js
Normal 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);
|
||||
};
|
@@ -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);
|
||||
}
|
||||
});
|