mirror of
https://gitlab.com/timvisee/send.git
synced 2024-11-10 05:02:45 +01:00
Merge remote-tracking branch 'origin/vnext' into droid-ui-2
This commit is contained in:
commit
732094a5ba
19
app/main.css
19
app/main.css
@ -31,19 +31,23 @@ progress::-webkit-progress-value {
|
|||||||
@apply rounded-sm;
|
@apply rounded-sm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.word-break-all {
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
|
||||||
.main {
|
.main {
|
||||||
display: flex;
|
display: flex;
|
||||||
max-width: 64rem;
|
max-width: 64rem;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main > section {
|
.main > section {
|
||||||
@apply bg-white;
|
@apply bg-white;
|
||||||
@apply shadow;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.header-logo {
|
.header-logo {
|
||||||
background-image: url('../assets/send_logo.svg');
|
background-image: url('../assets/send_logo_white.svg');
|
||||||
background-position: left;
|
background-position: left;
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-size: 1.8rem;
|
background-size: 1.8rem;
|
||||||
@ -145,11 +149,16 @@ progress::-webkit-progress-value {
|
|||||||
@apply flex-1;
|
@apply flex-1;
|
||||||
@apply self-center;
|
@apply self-center;
|
||||||
@apply items-center;
|
@apply items-center;
|
||||||
@apply my-10;
|
@apply m-auto;
|
||||||
|
@apply py-8;
|
||||||
|
|
||||||
width: calc(100% - 3rem);
|
min-height: 33rem;
|
||||||
min-height: 30rem;
|
|
||||||
max-height: 40rem;
|
max-height: 40rem;
|
||||||
|
width: calc(100% - 3rem);
|
||||||
|
}
|
||||||
|
|
||||||
|
.header-logo {
|
||||||
|
background-image: url('../assets/send_logo.svg');
|
||||||
}
|
}
|
||||||
|
|
||||||
.main > section {
|
.main > section {
|
||||||
|
@ -16,7 +16,7 @@ function banner(state, emit) {
|
|||||||
|
|
||||||
function body(main) {
|
function body(main) {
|
||||||
return function(state, emit) {
|
return function(state, emit) {
|
||||||
const b = html`<body class="flex flex-col items-center font-sans bg-blue-lightest md:h-screen md:bg-grey-lightest justify-between">
|
const b = html`<body class="flex flex-col items-center font-sans bg-blue-lightest md:h-screen md:bg-grey-lightest">
|
||||||
${banner(state, emit)}
|
${banner(state, emit)}
|
||||||
${header(state, emit)}
|
${header(state, emit)}
|
||||||
${main(state, emit)}
|
${main(state, emit)}
|
||||||
|
@ -36,7 +36,7 @@ function password(state) {
|
|||||||
id="password-input"
|
id="password-input"
|
||||||
class="${
|
class="${
|
||||||
state.password ? '' : 'invisible'
|
state.password ? '' : 'invisible'
|
||||||
} border rounded-sm focus:border-blue leading-normal mt-2 py-1 px-2 h-8"
|
} border rounded-sm focus:border-blue leading-normal my-2 py-1 px-2 h-8"
|
||||||
autocomplete="off"
|
autocomplete="off"
|
||||||
maxlength="${MAX_LENGTH}"
|
maxlength="${MAX_LENGTH}"
|
||||||
type="password"
|
type="password"
|
||||||
@ -96,7 +96,7 @@ function fileInfo(file, action) {
|
|||||||
<article class="flex flex-row items-center p-3">
|
<article class="flex flex-row items-center p-3">
|
||||||
<img class="" src="${assets.get('blue_file.svg')}"/>
|
<img class="" src="${assets.get('blue_file.svg')}"/>
|
||||||
<p class="ml-4 w-full">
|
<p class="ml-4 w-full">
|
||||||
<h1 class="text-sm font-medium">${file.name}</h1>
|
<h1 class="text-sm font-medium word-break-all">${file.name}</h1>
|
||||||
<div class="text-xs font-normal opacity-75 pt-1">${bytes(
|
<div class="text-xs font-normal opacity-75 pt-1">${bytes(
|
||||||
file.size
|
file.size
|
||||||
)}</div>
|
)}</div>
|
||||||
@ -137,7 +137,7 @@ module.exports = function(state, emit, archive) {
|
|||||||
alt="Delete"
|
alt="Delete"
|
||||||
src="${assets.get('close-16.svg')}"
|
src="${assets.get('close-16.svg')}"
|
||||||
onclick=${del}/>
|
onclick=${del}/>
|
||||||
<h1 class="text-sm font-medium">${archive.name}</h1>
|
<h1 class="text-sm font-medium word-break-all">${archive.name}</h1>
|
||||||
<div class="text-xs font-normal opacity-75 pt-1">${bytes(
|
<div class="text-xs font-normal opacity-75 pt-1">${bytes(
|
||||||
archive.size
|
archive.size
|
||||||
)}</div>
|
)}</div>
|
||||||
@ -174,11 +174,13 @@ module.exports = function(state, emit, archive) {
|
|||||||
|
|
||||||
module.exports.wip = function(state, emit) {
|
module.exports.wip = function(state, emit) {
|
||||||
return html`
|
return html`
|
||||||
<article class="flex flex-col bg-white z-20 md:h-full">
|
<article class="h-full flex flex-col bg-white z-20" id="wip">
|
||||||
${list(
|
${list(
|
||||||
state.archive.files.map(f => fileInfo(f, remove(f))),
|
Array.from(state.archive.files)
|
||||||
'list-reset h-full overflow-y-scroll p-4 bg-blue-lightest md:max-h-half-screen',
|
.reverse()
|
||||||
'bg-white px-2 mb-3 border border-grey-light rounded'
|
.map(f => fileInfo(f, remove(f))),
|
||||||
|
'list-reset h-full overflow-y-scroll px-4 bg-blue-lightest md:max-h-half-screen',
|
||||||
|
'bg-white px-2 mt-3 border border-grey-light rounded'
|
||||||
)}
|
)}
|
||||||
<div class="flex-grow p-4 bg-blue-lightest mb-6 font-medium">
|
<div class="flex-grow p-4 bg-blue-lightest mb-6 font-medium">
|
||||||
<input
|
<input
|
||||||
@ -199,7 +201,7 @@ module.exports.wip = function(state, emit) {
|
|||||||
${password(state, emit)}
|
${password(state, emit)}
|
||||||
<button
|
<button
|
||||||
id="upload-btn"
|
id="upload-btn"
|
||||||
class="rounded bg-blue hover\:bg-blue-dark focus\:bg-blue-darker cursor-pointer text-center text-white py-2 px-6 h-12 mt-4 flex flex-no-shrink items-center justify-center font-semibold"
|
class="rounded bg-blue hover\:bg-blue-dark focus\:bg-blue-darker cursor-pointer text-center text-white py-2 px-6 h-12 flex flex-no-shrink items-center justify-center font-semibold"
|
||||||
title="${state.translate('uploadSuccessConfirmHeader')}"
|
title="${state.translate('uploadSuccessConfirmHeader')}"
|
||||||
onclick=${upload}>
|
onclick=${upload}>
|
||||||
${state.translate('uploadSuccessConfirmHeader')}
|
${state.translate('uploadSuccessConfirmHeader')}
|
||||||
@ -207,6 +209,7 @@ module.exports.wip = function(state, emit) {
|
|||||||
</article>`;
|
</article>`;
|
||||||
|
|
||||||
function upload(event) {
|
function upload(event) {
|
||||||
|
window.scrollTo(0, 0);
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.target.disabled = true;
|
event.target.disabled = true;
|
||||||
if (!state.uploading) {
|
if (!state.uploading) {
|
||||||
@ -223,6 +226,11 @@ module.exports.wip = function(state, emit) {
|
|||||||
const newFiles = Array.from(event.target.files);
|
const newFiles = Array.from(event.target.files);
|
||||||
|
|
||||||
emit('addFiles', { files: newFiles });
|
emit('addFiles', { files: newFiles });
|
||||||
|
setTimeout(() => {
|
||||||
|
document
|
||||||
|
.querySelector('#wip > ul > li:first-child')
|
||||||
|
.scrollIntoView({ block: 'center' });
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function remove(file) {
|
function remove(file) {
|
||||||
@ -250,7 +258,7 @@ module.exports.uploading = function(state, emit) {
|
|||||||
class="z-20 flex flex-col items-start border border-grey-light bg-white p-4">
|
class="z-20 flex flex-col items-start border border-grey-light bg-white p-4">
|
||||||
<p class="w-full">
|
<p class="w-full">
|
||||||
<img class="float-left mr-3" src="${assets.get('blue_file.svg')}"/>
|
<img class="float-left mr-3" src="${assets.get('blue_file.svg')}"/>
|
||||||
<h1 class="text-sm font-medium">${archive.name}</h1>
|
<h1 class="text-sm font-medium word-break-all">${archive.name}</h1>
|
||||||
<div class="text-xs font-normal opacity-75 pt-1">${bytes(
|
<div class="text-xs font-normal opacity-75 pt-1">${bytes(
|
||||||
archive.size
|
archive.size
|
||||||
)}</div>
|
)}</div>
|
||||||
@ -280,7 +288,8 @@ module.exports.uploading = function(state, emit) {
|
|||||||
|
|
||||||
module.exports.empty = function(state, emit) {
|
module.exports.empty = function(state, emit) {
|
||||||
return html`
|
return html`
|
||||||
<article class="flex flex-col items-center justify-center border border-dashed border-blue-light px-6 py-16 md:h-full">
|
<article class="flex flex-col items-center justify-center border-2 border-dashed border-blue-light px-6 py-16 h-full"
|
||||||
|
onclick=${() => document.getElementById('file-upload').click()}>
|
||||||
<img src="${assets.get('addfiles.svg')}" width="48" height="48"/>
|
<img src="${assets.get('addfiles.svg')}" width="48" height="48"/>
|
||||||
<div class="pt-6 pb-2 text-center text-lg font-bold uppercase tracking-wide">${state.translate(
|
<div class="pt-6 pb-2 text-center text-lg font-bold uppercase tracking-wide">${state.translate(
|
||||||
'uploadDropDragMessage'
|
'uploadDropDragMessage'
|
||||||
@ -293,7 +302,8 @@ module.exports.empty = function(state, emit) {
|
|||||||
class="hidden"
|
class="hidden"
|
||||||
type="file"
|
type="file"
|
||||||
multiple
|
multiple
|
||||||
onchange=${add} />
|
onchange=${add}
|
||||||
|
onclick=${e => e.stopPropagation()} />
|
||||||
<label
|
<label
|
||||||
for="file-upload"
|
for="file-upload"
|
||||||
class="rounded bg-blue hover\:bg-blue-dark focus\:bg-blue-darker cursor-pointer text-center text-white py-2 px-6 h-12 mt-4 flex flex-no-shrink items-center justify-center font-semibold"
|
class="rounded bg-blue hover\:bg-blue-dark focus\:bg-blue-darker cursor-pointer text-center text-white py-2 px-6 h-12 mt-4 flex flex-no-shrink items-center justify-center font-semibold"
|
||||||
@ -319,7 +329,7 @@ module.exports.preview = function(state, emit) {
|
|||||||
<article class="flex flex-col max-h-full bg-white border border-grey-light p-4 z-20">
|
<article class="flex flex-col max-h-full bg-white border border-grey-light p-4 z-20">
|
||||||
<p class="w-full mb-4">
|
<p class="w-full mb-4">
|
||||||
<img class="float-left mr-3" src="${assets.get('blue_file.svg')}"/>
|
<img class="float-left mr-3" src="${assets.get('blue_file.svg')}"/>
|
||||||
<h1 class="text-sm font-medium">${archive.name}</h1>
|
<h1 class="text-sm font-medium word-break-all">${archive.name}</h1>
|
||||||
<div class="text-xs font-normal opacity-75 pt-1">${bytes(
|
<div class="text-xs font-normal opacity-75 pt-1">${bytes(
|
||||||
archive.size
|
archive.size
|
||||||
)}</div>
|
)}</div>
|
||||||
@ -349,7 +359,7 @@ module.exports.downloading = function(state, emit) {
|
|||||||
<article class="flex flex-col bg-white border border-grey-light p-4 z-20">
|
<article class="flex flex-col bg-white border border-grey-light p-4 z-20">
|
||||||
<p class="w-full mb-4">
|
<p class="w-full mb-4">
|
||||||
<img class="float-left mr-3" src="${assets.get('blue_file.svg')}"/>
|
<img class="float-left mr-3" src="${assets.get('blue_file.svg')}"/>
|
||||||
<h1 class="text-sm font-medium">${archive.name}</h1>
|
<h1 class="text-sm font-medium word-break-all">${archive.name}</h1>
|
||||||
<div class="text-xs font-normal opacity-75 pt-1">${bytes(
|
<div class="text-xs font-normal opacity-75 pt-1">${bytes(
|
||||||
archive.size
|
archive.size
|
||||||
)}</div>
|
)}</div>
|
||||||
|
@ -6,7 +6,7 @@ module.exports = function(name, url) {
|
|||||||
return html`
|
return html`
|
||||||
<div class="flex flex-col items-center text-center p-4 max-w-sm">
|
<div class="flex flex-col items-center text-center p-4 max-w-sm">
|
||||||
<h1 class="font-bold my-4">${state.translate('notifyUploadDone')}</h1>
|
<h1 class="font-bold my-4">${state.translate('notifyUploadDone')}</h1>
|
||||||
<p class="font-normal leading-normal text-grey-darker">${state.translate(
|
<p class="font-normal leading-normal text-grey-darker word-break-all">${state.translate(
|
||||||
'copyUrlFormLabelWithName',
|
'copyUrlFormLabelWithName',
|
||||||
{ filename: name }
|
{ filename: name }
|
||||||
)}</p>
|
)}</p>
|
||||||
|
@ -4,13 +4,15 @@ const assets = require('../../common/assets');
|
|||||||
module.exports = function(state) {
|
module.exports = function(state) {
|
||||||
return html`
|
return html`
|
||||||
<main class="main container">
|
<main class="main container">
|
||||||
<div class="flex flex-col items-center bg-white m-6 p-6 border border-grey-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full">
|
<div class="flex flex-col items-center bg-white m-6 px-6 py-8 border border-grey-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full">
|
||||||
<h1 class="text-2xl">${state.translate('errorPageHeader')}</h1>
|
<h1 class="text-2xl text-center">${state.translate(
|
||||||
|
'errorPageHeader'
|
||||||
|
)}</h1>
|
||||||
<img class="my-16" src="${assets.get('illustration_error.svg')}"/>
|
<img class="my-16" src="${assets.get('illustration_error.svg')}"/>
|
||||||
<p class="max-w-md leading-normal">
|
<p class="max-w-md leading-normal">
|
||||||
${state.translate('uploadPageExplainer')}
|
${state.translate('uploadPageExplainer')}
|
||||||
</p>
|
</p>
|
||||||
<a class="text-blue my-10 font-medium" href="/">
|
<a class="text-blue mt-10 font-medium" href="/">
|
||||||
${state.translate('sendYourFilesLink')}
|
${state.translate('sendYourFilesLink')}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -10,7 +10,8 @@ module.exports = function(state, emit) {
|
|||||||
<div class="">
|
<div class="">
|
||||||
${raw(
|
${raw(
|
||||||
state.translate('frontPageExpireInfo', {
|
state.translate('frontPageExpireInfo', {
|
||||||
downloadCount: '<select id="dlCount"></select>',
|
downloadCount:
|
||||||
|
'<span class="lg:inline-block md:block sm:inline-block block"></span><select id="dlCount"></select>',
|
||||||
timespan: '<select id="timespan"></select>'
|
timespan: '<select id="timespan"></select>'
|
||||||
})
|
})
|
||||||
)}
|
)}
|
||||||
|
@ -15,10 +15,6 @@ module.exports = function(state) {
|
|||||||
href="https://www.mozilla.org/about/legal">
|
href="https://www.mozilla.org/about/legal">
|
||||||
${state.translate('footerLinkLegal')}
|
${state.translate('footerLinkLegal')}
|
||||||
</a></li>
|
</a></li>
|
||||||
<li class="m-2"><a
|
|
||||||
href="https://testpilot.firefox.com/about">
|
|
||||||
${state.translate('footerLinkAbout')}
|
|
||||||
</a></li>
|
|
||||||
<li class="m-2"><a
|
<li class="m-2"><a
|
||||||
href="/legal">
|
href="/legal">
|
||||||
${state.translate('footerLinkTerms')}
|
${state.translate('footerLinkTerms')}
|
||||||
|
@ -3,7 +3,7 @@ const assets = require('../../common/assets');
|
|||||||
|
|
||||||
module.exports = function() {
|
module.exports = function() {
|
||||||
return html`
|
return html`
|
||||||
<div class="w-full flex-none flex flex-row items-center content-center justify-center text-sm bg-grey-light text-grey-darkest h-12 px-4">
|
<div class="w-full flex-none flex flex-row items-center content-center justify-center text-sm bg-grey-light leading-tight text-grey-darkest px-4 py-3">
|
||||||
<div class="flex items-center mx-auto">
|
<div class="flex items-center mx-auto">
|
||||||
<img
|
<img
|
||||||
src="${assets.get('firefox_logo-only.svg')}"
|
src="${assets.get('firefox_logo-only.svg')}"
|
||||||
|
@ -3,11 +3,11 @@ const account = require('./account');
|
|||||||
|
|
||||||
module.exports = function(state, emit) {
|
module.exports = function(state, emit) {
|
||||||
const header = html`
|
const header = html`
|
||||||
<header class="relative flex-none flex flex-row items-center justify-between bg-white w-full px-6 h-16 shadow z-20">
|
<header class="relative flex-none flex flex-row items-center justify-between bg-blue md:bg-white w-full px-6 h-16 md:shadow z-20">
|
||||||
<a
|
<a
|
||||||
class="header-logo"
|
class="header-logo"
|
||||||
href="/">
|
href="/">
|
||||||
<h1 class="text-black font-normal">Firefox <b>Send</b></h1>
|
<h1 class="text-white md:text-black font-normal">Firefox <b>Send</b></h1>
|
||||||
</a>
|
</a>
|
||||||
${account(state, emit)}
|
${account(state, emit)}
|
||||||
<div class="invisible absolute pin-t pin-l mt-12 w-full flex flex-col items-center pointer-events-none">
|
<div class="invisible absolute pin-t pin-l mt-12 w-full flex flex-col items-center pointer-events-none">
|
||||||
|
@ -23,11 +23,11 @@ module.exports = function(state, emit) {
|
|||||||
: list(archives, 'list-reset h-full overflow-y-scroll', 'mb-3');
|
: list(archives, 'list-reset h-full overflow-y-scroll', 'mb-3');
|
||||||
|
|
||||||
return html`
|
return html`
|
||||||
<main class="main md:relative">
|
<main class="main relative">
|
||||||
${state.modal && modal(state, emit)}
|
${state.modal && modal(state, emit)}
|
||||||
<section class="h-full w-full p-6 md:flex md:flex-row z-10">
|
<section class="h-full w-full p-6 md:flex md:flex-row z-10">
|
||||||
<div class="md:mr-6 md:w-1/2">${left}</div>
|
<div class="md:mr-6 md:w-1/2">${left}</div>
|
||||||
<div class="md:w-1/2 overflow-y-scroll mt-6 md:mt-0">${right}</div>
|
<div class="md:w-1/2 mt-6 md:mt-0">${right}</div>
|
||||||
</section>
|
</section>
|
||||||
</main>`;
|
</main>`;
|
||||||
};
|
};
|
||||||
|
@ -3,18 +3,20 @@ const assets = require('../../common/assets');
|
|||||||
|
|
||||||
module.exports = function intro(state) {
|
module.exports = function intro(state) {
|
||||||
return html`
|
return html`
|
||||||
<article class="flex flex-col items-center justify-between bg-white border border-grey-light md:border-none px-6 md:py-10 py-6 md:mb-0 mb-6">
|
<article class="flex flex-col items-center justify-center bg-white border border-grey-light md:border-none px-6 text-center md:py-0 py-6 md:mb-0 mb-6 h-full">
|
||||||
<p class="text-center">
|
<div class="flex flex-col items-center justify-between h-full py-8">
|
||||||
<div class="font-semibold leading-normal">${state.translate(
|
<p class="text-center">
|
||||||
'uploadPageHeader'
|
<div class="font-semibold leading-normal">${state.translate(
|
||||||
)}</div>
|
'uploadPageHeader'
|
||||||
<div class="italic text-sm opacity-75 leading-normal">${state.translate(
|
)}</div>
|
||||||
'pageHeaderCredits'
|
<div class="italic text-sm opacity-75 leading-normal">${state.translate(
|
||||||
)}</div>
|
'pageHeaderCredits'
|
||||||
</p>
|
)}</div>
|
||||||
<img class="my-6" src="${assets.get('illustration_download.svg')}"/>
|
</p>
|
||||||
<p class="md:mx-6 max-w-sm text-sm opacity-50 leading-normal">${state.translate(
|
<img class="my-6" src="${assets.get('illustration_download.svg')}"/>
|
||||||
'uploadPageExplainer'
|
<p class="md:mx-6 max-w-sm text-sm opacity-50 leading-normal">${state.translate(
|
||||||
)}</p>
|
'uploadPageExplainer'
|
||||||
|
)}</p>
|
||||||
|
</div>
|
||||||
</article>`;
|
</article>`;
|
||||||
};
|
};
|
||||||
|
@ -4,8 +4,8 @@ const raw = require('choo/html/raw');
|
|||||||
module.exports = function(state) {
|
module.exports = function(state) {
|
||||||
return html`
|
return html`
|
||||||
<main class="main container">
|
<main class="main container">
|
||||||
<div class="flex flex-col items-center bg-white m-6 p-6 border border-grey-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full">
|
<div class="flex flex-col items-center bg-white m-6 px-6 py-8 border border-grey-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full">
|
||||||
<h1 class="text-2xl">${state.translate('legalHeader')}</h1>
|
<h1 class="text-2xl text-center">${state.translate('legalHeader')}</h1>
|
||||||
${raw(
|
${raw(
|
||||||
replaceLinks(state.translate('legalNoticeTestPilot'), [
|
replaceLinks(state.translate('legalNoticeTestPilot'), [
|
||||||
'https://testpilot.firefox.com/terms',
|
'https://testpilot.firefox.com/terms',
|
||||||
|
@ -2,7 +2,7 @@ const html = require('choo/html');
|
|||||||
|
|
||||||
module.exports = function(state, emit) {
|
module.exports = function(state, emit) {
|
||||||
return html`
|
return html`
|
||||||
<div class="absolute pin flex items-center justify-center overflow-hidden z-40 bg-cloud" onclick=${close}>
|
<div class="absolute pin flex items-center justify-center overflow-hidden z-40 bg-cloud md:my-8" onclick=${close}>
|
||||||
<div class="h-full max-h-screen absolute pin-t flex items-center">
|
<div class="h-full max-h-screen absolute pin-t flex items-center">
|
||||||
<div class="shadow-cloud bg-white" onclick=${e => e.stopPropagation()}>
|
<div class="shadow-cloud bg-white" onclick=${e => e.stopPropagation()}>
|
||||||
${state.modal(state, emit, close)}
|
${state.modal(state, emit, close)}
|
||||||
|
@ -4,8 +4,8 @@ const assets = require('../../common/assets');
|
|||||||
module.exports = function(state) {
|
module.exports = function(state) {
|
||||||
return html`
|
return html`
|
||||||
<main class="main container">
|
<main class="main container">
|
||||||
<div class="flex flex-col items-center bg-white m-6 p-6 border border-grey-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full">
|
<div class="flex flex-col items-center bg-white m-6 px-6 py-8 border border-grey-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full">
|
||||||
<h1 class="text-pink-dark text-2xl">${state.translate(
|
<h1 class="text-pink-dark text-2xl text-center">${state.translate(
|
||||||
'expiredPageHeader'
|
'expiredPageHeader'
|
||||||
)}</h1>
|
)}</h1>
|
||||||
<img class="my-16" src="${assets.get(
|
<img class="my-16" src="${assets.get(
|
||||||
@ -14,7 +14,7 @@ module.exports = function(state) {
|
|||||||
<p class="max-w-md leading-normal">
|
<p class="max-w-md leading-normal">
|
||||||
${state.translate('uploadPageExplainer')}
|
${state.translate('uploadPageExplainer')}
|
||||||
</p>
|
</p>
|
||||||
<a class="text-blue my-10 font-medium" href="/">
|
<a class="text-blue mt-10 font-medium" href="/">
|
||||||
${state.translate('sendYourFilesLink')}
|
${state.translate('sendYourFilesLink')}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -4,7 +4,7 @@ module.exports = function(selected, options, translate, changed) {
|
|||||||
let x = selected;
|
let x = selected;
|
||||||
|
|
||||||
return html`
|
return html`
|
||||||
<select class="appearance-none cursor-pointer border rounded-sm bg-blue-lightest hover:border-blue focus:border-blue px-2 py-1 mx-1 h-8" onchange=${choose}>
|
<select class="appearance-none cursor-pointer border rounded-sm bg-blue-lightest hover:border-blue focus:border-blue px-2 py-1 my-2 h-8" onchange=${choose}>
|
||||||
${options.map(
|
${options.map(
|
||||||
i =>
|
i =>
|
||||||
html`<option value="${i}" ${
|
html`<option value="${i}" ${
|
||||||
|
@ -31,13 +31,13 @@ module.exports = function(state) {
|
|||||||
|
|
||||||
return html`
|
return html`
|
||||||
<main class="main container">
|
<main class="main container">
|
||||||
<div class="flex flex-col items-center bg-white m-6 p-6 border border-grey-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full">
|
<div class="flex flex-col items-center bg-white m-6 px-6 py-8 border border-grey-light md:border-none md:px-12 md:py-16 shadow w-full md:h-full">
|
||||||
<h1 class="text-center text-2xl">${strings.header}</h1>
|
<h1 class="text-center text-2xl">${strings.header}</h1>
|
||||||
<p class="my-10 max-w-md leading-normal">
|
<p class="my-10 max-w-md leading-normal">
|
||||||
${strings.description}
|
${strings.description}
|
||||||
</p>
|
</p>
|
||||||
${why}
|
${why}
|
||||||
<a href="${url}" class="border border-green-light rounded bg-green hover\:bg-green-dark focus\:bg-green-darker flex items-center justify-center text-2xl text-white my-10 py-4 px-6">
|
<a href="${url}" class="border border-green-light rounded bg-green hover\:bg-green-dark focus\:bg-green-darker flex items-center justify-center text-2xl text-white mt-10 py-4 px-6">
|
||||||
<img
|
<img
|
||||||
src="${assets.get('firefox_logo-only.svg')}"
|
src="${assets.get('firefox_logo-only.svg')}"
|
||||||
class="w-10"
|
class="w-10"
|
||||||
|
@ -128,7 +128,9 @@ export default class User {
|
|||||||
);
|
);
|
||||||
list = JSON.parse(textDecoder.decode(decrypted));
|
list = JSON.parse(textDecoder.decode(decrypted));
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
//
|
if (e.message === '401') {
|
||||||
|
return this.logout();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
changes = await this.storage.merge(list);
|
changes = await this.storage.merge(list);
|
||||||
if (!changes.outgoing) {
|
if (!changes.outgoing) {
|
||||||
|
1
assets/send_logo_white.svg
Normal file
1
assets/send_logo_white.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg width="30" height="27" viewBox="0 0 30 27" xmlns="http://www.w3.org/2000/svg"><title>send logo</title><g stroke="#ffffff" fill="none" fill-rule="evenodd" transform="translate(-0.231,0.11948695)"><path d="M22.364 19.989l-2.153-2.103a2.046 2.046 0 0 0-2.665-.151l3.402 3.323a.531.531 0 0 1 0 .766l-2.466 2.408a.563.563 0 0 1-.784 0l-3.398-3.32a1.932 1.932 0 0 0 .188 2.564l2.153 2.103c.788.77 2.066.77 2.855 0l2.868-2.802a1.94 1.94 0 0 0 0-2.788M8.77 14.745a.534.534 0 0 0 0 .766l3.399 3.32a2.05 2.05 0 0 1-2.625-.184l-2.153-2.102a1.94 1.94 0 0 1 0-2.79l2.869-2.801a2.052 2.052 0 0 1 2.854 0l2.153 2.103c.73.713.775 1.83.154 2.603l-3.401-3.323a.565.565 0 0 0-.784 0L8.77 14.745zm9.464 5.682a.777.777 0 0 1 0 1.118.822.822 0 0 1-1.144 0l-5.6-5.47a.777.777 0 0 1 0-1.118.822.822 0 0 1 1.144 0l5.6 5.47z" stroke-width=".618" fill="#ffffff"/><path d="M6.065 20.606c-2.913-1.586-3.988-3.656-3.988-6.468 0-2.81 2.265-6.425 5.786-6.289.1.004.55-.006.649 0 .895-3.27 2.508-6.353 6.898-6.353 4.557 0 7.336 3.716 6.75 7.785.08-.005 1.232.17 1.31.186 3.096.644 4.915 3.275 4.915 5.18 0 1.905-.107 3.029-2.023 4.947" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></g></svg>
|
After Width: | Height: | Size: 1.2 KiB |
241
package-lock.json
generated
241
package-lock.json
generated
@ -940,9 +940,9 @@
|
|||||||
"integrity": "sha512-QzB0/IMvB0eFxFK7Eqh+bfC8NLv3E9ScjWQrPOk6GgfNroxcVITdTlT8NRsRrcp5+QQJVPLkRqKG0PUdaWXmHw=="
|
"integrity": "sha512-QzB0/IMvB0eFxFK7Eqh+bfC8NLv3E9ScjWQrPOk6GgfNroxcVITdTlT8NRsRrcp5+QQJVPLkRqKG0PUdaWXmHw=="
|
||||||
},
|
},
|
||||||
"@google-cloud/storage": {
|
"@google-cloud/storage": {
|
||||||
"version": "2.2.0",
|
"version": "2.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-2.3.0.tgz",
|
||||||
"integrity": "sha512-aBzcOJELU8N3a78D+Q3InIJ1x3GnhdWgMCjr8mxO6o1mJhDcQp4k2gjE4WijIp7OB2Vtol/NPudvdvgYyHE+tg==",
|
"integrity": "sha512-5IT6lkTJPNpWZDtHSL7AzDOIDMhkdl1ruxrLryVXsuaP61F8IukMgtoxG0KxH199FoRxCw2fFUvkB5guPTf8fQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@google-cloud/common": "^0.26.0",
|
"@google-cloud/common": "^0.26.0",
|
||||||
"@google-cloud/paginator": "^0.1.0",
|
"@google-cloud/paginator": "^0.1.0",
|
||||||
@ -1041,9 +1041,9 @@
|
|||||||
"integrity": "sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A=="
|
"integrity": "sha512-FhlMa34NHp9K5MY1Uz8yb+ZvuX0pnvn3jScRSNAb75KHGB8d3rEU6hqMs3Z2vjuytcMfRg6c5CHMc3wtYyD2/A=="
|
||||||
},
|
},
|
||||||
"@types/duplexify": {
|
"@types/duplexify": {
|
||||||
"version": "3.5.0",
|
"version": "3.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.5.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/duplexify/-/duplexify-3.6.0.tgz",
|
||||||
"integrity": "sha512-+aZCCdxuR/Q6n58CBkXyqGqimIqpYUcFLfBXagXv7e9TdJUevqkKhzopBuRz3RB064sQxnJnhttHOkK/O93Ouw==",
|
"integrity": "sha512-5zOA53RUlzN74bvrSGwjudssD9F3a797sDZQkiYpUOxW+WHaXTCPz4/d5Dgi6FKnOqZ2CpaTo0DhgIfsXAOE/A==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
@ -1057,14 +1057,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
"version": "10.12.1",
|
"version": "10.12.2",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.2.tgz",
|
||||||
"integrity": "sha512-i1sl+WCX2OCHeUi9oi7PiCNUtYFrpWhpcx878vpeq/tlZTKzcFdHePlyFHVbWqeuKN0SRPl/9ZFDSTsfv9h7VQ=="
|
"integrity": "sha512-53ElVDSnZeFUUFIYzI8WLQ25IhWzb6vbddNp8UHlXQyU0ET2RhV5zg0NfubzU7iNMh5bBXb0htCzfvrSVNgzaQ=="
|
||||||
},
|
},
|
||||||
"@types/request": {
|
"@types/request": {
|
||||||
"version": "2.48.0",
|
"version": "2.48.1",
|
||||||
"resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.1.tgz",
|
||||||
"integrity": "sha512-KnfoOtqXKllSqfXSEvGTd8KDkNlpHs+PWr6I6XiEIWk/jckH3pNmWDXNFZyPkB9wApb8vzDq2wMByM/0GFSmXg==",
|
"integrity": "sha512-ZgEZ1TiD+KGA9LiAAPPJL68Id2UWfeSO62ijSXZjFJArVV+2pKcsVHmrcu+1oiE3q6eDGiFiSolRc4JHoerBBg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/caseless": "*",
|
"@types/caseless": "*",
|
||||||
"@types/form-data": "*",
|
"@types/form-data": "*",
|
||||||
@ -1073,9 +1073,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/tough-cookie": {
|
"@types/tough-cookie": {
|
||||||
"version": "2.3.3",
|
"version": "2.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.4.tgz",
|
||||||
"integrity": "sha512-MDQLxNFRLasqS4UlkWMSACMKeSm1x4Q3TxzUC7KQUsh6RK1ZrQ0VEyE3yzXcBu+K8ejVj4wuX32eUG02yNp+YQ=="
|
"integrity": "sha512-Set5ZdrAaKI/qHdFlVMgm/GsAv/wkXhSTuZFkJ+JI7HK+wIkIlOaUXSXieIvJ0+OvGIqtREFoE+NHJtEq0gtEw=="
|
||||||
},
|
},
|
||||||
"@types/whatwg-streams": {
|
"@types/whatwg-streams": {
|
||||||
"version": "0.0.6",
|
"version": "0.0.6",
|
||||||
@ -1714,9 +1714,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"aws-sdk": {
|
"aws-sdk": {
|
||||||
"version": "2.348.0",
|
"version": "2.349.0",
|
||||||
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.348.0.tgz",
|
"resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.349.0.tgz",
|
||||||
"integrity": "sha512-TfguapuOAwk7EG8zhYJPjkCaF4tyGjfgcXLkYbWbuS4O6E8pn0x2K5Yt1KXwLiWxG0fzKCLiiaNA5H7bKAP4YQ==",
|
"integrity": "sha512-yGYCvXOKpvLfbhh1Vo+/2q+Z5bRdPlFpXX3kHBGz4haI6ZoLfFGuztap4en83zim/wpG1ZrhVJjd9u+i9l1ZEA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"buffer": "4.9.1",
|
"buffer": "4.9.1",
|
||||||
"events": "1.1.1",
|
"events": "1.1.1",
|
||||||
@ -2104,15 +2104,6 @@
|
|||||||
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
|
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"boom": {
|
|
||||||
"version": "4.3.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz",
|
|
||||||
"integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"hoek": "4.x.x"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"brace-expansion": {
|
"brace-expansion": {
|
||||||
"version": "1.1.11",
|
"version": "1.1.11",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
@ -3167,26 +3158,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
|
||||||
"integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
|
"integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs="
|
||||||
},
|
},
|
||||||
"cryptiles": {
|
|
||||||
"version": "3.1.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.3.tgz",
|
|
||||||
"integrity": "sha512-8dAQYBGMc/c0oOfLED0/t7XJ3DOiGqxwBT9qsj4KrW7e3ICflVCUpXZj8GbjEW38eYueJfGWlMq6dEX6cnWoyg==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"boom": "5.x.x"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"boom": {
|
|
||||||
"version": "5.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz",
|
|
||||||
"integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"hoek": "4.x.x"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"crypto-browserify": {
|
"crypto-browserify": {
|
||||||
"version": "3.12.0",
|
"version": "3.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
|
||||||
@ -3570,9 +3541,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"cssdb": {
|
"cssdb": {
|
||||||
"version": "4.1.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.2.0.tgz",
|
||||||
"integrity": "sha512-qaEHVEtScIHoBgdTEHNUMKQw7GXfVYHiaFcL8jerXWJ47lNBy2PgApHdHbR4yovVJsZK6Zq+YkBw8MuhAOvixg==",
|
"integrity": "sha512-27CuM+rp1/HIH4hkiOvrRUjgv31WamWk7+XSGz7OP/uWR8EOMeXOh4Ncpa/Eq1eO/1eRhQx7HWj8KEbt4nKQBA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"cssesc": {
|
"cssesc": {
|
||||||
@ -6980,18 +6951,6 @@
|
|||||||
"minimalistic-assert": "^1.0.1"
|
"minimalistic-assert": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hawk": {
|
|
||||||
"version": "6.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz",
|
|
||||||
"integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"boom": "4.x.x",
|
|
||||||
"cryptiles": "3.x.x",
|
|
||||||
"hoek": "4.x.x",
|
|
||||||
"sntp": "2.x.x"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"he": {
|
"he": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
|
||||||
@ -7057,12 +7016,6 @@
|
|||||||
"minimalistic-crypto-utils": "^1.0.1"
|
"minimalistic-crypto-utils": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"hoek": {
|
|
||||||
"version": "4.2.1",
|
|
||||||
"resolved": "http://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz",
|
|
||||||
"integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"homedir-polyfill": {
|
"homedir-polyfill": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
|
||||||
@ -9710,9 +9663,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node-fetch": {
|
"node-fetch": {
|
||||||
"version": "2.2.0",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.2.1.tgz",
|
||||||
"integrity": "sha512-OayFWziIxiHY8bCUyLX6sTpDH8Jsbp4FfYd1j1f7vZyfgkcOnAyM4oQR16f8a0s7Gl/viMGRey8eScYk4V4EZA=="
|
"integrity": "sha512-ObXBpNCD3A/vYQiQtEWl7DuqjAXjfptYFuGHLdPl5U19/6kJuZV+8uMHLrkj3wJrJoyfg4nhgyFixZdaZoAiEQ=="
|
||||||
},
|
},
|
||||||
"node-forge": {
|
"node-forge": {
|
||||||
"version": "0.7.6",
|
"version": "0.7.6",
|
||||||
@ -12514,9 +12467,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"postcss-custom-properties": {
|
"postcss-custom-properties": {
|
||||||
"version": "8.0.8",
|
"version": "8.0.9",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.9.tgz",
|
||||||
"integrity": "sha512-G3U8uSxj0B4jPJ1QBF5WYeW716n5HV/wcH2lOTV1V+EI+F0T0/ZOhl32MLLTMD79bN2mE77IOoclbCoLl4QtPA==",
|
"integrity": "sha512-/Lbn5GP2JkKhgUO2elMs4NnbUJcvHX4AaF5nuJDaNkd2chYW1KA5qtOGGgdkBEWcXtKSQfHXzT7C6grEVyb13w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"postcss": "^7.0.5",
|
"postcss": "^7.0.5",
|
||||||
@ -15069,14 +15022,14 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"postcss-preset-env": {
|
"postcss-preset-env": {
|
||||||
"version": "6.3.0",
|
"version": "6.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.3.1.tgz",
|
||||||
"integrity": "sha512-3iTlt9tuD7QsQ9wdJwr7E7hjVlNKrN6Fk/nChxJAtHHTLbtVdD25W6ogM7bgkv1xCjClU5w33Hb28dBG435FLQ==",
|
"integrity": "sha512-erl+OcCTr1+jsfJNQjBweyb8Y1s6KngUBwoqJnRXO197PmEE6u9HxZfnpKkTQqasxZljxNHzXR5hMb7MdD0Zdw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"autoprefixer": "^9.3.1",
|
"autoprefixer": "^9.3.1",
|
||||||
"browserslist": "^4.3.4",
|
"browserslist": "^4.3.4",
|
||||||
"caniuse-lite": "^1.0.30000899",
|
"caniuse-lite": "^1.0.30000905",
|
||||||
"cssdb": "^4.1.0",
|
"cssdb": "^4.1.0",
|
||||||
"postcss": "^7.0.5",
|
"postcss": "^7.0.5",
|
||||||
"postcss-attribute-case-insensitive": "^4.0.0",
|
"postcss-attribute-case-insensitive": "^4.0.0",
|
||||||
@ -15086,7 +15039,7 @@
|
|||||||
"postcss-color-mod-function": "^3.0.3",
|
"postcss-color-mod-function": "^3.0.3",
|
||||||
"postcss-color-rebeccapurple": "^4.0.1",
|
"postcss-color-rebeccapurple": "^4.0.1",
|
||||||
"postcss-custom-media": "^7.0.7",
|
"postcss-custom-media": "^7.0.7",
|
||||||
"postcss-custom-properties": "^8.0.8",
|
"postcss-custom-properties": "^8.0.9",
|
||||||
"postcss-custom-selectors": "^5.1.2",
|
"postcss-custom-selectors": "^5.1.2",
|
||||||
"postcss-dir-pseudo-class": "^5.0.0",
|
"postcss-dir-pseudo-class": "^5.0.0",
|
||||||
"postcss-double-position-gradients": "^1.0.0",
|
"postcss-double-position-gradients": "^1.0.0",
|
||||||
@ -15119,6 +15072,12 @@
|
|||||||
"color-convert": "^1.9.0"
|
"color-convert": "^1.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"caniuse-lite": {
|
||||||
|
"version": "1.0.30000905",
|
||||||
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000905.tgz",
|
||||||
|
"integrity": "sha512-cR6ICguvhRrkAjFfBoe54vJQMVOEz7vFmqrV6oor1a7GRg6DdswI40lkiV/QQvAMb4txzTkjSaLaJaiAtSuQzA==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"chalk": {
|
"chalk": {
|
||||||
"version": "2.4.1",
|
"version": "2.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
|
||||||
@ -17485,15 +17444,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sntp": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"hoek": "4.x.x"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"sockjs": {
|
"sockjs": {
|
||||||
"version": "0.3.19",
|
"version": "0.3.19",
|
||||||
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
|
"resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz",
|
||||||
@ -17971,12 +17921,6 @@
|
|||||||
"is-regexp": "^1.0.0"
|
"is-regexp": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stringstream": {
|
|
||||||
"version": "0.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
|
|
||||||
"integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"strip-ansi": {
|
"strip-ansi": {
|
||||||
"version": "3.0.1",
|
"version": "3.0.1",
|
||||||
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
"resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||||
@ -18753,12 +18697,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tailwindcss": {
|
"tailwindcss": {
|
||||||
"version": "0.7.0",
|
"version": "0.7.2",
|
||||||
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-0.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-0.7.2.tgz",
|
||||||
"integrity": "sha512-zqLmKyvOdXJ979KhZ+dy1mm2No1axjydscW+mbrz46ueOlbg+qhE4MuN3Chfzmv4XTwxW7LnPE2Eg94jyHs5Xg==",
|
"integrity": "sha512-mpDe9BBgdnvHatmdQ2GF/QVNQ/0nMX7lfmL3hV6D7r1NLVqYZIwFB4Z0vuIO2TIdVobdwwtLKPYOZ+MECv6vhw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"autoprefixer": "^7.1.6",
|
"autoprefixer": "^9.3.1",
|
||||||
"bytes": "^3.0.0",
|
"bytes": "^3.0.0",
|
||||||
"chalk": "^2.4.1",
|
"chalk": "^2.4.1",
|
||||||
"css.escape": "^1.5.1",
|
"css.escape": "^1.5.1",
|
||||||
@ -18784,30 +18728,6 @@
|
|||||||
"color-convert": "^1.9.0"
|
"color-convert": "^1.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"autoprefixer": {
|
|
||||||
"version": "7.2.6",
|
|
||||||
"resolved": "http://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz",
|
|
||||||
"integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"browserslist": "^2.11.3",
|
|
||||||
"caniuse-lite": "^1.0.30000805",
|
|
||||||
"normalize-range": "^0.1.2",
|
|
||||||
"num2fraction": "^1.2.2",
|
|
||||||
"postcss": "^6.0.17",
|
|
||||||
"postcss-value-parser": "^3.2.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"browserslist": {
|
|
||||||
"version": "2.11.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz",
|
|
||||||
"integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"caniuse-lite": "^1.0.30000792",
|
|
||||||
"electron-to-chromium": "^1.3.30"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"chalk": {
|
"chalk": {
|
||||||
"version": "2.4.1",
|
"version": "2.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
|
||||||
@ -19871,70 +19791,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"wdio-sauce-service": {
|
"wdio-sauce-service": {
|
||||||
"version": "0.4.12",
|
"version": "0.4.13",
|
||||||
"resolved": "https://registry.npmjs.org/wdio-sauce-service/-/wdio-sauce-service-0.4.12.tgz",
|
"resolved": "https://registry.npmjs.org/wdio-sauce-service/-/wdio-sauce-service-0.4.13.tgz",
|
||||||
"integrity": "sha512-Rx1IkzqR+BQwKjiDG3eF6Lqc3dvuFQ9x5p+B7ovvf5DoMjgg3ZSRC43iPBjg6UL86HFDE6FW8pvCHmhF6lKSWA==",
|
"integrity": "sha512-RoAh88l5xvevopwg+lH+CKgYDf9WGrW2DQrIsTiSVyT0wPHTAt3ndrRJS52SmBIbHlqMUdrGHnaZgYsVh8afkQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"request": "~2.83.0",
|
"request": "^2.88.0",
|
||||||
"sauce-connect-launcher": "~1.2.3"
|
"sauce-connect-launcher": "~1.2.3"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"har-validator": {
|
|
||||||
"version": "5.0.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
|
|
||||||
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"ajv": "^5.1.0",
|
|
||||||
"har-schema": "^2.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"oauth-sign": {
|
|
||||||
"version": "0.8.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
|
|
||||||
"integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"request": {
|
|
||||||
"version": "2.83.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/request/-/request-2.83.0.tgz",
|
|
||||||
"integrity": "sha512-lR3gD69osqm6EYLk9wB/G1W/laGWjzH90t1vEa2xuxHD5KUrSzp9pUSfTm+YC5Nxt2T8nMPEvKlhbQayU7bgFw==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"aws-sign2": "~0.7.0",
|
|
||||||
"aws4": "^1.6.0",
|
|
||||||
"caseless": "~0.12.0",
|
|
||||||
"combined-stream": "~1.0.5",
|
|
||||||
"extend": "~3.0.1",
|
|
||||||
"forever-agent": "~0.6.1",
|
|
||||||
"form-data": "~2.3.1",
|
|
||||||
"har-validator": "~5.0.3",
|
|
||||||
"hawk": "~6.0.2",
|
|
||||||
"http-signature": "~1.2.0",
|
|
||||||
"is-typedarray": "~1.0.0",
|
|
||||||
"isstream": "~0.1.2",
|
|
||||||
"json-stringify-safe": "~5.0.1",
|
|
||||||
"mime-types": "~2.1.17",
|
|
||||||
"oauth-sign": "~0.8.2",
|
|
||||||
"performance-now": "^2.1.0",
|
|
||||||
"qs": "~6.5.1",
|
|
||||||
"safe-buffer": "^5.1.1",
|
|
||||||
"stringstream": "~0.0.5",
|
|
||||||
"tough-cookie": "~2.3.3",
|
|
||||||
"tunnel-agent": "^0.6.0",
|
|
||||||
"uuid": "^3.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"tough-cookie": {
|
|
||||||
"version": "2.3.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
|
|
||||||
"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"punycode": "^1.4.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"wdio-spec-reporter": {
|
"wdio-spec-reporter": {
|
||||||
@ -20157,9 +20020,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"webpack": {
|
"webpack": {
|
||||||
"version": "4.24.0",
|
"version": "4.25.1",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.24.0.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.25.1.tgz",
|
||||||
"integrity": "sha512-Xur0l8nBETnW+DjpFqSGME1jNXxEPVETl30k1lWAsbnukVJdq330/i3PDOLPUtVl/E/cciiOp5uW098hFfQLQA==",
|
"integrity": "sha512-T0GU/3NRtO4tMfNzsvpdhUr8HnzA4LTdP2zd+e5zd6CdOH5vNKHnAlO+DvzccfhPdzqRrALOFcjYxx7K5DWmvA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"@webassemblyjs/ast": "1.7.11",
|
"@webassemblyjs/ast": "1.7.11",
|
||||||
@ -20198,9 +20061,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ajv": {
|
"ajv": {
|
||||||
"version": "6.5.4",
|
"version": "6.5.5",
|
||||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.4.tgz",
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.5.tgz",
|
||||||
"integrity": "sha512-4Wyjt8+t6YszqaXnLDfMmG/8AlO5Zbcsy3ATHncCzjW/NoPzAId8AK6749Ybjmdt+kUY1gP60fCu46oDxPv/mg==",
|
"integrity": "sha512-7q7gtRQDJSyuEHjuVgHoUa2VuemFiCMrfQc9Tc08XTAc4Zj/5U1buQJ0HU6i7fKjXU09SVgSmxa4sLvuvS8Iyg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"fast-deep-equal": "^2.0.1",
|
"fast-deep-equal": "^2.0.1",
|
||||||
|
14
package.json
14
package.json
@ -100,7 +100,7 @@
|
|||||||
"npm-run-all": "^4.1.3",
|
"npm-run-all": "^4.1.3",
|
||||||
"nyc": "^13.0.1",
|
"nyc": "^13.0.1",
|
||||||
"postcss-loader": "^3.0.0",
|
"postcss-loader": "^3.0.0",
|
||||||
"postcss-preset-env": "^6.2.0",
|
"postcss-preset-env": "^6.3.1",
|
||||||
"prettier": "^1.14.3",
|
"prettier": "^1.14.3",
|
||||||
"proxyquire": "^2.1.0",
|
"proxyquire": "^2.1.0",
|
||||||
"puppeteer": "^1.10.0",
|
"puppeteer": "^1.10.0",
|
||||||
@ -115,25 +115,25 @@
|
|||||||
"stylelint-no-unsupported-browser-features": "^3.0.2",
|
"stylelint-no-unsupported-browser-features": "^3.0.2",
|
||||||
"svgo": "^1.1.1",
|
"svgo": "^1.1.1",
|
||||||
"svgo-loader": "^2.2.0",
|
"svgo-loader": "^2.2.0",
|
||||||
"tailwindcss": "^0.7.0",
|
"tailwindcss": "^0.7.2",
|
||||||
"testpilot-ga": "^0.3.0",
|
"testpilot-ga": "^0.3.0",
|
||||||
"val-loader": "^1.1.1",
|
"val-loader": "^1.1.1",
|
||||||
"wdio-docker-service": "^1.4.2",
|
"wdio-docker-service": "^1.4.2",
|
||||||
"wdio-dot-reporter": "0.0.10",
|
"wdio-dot-reporter": "0.0.10",
|
||||||
"wdio-firefox-profile-service": "^0.1.3",
|
"wdio-firefox-profile-service": "^0.1.3",
|
||||||
"wdio-mocha-framework": "^0.6.3",
|
"wdio-mocha-framework": "^0.6.3",
|
||||||
"wdio-sauce-service": "^0.4.11",
|
"wdio-sauce-service": "^0.4.13",
|
||||||
"wdio-spec-reporter": "^0.1.5",
|
"wdio-spec-reporter": "^0.1.5",
|
||||||
"webdriverio": "^4.13.2",
|
"webdriverio": "^4.13.2",
|
||||||
"webpack": "^4.24.0",
|
"webpack": "^4.25.1",
|
||||||
"webpack-cli": "^3.1.2",
|
"webpack-cli": "^3.1.2",
|
||||||
"webpack-dev-middleware": "^3.4.0",
|
"webpack-dev-middleware": "^3.4.0",
|
||||||
"webpack-manifest-plugin": "^2.0.4",
|
"webpack-manifest-plugin": "^2.0.4",
|
||||||
"webpack-unassert-loader": "^1.2.0"
|
"webpack-unassert-loader": "^1.2.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@google-cloud/storage": "^2.0.3",
|
"@google-cloud/storage": "^2.3.0",
|
||||||
"aws-sdk": "^2.348.0",
|
"aws-sdk": "^2.349.0",
|
||||||
"babel-polyfill": "^6.26.0",
|
"babel-polyfill": "^6.26.0",
|
||||||
"choo": "^6.12.1",
|
"choo": "^6.12.1",
|
||||||
"cldr-core": "^34.0.0",
|
"cldr-core": "^34.0.0",
|
||||||
@ -146,7 +146,7 @@
|
|||||||
"helmet": "^3.13.0",
|
"helmet": "^3.13.0",
|
||||||
"mkdirp": "^0.5.1",
|
"mkdirp": "^0.5.1",
|
||||||
"mozlog": "^2.2.0",
|
"mozlog": "^2.2.0",
|
||||||
"node-fetch": "^2.2.0",
|
"node-fetch": "^2.2.1",
|
||||||
"raven": "^2.6.4",
|
"raven": "^2.6.4",
|
||||||
"redis": "^2.8.0",
|
"redis": "^2.8.0",
|
||||||
"websocket-stream": "^5.1.2"
|
"websocket-stream": "^5.1.2"
|
||||||
|
@ -8,7 +8,6 @@ describe('Firefox Send homepage', function() {
|
|||||||
const footerLinks = [
|
const footerLinks = [
|
||||||
'mozilla',
|
'mozilla',
|
||||||
'legal',
|
'legal',
|
||||||
'about',
|
|
||||||
'legal',
|
'legal',
|
||||||
'cookies',
|
'cookies',
|
||||||
'report-infringement',
|
'report-infringement',
|
||||||
|
Loading…
Reference in New Issue
Block a user