Products page (#22)

This commit is contained in:
Fede Álvarez 2022-04-08 14:22:05 +02:00 committed by GitHub
parent 6ec1d6b45d
commit f72e494338
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
44 changed files with 1307 additions and 20 deletions

View File

@ -57,7 +57,7 @@
"next-compose-plugins": "^2.2.1",
"next-sitemap": "^2.5.19",
"prettier": "2.6.2",
"sass": "1.49.11",
"sass": "1.50.0",
"stylelint": "^14.6.1",
"stylelint-config-prettier": "^9.0.3",
"stylelint-config-standard": "^25.0.0",

View File

@ -1,3 +1,3 @@
<svg width="23" height="23" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.75817 23H23V3.75817l-2.5233-.01074.0107 14.93607L1.80392 0 0 1.80392 18.6835 20.4874l-14.93607-.0107L3.75817 23Z" fill="#FBFBFB" />
</svg>
<path d="M3.758 23H23V3.758l-2.523-.01.01 14.936L1.804 0 0 1.804l18.683 18.683-14.936-.01L3.758 23Z" fill="var(--color-white)" />
</svg>

Before

Width:  |  Height:  |  Size: 231 B

After

Width:  |  Height:  |  Size: 216 B

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 20 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 8.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@ -0,0 +1,3 @@
<svg width="237" height="68" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M186.366 24.009h-13.255v29.835h4.316V28.237h8.939a11.51 11.51 0 0 1 8.041 3.268 11.044 11.044 0 0 1 3.336 7.878v14.463h4.316V39.382c-.005-4.076-1.659-7.984-4.601-10.866-2.943-2.883-6.931-4.504-11.092-4.508M78.486 36.332v17.513h24.674v-4.204H82.776v-9.109h20.384v-4.204l-24.674.004ZM103.118 24.01H78.486v4.201h24.632V24.01ZM128.98 28.014a15.394 15.394 0 0 0-4.633-2.945 12.927 12.927 0 0 0-4.805-1.02h-8.376v4.126h7.522a10.808 10.808 0 0 1 4.536.924 11.113 11.113 0 0 1 3.456 2.435c.949 1.003 1.7 2.17 2.214 3.441a10.45 10.45 0 0 1 .567 6.267 10.609 10.609 0 0 1-3.141 5.486 11.313 11.313 0 0 1-3.533 2.204c-1.305.52-2.7.788-4.109.788h-.689v4.204h1.542a12.91 12.91 0 0 0 5.254-1.143 15.28 15.28 0 0 0 4.571-3.123 15.736 15.736 0 0 0 3.247-4.709 14.887 14.887 0 0 0-.145-12.226 15.88 15.88 0 0 0-3.488-4.704M165.25 24.01h-24.631v4.201h24.631V24.01ZM140.619 36.332v17.513h24.67v-4.204h-20.38v-9.109h20.38v-4.204l-24.67.004ZM39.213 42.611V33.53l9.556 9.71-3.982 4.575-5.574-5.203Zm16.198.547 9.477-9.63v9.137l-5.065 5.145-4.412-4.652Zm-1.263-24.932 9.922 10.082-9.922 10.084V18.226Zm-14.172 10.04 9.965-10.127V38.39l-9.965-10.126ZM52.002 10 35 27.277V44.49l10.094 9.42 4.847-5.57v9.745h4.207V47.997l5.616 5.92 9.326-9.478V27.363L52.002 10Z" fill="#FBFBFB" />
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,4 @@
<svg width="237" height="68" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M57.808 15c.88.256 1.804.423 2.651.78 3.075 1.292 5.158 4.667 5.002 7.986-.111 2.384-.769 4.556-2.495 6.293-1.627 1.638-3.688 2.362-5.916 2.696-2.785.412-5.548.111-8.389-.312-.479 1.448-.969 2.907-1.47 4.433.456.123.89.212 1.292.368 1.604.612 3.22 1.225 4.802 1.882.323.134.5.134.768-.1 2.106-1.838 4.512-2.194 7.052-1.147s3.944 3.052 4.145 5.77c.278 3.853-2.385 6.961-6.161 7.362-3.398.356-6.707-2.172-7.286-5.57-.045-.256-.134-.523-.1-.768.133-.78-.279-1.147-.925-1.47-1.593-.802-3.209-1.526-4.991-1.972-.423 1.159-.802 2.317-1.259 3.442-.68 1.66-1.415 3.297-2.117 4.934-.958 2.217-2.707 3.376-5.013 3.866-4.467.958-9.013-1.805-10.104-6.171-1.304-5.213 1.67-10.003 6.94-11.183 2.563-.58 5.125-.457 7.698-.167.602.067 1.215.167 1.894.267.48-1.46.958-2.918 1.46-4.433-.602-.178-1.192-.3-1.738-.501-1.47-.557-2.93-1.148-4.379-1.75-.29-.122-.456-.155-.724.079-1.983 1.76-4.278 2.172-6.74 1.28-2.484-.89-3.988-2.728-4.423-5.323-.445-2.652.457-4.88 2.574-6.528 2.05-1.592 4.378-1.915 6.762-.869 2.563 1.125 3.966 3.153 4.133 5.96.034.623.234.957.77 1.236 1.626.858 3.308 1.57 5.146 2.072.256-.724.49-1.437.769-2.128.913-2.194 1.827-4.4 2.796-6.583.97-2.183 2.83-3.185 5.08-3.597.156-.034.323-.078.48-.123C56.47 15 57.138 15 57.807 15Zm-7.832 13.166c1.426.089 2.64.2 3.855.223 1.916.033 3.82-.056 5.648-.724 2.094-.78 3.141-2.384 2.852-4.59-.301-2.227-1.204-4.232-2.74-5.892-1.36-1.47-2.886-1.47-4.323-.067-.947.925-1.582 2.05-2.084 3.253-1.047 2.528-2.094 5.079-3.208 7.797Zm-7.754 12.341c-.178-.044-.29-.089-.39-.089-1.794-.067-3.587-.2-5.38-.178-1.471.022-2.92.3-4.245.969-1.248.624-2.062 1.615-2.15 3.019-.19 3.096 1.058 5.658 3.32 7.696.946.847 1.971.78 3.018.056.992-.69 1.738-1.626 2.24-2.707.88-1.916 1.682-3.854 2.484-5.803.39-.958.724-1.95 1.103-2.963Z" fill="#8E8E8E" />
<path d="M210.002 50.764h-5.582v-.735c0-4.366.012-8.732-.011-13.11 0-.69-.067-1.414-.256-2.083-.624-2.239-2.662-3.575-5.158-3.453-3.019.145-4.913 2.15-4.924 5.247-.011 4.455 0 8.921 0 13.377v.713h-5.559V27.574h5.537v2.54c.066.044.122.089.189.133.045-.111.089-.234.145-.334.947-1.626 2.451-2.417 4.244-2.718 2.574-.434 5.036-.134 7.309 1.203 2.306 1.348 3.487 3.453 3.921 6.026.022.156.089.312.134.468.011 5.28.011 10.57.011 15.872ZM163.387 38.637c.122-1.236.145-2.885.479-4.456.824-3.842 3.353-6.048 7.163-6.838 2.317-.48 4.646-.468 6.952.11 3.832.959 6.15 3.398 6.807 7.263a25.51 25.51 0 0 1-.011 8.677c-.646 3.765-2.897 6.193-6.64 7.162-2.785.713-5.604.702-8.344-.156-3.61-1.125-5.571-3.709-6.117-7.373-.189-1.326-.189-2.674-.289-4.39Zm15.719.39h-.067c0-1.003.034-2.005-.011-2.996-.122-2.596-1.849-4.378-4.4-4.578-2.574-.2-4.713 1.27-4.98 3.854-.256 2.461-.145 4.978-.011 7.474.078 1.403.88 2.595 2.127 3.341 2.942 1.771 6.607.078 7.13-3.341.201-1.226.145-2.495.212-3.754ZM131.127 43.925h1.437c1.003 0 2.005.034 3.008-.01.746-.034 1.292.022 1.638.868.189.457.724.858 1.192 1.114 1.682.924 3.487 1.07 5.325.535.891-.268 1.459-.87 1.537-1.827.078-.902-.356-1.704-1.303-2.039-1.092-.39-2.239-.623-3.376-.89-1.025-.246-2.061-.446-3.086-.691-4.991-1.203-6.472-5.425-5.57-8.99.524-2.07 2.039-3.24 3.955-3.964 2.328-.88 4.735-1.003 7.186-.724 1.448.167 2.841.512 4.099 1.303 1.883 1.192 2.73 2.985 2.997 5.157-.178.011-.323.033-.468.033-1.637 0-3.264 0-4.902.012-.311 0-.501-.067-.623-.38-.357-.846-1.014-1.403-1.883-1.692-1.226-.412-2.451-.379-3.632.178-.802.379-1.27 1.036-1.259 1.938.011.913.524 1.57 1.37 1.827 1.326.4 2.685.69 4.044 1.002.992.234 1.995.412 2.986.68 3.22.857 5.114 3.263 5.158 6.583.011.88-.044 1.793-.278 2.628-.513 1.883-1.85 3.075-3.666 3.643-3.899 1.236-7.798 1.18-11.597-.39-2.306-.947-3.799-2.662-4.222-5.18-.022-.111-.045-.222-.045-.323-.022-.111-.022-.211-.022-.4ZM109.091 43.928h.491c1.526 0 3.041.011 4.567-.011.357 0 .568.078.702.446.267.735.824 1.236 1.493 1.581 1.671.858 3.431 1.025 5.236.49 1.003-.29 1.515-.958 1.571-1.86.055-.958-.323-1.67-1.315-2.027-1.092-.39-2.239-.624-3.375-.891-1.17-.279-2.362-.49-3.521-.813-4.155-1.148-6.417-5.38-4.991-9.312.624-1.726 1.939-2.751 3.576-3.42 2.384-.969 4.869-1.091 7.386-.824 1.438.156 2.808.501 4.056 1.259 1.927 1.18 2.785 2.985 3.063 5.19-.189.023-.334.045-.479.045h-4.902c-.278 0-.467-.033-.601-.345-.424-.992-1.192-1.57-2.228-1.838-1.036-.268-2.061-.234-3.053.167-.913.367-1.493 1.025-1.493 2.06 0 .88.535 1.593 1.582 1.916 1.092.334 2.228.535 3.354.802 1.47.357 2.985.613 4.411 1.136 2.451.892 3.777 2.763 4.145 5.313.167 1.148.156 2.295-.156 3.409-.58 2.06-2.017 3.308-4 3.887-3.854 1.114-7.709 1.07-11.43-.534-2.406-1.036-3.855-2.874-4.156-5.536-.011-.056 0-.112 0-.167l.067-.123ZM84.447 50.688v-18.2H80.29v-5.035h4.156v-.624c.033-1.492-.045-3.007.11-4.489.28-2.84 1.984-4.488 4.825-4.644 2.016-.112 4.044-.034 6.071-.045.056 0 .1.033.179.056v4.945c-.736 0-1.47-.01-2.206 0-.613.011-1.226 0-1.827.078-.836.112-1.382.646-1.437 1.46-.078 1.08-.023 2.171-.023 3.319h5.482v4.934h-5.537v18.234c-1.894.011-3.721.011-5.638.011ZM160.044 27.586v23.157h-5.592c-.067-7.708-.145-15.416-.212-23.157h5.804ZM105.67 50.754h-5.581c-.067-7.719-.134-15.427-.212-23.168h5.782c.011 7.697.011 15.405.011 23.168ZM160.056 17.695v4.924h-5.804v-4.924h5.804ZM105.67 22.652h-5.503c-.067 0-.145-.022-.245-.045v-4.912h5.748v4.957Z" fill="#FBFBFB" />
</svg>

After

Width:  |  Height:  |  Size: 5.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,7 @@
<svg width="237" height="68" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M191.384 52.73c-.89-.467-1.109-1.208-1.105-2.19.034-8.063.017-16.132.021-24.196 0-1.385 1.101-2.14 2.21-1.524.528.29.684.644.793 1.823.755-.286 1.321-.859 2.042-1.188 5.883-2.673 12.733.472 14.428 6.582.042.152.017.367.232.443v4.872c-.32.097-.261.408-.333.631a10.377 10.377 0 0 1-11.78 7.008c-1.67-.312-3.15-1.02-4.622-2.093v.935c0 2.231-.043 4.463.012 6.69.026 1.05-.253 1.816-1.278 2.212-.215-.005-.417-.005-.62-.005Zm1.869-17.905c0 .863.038 1.727-.013 2.586-.042.699.165 1.255.591 1.802 1.843 2.388 4.93 3.643 8.106 2.678 3.007-.913 5.162-3.727 5.251-6.834.088-3.045-1.755-5.85-4.627-7.041a7.365 7.365 0 0 0-8.182 1.773c-.738.787-1.329 1.63-1.152 2.83.11.72.026 1.47.026 2.206Z" fill="#FBFBFB" />
<path d="M183.139 38.592c-.076-1.386.148-3.163-.11-4.932-.464-3.192-3.003-5.49-5.828-6.05-3.075-.611-6.04.707-7.736 3.38-2.733 4.304-.172 10.07 4.889 11.067 1.784.354 3.416-.008 4.993-.813 1.156-.589 2.337-.046 2.409 1.108.05.825-.464 1.305-1.139 1.642-2.78 1.382-5.643 1.6-8.558.501-2.585-.976-4.475-2.758-5.689-5.225-.591-1.205-.89-2.502-.991-3.841-.013-.19.067-.442-.186-.53-.24-.085-.346.143-.498.273-1.754 1.537-3.34 3.251-5.162 4.717-.941.758-1.725 1.7-2.59 2.551-3.926 3.879-9.641 3.55-13.42.055-3.117-2.88-4.201-6.556-2.919-10.662 1.27-4.06 4.142-6.515 8.355-7.188 2.995-.48 5.753.273 8.136 2.215.523.425.738.96.578 1.62-.139.573-.536.906-1.092 1.054-.477.126-.911.008-1.291-.291-2.864-2.228-5.926-2.375-8.933-.493-2.016 1.26-3.079 3.28-3.227 5.715-.265 4.362 3.425 7.824 7.402 7.74 1.62-.034 3.012-.67 4.184-1.769 4.011-3.773 8.001-7.567 12.021-11.332 1.438-1.348 2.788-2.788 4.635-3.66 6.352-2.99 14.019 1.277 14.652 8.267.299 3.335.076 6.696.093 10.043.004.872-.721 1.495-1.54 1.474-.666-.013-1.438-.846-1.446-1.596 0-1.558.008-3.103.008-5.04Z" fill="#8E8E8E" />
<path d="M65.467 35.332c0-2.636-.008-5.276.005-7.913.004-1.377.86-1.979 2.16-1.495.353.131.514-.054.733-.197 1.856-1.217 3.85-1.533 5.96-.847 1.058.346 2.028.906 2.775 1.765.295.34.464.353.805.004 2.94-3.015 7.76-2.7 10.262.678.797 1.074 1.299 2.29 1.303 3.65.013 4.212.013 8.423 0 12.63-.004.775-.493 1.314-1.206 1.44-.7.122-1.417-.261-1.637-.935-.093-.278-.088-.598-.088-.897-.005-3.908 0-7.811-.009-11.72-.008-3.128-3.104-4.939-5.786-3.351-1.312.775-1.814 2.042-1.81 3.541.013 3.908.009 7.812.009 11.72 0 1.057-.675 1.692-1.675 1.583-.793-.084-1.257-.674-1.26-1.609-.005-3.933-.013-7.862 0-11.795.004-1.608-.63-2.846-2.042-3.634-1.417-.787-2.847-.573-4.083.329-.995.724-1.467 1.835-1.467 3.111.008 3.984.008 7.964.004 11.947 0 1.293-.903 2.026-2.008 1.63-.721-.261-.953-.846-.953-1.562.008-2.696.008-5.382.008-8.073ZM54.526 42.075c1.552.038 2.943-.438 4.226-1.288.894-.594 1.796-.518 2.281.206.506.754.308 1.625-.582 2.207-3.707 2.425-7.558 2.598-11.328.32-3.7-2.236-5.365-5.685-4.922-9.976.645-6.262 6.621-10.267 12.45-9 1.788.388 3.42 1.142 4.804 2.384 1.13 1.015 1.16 1.81.089 2.872-3.556 3.537-7.094 7.087-10.662 10.608-.43.425-.359.572.134.817 1.11.556 2.261.897 3.51.85Zm-6.217-3.381c.046-.017.1-.021.135-.055 3.273-3.26 6.537-6.527 9.818-9.778.414-.413.118-.51-.194-.686-2.906-1.605-6.65-1.011-8.95 1.423-2.37 2.51-2.695 6.207-.81 9.096ZM128.112 45.073c-1.244 0-2.492.004-3.737 0-1.008-.004-1.661-.581-1.674-1.466-.013-.897.616-1.52 1.624-1.528 2.438-.017 4.88-.005 7.317-.009 1.797-.004 2.885-.951 2.957-2.661.08-1.95-.759-3.011-2.585-3.163-1.363-.113-2.742-.059-4.113-.059-2.054.005-3.884-.543-5.17-2.24-2.236-2.952-1.017-7.323 2.42-8.801.916-.396 1.869-.619 2.885-.602 2.16.03 4.319.008 6.483.008 1.054 0 1.771.594 1.775 1.457 0 .88-.67 1.491-1.746 1.504-2.235.025-4.47.004-6.71.02-2.366.017-3.825 2.022-2.994 4.123.468 1.184 1.518 1.512 2.644 1.563 1.371.059 2.746-.005 4.116.017 1.919.033 3.653.606 4.804 2.198 1.35 1.87 1.51 3.929.688 6.106-.966 2.564-2.995 3.39-5.479 3.52-1.164.06-2.336.009-3.505.013 0-.004 0 0 0 0ZM107.336 32.233c-.379-2.21-1.619-3.747-3.758-4.425-1.969-.624-3.775-.169-5.293 1.238-1.117 1.031-1.649 2.345-1.653 3.857-.013 3.5-.004 6.999-.009 10.498 0 .952-.434 1.49-1.257 1.621-.847.135-1.577-.395-1.682-1.246a6.865 6.865 0 0 1-.038-.834c-.005-5.12-.005-10.245 0-15.366 0-1.255.56-1.87 1.607-1.832.32.013.65.08.818.329.375.551.658.379 1.118.067 2.745-1.865 5.622-2.06 8.612-.585 2.4 1.187 3.787 3.09 4.31 5.714.135.674.237 1.33.237 2.005.008 2.939.008 5.883 0 8.822-.005.623-.051 1.25-.114 1.874-.059.564-.755 1.154-1.405 1.133-.582-.022-1.316-.367-1.408-1.302.008-3.764.016-7.53.021-11.298-.009-.084-.072-.177-.106-.27ZM27.006 26.84v-9.13c0-1.12.515-1.722 1.464-1.71.949.009 1.463.607 1.463 1.727 0 5.782-.008 11.563.005 17.345.008 2.834 1.265 4.948 3.783 6.291a5.983 5.983 0 0 0 2.847.712c1.906-.004 3.813-.004 5.719 0 1.067.004 1.813.644 1.81 1.524-.005.872-.714 1.483-1.776 1.466-2.21-.03-4.42.097-6.626-.076-4.686-.366-8.65-4.611-8.684-9.323-.021-2.944-.005-5.883-.005-8.826ZM114.489 34.911c0-2.661-.004-5.327.005-7.988 0-.324.012-.665.097-.977.194-.695.788-1.087 1.488-1.045a1.463 1.463 0 0 1 1.363 1.218c.033.197.029.404.029.606.004 5.504.004 11.008.004 16.507 0 1.394-.919 2.169-2.058 1.718-.746-.294-.928-.943-.928-1.671V34.91Z" fill="#FBFBFB" />
<path d="M118.002 21.264c-.746-.067-1.045-.598-1.412-.99-.426-.459-.73-.522-1.135-.004a5.002 5.002 0 0 1-.818.788c-.405.324-.839.362-1.219-.047-.354-.387-.401-.812-.013-1.212.633-.653 1.261-1.31 1.915-1.942.43-.417.907-.379 1.371-.017.755.586 1.139 1.512 1.953 2.06.274.185.257.593.059.905-.186.29-.443.476-.701.459Z" fill="#8E8E8E" />
<path d="M107.335 32.234c.034.093.097.186.097.274-.004 3.765-.013 7.534-.021 11.298-.026-.122-.076-.24-.076-.358-.008-3.735-.004-7.474 0-11.214Z" fill="#FBFBFB" />
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -0,0 +1,3 @@
<svg width="237" height="68" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M120.276 17.065c0-3.704-2.742-5.699-5.996-5.699h-7.85v18.135h4.014v-6.168h3.405c4.165.004 6.423-2.846 6.427-6.268Zm-4.194.261c0 1.556-.988 2.593-2.338 2.593h-3.328v-5.131h3.328c1.346 0 2.338.88 2.338 2.538Zm14.66 1.838v-3.99h-1.22c-1.396 0-2.746.622-3.429 1.813v-1.813h-3.787v14.327h3.913v-7.616c0-1.995 1.143-2.746 3.075-2.746.533 0 1.448.025 1.448.025Zm7.952 10.519c4.067 0 6.964-2.488 6.964-7.333 0-4.87-2.897-7.358-6.964-7.358-4.039 0-6.935 2.488-6.935 7.358 0 4.848 2.896 7.333 6.935 7.333Zm0-11.452c1.704 0 2.973 1.165 2.973 4.119 0 2.928-1.269 4.094-2.973 4.094-1.651 0-2.945-1.166-2.945-4.094 0-2.95 1.294-4.119 2.945-4.119Zm16.616 11.22v-3.315s-.89.079-1.704.079c-.838 0-1.09-.233-1.09-1.112v-6.715h2.973v-3.21h-2.973V11.37h-3.938v3.808h-2.033v3.21h2.033v6.919c0 2.667.382 4.3 3.657 4.3 1.781 0 3.075-.156 3.075-.156Zm8.131.232c4.064 0 6.96-2.488 6.96-7.333 0-4.87-2.896-7.358-6.96-7.358-4.039 0-6.935 2.488-6.935 7.358 0 4.848 2.896 7.333 6.935 7.333Zm0-11.452c1.701 0 2.974 1.165 2.974 4.119 0 2.928-1.27 4.094-2.974 4.094-1.651 0-2.948-1.166-2.948-4.094.003-2.95 1.297-4.119 2.948-4.119Zm17.787 5.856c-.252 1.71-1.395 2.36-2.64 2.36-1.602 0-2.871-1.165-2.871-4.094 0-2.953 1.244-4.119 2.92-4.119 1.322 0 2.339.676 2.542 2.435h3.938c-.33-3.782-2.973-5.674-6.504-5.674-4.039 0-6.936 2.564-6.936 7.409 0 4.87 2.974 7.279 7.013 7.279 3.608 0 6.048-1.891 6.455-5.596h-3.917Zm11.992 5.596c4.067 0 6.963-2.488 6.963-7.333 0-4.87-2.896-7.358-6.963-7.358-4.039 0-6.936 2.488-6.936 7.358 0 4.845 2.897 7.333 6.936 7.333Zm0-11.452c1.704 0 2.973 1.165 2.973 4.119 0 2.928-1.269 4.094-2.973 4.094-1.652 0-2.945-1.166-2.945-4.094-.004-2.954 1.293-4.119 2.945-4.119ZM206 29.501V10.329h-3.913v19.172H206ZM119.031 58v-3.576h-8.587v-14.56h-4.014V58h12.601Zm10.593-5.493c0 1.216-.814 2.771-3.125 2.771-1.497 0-1.903-.958-1.903-1.605 0-.905.687-1.477 1.627-1.66.964-.207 3.404-.518 3.404-.518l-.003 1.012Zm-8.587-4.144h3.787c0-.568.15-1.762 2.464-1.762 1.88 0 2.339.676 2.339 1.659v.493l-4.625.676c-1.297.182-4.421.983-4.421 4.251 0 2.875 2.16 4.509 5.056 4.509 2.416 0 3.482-.83 4.092-1.477v1.29h4.141s-.305-1.086-.305-2.123v-7.723c0-2.074-1.119-4.662-6.277-4.662-5.333 0-6.199 2.77-6.251 4.87ZM140.016 58v-1.398c.712.908 1.957 1.58 3.506 1.58 3.812 0 6.427-2.488 6.427-7.333 0-4.87-2.668-7.358-6.199-7.358-1.55 0-3.022.676-3.734 1.58V38.83h-3.913V58h3.913Zm2.973-11.27c1.704 0 2.974 1.166 2.974 4.12 0 2.928-1.27 4.093-2.974 4.093-1.904 0-2.945-.904-2.945-4.094-.003-3.21 1.038-4.119 2.945-4.119Zm16.743 1.191h3.835c0-1.115-.557-4.43-6.048-4.43-3.355 0-6.02 1.53-6.02 4.48 0 3.343 2.644 4.04 5.666 4.459l.761.103c1.09.154 2.111.39 2.111 1.27 0 1.036-1.091 1.451-2.339 1.451-1.346 0-2.542-.415-2.542-1.787h-3.938c0 .75.33 4.715 6.252 4.715 5.259 0 6.529-2.617 6.529-4.82 0-5.777-8.587-3.47-8.587-5.673 0-.984 1.066-1.295 2.058-1.295 1.347 0 2.262.544 2.262 1.527Zm-102.41.154c.602.354 1.09 1.223 1.09 1.927v12.203c0 .711-.491.997-1.09.643l-10.358-6.096c-.603-.354-1.09-1.223-1.09-1.927V42.622c0-.711.49-.997 1.09-.643l10.357 6.096Zm15.974-10.766c0 .712-.491 1.573-1.09 1.927l-10.362 6.096c-.603.354-1.09.065-1.09-.643v-12.2c0-.707.49-1.572 1.09-1.926l10.361-6.096c.603-.354 1.09-.065 1.09.643v12.2s0 .003 0 0ZM71.02 21.113c.614.36.617.944.018 1.294l-10.365 6.1c-.603.354-1.592.35-2.202-.011L33.27 13.662c-.614-.362-.618-.944-.018-1.295l10.368-6.1c.603-.353 1.592-.35 2.202.011l25.2 14.835ZM43.535 53.44c0 .712-.491.998-1.09.644L32.09 47.992c-.603-.353-1.09-1.23-1.09-1.944V16.375c0-.722.501-1.011 1.108-.654l25.196 14.83c.613.362 1.108 1.234 1.108 1.939v12.203c0 .707-.495.993-1.094.64l-12.69-7.47c-.602-.353-1.093-.06-1.093.644v14.934Zm32.092-29.7c0-.712.491-1.577 1.09-1.931l10.358-6.096c.603-.354 1.09-.054 1.09.661v29.672c0 .723-.497 1.602-1.107 1.96l-25.196 14.83c-.614.362-1.108.076-1.108-.632V50.002c0-.708.494-1.577 1.094-1.927l12.682-7.466c.603-.354 1.094-1.226 1.094-1.93l.003-14.938ZM63.005 13.65c-.603-.354-.6-.933 0-1.287l10.364-6.1c.603-.354 1.585-.35 2.185 0l10.364 6.1c.603.354.6.93 0 1.287l-10.36 6.1c-.604.354-1.582.354-2.185 0l-10.368-6.1Z" fill="#FBFBFB" />
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 938 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 988 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 971 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 924 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

View File

@ -20,9 +20,10 @@ import {
import s from './footer.module.scss'
export const Footer = () => {
const router = useRouter()
const [show, setShow] = useState(true)
const [is404, setIs404] = useState(false)
const router = useRouter()
useEffect(() => {
if (

View File

@ -1,8 +1,12 @@
import { FC } from 'react'
import * as React from 'react'
import s from './highlighted-text.module.scss'
const HighlightedText: FC = ({ children }) => {
type HighlightedTextProps = {
children?: React.ReactNode | string
}
const HighlightedText = ({ children }: HighlightedTextProps) => {
return <span className={s['highlight']}>{children}</span>
}

View File

@ -0,0 +1,91 @@
@import '~/css/helpers';
.section {
position: relative;
display: flex;
align-items: center;
justify-content: center;
height: calc(var(--vw) * 60);
margin: tovw(100px, 'default', 50px) 0;
@media screen and (max-width: 800px) {
height: calc(var(--vw) * 95);
background-image: url('/images/pre-footer-mobile.png');
background-position: 50%;
background-size: cover;
}
.container {
position: relative;
z-index: 2;
display: flex;
align-items: center;
flex-direction: column;
@media screen and (max-width: 800px) {
padding: 0 tovw(16px, 'tablet', 16px);
}
h2 {
@media screen and (max-width: 800px) {
font-size: tovw(32px, 'mobile');
}
}
p {
font-size: tovw(30px, 'default', 15px);
line-height: 1.35;
width: tovw(856px, 'default', 300px);
text-align: center;
@media screen and (max-width: 800px) {
line-height: 1.5;
margin-top: tovw(16px, 'mobile');
}
}
}
&::after,
&::before {
position: absolute;
top: 50%;
left: 50%;
width: 100%;
height: 100%;
content: '';
transform: translate(-50%, -50%);
pointer-events: none;
background: linear-gradient(
0deg,
var(--color-black) 15%,
rgb(9 9 121 / 0) 45%,
var(--color-black) 100%
);
@media screen and (max-width: 800px) {
content: normal;
}
}
&::before {
width: 120%;
height: 110%;
background: radial-gradient(
ellipse,
rgb(3 3 3 / 0) 25%,
rgb(3 3 3 / 0.965) 60%,
rgb(3 3 3 / 1) 100%
);
filter: blur(tovw(80px, 'default', 40px));
}
.video {
position: absolute;
z-index: -1;
top: 0;
left: 0;
width: 100%;
height: 100%;
user-select: none;
pointer-events: none;
}
}

View File

@ -0,0 +1,37 @@
// import { Arrow } from '~/components/icons/arrow'
import clsx from 'clsx'
import { Container } from '~/components/layout/container'
import Section from '~/components/layout/section'
import Heading from '~/components/primitives/heading'
import s from './app.module.scss'
const AppSection = () => {
return (
<Section className={s['section']}>
<video
autoPlay
className={clsx('hide-on-mobile', s['video'])}
controls={false}
loop
muted
preload="true"
>
<source src="/videos/hero-grid.mp4" type="video/mp4" />
</video>
<Container className={s['container']}>
<Heading as="h2" variant="lg">
Laconic App
</Heading>
<p>
Laconic Wallet leverages an in-browser IPFS payment channel, enabling
users of the network to transact quickly and easily with LNT and ERC20
tokens.
</p>
</Container>
</Section>
)
}
export default AppSection

View File

@ -0,0 +1,182 @@
@import '~/css/helpers';
.section {
display: flex;
flex-direction: column;
justify-content: center;
max-width: 100%;
min-height: calc(var(--vh) * 100);
padding: tovw(100px, 'default', 50px) 0;
@media screen and (max-width: 800px) {
width: 100vw;
margin-bottom: tovw(88px, 'mobile');
padding: 0;
}
.container {
@media screen and (max-width: 800px) {
padding: 0 tovw(16px, 'tablet', 16px);
}
}
video {
margin: 0 tovw(180px, 'default', 90px);
mix-blend-mode: screen;
@media screen and (max-width: 800px) {
display: flex;
width: 300%;
place-self: center;
}
}
.body {
display: flex;
flex-direction: column;
margin-top: tovw(16px, 'default', 10px);
gap: tovw(89px, 'default', 56px);
h1 {
margin: 0;
text-shadow: 0 0 tovw(45px, 'default', 45px) rgb(255 255 255 / 0.4);
@media screen and (max-width: 800px) {
font-size: tovw(50px, 'mobile');
}
}
ol {
font-family: var(--font-tt-hoves);
font-size: tovw(24px, 'default', 16px);
line-height: 1.3;
display: grid;
justify-content: space-between;
margin: 0;
padding: 0;
list-style: none;
grid-template-columns: repeat(3, 1fr);
gap: tovw(40px, 'default', 20px) tovw(35px, 'default', 15px);
@media screen and (max-width: 900px) {
padding-bottom: tovw(25px, 'mobile', 56px);
border-bottom: tovw(1px, 'mobile') solid var(--color-white);
grid-template-columns: repeat(2, 1fr);
}
li {
display: flex;
counter-increment: custom;
gap: tovw(34px, 'default', 12px);
&:first-child {
counter-reset: custom;
}
&::before {
font-family: var(--font-dm-mono), sans-serif;
font-size: tovw(12px, 'default', 10px);
padding-top: tovw(5px, 'default');
content: '0' counter(custom) ' ';
}
}
}
.text__container {
display: grid;
grid-template-columns: 1fr 1.15fr;
gap: tovw(113px, 'default', 40px);
@media screen and (max-width: 800px) {
display: flex;
flex-direction: column;
}
p:first-child {
font-size: tovw(30px, 'default', 18px);
line-height: 1.65;
width: tovw(546px, 'default', 150px);
@media screen and (max-width: 800px) {
line-height: 1.5;
width: 100%;
max-width: 550px;
}
}
> div {
display: flex;
flex-direction: column;
gap: tovw(50px, 'default', 35px);
div {
display: flex;
padding-top: tovw(22px, 'default', 18px);
border-top: tovw(1px, 'default') solid var(--color-grey-light);
gap: tovw(140px, 'default', 20px);
@media screen and (max-width: 800px) {
justify-content: space-between;
border-top: unset;
gap: tovw(20px, 'mobile', 30px);
}
h2 {
width: tovw(100px, 'default', 20px);
@media screen and (max-width: 800px) {
width: tovw(20px, 'mobile');
}
}
p {
font-size: tovw(24px, 'default', 16px);
line-height: 1.35;
width: tovw(416px, 'default', 200px);
margin: 0;
color: var(--color-grey-light);
@media screen and (max-width: 800px) {
width: tovw(180px, 'mobile', 250px);
}
}
}
}
}
div:first-child {
display: flex;
justify-content: space-between;
.arrow {
display: none;
@media screen and (max-width: 800px) {
position: relative;
display: unset;
align-self: flex-end;
width: tovw(18px, 'mobile', 18px);
padding-bottom: tovw(10px, 'mobile', 10px);
}
}
}
}
.gradient {
position: absolute;
z-index: -1;
top: 0;
left: 0;
width: 100%;
height: tovw(740px, 'default', 740px);
background: linear-gradient(
180deg,
rgb(0 0 244 / 0.9) 1.63%,
rgb(0 0 244 / 0) 99.89%
);
@media screen and (max-width: 800px) {
height: 45%;
}
}
}

View File

@ -0,0 +1,66 @@
import { Arrow } from '~/components/icons/arrow'
import { Container } from '~/components/layout/container'
import Section from '~/components/layout/section'
import Heading from '~/components/primitives/heading'
import s from './hero.module.scss'
const Hero = () => {
return (
<Section className={s['section']}>
<div className={s.gradient} />
<video autoPlay muted loop preload="true">
<source src="/videos/banner_products.mp4" type="video/mp4" />
</video>
<Container className={s['container']}>
<div className={s.body}>
<div>
<Heading as="h1" variant="xl">
Products
</Heading>
<Arrow className={s['arrow']} />
</div>
<div className={s.text__container}>
<p>
For DApp developers and users (e.g. traders), Laconic is the only
data solution that provides accurate, low-cost, multi-chain,
verifiable data, by leveraging cryptographic proofs, cutting-edge
data-caching engineering, and a secure verifiable data
marketplace:
</p>
<div>
<ol>
<li>Watchers</li>
<li>Laconic Stack</li>
<li>Laconic Network</li>
<li>Laconic App</li>
<li>Laconic Network Token (LNT)</li>
</ol>
<div>
<Heading as="h2" variant="sm">
DeFi
</Heading>
<p>
Laconic enables simpler and more efficient DApp development,
and the most flexible views of the Ethereum state.
</p>
</div>
<div>
<Heading as="h2" variant="sm">
NFTs
</Heading>
<p>
In addition to any cross-chain history or metadata associated
with an NFT, Laconic allows this data to be proven to
end-users quickly and succinctly, simplifying deployments.
</p>
</div>
</div>
</div>
</div>
</Container>
</Section>
)
}
export default Hero

View File

@ -0,0 +1,58 @@
// import { Arrow } from '~/components/icons/arrow'
import { Container } from '~/components/layout/container'
import Section from '~/components/layout/section'
import Heading from '~/components/primitives/heading'
import s from './network.module.scss'
const Network = () => {
return (
<Section className={s['section']}>
<Container className={s['container']}>
<div>
<Heading as="h2" variant="lg">
Laconic Network
</Heading>
<p>
An open, interoperable, verifiable data marketplace and ecosystem of
service providers, DApp operators, and users providing low-cost,
decentralized, and disintermediated horizontal scaling solutions for
projects leveraging Laconic Stack.
</p>
<img
className={s.network__img__mobile}
src="/images/products/network-mobile.jpg"
alt="network"
/>
<div className={s.features}>
<div>
<img src="/images/products/nw-01.png" alt="" />
<p>
Seamlessly connects DApps and bridges with data service
providers
</p>
</div>
<div>
<img src="/images/products/nw-02.png" alt="" />
<p>Leverages state-channel-based payment infrastructure</p>
</div>
<div>
<img src="/images/products/nw-03.png" alt="" />
<p>
Provides highest quality services at the lowest prices via
marketplace model
</p>
</div>
</div>
</div>
<img
className={s.network__img}
src="/images/products/network.jpg"
alt="network"
/>
</Container>
</Section>
)
}
export default Network

View File

@ -0,0 +1,120 @@
@import '~/css/helpers';
.section {
position: relative;
padding: tovw(124px, 'default', 100px) 0;
@media screen and (max-width: 800px) {
padding: 0;
padding-bottom: tovw(18px, 'mobile');
}
.container {
position: relative;
display: flex;
@media screen and (max-width: 800px) {
padding: 0 tovw(16px, 'tablet', 16px);
}
div:first-child {
width: 100%;
h2 {
@media screen and (max-width: 800px) {
width: tovw(200px, 'mobile');
}
}
> p {
font-size: tovw(30px, 'default', 18px);
line-height: 1.3;
width: tovw(720px, 'default', 350px);
margin: 0;
margin-top: tovw(62px, 'default', 30px);
@media screen and (max-width: 800px) {
line-height: 1.5;
width: 100%;
max-width: 550px;
margin: 0;
margin-top: tovw(40px, 'mobile');
}
}
.features {
display: grid;
margin-top: tovw(125px, 'default', 60px);
grid-template-columns: repeat(2, tovw(360px, 'default', 225px));
gap: tovw(64px, 'default', 40px) 0;
@media screen and (max-width: 800px) {
display: flex;
flex-direction: column;
}
> div {
display: grid;
grid-template-columns: auto 1fr;
gap: tovw(23px, 'default', 16px);
@media screen and (max-width: 800px) {
margin: 0 tovw(10px, 'mobile');
}
img {
flex: 1;
width: tovw(55px, 'default', 45px);
}
p {
font-size: tovw(24px, 'default', 15px);
line-height: 1.6;
width: tovw(268px, 'default', 100px);
margin: 0;
margin-top: tovw(20px, 'default', 16px);
color: var(--color-grey-light);
@media screen and (max-width: 800px) {
width: 100%;
}
}
&:last-child {
p {
width: tovw(300px, 'default', 85px);
@media screen and (max-width: 800px) {
width: 100%;
}
}
}
}
}
}
.network__img {
position: absolute;
z-index: -1;
bottom: tovw(-190px, 'default', -750px);
left: tovw(550px, 'default', 50px);
width: tovw(1050px, 'default', 550px);
mix-blend-mode: screen;
@media screen and (max-width: 800px) {
display: none;
}
}
.network__img__mobile {
display: none;
@media screen and (max-width: 800px) {
display: unset;
width: 100%;
margin: tovw(60px, 'mobile') 0 tovw(20px, 'mobile') 0;
mix-blend-mode: screen;
}
}
}
}

View File

@ -0,0 +1,153 @@
import { Suspense } from 'react'
import Marquee from 'react-fast-marquee'
import { Container } from '~/components/layout/container'
import Section from '~/components/layout/section'
import Heading from '~/components/primitives/heading'
import s from './partners.module.scss'
const Partners = () => {
return (
<Section className={s['section']}>
<Container className={s['container']}>
<div className={s['header']}>
<Heading as="h2" variant="md">
Partners
</Heading>
<span>04</span>
</div>
<Marquee
className={s['marquee__container']}
direction="right"
gradient={false}
speed={28}
>
<div className={s['marquee']}>
<Suspense fallback={null}>
<img
alt="Fission"
loading="lazy"
src="/images/products/logos/fission.svg"
/>
<img
alt="Lemniscap"
loading="lazy"
src="/images/products/logos/lemniscap.svg"
/>
<img
alt="Cerc"
loading="lazy"
src="/images/products/logos/cerc.svg"
/>
<img
alt="Advanced Blockchain"
loading="lazy"
src="/images/products/logos/advanced.svg"
/>
<img
alt="Atomic Form"
loading="lazy"
src="/images/products/logos/atomicform.svg"
/>
<img
alt="Fission"
loading="lazy"
src="/images/products/logos/fission.svg"
/>
<img
alt="Lemniscap"
loading="lazy"
src="/images/products/logos/lemniscap.svg"
/>
<img
alt="Cerc"
loading="lazy"
src="/images/products/logos/cerc.svg"
/>
<img
alt="Advanced Blockchain"
loading="lazy"
src="/images/products/logos/advanced.svg"
/>
<img
alt="Atomic Form"
loading="lazy"
src="/images/products/logos/atomicform.svg"
/>
</Suspense>
</div>
</Marquee>
<div className={s.header}>
<Heading as="h2" variant="md">
Trusted By
</Heading>
<span>05</span>
</div>
<Marquee
className={s['marquee__container']}
gradient={false}
speed={28}
>
<div className={s['marquee']}>
<Suspense fallback={null}>
<img
alt="Uniswap"
loading="lazy"
src="/images/products/logos/uniswap.svg"
/>
<img
alt="Interchain"
loading="lazy"
src="/images/products/logos/interchain.svg"
/>
<img
alt="Cosmos"
loading="lazy"
src="/images/products/logos/cosmos.svg"
/>
<img
alt="Protocol"
loading="lazy"
src="/images/products/logos/protocol.svg"
/>
<img
alt="Eden"
loading="lazy"
src="/images/products/logos/eden.svg"
/>
<img
alt="Uniswap"
loading="lazy"
src="/images/products/logos/uniswap.svg"
/>
<img
alt="Interchain"
loading="lazy"
src="/images/products/logos/interchain.svg"
/>
<img
alt="Cosmos"
loading="lazy"
src="/images/products/logos/cosmos.svg"
/>
<img
alt="Protocol"
loading="lazy"
src="/images/products/logos/protocol.svg"
/>
<img
alt="Eden"
loading="lazy"
src="/images/products/logos/eden.svg"
/>
</Suspense>
</div>
</Marquee>
<div className={s['gradient']} />
</Container>
</Section>
)
}
export default Partners

View File

@ -0,0 +1,82 @@
@import '~/css/helpers';
.section {
position: relative;
margin: tovw(135px, 'default', 70px) 0;
padding: tovw(104px, 'default', 95px) 0;
@media screen and (max-width: 800px) {
margin-top: 0;
}
.container {
@media screen and (max-width: 800px) {
padding: 0 tovw(16px, 'tablet', 16px);
}
.header {
display: flex;
justify-content: space-between;
padding-bottom: tovw(36px, 'default', 24px);
border-bottom: tovw(1px, 'default', 1px) solid var(--color-grey-light);
&:nth-child(3) {
margin-top: tovw(182px, 'default', 100px);
}
span {
font-family: var(--font-dm-mono), sans-serif;
font-size: tovw(18px, 'default', 12px);
padding-top: tovw(35px, 'default', 14px);
color: var(--color-grey-light);
}
}
.gradient {
position: absolute;
z-index: -1;
right: 0;
bottom: tovw(160px, 'default', 160px);
left: 0;
width: 100%;
height: tovw(500px, 'default', 180px);
margin-left: 0;
content: '';
user-select: none;
pointer-events: none;
opacity: 0.4;
background: linear-gradient(
180deg,
rgb(229 229 229 / 0) 0%,
rgb(241 241 241 / 0.4) 48.91%,
rgb(241 241 241 / 0) 89.23%
);
@media screen and (max-width: 800px) {
bottom: tovw(1px, 'mobile', 90px);
height: tovw(230px, 'mobile', 440px);
}
}
}
}
.marquee {
display: flex;
user-select: none;
> img {
width: tovw(240px, 'default', 220px);
margin-right: tovw(53px, 'default', 40px);
pointer-events: none;
}
&__container {
margin-top: tovw(60px, 'default', 43px);
@media screen and (max-width: 800px) {
width: unset !important;
margin: tovw(60px, 'default', 43px) tovw(-18px, 'mobile') 0
tovw(-18px, 'mobile');
}
}
}

View File

@ -0,0 +1,58 @@
// import { Arrow } from '~/components/icons/arrow'
import Line from '~/components/icons/line'
import { Container } from '~/components/layout/container'
import Section from '~/components/layout/section'
import Heading from '~/components/primitives/heading'
// import Link from '~/components/primitives/link'
import { stackData } from './stack'
import s from './stack.module.scss'
const Stack = () => {
return (
<Section className={s['section']}>
<Container className={s['container']}>
<div className={s.header}>
<Heading as="h2" variant="lg">
Laconic Stack
</Heading>
<p>
Laconic Stack is a set of essential and verifiable technologies and
services that significantly simplify DApp development and make DApps
accessible to a wider audience of developers.
</p>
</div>
<div>
<ol>
{stackData.map((item) => (
<li key={item.title}>
<div>
<Heading as="h3" variant="sm" font="arthemys">
{item.title}
</Heading>
<span>{item.content}</span>
</div>
<Line className={s['line']} height={75} />
</li>
))}
</ol>
</div>
<div>
<img
className={s.stack__img}
src="/images/products/stack.png"
alt="stack"
/>
<img
className={`${s.stack__img} ${s.stack__img__small}`}
src="/images/products/stack-small.png"
alt="stack"
/>
<div className={s.gradient} />
</div>
</Container>
</Section>
)
}
export default Stack

View File

@ -0,0 +1,160 @@
@import '~/css/helpers';
.section {
position: relative;
padding: tovw(124px, 'default', 100px) 0;
@media screen and (max-width: 800px) {
padding: 0;
padding-bottom: tovw(88px, 'mobile');
}
.container {
@media screen and (max-width: 800px) {
padding: 0 tovw(16px, 'tablet', 16px);
}
}
.header {
display: flex;
@media screen and (max-width: 800px) {
flex-direction: column;
}
h2 {
width: tovw(360px, 'default', 250px);
@media screen and (max-width: 800px) {
width: unset;
}
}
p {
font-size: tovw(30px, 'default', 18px);
line-height: 1.35;
width: tovw(746px, 'default', 300px);
@media screen and (max-width: 800px) {
line-height: 1.5;
width: 100%;
max-width: 550px;
margin: 0;
margin-top: tovw(40px, 'mobile');
}
}
}
div:nth-child(2) {
margin-top: tovw(165px, 'default', 80px);
ol {
font-family: var(--font-tt-hoves);
font-size: tovw(24px, 'default', 15px);
display: grid;
justify-content: space-between;
margin: 0 tovw(-50px, 'default');
padding: 0;
list-style: none;
list-style-position: outside;
grid-template-columns: repeat(3, 1fr);
gap: tovw(68px, 'default', 40px) tovw(35px, 'default', 15px);
@media screen and (max-width: 800px) {
display: flex;
flex-direction: column;
margin: 0;
}
li {
position: relative;
display: flex;
counter-increment: custom;
gap: tovw(34px, 'default', 28px);
@media screen and (max-width: 800px) {
width: 100%;
}
&:first-child {
counter-reset: custom;
}
&::before {
font-family: var(--font-dm-mono), sans-serif;
font-size: tovw(12px, 'default', 10px);
padding-top: tovw(8px, 'default');
content: '0' counter(custom) ' ';
}
div {
display: flex;
flex-direction: column;
gap: tovw(22px, 'default', 18px);
span {
font-size: tovw(24px, 'default', 18px);
line-height: 1.33;
color: var(--color-grey-light);
}
}
.line {
position: absolute;
bottom: 0;
width: tovw(3px, 'default', 2px);
margin-bottom: tovw(42px, 'default', 42px);
margin-left: tovw(25px, 'default', 20px);
@media screen and (max-width: 800px) {
margin-bottom: tovw(8px, 'mobile');
}
}
}
}
}
div:last-child {
.stack__img {
width: 100%;
margin-top: tovw(293px, 'default', 88px);
image-rendering: optimizequality;
@media screen and (max-width: 1450px) {
display: none;
}
}
.stack__img__small {
display: none;
@media screen and (max-width: 1450px) {
display: unset;
}
}
.gradient {
position: absolute;
z-index: -1;
right: 0;
bottom: tovw(530px, 'default', 300px);
left: 0;
width: 100%;
height: tovw(500px, 'default', 180px);
margin-left: 0;
content: '';
user-select: none;
pointer-events: none;
opacity: 0.4;
background: linear-gradient(
180deg,
rgb(229 229 229 / 0) 0%,
rgb(241 241 241 / 0.5) 48.91%,
rgb(241 241 241 / 0) 89.23%
);
@media screen and (max-width: 800px) {
display: none;
}
}
}
}

View File

@ -0,0 +1,23 @@
export const stackData = [
{
title: 'Core',
content: 'Ethereum node, ipld-eth-server, and relational database'
},
{
title: 'Watcher Service',
content:
'Allows services or browsers to subscribe to data Supplementary Services'
},
{
title: 'Tracing Service',
content: 'Generates and caches traces'
},
{
title: 'Eth State Diff Service',
content: 'Serves state diffs from an offline geth database'
},
{
title: 'Pending Transaction Service',
content: 'Ethereum node, ipld-eth-server, and relational database'
}
]

View File

@ -0,0 +1,59 @@
// import { Arrow } from '~/components/icons/arrow'
import { Container } from '~/components/layout/container'
import Section from '~/components/layout/section'
import Heading from '~/components/primitives/heading'
import s from './token.module.scss'
const Token = () => {
return (
<Section className={s['section']}>
<Container className={s['container']}>
<div>
<Heading as="h2" variant="lg">
Laconic Network Token
</Heading>
<p>
With a fixed total supply, Laconic Network Token (LNT) serves
multiple functions in the Network design, most saliently by securing
incentive alignment across network stakeholders. LNT also allows for
seamless payments across services, regardless of blockchain or DApp.
</p>
<img
className={s.token__img__mobile}
src="/images/products/token-mobile.jpg"
alt="token"
/>
<div className={s.features}>
<div>
<img src="/images/products/tk-01.png" alt="" />
<p>Distribute rewards to staked users</p>
</div>
<div>
<img src="/images/products/tk-02.png" alt="" />
<p>Pay dividends to Partners</p>
</div>
<div>
<img src="/images/products/tk-03.png" alt="" />
<p>Provide service discounts</p>
</div>
<div>
<img src="/images/products/tk-04.png" alt="" />
<p>
Distribute funds to community members for Network maintenance
and development
</p>
</div>
</div>
</div>
<img
className={s.token__img}
src="/images/products/token.jpg"
alt="token"
/>
</Container>
</Section>
)
}
export default Token

View File

@ -0,0 +1,120 @@
@import '~/css/helpers';
.section {
position: relative;
padding: tovw(124px, 'default', 100px) 0;
@media screen and (max-width: 800px) {
padding: 0;
padding-bottom: tovw(18px, 'mobile');
}
.container {
position: relative;
display: flex;
@media screen and (max-width: 800px) {
padding: 0 tovw(16px, 'tablet', 16px);
}
h2 {
@media screen and (max-width: 800px) {
width: tovw(320px, 'mobile');
}
}
div:first-child {
width: 100%;
> p {
font-size: tovw(30px, 'default', 18px);
line-height: 1.3;
width: tovw(814px, 'default', 350px);
margin: 0;
margin-top: tovw(62px, 'default', 30px);
@media screen and (max-width: 800px) {
line-height: 1.5;
width: 100%;
max-width: 550px;
margin: 0;
margin-top: tovw(40px, 'mobile');
}
}
.features {
display: grid;
margin-top: tovw(125px, 'default', 60px);
grid-template-columns: repeat(2, tovw(360px, 'default', 190px));
gap: tovw(64px, 'default', 40px) 0;
@media screen and (max-width: 800px) {
display: flex;
flex-direction: column;
}
> div {
display: grid;
grid-template-columns: auto 1fr;
gap: tovw(23px, 'default', 15px);
@media screen and (max-width: 800px) {
margin: 0 tovw(10px, 'mobile');
}
img {
flex: 1;
width: tovw(55px, 'default', 45px);
}
p {
font-size: tovw(24px, 'default', 15px);
line-height: 1.6;
width: tovw(220px, 'default', 115px);
margin: 0;
margin-top: tovw(20px, 'default', 16px);
color: var(--color-grey-light);
@media screen and (max-width: 800px) {
width: 100%;
}
}
&:last-child {
p {
width: tovw(265px, 'default', 150px);
@media screen and (max-width: 800px) {
width: 100%;
}
}
}
}
}
}
.token__img {
position: absolute;
z-index: -1;
bottom: tovw(-150px, 'default', -750px);
left: tovw(630px, 'default', 50px);
width: tovw(950px, 'default', 550px);
mix-blend-mode: screen;
@media screen and (max-width: 800px) {
display: none;
}
}
.token__img__mobile {
display: none;
@media screen and (max-width: 800px) {
display: unset;
width: 100%;
margin: tovw(60px, 'mobile') 0 tovw(5px, 'mobile') 0;
mix-blend-mode: screen;
}
}
}
}

View File

@ -6,7 +6,7 @@ import Team from '~/components/sections/about/team'
import { Page } from './_app'
const Community: Page = () => {
const About: Page = () => {
return (
<PageLayout>
<Meta />
@ -17,4 +17,4 @@ const Community: Page = () => {
)
}
export default Community
export default About

26
src/pages/products.tsx Normal file
View File

@ -0,0 +1,26 @@
import { Meta } from '~/components/common/meta'
import { PageLayout } from '~/components/layout/page'
import AppSection from '~/components/sections/products/app'
import Hero from '~/components/sections/products/hero'
import Network from '~/components/sections/products/network'
import Partners from '~/components/sections/products/partners'
import Stack from '~/components/sections/products/stack'
import Token from '~/components/sections/products/token'
import { Page } from './_app'
const Products: Page = () => {
return (
<PageLayout>
<Meta />
<Hero />
<Stack />
<Network />
<AppSection />
<Token />
<Partners />
</PageLayout>
)
}
export default Products

View File

@ -233,16 +233,16 @@
integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==
"@types/react-dom@^17.0.14":
version "17.0.14"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.14.tgz#c8f917156b652ddf807711f5becbd2ab018dea9f"
integrity sha512-H03xwEP1oXmSfl3iobtmQ/2dHF5aBHr8aUMwyGZya6OW45G+xtdzmq6HkncefiBt5JU8DVyaWl/nWZbjZCnzAQ==
version "17.0.15"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.15.tgz#f2c8efde11521a4b7991e076cb9c70ba3bb0d156"
integrity sha512-Tr9VU9DvNoHDWlmecmcsE5ZZiUkYx+nKBzum4Oxe1K0yJVyBlfbq7H3eXjxXqJczBKqPGq3EgfTru4MgKb9+Yw==
dependencies:
"@types/react" "*"
"@types/react" "^17"
"@types/react@*", "@types/react@^17.0.43":
version "17.0.43"
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.43.tgz#4adc142887dd4a2601ce730bc56c3436fdb07a55"
integrity sha512-8Q+LNpdxf057brvPu1lMtC5Vn7J119xrP1aq4qiaefNioQUYANF/CYeK4NsKorSZyUGJ66g0IM+4bbjwx45o2A==
"@types/react@^17", "@types/react@^17.0.43":
version "17.0.44"
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.44.tgz#c3714bd34dd551ab20b8015d9d0dbec812a51ec7"
integrity sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g==
dependencies:
"@types/prop-types" "*"
"@types/scheduler" "*"
@ -2840,10 +2840,10 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
sass@1.49.11:
version "1.49.11"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.49.11.tgz#1ffeb77faeed8b806a2a1e021d7c9fd3fc322cb7"
integrity sha512-wvS/geXgHUGs6A/4ud5BFIWKO1nKd7wYIGimDk4q4GFkJicILActpv9ueMT4eRGSsp1BdKHuw1WwAHXbhsJELQ==
sass@1.50.0:
version "1.50.0"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.50.0.tgz#3e407e2ebc53b12f1e35ce45efb226ea6063c7c8"
integrity sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==
dependencies:
chokidar ">=3.0.0 <4.0.0"
immutable "^4.0.0"