This commit is contained in:
Rodrigo Mansueli Nunes committed 2023-08-07 13:01:06 -03:00
commit 4599def40b
190 files changed
+2178 -358

No files matched your search

+1
View File
@@ -57,6 +57,7 @@ const nextConfig = {
'weweb-changelog.ghost.io',
'img.youtube.com',
'archbee-image-uploads.s3.amazonaws.com',
'obuldanrptloktxcffvn.supabase.co',
],
},
experimental: {
+5
View File
@@ -9,6 +9,8 @@ import {
IconPlay,
TextLink,
} from 'ui'
import { LWAnnouncement } from 'ui'
import HomeMenuIconPicker from '~/components/Navigation/NavigationMenu/HomeMenuIconPicker'
export const meta = {
@@ -20,6 +22,9 @@ export const meta = {
<div className="flex flex-col">
<div className="mt-8 sm:mt-0 md:mt-4 xl:mt-16">
<LWAnnouncement />
</div>
<div>
<div className="max-w-xl">
## Products
@@ -0,0 +1,23 @@
<svg width="581" height="113" viewBox="0 0 581 113" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M151.397 66.7608C151.996 72.3621 157.091 81.9642 171.877 81.9642C184.764 81.9642 190.959 73.7624 190.959 65.7607C190.959 58.559 186.063 52.6577 176.373 50.6571L169.379 49.1569C166.682 48.6568 164.884 47.1565 164.884 44.7559C164.884 41.9552 167.681 39.8549 171.178 39.8549C176.772 39.8549 178.87 43.5556 179.27 46.4564L190.359 43.9558C189.76 38.6546 185.064 29.7527 171.078 29.7527C160.488 29.7527 152.696 37.0543 152.696 45.8561C152.696 52.7576 156.991 58.4591 166.482 60.5594L172.976 62.0598C176.772 62.8599 178.271 64.6605 178.271 66.8609C178.271 69.4615 176.173 71.762 171.777 71.762C165.983 71.762 163.085 68.1611 162.786 64.2602L151.397 66.7608Z" fill="white"/>
<path d="M233.421 80.4639H246.109C245.909 78.7635 245.609 75.3628 245.609 71.5618V31.2529H232.321V59.8592C232.321 65.5606 228.925 69.5614 223.031 69.5614C216.837 69.5614 214.039 65.1604 214.039 59.6592V31.2529H200.752V62.3599C200.752 73.0622 207.545 81.7642 219.434 81.7642C224.628 81.7642 230.325 79.7638 233.022 75.1627C233.022 77.1631 233.221 79.4636 233.421 80.4639Z" fill="white"/>
<path d="M273.076 99.4682V75.663C275.473 78.9636 280.469 81.6644 287.263 81.6644C301.149 81.6644 310.439 70.6617 310.439 55.7584C310.439 41.1553 302.148 30.1528 287.762 30.1528C280.37 30.1528 274.875 33.4534 272.677 37.2544V31.253H259.79V99.4682H273.076ZM297.352 55.8585C297.352 64.6606 291.958 69.7616 285.164 69.7616C278.372 69.7616 272.877 64.5605 272.877 55.8585C272.877 47.1566 278.372 42.0554 285.164 42.0554C291.958 42.0554 297.352 47.1566 297.352 55.8585Z" fill="white"/>
<path d="M317.964 67.0609C317.964 74.7627 324.357 81.8643 334.848 81.8643C342.139 81.8643 346.835 78.4634 349.332 74.5625C349.332 76.463 349.532 79.1635 349.832 80.4639H362.02C361.72 78.7635 361.422 75.2627 361.422 72.6622V48.4567C361.422 38.5545 355.627 29.7527 340.043 29.7527C326.855 29.7527 319.761 38.2544 318.963 45.9562L330.751 48.4567C331.151 44.1558 334.348 40.455 340.141 40.455C345.737 40.455 348.434 43.3556 348.434 46.8564C348.434 48.5568 347.536 49.9572 344.738 50.3572L332.65 52.1576C324.458 53.3579 317.964 58.2589 317.964 67.0609ZM337.644 71.962C333.349 71.962 331.25 69.1614 331.25 66.2608C331.25 62.4599 333.947 60.5594 337.345 60.0594L348.434 58.359V60.5594C348.434 69.2615 343.239 71.962 337.644 71.962Z" fill="white"/>
<path d="M387.703 80.4641V74.4627C390.299 78.6637 395.494 81.6644 402.288 81.6644C416.276 81.6644 425.467 70.5618 425.467 55.6585C425.467 41.0552 417.174 29.9528 402.788 29.9528C395.494 29.9528 390.1 33.1535 387.902 36.6541V8.04785H374.815V80.4641H387.703ZM412.178 55.7584C412.178 64.7605 406.784 69.7616 399.99 69.7616C393.297 69.7616 387.703 64.6606 387.703 55.7584C387.703 46.7564 393.297 41.8554 399.99 41.8554C406.784 41.8554 412.178 46.7564 412.178 55.7584Z" fill="white"/>
<path d="M432.99 67.0609C432.99 74.7627 439.383 81.8643 449.873 81.8643C457.165 81.8643 461.862 78.4634 464.358 74.5625C464.358 76.463 464.559 79.1635 464.858 80.4639H477.046C476.748 78.7635 476.448 75.2627 476.448 72.6622V48.4567C476.448 38.5545 470.653 29.7527 455.068 29.7527C441.881 29.7527 434.788 38.2544 433.989 45.9562L445.776 48.4567C446.177 44.1558 449.374 40.455 455.167 40.455C460.763 40.455 463.46 43.3556 463.46 46.8564C463.46 48.5568 462.561 49.9572 459.763 50.3572L447.676 52.1576C439.484 53.3579 432.99 58.2589 432.99 67.0609ZM452.671 71.962C448.375 71.962 446.276 69.1614 446.276 66.2608C446.276 62.4599 448.973 60.5594 452.371 60.0594L463.46 58.359V60.5594C463.46 69.2615 458.265 71.962 452.671 71.962Z" fill="white"/>
<path d="M485.645 66.7608C486.243 72.3621 491.339 81.9642 506.124 81.9642C519.012 81.9642 525.205 73.7624 525.205 65.7607C525.205 58.559 520.311 52.6577 510.62 50.6571L503.626 49.1569C500.929 48.6568 499.132 47.1565 499.132 44.7559C499.132 41.9552 501.928 39.8549 505.425 39.8549C511.021 39.8549 513.118 43.5556 513.519 46.4564L524.607 43.9558C524.007 38.6546 519.312 29.7527 505.326 29.7527C494.735 29.7527 486.944 37.0543 486.944 45.8561C486.944 52.7576 491.238 58.4591 500.73 60.5594L507.224 62.0598C511.021 62.8599 512.519 64.6605 512.519 66.8609C512.519 69.4615 510.421 71.762 506.025 71.762C500.23 71.762 497.334 68.1611 497.034 64.2602L485.645 66.7608Z" fill="white"/>
<path d="M545.385 50.2571C545.685 45.7562 549.482 40.5549 556.375 40.5549C563.967 40.5549 567.165 45.3561 567.365 50.2571H545.385ZM568.664 63.0601C567.065 67.4609 563.668 70.5617 557.474 70.5617C550.88 70.5617 545.385 65.8606 545.087 59.3593H580.252C580.252 59.159 580.451 57.1587 580.451 55.2582C580.451 39.4547 571.361 29.7527 556.175 29.7527C543.588 29.7527 531.998 39.9548 531.998 55.6584C531.998 72.262 543.886 81.9642 557.374 81.9642C569.462 81.9642 577.255 74.8626 579.753 66.3607L568.664 63.0601Z" fill="white"/>
<path d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0627L99.1935 40.0627C107.384 40.0627 111.952 49.5228 106.859 55.9374L63.7076 110.284Z" fill="url(#paint0_linear)"/>
<path d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0627L99.1935 40.0627C107.384 40.0627 111.952 49.5228 106.859 55.9374L63.7076 110.284Z" fill="url(#paint1_linear)" fill-opacity="0.2"/>
<path d="M45.317 2.07103C48.1765 -1.53037 53.9745 0.442937 54.0434 5.041L54.4849 72.2922H9.83113C1.64038 72.2922 -2.92775 62.8321 2.1655 56.4175L45.317 2.07103Z" fill="#3ECF8E"/>
<defs>
<linearGradient id="paint0_linear" x1="53.9738" y1="54.974" x2="94.1635" y2="71.8295" gradientUnits="userSpaceOnUse">
<stop stop-color="#249361"/>
<stop offset="1" stop-color="#3ECF8E"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="36.1558" y1="30.578" x2="54.4844" y2="65.0806" gradientUnits="userSpaceOnUse">
<stop/>
<stop offset="1" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

@@ -0,0 +1,23 @@
<svg width="581" height="113" viewBox="0 0 581 113" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M151.397 66.7608C151.996 72.3621 157.091 81.9642 171.877 81.9642C184.764 81.9642 190.959 73.7624 190.959 65.7607C190.959 58.559 186.063 52.6577 176.373 50.6571L169.379 49.1569C166.682 48.6568 164.884 47.1565 164.884 44.7559C164.884 41.9552 167.681 39.8549 171.178 39.8549C176.772 39.8549 178.87 43.5556 179.27 46.4564L190.359 43.9558C189.76 38.6546 185.064 29.7527 171.078 29.7527C160.488 29.7527 152.696 37.0543 152.696 45.8561C152.696 52.7576 156.991 58.4591 166.482 60.5594L172.976 62.0598C176.772 62.8599 178.271 64.6605 178.271 66.8609C178.271 69.4615 176.173 71.762 171.777 71.762C165.983 71.762 163.085 68.1611 162.786 64.2602L151.397 66.7608Z" fill="#1F1F1F"/>
<path d="M233.421 80.4639H246.109C245.909 78.7635 245.609 75.3628 245.609 71.5618V31.2529H232.321V59.8592C232.321 65.5606 228.925 69.5614 223.031 69.5614C216.837 69.5614 214.039 65.1604 214.039 59.6592V31.2529H200.752V62.3599C200.752 73.0622 207.545 81.7642 219.434 81.7642C224.628 81.7642 230.325 79.7638 233.022 75.1627C233.022 77.1631 233.221 79.4636 233.421 80.4639Z" fill="#1F1F1F"/>
<path d="M273.076 99.4682V75.663C275.473 78.9636 280.469 81.6644 287.263 81.6644C301.149 81.6644 310.439 70.6617 310.439 55.7584C310.439 41.1553 302.148 30.1528 287.762 30.1528C280.37 30.1528 274.875 33.4534 272.677 37.2544V31.253H259.79V99.4682H273.076ZM297.352 55.8585C297.352 64.6606 291.958 69.7616 285.164 69.7616C278.372 69.7616 272.877 64.5605 272.877 55.8585C272.877 47.1566 278.372 42.0554 285.164 42.0554C291.958 42.0554 297.352 47.1566 297.352 55.8585Z" fill="#1F1F1F"/>
<path d="M317.964 67.0609C317.964 74.7627 324.357 81.8643 334.848 81.8643C342.139 81.8643 346.835 78.4634 349.332 74.5625C349.332 76.463 349.532 79.1635 349.832 80.4639H362.02C361.72 78.7635 361.422 75.2627 361.422 72.6622V48.4567C361.422 38.5545 355.627 29.7527 340.043 29.7527C326.855 29.7527 319.761 38.2544 318.963 45.9562L330.751 48.4567C331.151 44.1558 334.348 40.455 340.141 40.455C345.737 40.455 348.434 43.3556 348.434 46.8564C348.434 48.5568 347.536 49.9572 344.738 50.3572L332.65 52.1576C324.458 53.3579 317.964 58.2589 317.964 67.0609ZM337.644 71.962C333.349 71.962 331.25 69.1614 331.25 66.2608C331.25 62.4599 333.947 60.5594 337.345 60.0594L348.434 58.359V60.5594C348.434 69.2615 343.239 71.962 337.644 71.962Z" fill="#1F1F1F"/>
<path d="M387.703 80.4641V74.4627C390.299 78.6637 395.494 81.6644 402.288 81.6644C416.276 81.6644 425.467 70.5618 425.467 55.6585C425.467 41.0552 417.174 29.9528 402.788 29.9528C395.494 29.9528 390.1 33.1535 387.902 36.6541V8.04785H374.815V80.4641H387.703ZM412.178 55.7584C412.178 64.7605 406.784 69.7616 399.99 69.7616C393.297 69.7616 387.703 64.6606 387.703 55.7584C387.703 46.7564 393.297 41.8554 399.99 41.8554C406.784 41.8554 412.178 46.7564 412.178 55.7584Z" fill="#1F1F1F"/>
<path d="M432.99 67.0609C432.99 74.7627 439.383 81.8643 449.873 81.8643C457.165 81.8643 461.862 78.4634 464.358 74.5625C464.358 76.463 464.559 79.1635 464.858 80.4639H477.046C476.748 78.7635 476.448 75.2627 476.448 72.6622V48.4567C476.448 38.5545 470.653 29.7527 455.068 29.7527C441.881 29.7527 434.788 38.2544 433.989 45.9562L445.776 48.4567C446.177 44.1558 449.374 40.455 455.167 40.455C460.763 40.455 463.46 43.3556 463.46 46.8564C463.46 48.5568 462.561 49.9572 459.763 50.3572L447.676 52.1576C439.484 53.3579 432.99 58.2589 432.99 67.0609ZM452.671 71.962C448.375 71.962 446.276 69.1614 446.276 66.2608C446.276 62.4599 448.973 60.5594 452.371 60.0594L463.46 58.359V60.5594C463.46 69.2615 458.265 71.962 452.671 71.962Z" fill="#1F1F1F"/>
<path d="M485.645 66.7608C486.243 72.3621 491.339 81.9642 506.124 81.9642C519.012 81.9642 525.205 73.7624 525.205 65.7607C525.205 58.559 520.311 52.6577 510.62 50.6571L503.626 49.1569C500.929 48.6568 499.132 47.1565 499.132 44.7559C499.132 41.9552 501.928 39.8549 505.425 39.8549C511.021 39.8549 513.118 43.5556 513.519 46.4564L524.607 43.9558C524.007 38.6546 519.312 29.7527 505.326 29.7527C494.735 29.7527 486.944 37.0543 486.944 45.8561C486.944 52.7576 491.238 58.4591 500.73 60.5594L507.224 62.0598C511.021 62.8599 512.519 64.6605 512.519 66.8609C512.519 69.4615 510.421 71.762 506.025 71.762C500.23 71.762 497.334 68.1611 497.034 64.2602L485.645 66.7608Z" fill="#1F1F1F"/>
<path d="M545.385 50.2571C545.685 45.7562 549.482 40.5549 556.375 40.5549C563.967 40.5549 567.165 45.3561 567.365 50.2571H545.385ZM568.664 63.0601C567.065 67.4609 563.668 70.5617 557.474 70.5617C550.88 70.5617 545.385 65.8606 545.087 59.3593H580.252C580.252 59.159 580.451 57.1587 580.451 55.2582C580.451 39.4547 571.361 29.7527 556.175 29.7527C543.588 29.7527 531.998 39.9548 531.998 55.6584C531.998 72.262 543.886 81.9642 557.374 81.9642C569.462 81.9642 577.255 74.8626 579.753 66.3607L568.664 63.0601Z" fill="#1F1F1F"/>
<path d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0627L99.1935 40.0627C107.384 40.0627 111.952 49.5228 106.859 55.9374L63.7076 110.284Z" fill="url(#paint0_linear)"/>
<path d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0627L99.1935 40.0627C107.384 40.0627 111.952 49.5228 106.859 55.9374L63.7076 110.284Z" fill="url(#paint1_linear)" fill-opacity="0.2"/>
<path d="M45.317 2.07103C48.1765 -1.53037 53.9745 0.442937 54.0434 5.041L54.4849 72.2922H9.83113C1.64038 72.2922 -2.92775 62.8321 2.1655 56.4175L45.317 2.07103Z" fill="#3ECF8E"/>
<defs>
<linearGradient id="paint0_linear" x1="53.9738" y1="54.974" x2="94.1635" y2="71.8295" gradientUnits="userSpaceOnUse">
<stop stop-color="#249361"/>
<stop offset="1" stop-color="#3ECF8E"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="36.1558" y1="30.578" x2="54.4844" y2="65.0806" gradientUnits="userSpaceOnUse">
<stop/>
<stop offset="1" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

+41
View File
@@ -0,0 +1,41 @@
{
"name": "App",
"icons": [
{
"src": "/android-icon-36x36.png",
"sizes": "36x36",
"type": "image/png",
"density": "0.75"
},
{
"src": "/android-icon-48x48.png",
"sizes": "48x48",
"type": "image/png",
"density": "1.0"
},
{
"src": "/android-icon-72x72.png",
"sizes": "72x72",
"type": "image/png",
"density": "1.5"
},
{
"src": "/android-icon-96x96.png",
"sizes": "96x96",
"type": "image/png",
"density": "2.0"
},
{
"src": "/android-icon-144x144.png",
"sizes": "144x144",
"type": "image/png",
"density": "3.0"
},
{
"src": "/android-icon-192x192.png",
"sizes": "192x192",
"type": "image/png",
"density": "4.0"
}
]
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 22 KiB

@@ -1,23 +1,27 @@
<svg width="581" height="113" viewBox="0 0 581 113" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M151.397 66.7608C151.996 72.3621 157.091 81.9642 171.877 81.9642C184.764 81.9642 190.959 73.7624 190.959 65.7607C190.959 58.559 186.063 52.6577 176.373 50.6571L169.379 49.1569C166.682 48.6568 164.884 47.1565 164.884 44.7559C164.884 41.9552 167.681 39.8549 171.178 39.8549C176.772 39.8549 178.87 43.5556 179.27 46.4564L190.359 43.9558C189.76 38.6546 185.064 29.7527 171.078 29.7527C160.488 29.7527 152.696 37.0543 152.696 45.8561C152.696 52.7576 156.991 58.4591 166.482 60.5594L172.976 62.0598C176.772 62.8599 178.271 64.6605 178.271 66.8609C178.271 69.4615 176.173 71.762 171.777 71.762C165.983 71.762 163.085 68.1611 162.786 64.2602L151.397 66.7608Z" fill="white"/>
<path d="M233.421 80.4639H246.109C245.909 78.7635 245.609 75.3628 245.609 71.5618V31.2529H232.321V59.8592C232.321 65.5606 228.925 69.5614 223.031 69.5614C216.837 69.5614 214.039 65.1604 214.039 59.6592V31.2529H200.752V62.3599C200.752 73.0622 207.545 81.7642 219.434 81.7642C224.628 81.7642 230.325 79.7638 233.022 75.1627C233.022 77.1631 233.221 79.4636 233.421 80.4639Z" fill="white"/>
<path d="M273.076 99.4682V75.663C275.473 78.9636 280.469 81.6644 287.263 81.6644C301.149 81.6644 310.439 70.6617 310.439 55.7584C310.439 41.1553 302.148 30.1528 287.762 30.1528C280.37 30.1528 274.875 33.4534 272.677 37.2544V31.253H259.79V99.4682H273.076ZM297.352 55.8585C297.352 64.6606 291.958 69.7616 285.164 69.7616C278.372 69.7616 272.877 64.5605 272.877 55.8585C272.877 47.1566 278.372 42.0554 285.164 42.0554C291.958 42.0554 297.352 47.1566 297.352 55.8585Z" fill="white"/>
<path d="M317.964 67.0609C317.964 74.7627 324.357 81.8643 334.848 81.8643C342.139 81.8643 346.835 78.4634 349.332 74.5625C349.332 76.463 349.532 79.1635 349.832 80.4639H362.02C361.72 78.7635 361.422 75.2627 361.422 72.6622V48.4567C361.422 38.5545 355.627 29.7527 340.043 29.7527C326.855 29.7527 319.761 38.2544 318.963 45.9562L330.751 48.4567C331.151 44.1558 334.348 40.455 340.141 40.455C345.737 40.455 348.434 43.3556 348.434 46.8564C348.434 48.5568 347.536 49.9572 344.738 50.3572L332.65 52.1576C324.458 53.3579 317.964 58.2589 317.964 67.0609ZM337.644 71.962C333.349 71.962 331.25 69.1614 331.25 66.2608C331.25 62.4599 333.947 60.5594 337.345 60.0594L348.434 58.359V60.5594C348.434 69.2615 343.239 71.962 337.644 71.962Z" fill="white"/>
<path d="M387.703 80.4641V74.4627C390.299 78.6637 395.494 81.6644 402.288 81.6644C416.276 81.6644 425.467 70.5618 425.467 55.6585C425.467 41.0552 417.174 29.9528 402.788 29.9528C395.494 29.9528 390.1 33.1535 387.902 36.6541V8.04785H374.815V80.4641H387.703ZM412.178 55.7584C412.178 64.7605 406.784 69.7616 399.99 69.7616C393.297 69.7616 387.703 64.6606 387.703 55.7584C387.703 46.7564 393.297 41.8554 399.99 41.8554C406.784 41.8554 412.178 46.7564 412.178 55.7584Z" fill="white"/>
<path d="M432.99 67.0609C432.99 74.7627 439.383 81.8643 449.873 81.8643C457.165 81.8643 461.862 78.4634 464.358 74.5625C464.358 76.463 464.559 79.1635 464.858 80.4639H477.046C476.748 78.7635 476.448 75.2627 476.448 72.6622V48.4567C476.448 38.5545 470.653 29.7527 455.068 29.7527C441.881 29.7527 434.788 38.2544 433.989 45.9562L445.776 48.4567C446.177 44.1558 449.374 40.455 455.167 40.455C460.763 40.455 463.46 43.3556 463.46 46.8564C463.46 48.5568 462.561 49.9572 459.763 50.3572L447.676 52.1576C439.484 53.3579 432.99 58.2589 432.99 67.0609ZM452.671 71.962C448.375 71.962 446.276 69.1614 446.276 66.2608C446.276 62.4599 448.973 60.5594 452.371 60.0594L463.46 58.359V60.5594C463.46 69.2615 458.265 71.962 452.671 71.962Z" fill="white"/>
<path d="M485.645 66.7608C486.243 72.3621 491.339 81.9642 506.124 81.9642C519.012 81.9642 525.205 73.7624 525.205 65.7607C525.205 58.559 520.311 52.6577 510.62 50.6571L503.626 49.1569C500.929 48.6568 499.132 47.1565 499.132 44.7559C499.132 41.9552 501.928 39.8549 505.425 39.8549C511.021 39.8549 513.118 43.5556 513.519 46.4564L524.607 43.9558C524.007 38.6546 519.312 29.7527 505.326 29.7527C494.735 29.7527 486.944 37.0543 486.944 45.8561C486.944 52.7576 491.238 58.4591 500.73 60.5594L507.224 62.0598C511.021 62.8599 512.519 64.6605 512.519 66.8609C512.519 69.4615 510.421 71.762 506.025 71.762C500.23 71.762 497.334 68.1611 497.034 64.2602L485.645 66.7608Z" fill="white"/>
<path d="M545.385 50.2571C545.685 45.7562 549.482 40.5549 556.375 40.5549C563.967 40.5549 567.165 45.3561 567.365 50.2571H545.385ZM568.664 63.0601C567.065 67.4609 563.668 70.5617 557.474 70.5617C550.88 70.5617 545.385 65.8606 545.087 59.3593H580.252C580.252 59.159 580.451 57.1587 580.451 55.2582C580.451 39.4547 571.361 29.7527 556.175 29.7527C543.588 29.7527 531.998 39.9548 531.998 55.6584C531.998 72.262 543.886 81.9642 557.374 81.9642C569.462 81.9642 577.255 74.8626 579.753 66.3607L568.664 63.0601Z" fill="white"/>
<path d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0627L99.1935 40.0627C107.384 40.0627 111.952 49.5228 106.859 55.9374L63.7076 110.284Z" fill="url(#paint0_linear)"/>
<path d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0627L99.1935 40.0627C107.384 40.0627 111.952 49.5228 106.859 55.9374L63.7076 110.284Z" fill="url(#paint1_linear)" fill-opacity="0.2"/>
<path d="M45.317 2.07103C48.1765 -1.53037 53.9745 0.442937 54.0434 5.041L54.4849 72.2922H9.83113C1.64038 72.2922 -2.92775 62.8321 2.1655 56.4175L45.317 2.07103Z" fill="#3ECF8E"/>
<svg width="815" height="162" viewBox="0 0 815 162" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2993_107746)">
<path d="M78.033 6.95738C77.9338 0.333847 69.5817 -2.50871 65.4626 2.67912L3.30264 80.9655C-4.03421 90.2058 2.5462 103.833 14.345 103.833H78.7992L79.3812 154.281C79.4804 160.905 87.8324 163.747 91.9515 158.559L154.111 80.2729C161.448 71.0327 154.868 57.4053 143.069 57.4053H78.4769L78.033 6.95738Z" fill="url(#paint0_linear_2993_107746)"/>
<path d="M91.9671 158.572C87.848 163.759 79.4961 160.917 79.3969 154.294L78.3438 57.418H143.085C154.883 57.418 161.463 71.0453 154.127 80.2856L91.9671 158.572Z" fill="url(#paint1_linear_2993_107746)"/>
<path d="M214.303 98.5992C215.14 106.344 222.265 119.62 242.941 119.62C260.962 119.62 269.625 108.28 269.625 97.2164C269.625 87.2589 262.778 79.0995 249.228 76.3333L239.448 74.259C235.677 73.5676 233.162 71.4932 233.162 68.174C233.162 64.3016 237.074 61.3976 241.964 61.3976C249.786 61.3976 252.72 66.5144 253.279 70.5252L268.786 67.0677C267.948 59.738 261.381 47.4297 241.824 47.4297C227.015 47.4297 216.119 57.5253 216.119 69.6952C216.119 79.2376 222.125 87.1208 235.397 90.0248L244.478 92.0993C249.786 93.2056 251.882 95.6952 251.882 98.7376C251.882 102.333 248.949 105.514 242.801 105.514C234.699 105.514 230.647 100.535 230.229 95.1417L214.303 98.5992Z" fill="white"/>
<path d="M329.002 117.546H346.744C346.464 115.195 346.045 110.493 346.045 105.237V49.5039H327.463V89.0566C327.463 96.9397 322.714 102.471 314.473 102.471C305.811 102.471 301.898 96.3864 301.898 88.7801V49.5039H283.318V92.5142C283.318 107.312 292.817 119.344 309.443 119.344C316.706 119.344 324.672 116.578 328.444 110.216C328.444 112.982 328.722 116.163 329.002 117.546Z" fill="white"/>
<path d="M384.452 143.824V110.909C387.804 115.473 394.79 119.207 404.29 119.207C423.708 119.207 436.699 103.994 436.699 83.3882C436.699 63.1971 425.105 47.9844 404.988 47.9844C394.651 47.9844 386.967 52.548 383.894 57.8035V49.5056H365.873V143.824H384.452ZM418.398 83.5266C418.398 95.6969 410.856 102.75 401.355 102.75C391.857 102.75 384.173 95.5585 384.173 83.5266C384.173 71.4948 391.857 64.4416 401.355 64.4416C410.856 64.4416 418.398 71.4948 418.398 83.5266Z" fill="white"/>
<path d="M447.223 99.0142C447.223 109.663 456.162 119.482 470.833 119.482C481.028 119.482 487.595 114.78 491.087 109.386C491.087 112.014 491.366 115.748 491.786 117.546H508.829C508.409 115.195 507.993 110.354 507.993 106.759V73.2909C507.993 59.5996 499.889 47.4297 478.097 47.4297C459.656 47.4297 449.736 59.1846 448.62 69.8336L465.104 73.2909C465.663 67.3442 470.133 62.2273 478.234 62.2273C486.059 62.2273 489.831 66.2378 489.831 71.0782C489.831 73.4293 488.575 75.3656 484.662 75.9187L467.759 78.408C456.304 80.0676 447.223 86.844 447.223 99.0142ZM474.742 105.791C468.737 105.791 465.801 101.918 465.801 97.9079C465.801 92.6526 469.573 90.0248 474.324 89.3335L489.831 86.9824V90.0248C489.831 102.057 482.566 105.791 474.742 105.791Z" fill="white"/>
<path d="M544.745 117.545V109.247C548.375 115.056 555.639 119.204 565.14 119.204C584.7 119.204 597.553 103.853 597.553 83.2472C597.553 63.0558 585.956 47.705 565.839 47.705C555.639 47.705 548.097 52.1305 545.023 56.9706V17.418H526.723V117.545H544.745ZM578.97 83.3853C578.97 95.8322 571.427 102.747 561.926 102.747C552.567 102.747 544.745 95.694 544.745 83.3853C544.745 70.9386 552.567 64.1622 561.926 64.1622C571.427 64.1622 578.97 70.9386 578.97 83.3853Z" fill="white"/>
<path d="M608.072 99.0142C608.072 109.663 617.012 119.482 631.681 119.482C641.878 119.482 648.446 114.78 651.936 109.386C651.936 112.014 652.217 115.748 652.635 117.546H669.679C669.262 115.195 668.842 110.354 668.842 106.759V73.2909C668.842 59.5996 660.739 47.4297 638.945 47.4297C620.505 47.4297 610.587 59.1846 609.469 69.8336L625.952 73.2909C626.513 67.3442 630.983 62.2273 639.084 62.2273C646.909 62.2273 650.68 66.2378 650.68 71.0782C650.68 73.4293 649.423 75.3656 645.511 75.9187L628.609 78.408C617.153 80.0676 608.072 86.844 608.072 99.0142ZM635.593 105.791C629.586 105.791 626.651 101.918 626.651 97.9079C626.651 92.6526 630.422 90.0248 635.174 89.3335L650.68 86.9824V90.0248C650.68 102.057 643.416 105.791 635.593 105.791Z" fill="white"/>
<path d="M681.701 98.5992C682.537 106.344 689.663 119.62 710.338 119.62C728.36 119.62 737.021 108.28 737.021 97.2164C737.021 87.2589 730.177 79.0995 716.625 76.3333L706.845 74.259C703.074 73.5676 700.561 71.4932 700.561 68.174C700.561 64.3016 704.471 61.3976 709.361 61.3976C717.186 61.3976 720.118 66.5144 720.679 70.5252L736.184 67.0677C735.345 59.738 728.78 47.4297 709.222 47.4297C694.412 47.4297 683.518 57.5253 683.518 69.6952C683.518 79.2376 689.522 87.1208 702.796 90.0248L711.876 92.0993C717.186 93.2056 719.281 95.6952 719.281 98.7376C719.281 102.333 716.347 105.514 710.2 105.514C702.096 105.514 698.047 100.535 697.627 95.1417L681.701 98.5992Z" fill="white"/>
<path d="M765.241 75.7803C765.661 69.557 770.971 62.3654 780.609 62.3654C791.226 62.3654 795.698 69.0038 795.977 75.7803H765.241ZM797.794 93.4824C795.558 99.5672 790.808 103.855 782.146 103.855C772.925 103.855 765.241 97.3545 764.825 88.3655H813.998C813.998 88.0885 814.276 85.3228 814.276 82.6951C814.276 60.8442 801.565 47.4297 780.33 47.4297C762.729 47.4297 746.521 61.5357 746.521 83.2484C746.521 106.205 763.145 119.62 782.006 119.62C798.91 119.62 809.807 109.801 813.3 98.046L797.794 93.4824Z" fill="white"/>
</g>
<defs>
<linearGradient id="paint0_linear" x1="53.9738" y1="54.974" x2="94.1635" y2="71.8295" gradientUnits="userSpaceOnUse">
<stop stop-color="#249361"/>
<stop offset="1" stop-color="#3ECF8E"/>
<linearGradient id="paint0_linear_2993_107746" x1="36.6621" y1="8.85717" x2="88.678" y2="51.9544" gradientUnits="userSpaceOnUse">
<stop stop-color="#763AFF"/>
<stop offset="1" stop-color="#5A099A"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="36.1558" y1="30.578" x2="54.4844" y2="65.0806" gradientUnits="userSpaceOnUse">
<stop/>
<stop offset="1" stop-opacity="0"/>
<linearGradient id="paint1_linear_2993_107746" x1="53.6505" y1="51.8862" x2="138.597" y2="113.864" gradientUnits="userSpaceOnUse">
<stop stop-color="#5C00AA"/>
<stop offset="1" stop-color="#7156DA"/>
</linearGradient>
<clipPath id="clip0_2993_107746">
<rect width="814.056" height="161.238" fill="white" transform="translate(0.21875)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 22 KiB

@@ -1,23 +1,27 @@
<svg width="581" height="113" viewBox="0 0 581 113" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M151.397 66.7608C151.996 72.3621 157.091 81.9642 171.877 81.9642C184.764 81.9642 190.959 73.7624 190.959 65.7607C190.959 58.559 186.063 52.6577 176.373 50.6571L169.379 49.1569C166.682 48.6568 164.884 47.1565 164.884 44.7559C164.884 41.9552 167.681 39.8549 171.178 39.8549C176.772 39.8549 178.87 43.5556 179.27 46.4564L190.359 43.9558C189.76 38.6546 185.064 29.7527 171.078 29.7527C160.488 29.7527 152.696 37.0543 152.696 45.8561C152.696 52.7576 156.991 58.4591 166.482 60.5594L172.976 62.0598C176.772 62.8599 178.271 64.6605 178.271 66.8609C178.271 69.4615 176.173 71.762 171.777 71.762C165.983 71.762 163.085 68.1611 162.786 64.2602L151.397 66.7608Z" fill="#1F1F1F"/>
<path d="M233.421 80.4639H246.109C245.909 78.7635 245.609 75.3628 245.609 71.5618V31.2529H232.321V59.8592C232.321 65.5606 228.925 69.5614 223.031 69.5614C216.837 69.5614 214.039 65.1604 214.039 59.6592V31.2529H200.752V62.3599C200.752 73.0622 207.545 81.7642 219.434 81.7642C224.628 81.7642 230.325 79.7638 233.022 75.1627C233.022 77.1631 233.221 79.4636 233.421 80.4639Z" fill="#1F1F1F"/>
<path d="M273.076 99.4682V75.663C275.473 78.9636 280.469 81.6644 287.263 81.6644C301.149 81.6644 310.439 70.6617 310.439 55.7584C310.439 41.1553 302.148 30.1528 287.762 30.1528C280.37 30.1528 274.875 33.4534 272.677 37.2544V31.253H259.79V99.4682H273.076ZM297.352 55.8585C297.352 64.6606 291.958 69.7616 285.164 69.7616C278.372 69.7616 272.877 64.5605 272.877 55.8585C272.877 47.1566 278.372 42.0554 285.164 42.0554C291.958 42.0554 297.352 47.1566 297.352 55.8585Z" fill="#1F1F1F"/>
<path d="M317.964 67.0609C317.964 74.7627 324.357 81.8643 334.848 81.8643C342.139 81.8643 346.835 78.4634 349.332 74.5625C349.332 76.463 349.532 79.1635 349.832 80.4639H362.02C361.72 78.7635 361.422 75.2627 361.422 72.6622V48.4567C361.422 38.5545 355.627 29.7527 340.043 29.7527C326.855 29.7527 319.761 38.2544 318.963 45.9562L330.751 48.4567C331.151 44.1558 334.348 40.455 340.141 40.455C345.737 40.455 348.434 43.3556 348.434 46.8564C348.434 48.5568 347.536 49.9572 344.738 50.3572L332.65 52.1576C324.458 53.3579 317.964 58.2589 317.964 67.0609ZM337.644 71.962C333.349 71.962 331.25 69.1614 331.25 66.2608C331.25 62.4599 333.947 60.5594 337.345 60.0594L348.434 58.359V60.5594C348.434 69.2615 343.239 71.962 337.644 71.962Z" fill="#1F1F1F"/>
<path d="M387.703 80.4641V74.4627C390.299 78.6637 395.494 81.6644 402.288 81.6644C416.276 81.6644 425.467 70.5618 425.467 55.6585C425.467 41.0552 417.174 29.9528 402.788 29.9528C395.494 29.9528 390.1 33.1535 387.902 36.6541V8.04785H374.815V80.4641H387.703ZM412.178 55.7584C412.178 64.7605 406.784 69.7616 399.99 69.7616C393.297 69.7616 387.703 64.6606 387.703 55.7584C387.703 46.7564 393.297 41.8554 399.99 41.8554C406.784 41.8554 412.178 46.7564 412.178 55.7584Z" fill="#1F1F1F"/>
<path d="M432.99 67.0609C432.99 74.7627 439.383 81.8643 449.873 81.8643C457.165 81.8643 461.862 78.4634 464.358 74.5625C464.358 76.463 464.559 79.1635 464.858 80.4639H477.046C476.748 78.7635 476.448 75.2627 476.448 72.6622V48.4567C476.448 38.5545 470.653 29.7527 455.068 29.7527C441.881 29.7527 434.788 38.2544 433.989 45.9562L445.776 48.4567C446.177 44.1558 449.374 40.455 455.167 40.455C460.763 40.455 463.46 43.3556 463.46 46.8564C463.46 48.5568 462.561 49.9572 459.763 50.3572L447.676 52.1576C439.484 53.3579 432.99 58.2589 432.99 67.0609ZM452.671 71.962C448.375 71.962 446.276 69.1614 446.276 66.2608C446.276 62.4599 448.973 60.5594 452.371 60.0594L463.46 58.359V60.5594C463.46 69.2615 458.265 71.962 452.671 71.962Z" fill="#1F1F1F"/>
<path d="M485.645 66.7608C486.243 72.3621 491.339 81.9642 506.124 81.9642C519.012 81.9642 525.205 73.7624 525.205 65.7607C525.205 58.559 520.311 52.6577 510.62 50.6571L503.626 49.1569C500.929 48.6568 499.132 47.1565 499.132 44.7559C499.132 41.9552 501.928 39.8549 505.425 39.8549C511.021 39.8549 513.118 43.5556 513.519 46.4564L524.607 43.9558C524.007 38.6546 519.312 29.7527 505.326 29.7527C494.735 29.7527 486.944 37.0543 486.944 45.8561C486.944 52.7576 491.238 58.4591 500.73 60.5594L507.224 62.0598C511.021 62.8599 512.519 64.6605 512.519 66.8609C512.519 69.4615 510.421 71.762 506.025 71.762C500.23 71.762 497.334 68.1611 497.034 64.2602L485.645 66.7608Z" fill="#1F1F1F"/>
<path d="M545.385 50.2571C545.685 45.7562 549.482 40.5549 556.375 40.5549C563.967 40.5549 567.165 45.3561 567.365 50.2571H545.385ZM568.664 63.0601C567.065 67.4609 563.668 70.5617 557.474 70.5617C550.88 70.5617 545.385 65.8606 545.087 59.3593H580.252C580.252 59.159 580.451 57.1587 580.451 55.2582C580.451 39.4547 571.361 29.7527 556.175 29.7527C543.588 29.7527 531.998 39.9548 531.998 55.6584C531.998 72.262 543.886 81.9642 557.374 81.9642C569.462 81.9642 577.255 74.8626 579.753 66.3607L568.664 63.0601Z" fill="#1F1F1F"/>
<path d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0627L99.1935 40.0627C107.384 40.0627 111.952 49.5228 106.859 55.9374L63.7076 110.284Z" fill="url(#paint0_linear)"/>
<path d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0627L99.1935 40.0627C107.384 40.0627 111.952 49.5228 106.859 55.9374L63.7076 110.284Z" fill="url(#paint1_linear)" fill-opacity="0.2"/>
<path d="M45.317 2.07103C48.1765 -1.53037 53.9745 0.442937 54.0434 5.041L54.4849 72.2922H9.83113C1.64038 72.2922 -2.92775 62.8321 2.1655 56.4175L45.317 2.07103Z" fill="#3ECF8E"/>
<svg width="815" height="163" viewBox="0 0 815 163" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2993_107784)">
<path d="M78.033 7.723C77.9338 1.09947 69.5817 -1.74309 65.4626 3.44475L3.30264 81.7311C-4.03421 90.9714 2.5462 104.599 14.345 104.599H78.7992L79.3812 155.047C79.4804 161.67 87.8324 164.512 91.9515 159.325L154.111 81.0385C161.448 71.7983 154.868 58.1709 143.069 58.1709H78.4769L78.033 7.723Z" fill="url(#paint0_linear_2993_107784)"/>
<path d="M91.9671 159.338C87.848 164.525 79.4961 161.683 79.3969 155.059L78.3438 58.1836H143.085C154.883 58.1836 161.463 71.8109 154.127 81.0512L91.9671 159.338Z" fill="url(#paint1_linear_2993_107784)"/>
<path d="M214.303 99.3648C215.14 107.11 222.265 120.386 242.941 120.386C260.962 120.386 269.625 109.046 269.625 97.982C269.625 88.0246 262.778 79.8651 249.228 77.0989L239.448 75.0247C235.677 74.3332 233.162 72.2588 233.162 68.9396C233.162 65.0672 237.074 62.1632 241.964 62.1632C249.786 62.1632 252.72 67.28 253.279 71.2908L268.786 67.8333C267.948 60.5036 261.381 48.1953 241.824 48.1953C227.015 48.1953 216.119 58.2909 216.119 70.4608C216.119 80.0032 222.125 87.8864 235.397 90.7904L244.478 92.865C249.786 93.9712 251.882 96.4608 251.882 99.5032C251.882 103.099 248.949 106.28 242.801 106.28C234.699 106.28 230.647 101.301 230.229 95.9074L214.303 99.3648Z" fill="black"/>
<path d="M329.002 118.311H346.744C346.464 115.96 346.045 111.258 346.045 106.003V50.2695H327.463V89.8223C327.463 97.7053 322.714 103.237 314.473 103.237C305.811 103.237 301.898 97.152 301.898 89.5457V50.2695H283.318V93.2799C283.318 108.077 292.817 120.109 309.443 120.109C316.706 120.109 324.672 117.343 328.444 110.982C328.444 113.748 328.722 116.928 329.002 118.311Z" fill="black"/>
<path d="M384.452 144.589V111.675C387.804 116.239 394.79 119.973 404.29 119.973C423.708 119.973 436.699 104.76 436.699 84.1538C436.699 63.9627 425.105 48.75 404.988 48.75C394.651 48.75 386.967 53.3136 383.894 58.5691V50.2712H365.873V144.589H384.452ZM418.398 84.2922C418.398 96.4625 410.856 103.515 401.355 103.515C391.857 103.515 384.173 96.3241 384.173 84.2922C384.173 72.2604 391.857 65.2072 401.355 65.2072C410.856 65.2072 418.398 72.2604 418.398 84.2922Z" fill="black"/>
<path d="M447.223 99.7798C447.223 110.429 456.162 120.248 470.833 120.248C481.028 120.248 487.595 115.546 491.087 110.152C491.087 112.78 491.366 116.514 491.786 118.312H508.829C508.409 115.96 507.993 111.12 507.993 107.524V74.0565C507.993 60.3652 499.889 48.1953 478.097 48.1953C459.656 48.1953 449.736 59.9503 448.62 70.5992L465.104 74.0565C465.663 68.1099 470.133 62.9929 478.234 62.9929C486.059 62.9929 489.831 67.0035 489.831 71.8439C489.831 74.1949 488.575 76.1312 484.662 76.6843L467.759 79.1736C456.304 80.8332 447.223 87.6096 447.223 99.7798ZM474.742 106.556C468.737 106.556 465.801 102.684 465.801 98.6735C465.801 93.4182 469.573 90.7904 474.324 90.0991L489.831 87.748V90.7904C489.831 102.822 482.566 106.556 474.742 106.556Z" fill="black"/>
<path d="M544.745 118.31V110.013C548.375 115.821 555.639 119.97 565.14 119.97C584.7 119.97 597.553 104.619 597.553 84.0128C597.553 63.8215 585.956 48.4706 565.839 48.4706C555.639 48.4706 548.097 52.8961 545.023 57.7362V18.1836H526.723V118.31H544.745ZM578.97 84.151C578.97 96.5978 571.427 103.513 561.926 103.513C552.567 103.513 544.745 96.4596 544.745 84.151C544.745 71.7043 552.567 64.9279 561.926 64.9279C571.427 64.9279 578.97 71.7043 578.97 84.151Z" fill="black"/>
<path d="M608.072 99.7798C608.072 110.429 617.012 120.248 631.681 120.248C641.878 120.248 648.446 115.546 651.936 110.152C651.936 112.78 652.217 116.514 652.635 118.312H669.679C669.262 115.96 668.842 111.12 668.842 107.524V74.0565C668.842 60.3652 660.739 48.1953 638.945 48.1953C620.505 48.1953 610.587 59.9503 609.469 70.5992L625.952 74.0565C626.513 68.1099 630.983 62.9929 639.084 62.9929C646.909 62.9929 650.68 67.0035 650.68 71.8439C650.68 74.1949 649.423 76.1312 645.511 76.6843L628.609 79.1736C617.153 80.8332 608.072 87.6096 608.072 99.7798ZM635.593 106.556C629.586 106.556 626.651 102.684 626.651 98.6735C626.651 93.4182 630.422 90.7904 635.174 90.0991L650.68 87.748V90.7904C650.68 102.822 643.416 106.556 635.593 106.556Z" fill="black"/>
<path d="M681.701 99.3648C682.537 107.11 689.663 120.386 710.338 120.386C728.36 120.386 737.021 109.046 737.021 97.982C737.021 88.0246 730.177 79.8651 716.625 77.0989L706.845 75.0247C703.074 74.3332 700.561 72.2588 700.561 68.9396C700.561 65.0672 704.471 62.1632 709.361 62.1632C717.186 62.1632 720.118 67.28 720.679 71.2908L736.184 67.8333C735.345 60.5036 728.78 48.1953 709.222 48.1953C694.412 48.1953 683.518 58.2909 683.518 70.4608C683.518 80.0032 689.522 87.8864 702.796 90.7904L711.876 92.865C717.186 93.9712 719.281 96.4608 719.281 99.5032C719.281 103.099 716.347 106.28 710.2 106.28C702.096 106.28 698.047 101.301 697.627 95.9074L681.701 99.3648Z" fill="black"/>
<path d="M765.241 76.5459C765.661 70.3227 770.971 63.1311 780.609 63.1311C791.226 63.1311 795.698 69.7695 795.977 76.5459H765.241ZM797.794 94.248C795.558 100.333 790.808 104.62 782.146 104.62C772.925 104.62 765.241 98.1202 764.825 89.1311H813.998C813.998 88.8542 814.276 86.0884 814.276 83.4607C814.276 61.6099 801.565 48.1953 780.33 48.1953C762.729 48.1953 746.521 62.3013 746.521 84.014C746.521 106.971 763.145 120.386 782.006 120.386C798.91 120.386 809.807 110.567 813.3 98.8116L797.794 94.248Z" fill="black"/>
</g>
<defs>
<linearGradient id="paint0_linear" x1="53.9738" y1="54.974" x2="94.1635" y2="71.8295" gradientUnits="userSpaceOnUse">
<stop stop-color="#249361"/>
<stop offset="1" stop-color="#3ECF8E"/>
<linearGradient id="paint0_linear_2993_107784" x1="36.6621" y1="9.6228" x2="88.678" y2="52.7201" gradientUnits="userSpaceOnUse">
<stop stop-color="#763AFF"/>
<stop offset="1" stop-color="#5A099A"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="36.1558" y1="30.578" x2="54.4844" y2="65.0806" gradientUnits="userSpaceOnUse">
<stop/>
<stop offset="1" stop-opacity="0"/>
<linearGradient id="paint1_linear_2993_107784" x1="53.6505" y1="52.6519" x2="138.597" y2="114.63" gradientUnits="userSpaceOnUse">
<stop stop-color="#5C00AA"/>
<stop offset="1" stop-color="#7156DA"/>
</linearGradient>
<clipPath id="clip0_2993_107784">
<rect width="814.056" height="161.238" fill="white" transform="translate(0.21875 0.765625)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

+22 -18
View File
@@ -1,23 +1,27 @@
<svg width="581" height="113" viewBox="0 0 581 113" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M151.397 66.7608C151.996 72.3621 157.091 81.9642 171.877 81.9642C184.764 81.9642 190.959 73.7624 190.959 65.7607C190.959 58.559 186.063 52.6577 176.373 50.6571L169.379 49.1569C166.682 48.6568 164.884 47.1565 164.884 44.7559C164.884 41.9552 167.681 39.8549 171.178 39.8549C176.772 39.8549 178.87 43.5556 179.27 46.4564L190.359 43.9558C189.76 38.6546 185.064 29.7527 171.078 29.7527C160.488 29.7527 152.696 37.0543 152.696 45.8561C152.696 52.7576 156.991 58.4591 166.482 60.5594L172.976 62.0598C176.772 62.8599 178.271 64.6605 178.271 66.8609C178.271 69.4615 176.173 71.762 171.777 71.762C165.983 71.762 163.085 68.1611 162.786 64.2602L151.397 66.7608Z" fill="white"/>
<path d="M233.421 80.4639H246.109C245.909 78.7635 245.609 75.3628 245.609 71.5618V31.2529H232.321V59.8592C232.321 65.5606 228.925 69.5614 223.031 69.5614C216.837 69.5614 214.039 65.1604 214.039 59.6592V31.2529H200.752V62.3599C200.752 73.0622 207.545 81.7642 219.434 81.7642C224.628 81.7642 230.325 79.7638 233.022 75.1627C233.022 77.1631 233.221 79.4636 233.421 80.4639Z" fill="white"/>
<path d="M273.076 99.4682V75.663C275.473 78.9636 280.469 81.6644 287.263 81.6644C301.149 81.6644 310.439 70.6617 310.439 55.7584C310.439 41.1553 302.148 30.1528 287.762 30.1528C280.37 30.1528 274.875 33.4534 272.677 37.2544V31.253H259.79V99.4682H273.076ZM297.352 55.8585C297.352 64.6606 291.958 69.7616 285.164 69.7616C278.372 69.7616 272.877 64.5605 272.877 55.8585C272.877 47.1566 278.372 42.0554 285.164 42.0554C291.958 42.0554 297.352 47.1566 297.352 55.8585Z" fill="white"/>
<path d="M317.964 67.0609C317.964 74.7627 324.357 81.8643 334.848 81.8643C342.139 81.8643 346.835 78.4634 349.332 74.5625C349.332 76.463 349.532 79.1635 349.832 80.4639H362.02C361.72 78.7635 361.422 75.2627 361.422 72.6622V48.4567C361.422 38.5545 355.627 29.7527 340.043 29.7527C326.855 29.7527 319.761 38.2544 318.963 45.9562L330.751 48.4567C331.151 44.1558 334.348 40.455 340.141 40.455C345.737 40.455 348.434 43.3556 348.434 46.8564C348.434 48.5568 347.536 49.9572 344.738 50.3572L332.65 52.1576C324.458 53.3579 317.964 58.2589 317.964 67.0609ZM337.644 71.962C333.349 71.962 331.25 69.1614 331.25 66.2608C331.25 62.4599 333.947 60.5594 337.345 60.0594L348.434 58.359V60.5594C348.434 69.2615 343.239 71.962 337.644 71.962Z" fill="white"/>
<path d="M387.703 80.4641V74.4627C390.299 78.6637 395.494 81.6644 402.288 81.6644C416.276 81.6644 425.467 70.5618 425.467 55.6585C425.467 41.0552 417.174 29.9528 402.788 29.9528C395.494 29.9528 390.1 33.1535 387.902 36.6541V8.04785H374.815V80.4641H387.703ZM412.178 55.7584C412.178 64.7605 406.784 69.7616 399.99 69.7616C393.297 69.7616 387.703 64.6606 387.703 55.7584C387.703 46.7564 393.297 41.8554 399.99 41.8554C406.784 41.8554 412.178 46.7564 412.178 55.7584Z" fill="white"/>
<path d="M432.99 67.0609C432.99 74.7627 439.383 81.8643 449.873 81.8643C457.165 81.8643 461.862 78.4634 464.358 74.5625C464.358 76.463 464.559 79.1635 464.858 80.4639H477.046C476.748 78.7635 476.448 75.2627 476.448 72.6622V48.4567C476.448 38.5545 470.653 29.7527 455.068 29.7527C441.881 29.7527 434.788 38.2544 433.989 45.9562L445.776 48.4567C446.177 44.1558 449.374 40.455 455.167 40.455C460.763 40.455 463.46 43.3556 463.46 46.8564C463.46 48.5568 462.561 49.9572 459.763 50.3572L447.676 52.1576C439.484 53.3579 432.99 58.2589 432.99 67.0609ZM452.671 71.962C448.375 71.962 446.276 69.1614 446.276 66.2608C446.276 62.4599 448.973 60.5594 452.371 60.0594L463.46 58.359V60.5594C463.46 69.2615 458.265 71.962 452.671 71.962Z" fill="white"/>
<path d="M485.645 66.7608C486.243 72.3621 491.339 81.9642 506.124 81.9642C519.012 81.9642 525.205 73.7624 525.205 65.7607C525.205 58.559 520.311 52.6577 510.62 50.6571L503.626 49.1569C500.929 48.6568 499.132 47.1565 499.132 44.7559C499.132 41.9552 501.928 39.8549 505.425 39.8549C511.021 39.8549 513.118 43.5556 513.519 46.4564L524.607 43.9558C524.007 38.6546 519.312 29.7527 505.326 29.7527C494.735 29.7527 486.944 37.0543 486.944 45.8561C486.944 52.7576 491.238 58.4591 500.73 60.5594L507.224 62.0598C511.021 62.8599 512.519 64.6605 512.519 66.8609C512.519 69.4615 510.421 71.762 506.025 71.762C500.23 71.762 497.334 68.1611 497.034 64.2602L485.645 66.7608Z" fill="white"/>
<path d="M545.385 50.2571C545.685 45.7562 549.482 40.5549 556.375 40.5549C563.967 40.5549 567.165 45.3561 567.365 50.2571H545.385ZM568.664 63.0601C567.065 67.4609 563.668 70.5617 557.474 70.5617C550.88 70.5617 545.385 65.8606 545.087 59.3593H580.252C580.252 59.159 580.451 57.1587 580.451 55.2582C580.451 39.4547 571.361 29.7527 556.175 29.7527C543.588 29.7527 531.998 39.9548 531.998 55.6584C531.998 72.262 543.886 81.9642 557.374 81.9642C569.462 81.9642 577.255 74.8626 579.753 66.3607L568.664 63.0601Z" fill="white"/>
<path d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0627L99.1935 40.0627C107.384 40.0627 111.952 49.5228 106.859 55.9374L63.7076 110.284Z" fill="url(#paint0_linear)"/>
<path d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0627L99.1935 40.0627C107.384 40.0627 111.952 49.5228 106.859 55.9374L63.7076 110.284Z" fill="url(#paint1_linear)" fill-opacity="0.2"/>
<path d="M45.317 2.07103C48.1765 -1.53037 53.9745 0.442937 54.0434 5.041L54.4849 72.2922H9.83113C1.64038 72.2922 -2.92775 62.8321 2.1655 56.4175L45.317 2.07103Z" fill="#3ECF8E"/>
<svg width="815" height="162" viewBox="0 0 815 162" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2993_107746)">
<path d="M78.033 6.95738C77.9338 0.333847 69.5817 -2.50871 65.4626 2.67912L3.30264 80.9655C-4.03421 90.2058 2.5462 103.833 14.345 103.833H78.7992L79.3812 154.281C79.4804 160.905 87.8324 163.747 91.9515 158.559L154.111 80.2729C161.448 71.0327 154.868 57.4053 143.069 57.4053H78.4769L78.033 6.95738Z" fill="url(#paint0_linear_2993_107746)"/>
<path d="M91.9671 158.572C87.848 163.759 79.4961 160.917 79.3969 154.294L78.3438 57.418H143.085C154.883 57.418 161.463 71.0453 154.127 80.2856L91.9671 158.572Z" fill="url(#paint1_linear_2993_107746)"/>
<path d="M214.303 98.5992C215.14 106.344 222.265 119.62 242.941 119.62C260.962 119.62 269.625 108.28 269.625 97.2164C269.625 87.2589 262.778 79.0995 249.228 76.3333L239.448 74.259C235.677 73.5676 233.162 71.4932 233.162 68.174C233.162 64.3016 237.074 61.3976 241.964 61.3976C249.786 61.3976 252.72 66.5144 253.279 70.5252L268.786 67.0677C267.948 59.738 261.381 47.4297 241.824 47.4297C227.015 47.4297 216.119 57.5253 216.119 69.6952C216.119 79.2376 222.125 87.1208 235.397 90.0248L244.478 92.0993C249.786 93.2056 251.882 95.6952 251.882 98.7376C251.882 102.333 248.949 105.514 242.801 105.514C234.699 105.514 230.647 100.535 230.229 95.1417L214.303 98.5992Z" fill="white"/>
<path d="M329.002 117.546H346.744C346.464 115.195 346.045 110.493 346.045 105.237V49.5039H327.463V89.0566C327.463 96.9397 322.714 102.471 314.473 102.471C305.811 102.471 301.898 96.3864 301.898 88.7801V49.5039H283.318V92.5142C283.318 107.312 292.817 119.344 309.443 119.344C316.706 119.344 324.672 116.578 328.444 110.216C328.444 112.982 328.722 116.163 329.002 117.546Z" fill="white"/>
<path d="M384.452 143.824V110.909C387.804 115.473 394.79 119.207 404.29 119.207C423.708 119.207 436.699 103.994 436.699 83.3882C436.699 63.1971 425.105 47.9844 404.988 47.9844C394.651 47.9844 386.967 52.548 383.894 57.8035V49.5056H365.873V143.824H384.452ZM418.398 83.5266C418.398 95.6969 410.856 102.75 401.355 102.75C391.857 102.75 384.173 95.5585 384.173 83.5266C384.173 71.4948 391.857 64.4416 401.355 64.4416C410.856 64.4416 418.398 71.4948 418.398 83.5266Z" fill="white"/>
<path d="M447.223 99.0142C447.223 109.663 456.162 119.482 470.833 119.482C481.028 119.482 487.595 114.78 491.087 109.386C491.087 112.014 491.366 115.748 491.786 117.546H508.829C508.409 115.195 507.993 110.354 507.993 106.759V73.2909C507.993 59.5996 499.889 47.4297 478.097 47.4297C459.656 47.4297 449.736 59.1846 448.62 69.8336L465.104 73.2909C465.663 67.3442 470.133 62.2273 478.234 62.2273C486.059 62.2273 489.831 66.2378 489.831 71.0782C489.831 73.4293 488.575 75.3656 484.662 75.9187L467.759 78.408C456.304 80.0676 447.223 86.844 447.223 99.0142ZM474.742 105.791C468.737 105.791 465.801 101.918 465.801 97.9079C465.801 92.6526 469.573 90.0248 474.324 89.3335L489.831 86.9824V90.0248C489.831 102.057 482.566 105.791 474.742 105.791Z" fill="white"/>
<path d="M544.745 117.545V109.247C548.375 115.056 555.639 119.204 565.14 119.204C584.7 119.204 597.553 103.853 597.553 83.2472C597.553 63.0558 585.956 47.705 565.839 47.705C555.639 47.705 548.097 52.1305 545.023 56.9706V17.418H526.723V117.545H544.745ZM578.97 83.3853C578.97 95.8322 571.427 102.747 561.926 102.747C552.567 102.747 544.745 95.694 544.745 83.3853C544.745 70.9386 552.567 64.1622 561.926 64.1622C571.427 64.1622 578.97 70.9386 578.97 83.3853Z" fill="white"/>
<path d="M608.072 99.0142C608.072 109.663 617.012 119.482 631.681 119.482C641.878 119.482 648.446 114.78 651.936 109.386C651.936 112.014 652.217 115.748 652.635 117.546H669.679C669.262 115.195 668.842 110.354 668.842 106.759V73.2909C668.842 59.5996 660.739 47.4297 638.945 47.4297C620.505 47.4297 610.587 59.1846 609.469 69.8336L625.952 73.2909C626.513 67.3442 630.983 62.2273 639.084 62.2273C646.909 62.2273 650.68 66.2378 650.68 71.0782C650.68 73.4293 649.423 75.3656 645.511 75.9187L628.609 78.408C617.153 80.0676 608.072 86.844 608.072 99.0142ZM635.593 105.791C629.586 105.791 626.651 101.918 626.651 97.9079C626.651 92.6526 630.422 90.0248 635.174 89.3335L650.68 86.9824V90.0248C650.68 102.057 643.416 105.791 635.593 105.791Z" fill="white"/>
<path d="M681.701 98.5992C682.537 106.344 689.663 119.62 710.338 119.62C728.36 119.62 737.021 108.28 737.021 97.2164C737.021 87.2589 730.177 79.0995 716.625 76.3333L706.845 74.259C703.074 73.5676 700.561 71.4932 700.561 68.174C700.561 64.3016 704.471 61.3976 709.361 61.3976C717.186 61.3976 720.118 66.5144 720.679 70.5252L736.184 67.0677C735.345 59.738 728.78 47.4297 709.222 47.4297C694.412 47.4297 683.518 57.5253 683.518 69.6952C683.518 79.2376 689.522 87.1208 702.796 90.0248L711.876 92.0993C717.186 93.2056 719.281 95.6952 719.281 98.7376C719.281 102.333 716.347 105.514 710.2 105.514C702.096 105.514 698.047 100.535 697.627 95.1417L681.701 98.5992Z" fill="white"/>
<path d="M765.241 75.7803C765.661 69.557 770.971 62.3654 780.609 62.3654C791.226 62.3654 795.698 69.0038 795.977 75.7803H765.241ZM797.794 93.4824C795.558 99.5672 790.808 103.855 782.146 103.855C772.925 103.855 765.241 97.3545 764.825 88.3655H813.998C813.998 88.0885 814.276 85.3228 814.276 82.6951C814.276 60.8442 801.565 47.4297 780.33 47.4297C762.729 47.4297 746.521 61.5357 746.521 83.2484C746.521 106.205 763.145 119.62 782.006 119.62C798.91 119.62 809.807 109.801 813.3 98.046L797.794 93.4824Z" fill="white"/>
</g>
<defs>
<linearGradient id="paint0_linear" x1="53.9738" y1="54.974" x2="94.1635" y2="71.8295" gradientUnits="userSpaceOnUse">
<stop stop-color="#249361"/>
<stop offset="1" stop-color="#3ECF8E"/>
<linearGradient id="paint0_linear_2993_107746" x1="36.6621" y1="8.85717" x2="88.678" y2="51.9544" gradientUnits="userSpaceOnUse">
<stop stop-color="#763AFF"/>
<stop offset="1" stop-color="#5A099A"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="36.1558" y1="30.578" x2="54.4844" y2="65.0806" gradientUnits="userSpaceOnUse">
<stop/>
<stop offset="1" stop-opacity="0"/>
<linearGradient id="paint1_linear_2993_107746" x1="53.6505" y1="51.8862" x2="138.597" y2="113.864" gradientUnits="userSpaceOnUse">
<stop stop-color="#5C00AA"/>
<stop offset="1" stop-color="#7156DA"/>
</linearGradient>
<clipPath id="clip0_2993_107746">
<rect width="814.056" height="161.238" fill="white" transform="translate(0.21875)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

+22 -18
View File
@@ -1,23 +1,27 @@
<svg width="581" height="113" viewBox="0 0 581 113" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M151.397 66.7608C151.996 72.3621 157.091 81.9642 171.877 81.9642C184.764 81.9642 190.959 73.7624 190.959 65.7607C190.959 58.559 186.063 52.6577 176.373 50.6571L169.379 49.1569C166.682 48.6568 164.884 47.1565 164.884 44.7559C164.884 41.9552 167.681 39.8549 171.178 39.8549C176.772 39.8549 178.87 43.5556 179.27 46.4564L190.359 43.9558C189.76 38.6546 185.064 29.7527 171.078 29.7527C160.488 29.7527 152.696 37.0543 152.696 45.8561C152.696 52.7576 156.991 58.4591 166.482 60.5594L172.976 62.0598C176.772 62.8599 178.271 64.6605 178.271 66.8609C178.271 69.4615 176.173 71.762 171.777 71.762C165.983 71.762 163.085 68.1611 162.786 64.2602L151.397 66.7608Z" fill="#1F1F1F"/>
<path d="M233.421 80.4639H246.109C245.909 78.7635 245.609 75.3628 245.609 71.5618V31.2529H232.321V59.8592C232.321 65.5606 228.925 69.5614 223.031 69.5614C216.837 69.5614 214.039 65.1604 214.039 59.6592V31.2529H200.752V62.3599C200.752 73.0622 207.545 81.7642 219.434 81.7642C224.628 81.7642 230.325 79.7638 233.022 75.1627C233.022 77.1631 233.221 79.4636 233.421 80.4639Z" fill="#1F1F1F"/>
<path d="M273.076 99.4682V75.663C275.473 78.9636 280.469 81.6644 287.263 81.6644C301.149 81.6644 310.439 70.6617 310.439 55.7584C310.439 41.1553 302.148 30.1528 287.762 30.1528C280.37 30.1528 274.875 33.4534 272.677 37.2544V31.253H259.79V99.4682H273.076ZM297.352 55.8585C297.352 64.6606 291.958 69.7616 285.164 69.7616C278.372 69.7616 272.877 64.5605 272.877 55.8585C272.877 47.1566 278.372 42.0554 285.164 42.0554C291.958 42.0554 297.352 47.1566 297.352 55.8585Z" fill="#1F1F1F"/>
<path d="M317.964 67.0609C317.964 74.7627 324.357 81.8643 334.848 81.8643C342.139 81.8643 346.835 78.4634 349.332 74.5625C349.332 76.463 349.532 79.1635 349.832 80.4639H362.02C361.72 78.7635 361.422 75.2627 361.422 72.6622V48.4567C361.422 38.5545 355.627 29.7527 340.043 29.7527C326.855 29.7527 319.761 38.2544 318.963 45.9562L330.751 48.4567C331.151 44.1558 334.348 40.455 340.141 40.455C345.737 40.455 348.434 43.3556 348.434 46.8564C348.434 48.5568 347.536 49.9572 344.738 50.3572L332.65 52.1576C324.458 53.3579 317.964 58.2589 317.964 67.0609ZM337.644 71.962C333.349 71.962 331.25 69.1614 331.25 66.2608C331.25 62.4599 333.947 60.5594 337.345 60.0594L348.434 58.359V60.5594C348.434 69.2615 343.239 71.962 337.644 71.962Z" fill="#1F1F1F"/>
<path d="M387.703 80.4641V74.4627C390.299 78.6637 395.494 81.6644 402.288 81.6644C416.276 81.6644 425.467 70.5618 425.467 55.6585C425.467 41.0552 417.174 29.9528 402.788 29.9528C395.494 29.9528 390.1 33.1535 387.902 36.6541V8.04785H374.815V80.4641H387.703ZM412.178 55.7584C412.178 64.7605 406.784 69.7616 399.99 69.7616C393.297 69.7616 387.703 64.6606 387.703 55.7584C387.703 46.7564 393.297 41.8554 399.99 41.8554C406.784 41.8554 412.178 46.7564 412.178 55.7584Z" fill="#1F1F1F"/>
<path d="M432.99 67.0609C432.99 74.7627 439.383 81.8643 449.873 81.8643C457.165 81.8643 461.862 78.4634 464.358 74.5625C464.358 76.463 464.559 79.1635 464.858 80.4639H477.046C476.748 78.7635 476.448 75.2627 476.448 72.6622V48.4567C476.448 38.5545 470.653 29.7527 455.068 29.7527C441.881 29.7527 434.788 38.2544 433.989 45.9562L445.776 48.4567C446.177 44.1558 449.374 40.455 455.167 40.455C460.763 40.455 463.46 43.3556 463.46 46.8564C463.46 48.5568 462.561 49.9572 459.763 50.3572L447.676 52.1576C439.484 53.3579 432.99 58.2589 432.99 67.0609ZM452.671 71.962C448.375 71.962 446.276 69.1614 446.276 66.2608C446.276 62.4599 448.973 60.5594 452.371 60.0594L463.46 58.359V60.5594C463.46 69.2615 458.265 71.962 452.671 71.962Z" fill="#1F1F1F"/>
<path d="M485.645 66.7608C486.243 72.3621 491.339 81.9642 506.124 81.9642C519.012 81.9642 525.205 73.7624 525.205 65.7607C525.205 58.559 520.311 52.6577 510.62 50.6571L503.626 49.1569C500.929 48.6568 499.132 47.1565 499.132 44.7559C499.132 41.9552 501.928 39.8549 505.425 39.8549C511.021 39.8549 513.118 43.5556 513.519 46.4564L524.607 43.9558C524.007 38.6546 519.312 29.7527 505.326 29.7527C494.735 29.7527 486.944 37.0543 486.944 45.8561C486.944 52.7576 491.238 58.4591 500.73 60.5594L507.224 62.0598C511.021 62.8599 512.519 64.6605 512.519 66.8609C512.519 69.4615 510.421 71.762 506.025 71.762C500.23 71.762 497.334 68.1611 497.034 64.2602L485.645 66.7608Z" fill="#1F1F1F"/>
<path d="M545.385 50.2571C545.685 45.7562 549.482 40.5549 556.375 40.5549C563.967 40.5549 567.165 45.3561 567.365 50.2571H545.385ZM568.664 63.0601C567.065 67.4609 563.668 70.5617 557.474 70.5617C550.88 70.5617 545.385 65.8606 545.087 59.3593H580.252C580.252 59.159 580.451 57.1587 580.451 55.2582C580.451 39.4547 571.361 29.7527 556.175 29.7527C543.588 29.7527 531.998 39.9548 531.998 55.6584C531.998 72.262 543.886 81.9642 557.374 81.9642C569.462 81.9642 577.255 74.8626 579.753 66.3607L568.664 63.0601Z" fill="#1F1F1F"/>
<path d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0627L99.1935 40.0627C107.384 40.0627 111.952 49.5228 106.859 55.9374L63.7076 110.284Z" fill="url(#paint0_linear)"/>
<path d="M63.7076 110.284C60.8481 113.885 55.0502 111.912 54.9813 107.314L53.9738 40.0627L99.1935 40.0627C107.384 40.0627 111.952 49.5228 106.859 55.9374L63.7076 110.284Z" fill="url(#paint1_linear)" fill-opacity="0.2"/>
<path d="M45.317 2.07103C48.1765 -1.53037 53.9745 0.442937 54.0434 5.041L54.4849 72.2922H9.83113C1.64038 72.2922 -2.92775 62.8321 2.1655 56.4175L45.317 2.07103Z" fill="#3ECF8E"/>
<svg width="815" height="163" viewBox="0 0 815 163" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2993_107784)">
<path d="M78.033 7.723C77.9338 1.09947 69.5817 -1.74309 65.4626 3.44475L3.30264 81.7311C-4.03421 90.9714 2.5462 104.599 14.345 104.599H78.7992L79.3812 155.047C79.4804 161.67 87.8324 164.512 91.9515 159.325L154.111 81.0385C161.448 71.7983 154.868 58.1709 143.069 58.1709H78.4769L78.033 7.723Z" fill="url(#paint0_linear_2993_107784)"/>
<path d="M91.9671 159.338C87.848 164.525 79.4961 161.683 79.3969 155.059L78.3438 58.1836H143.085C154.883 58.1836 161.463 71.8109 154.127 81.0512L91.9671 159.338Z" fill="url(#paint1_linear_2993_107784)"/>
<path d="M214.303 99.3648C215.14 107.11 222.265 120.386 242.941 120.386C260.962 120.386 269.625 109.046 269.625 97.982C269.625 88.0246 262.778 79.8651 249.228 77.0989L239.448 75.0247C235.677 74.3332 233.162 72.2588 233.162 68.9396C233.162 65.0672 237.074 62.1632 241.964 62.1632C249.786 62.1632 252.72 67.28 253.279 71.2908L268.786 67.8333C267.948 60.5036 261.381 48.1953 241.824 48.1953C227.015 48.1953 216.119 58.2909 216.119 70.4608C216.119 80.0032 222.125 87.8864 235.397 90.7904L244.478 92.865C249.786 93.9712 251.882 96.4608 251.882 99.5032C251.882 103.099 248.949 106.28 242.801 106.28C234.699 106.28 230.647 101.301 230.229 95.9074L214.303 99.3648Z" fill="black"/>
<path d="M329.002 118.311H346.744C346.464 115.96 346.045 111.258 346.045 106.003V50.2695H327.463V89.8223C327.463 97.7053 322.714 103.237 314.473 103.237C305.811 103.237 301.898 97.152 301.898 89.5457V50.2695H283.318V93.2799C283.318 108.077 292.817 120.109 309.443 120.109C316.706 120.109 324.672 117.343 328.444 110.982C328.444 113.748 328.722 116.928 329.002 118.311Z" fill="black"/>
<path d="M384.452 144.589V111.675C387.804 116.239 394.79 119.973 404.29 119.973C423.708 119.973 436.699 104.76 436.699 84.1538C436.699 63.9627 425.105 48.75 404.988 48.75C394.651 48.75 386.967 53.3136 383.894 58.5691V50.2712H365.873V144.589H384.452ZM418.398 84.2922C418.398 96.4625 410.856 103.515 401.355 103.515C391.857 103.515 384.173 96.3241 384.173 84.2922C384.173 72.2604 391.857 65.2072 401.355 65.2072C410.856 65.2072 418.398 72.2604 418.398 84.2922Z" fill="black"/>
<path d="M447.223 99.7798C447.223 110.429 456.162 120.248 470.833 120.248C481.028 120.248 487.595 115.546 491.087 110.152C491.087 112.78 491.366 116.514 491.786 118.312H508.829C508.409 115.96 507.993 111.12 507.993 107.524V74.0565C507.993 60.3652 499.889 48.1953 478.097 48.1953C459.656 48.1953 449.736 59.9503 448.62 70.5992L465.104 74.0565C465.663 68.1099 470.133 62.9929 478.234 62.9929C486.059 62.9929 489.831 67.0035 489.831 71.8439C489.831 74.1949 488.575 76.1312 484.662 76.6843L467.759 79.1736C456.304 80.8332 447.223 87.6096 447.223 99.7798ZM474.742 106.556C468.737 106.556 465.801 102.684 465.801 98.6735C465.801 93.4182 469.573 90.7904 474.324 90.0991L489.831 87.748V90.7904C489.831 102.822 482.566 106.556 474.742 106.556Z" fill="black"/>
<path d="M544.745 118.31V110.013C548.375 115.821 555.639 119.97 565.14 119.97C584.7 119.97 597.553 104.619 597.553 84.0128C597.553 63.8215 585.956 48.4706 565.839 48.4706C555.639 48.4706 548.097 52.8961 545.023 57.7362V18.1836H526.723V118.31H544.745ZM578.97 84.151C578.97 96.5978 571.427 103.513 561.926 103.513C552.567 103.513 544.745 96.4596 544.745 84.151C544.745 71.7043 552.567 64.9279 561.926 64.9279C571.427 64.9279 578.97 71.7043 578.97 84.151Z" fill="black"/>
<path d="M608.072 99.7798C608.072 110.429 617.012 120.248 631.681 120.248C641.878 120.248 648.446 115.546 651.936 110.152C651.936 112.78 652.217 116.514 652.635 118.312H669.679C669.262 115.96 668.842 111.12 668.842 107.524V74.0565C668.842 60.3652 660.739 48.1953 638.945 48.1953C620.505 48.1953 610.587 59.9503 609.469 70.5992L625.952 74.0565C626.513 68.1099 630.983 62.9929 639.084 62.9929C646.909 62.9929 650.68 67.0035 650.68 71.8439C650.68 74.1949 649.423 76.1312 645.511 76.6843L628.609 79.1736C617.153 80.8332 608.072 87.6096 608.072 99.7798ZM635.593 106.556C629.586 106.556 626.651 102.684 626.651 98.6735C626.651 93.4182 630.422 90.7904 635.174 90.0991L650.68 87.748V90.7904C650.68 102.822 643.416 106.556 635.593 106.556Z" fill="black"/>
<path d="M681.701 99.3648C682.537 107.11 689.663 120.386 710.338 120.386C728.36 120.386 737.021 109.046 737.021 97.982C737.021 88.0246 730.177 79.8651 716.625 77.0989L706.845 75.0247C703.074 74.3332 700.561 72.2588 700.561 68.9396C700.561 65.0672 704.471 62.1632 709.361 62.1632C717.186 62.1632 720.118 67.28 720.679 71.2908L736.184 67.8333C735.345 60.5036 728.78 48.1953 709.222 48.1953C694.412 48.1953 683.518 58.2909 683.518 70.4608C683.518 80.0032 689.522 87.8864 702.796 90.7904L711.876 92.865C717.186 93.9712 719.281 96.4608 719.281 99.5032C719.281 103.099 716.347 106.28 710.2 106.28C702.096 106.28 698.047 101.301 697.627 95.9074L681.701 99.3648Z" fill="black"/>
<path d="M765.241 76.5459C765.661 70.3227 770.971 63.1311 780.609 63.1311C791.226 63.1311 795.698 69.7695 795.977 76.5459H765.241ZM797.794 94.248C795.558 100.333 790.808 104.62 782.146 104.62C772.925 104.62 765.241 98.1202 764.825 89.1311H813.998C813.998 88.8542 814.276 86.0884 814.276 83.4607C814.276 61.6099 801.565 48.1953 780.33 48.1953C762.729 48.1953 746.521 62.3013 746.521 84.014C746.521 106.971 763.145 120.386 782.006 120.386C798.91 120.386 809.807 110.567 813.3 98.8116L797.794 94.248Z" fill="black"/>
</g>
<defs>
<linearGradient id="paint0_linear" x1="53.9738" y1="54.974" x2="94.1635" y2="71.8295" gradientUnits="userSpaceOnUse">
<stop stop-color="#249361"/>
<stop offset="1" stop-color="#3ECF8E"/>
<linearGradient id="paint0_linear_2993_107784" x1="36.6621" y1="9.6228" x2="88.678" y2="52.7201" gradientUnits="userSpaceOnUse">
<stop stop-color="#763AFF"/>
<stop offset="1" stop-color="#5A099A"/>
</linearGradient>
<linearGradient id="paint1_linear" x1="36.1558" y1="30.578" x2="54.4844" y2="65.0806" gradientUnits="userSpaceOnUse">
<stop/>
<stop offset="1" stop-opacity="0"/>
<linearGradient id="paint1_linear_2993_107784" x1="53.6505" y1="52.6519" x2="138.597" y2="114.63" gradientUnits="userSpaceOnUse">
<stop stop-color="#5C00AA"/>
<stop offset="1" stop-color="#7156DA"/>
</linearGradient>
<clipPath id="clip0_2993_107784">
<rect width="814.056" height="161.238" fill="white" transform="translate(0.21875 0.765625)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

@@ -0,0 +1,228 @@
---
title: 'Hugging Face is now supported in Supabase'
description: "We've added support Hugging Face support in our Python Vector Client and Edge Functions."
launchweek: 8
tags:
- launch-week
- announcements
date: '2023-08-07'
toc_depth: 3
author: gregnr,oli_rice
image: launch-week-8/day-1/hugging-face-supabase-og.jpg
thumb: launch-week-8/day-1/hugging-face-supabase-thumb.jpg
---
Since launching our [Vector Toolkit](https://supabase.com/vector) a few months ago, the number of AI applications on Supabase has grown - a lot. Hundreds of new databases every week are using [pgvector](https://github.com/pgvector/pgvector).
98% of those applications use OpenAI to store embeddings using the `text-embedding-ada-002` model. While OpenAI is easy, it’s not open source, which means it can’t be self-hosted.
Our goal at Supabase is to [promote open source collaboration](https://supabase.com/docs/guides/getting-started/architecture#support-existing-tools), and [Hugging Face](https://huggingface.co/) is one of the open source communities we admire most. Today, we’re adding first-class support for Hugging Face, starting with embeddings. Why embeddings? Because this is one area where open source models are [measurably ahead](https://supabase.com/blog/fewer-dimensions-are-better-pgvector) for pgvector performance.
We’ve added support in our [Python Vector Client](https://supabase.com/docs/guides/ai/python/api) and [Edge Functions](https://supabase.com/docs/guides/functions) (Deno/Javascript). Let’s start with Python.
<div className="video-container">
<iframe
className="w-full"
src="https://www.youtube-nocookie.com/embed/RJccSbJ9Go4"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowfullscreen
></iframe>
</div>
## Hugging Face with Python
[supabase/vecs](https://github.com/supabase/vecs) is our Python client for vector projects. Today, we're releasing a new feature for vecs called "adapters".
Adapters transform your input into a new format when upserting and querying. For example, you can split large text into smaller chunks, or transform it into embeddings. And, of course, Adapters have first-class support for HuggingFace models.
As an example, let’s look at how we might adapt text input. If we're inserting large text documents, it might be a good idea to chunk the text into paragraphs using the ParagraphChunker before creating an embedding for each paragraph with the TextEmbedding adapter step.
```python
import vecs
from vecs.adapter import Adapter, ParagraphChunker, TextEmbedding
vx = vecs.create_client("postgresql://<user>:<password>@<host>:<port>/<db_name>")
# create a new collection with an associated adapter
docs = vx.get_or_create_collection(
name="docs",
# here comes the new part
adapter=Adapter(
[
ParagraphChunker(skip_during_query=True),
TextEmbedding(model='Supabase/gte-small'),
]
)
)
```
In the example, we're using the `gte-small` model, but any model compatible with [sentence transformers](https://www.sbert.net/docs/pretrained_models.html) can be used in its place.
Once the adapter is registered with the collection we can upsert data using plain text and records are automatically converted to vectors:
```python
# Upsert
docs.upsert(
records=[
(
"vec0",
"the diameter of a 747 ...", # <- inserting text!
{"publish_year": 2019}
)
]
)
```
Similarly, queries are transparently converted into vectors:
```python
# Search by text
docs.query(data="how many ping pong balls fit in a Boeing ...")
# Results: [...]
```
## Hugging Face with Edge Functions
AI/ML is primarily the domain of the Python community, but thanks to some amazing work by [Joshua](https://twitter.com/xenovacom) at Hugging Face, you can now run inference workloads in Deno/JavaScript. This is an exciting development. It opens up the world of AI/ML to millions of new developers. We’re hoping to accelerate this with better Hugging Face tooling within Supabase Edge Functions.
Let’s step through a small demo where we accept some text, convert it into an embedding, and then store it in our Postgres database. You can create a new function with supabase functions new embed and fill it with the following code snippet:
```ts
import { serve } from 'https://deno.land/std@0.168.0/http/server.ts'
import { env, pipeline } from 'https://cdn.jsdelivr.net/npm/@xenova/transformers@2.5.0'
import { createClient } from 'https://esm.sh/@supabase/supabase-js@2'
// Preparation for Deno runtime
env.useBrowserCache = false
env.allowLocalModels = false
const supabase = createClient('https://xyzcompany.supabase.co', 'public-anon-key')
// Construct pipeline outside of serve for faster warm starts
const pipe = await pipeline('feature-extraction', 'Supabase/gte-small')
// Deno Handler
serve(async (req) => {
const { input } = await req.json()
// Generate the embedding from the user input
const output = await pipe(input, {
pooling: 'mean',
normalize: true,
})
// Get the embedding output
const embedding = Array.from(output.data)
// Store the embedding
const { data, error } = await supabase.from('collections').insert({ embedding })
// Return the embedding
return new Response({ new_row: data }, { headers: { 'Content-Type': 'application/json' } })
})
```
Now run `supabase functions serve` and you’re ready to call your function locally:
```bash
curl --request POST 'http://localhost:54321/functions/v1/embed' \
--header 'Authorization: Bearer ANON_KEY' \
--header 'Content-Type: application/json' \
--data '{ "input": "hello world" }'
```
With just 40 lines of code, we’ve created an API route that can accept some user content, convert it to an embedding, store it in your database, and then return the database row as JSON. This is especially useful for sensitive data since you can run this entirely on your own infrastructure.
Supabase also provides [Database Webhooks](https://supabase.com/docs/guides/database/webhooks) which can trigger an Edge Function any time a row is inserted. This means you can upload plain text to your database and use a background job to convert the text to an embedding.
## Hugging Face from the browser
One of the coolest ideas we’ve seen so far is the ability to support Hugging Face models directly in the browser. With sufficiently small models, you can embed them directly into your application and cut out an entire network hop.
![Hugging Face from the browser example](/images/blog/launch-week-8/day-1/hugging-face-from-the-browser-middleware.png)
This is great for search, where you might want to “debounce” the user query as they type. Of course, this is only helpful if you have a database that allows access from the browser. Fortunately, Supabase provides that functionality using Postgres Row Level Security and PostgREST:
![Hugging Face from the browser with postgREST](/images/blog/launch-week-8/day-1/hugging-face-from-the-browser-postgrest.png)
For example, if we were storing image embeddings inside our database, we could provide search functionality using a simple Postgres function, powered by pgvector:
```sql
create function match_images (
query_embedding vector(512),
match_threshold float,
match_count int
)
returns setof images
language sql stable
as $$
select *, 1 - (image_embedding <=> query_embedding) as similarity
from images
where 1 - (image_embedding <=> query_embedding) > match_threshold
order by similarity desc
limit match_count;
$$;
```
Now, we can call that function directly from the browser using [supabase-js](https://supabase.com/docs/reference/javascript/installing):
```js
let { data: images, error } = await supabase.rpc('match_images', {
query_embedding,
match_threshold,
match_count,
})
```
Of course, even the [smallest](https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2) quantized models in the [MTEB leaderboard](https://huggingface.co/spaces/mteb/leaderboard) are around 20 MB - so you won’t be seeing this on an e-commerce store any time soon. But for some web-based applications or browser extensions it’s an exciting prospect.
Check out [this demo](https://huggingface.co/spaces/Xenova/semantic-image-search) for inspiration, which uses the Unsplash data set and provides image search functionality using natural language:
![Hugging Face from the browser - demo](/images/blog/launch-week-8/day-1/hugging-face-from-the-browser-demo.png)
## Choosing a Hugging Face model
Supabase is mainly used to store embeddings, so that’s where we’re starting. Over time we’ll add more Hugging Face support - even beyond embeddings. To help you identify which Hugging Face model to use, we ran a detailed analysis and found that embeddings with [fewer dimensions are better](https://supabase.com/blog/fewer-dimensions-are-better-pgvector) within pgvector. Fewer dimensions have several advantages:
1. They require less space in your database (saving you money!)
2. Retrieval is faster
To simplify your choice we’ve shortlisted a few recommendations in the official [Supabase org on Hugging Face](https://huggingface.co/Supabase). The [gte-small](https://huggingface.co/Supabase/gte-small) model is the best (it even [outperforms OpenAI’s embedding model](https://huggingface.co/spaces/mteb/leaderboard) in some tasks), but it’s only trained on English text, so you’ll need to find another model if you have non-English text.
Remember also, you can continue to use OpenAI for generative use cases. This means you get the best of both worlds - fast embeddings with Hugging Face and advanced AI with OpenAI’s GPT-3.5/4.
## Plans for the future
We’re in the early stages of development, and we have some exciting ideas to overcome the limitations of this initial release.
### Reducing cold starts
Cold-starts are the time it takes for the “initial load” of an Edge Function. Because the model needs to be downloaded to the Edge Function, could starts can take anywhere from ~2-6s (based on the model). Loading the initial model and building the pipeline usually contributes to it. We are experimenting with the idea of attaching a “read-only disk” of models to our [Edge Runtime](https://github.com/supabase/edge-runtime) which mitigate any download penalties. We’ll share more details about these optimizations in a future blog post.
### Handling heavier workloads
The current quotas provided by Edge Functions are sufficient for running common embedding models. Larger AI models and tasks may require extra memory, CPU, and wall-clock limits to run successfully. We will offer customizable compute resources for Edge Functions in the next few months. If you have a workload that may require extra resources [reach out](https://supabase.com/support) for early access.
### Audio and image models
Working with audio and image data in Edge Functions is a work in progress. AI models expect audio and image content to be decoded into their raw formats before performing inference, and this isn’t yet turn-key in a Deno environment.
For example, the Whisper audio transcription model requires audio to be passed in as 32-bit floating point pulse-code modulation (PCM) data sampled at exactly 16000Hz. Assuming your audio is stored in an encoded format like MP3, you first need to both decode and possibly resample the data before Whisper can understand it. In the browser, the Web Audio API is available which Transformers.js uses for decoding, but this API isn’t currently available in a Deno environment.
Images have the same challenge. Models like CLIP, which can generate embeddings from images, require images to be decoded into their raw RGBA values and sometimes resized. Transformers.js uses the Canvas API in the browser and `sharp` in Node.js to perform these operations, but Deno doesn’t yet have a turn-key solution (`sharp` uses Node.js C++ bindings).
## Getting started
If you’re a Python Dev, check out our [Hello World notebook](https://supabase.com/docs/guides/ai/quickstarts/hello-world). If you’re a JavaScript developer, check out our our [Text Embeddings docs](https://supabase.com/docs/guides/ai/quickstarts/generate-text-embeddings).
And no matter your language preference, remember to jump into the [Hugging Face community](https://github.com/huggingface) and show your support.
## More Launch Week 8
- [Launch Week 8](https://supabase.com/launch-week)
- [Coding the stars - an interactive constellation with Three.js and React Three Fiber](https://supabase.com/blog/interactive-constellation-threejs-react-three-fiber)
- [Why we'll stay remote](https://supabase.com/blog/why-supabase-remote)
- [Postgres Language Server](https://github.com/supabase/postgres_lsp)
+7 -26
View File
@@ -3,28 +3,20 @@ import { useRouter } from 'next/router'
import Telemetry, { TelemetryEvent } from '~/lib/telemetry'
import { useTelemetryProps } from 'common/hooks/useTelemetryProps'
import gaEvents from '~/lib/gaEvents'
import { Button, IconArrowRight, IconBookOpen } from 'ui'
import { Button, IconBookOpen } from 'ui'
import SectionContainer from '~/components/Layouts/SectionContainer'
import HeroFrameworks from './HeroFrameworks'
import styles from './hero.module.css'
import Image from 'next/image'
import { useEffect, useState } from 'react'
import LWAnnouncement from '../LaunchWeek/8/Releases/LWAnnouncement'
const Hero = () => {
const router = useRouter()
const [showAnnouncement, setShowAnnouncement] = useState(false)
const telemetryProps = useTelemetryProps()
const sendTelemetryEvent = async (event: TelemetryEvent) => {
await Telemetry.sendEvent(event, telemetryProps, router)
}
useEffect(() => {
if (typeof window !== undefined) {
const lw8AnnouncementKey = window.localStorage.getItem('announcement_SupabaseLaunchWeek8')
setShowAnnouncement(!!lw8AnnouncementKey)
}
}, [showAnnouncement])
return (
<div className="relative -mt-[65px]">
<SectionContainer className="py-12 md:py-16 lg:py-20 overflow-hidden">
@@ -33,25 +25,14 @@ const Hero = () => {
<div className="mx-auto max-w-2xl lg:col-span-6 lg:flex lg:items-center justify-center text-center">
<div
className={[
'relative z-10 appear-first lg:h-auto pt-[250px] lg:pt-[250px] lg:min-h-[300px] flex flex-col items-center justify-center sm:mx-auto md:w-3/4 lg:mx-0 lg:w-full gap-4 lg:gap-8',
'relative z-10 appear-first lg:h-auto pt-[90px] lg:pt-[90px] lg:min-h-[300px] flex flex-col items-center justify-center sm:mx-auto md:w-3/4 lg:mx-0 lg:w-full gap-4 lg:gap-8',
styles['hero-text'],
].join(' ')}
>
<div className="flex flex-col items-center">
{showAnnouncement && (
<Link href="/launch-week">
<a className="group w-auto rounded-full p-1 mb-6 mt-8 md:mb-10 bg-gradient-to-b from-[#1b1f2124] to-[#02040550] hover:from-[#ffffff15] hover:to-[#ffffff05] transition-all backdrop-blur-lg border flex items-center justify-between gap-2 md:gap-4 text-scale-1100 hover:text-scale-1200 text-sm">
<div className="text-scale-200 rounded-full bg-brand px-3 py-1 flex items-center justify-center">
Get your ticket
</div>
<span>Launch Week 8 - August 7-11</span>
<IconArrowRight
size={16}
className="transform mr-2 transition-transform translate-x-0 sm:-translate-x-1 group-hover:translate-x-0"
/>
</a>
</Link>
)}
<div className="z-40 w-full flex justify-center mb-8 lg:mb-12">
<LWAnnouncement />
</div>
<h1 className="text-scale-1200 text-4xl sm:text-5xl sm:leading-none lg:text-7xl">
<span className="block text-[#F4FFFA00] bg-clip-text bg-gradient-to-b from-scale-1200 to-scale-1200 dark:to-scale-1100">
Build in a weekend
@@ -116,7 +97,7 @@ const Hero = () => {
</div>
</div>
</SectionContainer>
<div className="absolute w-full max-w-[1600px] mx-auto h-[500px] lg:h-[750px] inset-0 z-0">
<div className="absolute w-full max-w-[1600px] mx-auto h-[500px] lg:h-[750px] inset-0 z-0 flex items-center justify-center">
<Image
src="/images/launchweek/8/LW8-gradient.png"
layout="fill"
@@ -9,7 +9,7 @@ const LW8CalloutsSection = () => {
<SectionContainer className="!py-0 w-full !px-0 !max-w-none">
<div className="grid grid-cols-1 lg:grid-cols-2 gap-4 scroll-mt-[105px]" id="hackathon">
<SmallCard className="hover:from-scale-900 hover:to-scale-900">
<Link href="https://twitter.com/i/spaces/1DXGyvjkeEeJM">
<Link href="https://twitter.com/supabase/status/1688544202643111936">
<a
target="_blank"
className="flex flex-row justify-between items-center w-full h-full gap-2"
@@ -17,7 +17,7 @@ const LW8CalloutsSection = () => {
<div className="relative flex-shrink flex items-center p-2 w-2/3 lg:w-1/2 md:w-auto">
<div className="flex flex-col gap-1 sm:pl-4">
<span className="text-white">Join us daily at Twitter Spaces </span>
<span className="">Next up: Monday – Opening Day</span>
<span className="">Monday – Day 1</span>
</div>
</div>
<div className="relative flex !aspect-video h-[80px] md:h-[100px] gap-2 z-10 rounded overflow-hidden">
@@ -1,20 +1,15 @@
import Link from 'next/link'
import CountdownComponent from './Countdown'
import { LW8_LAUNCH_DATE } from '../../../lib/constants'
export function LaunchWeekLogoHeader() {
return (
<div className="flex flex-col gap-1 md:gap-2 items-center justify-end">
<div className="opacity-0 !animate-[fadeIn_0.5s_cubic-bezier(0.25,0.25,0,1)_0.5s_both] px-2 flex flex-col items-center text-center gap-3">
<div className="">
<CountdownComponent date={LW8_LAUNCH_DATE} />
</div>
<h1 className="sr-only font-normal uppercase text-[28px] sm:text-[32px]">Launch week 8</h1>
<p className="text-white radial-gradient-text-scale-600 text-lg sm:text-2xl">
<span className="block">August 7th–11th, 2023</span>
<span>9:00 AM PT</span>
</p>
<div className="text-[#9296AA]">
<div className="text-[#9296AA] px-4">
Join us in a week of announcing new features. <br className="hidden md:block" />
Connect with GitHub to generate your unique ticket and contribute to the constellation.
<span className="inline sm:block">
@@ -0,0 +1,69 @@
import React from 'react'
import { SmallCard } from './components'
import Link from 'next/link'
import Image from 'next/image'
import days from './lw8_data'
const LWAnnouncement = ({ title }: { title?: string }) => {
const [_pre, d1, _d2, _d3, _d4, _d5] = days
return (
<div className="w-full max-w-xl opacity-0 !animate-[fadeIn_0.5s_cubic-bezier(0.25,0.25,0,1)_0.5s_both]">
<SmallCard
className="border hover:border-scale-800 transition-colors"
innerClassName="bg-opacity-70"
>
<Link href="/launch-week#today">
<a className="flex flex-row justify-between items-center w-full h-full gap-2 text-left">
<div className="relative flex-shrink flex items-center p-2 w-2/3 md:w-auto">
<div className="flex flex-col gap-1 sm:pl-2">
<div className="flex items-center gap-2">
<div
className={['hidden sm:flex min-w-[20px] opacity-50', 'opacity-pulse'].join(
' '
)}
>
<svg
width="21"
height="21"
viewBox="0 0 21 21"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
fillRule="evenodd"
clipRule="evenodd"
d="M5.55025 3.97258C5.94078 4.36311 5.94078 4.99627 5.55025 5.38679C2.81658 8.12046 2.81658 12.5526 5.55025 15.2863C5.94078 15.6768 5.94078 16.31 5.55025 16.7005C5.15973 17.091 4.52656 17.091 4.13604 16.7005C0.62132 13.1858 0.62132 7.4873 4.13604 3.97258C4.52656 3.58206 5.15973 3.58206 5.55025 3.97258ZM15.4498 3.97281C15.8403 3.58229 16.4735 3.58229 16.864 3.97281C20.3787 7.48753 20.3787 13.186 16.864 16.7007C16.4735 17.0913 15.8403 17.0913 15.4498 16.7007C15.0592 16.3102 15.0592 15.677 15.4498 15.2865C18.1834 12.5529 18.1834 8.1207 15.4498 5.38703C15.0592 4.9965 15.0592 4.36334 15.4498 3.97281ZM8.37869 6.80101C8.76921 7.19153 8.76921 7.8247 8.37869 8.21522C7.20711 9.38679 7.20711 11.2863 8.37869 12.4579C8.76921 12.8484 8.76921 13.4816 8.37868 13.8721C7.98816 14.2626 7.355 14.2626 6.96447 13.8721C5.01185 11.9195 5.01185 8.75363 6.96447 6.80101C7.355 6.41048 7.98816 6.41048 8.37869 6.80101ZM12.6213 6.80124C13.0119 6.41072 13.645 6.41072 14.0355 6.80124C15.9882 8.75386 15.9882 11.9197 14.0355 13.8723C13.645 14.2628 13.0119 14.2628 12.6213 13.8723C12.2308 13.4818 12.2308 12.8486 12.6213 12.4581C13.7929 11.2865 13.7929 9.38703 12.6213 8.21545C12.2308 7.82493 12.2308 7.19176 12.6213 6.80124ZM10.5 9.33677C11.0523 9.33677 11.5 9.78449 11.5 10.3368V10.3468C11.5 10.8991 11.0523 11.3468 10.5 11.3468C9.94772 11.3468 9.5 10.8991 9.5 10.3468V10.3368C9.5 9.78449 9.94772 9.33677 10.5 9.33677Z"
fill="#F2F2F2"
/>
</svg>
</div>
<span className="text-foreground">{title ?? 'Launch Week 8: Day 1'}</span>
</div>
<span className="text-foreground-light">{d1.steps[0].title}</span>
</div>
</div>
<div className="relative flex items-center justify-center !aspect-video h-[80px] md:h-[80px] gap-2 z-10 rounded overflow-hidden">
<div className="absolute z-10 w-4 h-4 text-white opacity-70">
<svg viewBox="0 0 81 91" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M76.5621 37.998C82.3369 41.3321 82.3369 49.6673 76.5621 53.0014L13.2198 89.5721C7.44504 92.9062 0.226562 88.7386 0.226562 82.0704L0.226566 8.92901C0.226566 2.26085 7.44506 -1.90673 13.2199 1.42735L76.5621 37.998Z"
fill="currentColor"
/>
</svg>
</div>
<Image
src="/images/launchweek/8/lw8-yt-thumb.jpg"
alt="Youtube video thumbnail"
layout="fill"
objectFit="cover"
/>
</div>
</a>
</Link>
</SmallCard>
</div>
)
}
export default LWAnnouncement
@@ -1,7 +1,8 @@
import { Badge } from 'ui'
import { Badge, ExpandableVideo } from 'ui'
import Link from 'next/link'
import CountdownComponent from '../../Countdown'
import Image from 'next/image'
export const PencilSvg = () => (
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -81,10 +82,33 @@ export const HackernewsSvg = () => (
</svg>
)
export const SmallCard = ({ className, children }: { className?: string; children: any }) => (
export const TwitterSpacesSvg = () => (
<svg width="17" height="17" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
fill-rule="evenodd"
clip-rule="evenodd"
d="M4.46228 5.78799C4.46228 3.4802 6.3331 1.60938 8.64089 1.60938C10.9487 1.60938 12.8195 3.4802 12.8195 5.78799V8.17578C12.8195 10.4836 10.9487 12.3544 8.64089 12.3544C6.3331 12.3544 4.46228 10.4836 4.46228 8.17578V5.78799ZM6.85006 8.17578C7.09719 8.17578 7.29777 7.9752 7.29777 7.72807V6.2357C7.29777 5.98857 7.09719 5.78799 6.85006 5.78799C6.60292 5.78799 6.40235 5.98857 6.40235 6.2357V7.72807C6.40235 7.9752 6.60292 8.17578 6.85006 8.17578ZM8.64089 8.77272C8.88803 8.77272 9.0886 8.57215 9.0886 8.32501V5.63876C9.0886 5.39162 8.88803 5.19105 8.64089 5.19105C8.39376 5.19105 8.19319 5.39162 8.19319 5.63876V8.32501C8.19319 8.57215 8.39376 8.77272 8.64089 8.77272ZM10.4317 8.17578C10.6789 8.17578 10.8794 7.9752 10.8794 7.72807V6.2357C10.8794 5.98857 10.6789 5.78799 10.4317 5.78799C10.1846 5.78799 9.98402 5.98857 9.98402 6.2357V7.72807C9.98402 7.9752 10.1846 8.17578 10.4317 8.17578Z"
fill="#8F8F8F"
/>
<path
d="M2.85924 9.24628C3.17502 9.15077 3.50692 9.32985 3.60243 9.64624C4.24654 11.7934 6.23138 13.3992 8.64185 13.3992C11.0523 13.3992 13.0372 11.7934 13.6819 9.64564C13.7768 9.32926 14.1099 9.15137 14.4251 9.24569C14.7402 9.34 14.9205 9.6725 14.825 9.98888C14.0364 12.6172 11.6039 14.5931 8.64185 14.5931C5.67981 14.5931 3.24725 12.6172 2.45928 9.98948C2.36377 9.6737 2.54286 9.34179 2.85924 9.24628Z"
fill="#8F8F8F"
/>
</svg>
)
export const SmallCard = ({
className,
innerClassName,
children,
}: {
className?: string
innerClassName?: string
children: any
}) => (
<div
className={[
'relative p-[1px] bg-gradient-to-b from-[#111718] to-[#1C1C1C60] rounded-2xl overflow-hidden shadow-lg',
'group relative p-[1px] bg-gradient-to-b from-[#11171890] to-[#1C1C1C60] rounded-2xl overflow-hidden shadow-lg',
className,
].join(' ')}
>
@@ -92,6 +116,7 @@ export const SmallCard = ({ className, children }: { className?: string; childre
className={[
'rounded-2xl text-sm text-[#9296AA] p-2 flex flex-row justify-between items-center backdrop-blur-md h-full',
'bg-[#030A0C]',
innerClassName,
].join(' ')}
>
{children}
@@ -128,6 +153,8 @@ export const AccordionHeader = ({
shipped,
publishedAt,
shippable = true,
youtube_id,
videoThumbnail,
}: {
date: string
day: number
@@ -136,61 +163,99 @@ export const AccordionHeader = ({
shipped?: boolean
publishedAt: string
shippable?: boolean
youtube_id?: string
videoThumbnail?: string
}) => (
<div
className={['flex flex-1', shippable && shipped ? 'flex-col sm:flex-row' : 'flex-row'].join(
' '
)}
className={['flex flex-1 justify-between items-stretch scroll-mt-20 text-scale-900'].join(' ')}
>
<div className="flex gap-4 w-full sm:w-auto sm:min-w-[240px] md:min-w-[380px] items-center">
<span className="text-scale-900 text-sm">
<span className="inline sm:hidden md:inline">{weekDay} </span>
{date && (
<span>
<span className="inline sm:hidden md:inline">・</span> {date}
</span>
)}
</span>
</div>
{shippable && shipped && (
<Badge
className={`relative inset-0 !bg-transparent !py-1 !px-4 h-fit backdrop-blur-md ${
shipped
? 'bg-gradient-to-br from-[#05090B] to-[#05090B] !border-[#061517]'
: 'border-[#FFFFFF20]'
}`}
>
<span className="text-[#A0A0A0] text-sm font-normal bg-clip-text bg-gradient-to-r from-[#F4FFFA] to-[#675FA7]">
Shipped
<div
className={[
'flex flex-1',
shippable && shipped ? 'items-stretch' : 'flex-row items-center',
].join(' ')}
>
<div className="flex gap-4 w-full sm:w-auto sm:min-w-[240px] md:min-w-[380px] items-center">
<span className="text-sm">
<span className="inline sm:hidden md:inline">{weekDay} </span>
{date && (
<span>
<span className="inline sm:hidden md:inline">・</span> {date}
</span>
)}
</span>
</Badge>
)}
{shipped && <span className="text-scale-1200 text-lg mt-1 sm:mt-0">{title}</span>}
{shippable && !shipped && (
<span className="text-sm font-normal text-[#A0A0A0] mt-1 sm:mt-0 flex items-center gap-1 md:gap-4">
<svg
width="17"
height="17"
viewBox="0 0 17 17"
fill="none"
xmlns="http://www.w3.org/2000/svg"
</div>
{shippable && shipped && (
<Badge
className={`relative hidden sm:inline-flex inset-0 !bg-[#05090B] border !border-[#061517] !py-1 !px-4 h-fit`}
>
<g opacity="0.5">
<path
fillRule="evenodd"
clipRule="evenodd"
d="M4.32656 7.58047V5.98047C4.32656 3.77133 6.11742 1.98047 8.32656 1.98047C10.5357 1.98047 12.3266 3.77133 12.3266 5.98047V7.58047C13.2102 7.58047 13.9266 8.29681 13.9266 9.18047V13.1805C13.9266 14.0641 13.2102 14.7805 12.3266 14.7805H4.32656C3.44291 14.7805 2.72656 14.0641 2.72656 13.1805V9.18047C2.72656 8.29681 3.44291 7.58047 4.32656 7.58047ZM10.7266 5.98047V7.58047H5.92656V5.98047C5.92656 4.65499 7.00108 3.58047 8.32656 3.58047C9.65205 3.58047 10.7266 4.65499 10.7266 5.98047Z"
fill="#A0A0A0"
/>
</g>
</svg>
<span className="text-[#F4FFFA40] text-sm font-normal bg-clip-text bg-gradient-to-r from-[#F4FFFA] to-[#675FA7]">
Shipped
</span>
</Badge>
)}
{shippable && !shipped && (
<span className="text-sm font-normal text-[#A0A0A0] mt-1 sm:mt-0 flex items-center gap-1 md:gap-4">
<svg
width="17"
height="17"
viewBox="0 0 17 17"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<g opacity="0.5">
<path
fillRule="evenodd"
clipRule="evenodd"
d="M4.32656 7.58047V5.98047C4.32656 3.77133 6.11742 1.98047 8.32656 1.98047C10.5357 1.98047 12.3266 3.77133 12.3266 5.98047V7.58047C13.2102 7.58047 13.9266 8.29681 13.9266 9.18047V13.1805C13.9266 14.0641 13.2102 14.7805 12.3266 14.7805H4.32656C3.44291 14.7805 2.72656 14.0641 2.72656 13.1805V9.18047C2.72656 8.29681 3.44291 7.58047 4.32656 7.58047ZM10.7266 5.98047V7.58047H5.92656V5.98047C5.92656 4.65499 7.00108 3.58047 8.32656 3.58047C9.65205 3.58047 10.7266 4.65499 10.7266 5.98047Z"
fill="#A0A0A0"
/>
</g>
</svg>
{day === 1 && <CountdownComponent date={publishedAt} showCard={false} />}
</span>
{day === 2 && <CountdownComponent date={publishedAt} showCard={false} />}
</span>
)}
</div>
{shippable && shipped && youtube_id && (
<div className="self-end hover:cursor-pointer">
<ExpandableVideo
videoId={youtube_id}
trigger={
<VideoPreviewTrigger
title={`Watch: Day ${day}`}
thumbnail={videoThumbnail ?? '/images/launchweek/8/lw8-yt-thumb.jpg'}
/>
}
/>
</div>
)}
</div>
)
export const VideoPreviewTrigger = ({ title, thumbnail }: { title: string; thumbnail: string }) => (
<div className="flex items-center h-full gap-3 text-xs group/vid text-scale-1100 hover:text-scale-1200 transition-colors">
<span>{title}</span>
<div className="relative h-8 !aspect-video flex items-center justify-center rounded overflow-hidden border border-scale-1000 opacity-80 group-hover/vid:opacity-100 transition-colors">
<div className="absolute z-10 w-2.5 h-2.5 text-scale-1000 opacity-80 group-hover/vid:opacity-100">
<svg viewBox="0 0 81 91" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M76.5621 37.998C82.3369 41.3321 82.3369 49.6673 76.5621 53.0014L13.2198 89.5721C7.44504 92.9062 0.226562 88.7386 0.226562 82.0704L0.226566 8.92901C0.226566 2.26085 7.44506 -1.90673 13.2199 1.42735L76.5621 37.998Z"
fill="currentColor"
/>
</svg>
</div>
<Image
src={thumbnail}
alt="Video thumbnail"
layout="fill"
objectFit="cover"
className="blur-sm"
/>
</div>
</div>
)
export const MultistepSectionHeader = ({ title, blog }: any) => {
return (
<div className="flex flex-1 flex-col sm:flex-row py-8">
@@ -253,6 +318,7 @@ export const SectionButtons = ({
github,
url,
hackernews,
twitter_spaces,
mobileGrid,
}: {
blog?: string
@@ -261,6 +327,7 @@ export const SectionButtons = ({
github?: string
url?: string
hackernews?: string
twitter_spaces?: string
mobileGrid?: boolean
}) => {
return (
@@ -296,7 +363,7 @@ export const SectionButtons = ({
)}
{!!github && (
<ChipLink href={github} target="_blank">
Github
GitHub
<div className="bg-[#313131] rounded-full hidden sm:inline-block p-1 ml-2">
<GithubSvg />
</div>
@@ -312,12 +379,20 @@ export const SectionButtons = ({
)}
{hackernews && (
<ChipLink href={hackernews} target="_blank">
Hackernews
Hacker News
<div className="bg-[#313131] rounded-full hidden sm:inline-block p-1 ml-2">
<HackernewsSvg />
</div>
</ChipLink>
)}
{twitter_spaces && (
<ChipLink href={twitter_spaces} target="_blank" className="col-span-full">
Twitter Spaces
<div className="bg-[#313131] rounded-full hidden sm:inline-block p-1 ml-2">
<TwitterSpacesSvg />
</div>
</ChipLink>
)}
</div>
)
}
@@ -5,7 +5,7 @@ import { useBreakpoint } from 'common/hooks/useBreakpoint'
import days, { WeekDayProps } from './lw8_data'
import SectionContainer from '~/components/Layouts/SectionContainer'
import { AccordionHeader, CartTitle, SectionButtons, StyledArticleBadge } from './components'
import { AccordionHeader, CartTitle, SectionButtons } from './components'
export const defaultEase = [0.25, 0.25, 0, 1]
export const defaultDuratonIn = 0.25
@@ -98,11 +98,11 @@ export default function LW8Releases() {
const publishedSections =
days
.filter(
(day: WeekDayProps) => day.d === 0 || Date.parse(day.publishedAt) <= Date.now() || showAll
(day: WeekDayProps) => Date.parse(day.publishedAt) <= Date.now() || day.shipped || showAll
)
.map((day: WeekDayProps) => day.d.toString()) ?? []
const day1Shipped = Date.parse(day1.publishedAt) <= Date.now()
const day1Shipped = true
const day2Shipped = Date.parse(day2.publishedAt) <= Date.now()
const day3Shipped = Date.parse(day3.publishedAt) <= Date.now()
const day4Shipped = Date.parse(day4.publishedAt) <= Date.now()
@@ -120,7 +120,7 @@ export default function LW8Releases() {
chevronAlign="right"
defaultValue={publishedSections}
>
<div className="border-b border-[#111718]" id="currentDay">
<div className="border-b border-[#111718]">
<Accordion.Item
header={
<AccordionHeader
@@ -138,29 +138,124 @@ export default function LW8Releases() {
id={preRelease.d.toString()}
>
{preRelease.steps.length > 0 && (
<div className="h-[400px] flex flex-col gap-5 lg:flex-row pb-4">
<div className="flex flex-col gap-5 lg:flex-row pb-4">
<motion.div
className={`
relative overflow-hidden group/3 flex-1 flex flex-col items-center lg:items-start justify-between
basis-1/2 lg:basis-1/3 border border-[#111718] rounded-xl h-full bg-no-repeat py-10 lg:py-14 px-8 lg:px-10 text-2xl bg-contain shadow-lg
min-h-[400px] relative overflow-hidden group/pre0 flex-1 flex flex-col items-center justify-between
basis-1/2 lg:basis-1/3 border border-[#111718] rounded-xl lg:h-full bg-no-repeat py-10 lg:py-12 px-8 lg:px-10 text-2xl bg-contain shadow-lg
`}
initial="default"
animate="default"
whileHover="hover"
>
<div
className="inset-0 absolute group-hover/3:scale-105 opacity-60 group-hover/3:opacity-100 w-full h-full -z-10 transition-all duration-500 pointer-events-none"
className="inset-0 absolute group-hover/pre0:scale-105 opacity-10 group-hover/pre0:opacity-100 w-full h-full -z-10 transition-all duration-500 pointer-events-none"
style={{
background: `radial-gradient(100% 100% at 80% 110%, #6F13A450, #030A0C)`,
background: `radial-gradient(100% 100% at 80% 110%, #6F13A490, #030A0C)`,
}}
/>
<div className="flex flex-col items-center lg:items-start gap-2 max-w-[400px] w-full text-center lg:text-left">
<CartTitle>{preRelease.steps[0]?.title}</CartTitle>
<div className="flex flex-col items-center gap-2 min-w-[300px] w-full text-center lg:text-left">
<CartTitle>{preRelease.steps[0].title}</CartTitle>
<p className="text-sm text-slate-900">{preRelease.steps[0]?.description}</p>
</div>
<SectionButtons blog={preRelease.steps[0].blog} />
{preRelease.steps[0]?.bg_layers &&
preRelease.steps[0]?.bg_layers?.map(
(layer, i) =>
!!layer.img && (
<motion.div
className="absolute opacity-90 inset-0 w-full h-full -z-10"
variants={i === 1 ? scaleOpacityVariant : undefined}
>
<Image
src={
!!layer.mobileImg && isTablet
? (layer.mobileImg as any)
: layer.img
}
className={`
absolute opacity-90
w-full h-full -z-10 transition-all duration-300
`}
layout="fill"
objectPosition="100%"
objectFit="cover"
/>
</motion.div>
)
)}
</motion.div>
<motion.div
className={`
min-h-[400px] relative overflow-hidden group/pre1 flex-1 flex flex-col items-center justify-between
basis-1/2 lg:basis-1/3 border border-[#111718] rounded-xl lg:h-full bg-no-repeat py-10 lg:py-12 px-8 lg:px-10 text-2xl bg-cover shadow-lg
`}
initial="default"
animate="default"
whileHover="hover"
>
<div
className="inset-0 absolute group-hover/pre1:scale-105 opacity-60 group-hover/pre1:opacity-100 w-full h-full -z-10 transition-all duration-500 pointer-events-none"
style={{
background: `radial-gradient(100% 100% at 80% 110%, #6F13A450, #030A0C)`,
}}
/>
<div className="flex flex-col items-center gap-2 min-w-[300px] w-full text-center lg:text-left">
<CartTitle>{preRelease.steps[1].title}</CartTitle>
<p className="text-sm text-slate-900">{preRelease.steps[1]?.description}</p>
</div>
<SectionButtons
github={preRelease.steps[1].github}
hackernews={preRelease.steps[1].hackernews}
/>
{preRelease.steps[1]?.bg_layers &&
preRelease.steps[1]?.bg_layers?.map(
(layer, i) =>
!!layer.img && (
<motion.div
className="absolute opacity-90 inset-0 w-full h-full -z-10"
variants={i === 1 ? scaleOpacityVariant : undefined}
>
<Image
src={
!!layer.mobileImg && isTablet
? (layer.mobileImg as any)
: layer.img
}
className={`
absolute opacity-90
w-full h-full -z-10 transition-all duration-300
`}
layout="fill"
objectPosition="20% 50%"
objectFit="cover"
/>
</motion.div>
)
)}
</motion.div>
<motion.div
className={`
min-h-[400px] relative overflow-hidden group/pre2 flex-1 flex flex-col items-center justify-between
basis-1/2 lg:basis-1/3 border border-[#111718] rounded-xl lg:h-full bg-no-repeat py-10 lg:py-12 px-8 lg:px-10 text-2xl bg-contain shadow-lg
`}
initial="default"
animate="default"
whileHover="hover"
>
<div
className="inset-0 absolute group-hover/pre2:scale-105 opacity-60 group-hover/pre2:opacity-100 w-full h-full -z-10 transition-all duration-500 pointer-events-none"
style={{
background: `radial-gradient(100% 100% at 80% 110%, #6F13A450, #030A0C)`,
}}
/>
<div className="flex flex-col items-center gap-2 w-full text-center">
<CartTitle>{preRelease.steps[2].title}</CartTitle>
<p className="text-sm text-slate-900">{preRelease.steps[2]?.description}</p>
</div>
<SectionButtons blog={preRelease.steps[2].blog} />
{preRelease.steps[2]?.bg_layers &&
preRelease.steps[2]?.bg_layers?.map(
(layer, i) =>
!!layer.img && (
<motion.div
@@ -179,7 +274,7 @@ export default function LW8Releases() {
`}
layout="fill"
objectPosition={
isTablet ? '50%' : isDesktop ? '200% 50%' : '100% 50%'
isTablet ? '50%' : isDesktop ? '100% 50%' : '30% 50%'
}
objectFit="contain"
/>
@@ -191,7 +286,7 @@ export default function LW8Releases() {
)}
</Accordion.Item>
</div>
<div className="border-b border-[#111718]">
<div className="border-b border-[#111718] scroll-mt-16" id="today">
<Accordion.Item
header={
<AccordionHeader
@@ -201,12 +296,70 @@ export default function LW8Releases() {
title={day1.title}
shipped={day1Shipped}
publishedAt={day1.publishedAt}
youtube_id={day1.youtube_id}
videoThumbnail={day1.videoThumbnail}
/>
}
disabled={!day1Shipped}
className="h-[79px]"
disabled={true}
className="h-[79px] hover:cursor-default"
id={day1.d.toString()}
></Accordion.Item>
>
{day1.steps.length > 0 && (
<div className="flex flex-col gap-5 lg:flex-row pb-4">
<motion.div
className={`
min-h-[400px] relative overflow-hidden group/d1 flex-1 flex flex-col items-center lg:items-start justify-between
basis-1/2 lg:basis-1/3 border border-[#111718] rounded-xl lg:h-full bg-no-repeat py-10 lg:py-12 px-8 lg:px-10 text-2xl bg-contain shadow-lg
`}
initial="default"
animate="default"
whileHover="hover"
>
<div
className="inset-0 absolute group-hover/d1:scale-105 opacity-60 group-hover/d1:opacity-100 w-full h-full -z-10 transition-all duration-500 pointer-events-none"
style={{
background: `radial-gradient(100% 100% at 80% 80%, #6F13A450, #030A0C)`,
}}
/>
<div className="flex flex-col items-center lg:items-start gap-2 min-w-[300px] w-full text-center lg:text-left">
<CartTitle>{day1.steps[0].title}</CartTitle>
<p className="text-sm text-slate-900">{day1.steps[0]?.description}</p>
</div>
<SectionButtons
blog={day1.steps[0].blog}
// hackernews={day1.steps[0].hackernews}
// twitter_spaces={day1.steps[0].twitter_spaces}
// mobileGrid
/>
{day1.steps[0]?.bg_layers &&
day1.steps[0]?.bg_layers?.map(
(layer, i) =>
!!layer.img && (
<motion.div
className="absolute opacity-90 inset-0 w-full h-full -z-10"
variants={i === 1 ? scaleOpacityVariant : undefined}
>
<Image
src={
!!layer.mobileImg && isTablet
? (layer.mobileImg as any)
: layer.img
}
className={`
absolute opacity-90
w-full h-full -z-10 transition-all duration-300
`}
layout="fill"
objectPosition={isTablet ? '50%' : '90% 50%'}
objectFit="contain"
/>
</motion.div>
)
)}
</motion.div>
</div>
)}
</Accordion.Item>
</div>
<div className="border-b border-[#111718]">
<Accordion.Item
@@ -1,6 +1,11 @@
const images = {
yt_thumbnail: '/images/launchweek/8/lw8-yt-thumb.jpg',
day_1_thumb: '/images/launchweek/8/day1/day-01-thumb.jpg',
'00-stay-remote': '/images/launchweek/8/day0/remote.png',
'00-pg-server': '/images/launchweek/8/day0/pg-server.png',
'00-constellation': '/images/launchweek/8/day0/constellation-pre.svg',
'00-constellation-mobile': '/images/launchweek/8/day0/constellation.svg',
'01-hugging': '/images/launchweek/8/day1/hugging.svg',
}
export interface StepProps {
@@ -16,6 +21,7 @@ export interface StepProps {
thumb?: string
url?: string
video?: string
twitter_spaces?: string
className?: string
hideInBlog?: boolean
bg_layers?: {
@@ -34,8 +40,10 @@ export interface WeekDayProps {
d: number
dd: string
youtube_id: string
videoThumbnail?: string
blogpost: string
docs: string
twitter_spaces?: string
steps: StepProps[] | []
}
@@ -54,6 +62,19 @@ const days: WeekDayProps[] = [
blogpost: '',
docs: '',
steps: [
{
title: "Why we'll stay remote",
blog: '/blog/why-supabase-remote',
bg_layers: [{ img: images['00-stay-remote'] }],
steps: [],
},
{
title: 'Postgres Language Server',
github: 'https://github.com/supabase/postgres_lsp',
hackernews: 'https://news.ycombinator.com/item?id=37020610',
bg_layers: [{ img: images['00-pg-server'] }],
steps: [],
},
{
title:
'Coding the stars - an interactive constellation with Three.js and React Three Fiber',
@@ -67,16 +88,27 @@ const days: WeekDayProps[] = [
},
{
title: '',
shipped: false,
shipped: true,
date: '07 Aug',
publishedAt: '2023-08-07T09:00:00.000-07:00',
description: '',
d: 1,
dd: 'Mon',
youtube_id: '',
youtube_id: 'RJccSbJ9Go4',
videoThumbnail: images.day_1_thumb,
blogpost: '',
docs: '',
steps: [],
twitter_spaces: 'https://twitter.com/i/spaces/1DXGyvjkeEeJM',
steps: [
{
title: 'Huggingface now supported in Supabase',
blog: '/blog/hugging-face-supabase',
hackernews: '/',
twitter_spaces: 'https://twitter.com/i/spaces/1DXGyvjkeEeJM',
bg_layers: [{ img: images['01-hugging'] }],
steps: [],
},
],
},
{
title: '',
+1 -1
View File
@@ -198,7 +198,7 @@ const Nav = () => {
return (
<>
<Announcement link="/launch-week">
<Announcement link="/launch-week#today">
<LW8CountdownBanner />
</Announcement>
<div className="sticky top-0 z-40 transform" style={{ transform: 'translate3d(0,0,999px)' }}>
+6 -2
View File
@@ -14,6 +14,7 @@ import SectionContainer from '~/components/Layouts/SectionContainer'
import { LaunchWeekLogoHeader } from '~/components/LaunchWeek/8/LaunchWeekLogoHeader'
import { Meetup } from '~/components/LaunchWeek/8/LW8Meetups'
import LW8CalloutsSection from '~/components/LaunchWeek/8/LW8CalloutsSection'
import LWAnnouncement from '~/components/LaunchWeek/8/Releases/LWAnnouncement'
import { useTheme } from 'common/Providers'
@@ -138,11 +139,14 @@ export default function TicketHome({ users, meetups }: Props) {
<div className="-mt-[65px]">
<div className="relative">
<div className="relative z-10">
<SectionContainer className="relative flex flex-col justify-around items-center min-h-[600px] lg:min-h-[600px] !py-4 md:!py-8 lg:!pb-0 gap-2 md:gap-4 !px-0 !mx-auto">
<SectionContainer className="relative flex flex-col justify-around items-center min-h-[500px] !py-4 md:!py-8 lg:!pb-0 gap-2 md:gap-4 !px-0 !mx-auto">
<div className="absolute bottom-0 z-10 w-full justify-center flex items-end">
<LaunchWeekLogoHeader />
</div>
<div className="absolute inset-0 z-0">
<div className="absolute inset-0 z-0 flex items-center justify-center">
<div className="absolute z-40 w-full flex justify-center -translate-y-8 px-6">
<LWAnnouncement />
</div>
<AnimatedParticles />
<Image
src="/images/launchweek/8/stars.svg"
+9 -9
View File
@@ -5,63 +5,63 @@
<link>https://supabase.com</link>
<description>Latest news from Supabase</description>
<language>en</language>
<lastBuildDate>Mon, 05 Jun 2023 16:00:00 GMT</lastBuildDate>
<lastBuildDate>Mon, 05 Jun 2023 22:00:00 GMT</lastBuildDate>
<atom:link href="https://supabase.com/rss.xml" rel="self" type="application/rss+xml"/>
<item>
<guid>https://supabase.com/customers/berriai</guid>
<title>Berri AI Boosts Productivity by Migrating from AWS RDS to Supabase with pgvector</title>
<link>https://supabase.com/customers/berriai</link>
<description>Learn how Berri AI overcame challenges with self-hosting their vector database on AWS RDS and successfully migrated to Supabase.</description>
<pubDate>Mon, 05 Jun 2023 16:00:00 GMT</pubDate>
<pubDate>Mon, 05 Jun 2023 22:00:00 GMT</pubDate>
</item>
<item>
<guid>https://supabase.com/customers/markprompt</guid>
<title>Markprompt and Supabase - GDPR-Compliant AI Chatbots for Docs and Websites.</title>
<link>https://supabase.com/customers/markprompt</link>
<description>AI-powered chatbot platform, Markprompt, empowers developers to deliver efficient and GDPR-compliant prompt experiences on top of their content, by leveraging Supabase&apos;s secure and privacy-focused database and authentication solutions.</description>
<pubDate>Tue, 16 May 2023 16:00:00 GMT</pubDate>
<pubDate>Tue, 16 May 2023 22:00:00 GMT</pubDate>
</item>
<item>
<guid>https://supabase.com/customers/mendableai</guid>
<title>Mendable switches from Pinecone to Supabase for PostgreSQL vector embeddings.</title>
<link>https://supabase.com/customers/mendableai</link>
<description>How Mendable boosts efficiency and accuracy of chat powered search for documentation using Supabase with pgvector.</description>
<pubDate>Thu, 04 May 2023 16:00:00 GMT</pubDate>
<pubDate>Thu, 04 May 2023 22:00:00 GMT</pubDate>
</item>
<item>
<guid>https://supabase.com/customers/happyteams</guid>
<title>HappyTeams unlocks better performance and reduces cost with Supabase.</title>
<link>https://supabase.com/customers/happyteams</link>
<description>How a bootstrapped startup migrated from Heroku to Supabase in 30 minutes and never looked back.</description>
<pubDate>Wed, 15 Feb 2023 16:00:00 GMT</pubDate>
<pubDate>Wed, 15 Feb 2023 23:00:00 GMT</pubDate>
</item>
<item>
<guid>https://supabase.com/customers/xendit</guid>
<title>Xendit use Supabase and create a full solution shipped to production in less than one week.</title>
<link>https://supabase.com/customers/xendit</link>
<description>As a payment processor, Xendit are responsible for verifying that all transactions are legal.</description>
<pubDate>Mon, 13 Feb 2023 16:00:00 GMT</pubDate>
<pubDate>Mon, 13 Feb 2023 23:00:00 GMT</pubDate>
</item>
<item>
<guid>https://supabase.com/customers/replenysh</guid>
<title>Replenysh uses Supabase to implement OTP in less than 24 hours.</title>
<link>https://supabase.com/customers/replenysh</link>
<description>With Supabase, Replenysh gets a slick auth experience, reduces DevOps overhead, and continues to scale with Postgres.</description>
<pubDate>Mon, 13 Feb 2023 16:00:00 GMT</pubDate>
<pubDate>Mon, 13 Feb 2023 23:00:00 GMT</pubDate>
</item>
<item>
<guid>https://supabase.com/customers/mobbin</guid>
<title>How Mobbin migrated 200,000 users from Firebase for a better authentication experience.</title>
<link>https://supabase.com/customers/mobbin</link>
<description>Mobbin helps over 200,000 creators globally search and view the latest design patterns from well-known apps.</description>
<pubDate>Mon, 13 Feb 2023 16:00:00 GMT</pubDate>
<pubDate>Mon, 13 Feb 2023 23:00:00 GMT</pubDate>
</item>
<item>
<guid>https://supabase.com/customers/epsilon3</guid>
<title>Epsilon3 digitize paper-based procedures in the space industry using telemetry data, simplifying testing and operations.</title>
<link>https://supabase.com/customers/epsilon3</link>
<description>Epsilon3 uses Supabase to help teams execute secure and reliable operations in an industry where project spend runs into the billions.</description>
<pubDate>Mon, 13 Feb 2023 16:00:00 GMT</pubDate>
<pubDate>Mon, 13 Feb 2023 23:00:00 GMT</pubDate>
</item>
</channel>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 880 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Loaded 100 of 190 files, more files were not shown because too many files have changed in this diff. Show more