Merge pull request #144 from Lapikud/development

More sponsors and timetable
This commit is contained in:
2026-08-29 16:55:29 +03:00
committed by GitHub
15 changed files with 825 additions and 101 deletions

BIN
public/sponsors/2fast.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

View File

@@ -0,0 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 565.86 205.52">
<defs>
<style>
.cls-1 {
fill: #fff;
}
.cls-2 {
clip-path: url(#clippath-1);
}
.cls-3 {
clip-path: url(#clippath-3);
}
.cls-4 {
clip-path: url(#clippath-2);
}
.cls-5 {
clip-path: url(#clippath);
}
</style>
<clipPath id="clippath">
<path class="cls-1" d="M150.51,193.78c-14.26,7.5-30.5,11.75-47.73,11.75-52.83,0-96.35-39.88-102.08-91.19,3.65,29.08,24.57,58.31,57.24,75.21,31.88,16.49,66.89,17.07,92.58,4.23h-.01Z"/>
</clipPath>
<clipPath id="clippath-1">
<path class="cls-1" d="M195.64,146.82c-3.52,7.4-7.88,14.29-12.98,20.59-.03.03-.04.07-.07.1-2.41,2.95-4.97,5.77-7.71,8.45-26.85,24.98-73.75,28.64-115.02,6.34C17.53,159.44-5.18,116.67,2.62,79.89c.15-.68.31-1.37.48-2.05.1-.47.23-.92.35-1.38.1-.35.19-.7.29-1.05,2.41-8.78,5.98-17.08,10.5-24.76-21.34,39.01,1.35,92.71,50.81,120.13,49.6,27.51,107.36,18.16,129-20.88.57-1.02,1.1-2.05,1.6-3.08h-.01Z"/>
</clipPath>
<clipPath id="clippath-2">
<path class="cls-1" d="M205.52,102.78c0,3.34-.16,6.66-.48,9.91-1.26,9.89-4.55,19.38-10.05,27.97-24.34,38.06-82.66,44.22-130.28,13.78-1.6-1.02-3.17-2.06-4.7-3.17C20.27,122.76,2.62,77.46,20.44,43.5c2.18-4.17,4.81-7.98,7.84-11.46,3.21-3.37,6.64-6.54,10.28-9.45.36-.29.74-.58,1.1-.87,2.86-2.22,5.83-4.3,8.93-6.22-5.98,4.14-11.06,9.36-15,15.63-20.6,32.73-1.86,81.54,41.84,109.04,18.65,11.73,38.83,17.68,57.45,18.1,22.27-.2,42.48-8.11,55.67-22.94,2.78-3.1,5.22-6.5,7.33-10.19.03-.06.07-.13.1-.19,6.5-11.53,8.81-24.51,7.41-37.67,0-.04,0-.09,0-.15-.33-3.14-.89-6.29-1.63-9.44-.89-4.17-2.04-8.45-3.43-12.78.65,1.6,1.25,3.21,1.8,4.86,2.89,8.56,4.7,17.62,5.23,27.03.12,1.98.17,3.98.17,5.99h0Z"/>
</clipPath>
<clipPath id="clippath-3">
<path class="cls-1" d="M101.37,135.48C33.22,108.38,14.96,26.63,72.2,4.93c3.07-1.16,7.33-2.22,10.53-2.98l2.97-.54C95.44.15,96.02.07,102.26,0c9.29.28,9.65.29,15,1.03,2.5.45,5.83,1,8.3,1.56-62.51-12.1-86.98,40.28-55.77,83.59,8,11.08,17.97,19.6,28.76,25.57,38.08,21.18,86.08,10.86,91.04-29.29,1.85-14.96-3.81-27.03-5.67-30.98C156.63.55,101.94,1.29,93.45,32.62c-8.2,30.28,32.68,63.46,59.94,48.63.23-.13.47-.25.68-.41,4.64-2.76,8.08-7.4,9.52-12.97.1-.36.2-.8.29-1.28,0,0,.09-.42.15-.86.77-5.57-.8-11.35-4.52-16.62l-.09-.13s-.07.04-.1.06c-4.17,2.41-8.34,4.83-12.52,7.23-3.78,2.18-7.55,4.36-11.33,6.54-1.26-2.21-2.54-4.4-3.81-6.61-1.44-2.49-2.86-4.96-4.3-7.44l21.2-12.23,7.88-4.54h0c7.2,3.54,13.3,9.22,17.49,16.32.49.83.96,1.69,1.38,2.54,0,.03.04.06.04.1,3.47,6.92,4.87,14.44,4.3,21.63,0,.04,0,.09,0,.13-.31,4-1.22,7.88-2.72,11.51-2.18,4.96-5.61,9.17-9.94,12.5-11.59,8.93-29.69,11.54-48.31,5.07-42.61-14.79-59.39-62.57-35.89-85.86.07-.09.13-.15.2-.2,4.11-3.81,8.84-6.72,14-8.75,22.26-8.81,52.44-1.45,75.22,20.44,9.16,8.8,16.01,18.87,20.43,29.24.03.07.06.15.09.22,2.09,5.22,3.61,10.25,4.61,15.11.1.48.19.96.28,1.42,9.96,53.38-43.44,83.07-96.26,62.06h0Z"/>
</clipPath>
</defs>
<g>
<path class="cls-1" d="M150.51,193.78c-14.26,7.5-30.5,11.75-47.73,11.75-52.83,0-96.35-39.88-102.08-91.19,3.65,29.08,24.57,58.31,57.24,75.21,31.88,16.49,66.89,17.07,92.58,4.23h-.01Z"/>
<g class="cls-5">
<circle class="cls-1" cx="102.76" cy="102.76" r="102.76"/>
</g>
</g>
<g>
<path class="cls-1" d="M195.64,146.82c-3.52,7.4-7.88,14.29-12.98,20.59-.03.03-.04.07-.07.1-2.41,2.95-4.97,5.77-7.71,8.45-26.85,24.98-73.75,28.64-115.02,6.34C17.53,159.44-5.18,116.67,2.62,79.89c.15-.68.31-1.37.48-2.05.1-.47.23-.92.35-1.38.1-.35.19-.7.29-1.05,2.41-8.78,5.98-17.08,10.5-24.76-21.34,39.01,1.35,92.71,50.81,120.13,49.6,27.51,107.36,18.16,129-20.88.57-1.02,1.1-2.05,1.6-3.08h-.01Z"/>
<g class="cls-2">
<circle class="cls-1" cx="102.76" cy="102.76" r="102.76"/>
</g>
</g>
<g>
<path class="cls-1" d="M205.52,102.78c0,3.34-.16,6.66-.48,9.91-1.26,9.89-4.55,19.38-10.05,27.97-24.34,38.06-82.66,44.22-130.28,13.78-1.6-1.02-3.17-2.06-4.7-3.17C20.27,122.76,2.62,77.46,20.44,43.5c2.18-4.17,4.81-7.98,7.84-11.46,3.21-3.37,6.64-6.54,10.28-9.45.36-.29.74-.58,1.1-.87,2.86-2.22,5.83-4.3,8.93-6.22-5.98,4.14-11.06,9.36-15,15.63-20.6,32.73-1.86,81.54,41.84,109.04,18.65,11.73,38.83,17.68,57.45,18.1,22.27-.2,42.48-8.11,55.67-22.94,2.78-3.1,5.22-6.5,7.33-10.19.03-.06.07-.13.1-.19,6.5-11.53,8.81-24.51,7.41-37.67,0-.04,0-.09,0-.15-.33-3.14-.89-6.29-1.63-9.44-.89-4.17-2.04-8.45-3.43-12.78.65,1.6,1.25,3.21,1.8,4.86,2.89,8.56,4.7,17.62,5.23,27.03.12,1.98.17,3.98.17,5.99h0Z"/>
<g class="cls-4">
<circle class="cls-1" cx="102.83" cy="102.76" r="102.76"/>
</g>
</g>
<g>
<path class="cls-1" d="M101.37,135.48C33.22,108.38,14.96,26.63,72.2,4.93c3.07-1.16,7.33-2.22,10.53-2.98l2.97-.54C95.44.15,96.02.07,102.26,0c9.29.28,9.65.29,15,1.03,2.5.45,5.83,1,8.3,1.56-62.51-12.1-86.98,40.28-55.77,83.59,8,11.08,17.97,19.6,28.76,25.57,38.08,21.18,86.08,10.86,91.04-29.29,1.85-14.96-3.81-27.03-5.67-30.98C156.63.55,101.94,1.29,93.45,32.62c-8.2,30.28,32.68,63.46,59.94,48.63.23-.13.47-.25.68-.41,4.64-2.76,8.08-7.4,9.52-12.97.1-.36.2-.8.29-1.28,0,0,.09-.42.15-.86.77-5.57-.8-11.35-4.52-16.62l-.09-.13s-.07.04-.1.06c-4.17,2.41-8.34,4.83-12.52,7.23-3.78,2.18-7.55,4.36-11.33,6.54-1.26-2.21-2.54-4.4-3.81-6.61-1.44-2.49-2.86-4.96-4.3-7.44l21.2-12.23,7.88-4.54h0c7.2,3.54,13.3,9.22,17.49,16.32.49.83.96,1.69,1.38,2.54,0,.03.04.06.04.1,3.47,6.92,4.87,14.44,4.3,21.63,0,.04,0,.09,0,.13-.31,4-1.22,7.88-2.72,11.51-2.18,4.96-5.61,9.17-9.94,12.5-11.59,8.93-29.69,11.54-48.31,5.07-42.61-14.79-59.39-62.57-35.89-85.86.07-.09.13-.15.2-.2,4.11-3.81,8.84-6.72,14-8.75,22.26-8.81,52.44-1.45,75.22,20.44,9.16,8.8,16.01,18.87,20.43,29.24.03.07.06.15.09.22,2.09,5.22,3.61,10.25,4.61,15.11.1.48.19.96.28,1.42,9.96,53.38-43.44,83.07-96.26,62.06h0Z"/>
<g class="cls-3">
<circle class="cls-1" cx="102.76" cy="102.76" r="102.76"/>
</g>
</g>
<path class="cls-1" d="M298.58,144.4c3.67,0,5.15,2.71,5.15,5.4s-1.48,5.4-5.15,5.4h-4.6v6.51h-2.29v-17.31h6.89ZM298.43,153.07c2.16,0,3.02-1.61,3.02-3.27s-.83-3.29-2.89-3.29h-4.57v6.56h4.45,0Z"/>
<path class="cls-1" d="M324.64,161.71l-4.55-6.53h-2.24v6.53h-2.29v-17.31h6.51c3.77,0,5.23,2.71,5.23,5.4,0,2.51-1.43,5.18-4.52,5.4l4.6,6.51h-2.74ZM317.86,146.51v6.58h3.62c2.54,0,3.54-1.33,3.54-3.29s-1.13-3.29-2.89-3.29h-4.27Z"/>
<path class="cls-1" d="M338.44,153.09c0-4.93,3.82-9,8.74-9s8.8,4.07,8.8,9-3.85,8.92-8.8,8.92-8.74-4.02-8.74-8.92ZM353.69,153.09c0-3.72-2.81-6.89-6.51-6.89s-6.46,3.17-6.46,6.89,2.81,6.81,6.46,6.81,6.51-3.12,6.51-6.81Z"/>
<path class="cls-1" d="M374.88,144.4c4.93,0,7.82,3.77,7.82,8.7s-2.89,8.62-7.82,8.62h-6.71v-17.31h6.71ZM374.88,159.6c3.64,0,5.53-2.81,5.53-6.51s-1.88-6.58-5.53-6.58h-4.42v13.09h4.42Z"/>
<path class="cls-1" d="M394.76,155.81v-11.41h2.29v11.41c0,2.74,1.86,4.02,4.02,4.02s4.02-1.28,4.02-4.02v-11.41h2.29v11.41c0,3.95-2.89,6.21-6.31,6.21s-6.31-2.26-6.31-6.21Z"/>
<path class="cls-1" d="M419.33,153.09c0-4.9,3.9-9,8.8-9,2.66,0,4.98,1.13,6.51,2.94l-1.66,1.41c-1.16-1.36-2.91-2.24-4.85-2.24-3.64,0-6.51,3.17-6.51,6.89s2.86,6.81,6.51,6.81c1.93,0,3.69-.88,4.85-2.24l1.66,1.41c-1.53,1.81-3.84,2.94-6.51,2.94-4.9,0-8.8-4.02-8.8-8.92Z"/>
<path class="cls-1" d="M457.33,144.4v2.11h-5.28v15.2h-2.29v-15.2h-5.28v-2.11h12.85Z"/>
<path class="cls-1" d="M468.79,161.71v-17.31h2.29v17.31h-2.29Z"/>
<path class="cls-1" d="M483.21,153.09c0-4.93,3.82-9,8.75-9s8.79,4.07,8.79,9-3.84,8.92-8.79,8.92-8.75-4.02-8.75-8.92ZM498.47,153.09c0-3.72-2.81-6.89-6.51-6.89s-6.46,3.17-6.46,6.89,2.81,6.81,6.46,6.81,6.51-3.12,6.51-6.81Z"/>
<path class="cls-1" d="M523.15,144.4h2.29v17.31h-2.21l-7.99-13.19v13.19h-2.29v-17.31h2.26l7.94,13.14v-13.14Z"/>
<path class="cls-1" d="M537.65,156.81h2.26c.08,1.53,1.53,3.09,3.85,3.09s3.49-1.46,3.49-2.99c0-1.68-1.53-2.44-2.99-2.81l-2.24-.55c-3.67-.88-4.25-3.04-4.25-4.45,0-2.99,2.69-5,5.7-5s5.48,1.93,5.48,5.03h-2.26c0-1.73-1.43-2.92-3.29-2.92-1.73,0-3.34,1.16-3.34,2.87,0,.6.2,1.81,2.51,2.41l2.26.6c2.94.78,4.7,2.29,4.7,4.75,0,2.69-2.19,5.18-5.78,5.18s-6.08-2.51-6.11-5.2h.01Z"/>
<polygon class="cls-1" points="500.56 109.36 499.61 112.09 500.56 109.36 500.56 109.36"/>
<path class="cls-1" d="M309.44,104.85h10.53c.11,4.89-4.94,8.33-10.48,8.33-7.09,0-12.36-6.13-12.36-13.17s5.32-13.16,12.25-13.16c3.33,0,6.34,1.4,8.54,3.6l4.73-4.14c-3.22-3.39-7.95-5.53-13.27-5.53-10.59,0-18.86,8.71-18.86,19.24s8.17,19.08,19.08,19.08c10.32,0,17.57-6.23,17.57-19.72h-17.73v5.48h0Z"/>
<polygon class="cls-1" points="355.23 81.42 348.68 81.42 348.68 118.44 369.63 118.44 369.63 112.59 355.23 112.59 355.23 81.42"/>
<path class="cls-1" d="M405.22,80.77c-10.59,0-18.81,8.71-18.81,19.18s8.22,19.13,18.81,19.13,18.81-8.65,18.81-19.13-8.28-19.18-18.81-19.18ZM405.16,112.96c-7.04,0-12.15-5.91-12.15-13s5.11-13.06,12.15-13.06,12.31,5.97,12.31,13.06-5.21,13-12.31,13Z"/>
<path class="cls-1" d="M466.27,98.67c3.76-1.34,4.84-4.84,4.84-7.74,0-5.64-4.08-9.51-10.53-9.51h-14.4v37.02h15.53c7.69,0,11.39-5.32,11.39-10.53,0-4.08-2.31-8.33-6.82-9.24h-.01ZM460.68,112.59h-7.95v-25.31h7.58c2.85,0,4.24,1.99,4.24,4.57s-1.51,4.52-4.24,4.52h-.78l-1.92,5.53h3.23c3.92,0,5.64,2.74,5.64,5.37,0,2.79-1.99,5.32-5.8,5.32Z"/>
<polygon class="cls-1" points="504.32 81.42 490.4 118.44 497.39 118.44 499.61 112.09 499.61 112.09 499.61 112.09 500.56 109.36 500.56 109.36 502.56 103.67 502.55 103.67 507.87 88.62 513.13 103.67 509.34 103.67 507.36 109.36 515.12 109.36 518.35 118.44 525.28 118.44 511.41 81.42 504.32 81.42"/>
<polygon class="cls-1" points="551.46 112.59 551.46 81.42 544.9 81.42 544.9 118.44 565.86 118.44 565.86 112.59 551.46 112.59"/>
</svg>

After

Width:  |  Height:  |  Size: 9.5 KiB

BIN
public/sponsors/MANK.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

View File

@@ -0,0 +1,13 @@
<svg width="296" height="80" viewBox="0 0 296 80" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.123421 42.6798C0.260552 41.4132 -0.0137098 39.9333 0.260552 38.4001C0.671945 35.9202 2.11182 33.987 4.38819 32.9204C4.93672 32.6537 5.21098 32.3871 5.34811 31.6538C6.30803 26.3075 8.58439 21.3611 11.8892 16.9347C12.3006 16.4014 12.5749 16.1348 12.0264 15.4015C11.4779 14.6015 11.8892 13.7349 12.4378 13.0549C17.1139 7.97525 22.6129 4.22882 29.154 2.14894C44.8418 -2.66409 58.5961 0.615706 70.4991 11.9083C71.5961 12.9749 73.0497 13.9749 71.5961 15.7881C71.3218 16.0548 71.7332 16.3214 72.0075 16.5881C75.3809 21.1344 77.6436 26.2141 78.6858 31.7071C78.8229 32.2404 79.2343 32.5071 79.6457 32.7737C82.4706 34.1736 83.9104 36.5202 83.9104 39.6666C83.9104 42.8131 84.1847 45.1463 83.7733 47.8928C83.0877 51.9059 78.96 54.6524 74.9695 53.7724C73.8725 53.5058 73.3925 52.7058 73.3925 51.5592C73.3925 47.0129 73.5296 42.4665 73.3925 37.9201C72.9811 25.6808 67.4822 16.4547 56.5391 10.5618C38.5201 0.935687 15.1255 11.8283 11.2036 31.7605C10.5179 35.1736 10.6551 38.7867 10.6551 42.1998C10.6551 45.6129 10.6551 48.6928 10.5179 51.9592C10.5179 53.0258 9.83228 53.7591 8.52954 53.7591C3.37342 54.0258 0 50.8793 0 45.7996C0.137131 44.9996 0.137131 43.9997 0.137131 42.6531" fill="#1C80BE"/>
<path d="M35.8243 58.7355C37.6756 58.0689 39.0606 56.8023 39.472 54.7224C39.8834 52.6425 37.4836 49.7761 34.2473 46.7629C30.8739 43.6164 26.472 40.27 24.0722 39.07C20.5616 37.0035 17.2568 38.8034 16.5711 42.8165C15.7483 47.2295 16.5711 51.376 18.9846 55.0557C20.6988 57.6689 23.1123 58.8022 26.0743 59.0688C27.7199 59.0022 34.3982 59.3355 35.838 58.7355M50.9499 60.0021C53.0754 60.2687 55.0775 60.6687 57.203 60.802C60.0279 60.9354 62.1535 60.1354 63.7442 58.4555C65.7326 56.389 66.7062 53.7758 66.5691 51.0293C66.4319 48.1495 64.0184 46.4829 60.7959 47.0162C57.8338 47.4162 55.2969 48.6828 52.6091 49.6294C50.1956 50.5627 48.0701 51.6959 46.356 53.1758C43.9425 55.389 45.2589 58.3889 49.0437 59.5355C49.5237 59.7354 50.2093 59.8688 50.9636 60.0021M73.4531 57.5356C73.0417 57.1356 72.356 57.4023 72.0132 57.9356C70.7104 61.9486 64.6492 75.3878 44.011 76.8011C19.6566 78.4676 57.011 83.5606 67.6798 75.8678C71.3275 73.1213 75.4552 70.3881 75.318 62.4953C75.318 60.962 74.5638 58.3489 73.4668 57.5489" fill="#1C80BE"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M108.875 23.9691H113V29.6667H111.011C110.135 29.7066 109.565 29.8663 109.313 30.1725C109.061 30.4654 108.915 31.1177 108.889 32.1161V63C107.231 63 105.467 62.7204 104.393 61.5224C103.318 60.3243 103 57.9414 103 56.6368V13H108.889V23.9691H108.875Z" fill="white"/>
<path d="M123.128 45.7301V54.6239C123.128 55.8186 123.311 56.6416 123.622 56.9602C123.933 57.3319 124.596 57.531 125.754 57.531C126.912 57.531 127.59 57.3451 127.886 56.9602C128.197 56.6416 128.38 55.8319 128.38 54.6239V49.5133H134V54.9956C134 56.7611 133.873 58.1416 133.689 59.2168C133.449 60.292 133.012 61.1018 132.404 61.6726C131.797 62.2434 130.936 62.5487 129.905 62.7478C128.804 62.9336 127.406 63 125.684 63C123.961 63 122.45 62.9336 121.278 62.7478C120.12 62.562 119.259 62.177 118.652 61.6195C117.974 61.0487 117.551 60.292 117.367 59.2301C117.127 58.1549 117 56.7743 117 55.0089V32.0044C117 30.2389 117.127 28.8584 117.367 27.7832C117.551 26.708 117.974 25.8982 118.652 25.3274C119.259 24.823 120.12 24.4513 121.278 24.2522C122.436 24.0531 123.904 24 125.684 24C127.463 24 128.804 24.0664 129.905 24.2522C130.95 24.4381 131.797 24.7566 132.404 25.3274C133.012 25.8982 133.449 26.6549 133.689 27.7168C133.873 28.792 134 30.2389 134 32.0044V45.7434H123.128V45.7301ZM123.128 40.5664H128.38V32.4956C128.38 31.3009 128.197 30.4779 127.886 30.1593C127.576 29.8407 126.841 29.6549 125.754 29.6549C124.667 29.6549 123.919 29.8407 123.622 30.1593C123.311 30.4779 123.128 31.2876 123.128 32.4956V40.5664Z" fill="white"/>
<path d="M146.323 63C144.613 63 143.2 62.9337 142.169 62.8143C141.067 62.6286 140.219 62.3102 139.597 61.8061C138.989 61.302 138.551 60.5459 138.367 59.6041C138.127 58.6622 138 57.3357 138 55.7041V46.5643C138 44.2959 138.424 42.6643 139.286 41.5898C140.077 40.5153 141.547 40.0112 143.568 40.0112H144.727C146.14 40.0112 147.115 40.0776 147.666 40.1306C148.217 40.25 148.641 40.3827 148.952 40.5684V32.7551C148.952 31.4286 148.768 30.5531 148.457 30.1153C148.146 29.6776 147.411 29.4918 146.38 29.4918C145.348 29.4918 144.486 29.6776 144.175 30.1153C143.865 30.5531 143.681 31.4418 143.681 32.7551V36.4694H138V31.999C138 30.2347 138.127 28.7888 138.367 27.7143C138.551 26.6398 138.975 25.8837 139.597 25.3265C140.204 24.7561 141.067 24.451 142.098 24.252C143.144 24.0663 144.543 24 146.253 24C147.963 24 149.489 24.0663 150.662 24.252C151.82 24.4378 152.682 24.8224 153.347 25.3265C153.954 25.8969 154.392 26.7061 154.633 27.7806C154.873 28.8551 155 30.2347 155 31.999V62.3633C154.265 62.549 153.163 62.7347 151.637 62.8673C150.111 62.9337 148.33 62.9867 146.309 62.9867H146.323V63ZM146.691 57.7071C147.85 57.7071 148.641 57.6408 148.952 57.5878V45.2378C148.641 45.052 148.344 44.9857 147.906 44.9194C147.482 44.8531 147.044 44.8531 146.62 44.8531C145.942 44.8531 145.391 44.9194 145.023 44.9724C144.599 45.0388 144.288 45.2245 144.105 45.4765C143.921 45.7286 143.794 46.0469 143.737 46.4847C143.681 46.9224 143.681 47.4929 143.681 48.1827V54.099C143.681 54.9214 143.681 55.5449 143.737 55.9827C143.794 56.4204 143.921 56.8051 144.105 57.0571C144.288 57.3092 144.599 57.4949 145.023 57.5612C145.447 57.6275 145.998 57.6806 146.677 57.6806V57.7071H146.691Z" fill="white"/>
<path d="M165.064 63H159V25.3048H164.651V27.8232C165.064 26.8821 165.779 26.1929 166.673 25.6892C167.567 25.2518 168.818 25 170.427 25C172.036 25 173.108 25.2518 174.002 25.6892C174.896 26.1266 175.556 26.9484 175.968 28.075C176.56 26.8821 177.343 26.0603 178.292 25.623C179.241 25.2518 180.437 25 181.922 25C183.407 25 183.999 25.1193 184.837 25.3711C185.607 25.6229 186.212 26.0603 186.68 26.6303C187.161 27.2532 187.519 28.075 187.697 29.016C187.876 30.0234 188 31.2163 188 32.661V63H181.936V33.3634C181.936 32.4224 181.757 31.7332 181.455 31.3488C181.097 30.9777 180.437 30.7789 179.557 30.7789C178.677 30.7789 177.948 30.9644 177.591 31.2825C177.178 31.6006 176.876 32.1043 176.573 32.661V63H170.509V33.3634C170.509 32.4224 170.33 31.7332 170.028 31.3488C169.67 30.9777 169.01 30.7789 168.13 30.7789C167.25 30.7789 166.467 30.9644 166.054 31.2825C165.642 31.6536 165.339 32.1573 165.105 32.7272V63H165.064Z" fill="white"/>
<path d="M204.091 35.5354V32.6947C204.091 31.6195 203.968 30.8628 203.68 30.4912C203.378 30.1726 202.61 29.9867 201.486 29.9867C200.362 29.9867 199.649 30.1726 199.348 30.4912C199.046 30.8628 198.936 31.6195 198.936 32.6947V35.7212C198.936 36.292 198.991 36.7965 199.06 37.1018C199.115 37.4204 199.293 37.7257 199.471 37.9779C199.649 38.2965 199.951 38.5487 200.362 38.7345C200.773 38.9867 201.308 39.2389 201.966 39.5575C202.09 39.6239 202.323 39.7434 202.734 39.9292L205.339 41.1903C205.75 41.3761 206.106 41.5619 206.408 41.7611C207.176 42.1991 207.834 42.6372 208.3 43.0885C208.78 43.5265 209.136 43.9646 209.369 44.4159C209.602 44.9204 209.781 45.4248 209.849 45.9956C209.904 46.5664 209.973 47.2566 209.973 47.9469V54.9425C209.973 56.708 209.849 58.0885 209.671 59.1637C209.438 60.2389 209.013 61.0487 208.423 61.6195C207.765 62.1903 206.943 62.562 205.873 62.7478C204.749 62.9336 203.323 63 201.541 63C199.759 63 198.402 62.9336 197.264 62.7478C196.14 62.562 195.303 62.177 194.659 61.6195C194.001 61.0487 193.59 60.2389 193.356 59.1637C193.123 58.0885 193 56.708 193 54.9425V49.1416H198.936V54.2522C198.936 55.3805 199.115 56.1372 199.416 56.4558C199.718 56.8274 200.431 57.0266 201.555 57.0266C202.679 57.0266 203.392 56.8407 203.694 56.4558C203.995 56.0841 204.105 55.3274 204.105 54.2522V49.646C204.105 49.1416 204.105 48.7035 204.05 48.385C203.995 48.0664 203.872 47.7611 203.694 47.5089C203.515 47.2566 203.214 47.0044 202.926 46.7522C202.624 46.5664 202.158 46.3142 201.623 46.0619C201.144 45.8097 200.732 45.6239 200.321 45.4381C199.91 45.2522 199.553 45.1195 199.197 44.9336C198.785 44.8142 198.429 44.615 198.004 44.4292C197.593 44.2434 197.168 44.0575 196.702 43.7389C195.934 43.3009 195.331 42.9159 194.865 42.4779C194.385 42.0398 194.028 41.6018 193.74 41.031C193.439 40.5265 193.26 39.9027 193.206 39.1991C193.082 38.5089 193.027 37.6858 193.027 36.677V32.0708C193.027 30.3053 193.151 28.8584 193.384 27.7832C193.617 26.708 194.042 25.8982 194.686 25.3274C195.276 24.823 196.112 24.4513 197.236 24.2522C198.36 24.0664 199.786 24 201.569 24C203.351 24 204.708 24.0664 205.846 24.2522C206.97 24.4381 207.806 24.823 208.451 25.3274C209.04 25.8982 209.465 26.708 209.698 27.7832C209.877 28.8584 210 30.3053 210 32.0708V35.5354H204.091Z" fill="white"/>
<path d="M231 55.247C231 56.6736 230.945 57.917 230.767 58.8463C230.588 59.841 230.355 60.6525 229.929 61.2022C229.517 61.765 228.913 62.1969 228.199 62.4456C227.485 62.6942 226.592 62.812 225.466 62.812C224.34 62.812 223.09 62.6288 222.198 62.2492C221.305 61.8828 220.591 61.1891 220.056 60.2598V72H214V25.301H219.644V28.0365C220.179 26.8585 220.948 26.0471 221.896 25.6151C222.788 25.1832 223.914 25 225.288 25C226.661 25 227.361 25.1178 228.144 25.3665C228.913 25.6151 229.517 26.0471 229.929 26.6099C230.341 27.225 230.588 28.0365 230.767 28.9657C230.945 29.9605 231 31.1384 231 32.565V55.247ZM219.891 55.247C220.193 55.9276 220.605 56.425 221.017 56.7391C221.429 57.0532 222.033 57.171 222.802 57.171C223.571 57.171 224.354 56.9223 224.642 56.4904C224.944 56.1239 225.123 55.247 225.123 54.0691V33.8084C225.123 32.6305 224.944 31.7535 224.642 31.3216C224.34 30.8897 223.695 30.7065 222.802 30.7065C221.91 30.7065 221.429 30.8374 221.017 31.1384C220.605 31.4525 220.179 31.9499 219.891 32.6305V55.247Z" fill="white"/>
<path d="M241.128 45.7301V54.6239C241.128 55.8186 241.311 56.6416 241.622 56.9602C241.933 57.3319 242.596 57.531 243.754 57.531C244.912 57.531 245.59 57.3451 245.886 56.9602C246.197 56.6416 246.38 55.8319 246.38 54.6239V49.5133H252V54.9956C252 56.7611 251.873 58.1416 251.689 59.2168C251.449 60.292 251.012 61.1018 250.404 61.6726C249.797 62.2434 248.936 62.5487 247.905 62.7478C246.804 62.9336 245.406 63 243.684 63C241.961 63 240.45 62.9336 239.278 62.7478C238.12 62.562 237.259 62.177 236.652 61.6195C235.974 61.0487 235.551 60.292 235.367 59.2301C235.127 58.1549 235 56.7743 235 55.0089V32.0044C235 30.2389 235.127 28.8584 235.367 27.7832C235.551 26.708 235.974 25.8982 236.652 25.3274C237.259 24.823 238.12 24.4513 239.278 24.2522C240.436 24.0664 241.904 24 243.684 24C245.463 24 246.804 24.0664 247.905 24.2522C248.95 24.4381 249.797 24.7566 250.404 25.3274C251.012 25.8982 251.449 26.6549 251.689 27.7168C251.873 28.792 252 30.2389 252 32.0044V45.7434H241.128V45.7301ZM241.128 40.5664H246.38V32.4956C246.38 31.3009 246.197 30.4779 245.886 30.1593C245.576 29.8407 244.841 29.6549 243.754 29.6549C242.667 29.6549 241.919 29.8407 241.622 30.1593C241.311 30.4779 241.128 31.2876 241.128 32.4956V40.5664Z" fill="white"/>
<path d="M264.323 63C262.613 63 261.2 62.9337 260.169 62.8143C259.066 62.6286 258.219 62.3102 257.597 61.8061C256.989 61.302 256.551 60.5459 256.367 59.6041C256.127 58.6622 256 57.3357 256 55.7041V46.5643C256 44.2959 256.424 42.6643 257.286 41.5898C258.077 40.5153 259.547 40.0112 261.568 40.0112H262.727C264.14 40.0112 265.115 40.0776 265.666 40.1306C266.217 40.25 266.641 40.3827 266.952 40.5684V32.7551C266.952 31.4286 266.768 30.5531 266.457 30.1153C266.146 29.6776 265.411 29.4918 264.38 29.4918C263.348 29.4918 262.486 29.6776 262.175 30.1153C261.865 30.5531 261.681 31.4418 261.681 32.7551V36.4694H256V31.999C256 30.2347 256.127 28.7888 256.367 27.7143C256.551 26.6398 256.975 25.8837 257.597 25.3265C258.204 24.7561 259.066 24.451 260.098 24.252C261.144 24.0663 262.543 24 264.253 24C265.963 24 267.489 24.0663 268.662 24.252C269.82 24.4378 270.682 24.8224 271.347 25.3265C271.954 25.8969 272.392 26.7061 272.633 27.7806C272.873 28.8551 273 30.2347 273 31.999V62.3633C272.265 62.549 271.163 62.7347 269.637 62.8673C268.111 62.9337 266.33 62.9867 264.309 62.9867L264.323 63ZM264.691 57.7071C265.85 57.7071 266.655 57.6408 266.952 57.5878V45.2378C266.641 45.052 266.344 44.9857 265.906 44.9194C265.482 44.8531 265.058 44.8531 264.62 44.8531C263.942 44.8531 263.391 44.9194 263.037 44.9724C262.613 45.0388 262.303 45.2245 262.119 45.4765C261.935 45.7286 261.808 46.0469 261.751 46.4847C261.695 46.9224 261.695 47.4929 261.695 48.1827V54.099C261.695 54.9214 261.695 55.5449 261.751 55.9827C261.808 56.4204 261.935 56.8051 262.119 57.0571C262.303 57.3092 262.613 57.4949 263.037 57.5612C263.461 57.6275 264.012 57.6806 264.691 57.6806V57.7071Z" fill="white"/>
<path d="M289.091 63L283.375 43.5119H283.137V63H277V13H283.137V39.073H283.375L288.473 25.0901H295.214L288.585 40.9126L296 63H289.077H289.091Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" width="181" height="48" viewBox="0 0 181 48" fill="none">
<path d="M8.56168 27.6064L3.86445 36.982H0L15.3265 7.31299H19.6299L23.7118 36.982H19.9827L18.793 27.6064H8.56168ZM18.4895 24.7032L17.3449 16.1171C17.1685 14.5791 16.9347 12.4161 16.8198 10.6603H16.7336C15.9419 12.4203 15.1788 14.2707 14.3173 16.0759L9.88265 24.7114L18.4895 24.7032Z" fill="white"/>
<path d="M27.6624 36.9821L30.2551 23.2476C30.7802 20.476 31.133 17.6592 31.3504 15.6772H34.5585C34.3821 17.174 34.2057 18.6543 33.9883 20.2992H34.1196C35.4774 17.396 37.7625 15.196 40.6136 15.196C40.9517 15.2004 41.2889 15.2293 41.6228 15.2824L40.9213 18.8929C40.6022 18.8316 40.278 18.8013 39.9532 18.8024C36.7943 18.8024 33.9842 22.6308 33.0611 27.6065L31.3053 36.9821H27.6624Z" fill="white"/>
<path d="M47.2472 15.677L49.0892 27.8284C49.401 30.2463 49.6635 31.8747 49.7497 33.0631H49.8809C50.5342 31.3719 51.2821 29.719 52.1208 28.1121L58.619 15.6976H62.6148L50.804 36.982H47.2021L43.5099 15.677H47.2472Z" fill="white"/>
<path d="M83.2087 15.6771L80.3371 30.7768C79.9022 33.1536 79.5945 35.222 79.373 36.982H76.0911L76.6613 32.9768H76.5752C74.684 35.7525 71.8739 37.4672 69.0637 37.4672C66.3438 37.4672 63.4886 36.1472 63.4886 31.299C63.516 30.1005 63.6533 28.9071 63.8988 27.7338L66.1839 15.6729H69.8309L67.5869 27.557C67.337 28.5821 67.1994 29.6314 67.1766 30.6863C67.1766 32.8863 68.0997 34.3873 70.6021 34.3873C73.24 34.3873 76.6203 31.3032 77.4982 26.5742L79.5494 15.6565L83.2087 15.6771Z" fill="white"/>
<path d="M95.1098 9.95703L94.0103 15.677H99.1014L98.5353 18.5555H93.4401L91.4832 28.8852C91.2415 30.0146 91.1042 31.164 91.073 32.3188C91.073 33.5935 91.6843 34.3419 93.0914 34.3419C93.6657 34.3463 94.2393 34.3023 94.8062 34.2104L94.6298 37.0889C93.7226 37.3826 92.7727 37.5216 91.8196 37.5001C88.5665 37.5001 87.3398 35.518 87.3398 33.3591C87.3532 32.0094 87.5044 30.6646 87.7911 29.3457L89.8997 18.5596H86.8229L87.3973 15.6811H90.4248L91.3479 10.8823L95.1098 9.95703Z" fill="white"/>
<path d="M118.116 19.5096L116.405 28.1779C116.206 29.1797 116.088 30.196 116.052 31.2168C116.052 32.36 116.578 33.1084 117.944 33.1084C118.53 33.1248 119.117 33.0959 119.699 33.022L119.215 37.0273C118.129 37.3354 117.005 37.4837 115.876 37.4673C112.364 37.4673 110.764 35.514 110.764 33.0467C110.772 31.6974 110.934 30.3535 111.249 29.0415L113.095 19.4931H110.198L110.941 15.5331H113.841L114.719 10.907L119.946 9.63223L118.846 15.5331H121.841V0.149658H100.201V30.4684L103.011 15.5496H108.151L104.049 36.982H100.184V47.8504H121.841V19.5096H118.116ZM106.477 12.4861C106.12 12.5003 105.764 12.4388 105.432 12.3054C105.1 12.172 104.799 11.9698 104.551 11.712C104.302 11.4542 104.11 11.1466 103.989 10.8095C103.867 10.4724 103.817 10.1132 103.844 9.7556C103.833 9.34579 103.905 8.93806 104.056 8.55684C104.206 8.17561 104.432 7.82872 104.719 7.53693C105.006 7.24514 105.349 7.01446 105.728 6.85869C106.106 6.70292 106.512 6.62526 106.921 6.63038C107.285 6.61858 107.647 6.68256 107.986 6.81827C108.324 6.95398 108.631 7.15848 108.886 7.41888C109.142 7.67928 109.341 7.98993 109.471 8.33124C109.6 8.67255 109.658 9.03712 109.64 9.40195C109.645 9.81564 109.566 10.226 109.408 10.608C109.249 10.9901 109.015 11.3358 108.719 11.6243C108.423 11.9128 108.072 12.1379 107.687 12.2861C107.301 12.4342 106.89 12.5023 106.477 12.4861Z" fill="#E3068C"/>
<path d="M138.095 36.9821C138.162 35.141 138.324 33.3046 138.579 31.4801H138.488C136.162 35.8801 133.266 37.4673 130.234 37.4673C126.501 37.4673 124.13 34.4737 124.13 30.4233C124.13 23.0214 129.574 15.2084 138.841 15.2084C140.775 15.2013 142.699 15.4784 144.552 16.0308L142.402 27.1336C141.758 30.383 141.448 33.6899 141.475 37.0027L138.095 36.9821ZM140.466 18.4076C139.634 18.1939 138.777 18.0902 137.918 18.0992C132.429 18.0992 127.953 23.8562 127.908 29.7653C127.908 32.138 128.729 34.4737 131.551 34.4737C134.583 34.4737 138.185 30.5137 139.235 24.8349L140.466 18.4076Z" fill="white"/>
<path d="M146.919 36.9821L149.507 23.2476C150.037 20.476 150.389 17.6592 150.607 15.6772H153.815C153.639 17.174 153.462 18.6708 153.245 20.2992H153.376C154.738 17.396 157.019 15.196 159.874 15.196C160.212 15.2004 160.549 15.2293 160.883 15.2824L160.182 18.8929C159.863 18.8319 159.539 18.8016 159.214 18.8024C156.055 18.8024 153.245 22.6308 152.318 27.6065L150.558 36.9821H146.919Z" fill="white"/>
<path d="M160.928 36.9819L166.811 5.72974H170.454L166.725 25.3199H166.811C167.472 24.5674 168.259 23.7779 168.789 23.1611L176.296 15.677H180.776L171.513 24.4399L177.88 36.9819H173.839L168.744 26.4672L166.065 28.8893L164.53 36.986L160.928 36.9819Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -1,27 +1,198 @@
import { vipnagorgialla } from "@/components/Vipnagorgialla";
import { getTranslations, setRequestLocale } from "next-intl/server";
"use client";
export default async function Timetable({
params,
}: {
params: Promise<{ locale: string }>;
}) {
const { locale } = await params;
setRequestLocale(locale);
const t = await getTranslations({ locale });
import { useState } from "react";
import { useSearchParams } from "next/navigation";
import { vipnagorgialla } from "@/components/Vipnagorgialla";
import { scheduleData, type ScheduleItem } from "@/data/timetable";
import { useTranslations, useLocale } from "next-intl";
const tabs = Object.keys(scheduleData);
// Map of filter shorthand to location key suffixes
const FILTER_MAP: Record<string, string[]> = {
aula: ['auditorium'],
auditorium: ['auditorium'],
tudengimaja: ['studentHouse'],
studenthouse: ['studentHouse'],
fuajee: ['lobbyAndLanArea'],
foyer: ['lobbyAndLanArea'],
lan: ['lobbyAndLanArea'],
lanarea: ['lobbyAndLanArea'],
lobby: ['lobbyAndLanArea'],
};
function matchesFilter(item: ScheduleItem, filter: string): boolean {
const normalizedFilter = filter.toLowerCase();
const locationKeys = Array.isArray(item.locationKey) ? item.locationKey : [item.locationKey];
// Get the matching location suffixes from the filter map, or use the filter directly
const filterSuffixes = FILTER_MAP[normalizedFilter] || [normalizedFilter];
// Check if any of the item's location keys contain any of the filter suffixes
return locationKeys.some(key =>
filterSuffixes.some(suffix =>
key.toLowerCase().includes(suffix.toLowerCase())
)
);
}
function formatLocationKeys(keys: string[], t: (key: string) => string, locale: string): string {
const translated = keys.map(k => t(k));
if (translated.length === 1) return translated[0];
const isEstonian = locale === 'et';
const and = isEstonian ? ' ja ' : ' and ';
if (translated.length === 2) {
return translated.join(and);
}
if (isEstonian) {
return translated.slice(0, -1).join(', ') + and + translated[translated.length - 1];
}
return translated.slice(0, -1).join(', ') + ', and ' + translated[translated.length - 1];
}
export default function Timetable() {
const searchParams = useSearchParams();
const filter = searchParams.get('filter') || '';
const [activeTab, setActiveTab] = useState(tabs[0]);
const schedule = scheduleData[activeTab];
const t = useTranslations();
const locale = useLocale();
// Filter schedule items based on the filter parameter
const filteredSchedule = filter
? schedule.filter(item => matchesFilter(item, filter))
: schedule;
return (
<div className="bg-[#0E0F19] min-h-screen flex flex-col items-center justify-center">
<div>
<div className="flex flex-col min-h-[90vh] m-6 mt-16 md:m-16">
<h1
className={`${vipnagorgialla.className} font-bold italic text-[clamp(1.75rem,5vw,3rem)] text-[#EEE5E5] uppercase mb-4 text-center`}
className={`text-4xl md:text-5xl lg:text-6xl ${vipnagorgialla.className} font-bold italic uppercase text-[#2A2C3F] dark:text-[#EEE5E5] mt-8 md:mt-16 mb-8`}
>
{t("schedule.title")}
</h1>
<p
className={`${vipnagorgialla.className} font-bold italic text-[clamp(2rem,8vw,4.5rem)] text-[#EEE5E5] uppercase text-center`}
{/* Tab menu */}
<div className="flex gap-4 mb-8 flex-wrap">
{tabs.map((tab) => (
<button
key={tab}
onClick={() => setActiveTab(tab)}
className={`${vipnagorgialla.className} group font-bold cursor-pointer italic leading-none text-lg uppercase px-4 py-2 border-4 border-[#00A3E0] transition ${
activeTab === tab
? "bg-[#00A3E0] text-black cursor-default pointer-events-none"
: "bg-[#1F5673] text-[#EEE5E5] hover:bg-[#00A3E0] hover:text-black"
}`}
>
{t("schedule.comingSoon")}
</p>
{t(`schedule.${tab}`)}
</button>
))}
</div>
{/* Filter buttons */}
<div className="mb-2">
<h2 className={`${vipnagorgialla.className} text-2xl md:text-3xl italic font-bold uppercase text-[#2A2C3F] dark:text-[#EEE5E5]`}>
{t("schedule.location")}
</h2>
</div>
<div className="flex gap-4 mb-8 flex-wrap">
<button
onClick={() => {
const url = new URL(window.location.href);
url.searchParams.delete('filter');
window.history.pushState({}, '', url.toString());
}}
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg uppercase px-4 py-2 border-4 border-[#00A3E0] transition cursor-pointer ${
!filter
? "bg-[#00A3E0] text-black cursor-default pointer-events-none"
: "bg-[#1F5673] text-[#EEE5E5] hover:bg-[#00A3E0] hover:text-black"
}`}
>
{t("common.all")}
</button>
<button
onClick={() => {
const url = new URL(window.location.href);
url.searchParams.set('filter', 'aula');
window.history.pushState({}, '', url.toString());
}}
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg uppercase px-4 py-2 border-4 border-[#00A3E0] transition cursor-pointer ${
filter === 'aula'
? "bg-[#00A3E0] text-black cursor-default pointer-events-none"
: "bg-[#1F5673] text-[#EEE5E5] hover:bg-[#00A3E0] hover:text-black"
}`}
>
{t("schedule.locations.auditorium")}
</button>
<button
onClick={() => {
const url = new URL(window.location.href);
url.searchParams.set('filter', 'tudengimaja');
window.history.pushState({}, '', url.toString());
}}
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg uppercase px-4 py-2 border-4 border-[#00A3E0] transition cursor-pointer ${
filter === 'tudengimaja'
? "bg-[#00A3E0] text-black cursor-default pointer-events-none"
: "bg-[#1F5673] text-[#EEE5E5] hover:bg-[#00A3E0] hover:text-black"
}`}
>
{t("schedule.locations.studentHouse")}
</button>
<button
onClick={() => {
const url = new URL(window.location.href);
url.searchParams.set('filter', 'fuajee');
window.history.pushState({}, '', url.toString());
}}
className={`${vipnagorgialla.className} font-bold italic leading-none text-lg uppercase px-4 py-2 border-4 border-[#00A3E0] transition cursor-pointer ${
filter === 'fuajee'
? "bg-[#00A3E0] text-black cursor-default pointer-events-none"
: "bg-[#1F5673] text-[#EEE5E5] hover:bg-[#00A3E0] hover:text-black"
}`}
>
{t("schedule.locations.lobbyAndLanArea")}
</button>
</div>
{/* Schedule entries */}
<div className="space-y-6">
{filteredSchedule.map((item, idx) => (
<div
key={idx}
className="border-l-4 border-[#007CAB] pl-8 flex flex-col sm:flex-row flex-wrap gap-2 sm:gap-5 items-stretch"
>
<div
className={`${vipnagorgialla.className} w-[260px] md:w-[360px] text-[#00A3E0] text-3xl md:text-[2.5rem] font-bold italic flex items-start justify-start sm:pt-3 whitespace-nowrap`}
>
{item.time}
</div>
<div className="flex-1 flex flex-col justify-start pt-3 min-w-0 sm:min-h-24">
<div
className={`${vipnagorgialla.className} text-2xl md:text-3xl italic font-bold text-[#2A2C3F] dark:text-[#EEE5E5] text-balance`}
>
{t(item.titleKey)}
</div>
{item.description && (
<div className="text-xl md:text-2xl text-[#938BA1] dark:text-[#938BA1] text-balance">
{item.description}
</div>
)}
<div className="text-xl md:text-2xl text-[#938BA1] dark:text-[#938BA1] text-balance">
{Array.isArray(item.locationKey)
? formatLocationKeys(item.locationKey, t, locale)
: t(item.locationKey)
}
</div>
</div>
</div>
))}
</div>
<p className="text-xl pt-8 max-w-4xl italic">{t("schedule.transportInfo")}</p>
</div>
</div>
);
}

View File

@@ -32,7 +32,7 @@ export default async function Page({
return (
<div className="bg-[#0E0F19] min-h-screen pt-16 md:pt-20">
<div className="max-w-480 mx-auto px-4 sm:px-6 md:px-12 lg:px-64 py-10 md:py-20">
<div className="grid grid-cols-1 lg:grid-cols-[1fr_250px] lg:gap-30">
<div className="tournament-page-scope grid grid-cols-1 lg:grid-cols-[1fr_300px] gap-8 lg:gap-16">
{/* Main content */}
<div>
{/* Page title */}

View File

@@ -41,7 +41,7 @@ const Header = ({ navItems }: HeaderProps) => {
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
// Header navigation should include all options except homepage and hidden items
const hiddenNavHrefs: NavItem["href"][] = ["/messiala", "/ajakava"];
const hiddenNavHrefs: NavItem["href"][] = ["/messiala"];
const mainNavItems = navItems.filter(
(item) => item.href !== "/" && !hiddenNavHrefs.includes(item.href),
);

View File

@@ -54,23 +54,23 @@ const sponsors: Sponsor[] = [
href: "https://k-space.ee/",
src: "/sponsors/k-space_ee-white.png",
alt: "K-Space",
width: 200,
height: 200,
width: 244,
height: 244,
className: "not-dark:invert",
},
{
href: "https://globalproductions.ee/",
src: "/sponsors/Global-productions.png",
src: "/sponsors/Global-productions.svg",
alt: "Global Productions",
width: 200,
height: 200,
width: 244,
height: 244,
},
{
href: "https://www.linkedin.com/company/gamedev-guild/",
src: "/sponsors/estonian_gamedev_guild.png",
alt: "Estonian Gamedev Guild",
width: 200,
height: 200,
width: 244,
height: 244,
className: "not-dark:invert",
},
{
@@ -84,15 +84,15 @@ const sponsors: Sponsor[] = [
href: "https://ingame.ee/",
src: "/sponsors/ingame.png",
alt: "iNGAME",
width: 200,
height: 200,
width: 164,
height: 164,
},
{
href: "https://www.tallinn.ee/et/haridusamet",
src: "/sponsors/Tallinna_Haridusamet_logo_RGB.svg",
alt: "Tallinna Haridusamet",
width: 200,
height: 200,
width: 244,
height: 244,
},
{
href: "https://parkminigolf.ee/",
@@ -105,15 +105,15 @@ const sponsors: Sponsor[] = [
href: "https://www.lemongym.ee/",
src: "/sponsors/lemongym.png",
alt: "Lemongym",
width: 200,
height: 200,
width: 144,
height: 144,
},
{
href: "https://www.elamusgolf.eu/",
src: "/sponsors/elamusgolf.png",
alt: "Elamusgolf",
width: 200,
height: 200,
width: 164,
height: 164,
},
{
href: "https://www.egda.ee/",
@@ -121,7 +121,42 @@ const sponsors: Sponsor[] = [
alt: "Estonian Game Developers Association",
width: 344,
height: 344,
}
},
{
href: "https://www.teamspeak.com/",
src: "/sponsors/TS_InLine_BlueLight.svg",
alt: "TeamSpeak",
width: 344,
height: 344,
},
{
href: "https://arvutitark.ee/",
src: "/sponsors/arvutitark.svg",
alt: "Arvutitark",
width: 344,
height: 344,
},
{
href: "https://www.kino.ee/",
src: "/sponsors/Artis_logo_white_text.png",
alt: "Artis Kino",
width: 344,
height: 344,
},
{
href: "https://www.tallinn.ee/et/mank",
src: "/sponsors/MANK.png",
alt: "Mustamäe Avatud Noortekeskus",
width: 200,
height: 244,
},
{
href: "https://2fast.ee/",
src: "/sponsors/2fast.png",
alt: "2FAST",
width: 244,
height: 244,
},
];
interface SponsorsProps {

View File

@@ -288,14 +288,14 @@ export default function SwitchableTicketCard({
{/* Chevron buttons on left/right sides */}
<button
onClick={() => setIsA(false)}
className={`${isA ? "flex" : "hidden"} absolute right-0 top-1/2 -translate-y-1/2 w-10 h-10 items-center justify-center bg-[#0E0F19]/50 hover:bg-[#007CAB] text-[#EEE5E5] transition-all duration-300 z-20`}
className={`${isA ? "flex" : "hidden"} absolute right-0 top-1/2 -translate-y-1/2 w-10 h-10 items-center justify-center cursor-pointer bg-[#0E0F19]/50 hover:bg-[#007CAB] text-[#EEE5E5] transition-all duration-300 z-20`}
aria-label={optionB.title}
>
<span className="material-symbols-outlined">chevron_right</span>
</button>
<button
onClick={() => setIsA(true)}
className={`${!isA ? "flex" : "hidden"} absolute left-0 top-1/2 -translate-y-1/2 w-10 h-10 items-center justify-center bg-[#0E0F19]/50 hover:bg-[#007CAB] text-[#EEE5E5] transition-all duration-300 z-20`}
className={`${!isA ? "flex" : "hidden"} absolute left-0 top-1/2 -translate-y-1/2 w-10 h-10 items-center justify-center cursor-pointer bg-[#0E0F19]/50 hover:bg-[#007CAB] text-[#EEE5E5] transition-all duration-300 z-20`}
aria-label={optionA.title}
>
<span className="material-symbols-outlined">chevron_left</span>

View File

@@ -1,112 +1,392 @@
export type ScheduleItem = {
time?: string; // Aeg on ajutine praegu kuna pole 100% kindlalt paigas
titleKey: string;
locationKey: string;
locationKey: string | string[];
description?: string;
};
export const scheduleData: Record<string, ScheduleItem[]> = {
oct24: [
sep11: [
{
titleKey: "schedule.events.doorsOpen",
locationKey: "schedule.locations.registrationSetup",
locationKey: [
"schedule.locations.auditorium",
"schedule.locations.studentHouse",
"schedule.locations.lobbyAndLanArea"
],
time: "17:00",
},
{
titleKey: "schedule.events.gamersSetup",
locationKey: [
"schedule.locations.auditorium",
"schedule.locations.studentHouse"
],
time: "17:00-19:00",
},
{
titleKey: "schedule.events.exploring",
locationKey: [
"schedule.locations.auditorium",
"schedule.locations.studentHouse"
],
time: "17:00-18:00",
},
{
titleKey: "schedule.events.gameDevShowcasing",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "17:00-00:00",
},
{
titleKey: "schedule.events.miniTournaments",
locationKey: "schedule.locations.studentHouse",
time: "18:00",
},
{
titleKey: "schedule.events.smashBrosUltimate",
locationKey: "schedule.locations.studentHouse",
time: "18:30",
titleKey: "schedule.events.lanAreaTournaments",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "18:00-00:00",
},
{
titleKey: "schedule.events.cs2LolTournaments",
titleKey: "schedule.events.minigamesAndTournaments",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "18:00-00:00",
},
{
titleKey: "schedule.events.blueCarpet",
locationKey: [
"schedule.locations.auditorium",
"schedule.locations.studentHouse"
],
time: "19:00",
},
{
titleKey: "schedule.events.day1Begins",
locationKey: [
"schedule.locations.auditorium",
"schedule.locations.studentHouse"
],
time: "19:30",
},
{
titleKey: "schedule.events.cs2SwissR1",
locationKey: "schedule.locations.auditorium",
time: "20:00",
time: "20:00-21:00",
},
{
titleKey: "schedule.events.lolGame1",
locationKey: "schedule.locations.auditorium",
time: "20:00-21:00",
},
{
titleKey: "schedule.events.cs2SwissR2",
locationKey: "schedule.locations.auditorium",
time: "21:00-22:00",
},
{
titleKey: "schedule.events.lolGame2",
locationKey: "schedule.locations.auditorium",
time: "21:00-22:00",
},
{
titleKey: "schedule.events.cs2SwissR3",
locationKey: "schedule.locations.auditorium",
time: "22:00-23:00",
},
{
titleKey: "schedule.events.lolGame3",
locationKey: "schedule.locations.auditorium",
time: "22:00-23:00",
},
{
titleKey: "schedule.events.cs2SwissR4",
locationKey: "schedule.locations.auditorium",
time: "23:00-00:00",
},
{
titleKey: "schedule.events.lolGame4",
locationKey: "schedule.locations.auditorium",
time: "23:00-00:00",
},
{
titleKey: "schedule.events.cs2SwissR5",
locationKey: "schedule.locations.auditorium",
time: "00:00-01:00",
},
{
titleKey: "schedule.events.lolGame5",
locationKey: "schedule.locations.auditorium",
time: "00:00-01:00",
},
{
titleKey: "schedule.events.doorsClose",
locationKey: "schedule.locations.auditoriumAndStudentHouse",
locationKey: [
"schedule.locations.auditorium",
"schedule.locations.studentHouse",
"schedule.locations.lobbyAndLanArea"
],
time: "*01:00",
},
],
oct25: [
sep12: [
{
titleKey: "schedule.events.doorsOpenSimple",
locationKey: "schedule.locations.auditorium",
time: "09:30",
locationKey: [
"schedule.locations.auditorium",
"schedule.locations.studentHouse",
"schedule.locations.lobbyAndLanArea"
],
time: "09:00",
},
{
titleKey: "schedule.events.cs2Continue",
titleKey: "schedule.events.gamersSetup",
locationKey: "schedule.locations.auditorium",
time: "11:00",
time: "09:00-10:30",
},
{
titleKey: "schedule.events.lolContinue",
titleKey: "schedule.events.gamersSetup",
locationKey: "schedule.locations.studentHouse",
time: "09:00-11:30",
},
{
titleKey: "schedule.events.cs2WbR1",
locationKey: "schedule.locations.auditorium",
time: "12:00",
time: "10:30-13:00",
},
{
titleKey: "schedule.events.cs2ScWbR1",
locationKey: "schedule.locations.auditorium",
time: "10:30-11:30",
},
{
titleKey: "schedule.events.cs2ScLbR1",
locationKey: "schedule.locations.auditorium",
time: "11:30-12:30",
},
{
titleKey: "schedule.events.lolTournamentQuarters",
locationKey: "schedule.locations.auditorium",
time: "11:30-14:30",
},
{
titleKey: "schedule.events.expoOpens",
locationKey: "schedule.locations.entranceHall",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "12:00",
},
{
titleKey: "schedule.events.2xkoTournament",
titleKey: "schedule.events.gamedevExpo",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "12:00-19:00",
},
{
titleKey: "schedule.events.miniTournaments",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "13:00-19:00",
},
{
titleKey: "schedule.events.cs2LbR1",
locationKey: "schedule.locations.auditorium",
time: "13:00-14:00",
},
{
titleKey: "schedule.events.cs2ScWbR2",
locationKey: "schedule.locations.auditorium",
time: "12:30-13:30",
},
{
titleKey: "schedule.events.cs2ScLbR2",
locationKey: "schedule.locations.auditorium",
time: "13:30-14:30",
},
{
titleKey: "schedule.events.cs2WbR2",
locationKey: "schedule.locations.auditorium",
time: "14:00-16:00",
},
{
titleKey: "schedule.events.cs2ScWbR3",
locationKey: "schedule.locations.auditorium",
time: "14:30-15:30",
},
{
titleKey: "schedule.events.lolBreak",
locationKey: "schedule.locations.auditorium",
time: "14:30-15:00",
},
{
titleKey: "schedule.events.lolSemiFinals",
locationKey: "schedule.locations.auditorium",
time: "15:00-18:00",
},
{
titleKey: "schedule.events.cs2ScLbR3",
locationKey: "schedule.locations.auditorium",
time: "15:45-16:30",
},
{
titleKey: "schedule.events.cs2LbR2",
locationKey: "schedule.locations.auditorium",
time: "16:30-17:30",
},
{
titleKey: "schedule.events.cs2ScLbR4",
locationKey: "schedule.locations.auditorium",
time: "16:30-17:30",
},
{
titleKey: "schedule.events.break",
locationKey: "schedule.locations.auditorium",
time: "17:30-19:30",
},
{
titleKey: "schedule.events.break",
locationKey: "schedule.locations.studentHouse",
time: "13:30",
time: "18:00-19:00",
},
{
titleKey: "schedule.events.lolFinale",
titleKey: "schedule.events.avatarLegendsFinal",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "19:00-19:30",
},
{
titleKey: "schedule.events.gamedevAwardCeremony",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "19:00-20:00",
},
{
titleKey: "schedule.events.lolFinalsAndThirdPlace",
locationKey: "schedule.locations.auditorium",
time: "19:30",
time: "19:00-00:00",
},
{
titleKey: "schedule.events.cs2lbsemifinals",
titleKey: "schedule.events.cs2WbR3",
locationKey: "schedule.locations.auditorium",
time: "19:30",
time: "19:30-22:00",
},
{
titleKey: "schedule.events.cs2lbfinals",
titleKey: "schedule.events.cs2ScSemiFinal",
locationKey: "schedule.locations.auditorium",
time: "21:30",
time: "19:30-20:30",
},
{
titleKey: "schedule.events.granTurismoFinale",
locationKey: "schedule.locations.studentHouse",
time: "20:00",
titleKey: "schedule.events.tekken8Final",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "19:30-20:00",
},
{
titleKey: "schedule.events.streetFighter6Final",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "20:00-20:30",
},
{
titleKey: "schedule.events.gamedevExpo",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "20:00-00:00",
},
{
titleKey: "schedule.events.twoXkoFinal",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "20:30-21:00",
},
{
titleKey: "schedule.events.cs2ScLbR5",
locationKey: "schedule.locations.auditorium",
time: "20:30-21:30",
},
{
titleKey: "schedule.events.ssbuFinal",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "21:00-21:30",
},
{
titleKey: "schedule.events.cs2ScTournamentFinal",
locationKey: "schedule.locations.auditorium",
time: "21:30-23:30",
},
{
titleKey: "schedule.events.invincibleVsFinal",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "21:30-22:00",
},
{
titleKey: "schedule.events.cs2LbR3",
locationKey: "schedule.locations.auditorium",
time: "22:00-23:00",
},
{
titleKey: "schedule.events.miniTournamentsAwardCeremony",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "22:00-22:30",
},
{
titleKey: "schedule.events.cs2LbR4",
locationKey: "schedule.locations.auditorium",
time: "23:00-00:00",
},
{
titleKey: "schedule.events.awardCeremony",
locationKey: "schedule.locations.lobbyAndLanArea",
time: "00:00-00:30",
},
{
titleKey: "schedule.events.doorsClose",
locationKey: "schedule.locations.auditoriumAndStudentHouse",
time: "*01:00",
locationKey: "schedule.locations.auditorium",
time: "*01:30",
},
],
oct26: [
sep13: [
{
titleKey: "schedule.events.cs2semifinals",
locationKey: "schedule.locations.auditorium",
time: "11:00",
titleKey: "schedule.events.noEventsScheduled",
locationKey: [
"schedule.locations.studentHouse",
"schedule.locations.lobbyAndLanArea"
],
time: "-",
},
{
titleKey: "schedule.events.Cs2finals",
titleKey: "schedule.events.doorsOpenSimple",
locationKey: "schedule.locations.auditorium",
time: "15:30",
time: "09:00",
},
{
titleKey: "schedule.events.AwardsCeremony",
titleKey: "schedule.events.gamersSetup",
locationKey: "schedule.locations.auditorium",
time: "18:00",
time: "09:30-10:30",
},
{
titleKey: "schedule.events.doorsClose",
titleKey: "schedule.events.cs2WbR4",
locationKey: "schedule.locations.auditorium",
time: "10:30-13:00",
},
{
titleKey: "schedule.events.cs2LbR5",
locationKey: "schedule.locations.auditorium",
time: "13:00-14:00",
},
{
titleKey: "schedule.events.cs2LbR6",
locationKey: "schedule.locations.auditorium",
time: "14:00-16:00",
},
{
titleKey: "schedule.events.cs2GrandFinal",
locationKey: "schedule.locations.auditorium",
time: "16:00-18:00",
},
{
titleKey: "schedule.events.awardCeremony",
locationKey: "schedule.locations.auditorium",
time: "18:30",
},
{
titleKey: "schedule.events.closingCeremony",
locationKey: "schedule.locations.auditorium",
time: "19:00",
},
{
titleKey: "schedule.events.doorsClose",
locationKey: "schedule.locations.auditorium",
time: "19:30",
},
],
};

View File

@@ -24,6 +24,7 @@
"search": "Search",
"filter": "Filter",
"reset": "Reset",
"all": "ALL",
"theme": {
"light": "Light",
"dark": "Dark",
@@ -77,7 +78,7 @@
"description": "The TipiLAN expo area hosts companies, additional activities and lectures."
},
"reserveSpot": "Reserve your spot today!",
"poweredBy": "Toetajad",
"poweredBy": "TipiLAN is powered by...",
"dateAndLocation": "11th13th Sep. 2026 @ TalTech"
}
},
@@ -378,7 +379,7 @@
{
"main": "The 32-team tournament will take place in two stages:",
"sub": [
"Swiss stage: 5 rounds, initial phase Bo1, deciding matches Bo3. 3 wins = playoffs (Top 16). 3 losses = Second Chance Tournament.",
"Swiss stage: 5 rounds, initial phase Bo1. 3 wins = playoffs (Top 16). 3 losses = Second Chance Tournament.",
"Playoffs: Double elimination. Upper bracket Bo3, lower bracket Bo1, Lower Final is Bo3.",
"Second Chance Tournament: Double elimination. All matches except Final are Bo1, Final is Bo3."
]
@@ -483,7 +484,7 @@
},
"info": {
"title": "GENERAL INFO",
"description": "TipiLAN 2026 LoL tournament takes place September 11-13 at TalTech, Tallinn, Estonia. This is a BYOC (bring your own computer) LAN tournament. On-site, each participant is provided with: desk, chair, wired internet connection, power connection (2 outlets)."
"description": "TipiLAN 2026 LoL tournament takes place September 11-12 at TalTech, Tallinn, Estonia. This is a BYOC (bring your own computer) LAN tournament. On-site, each participant is provided with: desk, chair, wired internet connection, power connection (2 outlets)."
},
"prizes": {
"title": "PRIZE POOL",
@@ -514,7 +515,7 @@
{
"title": "General Information",
"rules": [
"The League of Legends (hereinafter LoL) tournament takes place as a two-day event on September 11-13, 2026 at Tallinn University of Technology (TalTech) premises, Ehitajate tee 5, Tallinn.",
"The League of Legends (hereinafter LoL) tournament takes place as a two-day event on September 11-12, 2026 at Tallinn University of Technology (TalTech) premises, Ehitajate tee 5, Tallinn.",
{
"main": "The tournament prize pool is 3000€, distributed as follows:",
"sub": [
@@ -727,9 +728,9 @@
"time": "Time",
"event": "Event",
"location": "Location",
"oct24": "October 24th",
"oct25": "October 25th",
"oct26": "October 26th",
"sep11": "September 11th",
"sep12": "September 12th",
"sep13": "September 13th",
"events": {
"doorsOpen": "Doors open, expo area available",
"doorsOpenSimple": "Doors open",
@@ -755,19 +756,85 @@
"cs2semifinals": "CS2 upper bracket semifinals",
"Cs2finals": "CS2 finals",
"AwardsCeremony": "Awards ceremony",
"awardCeremony": "Award ceremony",
"granTurismoFinale": "Gran Turismo finale",
"lolTournamentSemifinals": "LoL tournament semifinals",
"cs2Finale": "CS2 finale",
"cs2FinalMatch": "CS2 final match",
"cs2TournamentFinale": "CS2 tournament finale"
"cs2TournamentFinale": "CS2 tournament finale",
"gamersSetup": "Gamers Setup",
"staffSetup": "Staff Setup",
"exploring": "Exploring",
"gameDevShowcasing": "GameDev Showcasing",
"lanAreaTournaments": "LAN Area Tournaments",
"minigamesAndTournaments": "Minigames and Tournaments",
"blueCarpet": "Blue Carpet",
"day1Begins": "Day 1 Begins",
"cs2SwissR1": "CS2 Swiss Round 1",
"cs2SwissR2": "CS2 Swiss Round 2",
"cs2SwissR3": "CS2 Swiss Round 3",
"cs2SwissR4": "CS2 Swiss Round 4",
"cs2SwissR5": "CS2 Swiss Round 5",
"lolGame1": "LoL Game 1",
"lolGame2": "LoL Game 2",
"lolGame3": "LoL Game 3",
"lolGame4": "LoL Game 4",
"lolGame5": "LoL Game 5",
"gamedevExpo": "Gamedev Expo",
"gamedevAwardCeremony": "Gamedev Award Ceremony",
"break": "CS2 Break",
"avatarLegendsFinal": "Avatar Legends final",
"tekken8Final": "Tekken 8 final",
"streetFighter6Final": "Street Fighter 6 final",
"twoXkoFinal": "2XKO final",
"ssbuFinal": "SSBU final",
"invincibleVsFinal": "Invincible VS final",
"finalsAndThirdPlace": "Finals + 3rd place",
"miniTournamentsAwardCeremony": "Mini Tournaments Award Ceremony",
"justFunTime": "Just fun time?",
"estimatedEndOfDay2": "Estimated End of Day 2",
"estimatedEndOfFinals": "Estimated End of Finals",
"timeToLeave": "TIME TO LEAVE",
"cs2WbR4": "CS2 Winner Bracket Round 4 (Upper Finals)",
"cs2LbR5": "CS2 Loser Bracket Round 5",
"cs2LbR6": "CS2 Loser Bracket Round 6 (Lower Finals)",
"cs2GrandFinal": "CS2 Grand Final",
"cs2WbR1": "CS2 Winner Bracket Round 1",
"cs2WbR2": "CS2 Winner Bracket Round 2",
"cs2WbR3": "CS2 Winner Bracket Round 3",
"cs2LbR1": "CS2 Loser Bracket Round 1",
"cs2LbR2": "CS2 Loser Bracket Round 2",
"cs2LbR3": "CS2 Loser Bracket Round 3",
"cs2LbR4": "CS2 Loser Bracket Round 4",
"lolTournamentQuarters": "LoL Tournament Day 2 Start (Quarter finals)",
"cs2ScWbR1": "CS2 Second Chance WB Round 1",
"cs2ScLbR1": "CS2 Second Chance LB Round 1",
"cs2ScWbR2": "CS2 Second Chance WB Round 2",
"cs2ScLbR2": "CS2 Second Chance LB Round 2",
"cs2ScWbR3": "CS2 Second Chance WB Round 3",
"cs2ScLbR3": "CS2 Second Chance LB Round 3",
"cs2ScLbR4": "CS2 Second Chance LB Round 4",
"cs2ScSemiFinal": "CS2 Second Chance Semi Final",
"cs2ScLbR5": "CS2 Second Chance LB Round 5",
"cs2ScTournamentFinal": "CS2 Second Chance Tournament Final",
"lolBreak": "LoL Break",
"lolSemiFinals": "LoL Semi Finals",
"lolFinalsAndThirdPlace": "LoL Finals + 3rd place",
"closingCeremony": "Closing of TipiLAN 2026",
"noEventsScheduled": "No events scheduled for these areas"
},
"locations": {
"registrationSetup": "Registration and setup in auditorium",
"auditorium": "Auditorium",
"studentHouse": "Student House (Tudengimaja)",
"auditoriumAndStudentHouse": "Auditorium and Student House",
"entranceHall": "Lobby"
}
"auditoriumAndStudentHouseAndFuajee": "Auditorium, Student House, and Fuajee/LAN Area",
"entranceHall": "Lobby",
"fuajeeLanAla": "Fuajee/LAN Area",
"foyerAndLanArea": "Fuajee/LAN Area",
"lobbyAndLanArea": "Lobby/LAN area"
},
"transportInfo": "Come to TipiLAN by public transport if possible! Buses 10, 11, 19, 23, 24A, 27, 33, 36, 37, 45, 67 and trolleybuses 72 and 83 will take you to TalTech. If you come by car, don't come alone - bring your friends!"
},
"stream": {
"title": "Stream",

View File

@@ -24,6 +24,7 @@
"search": "Otsi",
"filter": "Filtreeri",
"reset": "Lähtesta",
"all": "KÕIK",
"theme": {
"light": "Hele",
"dark": "Tume",
@@ -379,7 +380,7 @@
{
"main": "32 meeskonnaga turniir toimub kahes etapis:",
"sub": [
"Swiss-süsteem: 5 roundi, algfaasis Bo1, otsustavad mängud Bo3. 3 võitu = playoffid (Top 16). 3 kaotust = Second Chance turniir.",
"Swiss-süsteem: 5 roundi, algfaasis Bo1. 3 võitu = playoffid (Top 16). 3 kaotust = Second Chance turniir.",
"Playoffid: double elimination. Upper bracket Bo3, lower bracket Bo1, Lower finaal Bo3.",
"Second Chance turniir: double elimination. Kõik mängud peale finaali Bo1, finaal Bo3."
]
@@ -484,7 +485,7 @@
},
"info": {
"title": "ÜLDINE INFO",
"description": "TipiLAN 2026 LoL turniir toimub 11.-13. septembril TalTechis, Tallinnas, Eestis. Tegemist on BYOC (bring your own computer) LAN turniiriga. Kohapeal pakutakse igale osalejale: laud, tool, võrgukaabliga internetiühendus, vooluühendus (2 pesa)."
"description": "TipiLAN 2026 LoL turniir toimub 11.-12. septembril TalTechis, Tallinnas, Eestis. Tegemist on BYOC (bring your own computer) LAN turniiriga. Kohapeal pakutakse igale osalejale: laud, tool, võrgukaabliga internetiühendus, vooluühendus (2 pesa)."
},
"prizes": {
"title": "AUHINNAFOND",
@@ -515,7 +516,7 @@
{
"title": "Üldist",
"rules": [
"League of Legends (edaspidi LoL) turniir toimub kahepäevase üritusena 11.-13. september, 2026 Tallinna Tehnikaülikooli (TalTech) ruumides, Ehitajate tee 5, Tallinn.",
"League of Legends (edaspidi LoL) turniir toimub kahepäevase üritusena 11.-12. september, 2026 Tallinna Tehnikaülikooli (TalTech) ruumides, Ehitajate tee 5, Tallinn.",
{
"main": "Turniiri auhinnafondiks on 3000€, mis jaguneb järgnevalt:",
"sub": [
@@ -728,9 +729,9 @@
"time": "Aeg",
"event": "Sündmus",
"location": "Asukoht",
"oct24": "24. oktoober",
"oct25": "25. oktoober",
"oct26": "26. oktoober",
"sep11": "11. september",
"sep12": "12. september",
"sep13": "13. september",
"events": {
"doorsOpen": "Uksed avatakse, messiala avatud",
"doorsOpenSimple": "Uksed avatakse",
@@ -756,19 +757,85 @@
"cs2semifinals": "CS2 ülemliiga poolfinaalid",
"Cs2finals": "CS2 finaalid",
"AwardsCeremony": "Autasustamine",
"awardCeremony": "Autasustamine",
"granTurismoFinale": "Gran Turismo finaal",
"lolTournamentSemifinals": "LoL turniiri poolfinaalid",
"cs2Finale": "CS2 finaal",
"cs2FinalMatch": "CS2 finaalimäng",
"cs2TournamentFinale": "CS2 turniiri finaal"
"cs2TournamentFinale": "CS2 turniiri finaal",
"gamersSetup": "Mängijate seadistamine",
"staffSetup": "Personal seadistamine",
"exploring": "Avastamine",
"gameDevShowcasing": "Mänguarenduse tutvustamine",
"lanAreaTournaments": "LAN-ala turniirid",
"minigamesAndTournaments": "Minimängud ja turniirid",
"blueCarpet": "Sinine vaip",
"day1Begins": "Päev 1 algab",
"cs2SwissR1": "CS2 Šveitsi ring 1",
"cs2SwissR2": "CS2 Šveitsi ring 2",
"cs2SwissR3": "CS2 Šveitsi ring 3",
"cs2SwissR4": "CS2 Šveitsi ring 4",
"cs2SwissR5": "CS2 Šveitsi ring 5",
"lolGame1": "LoL Mäng 1",
"lolGame2": "LoL Mäng 2",
"lolGame3": "LoL Mäng 3",
"lolGame4": "LoL Mäng 4",
"lolGame5": "LoL Mäng 5",
"gamedevExpo": "Mänguarenduse Expo",
"gamedevAwardCeremony": "Mänguarenduse autasustamine",
"break": "CS2 paus",
"avatarLegendsFinal": "Avatar Legends finaal",
"tekken8Final": "Tekken 8 finaal",
"streetFighter6Final": "Street Fighter 6 finaal",
"twoXkoFinal": "2XKO finaal",
"ssbuFinal": "SSBU finaal",
"invincibleVsFinal": "Invincible VS finaal",
"finalsAndThirdPlace": "Finaalid + 3. koht",
"miniTournamentsAwardCeremony": "Miniturniiride autasustamine",
"justFunTime": "Lihtsalt lõbus aeg?",
"estimatedEndOfDay2": "Päeva 2 eeldatav lõpp",
"estimatedEndOfFinals": "Finaalide eeldatav lõpp",
"timeToLeave": "AEG LÄHEDA",
"cs2WbR4": "CS2 võitjate veergu 4. ring (ülempoolfinaalid)",
"cs2LbR5": "CS2 kaotajate veergu 5. ring",
"cs2LbR6": "CS2 kaotajate veergu 6. ring (alampoolfinaalid)",
"cs2GrandFinal": "CS2 suurfinaal",
"cs2WbR1": "CS2 võitjate veergu 1. ring",
"cs2WbR2": "CS2 võitjate veergu 2. ring",
"cs2WbR3": "CS2 võitjate veergu 3. ring",
"cs2LbR1": "CS2 kaotajate veergu 1. ring",
"cs2LbR2": "CS2 kaotajate veergu 2. ring",
"cs2LbR3": "CS2 kaotajate veergu 3. ring",
"cs2LbR4": "CS2 kaotajate veergu 4. ring",
"lolTournamentQuarters": "LoL turniiri teine päev (veerandfinaalid)",
"cs2ScWbR1": "CS2 teise šansi võitjate veergu 1. ring",
"cs2ScLbR1": "CS2 teise šansi kaotajate veergu 1. ring",
"cs2ScWbR2": "CS2 teise šansi võitjate veergu 2. ring",
"cs2ScLbR2": "CS2 teise šansi kaotajate veergu 2. ring",
"cs2ScWbR3": "CS2 teise šansi võitjate veergu 3. ring",
"cs2ScLbR3": "CS2 teise šansi kaotajate veergu 3. ring",
"cs2ScLbR4": "CS2 teise šansi kaotajate veergu 4. ring",
"cs2ScSemiFinal": "CS2 teise šansi poolfinaal",
"cs2ScLbR5": "CS2 teise šansi kaotajate veergu 5. ring",
"cs2ScTournamentFinal": "CS2 teise šansi turniiri finaal",
"lolBreak": "LoL vaheajad",
"lolSemiFinals": "LoL poolfinaalid",
"lolFinalsAndThirdPlace": "LoL finaalid + 3. koht",
"closingCeremony": "TipiLAN 2026 sulgemine",
"noEventsScheduled": "Nendel aladel pole üritusi"
},
"locations": {
"registrationSetup": "Registreerimine ja setup aulas",
"auditorium": "Aula",
"studentHouse": "Tudengimaja",
"auditoriumAndStudentHouse": "Aula ja Tudengimaja",
"entranceHall": "Fuajee"
}
"auditoriumAndStudentHouseAndFuajee": "Aula, Tudengimaja ja Fuajee/LAN-ala",
"entranceHall": "Fuajee",
"fuajeeLanAla": "Fuajee/LAN-ala",
"foyerAndLanArea": "Fuajee/LAN-ala",
"lobbyAndLanArea": "Fuajee/LAN-ala"
},
"transportInfo": "Tule võimaluse korral TipiLANile ühistranspordiga! TalTechi toovad sind bussid 10, 11, 19, 23, 24A, 27, 33, 36, 37, 45, 67 ning trollid 72 ja 83. Kui tuled autoga, siis ära tule üksi, võta sõbrad kaasa!"
},
"stream": {
"title": "Striim",