forked from external-repos/squoosh
Home page with demo loading
This commit is contained in:
@@ -225,16 +225,12 @@ class BackgroundBlobs {
|
|||||||
minDuration: 2000,
|
minDuration: 2000,
|
||||||
maxDuration: 5000,
|
maxDuration: 5000,
|
||||||
}),
|
}),
|
||||||
velocity:
|
velocity: rand(bgBlobsMinVelocity, bgBlobsMaxVelocity),
|
||||||
Math.random() * (bgBlobsMaxVelocity - bgBlobsMinVelocity) +
|
|
||||||
bgBlobsMinVelocity,
|
|
||||||
alpha:
|
alpha:
|
||||||
Math.random() ** 3 * (bgBlobsMaxAlpha - bgBlobsMinAlpha) +
|
Math.random() ** 3 * (bgBlobsMaxAlpha - bgBlobsMinAlpha) +
|
||||||
bgBlobsMinAlpha,
|
bgBlobsMinAlpha,
|
||||||
alphaMultiplier: 1,
|
alphaMultiplier: 1,
|
||||||
spinTime:
|
spinTime: rand(bgBlobsMinSpinTime, bgBlobsMaxSpinTime),
|
||||||
Math.random() * (bgBlobsMaxSpinTime - bgBlobsMinSpinTime) +
|
|
||||||
bgBlobsMinSpinTime,
|
|
||||||
rotatePos: 0,
|
rotatePos: 0,
|
||||||
radius:
|
radius:
|
||||||
Math.random() ** 3 * (bgBlobsMaxRadius - bgBlobsMinRadius) +
|
Math.random() ** 3 * (bgBlobsMaxRadius - bgBlobsMinRadius) +
|
||||||
|
|||||||
@@ -19,25 +19,29 @@ import { startBlobs } from './blob-anim/meta';
|
|||||||
|
|
||||||
const demos = [
|
const demos = [
|
||||||
{
|
{
|
||||||
description: 'Large photo (2.8mb)',
|
description: 'Large photo',
|
||||||
|
size: '2.8mb',
|
||||||
filename: 'photo.jpg',
|
filename: 'photo.jpg',
|
||||||
url: largePhoto,
|
url: largePhoto,
|
||||||
iconUrl: largePhotoIcon,
|
iconUrl: largePhotoIcon,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: 'Artwork (2.9mb)',
|
description: 'Artwork',
|
||||||
|
size: '2.9mb',
|
||||||
filename: 'art.jpg',
|
filename: 'art.jpg',
|
||||||
url: artwork,
|
url: artwork,
|
||||||
iconUrl: artworkIcon,
|
iconUrl: artworkIcon,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: 'Device screen (1.6mb)',
|
description: 'Device screen',
|
||||||
|
size: '1.6mb',
|
||||||
filename: 'pixel3.png',
|
filename: 'pixel3.png',
|
||||||
url: deviceScreen,
|
url: deviceScreen,
|
||||||
iconUrl: deviceScreenIcon,
|
iconUrl: deviceScreenIcon,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
description: 'SVG icon (13k)',
|
description: 'SVG icon',
|
||||||
|
size: '13k',
|
||||||
filename: 'squoosh.svg',
|
filename: 'squoosh.svg',
|
||||||
url: logo,
|
url: logo,
|
||||||
iconUrl: logoIcon,
|
iconUrl: logoIcon,
|
||||||
@@ -298,7 +302,37 @@ export default class Intro extends Component<Props, State> {
|
|||||||
class={style.mainWave}
|
class={style.mainWave}
|
||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
<div class={style.contentPadding}>Hello</div>
|
<div class={style.contentPadding}>
|
||||||
|
<p class={style.demoTitle}>
|
||||||
|
Or <strong>try one</strong> of these:
|
||||||
|
</p>
|
||||||
|
<ul class={style.demos}>
|
||||||
|
{demos.map((demo, i) => (
|
||||||
|
<li>
|
||||||
|
<button
|
||||||
|
class="unbutton"
|
||||||
|
onClick={(event) => this.onDemoClick(i, event)}
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
<div class={style.demoIconContainer}>
|
||||||
|
<img
|
||||||
|
class={style.demoIcon}
|
||||||
|
src={demo.iconUrl}
|
||||||
|
alt={demo.description}
|
||||||
|
/>
|
||||||
|
{fetchingDemoIndex === i && (
|
||||||
|
<div class={style.demoLoader}>
|
||||||
|
<loading-spinner />
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div class={style.demoSize}>{demo.size}</div>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class={style.footer}>
|
<div class={style.footer}>
|
||||||
<svg viewBox="0 0 1920 79" class={style.topWave}>
|
<svg viewBox="0 0 1920 79" class={style.topWave}>
|
||||||
|
|||||||
@@ -131,13 +131,13 @@
|
|||||||
gap: 4rem;
|
gap: 4rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-link,
|
.footer-link {
|
||||||
.footer-link-with-logo {
|
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-link-with-logo {
|
.footer-link-with-logo {
|
||||||
|
composes: footer-link;
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1.8em max-content;
|
grid-template-columns: 1.8em max-content;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
@@ -167,3 +167,59 @@
|
|||||||
font-size: 1.6rem;
|
font-size: 1.6rem;
|
||||||
animation: fade-in 600ms ease-in-out;
|
animation: fade-in 600ms ease-in-out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.demo-title {
|
||||||
|
color: var(--white);
|
||||||
|
margin: 0;
|
||||||
|
font-size: 2rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.demos {
|
||||||
|
display: grid;
|
||||||
|
gap: 6rem;
|
||||||
|
grid-auto-columns: 1fr;
|
||||||
|
grid-auto-flow: column;
|
||||||
|
justify-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 0;
|
||||||
|
width: max-content;
|
||||||
|
margin: 3rem auto;
|
||||||
|
|
||||||
|
& > li {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.demo-size {
|
||||||
|
background: var(--dim-blue);
|
||||||
|
border-radius: 1000px;
|
||||||
|
color: var(--white);
|
||||||
|
width: max-content;
|
||||||
|
padding: 0.5rem 1.2rem;
|
||||||
|
margin: 0.7rem auto 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.demo-icon-container {
|
||||||
|
--size: 100px;
|
||||||
|
border-radius: var(--size);
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.demo-icon {
|
||||||
|
width: var(--size);
|
||||||
|
height: var(--size);
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.demo-loader {
|
||||||
|
composes: abs-fill from global;
|
||||||
|
background: rgba(0, 0, 0, 0.5);
|
||||||
|
display: grid;
|
||||||
|
justify-content: center;
|
||||||
|
align-content: center;
|
||||||
|
animation: fade-in 600ms ease-in-out;
|
||||||
|
|
||||||
|
& > loading-spinner {
|
||||||
|
--color: var(--white);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,13 +2,13 @@ html {
|
|||||||
--pink: #ff3385;
|
--pink: #ff3385;
|
||||||
--hot-pink: #ff0066;
|
--hot-pink: #ff0066;
|
||||||
--white: #fff;
|
--white: #fff;
|
||||||
|
--dim-blue: #0a7bcc;
|
||||||
--deep-blue: #09f;
|
--deep-blue: #09f;
|
||||||
--light-blue: #76c8ff;
|
--light-blue: #76c8ff;
|
||||||
--light-gray: #eaeaea;
|
--light-gray: #eaeaea;
|
||||||
--dark-text: #343a3e;
|
--dark-text: #343a3e;
|
||||||
|
|
||||||
/*
|
/* Old stuff: */
|
||||||
Old stuff:
|
|
||||||
--gray-dark: rgba(0, 0, 0, 0.8);
|
--gray-dark: rgba(0, 0, 0, 0.8);
|
||||||
|
|
||||||
--button-fg-color: 95, 180, 228;
|
--button-fg-color: 95, 180, 228;
|
||||||
@@ -16,5 +16,4 @@ html {
|
|||||||
|
|
||||||
--negative: rgb(207, 113, 127);
|
--negative: rgb(207, 113, 127);
|
||||||
--positive: rgb(149, 212, 159);
|
--positive: rgb(149, 212, 159);
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user