diff --git a/package.json b/package.json index 77e5ea6b..b16d0492 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "cobalt", "description": "save what you love", - "version": "6.2.4", + "version": "6.3", "author": "wukko", "exports": "./src/cobalt.js", "type": "module", diff --git a/src/front/cobalt.css b/src/front/cobalt.css index ed2b4748..1e1f2fbd 100644 --- a/src/front/cobalt.css +++ b/src/front/cobalt.css @@ -16,7 +16,10 @@ --accent-highlight: rgb(225, 225, 225, 4%); --accent-subtext: rgb(110, 110, 110); --accent-hover: rgb(30, 30, 30); + --accent-hover-elevated: rgb(48, 48, 48); --accent-button: rgb(25, 25, 25); + --accent-button-elevated: rgb(42, 42, 42); + --glass: rgba(25, 25, 25, 0.85); --subbackground: rgb(10, 10, 10); --background: rgb(0, 0, 0); } @@ -27,7 +30,10 @@ --accent-highlight: rgb(25, 25, 25, 4%); --accent-subtext: rgb(110, 110, 110); --accent-hover: rgb(230, 230, 230); + --accent-hover-elevated: rgb(215, 215, 215); --accent-button: rgb(225, 225, 225); + --accent-button-elevated: rgb(210, 210, 210); + --glass: rgba(230, 230, 230, 0.85); --subbackground: rgb(240, 240, 240); --background: rgb(255, 255, 255); } @@ -37,7 +43,10 @@ --accent-highlight: rgb(225, 225, 225, 4%); --accent-subtext: rgb(110, 110, 110); --accent-hover: rgb(30, 30, 30); + --accent-hover-elevated: rgb(48, 48, 48); --accent-button: rgb(25, 25, 25); + --accent-button-elevated: rgb(42, 42, 42); + --glass: rgba(25, 25, 25, 0.85); --subbackground: rgb(10, 10, 10); --background: rgb(0, 0, 0); } @@ -46,7 +55,10 @@ --accent-highlight: rgb(25, 25, 25, 4%); --accent-subtext: rgb(110, 110, 110); --accent-hover: rgb(230, 230, 230); + --accent-hover-elevated: rgb(215, 215, 215); --accent-button: rgb(225, 225, 225); + --accent-button-elevated: rgb(210, 210, 210); + --glass: rgba(230, 230, 230, 0.85); --subbackground: rgb(240, 240, 240); --background: rgb(255, 255, 255); } @@ -327,7 +339,32 @@ button:active, max-height: 85%; } .popup.small { - width: 20% + width: 20%; + background: var(--glass); + backdrop-filter: blur(7px); + -webkit-backdrop-filter: blur(7px); + box-shadow: 0px 0px 80px 0px var(--accent-hover); + padding: 1.7rem; + border: var(--accent-highlight) solid 0.15rem; +} +.popup.small #popup-title { + margin-bottom: .2rem; +} +.popup.small #popup-header { + padding-top: 0; +} +.popup.small .explanation { + margin-bottom: 0.8rem; +} +.popup.small .switch { + background: var(--accent-button-elevated); +} +.popup.small .switch:hover { + background: var(--accent-hover-elevated); +} +#close-error { + background: var(--accent); + color: var(--background); } #popup-backdrop { opacity: 0.5; @@ -421,7 +458,6 @@ button:active, } #popup-header { position: relative; - background: var(--background); z-index: 999; padding-top: 0.8rem; } @@ -537,7 +573,6 @@ button:active, #close-button { max-width: 2.6rem; margin-left: var(--padding-1); - background: var(--background); border: var(--border-15); color: var(--accent); padding: 0.3rem 0.75rem 0.5rem; @@ -886,8 +921,24 @@ button:active, .urgent-notice { width: 100%; } -} -@media screen and (max-width: 949px) { + .popup.small { + width: calc(100% - 1.7rem * 2); + height: auto; + top: unset; + bottom: 0; + left: 0; + transform: none; + position: absolute; + border: none; + border-top: var(--accent-highlight) solid 0.15rem; + padding-bottom: calc(env(safe-area-inset-bottom)/2 + 1.7rem) + } + .popup.small #popup-header { + background: none; + } + #close-error { + bottom: 3rem; + } #picker-holder::-webkit-scrollbar { display: none; } @@ -903,23 +954,12 @@ button:active, height: 20rem; max-width: 100%; } - #popup-header { - padding-top: 1.2rem; - } - #popup-settings #popup-header { - padding-top: 0.8rem; - } .picker-image-container { height: 7rem; width: 7rem; line-height: 7rem; } - #close-error { - bottom: 3rem; - position: absolute; - width: var(--without-padding); - } - .popup, .popup.scrollable, .popup.small { + .popup, .popup.scrollable { border: none; width: 90%; height: 95%; diff --git a/src/front/cobalt.js b/src/front/cobalt.js index ba97dcd2..7a624aa4 100644 --- a/src/front/cobalt.js +++ b/src/front/cobalt.js @@ -245,11 +245,6 @@ function changeSwitcher(li, b) { } } } -function internetError() { - eid("url-input-area").disabled = false - changeDownloadButton(2, '!!'); - popup("error", 1, loc.noInternet); -} function checkbox(action) { sSet(action, !!eid(action).checked); switch(action) { @@ -283,8 +278,9 @@ function changeButton(type, text) { case 0: //error eid("url-input-area").disabled = false eid("url-clear").style.display = "block"; - changeDownloadButton(2, '!!') + changeDownloadButton(2, '!!'); popup("error", 1, text); + setTimeout(() => { changeButton(1); }, 2500); break; case 1: //enable back changeDownloadButton(1, '>>'); @@ -299,6 +295,12 @@ function changeButton(type, text) { break; } } +function internetError() { + eid("url-input-area").disabled = false + changeDownloadButton(2, '!!'); + setTimeout(() => { changeButton(1); }, 2500); + popup("error", 1, loc.noInternet); +} function resetSettings() { localStorage.clear(); window.location.reload(); diff --git a/src/front/emoji/3d/cat_crying.svg b/src/front/emoji/3d/cat_crying.svg new file mode 100644 index 00000000..afa45138 --- /dev/null +++ b/src/front/emoji/3d/cat_crying.svg @@ -0,0 +1,382 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/front/emoji/3d/cat_flabbergasted.svg b/src/front/emoji/3d/cat_flabbergasted.svg new file mode 100644 index 00000000..84c9feda --- /dev/null +++ b/src/front/emoji/3d/cat_flabbergasted.svg @@ -0,0 +1,507 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/front/emoji/3d/person_shrugging.svg b/src/front/emoji/3d/person_shrugging.svg new file mode 100644 index 00000000..2a2f33cb --- /dev/null +++ b/src/front/emoji/3d/person_shrugging.svg @@ -0,0 +1,632 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/front/emoji/cat_crying.svg b/src/front/emoji/cat_crying.svg new file mode 100644 index 00000000..896ae898 --- /dev/null +++ b/src/front/emoji/cat_crying.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/front/emoji/cat_flabbergasted.svg b/src/front/emoji/cat_flabbergasted.svg new file mode 100644 index 00000000..92f72427 --- /dev/null +++ b/src/front/emoji/cat_flabbergasted.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/front/emoji/person_shrugging.svg b/src/front/emoji/person_shrugging.svg new file mode 100644 index 00000000..2e1ac9a8 --- /dev/null +++ b/src/front/emoji/person_shrugging.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/localization/languages/en.json b/src/localization/languages/en.json index a172d95f..1f565a57 100644 --- a/src/localization/languages/en.json +++ b/src/localization/languages/en.json @@ -19,7 +19,7 @@ "TitlePopupError": "uh-oh...", "TitlePopupChangelog": "what's new?", "TitlePopupDonate": "support {appName}", - "TitlePopupDownload": "how to continue?", + "TitlePopupDownload": "how to save?", "ErrorSomethingWentWrong": "something went wrong and i couldn't get anything for you. try again, but if issue persists, {ContactLink}.", "ErrorUnsupported": "it seems like this service is not supported yet or your link is invalid. have you pasted the right link?", "ErrorBrokenLink": "{s} is supported, but something is wrong with your link. maybe you didn't copy it fully?", @@ -49,7 +49,6 @@ "NoScriptMessage": "{appName} uses javascript for api requests and interactive interface. you have to allow javascript to use this site. there are no pesty scripts, pinky promise.", "DownloadPopupDescriptionIOS": "easiest way to save videos on ios:\n1. add this siri shortcut.\n2. press \"share\" above and select \"save to photos\" in appeared share sheet.\nif asked, review the permission request, and press \"always allow\".\n\nalternative method:\npress and hold the download button, hide the video preview, and select \"download linked file\" to download.\nthen, open safari downloads, select the file you downloaded, open share menu, and finally press \"save video\".", "DownloadPopupDescription": "download button opens a new tab with requested file. you can disable this popup in settings.", - "DownloadPopupWayToSave": "pick a way to save", "ClickToCopy": "press to copy", "Download": "download", "CopyURL": "copy", @@ -121,6 +120,7 @@ "ShareURL": "share", "ErrorTweetUnavailable": "couldn't find anything about this tweet. this could be because its visibility is limited. try another one!", "ErrorTwitterRIP": "twitter has restricted access to any content to unauthenticated users. while there's a way to get regular tweets, spaces are, unfortunately, impossible to get at this time. i am looking into possible solutions.", - "UrgentDonate": "{appName} needs your help!" + "UrgentDonate": "{appName} needs your help!", + "PopupCloseDone": "done" } } diff --git a/src/localization/languages/ru.json b/src/localization/languages/ru.json index d269cb74..9f74c50c 100644 --- a/src/localization/languages/ru.json +++ b/src/localization/languages/ru.json @@ -19,7 +19,7 @@ "TitlePopupError": "опаньки...", "TitlePopupChangelog": "что нового?", "TitlePopupDonate": "поддержи {appName}", - "TitlePopupDownload": "как продолжить?", + "TitlePopupDownload": "как сохранить?", "ErrorSomethingWentWrong": "что-то пошло совсем не так и у меня не получилось ничего для тебя достать. попробуй ещё раз, но если так и не получится, {ContactLink}.", "ErrorUnsupported": "с твоей ссылкой что-то не так, или же этот сервис ещё не поддерживается. может быть, ты вставил не ту ссылку?", "ErrorBrokenLink": "{s} поддерживается, но с твоей ссылкой что-то не так. может быть, ты её не полностью скопировал?", @@ -49,7 +49,6 @@ "NoScriptMessage": "{appName} использует javascript для обработки ссылок и интерактивного интерфейса. ты должен разрешить использование javascript, чтобы пользоваться сайтом. тут нет никаких зловредных скриптов, обещаю.", "DownloadPopupDescriptionIOS": "наиболее простой метод скачивания видео на ios:\n1. добавь этот сценарий siri.\n2. нажми \"поделиться\" выше и выбери \"save to photos\" в открывшемся окне.\nесли появляется окно с запросом разрешения, то прочитай его, потом нажми \"всегда разрешать\".\n\nальтернативный метод:\nзажми кнопку \"скачать\", затем скрой превью и выбери \"загрузить файл по ссылке\" в появившемся окне.\nпотом открой загрузки в safari, выбери скачанный файл, нажми иконку \"поделиться\", и, наконец, нажми \"сохранить видео\".", "DownloadPopupDescription": "кнопка скачивания открывает новое окно с файлом. ты можешь отключить выбор метода скачивания файла в настройках.", - "DownloadPopupWayToSave": "выбери, как сохранить", "ClickToCopy": "нажми, чтобы скопировать", "Download": "скачать", "CopyURL": "скопировать", @@ -121,6 +120,7 @@ "ShareURL": "поделиться", "ErrorTweetUnavailable": "не смог найти что-либо об этом твите. возможно его видимость была ограничена. попробуй другой!", "ErrorTwitterRIP": "твиттер ограничил доступ к любому контенту на сайте для пользователей без аккаунтов. я нашёл лазейку, чтобы доставать обычные твиты, а для spaces, к сожалению, нет. я ищу возможные варианты выхода из ситуации.", - "UrgentDonate": "нужна твоя помощь!" + "UrgentDonate": "нужна твоя помощь!", + "PopupCloseDone": "готово" } } diff --git a/src/modules/emoji.js b/src/modules/emoji.js index 44b73daa..aeb2f454 100644 --- a/src/modules/emoji.js +++ b/src/modules/emoji.js @@ -24,19 +24,27 @@ const names = { "🔮": "crystal_ball", "💪": "biceps", "💖": "sparkling_heart", - "👾": "alien_monster" + "👾": "alien_monster", + "😿": "cat_crying", + "🙀": "cat_flabbergasted", + "🤷": "person_shrugging" } let sizing = { 18: 0.8, 22: 0.4, 30: 0.7, 48: 0.9, - 64: 0.9 + 64: 0.9, + 78: 0.9 } -export default function(emoji, size, disablePadding) { +export default function(emoji, size, disablePadding, fluent) { if (!size) size = 22; let padding = size !== 22 ? `margin-right:${sizing[size] ? sizing[size] : "0.4"}rem;` : false; if (disablePadding) padding = 'margin-right:0!important;'; + if (!names[emoji]) emoji = "❓"; - return `` + + let filePath = `emoji/${names[emoji]}.svg`; + if (fluent) filePath = `emoji/3d/${names[emoji]}.svg`; + return `` } diff --git a/src/modules/pageRender/page.js b/src/modules/pageRender/page.js index 502cef2a..c5f2d7f4 100644 --- a/src/modules/pageRender/page.js +++ b/src/modules/pageRender/page.js @@ -44,7 +44,7 @@ export default function(obj) { - + ${appName} @@ -324,22 +324,6 @@ export default function(obj) { }) }], })} - ${popup({ - name: "download", - standalone: true, - header: { - closeAria: t('AccessibilityClosePopup'), - subtitle: t('TitlePopupDownload') - }, - body: switcher({ - name: "download", - subtitle: t('DownloadPopupWayToSave'), - explanation: `${!isIOS ? t('DownloadPopupDescription') : t('DownloadPopupDescriptionIOS')}`, - items: `${t('Download')} -
${t('ShareURL')}
-
${t('CopyURL')}
` - }) - })} ${popupWithBottomButtons({ name: "picker", closeAria: t('AccessibilityClosePopup'), @@ -350,18 +334,37 @@ export default function(obj) { buttons: [`${t('ImagePickerDownloadAudio')}`], content: '
' })} + ${popup({ + name: "download", + standalone: true, + buttonOnly: true, + classes: ["small"], + header: { + closeAria: t('AccessibilityClosePopup'), + emoji: emoji("🤷", 78, 1, 1), + title: t('TitlePopupDownload') + }, + body: switcher({ + name: "download", + explanation: `${!isIOS ? t('DownloadPopupDescription') : t('DownloadPopupDescriptionIOS')}`, + items: `${t('Download')} +
${t('ShareURL')}
+
${t('CopyURL')}
` + }), + buttonText: t('PopupCloseDone') + })} ${popup({ name: "error", standalone: true, buttonOnly: true, classes: ["small"], - buttonText: t('ErrorPopupCloseButton'), header: { closeAria: t('AccessibilityClosePopup'), title: t('TitlePopupError'), - emoji: emoji("☹️", 64, 1), + emoji: emoji("😿", 78, 1, 1), }, - body: `
` + body: `
`, + buttonText: t('ErrorPopupCloseButton') })}