diff --git a/css/base.css b/css/base.css index b5b927671..2a81b0efa 100644 --- a/css/base.css +++ b/css/base.css @@ -3,12 +3,26 @@ padding: 0; box-sizing: border-box; font-size: 16px; - font-family: ".SFNSText-Regular", "BlinkMacSystemFont", "Helvetica Neue", - "Segoe UI", "Arial", sans-serif; + /* font-family: ".SFNSText-Regular", "BlinkMacSystemFont", "Helvetica Neue", + "Segoe UI", "Arial", sans-serif; */ + + font-family: 'Roboto', monospace; + /* font-family: "Amore", cursive; */ +} +:root{ + --navy: #112240; + --slate: #8892b0; + --green: #64ffda; + --light-slate: #ccd6f6; } + + + + + /* TODO figure out why the default focus color in Electron is orange */ *:focus { - outline-color: rgb(0, 117, 255); + outline-color: rgb(0, 255, 191); } .dark-mode *:focus { outline-color: transparent; @@ -25,7 +39,7 @@ button { -webkit-appearance: none; background: none; border: none; - color: inherit; + color: var(--light-slate); outline: none; } body, @@ -38,7 +52,8 @@ html { } body.dark-mode { - background-color: rgb(33, 37, 43); + /* background-color: rgb(33, 37, 43); Color Principal */ + background-color: var(--navy); color: lightgrey; } @@ -46,15 +61,22 @@ h1, h2, h3 { font-size: 5em; - font-weight: 300; + font-weight: 400; opacity: 0.8; margin: 0.5em 0; - color: inherit; + color: var(--light-slate); text-align: center; } h2 { text-align: left; font-size: 2.75em; + margin: 0.5em 0; + font-weight: 600; + opacity: 0.8; + color: var(--light-slate); +} +h2:first-of-type { + border-top: none; } h3 { text-align: left; @@ -78,12 +100,12 @@ h1 + h2 { } a { - color: royalblue; + color: var(--green); text-decoration: none; } .dark-mode a { - color: dodgerblue; + color: var(--green); } .dark-mode input, @@ -95,19 +117,36 @@ a { /* styled scrollbars */ -.has-thin-scrollbar::-webkit-scrollbar { - height: 0.25em; +/* Estilo global para todas las scrollbars */ +::-webkit-scrollbar { + width: 8px; /* Ancho reducido */ + height: 8px; /* Alto reducido para scrollbars horizontales */ } -.has-thin-scrollbar::-webkit-scrollbar-track { - background-color: rgba(0, 0, 0, 0.05); + +::-webkit-scrollbar-track { + background: transparent; /* Hacemos el track invisible */ } -.has-thin-scrollbar::-webkit-scrollbar-thumb { - background-color: rgba(0, 0, 0, 0.175); - border-radius: 0.25em; + +::-webkit-scrollbar-thumb { + background-color: rgba(0, 0, 0, 0.3); /* Un color oscuro semitransparente para el thumb */ + border-radius: 10px; /* Bordes redondeados */ + border: 2px solid transparent; /* Espacio alrededor del thumb */ + background-clip: content-box; /* Para que el borde sea transparente y no afecte el color del thumb */ } -.dark-theme .has-thin-scrollbar::-webkit-scrollbar-track { - background-color: rgba(255, 255, 255, 0.25); + +::-webkit-scrollbar-thumb:hover { + background-color: rgba(0, 0, 0, 0.5); } -.dark-theme .has-thin-scrollbar::-webkit-scrollbar-thumb { - background-color: rgba(255, 255, 255, 0.6); + +/* Estilo para el tema oscuro */ +body.dark-mode ::-webkit-scrollbar-thumb { + background-color: rgba(255, 255, 255, 0.3); /* Un color claro semitransparente para el thumb en modo oscuro */ +} + +body.dark-mode ::-webkit-scrollbar-thumb:hover { + background-color: rgba(255, 255, 255, 0.5); +} + +.section-separator { + /* Eliminado: restauración del archivo original */ } diff --git a/css/bookmarkManager.css b/css/bookmarkManager.css index 81e0f5a95..f1ac2e1c7 100644 --- a/css/bookmarkManager.css +++ b/css/bookmarkManager.css @@ -88,7 +88,7 @@ padding: 0.35em 0.5em; border-radius: 3px; background: transparent; - color: inherit; + color: var(--light-slate); border: 1px rgba(0, 0, 0, 0.125) solid; opacity: 0.8; } diff --git a/css/findinpage.css b/css/findinpage.css index 43cb2985b..cbd8a1e29 100644 --- a/css/findinpage.css +++ b/css/findinpage.css @@ -21,13 +21,13 @@ body.linux #findinpage-bar { appearance: none; outline: none; border: 0; - background: inherit; - color: inherit; + background: var(--navy); + color: var(--light-slate); min-width: 80px; } #findinpage-bar #findinpage-input::-webkit-input-placeholder { opacity: 0.75; - color: inherit; + color: var(--light-slate); } #findinpage-bar .divider { height: 100%; diff --git a/css/modal.css b/css/modal.css index aab450fe0..9eaebcfc0 100644 --- a/css/modal.css +++ b/css/modal.css @@ -1,3 +1,4 @@ + #overlay { display: none; } @@ -54,7 +55,7 @@ body.dark-mode #overlay { } .dark-mode .modal { - background-color: rgb(33, 37, 43); + background-color: var(--navy); } .modal-close-button { diff --git a/css/newTabPage.css b/css/newTabPage.css index 26937cede..cb574ac03 100644 --- a/css/newTabPage.css +++ b/css/newTabPage.css @@ -39,7 +39,7 @@ body:not(.is-ntp) #ntp-content { } .dark-mode #ntp-background-controls button { - background: rgb(33, 37, 43); + background: var(--navy); border-color: #aaa; color: white; } diff --git a/css/passwordCapture.css b/css/passwordCapture.css index c8f9be96c..d787f519f 100644 --- a/css/passwordCapture.css +++ b/css/passwordCapture.css @@ -19,7 +19,7 @@ } #password-capture-save { - background: royalblue; + background: var(--green); color: white; padding: 0.33em 2em; border-radius: 3px; diff --git a/css/tabBar.css b/css/tabBar.css index e956064a5..b86e024f2 100644 --- a/css/tabBar.css +++ b/css/tabBar.css @@ -27,7 +27,8 @@ /* dark colors don't need to be darkened as much for contrast */ .dark-theme #navbar:before { - background: rgba(255, 255, 255, 0.15); + /* background: rgba(255, 255, 255, 0.15); */ + background: var(--navy); } /* navbar buttons */ @@ -432,3 +433,7 @@ body:not(.dark-theme) .progress-bar { transform: translateX(0%); transition: transform 500ms cubic-bezier(0.25, 0.46, 0.45, 0.94); } + +.tab-bar, .navbar-action-button, .tab-item { + font-family: 'MesloLGL Nerd Font', 'MesloLGL NF', 'MesloLGLDZ Nerd Font', 'MesloLGLDZ NF', monospace; +} diff --git a/css/tabEditor.css b/css/tabEditor.css index 4047a28be..b6ef2df5d 100644 --- a/css/tabEditor.css +++ b/css/tabEditor.css @@ -17,7 +17,7 @@ background: none; -webkit-appearance: none; border: none; - color: inherit; + color: var(--light-slate); flex: 1; height: 1.5em; outline: none; @@ -25,7 +25,7 @@ -webkit-app-region: no-drag; } #tab-editor-input::-webkit-input-placeholder { - color: inherit; + color: var(--light-slate); opacity: 0.5; line-height: 1.25em; } diff --git a/css/taskOverlay.css b/css/taskOverlay.css index 0b2f0965f..77f3e143c 100644 --- a/css/taskOverlay.css +++ b/css/taskOverlay.css @@ -1,7 +1,7 @@ .simulated-navbar { width: 100%; height: calc(36px + var(--control-space-top)); - background-color: inherit; + background-color: var(--navy); z-index: 1; border-bottom: 1px rgba(0, 0, 0, 0.1) solid; display: flex; @@ -57,7 +57,7 @@ } #switch-task-button.active { - color: royalblue !important; + color: var(--green) !important; } #switch-task-button svg { @@ -201,14 +201,14 @@ body:not(.touch) appearance: none; flex: 1; font-size: 1.2em; - color: inherit; + color: var(--light-slate); border: 0; background-color: transparent !important; opacity: 0.75; margin: 0.5em 0.75em 0.5em 0.5em; } .task-name::-webkit-input-placeholder { - color: inherit; + color: var(--light-slate); opacity: 0.8; } #add-task { @@ -216,7 +216,7 @@ body:not(.touch) margin-left: 10%; padding: 1.25em; text-align: center; - color: inherit; + color: var(--light-slate); background-color: rgb(245, 245, 245); cursor: pointer; } @@ -237,8 +237,8 @@ body:not(.touch) } .dark-mode #add-task { - background-color: rgb(33, 37, 43); - color: lightgrey; + background-color: var(--navy); + color: var(--slate); } .dark-mode .is-dragging-tab #add-task { background: none; @@ -301,11 +301,11 @@ body:not(.touch) body.dark-mode #task-overlay { background-color: rgb(40, 44, 52) !important; - color: lightgrey; + color: var(--slate); } .dark-mode #switch-task-button { - color: dodgerblue; + color: var(--green); } .tab-drop-placeholder, .task-drop-placeholder { diff --git a/css/webviews.css b/css/webviews.css index 128193b86..5a123ca54 100644 --- a/css/webviews.css +++ b/css/webviews.css @@ -7,7 +7,7 @@ width: 140px; height: 140px; border-radius: 70px; - background: #000; + background: var(--navy); position: fixed; top: 50%; z-index: 1; diff --git a/index.html b/index.html index d0e97bc17..d54fea741 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - Min + Apu diff --git a/localization/languages/tr.json b/localization/languages/tr.json index 19acc5ae1..9ad74e110 100644 --- a/localization/languages/tr.json +++ b/localization/languages/tr.json @@ -2,9 +2,6 @@ "name": "Turkish (Turkey)", "identifier": "tr", "translations": { - /* Context menu items - these are the items displayed in the menu when you right-click on a page - */ "addToDictionary": "Sözlüğe Ekle", "pictureInPicture": "Resim İçinde Resim", "openInNewTab": "Yeni Sekmede Aç", @@ -14,32 +11,28 @@ "openImageInNewTab": "Resmi Yeni Sekmede Aç", "openImageInNewPrivateTab": "Resmi Yeni Gizli Sekmede Aç", "saveImageAs": "Resmi Farklı Kaydet", - "searchWith": "%s ile ara", //%s will be replaced with the name of the current search engine + "searchWith": "%s ile ara", "copyLink": "Linki Kopyala", "copyEmailAddress": "E-Posta Adresini Kopyala", "selectAll": "Hepsini Seç", "undo": "Geri", "redo": "İleri", "cut": "Kes", - "copy": "Kopyala", //this is a verb (as in "copy the currently-selected text") + "copy": "Kopyala", "paste": "Yapıştır", "pasteAndMatchStyle": "Yapıştır ve Stili Eşle", "goBack": "Geri Git", "goForward": "İleri Git", "inspectElement": "Öğeyi İncele", "translatePage": "Sayfayı Çevir", - /* searchbar */ "placesPluginOpenAgain": "Yeniden Aç", "placesPluginSwitchToTab": "Sekmeye Git", "placesPluginSwitchToTask": "Şu Göreve Git \"%t\"", "pasteAndGo": "Yapıştır ve Git", - "DDGAnswerSubtitle": "Cevap", //this is a noun - it is used as a subtitle when displaying Instant Answers from DuckDuckGo in the searchbar - "suggestedSite": "Önerilen site", //this is used to label suggested websites from the DuckDuckGo API, - "resultsFromDDG": "DuckDuckGo'dan sonuçlar", //this is used as a label to indicate which results come from DuckDuckGo's API - "taskN": "Görev %n", //this is used as a way to identify which tab a task is in "task 1", "task 2", ... - /* custom commands - these are some of the items that show up when you press ! in the searchbar. - Each one of these strings describes what the command will do when you run it. */ + "DDGAnswerSubtitle": "Cevap", + "suggestedSite": "Önerilen site", + "resultsFromDDG": "DuckDuckGo'dan sonuçlar", + "taskN": "Görev %n", "showMoreBangs": "Daha fazla göster", "viewSettings": "Görünüm Ayarları", "takeScreenshot": "Ekran Görüntüsü Al", @@ -63,19 +56,17 @@ "importBookmarks": "Yer imlerini HTML dosyasından içe aktar", "exportBookmarks": "Yer imlerini dışa aktar", "runUserscript": "Kullanıcı betiklerini çalıştır", - /* navbar */ "openMenu": "Menüyü Aç", "enterReaderView": "Okuyucu görünümüne girin", "exitReaderView": "Okuyucu görünümünden çıkın", - "newTabLabel": "Yeni Sekme", //this is a noun, used for tabs that don't have a page loaded in them yet + "newTabLabel": "Yeni Sekme", "connectionNotSecure": "Bu web sitesine yapmış olduğunuz bağlantı güvenli değil.", "searchbarPlaceholder": "Arayın veya adres girin", "privateTab": "Gizli sekme", - "newTabAction": "Yeni Sekme", //this is a verb, used to label a button that adds a tab to the tabstrip when clicked - /* task overlay */ + "newTabAction": "Yeni Sekme", "viewTasks": "Görevleri Görüntüle", - "newTask": "Yeni Görev", //"new" is a verb - it is used for a button at the bottom of the task overlay - "defaultTaskName": "Görev %n", //this is the name used for newly-created tasks; %n is replaced with a number ("task 1", "task 2", etc) + "newTask": "Yeni Görev", + "defaultTaskName": "Görev %n", "taskDeleteWarning": { "unsafeHTML": "Görev silindi. Geri al" }, @@ -83,16 +74,13 @@ "returnToTask": "Önceki göreve geri dön", "taskDescriptionTwo": "%t ve %t", "taskDescriptionThree": "%t, %t ve %n fazlası", - /* find in page toolbar */ - "searchInPage": "Sayfada Ara", //this is used as the placeholder text for the textbox in the find in page toolbar - "findMatchesSingular": "%i / %t eşleşme", //this and the next label are used to indicate which match is currently highlighted + "searchInPage": "Sayfada Ara", + "findMatchesSingular": "%i / %t eşleşme", "findMatchesPlural": "%i / %t eşleşme", - /* Focus mode */ "isFocusMode": "Odak Modundasınız.", - "closeDialog": "Tamam", //used as a label for the button that closes the dialog + "closeDialog": "Tamam", "focusModeExplanation1": "Odak modunda yeni sekme açamaz ya da görevler arasında geçiş yapamazsınız.", "focusModeExplanation2": "Odak modundan çıkmak için görünüm menüsünden \"odak modu\" tikini kaldırabilirsiniz.", - /* relative dates */ "timeRangeJustNow": "Şu anda", "timeRangeMinutes": "Birkaç dakika önce", "timeRangeHour": "Son bir saat içinde", @@ -102,7 +90,6 @@ "timeRangeMonth": "Geçtiğimiz ay", "timeRangeYear": "Geçtiğimiz yıl", "timeRangeLongerAgo": "Çok uzun zaman önce", - /* pages/error/index.html */ "crashErrorTitle": "Bir şeyler yanlış gitti.", "crashErrorSubtitle": "Bu sayfayı görüntülerken bir sorun oluştu.", "errorPagePrimaryAction": "Tekrar deneyin", @@ -119,21 +106,17 @@ "sslTimeErrorMessage": "Min, siteye güvenli bir şekilde bağlanamadı. Lütfen bilgisayarınızın saat ayarının doğru olduğundan emin olun.", "addressInvalidTitle": "Bu adres geçersiz.", "genericError": "Bir hata oluştu", - /* pages/phishing/index.html */ "phishingErrorTitle": "Bu site size zarar verebilir.", "phishingErrorMessage": "Bu web sitesi, şifreleriniz veya banka bilgileri gibi kişisel bilgilerinizi çalmaya çalışıyor olabilir.", "phishingErrorVisitAnyway": "Siteyi yine de ziyaret et", "phishingErrorLeave": "Bu siteden ayrıl", - /* multiple instances alert */ "multipleInstancesErrorMessage": "Bir hata oluştu. Açık olan tüm sekmeleri kapatıp, Min'i yeniden başlatın.", - /* pages/sessionRestoreError/index.html */ "sessionRestoreErrorTitle": "Bir hata oluştu", "sessionRestoreErrorExplanation": "Kaydedilen sekmeleriniz doğru bir şekilde geri yüklenemedi.", - "sessionRestoreErrorBackupInfo": "Verilerinizin yedeği şu konuma kaydedildi: %l.", //%l will be replaced with a path to a file + "sessionRestoreErrorBackupInfo": "Verilerinizin yedeği şu konuma kaydedildi: %l.", "sessionRestoreErrorLinkInfo": { "unsafeHTML": "Bu hata olmaya devam ederse, lütfen buradan yeni bir sorun başlığı açın." }, - /* pages/settings/index.html */ "settingsPreferencesHeading": "Tercihler", "settingsRestartRequired": "Değişiklikleri uygulamak için yeniden başlatmanız gerekiyor.", "settingsPrivacyHeading": "İçerik Engelleme", @@ -146,8 +129,8 @@ "settingsBlockedRequestCount": { "unsafeHTML": "Min şimdiye kadar, reklam ve takipçi engelledi." }, - "settingsCustomBangs": "Kişiselleştirilebilir Komutlar" - "settingsCustomBangsAdd": "Yeni komut ekle" + "settingsCustomBangs": "Kişiselleştirilebilir Komutlar", + "settingsCustomBangsAdd": "Yeni komut ekle", "settingsCustomBangsPhrase": "Cümle (Gerekli)", "settingsCustomBangsSnippet": "Açıklama (İsteğe Bağlı)", "settingsCustomBangsRedirect": "Yönlendirme URL'si (Gerekli)", @@ -184,7 +167,7 @@ "settingsNewWindowPickTask": "Görev listesini göster", "settingsSearchEngineHeading": "Arama Motoru", "settingsDefaultSearchEngine": "Bir varsayılan arama motoru seçin:", - "settingsDDGExplanation": "Arama çubuğundaki anlık yanıtları görmek için DuckDuckGo’yu varsayılan arama motoru olarak ayarlayın.", + "settingsDDGExplanation": "Arama çubuğundaki anlık yanıtları görmek için DuckDuckGo'yu varsayılan arama motoru olarak ayarlayın.", "customSearchEngineDescription": "Arama terimini %s ile değiştir", "settingsKeyboardShortcutsHeading": "Klavye Kısayolları", "settingsKeyboardShortcutsHelp": "Birden çok kısayolu ayırmak için virgül kullanın.", @@ -195,7 +178,6 @@ "settingsProxyRules": "Vekil sunucu kuralları:", "settingsProxyBypassRules": "Vekil sunucu kullanılmasın:", "settingsProxyConfigurationURL": "Konfigürasyon Adresi", - /* app menu */ "appMenuFile": "Dosya", "appMenuNewTab": "Yeni Sekme", "appMenuDuplicateTab": "Sekmeyi Çoğalt", @@ -217,7 +199,7 @@ "appMenuZoomIn": "Yakınlaştır", "appMenuZoomOut": "Uzaklaştır", "appMenuActualSize": "Gerçek Boyut", - "appMenuFullScreen": "Tam Ekran", //on some platforms, this string is replaced with one built-in to the OS + "appMenuFullScreen": "Tam Ekran", "appMenuFocusMode": "Odak Modu", "appMenuBookmarks": "Yer İmleri", "appMenuHistory": "Geçmiş", @@ -234,7 +216,7 @@ "appMenuReportBug": "Hata Bildir", "appMenuTakeTour": "Tur atın", "appMenuViewGithub": "GitHub'da Göster", - "appMenuAbout": "%n Hakkında", //%n is replaced with app name + "appMenuAbout": "%n Hakkında", "appMenuPreferences": "Seçenekler", "appMenuServices": "Servisler", "appMenuHide": "%n i Gizle", @@ -242,74 +224,9 @@ "appMenuShowAll": "Tümünü Göster", "appMenuQuit": "%n'den Çık", "appMenuBringToFront": "Tümünü Öne Getir", - /* Tab menu */ "tabMenuNewWindow": "Sekmeyi Yeni Pencereye Taşı", "tabMenuReload": "Yeniden Yükle", - /* PDF Viewer */ "PDFInvertPage": "Sayfa renklerini ters çevir", - "PDFPageCounter": { - "unsafeHTML": " sayfanın i" - }, - /* Context Reader */ - "buttonReaderSettings": "Okuyucu Ayarları", - "buttonReaderLightTheme": "Açık", - "buttonReaderSepiaTheme": "Sepya", - "buttonReaderDarkTheme": "Koyu", - "openReaderView": "Her zaman okuyucu görünümünde aç", - "autoRedirectBannerReader": "Bu sitedeki makaleler her zaman okuyucu görünümünde açılsın mı?", - "buttonReaderRedirectYes": "Evet", - "buttonReaderRedirectNo": "Hayır", - "articleReaderView": "Orjinal Makale", - /* Download manager */ - "downloadCancel": "İptal", - "downloadStateCompleted": "Tamamlandı", - "downloadStateFailed": "İndirilemedi", - /* Update Notifications */ - "updateNotificationTitle": "Min'in yeni bir sürümü mevcut", - /* Autofill settings */ - "settingsPasswordAutoFillHeadline": "Parola Otomatik Doldurma", - "settingsSelectPasswordManager": "Desteklenen parola yöneticilerinden birini seçin:", - "keychainViewPasswords": "Kayıtlı parolaları pöster", - /* Password manager setup */ - "passwordManagerSetupHeading": "Otomatik Doldurmayı kullanabilmek için %p kurulumunu tamamlayın", - "passwordManagerSetupStep1": { - "unsafeHTML": "İlk olarak, ve ve arşivden çıkartın." - }, - "passwordManagerInstallerSetup": { - "unsafeHTML": " indirin ve dosyayı aşağıdaki kutucuğa sürükleyip bırakın:" - }, - "passwordManagerSetupLink": "%p CLI aracını indir ", - "passwordManagerSetupLinkInstaller": "%p CLI yükleyicisi", - "passwordManagerSetupStep2": "Ardından aracı aşağıdaki kutucuğa sürükleyip bırakın:", - "passwordManagerSetupDragBox": "Aracı buraya sürükleyin", - "passwordManagerSetupInstalling": "Yükleniyor...", - "passwordManagerBitwardenSignIn": "Bitwarden hesabınızı bağlamak için vault.bitwarden.com/#/settings/account adresine gidin, sayfanın altına inin ve \"View API Key\"yi seçin. Ardından değerleri aşağıdaki alanlara yapıştırın.", - "passwordManagerSetupSignIn": "Otomatik doldurmayı kullanabilmek için parola yöneticinize giriş yapın. Kimlik bilgileriniz Min içerisinde bir yere kaydedilmeyecektir.", - "disableAutofill": "Otomatik doldurmayı Devre Dışı Bırak", - "passwordManagerSetupUnlockError": "Parola kaydedicisinin kilidi açılamadı: ", - "passwordManagerSetupRetry": "Doğru dosyayı kullandığınızdan ve geçerli parolayı girdiğinizden emin olun. Dosyayı buraya sürükleyerek tekrar deneyebilirsniz.", - "passwordManagerUnlock": "Parola kayıtlarınızın kilidini açmak için %p ana parolasını girin:", - /* Password save bar */ - "passwordCaptureSavePassword": "% için parola kaydedilsin mi?", - "passwordCaptureSave": "Kaydet", - "passwordCaptureDontSave": "Kaydetme", - "passwordCaptureNeverSave": "Asla kaydetme", - "generatePassword": "Parola Oluştur", - /* Password viewer */ - "savedPasswordsHeading": "Kayıtlı Parolalar", - "savedPasswordsEmpty": "Kaydedilmiş parola yok.", - "savedPasswordsNeverSavedLabel": "Daha önce kaydedilmedi", - "deletePassword": "% için parola silinsin mi?", - /* Dialogs */ - "loginPromptTitle": "Giriş yapın %h", //%h is replaced with host, %r with realm (title of protected part of site) - "dialogConfirmButton": "Onayla", - "dialogSkipButton": "İptal", - "username": "Kullanıcı Adı", - "email": "E-Posta", - "password": "Parola", - "secretKey": "Gizli anahtar", - "openExternalApp": "Harici uygulamayı aç", - "clickToCopy": "Kopyalamak için Tıkla", - "copied": "Kopyalandı" + "PDFPageCounter": "%i / %t" } } diff --git a/package.json b/package.json index b437d28e3..378c687c4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "min", - "productName": "Min", + "name": "apu", + "productName": "Apu", "author": "PalmerAL", "version": "1.35.0", "description": "A fast, minimal browser that protects your privacy", @@ -64,8 +64,10 @@ "postinstall": "node ./scripts/setupDevEnv.js", "test": "standard --verbose js/**/*.js main/*.js", "watch": "node ./scripts/watch.js", + "watchStyles": "node ./scripts/watchStyles.js", "startElectron": "electron . --development-mode", "start": "npm run build && concurrently \"npm run watch\" \"npm run startElectron\"", + "dev": "concurrently \"npm run watch\" \"npm run watchStyles\" \"npm run startElectron\"", "buildMain": "node ./scripts/buildMain.js", "buildBrowser": "node ./scripts/buildBrowser.js", "buildBrowserStyles": "node ./scripts/buildBrowserStyles.js", diff --git a/pages/settings/settings.css b/pages/settings/settings.css index 34f5ee524..aa7aa1c8a 100644 --- a/pages/settings/settings.css +++ b/pages/settings/settings.css @@ -18,14 +18,17 @@ html { overflow: hidden; } .blue-gradient-background { - background: linear-gradient( + background: #112240; + background: linear-gradient(90deg, rgba(17, 34, 64, 0.98) 27%, rgba(45, 107, 93, 0.96) 100%); + + /* background: linear-gradient( 135deg, rgba(80, 122, 196, 1) 43%, rgba(80, 122, 196, 1) 43%, rgba(128, 192, 226, 1) 89%, rgba(128, 192, 226, 1) 89% ); - color: #fff; + color: #fff; */ } .container { diff --git a/scripts/watchStyles.js b/scripts/watchStyles.js new file mode 100644 index 000000000..7a05ced2c --- /dev/null +++ b/scripts/watchStyles.js @@ -0,0 +1,41 @@ +const chokidar = require('chokidar') +const path = require('path') +const { exec } = require('child_process') + +// Observar todos los archivos .css en el directorio css +const cssDirectoryToWatch = path.join(__dirname, '../css') + +const buildCommand = 'node scripts/buildBrowserStyles.js' + +// Inicializar el observador +const watcher = chokidar.watch(`${cssDirectoryToWatch}/**/*.css`, { + persistent: true, + ignoreInitial: true, // No ejecutar al inicio + awaitWriteFinish: { // Ayuda con escrituras atómicas + stabilityThreshold: 200, + pollInterval: 100 + } +}) + +console.log(`[watchStyles] Observando cambios de estilos en ${cssDirectoryToWatch} ...`) + +function rebuildStyles(filePath, event) { + console.log(`[watchStyles] Archivo ${filePath} ha sido ${event === 'add' ? 'añadido' : event === 'unlink' ? 'eliminado' : 'modificado'}, reconstruyendo estilos...`) + exec(buildCommand, (err, stdout, stderr) => { + if (err) { + console.error(`[watchStyles] Error reconstruyendo estilos: ${stderr || err.message}`) + return + } + if (stdout.trim()) { + console.log(`[watchStyles] Estilos reconstruidos exitosamente: ${stdout.trim()}`) + } else { + console.log(`[watchStyles] Estilos reconstruidos exitosamente.`) + } + }) +} + +watcher + .on('add', filePath => rebuildStyles(filePath, 'add')) + .on('change', filePath => rebuildStyles(filePath, 'change')) + .on('unlink', filePath => rebuildStyles(filePath, 'unlink')) // Reconstruir incluso si un CSS es eliminado del directorio + .on('error', error => console.error(`[watchStyles] Error del observador: ${error}`)) \ No newline at end of file