turned off lazy loading, refactored js, image tweaks, css tweaks, be-your-own rennovation
@@ -19,10 +19,10 @@ module.exports = function (eleventyConfig) {
|
|||||||
//plugins
|
//plugins
|
||||||
eleventyConfig.addPlugin(eleventySass);
|
eleventyConfig.addPlugin(eleventySass);
|
||||||
|
|
||||||
eleventyConfig.addPlugin(lazyImagesPlugin, {
|
// eleventyConfig.addPlugin(lazyImagesPlugin, {
|
||||||
imgSelector: 'img:not(.unlazy)', // custom image selector
|
// imgSelector: 'img:not(.unlazy)', // custom image selector
|
||||||
//cacheFile: '', // don't cache results to a file
|
// //cacheFile: '', // don't cache results to a file
|
||||||
});
|
// });
|
||||||
|
|
||||||
return {
|
return {
|
||||||
dir: { input: "src", output: "_site", data: "_data" },
|
dir: { input: "src", output: "_site", data: "_data" },
|
||||||
|
|||||||
3
index.js
@@ -2,3 +2,6 @@
|
|||||||
// eslint-disable-next-line no-global-assign
|
// eslint-disable-next-line no-global-assign
|
||||||
require = require("esm")(module/* , options */)
|
require = require("esm")(module/* , options */)
|
||||||
module.exports = require("./main.js")
|
module.exports = require("./main.js")
|
||||||
|
|
||||||
|
gsap.registerPlugin(DrawSVGPlugin);
|
||||||
|
gsap.registerPlugin(CustomEase);
|
||||||
@@ -1,54 +1,67 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "Whatsapp",
|
"name": "Whatsapp",
|
||||||
|
"slug": "whatsapp",
|
||||||
"url": "https://start9.com/marketplace/175"
|
"url": "https://start9.com/marketplace/175"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Twitter",
|
"name": "Twitter",
|
||||||
|
"slug": "twitter",
|
||||||
"url": "https://start9.com/marketplace/175"
|
"url": "https://start9.com/marketplace/175"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Lastpass",
|
"name": "Lastpass",
|
||||||
|
"slug": "lastpass",
|
||||||
"url": "https://start9.com/marketplace/199"
|
"url": "https://start9.com/marketplace/199"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "bank",
|
"name": "bank",
|
||||||
|
"slug": "bank",
|
||||||
"url": "https://start9.com/marketplace/148"
|
"url": "https://start9.com/marketplace/148"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Github",
|
"name": "Github",
|
||||||
|
"slug": "github",
|
||||||
"url": "https://start9.com/marketplace/126"
|
"url": "https://start9.com/marketplace/126"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Google Drive",
|
"name": "Google Drive",
|
||||||
|
"slug": "google-drive",
|
||||||
"url": "https://start9.com/marketplace/186"
|
"url": "https://start9.com/marketplace/186"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "iPhotos",
|
"name": "iPhotos",
|
||||||
|
"slug": "iphotos",
|
||||||
"url": "https://start9.com/marketplace/119"
|
"url": "https://start9.com/marketplace/119"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Coinbase",
|
"name": "Coinbase",
|
||||||
|
"slug": "coinbase",
|
||||||
"url": "https://start9.com/marketplace/132"
|
"url": "https://start9.com/marketplace/132"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "GoFundMe",
|
"name": "GoFundMe",
|
||||||
|
"slug": "gofundme",
|
||||||
"url": "https://start9.com/marketplace/165"
|
"url": "https://start9.com/marketplace/165"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "PayPal",
|
"name": "PayPal",
|
||||||
|
"slug": "paypal",
|
||||||
"url": "https://start9.com/marketplace/165"
|
"url": "https://start9.com/marketplace/165"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "iMessage",
|
"name": "iMessage",
|
||||||
|
"slug": "imessage",
|
||||||
"url": "https://start9.com/marketplace/165"
|
"url": "https://start9.com/marketplace/165"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "KeePass",
|
"name": "KeePass",
|
||||||
|
"slug": "keepass",
|
||||||
"url": "https://start9.com/marketplace/165"
|
"url": "https://start9.com/marketplace/165"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Kickstarter",
|
"name": "Kickstarter",
|
||||||
|
"slug": "kickstarter",
|
||||||
"url": "https://start9.com/marketplace/165"
|
"url": "https://start9.com/marketplace/165"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -2,62 +2,64 @@
|
|||||||
{
|
{
|
||||||
"name": "Synapse",
|
"name": "Synapse",
|
||||||
"slug": "synapse",
|
"slug": "synapse",
|
||||||
"description": "Synapse is the battle-tested, reference implementation of the Matrix protocol. Matrix is a next-generation, federated, full-featured, encrypted, independent messaging system. There are no trusted third parties involved. (see matrix.org for details).",
|
"description": "A battle-tested implementation of the Matrix protocol, the killer of all messaging apps.",
|
||||||
|
"color": "#666666",
|
||||||
"categories": ["communications"],
|
"categories": ["communications"],
|
||||||
"pseudoservices": [
|
"pseudoservices": ["whatsapp", "imessage"]
|
||||||
"whatsapp","imessage"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Mastodon",
|
"name": "Mastodon",
|
||||||
"slug": "mastodon",
|
"slug": "mastodon",
|
||||||
"description": "Mastodon is a free, open-source social network server based on ActivityPub where users can follow friends and discover new ones. On Mastodon, users can publish anything they want: links, pictures, text, video. All Mastodon servers are interoperable as a federated network (users on one server can seamlessly communicate with users from another one, including non-Mastodon software that implements ActivityPub)!",
|
"description": "A free, open-source social network server",
|
||||||
|
"color": "#6364ff",
|
||||||
"categories": ["communications"],
|
"categories": ["communications"],
|
||||||
"pseudoservices": [
|
"pseudoservices": ["twitter"]
|
||||||
"twitter"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Vaultwarden",
|
"name": "Vaultwarden",
|
||||||
"slug": "vaultwarden",
|
"slug": "vaultwarden",
|
||||||
"description": "Vaultwarden is a lightweight and secure password manager for storing and autofilling sensitive information such as usernames and passwords, credit cards, identities, and notes. It is an alternative implementation of the Bitwarden server API written in Rust and compatible with upstream Bitwarden clients. All data is stored in an encrypted vault on your Embassy.",
|
"description": "Secure password management",
|
||||||
|
"color": "#175ddc",
|
||||||
"categories": ["data"],
|
"categories": ["data"],
|
||||||
"pseudoservices": [
|
"pseudoservices": ["lastpass", "keepass"]
|
||||||
"lastpass","keepass"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Balance of Satoshis",
|
"name": "Balance of Satoshis",
|
||||||
"slug": "balanceofsatoshis",
|
"slug": "balanceofsatoshis",
|
||||||
"description": "",
|
"description": "A tool for working with the balance of your satoshis on LND.",
|
||||||
|
"color": "#",
|
||||||
"categories": ["plebnet-tools"],
|
"categories": ["plebnet-tools"],
|
||||||
"pseudoservices": []
|
"pseudoservices": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Bitcoin Core",
|
"name": "Bitcoin Core",
|
||||||
"slug": "bitcoind",
|
"slug": "bitcoind",
|
||||||
"description": "",
|
"description": "A Bitcoin Full Node by Bitcoin Core.",
|
||||||
|
"color": "#f2a900",
|
||||||
"categories": ["bitcoin"],
|
"categories": ["bitcoin"],
|
||||||
"pseudoservices": ["bank"]
|
"pseudoservices": ["bank"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Bitcoin Proxy",
|
"name": "Bitcoin Proxy",
|
||||||
"slug": "btc-rpc-proxy",
|
"slug": "btc-rpc-proxy",
|
||||||
"description": "",
|
"description": "Super charge your Bitcoin node.",
|
||||||
|
"color": "#",
|
||||||
"categories": ["bitcoin"],
|
"categories": ["bitcoin"],
|
||||||
"pseudoservices": []
|
"pseudoservices": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "BTCPay Server",
|
"name": "BTCPay Server",
|
||||||
"slug": "btcpayserver",
|
"slug": "btcpayserver",
|
||||||
"description": "",
|
"description": "Bitcoin and cryptocurrency payment processor and POS system.",
|
||||||
|
"color": "#51b13e",
|
||||||
"categories": ["bitcoin"],
|
"categories": ["bitcoin"],
|
||||||
"pseudoservices": ["kickstarter", "gofundme"]
|
"pseudoservices": ["kickstarter", "gofundme"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Core Lightning",
|
"name": "Core Lightning",
|
||||||
"slug": "c-lightning",
|
"slug": "c-lightning",
|
||||||
"description": "",
|
"description": "An implementation of the Lightning Network protocol by Blockstream.",
|
||||||
|
"color": "#ffe95f",
|
||||||
"categories": ["lightning"],
|
"categories": ["lightning"],
|
||||||
"pseudoservices": ["paypal", "coinbase"]
|
"pseudoservices": ["paypal", "coinbase"]
|
||||||
},
|
},
|
||||||
@@ -65,6 +67,7 @@
|
|||||||
"name": "electrs",
|
"name": "electrs",
|
||||||
"slug": "electrs",
|
"slug": "electrs",
|
||||||
"description": "",
|
"description": "",
|
||||||
|
"color": "#",
|
||||||
"categories": ["bitcoin"],
|
"categories": ["bitcoin"],
|
||||||
"pseudoservices": []
|
"pseudoservices": []
|
||||||
},
|
},
|
||||||
@@ -72,34 +75,39 @@
|
|||||||
"name": "lightning Jet",
|
"name": "lightning Jet",
|
||||||
"slug": "lightning-jet",
|
"slug": "lightning-jet",
|
||||||
"description": "",
|
"description": "",
|
||||||
|
"color": "#",
|
||||||
"categories": ["plebnet-tools"],
|
"categories": ["plebnet-tools"],
|
||||||
"pseudoservices": []
|
"pseudoservices": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Lightning Network Daemon",
|
"name": "Lightning Network Daemon",
|
||||||
"slug": "lnd",
|
"slug": "lnd",
|
||||||
"description": "",
|
"description": "A complete implementation of a Lightning Network node by Lightning Labs.",
|
||||||
|
"color": "#338dc9",
|
||||||
"categories": ["lightning"],
|
"categories": ["lightning"],
|
||||||
"pseudoservices": ["paypal", "coinbase"]
|
"pseudoservices": ["paypal", "coinbase"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Lightning Terminal",
|
"name": "Lightning Terminal",
|
||||||
"slug": "lightning-terminal",
|
"slug": "lightning-terminal",
|
||||||
"description": "",
|
"description": "Your Home for Lightning Liquidity",
|
||||||
|
"color": "#570380",
|
||||||
"categories": ["lightning"],
|
"categories": ["lightning"],
|
||||||
"pseudoservices": []
|
"pseudoservices": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "LNDg",
|
"name": "LNDg",
|
||||||
"slug": "lndg",
|
"slug": "lndg",
|
||||||
"description": "",
|
"description": "Powerful web interface for LND developed specifically for LND Routing Node Operators",
|
||||||
|
"color": "#",
|
||||||
"categories": ["plebnet-tools"],
|
"categories": ["plebnet-tools"],
|
||||||
"pseudoservices": []
|
"pseudoservices": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Mempool",
|
"name": "Mempool",
|
||||||
"slug": "mempool",
|
"slug": "mempool",
|
||||||
"description": "",
|
"description": "A Bitcoin node and network visualizer.",
|
||||||
|
"color": "#8884f7",
|
||||||
"categories": ["bitcoin"],
|
"categories": ["bitcoin"],
|
||||||
"pseudoservices": ["bank"]
|
"pseudoservices": ["bank"]
|
||||||
},
|
},
|
||||||
@@ -107,35 +115,72 @@
|
|||||||
"name": "Ride the Lightning",
|
"name": "Ride the Lightning",
|
||||||
"slug": "ride-the-lightning",
|
"slug": "ride-the-lightning",
|
||||||
"description": "",
|
"description": "",
|
||||||
|
"color": "#bdbdbd",
|
||||||
"categories": ["lightning"],
|
"categories": ["lightning"],
|
||||||
"pseudoservices": ["paypal", "coinbase"]
|
"pseudoservices": ["paypal", "coinbase"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Spark Wallet",
|
"name": "Spark Wallet",
|
||||||
"slug": "spark-wallet",
|
"slug": "spark-wallet",
|
||||||
"description": "",
|
"description": "A minimalistic wallet GUI for Core Lightning (CLN).",
|
||||||
|
"color": "#2c384c",
|
||||||
"categories": ["lightning"],
|
"categories": ["lightning"],
|
||||||
"pseudoservices": ["paypal"]
|
"pseudoservices": ["paypal"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Specter",
|
"name": "Specter",
|
||||||
"slug": "specter",
|
"slug": "specter",
|
||||||
"description": "",
|
"description": "A desktop GUI for Bitcoin Core optimised to work with hardware wallets.",
|
||||||
|
"color": "#e80001",
|
||||||
"categories": ["bitcoin"],
|
"categories": ["bitcoin"],
|
||||||
"pseudoservices": []
|
"pseudoservices": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Sphinx Chat",
|
"name": "Sphinx Chat",
|
||||||
"slug": "sphinx-relay",
|
"slug": "sphinx-relay",
|
||||||
"description": "",
|
"description": "Chat on the lightning Network.",
|
||||||
|
"color": "#618aff",
|
||||||
"categories": ["lightning"],
|
"categories": ["lightning"],
|
||||||
"pseudoservices": ["whatsapp", "imessage"]
|
"pseudoservices": ["whatsapp", "imessage"]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "Thunderhub",
|
"name": "Thunderhub",
|
||||||
"slug": "thunderhub",
|
"slug": "thunderhub",
|
||||||
"description": "",
|
"description": "LND Lightning Node Manager in your Browser",
|
||||||
|
"color": "#2b3885",
|
||||||
"categories": ["bitcoin"],
|
"categories": ["bitcoin"],
|
||||||
"pseudoservices": ["paypal", "coinbase"]
|
"pseudoservices": ["paypal", "coinbase"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Ghost",
|
||||||
|
"slug": "ghost",
|
||||||
|
"description": "A self-hosted blogging platform.",
|
||||||
|
"color": "#bfbfbe",
|
||||||
|
"categories": ["communications"],
|
||||||
|
"pseudoservices": ["paypal", "coinbase"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Photoview",
|
||||||
|
"slug": "photoview",
|
||||||
|
"description": "An easy way to organize and share personal photos.",
|
||||||
|
"color": "#ff692c",
|
||||||
|
"categories": ["data"],
|
||||||
|
"pseudoservices": ["iphotos"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Syncthing",
|
||||||
|
"slug": "syncthing",
|
||||||
|
"description": "Synchronizes files between devices in real time, safely protected from prying eyes.",
|
||||||
|
"color": "#1191ce",
|
||||||
|
"categories": ["data"],
|
||||||
|
"pseudoservices": ["google-drive"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Gitea",
|
||||||
|
"slug": "gitea",
|
||||||
|
"description": "A painless, self-hosted git service.",
|
||||||
|
"color": "#609926",
|
||||||
|
"categories": ["data"],
|
||||||
|
"pseudoservices": ["github"]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<footer>
|
<footer>
|
||||||
<div class="footer__content">
|
<div class="footer__content">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<img src="../assets/images/start9_logo.png" alt="">
|
{% include "components/svg/logo.svg" %}
|
||||||
<div class="footer__copyright">{{ site.footer.copyright }}</div>
|
<div class="footer__copyright">{{ site.footer.copyright }}</div>
|
||||||
<div class="footer__donate">[btcpay widget]</div>
|
<div class="footer__donate">[btcpay widget]</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
<header>
|
<header>
|
||||||
<nav>
|
<nav>
|
||||||
<a class="header__logo" href="/" aria-label="Return Home"><img src="../assets/images/start9_logo.png" alt=""></a>
|
<a class="header__logo" href="/" aria-label="Return Home">
|
||||||
|
{% include "components/svg/logo.svg" %}
|
||||||
|
</a>
|
||||||
<ul>
|
<ul>
|
||||||
{% for group in menu|selectattr("inHeader") %}
|
{% for group in menu|selectattr("inHeader") %}
|
||||||
{% for item in group.items %}
|
{% for item in group.items %}
|
||||||
|
|||||||
46
src/_includes/components/landing/be-your-own copy.njk
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
<section id="be-your-own">
|
||||||
|
<h1>be
|
||||||
|
<em>your own</em>
|
||||||
|
everything</h1>
|
||||||
|
<p>Anything you can do in the <a href="https://en.wikipedia.org/wiki/Censorship_by_Apple#App_Store" target="_blank">permissioned</a>, <a href="https://www.computerworld.com/article/3634591/the-problem-with-the-subscription-economy.html" target="_blank">subscription-based</a>, <a href="https://en.wikipedia.org/wiki/Privacy_concerns_regarding_Google" target="_blank">privacy-invading</a>, <a target="_blank" href="https://dataprot.net/articles/biggest-data-breaches/">insecure</a> model of cloud computing, you
|
||||||
|
can also do in the open, free, private, secure model of <em>sovereign computing</em>.</p>
|
||||||
|
<div id='ticker'>
|
||||||
|
<div id="ticker__selected-frame">
|
||||||
|
<span>be your own</span>
|
||||||
|
{# <div id="services"></div> #}
|
||||||
|
</div>
|
||||||
|
<div id="ticker__window">
|
||||||
|
<ul class='pseudoservices'>
|
||||||
|
{% for pseudoservice in pseudoservices %}
|
||||||
|
<li class="pseudoservice">{{ pseudoservice.name }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="services">
|
||||||
|
{% for pseudoservice in pseudoservices %}
|
||||||
|
<div class="slides-container slides-container--{{ pseudoservice.slug }}">
|
||||||
|
<ul class="slides-inner">
|
||||||
|
{% for service in services %}
|
||||||
|
{% if pseudoservice.slug in service.pseudoservices %}
|
||||||
|
<li class="service slide">
|
||||||
|
{# <a href="">{% include "components/svg/chevron-left.svg" %}</a> #}
|
||||||
|
<a class="service__content" href="https://marketplace.start9.com/{{service.slug}}" target="_blank">
|
||||||
|
<img class="service__image" src="../assets/images/service-icons/{{ service.slug }}.png" alt="{{ service.name }} emabssyos service icon" title="{{ service.name }} service icon"/>
|
||||||
|
<div class="service__name">{{ service.name }}</div>
|
||||||
|
{# <div class="service__desc">{{ service.description }}</div> #}
|
||||||
|
</a>
|
||||||
|
{# <a href="">{% include "components/svg/chevron-right.svg" %}</a> #}
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
<div class="slides-controls">
|
||||||
|
<button id="prevButton">{% include "components/svg/chevron-left.svg" %}</button>
|
||||||
|
<button id="nextButton">{% include "components/svg/chevron-right.svg" %}</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a href="{{ site.beYourOwn.url }}" class="btn">browse the start9 marketplace</a>
|
||||||
|
</section>
|
||||||
@@ -2,8 +2,8 @@
|
|||||||
<h1>be
|
<h1>be
|
||||||
<em>your own</em>
|
<em>your own</em>
|
||||||
everything</h1>
|
everything</h1>
|
||||||
<p>Anything you can do in the permissioned, subscription-based, privacy-invading, insecure model of cloud computing, you
|
<p>Anything you can do in the <a href="https://en.wikipedia.org/wiki/Censorship_by_Apple#App_Store" target="_blank">permissioned</a>, <a href="https://www.computerworld.com/article/3634591/the-problem-with-the-subscription-economy.html" target="_blank">subscription-based</a>, <a href="https://en.wikipedia.org/wiki/Privacy_concerns_regarding_Google" target="_blank">privacy-invading</a>, <a target="_blank" href="https://dataprot.net/articles/biggest-data-breaches/">insecure</a> model of cloud computing, you
|
||||||
can also do in the open, free, private, secure model of sovereign computing</p>
|
can also do in the open, free, private, secure model of <em>sovereign computing</em>.</p>
|
||||||
<div id='ticker'>
|
<div id='ticker'>
|
||||||
<div id="ticker__selected-frame">
|
<div id="ticker__selected-frame">
|
||||||
<span>be your own</span>
|
<span>be your own</span>
|
||||||
@@ -18,28 +18,24 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="services">
|
<div class="services">
|
||||||
{% for pseudoservice in pseudoservices %}
|
{% for pseudoservice in pseudoservices %}
|
||||||
<div class="slides-container slides-container--{{ pseudoservice.name.toLowerCase() }}">
|
<div class="service-container service-container--{{ pseudoservice.slug }}">
|
||||||
<ul class="slides-inner">
|
|
||||||
{% for service in services %}
|
{% for service in services %}
|
||||||
{% if pseudoservice.name.toLowerCase() in service.pseudoservices %}
|
{% if pseudoservice.slug in service.pseudoservices %}
|
||||||
<li class="service slide">
|
<div class="service__content" >
|
||||||
{# <a href="">{% include "components/svg/chevron-left.svg" %}</a> #}
|
|
||||||
<a class="service__link" href="https://marketplace.start9.com/{{service.slug}}" target="_blank">
|
<a class="service__link" href="https://marketplace.start9.com/{{service.slug}}" target="_blank">
|
||||||
<img class="service__image" src="../assets/images/service-icons/{{ service.slug }}.png" alt=""/>
|
<img class="service__image service__image--{{ service.slug }}" src="../assets/images/service-icons/{{ service.slug }}.png" alt="{{ service.name }} embassyos service icon" title="{{ service.name }} embassyos service icon"
|
||||||
<div class="service__name">{{ service.name }}</div>
|
style="filter: drop-shadow(0px 0px 3rem {{ service.color }}C0)"/>
|
||||||
{# <div class="service__desc">{{ service.description }}</div> #}
|
<div class="service__info">
|
||||||
|
<h3 class="service__name">{{ service.name }}</h3>
|
||||||
|
<p class="service__desc">{{ service.description }}</p>
|
||||||
|
</div>
|
||||||
</a>
|
</a>
|
||||||
{# <a href="">{% include "components/svg/chevron-right.svg" %}</a> #}
|
<div class="service__bkg" style="background: linear-gradient(180deg, {{ service.color }}00 0%, {{ service.color }}C0 30%, {{ service.color }}FF 50%, {{ service.color }}C0 66%, {{ service.color }}00 100%);"></div>
|
||||||
</li>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
<div class="slides-controls">
|
|
||||||
<button id="prevButton">{% include "components/svg/chevron-left.svg" %}</button>
|
|
||||||
<button id="nextButton">{% include "components/svg/chevron-right.svg" %}</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a href="{{ site.beYourOwn.url }}" class="btn">browse the start9 marketplace</a>
|
<a href="{{ site.beYourOwn.url }}" class="btn">browse the start9 marketplace</a>
|
||||||
|
|||||||
@@ -21,7 +21,8 @@
|
|||||||
<img
|
<img
|
||||||
class="service-icon service-icon--{{ service.slug }}"
|
class="service-icon service-icon--{{ service.slug }}"
|
||||||
src="../assets/images/service-icons/{{ service.slug }}.png"
|
src="../assets/images/service-icons/{{ service.slug }}.png"
|
||||||
alt=""/>
|
alt="{{ service.name }} embassyos service icon"
|
||||||
|
alt="{{ service.name }} embassyos service icon"/>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
@@ -4,8 +4,9 @@
|
|||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<p style="color: black;">Interested in packaging a service?</p>
|
<p>Interested in packaging a service?<br/><em>Our community runs on devs like you.</em></p>
|
||||||
<p style="color: black;">Our community runs on devs like <em>you</em>.</p>
|
<p>There are <a href="https://github.com/awesome-selfhosted/awesome-selfhosted" target="_blank">thousands</a> of wonderful open-source services out there - just waiting to be added to the Embassy Marketplace.</p>
|
||||||
|
<p>If you're familiar with Docker or Rust (or want to learn!), check out our step-by-step packaging tutorials.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<a class="btn" href="{{ site.dev.url }}">learn more</a>
|
<a class="btn" href="{{ site.dev.url }}">learn more</a>
|
||||||
@@ -13,7 +14,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="code-wrapper"><img src="assets/images/dockerfile.png" alt=""></div>
|
<div class="code-wrapper"><img src="assets/images/dockerfile.png" alt="screenshot of dockerfile" title="screenshot of dockerfile"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
<section id="hero">
|
<section id="hero">
|
||||||
<div id="hero-image">
|
<div id="hero-image">
|
||||||
<img rel="preload" as="image" src="assets/images/explosion.png" alt="">
|
<img src="assets/images/explosion.png" alt="voxel explosion" title="voxel explosion">
|
||||||
<img rel="preload" as="image" class="img-shadow" src="assets/images/explosion.png" alt="">
|
<img as="image" class="img-shadow" src="assets/images/explosion.png" alt="">
|
||||||
</div>
|
</div>
|
||||||
<div id="logo">
|
<div id="logo">
|
||||||
<img class="unlazy" src="assets/images/start9_logo.png" alt="">
|
{% include "components/svg/logo.svg" %}
|
||||||
<span>sovereign computing</span>
|
<span>sovereign computing</span>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -8,11 +8,11 @@
|
|||||||
App companies can see your pictures, read your documents, listen to your conversations, track your location, sell your
|
App companies can see your pictures, read your documents, listen to your conversations, track your location, sell your
|
||||||
private information, permanently delete your data, or cut you off at any time. Even if the companies behind these apps
|
private information, permanently delete your data, or cut you off at any time. Even if the companies behind these apps
|
||||||
are not malicious, they are prime targets for hackers and are vulnerable to political winds.</p>
|
are not malicious, they are prime targets for hackers and are vulnerable to political winds.</p>
|
||||||
{# <div class="image-with-shadow">
|
<div class="image-with-shadow">
|
||||||
{% include "components/svg/big-tech-network-diagram.svg" %}
|
{% include "components/svg/big-tech-network-diagram.svg" %}
|
||||||
<div class="img-shadow">{% include "components/svg/big-tech-network-diagram.svg" %}</div>
|
<div class="img-shadow">{% include "components/svg/big-tech-network-diagram.svg" %}</div>
|
||||||
</div> #}
|
</div>
|
||||||
{% include "components/svg/big-tech-network-diagram.svg" %}
|
{# {% include "components/svg/big-tech-network-diagram.svg" %} #}
|
||||||
</div>
|
</div>
|
||||||
<div class="subsection">
|
<div class="subsection">
|
||||||
<h1>Take back
|
<h1>Take back
|
||||||
@@ -25,10 +25,10 @@
|
|||||||
namely software developers, corporations, wealthy individuals, and politicians.
|
namely software developers, corporations, wealthy individuals, and politicians.
|
||||||
<em>Start9 levels the playing field</em>
|
<em>Start9 levels the playing field</em>
|
||||||
by making it possible for the rest of us.</p>
|
by making it possible for the rest of us.</p>
|
||||||
{# <div class="image-with-shadow">
|
<div class="image-with-shadow">
|
||||||
{% include "components/svg/embassyos-network-diagram.svg" %}
|
|
||||||
<div class="img-shadow">{% include "components/svg/embassyos-network-diagram.svg" %}</div>
|
|
||||||
</div> #}
|
|
||||||
{% include "components/svg/embassyos-network-diagram_red_extended.svg" %}
|
{% include "components/svg/embassyos-network-diagram_red_extended.svg" %}
|
||||||
|
<div class="img-shadow">{% include "components/svg/embassyos-network-diagram_red_extended.svg" %}</div>
|
||||||
|
</div>
|
||||||
|
{# {% include "components/svg/embassyos-network-diagram_red_extended.svg" %} #}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
@@ -2,23 +2,20 @@
|
|||||||
<h1>Powered by <em>EmbassyOS</em></h1>
|
<h1>Powered by <em>EmbassyOS</em></h1>
|
||||||
<div>
|
<div>
|
||||||
<p>
|
<p>
|
||||||
In the past, running a server was only possible for highly technical people or those who could afford to hire them;
|
EmbassyOS (EOS) is a browser-based, graphical operating system for a personal server, designed to <em>
|
||||||
namely software developers, corporations, wealthy individuals, and politicians. Start9 levels the playing field by
|
turn anyone into a
|
||||||
making it possible for the rest of us.
|
system administrator
|
||||||
</p>
|
</em> capable of managing their own server.
|
||||||
<p>
|
|
||||||
EmbassyOS (EOS) is a browser-based, graphical operating system for a personal server, designed to turn anyone into a
|
|
||||||
system’s administrator capable of managing their own server.
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="image-with-shadow">
|
<div class="image-with-shadow">
|
||||||
{% include "components/svg/stack.svg" %}
|
{% include "components/svg/stack-new.svg" %}
|
||||||
<div class="img-shadow">{% include "components/svg/stack.svg" %}</div>
|
<div class="img-shadow">{% include "components/svg/stack-new.svg" %}</div>
|
||||||
</div>
|
</div>
|
||||||
<a class="source-link" href="{{ site.poweredBy.url }}" target="_blank">
|
<a class="source-link" href="{{ site.poweredBy.url }}" target="_blank">
|
||||||
<div class="image-with-shadow">
|
<div class="image-with-shadow">
|
||||||
<img src="../assets/images/code1.png" alt=""/>
|
<img src="../assets/images/code1.png" alt="html tag icon" title="html tag icon"/>
|
||||||
<img class="img-shadow" src="../assets/images/code1.png" alt=""/>
|
<img class="img-shadow" src="../assets/images/code1.png" style="filter: blur(.8rem) brightness(0)" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
check out the <span>source code</span></a>
|
check out the <span>source code</span></a>
|
||||||
</section>
|
</section>
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
<section id="products">
|
<section id="products">
|
||||||
<div class="subsection">
|
<div class="subsection">
|
||||||
<a class="product product--buy" href="{{ site.products.buyUrl }}">
|
<a class="product product--buy" href="{{ site.products.buyUrl }}">
|
||||||
<img src="../assets/images/buy-centered.png" alt="">
|
<img src="../assets/images/buy-centered.png" alt="prefab embassy, represented in voxels" title="prefab embassy, represented in voxels">
|
||||||
<img class="img-shadow" src="../assets/images/buy-centered.png" alt="">
|
<img class="img-shadow" src="../assets/images/buy-centered.png" alt="">
|
||||||
<div class="heading">
|
<div class="heading">
|
||||||
<h1 class="product__header">buy</h1>
|
<h1 class="product__header">buy</h1>
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="subsection">
|
<div class="subsection">
|
||||||
<a class="product product--diy" href="{{ site.products.diyUrl }}">
|
<a class="product product--diy" href="{{ site.products.diyUrl }}">
|
||||||
<img src="../assets/images/diy.png" alt="">
|
<img src="../assets/images/diy.png" alt="partially assembled embassy, represented in voxels" title="partially assembled embassy, represented in voxels">
|
||||||
<img class="img-shadow" src="../assets/images/diy.png" alt="">
|
<img class="img-shadow" src="../assets/images/diy.png" alt="">
|
||||||
<div class="heading">
|
<div class="heading">
|
||||||
<h1 class="product__header">diy</h1>
|
<h1 class="product__header">diy</h1>
|
||||||
|
|||||||
@@ -14,7 +14,9 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<img src="../assets/images/support1.png" alt="">
|
<div class="image-with-shadow">
|
||||||
|
<img src="../assets/images/support1.png" alt="life preserver icon" title="life preserver icon">
|
||||||
|
<img class="img-shadow" src="../assets/images/support1.png" alt=""></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<a class="btn" href="{{ site.support.url }}">meet the team</a>
|
<a class="btn" href="{{ site.support.url }}">meet the team</a>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 118 KiB After Width: | Height: | Size: 104 KiB |
19
src/_includes/components/svg/logo.svg
Normal file
|
After Width: | Height: | Size: 10 KiB |
22
src/_includes/components/svg/stack-new.svg
Normal file
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 9.7 KiB |
@@ -12,4 +12,6 @@ layout: layouts/base.njk
|
|||||||
<script src="{{ '/assets/js/ScrollSmoother.min.js' | url }}"></script>
|
<script src="{{ '/assets/js/ScrollSmoother.min.js' | url }}"></script>
|
||||||
<script src="{{ '/assets/js/DrawSVGPlugin.min.js' | url }}"></script>
|
<script src="{{ '/assets/js/DrawSVGPlugin.min.js' | url }}"></script>
|
||||||
<script src="{{ '/assets/js/CustomEase.min.js' | url }}"></script>
|
<script src="{{ '/assets/js/CustomEase.min.js' | url }}"></script>
|
||||||
<script src="{{ '/assets/js/main.js' | url }}"></script>
|
<script src="{{ '/assets/js/_header.js' | url }}"></script>
|
||||||
|
<script src="{{ '/assets/js/_menu.js' | url }}"></script>
|
||||||
|
<script src="{{ '/assets/js/peripheral.js' | url }}"></script>
|
||||||
@@ -6,7 +6,7 @@ layout: layouts/peripheral.njk
|
|||||||
{# <script src="{{ '/assets/js/getTeam.js' | url }}"></script> #}
|
{# <script src="{{ '/assets/js/getTeam.js' | url }}"></script> #}
|
||||||
<section id="hero" class="hero--about">
|
<section id="hero" class="hero--about">
|
||||||
<div id="hero-image">
|
<div id="hero-image">
|
||||||
<img src="../assets/images/about-hero.png" alt=""/>
|
<img src="../assets/images/about-hero.png" alt="about page hero image: a robot emerging from the embasssy" title="about page hero image: a robot emerging from the embasssy"/>
|
||||||
<img class="img-shadow" src="../assets/images/about-hero.png" alt=""/>
|
<img class="img-shadow" src="../assets/images/about-hero.png" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
<div id="logo">
|
<div id="logo">
|
||||||
@@ -49,12 +49,12 @@ layout: layouts/peripheral.njk
|
|||||||
<h2>mission</h2>
|
<h2>mission</h2>
|
||||||
<div class="section__double-image">
|
<div class="section__double-image">
|
||||||
<div class="section__image section__image--left">
|
<div class="section__image section__image--left">
|
||||||
<img src="../assets/images/mission1.png" alt=""/>
|
<img src="../assets/images/mission1.png" alt="mission section hero: a rocketship trail" title="mission section hero: a rocketship trail"/>
|
||||||
<img class="img-shadow" src="../assets/images/mission1.png" alt=""/>
|
<img class="img-shadow" src="../assets/images/mission1.png" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
<h3>To eliminate the need for trusted third parties in the human/computer relationship.</h3>
|
<h3>To eliminate the need for trusted third parties in the human/computer relationship.</h3>
|
||||||
<div class="section__image section__image--right">
|
<div class="section__image section__image--right">
|
||||||
<img src="../assets/images/mission2.png" alt=""/>
|
<img src="../assets/images/mission2.png" alt="mission section hero: a rocketship with trail" title="mission section hero: a rocketship with trail"/>
|
||||||
<img class="img-shadow" src="../assets/images/mission2.png" alt=""/>
|
<img class="img-shadow" src="../assets/images/mission2.png" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -63,7 +63,7 @@ layout: layouts/peripheral.njk
|
|||||||
<section id="values">
|
<section id="values">
|
||||||
<h2>values</h2>
|
<h2>values</h2>
|
||||||
<div class="section__image">
|
<div class="section__image">
|
||||||
<img src="../assets/images/values.png" alt=""/>
|
<img src="../assets/images/values.png" alt="values section hero: an eye with a slash through it" title="values section hero: an eye with a slash through it"/>
|
||||||
<img class="img-shadow" src="../assets/images/values.png" alt=""/>
|
<img class="img-shadow" src="../assets/images/values.png" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
@@ -93,7 +93,7 @@ layout: layouts/peripheral.njk
|
|||||||
<section id="virtues">
|
<section id="virtues">
|
||||||
<h2>virtues</h2>
|
<h2>virtues</h2>
|
||||||
<div class="section__image">
|
<div class="section__image">
|
||||||
<img src="../assets/images/virtues.png" alt=""/>
|
<img src="../assets/images/virtues.png" alt="virtues section hero: a sunrise between mountains" title="virtues section hero: a sunrise between mountains"/>
|
||||||
<img class="img-shadow" src="../assets/images/virtues.png" alt=""/>
|
<img class="img-shadow" src="../assets/images/virtues.png" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
@@ -118,7 +118,7 @@ layout: layouts/peripheral.njk
|
|||||||
<section id="origin">
|
<section id="origin">
|
||||||
<h2>origin story</h2>
|
<h2>origin story</h2>
|
||||||
<div class="section__image">
|
<div class="section__image">
|
||||||
<img src="../assets/images/origin.png" alt=""/>
|
<img src="../assets/images/origin.png" alt="origin section hero: pikachu" title="origin section hero: pikachu"/>
|
||||||
<img class="img-shadow" src="../assets/images/origin.png" alt=""/>
|
<img class="img-shadow" src="../assets/images/origin.png" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
@@ -166,14 +166,14 @@ layout: layouts/peripheral.njk
|
|||||||
<section id="team">
|
<section id="team">
|
||||||
<h2>our team</h2>
|
<h2>our team</h2>
|
||||||
<div class="section__image">
|
<div class="section__image">
|
||||||
<img src="../assets/images/team2.png" alt=""/>
|
<img src="../assets/images/team2.png" alt="team section hero: robots being printed" title="team section hero: robots being printed"/>
|
||||||
<img class="img-shadow" src="../assets/images/team2.png" alt=""/>
|
<img class="img-shadow" src="../assets/images/team2.png" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ul class="members">
|
<ul class="members">
|
||||||
{% for member in team %}
|
{% for member in team %}
|
||||||
<li class="member">
|
<li class="member">
|
||||||
<img class="member__avatar" src="{{ member.avatar_url }}" alt=""/>
|
<img class="member__avatar" src="{{ member.avatar_url }}" alt="{{ member.name }}'s avatar" title="{{ member.name }}'s avatar"/>
|
||||||
<div class="member__content">
|
<div class="member__content">
|
||||||
<h4>{{ member.name }}</h4>
|
<h4>{{ member.name }}</h4>
|
||||||
<h5>{{ member.position }}</h5>
|
<h5>{{ member.position }}</h5>
|
||||||
|
|||||||
BIN
src/assets/images/service-icons/ghost.png
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
src/assets/images/service-icons/gitea.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
src/assets/images/service-icons/photoview.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/assets/images/service-icons/syncthing.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
26
src/assets/js/_header.js
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
//////////////////////////////////////////
|
||||||
|
// HEADER
|
||||||
|
|
||||||
|
gsap.to("header", {
|
||||||
|
duration: 0.5,
|
||||||
|
backgroundColor: "rgba(0,0,0,0.1)",
|
||||||
|
backdropFilter: "blur(10px)",
|
||||||
|
scrollTrigger: {
|
||||||
|
trigger: "#hero-image",
|
||||||
|
scrub: true,
|
||||||
|
start: "center top", // "triggerElement page"
|
||||||
|
end: "bottom top", // "triggerElement page"
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
gsap.to(".header__logo", {
|
||||||
|
duration: 0.5,
|
||||||
|
opacity: "1",
|
||||||
|
filter: "blur(0px)",
|
||||||
|
scrollTrigger: {
|
||||||
|
trigger: "#hero-image",
|
||||||
|
scrub: true,
|
||||||
|
start: "center top", // "triggerElement page"
|
||||||
|
end: "bottom top", // "triggerElement page"
|
||||||
|
},
|
||||||
|
});
|
||||||
18
src/assets/js/_hero.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
//////////////////////////////////////////
|
||||||
|
// HERO
|
||||||
|
|
||||||
|
gsap.from("#hero-image", {
|
||||||
|
duration: 1,
|
||||||
|
//y: "-10rem",
|
||||||
|
scale: 0.95,
|
||||||
|
opacity: 0,
|
||||||
|
filter: "blur(10px)",
|
||||||
|
delay: 0.5,
|
||||||
|
});
|
||||||
|
gsap.from("#logo", {
|
||||||
|
duration: 0.5,
|
||||||
|
y: "-5rem",
|
||||||
|
opacity: 0,
|
||||||
|
delay: 1.25,
|
||||||
|
//ease: "in-out"
|
||||||
|
});
|
||||||
30
src/assets/js/_menu.js
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
//////////////////////////////////////////
|
||||||
|
// MENU
|
||||||
|
|
||||||
|
let menuOpen = document.getElementById("menu-open"),
|
||||||
|
menuClose = document.getElementById("menu-close"),
|
||||||
|
openedMenuArray = gsap.utils.toArray(".opened-menu"),
|
||||||
|
closedMenuArray = gsap.utils.toArray(".closed-menu");
|
||||||
|
|
||||||
|
menuOpen.addEventListener("click", (e) => openMenu(e));
|
||||||
|
menuClose.addEventListener("click", (e) => closeMenu(e));
|
||||||
|
|
||||||
|
function openMenu(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
gsap.to("#menu", { y: "0vh" });
|
||||||
|
gsap.to("main", { y: "100vh" });
|
||||||
|
gsap.to(openedMenuArray, { x: "0", opacity: 1, width: "auto" });
|
||||||
|
gsap.to(closedMenuArray, { x: "3rem", opacity: 0, width: 0 });
|
||||||
|
gsap.to("html", { overflow: "hidden" });
|
||||||
|
document.querySelector('html').classList.add("menu-is-open");
|
||||||
|
}
|
||||||
|
function closeMenu(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
gsap.to("#menu", { y: "-100vh" });
|
||||||
|
gsap.to("main", { y: "0vh" });
|
||||||
|
gsap.to(closedMenuArray, { x: "0", opacity: 1, width: "auto" });
|
||||||
|
gsap.to(openedMenuArray, { x: "3rem", opacity: 0, width: 0 });
|
||||||
|
gsap.to("html", { overflow: "scroll" });
|
||||||
|
gsap.to("html", { overflow: "overlay" });
|
||||||
|
document.querySelector('html').classList.remove("menu-is-open");
|
||||||
|
}
|
||||||
@@ -1,6 +1,3 @@
|
|||||||
gsap.registerPlugin(DrawSVGPlugin);
|
|
||||||
gsap.registerPlugin(CustomEase);
|
|
||||||
|
|
||||||
var bodyRect = document.body.getBoundingClientRect();
|
var bodyRect = document.body.getBoundingClientRect();
|
||||||
|
|
||||||
const sections = [
|
const sections = [
|
||||||
@@ -61,55 +58,9 @@ const defaultActions = "play none none none"; //onEnter, onLeave, onEnterBack, a
|
|||||||
// });
|
// });
|
||||||
// }, 2000);
|
// }, 2000);
|
||||||
|
|
||||||
//////////////////////////////////////////
|
|
||||||
// MENU
|
|
||||||
|
|
||||||
let menuOpen = document.getElementById("menu-open"),
|
|
||||||
menuClose = document.getElementById("menu-close"),
|
|
||||||
openedMenuArray = gsap.utils.toArray(".opened-menu"),
|
|
||||||
closedMenuArray = gsap.utils.toArray(".closed-menu");
|
|
||||||
|
|
||||||
menuOpen.addEventListener("click", (e) => openMenu(e));
|
|
||||||
menuClose.addEventListener("click", (e) => closeMenu(e));
|
|
||||||
|
|
||||||
function openMenu(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
gsap.to("#menu", { y: "0vh" });
|
|
||||||
gsap.to("main", { y: "100vh" });
|
|
||||||
gsap.to(openedMenuArray, { x: "0", opacity: 1, width: "auto" });
|
|
||||||
gsap.to(closedMenuArray, { x: "3rem", opacity: 0, width: 0 });
|
|
||||||
gsap.to("html", { overflow: "hidden" });
|
|
||||||
document.querySelector('html').classList.add("menu-is-open");
|
|
||||||
}
|
|
||||||
function closeMenu(e) {
|
|
||||||
e.preventDefault();
|
|
||||||
gsap.to("#menu", { y: "-100vh" });
|
|
||||||
gsap.to("main", { y: "0vh" });
|
|
||||||
gsap.to(closedMenuArray, { x: "0", opacity: 1, width: "auto" });
|
|
||||||
gsap.to(openedMenuArray, { x: "3rem", opacity: 0, width: 0 });
|
|
||||||
gsap.to("html", { overflow: "scroll" });
|
|
||||||
gsap.to("html", { overflow: "overlay" });
|
|
||||||
document.querySelector('html').classList.remove("menu-is-open");
|
|
||||||
}
|
|
||||||
|
|
||||||
//////////////////////////////////////////
|
|
||||||
// HERO
|
|
||||||
|
|
||||||
gsap.from("#hero-image", {
|
|
||||||
duration: 1,
|
|
||||||
//y: "-10rem",
|
|
||||||
scale: 0.95,
|
|
||||||
opacity: 0,
|
|
||||||
filter: "blur(10px)",
|
|
||||||
delay: 0.5,
|
|
||||||
});
|
|
||||||
gsap.from("#logo", {
|
|
||||||
duration: 0.5,
|
|
||||||
y: "-5rem",
|
|
||||||
opacity: 0,
|
|
||||||
delay: 1.25,
|
|
||||||
//ease: "in-out"
|
|
||||||
});
|
|
||||||
//gsap.config({trialWarn: false});
|
//gsap.config({trialWarn: false});
|
||||||
|
|
||||||
// create the smooth scroller FIRST!
|
// create the smooth scroller FIRST!
|
||||||
@@ -123,32 +74,7 @@ gsap.from("#logo", {
|
|||||||
// backdrop-filter: blur(10px);
|
// backdrop-filter: blur(10px);
|
||||||
//background-color: rgba(0,0,0,0.1);
|
//background-color: rgba(0,0,0,0.1);
|
||||||
|
|
||||||
//////////////////////////////////////////
|
|
||||||
// HEADER
|
|
||||||
|
|
||||||
gsap.to("header", {
|
|
||||||
duration: 0.5,
|
|
||||||
backgroundColor: "rgba(0,0,0,0.1)",
|
|
||||||
backdropFilter: "blur(10px)",
|
|
||||||
scrollTrigger: {
|
|
||||||
trigger: "#hero-image",
|
|
||||||
scrub: true,
|
|
||||||
start: "center top", // "triggerElement page"
|
|
||||||
end: "bottom top", // "triggerElement page"
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
gsap.to(".header__logo", {
|
|
||||||
duration: 0.5,
|
|
||||||
opacity: "1",
|
|
||||||
filter: "blur(0px)",
|
|
||||||
scrollTrigger: {
|
|
||||||
trigger: "#hero-image",
|
|
||||||
scrub: true,
|
|
||||||
start: "center top", // "triggerElement page"
|
|
||||||
end: "bottom top", // "triggerElement page"
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
gsap.from("#hero-to-pitch path:first-child", {
|
gsap.from("#hero-to-pitch path:first-child", {
|
||||||
drawSVG: 0,
|
drawSVG: 0,
|
||||||
@@ -398,7 +324,7 @@ function positionServiceIcons() {
|
|||||||
|
|
||||||
function onResizeComplete() {
|
function onResizeComplete() {
|
||||||
positionServiceIcons();
|
positionServiceIcons();
|
||||||
};
|
}
|
||||||
var resizeTimeout = setTimeout(onResizeComplete, 400);
|
var resizeTimeout = setTimeout(onResizeComplete, 400);
|
||||||
window.onresize = function() {
|
window.onresize = function() {
|
||||||
clearTimeout(resizeTimeout);
|
clearTimeout(resizeTimeout);
|
||||||
@@ -457,19 +383,33 @@ gsap.from("#be-your-own #ticker", {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
let pseudoserviceArray = gsap.utils.toArray(".pseudoservice"),
|
let pseudoserviceArray, next, itemHeight, listHeight, windowHeight, kerplunk, kerplunk2;
|
||||||
next = 3, // time to change
|
|
||||||
|
pseudoserviceArray = gsap.utils.toArray(".pseudoservice");
|
||||||
|
|
||||||
|
next = 4;
|
||||||
|
|
||||||
|
function initializeSizes() {
|
||||||
|
|
||||||
itemHeight = document
|
itemHeight = document
|
||||||
.querySelector(".pseudoservice")
|
.querySelector(".pseudoservice")
|
||||||
.getBoundingClientRect().height,
|
.getBoundingClientRect().height;
|
||||||
|
|
||||||
listHeight = document
|
listHeight = document
|
||||||
.querySelector(".pseudoservices")
|
.querySelector(".pseudoservices")
|
||||||
.getBoundingClientRect().height,
|
.getBoundingClientRect().height;
|
||||||
windowHeight = document.getElementById("ticker__window").clientHeight,
|
|
||||||
|
windowHeight = document.getElementById("ticker__window").clientHeight;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
initializeSizes();
|
||||||
|
|
||||||
kerplunk = CustomEase.create(
|
kerplunk = CustomEase.create(
|
||||||
"custom",
|
"custom",
|
||||||
"M0,0 C0.126,0.382 0.066,0.863 0.198,1.036 0.25,1.104 0.264,0.982 0.326,0.982 0.344,0.982 0.489,0.998 0.516,1 0.65,1.007 0.863,1 1,1 "
|
"M0,0 C0.126,0.382 0.066,0.863 0.198,1.036 0.25,1.104 0.264,0.982 0.326,0.982 0.344,0.982 0.489,0.998 0.516,1 0.65,1.007 0.863,1 1,1 "
|
||||||
),
|
);
|
||||||
|
|
||||||
kerplunk2 = CustomEase.create(
|
kerplunk2 = CustomEase.create(
|
||||||
"custom",
|
"custom",
|
||||||
"M0,0 C0.126,0.382 0.178,0.802 0.288,1.052 0.303,1.088 0.372,0.99 0.434,0.99 0.502,0.99 0.497,1 0.524,1 0.664,1 0.863,1 1,1 "
|
"M0,0 C0.126,0.382 0.178,0.802 0.288,1.052 0.303,1.088 0.372,0.99 0.434,0.99 0.502,0.99 0.497,1 0.524,1 0.664,1 0.863,1 1,1 "
|
||||||
@@ -495,10 +435,10 @@ function crossfade() {
|
|||||||
|
|
||||||
var thisPseudoservice = pseudoserviceArray[2].innerHTML,
|
var thisPseudoservice = pseudoserviceArray[2].innerHTML,
|
||||||
thisElement = document.querySelector(
|
thisElement = document.querySelector(
|
||||||
".slides-container--" + thisPseudoservice.toLowerCase()
|
".service-container--" + thisPseudoservice.toLowerCase().replace(' ','-')
|
||||||
);
|
);
|
||||||
|
|
||||||
var slidesContainerArray = document.querySelectorAll(".slides-container");
|
var slidesContainerArray = document.querySelectorAll(".service-container");
|
||||||
slidesContainerArray.forEach((thisContainer) => {
|
slidesContainerArray.forEach((thisContainer) => {
|
||||||
thisContainer.style.display = "none";
|
thisContainer.style.display = "none";
|
||||||
});
|
});
|
||||||
@@ -511,101 +451,104 @@ function crossfade() {
|
|||||||
// start the crossfade after next = 3 sec
|
// start the crossfade after next = 3 sec
|
||||||
gsap.delayedCall(next, crossfade);
|
gsap.delayedCall(next, crossfade);
|
||||||
|
|
||||||
document.querySelector(".services").addEventListener("mouseenter", pauseThunk);
|
// document.querySelector(".services").addEventListener("mouseenter", pauseThunk);
|
||||||
// TODO: pause not working - Id not found
|
// // TODO: pause not working - Id not found
|
||||||
function pauseThunk() {
|
// function pauseThunk() {
|
||||||
console.log("asfd");
|
// console.log("asfd");
|
||||||
gsap.getById("thunk").kill();
|
// gsap.getById("thunk").kill();
|
||||||
}
|
// }
|
||||||
|
|
||||||
// CAROUSEL
|
// CAROUSEL
|
||||||
|
|
||||||
var slideDelay = 1.5;
|
// var slideDelay = 1.5;
|
||||||
var slideDuration = 0.3;
|
// var slideDuration = 0.3;
|
||||||
var wrap = true;
|
// var wrap = true;
|
||||||
|
|
||||||
var slides = document.querySelectorAll(".slide");
|
// var slides = document.querySelectorAll(".slide");
|
||||||
var prevButton = document.querySelector("#prevButton");
|
// var prevButton = document.querySelector("#prevButton");
|
||||||
var nextButton = document.querySelector("#nextButton");
|
// var nextButton = document.querySelector("#nextButton");
|
||||||
var progressWrap = gsap.utils.wrap(0, 1);
|
// var progressWrap = gsap.utils.wrap(0, 1);
|
||||||
|
|
||||||
var numSlides = slides.length;
|
// var numSlides = slides.length;
|
||||||
|
|
||||||
gsap.set(slides, {
|
// gsap.set(slides, {
|
||||||
xPercent: (i) => i * 100,
|
// xPercent: (i) => i * 100,
|
||||||
});
|
// });
|
||||||
|
|
||||||
var wrapX = gsap.utils.wrap(-100, (numSlides - 1) * 100);
|
// var wrapX = gsap.utils.wrap(-100, (numSlides - 1) * 100);
|
||||||
|
|
||||||
var animation = gsap.to(slides, {
|
// var animation = gsap.to(slides, {
|
||||||
xPercent: "+=" + numSlides * 100,
|
// xPercent: "+=" + numSlides * 100,
|
||||||
duration: 1,
|
// duration: 1,
|
||||||
ease: "none",
|
// ease: "none",
|
||||||
paused: true,
|
// paused: true,
|
||||||
repeat: -1,
|
// repeat: -1,
|
||||||
modifiers: {
|
// modifiers: {
|
||||||
xPercent: wrapX,
|
// xPercent: wrapX,
|
||||||
},
|
// },
|
||||||
});
|
// });
|
||||||
|
|
||||||
var proxy = document.createElement("div");
|
// var proxy = document.createElement("div");
|
||||||
var slideAnimation = gsap.to({}, {});
|
// var slideAnimation = gsap.to({}, {});
|
||||||
var slideWidth = 0;
|
// var slideWidth = 0;
|
||||||
var wrapWidth = 0;
|
// var wrapWidth = 0;
|
||||||
|
|
||||||
resize();
|
resize();
|
||||||
|
|
||||||
window.addEventListener("resize", resize);
|
window.addEventListener("resize", resize);
|
||||||
|
|
||||||
prevButton.addEventListener("click", function () {
|
// prevButton.addEventListener("click", function () {
|
||||||
animateSlides(1);
|
// animateSlides(1);
|
||||||
});
|
// });
|
||||||
|
|
||||||
nextButton.addEventListener("click", function () {
|
// nextButton.addEventListener("click", function () {
|
||||||
animateSlides(-1);
|
// animateSlides(-1);
|
||||||
});
|
// });
|
||||||
|
|
||||||
// function updateDraggable() {
|
// function updateDraggable() {
|
||||||
// slideAnimation.kill();
|
// slideAnimation.kill();
|
||||||
// this.update();
|
// this.update();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
function animateSlides(direction) {
|
// function animateSlides(direction) {
|
||||||
slideAnimation.kill();
|
// slideAnimation.kill();
|
||||||
var x = snapX(gsap.getProperty(proxy, "x") + direction * slideWidth);
|
// var x = snapX(gsap.getProperty(proxy, "x") + direction * slideWidth);
|
||||||
|
|
||||||
slideAnimation = gsap.to(proxy, {
|
// slideAnimation = gsap.to(proxy, {
|
||||||
x: x,
|
// x: x,
|
||||||
duration: slideDuration,
|
// duration: slideDuration,
|
||||||
onUpdate: updateProgress,
|
// onUpdate: updateProgress,
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
|
|
||||||
function updateProgress() {
|
// function updateProgress() {
|
||||||
animation.progress(progressWrap(gsap.getProperty(proxy, "x") / wrapWidth));
|
// animation.progress(progressWrap(gsap.getProperty(proxy, "x") / wrapWidth));
|
||||||
}
|
// }
|
||||||
|
|
||||||
function snapX(value) {
|
// function snapX(value) {
|
||||||
let snapped = gsap.utils.snap(slideWidth, value);
|
// let snapped = gsap.utils.snap(slideWidth, value);
|
||||||
return wrap
|
// return wrap
|
||||||
? snapped
|
// ? snapped
|
||||||
: gsap.utils.clamp(-slideWidth * (numSlides - 1), 0, snapped);
|
// : gsap.utils.clamp(-slideWidth * (numSlides - 1), 0, snapped);
|
||||||
}
|
// }
|
||||||
|
|
||||||
function resize() {
|
function resize() {
|
||||||
var norm = gsap.getProperty(proxy, "x") / wrapWidth || 0;
|
initializeSizes();
|
||||||
|
|
||||||
slideWidth = slides[0].offsetWidth;
|
// var norm = gsap.getProperty(proxy, "x") / wrapWidth || 0;
|
||||||
wrapWidth = slideWidth * numSlides;
|
|
||||||
|
|
||||||
wrap; // || draggable.applyBounds({minX: -slideWidth * (numSlides - 1), maxX: 0});
|
// slideWidth = slides[0].offsetWidth;
|
||||||
|
// wrapWidth = slideWidth * numSlides;
|
||||||
|
|
||||||
gsap.set(proxy, {
|
// wrap; // || draggable.applyBounds({minX: -slideWidth * (numSlides - 1), maxX: 0});
|
||||||
x: norm * wrapWidth,
|
|
||||||
});
|
// gsap.set(proxy, {
|
||||||
|
// x: norm * wrapWidth,
|
||||||
|
// });
|
||||||
|
|
||||||
|
// animateSlides(0);
|
||||||
|
// slideAnimation.progress(1);
|
||||||
|
|
||||||
animateSlides(0);
|
|
||||||
slideAnimation.progress(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
gsap.from("#be-to-powered path", {
|
gsap.from("#be-to-powered path", {
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
gsap.to(
|
|
||||||
"header",
|
|
||||||
{
|
|
||||||
duration: 0.5,
|
|
||||||
backgroundColor: "rgba(0,0,0,0.1)",
|
|
||||||
backdropFilter: "blur(10px)",
|
|
||||||
scrollTrigger: {
|
|
||||||
trigger: "#hero-image",
|
|
||||||
scrub: true,
|
|
||||||
start: "center top", // "triggerElement page"
|
|
||||||
end: "bottom top", // "triggerElement page"
|
|
||||||
},
|
|
||||||
}
|
|
||||||
);
|
|
||||||
147
src/assets/styles/be-your-own copy.scss
Normal file
@@ -0,0 +1,147 @@
|
|||||||
|
#be-your-own {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6rem;
|
||||||
|
//margin: 0 0 6rem 0;
|
||||||
|
padding: 0 6rem 0 6rem;
|
||||||
|
box-sizing: border-box;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
--size: 3rem;
|
||||||
|
--p-t: calc(0.2 * var(--size));
|
||||||
|
--p-b: calc(0 * var(--size));
|
||||||
|
--p: var(--p-t) 0 var(--p-b) calc(0.2 * var(--size));
|
||||||
|
--line: calc(var(--p-t) + var(--p-b) + var(--size));
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ticker {
|
||||||
|
height: 50vh;
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
#ticker__selected-frame {
|
||||||
|
//outline: 1px solid white;
|
||||||
|
//outline-offset: calc(0.1 * var(--size));
|
||||||
|
font-size: var(--size);
|
||||||
|
text-transform: uppercase;
|
||||||
|
line-height: var(--size);
|
||||||
|
position: absolute;
|
||||||
|
top: calc(2 * var(--line));
|
||||||
|
left: -.5ch;
|
||||||
|
right: 0;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
height: var(--size);
|
||||||
|
padding: var(--p);
|
||||||
|
background-color: #353535;
|
||||||
|
border-bottom: 0.5rem #353535 solid;
|
||||||
|
}
|
||||||
|
#ticker__window {
|
||||||
|
height: 50vh;
|
||||||
|
width: calc(100vw - 12rem - 11.5ch);
|
||||||
|
overflow: hidden;
|
||||||
|
font-size: var(--size);
|
||||||
|
left: 11.5ch;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.pseudoservices {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
li {
|
||||||
|
list-style: none;
|
||||||
|
font-size: var(--size);
|
||||||
|
line-height: 1;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
height: var(--size);
|
||||||
|
padding: var(--p);
|
||||||
|
white-space: nowrap;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.services{
|
||||||
|
display: none;
|
||||||
|
position: absolute;
|
||||||
|
top: calc(3 * var(--line));
|
||||||
|
background-color: #353535;
|
||||||
|
padding: 2rem;
|
||||||
|
width: calc(11.5ch - 4rem);
|
||||||
|
font-size: var(--size);
|
||||||
|
left: -1rem;
|
||||||
|
|
||||||
|
img{
|
||||||
|
border-radius: 100%;
|
||||||
|
width: 5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.service{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.service__content{
|
||||||
|
color: var(--c-1);
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 400;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
a.btn{
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.slides-controls {
|
||||||
|
padding: 10px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 70px;
|
||||||
|
min-height: 70px;
|
||||||
|
gap: 2rem;
|
||||||
|
|
||||||
|
button{
|
||||||
|
background: none;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.slides-container {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
display: none;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide {
|
||||||
|
position: absolute;
|
||||||
|
font-size: 90px;
|
||||||
|
font-weight: 700;
|
||||||
|
color: rgba(255,255,255,0.9);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
width: calc(100% / 3);
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slides-inner {
|
||||||
|
position: relative;
|
||||||
|
height: 7rem;
|
||||||
|
width: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
@@ -1,3 +1,41 @@
|
|||||||
|
@media screen and (min-width: 900px) {
|
||||||
|
#be-your-own { --size: 3rem;
|
||||||
|
--rows-above: 2;
|
||||||
|
--rows-height: 7;}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1300px) {
|
||||||
|
#be-your-own {
|
||||||
|
--rows-above: 1;
|
||||||
|
--rows-height: 3;
|
||||||
|
}
|
||||||
|
.service__content{
|
||||||
|
justify-content: center !important;
|
||||||
|
}
|
||||||
|
.service__link{
|
||||||
|
margin: 10rem 0 0 0 !important;
|
||||||
|
flex-direction: row !important;
|
||||||
|
}
|
||||||
|
.service__info{
|
||||||
|
margin: 0 0 0 1rem !important;
|
||||||
|
&::before{
|
||||||
|
top: 25% !important;
|
||||||
|
left: -4rem !important;
|
||||||
|
align-self: flex-start !important;
|
||||||
|
justify-content: center !important;
|
||||||
|
border-top: 2rem transparent solid !important;
|
||||||
|
border-right: 2rem var(--c-text-accent) solid !important;
|
||||||
|
border-bottom: 2rem transparent solid !important;
|
||||||
|
border-left: 2rem transparent solid !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 900px) {
|
||||||
|
#be-your-own { --size: 2rem; }
|
||||||
|
}
|
||||||
|
|
||||||
#be-your-own {
|
#be-your-own {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
@@ -8,7 +46,7 @@
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
||||||
--size: 3rem;
|
//--size: 3rem;
|
||||||
--p-t: calc(0.2 * var(--size));
|
--p-t: calc(0.2 * var(--size));
|
||||||
--p-b: calc(0 * var(--size));
|
--p-b: calc(0 * var(--size));
|
||||||
--p: var(--p-t) 0 var(--p-b) calc(0.2 * var(--size));
|
--p: var(--p-t) 0 var(--p-b) calc(0.2 * var(--size));
|
||||||
@@ -18,7 +56,6 @@
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ticker {
|
#ticker {
|
||||||
height: 50vh;
|
height: 50vh;
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -31,8 +68,8 @@
|
|||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
line-height: var(--size);
|
line-height: var(--size);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: calc(2 * var(--line));
|
top: calc(var(--rows-above) * var(--line));
|
||||||
left: -.5ch;
|
left: -0.5ch;
|
||||||
right: 0;
|
right: 0;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -42,7 +79,7 @@
|
|||||||
border-bottom: 0.5rem #353535 solid;
|
border-bottom: 0.5rem #353535 solid;
|
||||||
}
|
}
|
||||||
#ticker__window {
|
#ticker__window {
|
||||||
height: 50vh;
|
height: calc(var(--rows-height) * var(--line));
|
||||||
width: calc(100vw - 12rem - 11.5ch);
|
width: calc(100vw - 12rem - 11.5ch);
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
font-size: var(--size);
|
font-size: var(--size);
|
||||||
@@ -67,31 +104,110 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.services {
|
.services {
|
||||||
display: none;
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: calc(3 * var(--line));
|
top: 0;
|
||||||
background-color: #353535;
|
bottom: 0;
|
||||||
|
//background-color: #353535;
|
||||||
padding: 2rem;
|
padding: 2rem;
|
||||||
width: calc(11.5ch - 4rem);
|
|
||||||
font-size: var(--size);
|
font-size: var(--size);
|
||||||
left: -1rem;
|
left: -1rem;
|
||||||
|
right: 0;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
border-radius: 100%;
|
border-radius: 100%;
|
||||||
width: 5rem;
|
width: 5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.service{
|
.service-container {
|
||||||
display: flex;
|
display: none;
|
||||||
align-items: center;
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
|
||||||
.service__link{
|
.service__content {
|
||||||
|
width: 100%;
|
||||||
color: var(--c-1);
|
color: var(--c-1);
|
||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
justify-content: flex-end;
|
||||||
gap: 1rem;
|
gap: 1rem;
|
||||||
|
width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
|
||||||
|
.service__link{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-top: 2rem;
|
||||||
|
margin-right: 5rem;
|
||||||
|
transition: var(--t-simple);
|
||||||
|
&:hover{
|
||||||
|
transform: scale(1.05);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.service__image{
|
||||||
|
width: 12rem;
|
||||||
|
&.service__image--gitea, &.service__image--photoview{
|
||||||
|
background-color: var(--c-1);
|
||||||
|
padding: 1rem;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.service__info{
|
||||||
|
background-color: var(--c-text-accent);
|
||||||
|
width: 20ch;
|
||||||
|
padding: 1rem;
|
||||||
|
margin-top: 1rem;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
box-shadow: 0 3rem 2rem 0rem rgb(0 0 0 / 40%);
|
||||||
|
|
||||||
|
&::before{
|
||||||
|
position: absolute;
|
||||||
|
top: -4rem;
|
||||||
|
content: '';
|
||||||
|
display: block;
|
||||||
|
//width: 0;
|
||||||
|
//height: 0;
|
||||||
|
border-top: 2rem transparent solid;
|
||||||
|
border-right: 2rem transparent solid;
|
||||||
|
border-bottom: 2rem var(--c-text-accent) solid;
|
||||||
|
border-left: 2rem transparent solid;
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
*{
|
||||||
|
color: var(--c-text-primary);
|
||||||
|
}
|
||||||
|
p{
|
||||||
|
font-size: .75rem;
|
||||||
|
height: 4em;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.service__bkg{
|
||||||
|
filter: opacity(0.25) blur(2rem);
|
||||||
|
width: 100%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
z-index: -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(n + 2) {
|
||||||
|
outline: 1px solid orange;
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,10 +16,11 @@
|
|||||||
gap:1rem;
|
gap:1rem;
|
||||||
}
|
}
|
||||||
.wrapper{
|
.wrapper{
|
||||||
background-color: var(--c-1);
|
background: linear-gradient(45deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.05));
|
||||||
max-width: 35ch;
|
max-width: 35ch;
|
||||||
|
padding: 2rem;
|
||||||
.content {
|
.content {
|
||||||
padding: 1rem;
|
//padding: 1rem;
|
||||||
h3{
|
h3{
|
||||||
margin: 0;
|
margin: 0;
|
||||||
font-family: var(--f-accent);
|
font-family: var(--f-accent);
|
||||||
@@ -33,7 +34,7 @@
|
|||||||
}
|
}
|
||||||
.footer{
|
.footer{
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
background: var(--c-spacer);
|
//background: var(--c-spacer);
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
@@ -42,7 +43,7 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
&::before{
|
&::before{
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 17rem;
|
top: 15rem;
|
||||||
left: -4rem;
|
left: -4rem;
|
||||||
content: '';
|
content: '';
|
||||||
display: block;
|
display: block;
|
||||||
@@ -58,5 +59,6 @@
|
|||||||
img {
|
img {
|
||||||
width: 20rem;
|
width: 20rem;
|
||||||
box-shadow: 0 3rem 2rem 0rem rgb(0 0 0 / 40%);
|
box-shadow: 0 3rem 2rem 0rem rgb(0 0 0 / 40%);
|
||||||
|
border-radius: 1.3rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,8 +7,8 @@ footer{
|
|||||||
display: flex;
|
display: flex;
|
||||||
.header{
|
.header{
|
||||||
align-self: flex-start;
|
align-self: flex-start;
|
||||||
margin: 5rem 0 0 5rem;
|
margin: 1.8rem 0 0 5rem;
|
||||||
img{
|
svg{
|
||||||
width: 12rem;
|
width: 12rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -105,19 +105,28 @@ footer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 650px) {
|
@media only screen and (max-width: 650px) {
|
||||||
footer .groups li > a {
|
|
||||||
|
footer .footer__content {
|
||||||
|
flex-direction: column;
|
||||||
|
.header{
|
||||||
|
margin: 5rem 0 2.5rem 2.5rem;
|
||||||
|
}
|
||||||
|
.groups .full {
|
||||||
|
grid-row: auto;
|
||||||
|
}
|
||||||
|
.groups li > a {
|
||||||
font-size: 3.5vmin;
|
font-size: 3.5vmin;
|
||||||
}
|
}
|
||||||
footer .groups{
|
.groups{
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
grid-template-rows: 1fr 1fr 1fr;
|
grid-template-rows: 1fr 1fr 1fr;
|
||||||
}
|
li {
|
||||||
|
|
||||||
footer .groups li {
|
|
||||||
border: 0 !important;
|
border: 0 !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 500px) {
|
@media only screen and (max-width: 500px) {
|
||||||
footer .groups li > a {
|
footer .groups li > a {
|
||||||
|
|||||||
@@ -39,4 +39,15 @@ section#infographics{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.image-with-shadow{
|
||||||
|
width: 100%;
|
||||||
|
z-index: 1;
|
||||||
|
.img-shadow{
|
||||||
|
width: 100%;
|
||||||
|
svg{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -107,8 +107,9 @@ nav {
|
|||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
img {
|
svg {
|
||||||
width: 15rem;
|
width: 15rem;
|
||||||
|
margin-top: 0.6rem;
|
||||||
}
|
}
|
||||||
span{
|
span{
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
|
|||||||
@@ -104,6 +104,14 @@ a {
|
|||||||
transition: var(--t-simple);
|
transition: var(--t-simple);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p a {
|
||||||
|
color: var(--c-text-primary);
|
||||||
|
text-decoration: underline;
|
||||||
|
&:hover{
|
||||||
|
color: var(--c-text-accent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
h1, h2, h3, h4, h5 {
|
h1, h2, h3, h4, h5 {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
text-transform: uppercase;
|
text-transform: uppercase;
|
||||||
@@ -127,15 +135,32 @@ header{
|
|||||||
z-index: 2;
|
z-index: 2;
|
||||||
top:0;
|
top:0;
|
||||||
|
|
||||||
.header__logo{
|
a.header__logo{
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
filter: blur(10px);
|
filter: blur(10px);
|
||||||
margin-top: -.9rem;
|
|
||||||
margin-bottom: -1rem;
|
|
||||||
margin-left: 1rem;
|
margin-left: 1rem;
|
||||||
height: fit-content;
|
display: flex;
|
||||||
img{
|
align-items: center;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
svg{
|
||||||
width:8rem;
|
width:8rem;
|
||||||
|
position: absolute;
|
||||||
|
path{
|
||||||
|
transition: var(--t-simple);
|
||||||
|
stroke-width: 0;
|
||||||
|
stroke: transparent;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
svg path{
|
||||||
|
stroke-width: 0.4rem;
|
||||||
|
stroke: var(--c-text-primary);
|
||||||
|
}
|
||||||
|
svg path:last-child{
|
||||||
|
stroke-width: 0.4rem;
|
||||||
|
stroke: var(--c-text-accent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
.header{
|
.header{
|
||||||
align-self: flex-start;
|
align-self: flex-start;
|
||||||
margin: 5rem 0 0 5rem;
|
margin: 5rem 0 0 5rem;
|
||||||
img{
|
svg{
|
||||||
width: 12rem;
|
width: 12rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -60,6 +60,10 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
|
--hover-padding: .5rem;
|
||||||
|
--hover-width: calc(100% + (2 * var(--hover-padding)));
|
||||||
|
--hover-nudge: calc(-1 * var(--hover-padding));
|
||||||
|
|
||||||
&::after{
|
&::after{
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -75,8 +79,8 @@
|
|||||||
|
|
||||||
&::after{
|
&::after{
|
||||||
border: var(--b-primary);
|
border: var(--b-primary);
|
||||||
width: 110%;
|
width: var(--hover-width);
|
||||||
left: -5%;
|
left: var(--hover-nudge);
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -88,8 +92,8 @@
|
|||||||
z-index: -1;
|
z-index: -1;
|
||||||
//border: var(--b-primary);
|
//border: var(--b-primary);
|
||||||
background-color: var(--c-text-accent);
|
background-color: var(--c-text-accent);
|
||||||
width: 110%;
|
width: var(--hover-width);
|
||||||
left: -5%;
|
left: var(--hover-nudge);
|
||||||
top: 6%;
|
top: 6%;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
height: 85%;
|
height: 85%;
|
||||||
|
|||||||
@@ -54,14 +54,14 @@ section#powered-by {
|
|||||||
svg {
|
svg {
|
||||||
width: 45rem;
|
width: 45rem;
|
||||||
max-width: calc(100vw - 12rem);
|
max-width: calc(100vw - 12rem);
|
||||||
margin-top: 6rem;
|
//margin-top: 6rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
a.source-link{
|
a.source-link{
|
||||||
margin-top: 5rem;
|
margin-top: 5rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-size: 2rem;
|
font-size: 1.7rem;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
color: var(--c-text-bright);
|
color: var(--c-text-bright);
|
||||||
line-height: 1;
|
line-height: 1;
|
||||||
@@ -75,6 +75,7 @@ section#powered-by {
|
|||||||
border-radius: 999px;
|
border-radius: 999px;
|
||||||
padding: .15em .6em;
|
padding: .15em .6em;
|
||||||
transition: var(--t-simple);
|
transition: var(--t-simple);
|
||||||
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
&:hover{
|
&:hover{
|
||||||
transform: scale(1.05);
|
transform: scale(1.05);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ layout: layouts/peripheral.njk
|
|||||||
|
|
||||||
<section id="hero">
|
<section id="hero">
|
||||||
<div id="hero-image">
|
<div id="hero-image">
|
||||||
<img src="../assets/images/contact-hero.png" alt=""/>
|
<img src="../assets/images/contact-hero.png" alt="contact page hero: @ symbol emerging from an embassy" title="contact page hero: @ symbol emerging from an embassy"/>
|
||||||
<img class="img-shadow" src="../assets/images/contact-hero.png" alt=""/>
|
<img class="img-shadow" src="../assets/images/contact-hero.png" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
<div id="logo">
|
<div id="logo">
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ layout: layouts/peripheral.njk
|
|||||||
|
|
||||||
<section id="hero">
|
<section id="hero">
|
||||||
<div id="hero-image">
|
<div id="hero-image">
|
||||||
<img src="../assets/images/dev-hero.png" alt=""/>
|
<img src="../assets/images/dev-hero.png" alt="dev page hero: html tag emerging from an embassy" title="dev page hero: html tag emerging from an embassy"/>
|
||||||
<img class="img-shadow" src="../assets/images/dev-hero.png" alt=""/>
|
<img class="img-shadow" src="../assets/images/dev-hero.png" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
<div id="logo">
|
<div id="logo">
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ layout: layouts/base.njk
|
|||||||
</script> #}
|
</script> #}
|
||||||
|
|
||||||
<link rel="stylesheet" href="assets/styles/landing.css">
|
<link rel="stylesheet" href="assets/styles/landing.css">
|
||||||
|
<link rel="preload" as="image" href="assets/images/explosion.png">
|
||||||
|
|
||||||
<div class="cube">
|
<div class="cube">
|
||||||
<div class="cube__face"></div>
|
<div class="cube__face"></div>
|
||||||
@@ -97,4 +98,6 @@ layout: layouts/base.njk
|
|||||||
<script defer src="{{ '/assets/js/ScrollSmoother.min.js' | url }}"></script>
|
<script defer src="{{ '/assets/js/ScrollSmoother.min.js' | url }}"></script>
|
||||||
<script defer src="{{ '/assets/js/DrawSVGPlugin.min.js' | url }}"></script>
|
<script defer src="{{ '/assets/js/DrawSVGPlugin.min.js' | url }}"></script>
|
||||||
<script defer src="{{ '/assets/js/CustomEase.min.js' | url }}"></script>
|
<script defer src="{{ '/assets/js/CustomEase.min.js' | url }}"></script>
|
||||||
|
<script defer src="{{ '/assets/js/_header.js' | url }}"></script>
|
||||||
|
<script defer src="{{ '/assets/js/_menu.js' | url }}"></script>
|
||||||
<script defer src="{{ '/assets/js/main.js' | url }}"></script>
|
<script defer src="{{ '/assets/js/main.js' | url }}"></script>
|
||||||
@@ -5,7 +5,7 @@ layout: layouts/peripheral.njk
|
|||||||
|
|
||||||
<section id="hero">
|
<section id="hero">
|
||||||
<div id="hero-image">
|
<div id="hero-image">
|
||||||
<img src="../assets/images/jobs-hero.png" alt=""/>
|
<img src="../assets/images/jobs-hero.png" alt="jobs page hero: laptop emerging from an embassy" title="jobs page hero: laptop emerging from an embassy"/>
|
||||||
<img class="img-shadow" src="../assets/images/jobs-hero.png" alt=""/>
|
<img class="img-shadow" src="../assets/images/jobs-hero.png" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
<div id="logo">
|
<div id="logo">
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ layout: layouts/peripheral.njk
|
|||||||
|
|
||||||
<section id="hero">
|
<section id="hero">
|
||||||
<div id="hero-image">
|
<div id="hero-image">
|
||||||
<img src="../assets/images/news-hero.png" alt=""/>
|
<img src="../assets/images/news-hero.png" alt="news page hero: tv emerging from an embassy" title="news page hero: tv emerging from an embassy"/>
|
||||||
<img class="img-shadow" src="../assets/images/news-hero.png" alt=""/>
|
<img class="img-shadow" src="../assets/images/news-hero.png" alt=""/>
|
||||||
</div>
|
</div>
|
||||||
<div id="logo">
|
<div id="logo">
|
||||||
|
|||||||