2021-04-16 01:00:00 +02:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
|
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
<meta name="csrf-token" content="{{ csrf_token() }}">
|
|
|
|
|
|
|
|
<title>{{ config('app.name') }}</title>
|
|
|
|
|
|
|
|
<!-- Fonts -->
|
|
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap">
|
|
|
|
|
|
|
|
<!-- Styles -->
|
|
|
|
<link rel="stylesheet" href="{{ asset('css/app.css') }}">
|
|
|
|
|
|
|
|
<!-- Scripts -->
|
|
|
|
<script src="{{ asset('js/app.js') }}" defer></script>
|
Fixed dark mode for login/register...
This fixed the issue of dark mode not displaying on the register, login, forgot password and a few other pages.
This one took me a while to fix, and I still don't really know what is going on here.
The aforementioned pages already implemented a dark mode, but it didn't seem to work for me. After some testing, I discovered that the dark mode preset doesn't load on chromium based browsers.
I have absolutely no idea why that is, if someone could help me with this that would be amazing. I might make an issue out of this later on.
As I still wanted to fix this, I finally achieved my goal by doing the caveman approach:
I first added the usual dark mode detection. The same used on the home and little link pages (see previous commits if you're interested).
Then I wrote and if statement that loads the newly added app-dark.css (see previous commit) that changes text and background color on the pages in question, if the browser type is chromium and dark mode is selected in the browser settings.
"@if(strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome' !== false) and $color_scheme == 'dark')"
This doesn't look optimal, and I would rather just have the same dark mode as on Firefox, but this is the best I can currently do with my available time.
2022-02-21 23:34:07 +01:00
|
|
|
|
|
|
|
<!-- begin dark mode detection -->
|
|
|
|
<script src="{{ asset('littlelink/js/js.cookie.min.js') }}"></script>
|
|
|
|
<script>
|
|
|
|
// code to set the `color_scheme` cookie
|
|
|
|
var $color_scheme = Cookies.get("color_scheme");
|
|
|
|
function get_color_scheme() {
|
|
|
|
return (window.matchMedia && window.matchMedia("(prefers-color-scheme: dark)").matches) ? "dark" : "light";
|
|
|
|
}
|
|
|
|
function update_color_scheme() {
|
|
|
|
Cookies.set("color_scheme", get_color_scheme());
|
|
|
|
}
|
|
|
|
// read & compare cookie `color-scheme`
|
|
|
|
if ((typeof $color_scheme === "undefined") || (get_color_scheme() != $color_scheme))
|
|
|
|
update_color_scheme();
|
|
|
|
// detect changes and change the cookie
|
|
|
|
if (window.matchMedia)
|
|
|
|
window.matchMedia("(prefers-color-scheme: dark)").addListener( update_color_scheme );
|
Fixed dark mode not applying on first visit
This 'bug' was caused due to the way the dark mode was applied. The dark mode detection detects the preferred theme style from the client and then saves the preferred type with a cookie, all with JavaScript. Then a simple PHP if-else statement loads either the dark or light mode CSS theme, depending on the cookie.
The problem here was that the cookie would only be detected if the page was refreshed, so once the cookie was set, the dark mode was applied every time without a problem. But the first time a user visited the site and the preferred theme was set to dark mode, the page would still display the white version until the page was refreshed.
Now, I could have changed how the page applies the dark mode, however I decided against that and went with this commit instead.
Now I'm not really experienced with JavaScript at all, so this definitely could have been solved in a more elegant way, but this is what I did:
I added a bit to the JavaScript that sets and reads the cookie. When the page finished loading, a simple if statement is run that requires the following conditions:
The URL contains a '#' and the color scheme equals 'dark' and the cookie isn't set yet.
After these conditions are met, '#dark' is added to the URL and the page will be refreshed.
This refresh is only performed without the cookie, thus only refreshing the page on the first visit if the dark mode would be applied.
The '#dark' is only added to the URL to fail the first requirement of the if statement, preventing the page from being reloaded in an infinite loop. Otherwise, the '#dark' part of the URL fulfills no purpose and only the '#' part is required, so it doesn't even matter what comes after the hash. I just chose this for clarification.
If the dark mode cookie is blocked by the user, the page will be set to light mode and refreshed every time they visit but the '#dark' will still be added to the URL, preventing the infinite refresh-loop.
2022-03-03 10:49:10 +01:00
|
|
|
// reloads page to apply the dark mode cookie
|
|
|
|
window.onload = function() {
|
|
|
|
if(!window.location.hash && get_color_scheme() == "dark" && (get_color_scheme() != $color_scheme)) {
|
|
|
|
window.location = window.location + '#dark';
|
|
|
|
window.location.reload();
|
|
|
|
}
|
|
|
|
}
|
Fixed dark mode for login/register...
This fixed the issue of dark mode not displaying on the register, login, forgot password and a few other pages.
This one took me a while to fix, and I still don't really know what is going on here.
The aforementioned pages already implemented a dark mode, but it didn't seem to work for me. After some testing, I discovered that the dark mode preset doesn't load on chromium based browsers.
I have absolutely no idea why that is, if someone could help me with this that would be amazing. I might make an issue out of this later on.
As I still wanted to fix this, I finally achieved my goal by doing the caveman approach:
I first added the usual dark mode detection. The same used on the home and little link pages (see previous commits if you're interested).
Then I wrote and if statement that loads the newly added app-dark.css (see previous commit) that changes text and background color on the pages in question, if the browser type is chromium and dark mode is selected in the browser settings.
"@if(strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome' !== false) and $color_scheme == 'dark')"
This doesn't look optimal, and I would rather just have the same dark mode as on Firefox, but this is the best I can currently do with my available time.
2022-02-21 23:34:07 +01:00
|
|
|
</script>
|
|
|
|
<?php // loads dark mode CSS if dark mode detected
|
|
|
|
$color_scheme = isset($_COOKIE["color_scheme"]) ? $_COOKIE["color_scheme"] : false; ?>
|
2022-02-27 19:43:58 +01:00
|
|
|
@if($color_scheme == 'dark')
|
Fixed dark mode for login/register...
This fixed the issue of dark mode not displaying on the register, login, forgot password and a few other pages.
This one took me a while to fix, and I still don't really know what is going on here.
The aforementioned pages already implemented a dark mode, but it didn't seem to work for me. After some testing, I discovered that the dark mode preset doesn't load on chromium based browsers.
I have absolutely no idea why that is, if someone could help me with this that would be amazing. I might make an issue out of this later on.
As I still wanted to fix this, I finally achieved my goal by doing the caveman approach:
I first added the usual dark mode detection. The same used on the home and little link pages (see previous commits if you're interested).
Then I wrote and if statement that loads the newly added app-dark.css (see previous commit) that changes text and background color on the pages in question, if the browser type is chromium and dark mode is selected in the browser settings.
"@if(strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome' !== false) and $color_scheme == 'dark')"
This doesn't look optimal, and I would rather just have the same dark mode as on Firefox, but this is the best I can currently do with my available time.
2022-02-21 23:34:07 +01:00
|
|
|
<link rel="stylesheet" href="{{ asset('css/app-dark.css') }}">
|
|
|
|
@endif
|
|
|
|
<!-- end dark mode detection -->
|
2021-04-16 01:00:00 +02:00
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div class="font-sans text-gray-900 antialiased">
|
|
|
|
{{ $slot }}
|
|
|
|
</div>
|
|
|
|
</body>
|
|
|
|
</html>
|