diff --git a/resources/css/app.css b/resources/css/app.css index ffb96a15..69d182a1 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -1,2 +1,32 @@ @import 'tailwindcss'; @plugin '@tailwindcss/forms'; + +@custom-variant dark (&:where(.dark, .dark *)); + +[x-cloak] { + display: none !important; +} + +/* @tailwindcss/forms paints controls white; utilities on each tag would not cover option/placeholder. */ +@layer base { + .dark :is(input, select, textarea):not([type='checkbox']):not([type='radio']) { + background-color: var(--color-gray-700); + border-color: var(--color-gray-600); + color: var(--color-gray-100); + } + + .dark :is(input, select, textarea)::placeholder { + color: var(--color-gray-400); + } + + .dark option { + background-color: var(--color-gray-700); + color: var(--color-gray-100); + } + + /* Only the unchecked box; checked uses currentColor for the accent. */ + .dark :is([type='checkbox'], [type='radio']):not(:checked) { + background-color: var(--color-gray-700); + border-color: var(--color-gray-600); + } +} diff --git a/resources/views/auth/confirm-password.blade.php b/resources/views/auth/confirm-password.blade.php index 3d381860..ea6a3763 100644 --- a/resources/views/auth/confirm-password.blade.php +++ b/resources/views/auth/confirm-password.blade.php @@ -1,5 +1,5 @@ -
+
{{ __('This is a secure area of the application. Please confirm your password before continuing.') }}
diff --git a/resources/views/auth/forgot-password.blade.php b/resources/views/auth/forgot-password.blade.php index cb32e08f..6fdde729 100644 --- a/resources/views/auth/forgot-password.blade.php +++ b/resources/views/auth/forgot-password.blade.php @@ -1,5 +1,5 @@ -
+
{{ __('Forgot your password? No problem. Just let us know your email address and we will email you a password reset link that will allow you to choose a new one.') }}
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index be521ce5..94987f74 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -1,7 +1,7 @@
-

Welcome back

-

Sign in to your account

+

Welcome back

+

Sign in to your account

@@ -32,8 +32,8 @@
@@ -45,8 +45,8 @@ @if (Route::has('register')) diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index 9c56eca0..d36c6782 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -1,7 +1,7 @@
-

Create an account

-

Get started with FFR

+

Create an account

+

Get started with FFR

@@ -47,8 +47,8 @@
diff --git a/resources/views/auth/verify-email.blade.php b/resources/views/auth/verify-email.blade.php index 612f3c3a..b35be9ec 100644 --- a/resources/views/auth/verify-email.blade.php +++ b/resources/views/auth/verify-email.blade.php @@ -1,10 +1,10 @@ -
+
{{ __('Thanks for signing up! Before getting started, could you verify your email address by clicking on the link we just emailed to you? If you didn\'t receive the email, we will gladly send you another.') }}
@if (session('status') == 'verification-link-sent') -
+
{{ __('A new verification link has been sent to the email address you provided during registration.') }}
@endif @@ -23,7 +23,7 @@ @csrf - diff --git a/resources/views/components/application-logo.blade.php b/resources/views/components/application-logo.blade.php deleted file mode 100644 index 46579cf0..00000000 --- a/resources/views/components/application-logo.blade.php +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/resources/views/components/auth-session-status.blade.php b/resources/views/components/auth-session-status.blade.php index c4bd6e23..a39bc7d2 100644 --- a/resources/views/components/auth-session-status.blade.php +++ b/resources/views/components/auth-session-status.blade.php @@ -1,7 +1,7 @@ @props(['status']) @if ($status) -
merge(['class' => 'font-medium text-sm text-green-600']) }}> +
merge(['class' => 'font-medium text-sm text-green-600 dark:text-green-400']) }}> {{ $status }}
@endif diff --git a/resources/views/components/dropdown-link.blade.php b/resources/views/components/dropdown-link.blade.php deleted file mode 100644 index 66c4ba42..00000000 --- a/resources/views/components/dropdown-link.blade.php +++ /dev/null @@ -1 +0,0 @@ -merge(['class' => 'block w-full px-4 py-2 text-start text-sm leading-5 text-gray-700 hover:bg-gray-100 focus:outline-hidden focus:bg-gray-100 transition duration-150 ease-in-out']) }}>{{ $slot }} diff --git a/resources/views/components/dropdown.blade.php b/resources/views/components/dropdown.blade.php deleted file mode 100644 index 97e3c2ee..00000000 --- a/resources/views/components/dropdown.blade.php +++ /dev/null @@ -1,35 +0,0 @@ -@props(['align' => 'right', 'width' => '48', 'contentClasses' => 'py-1 bg-white']) - -@php -$alignmentClasses = match ($align) { - 'left' => 'ltr:origin-top-left rtl:origin-top-right start-0', - 'top' => 'origin-top', - default => 'ltr:origin-top-right rtl:origin-top-left end-0', -}; - -$width = match ($width) { - '48' => 'w-48', - default => $width, -}; -@endphp - -
-
- {{ $trigger }} -
- - -
diff --git a/resources/views/components/form-modal.blade.php b/resources/views/components/form-modal.blade.php index 48234b8f..9a9625c4 100644 --- a/resources/views/components/form-modal.blade.php +++ b/resources/views/components/form-modal.blade.php @@ -18,10 +18,10 @@
-
+
- -
+
@@ -87,18 +90,21 @@ class="p-2 rounded-md text-gray-400 hover:text-gray-600 hover:bg-gray-100"
-
+
-

FFR

- +

FFR

+
+ + +
diff --git a/resources/views/layouts/guest.blade.php b/resources/views/layouts/guest.blade.php index 9bef59e2..a14db721 100644 --- a/resources/views/layouts/guest.blade.php +++ b/resources/views/layouts/guest.blade.php @@ -7,6 +7,8 @@ {{ config('app.name') }} + @include('layouts.theme-script') + @@ -15,7 +17,7 @@ @vite(['resources/css/app.css', 'resources/js/app.js']) @livewireStyles - +
@@ -31,7 +33,7 @@
-
+
{{ $slot }}
diff --git a/resources/views/layouts/navigation-items.blade.php b/resources/views/layouts/navigation-items.blade.php index f98d21bf..101c6f50 100644 --- a/resources/views/layouts/navigation-items.blade.php +++ b/resources/views/layouts/navigation-items.blade.php @@ -13,7 +13,7 @@ @switch($item['icon']) @case('home') diff --git a/resources/views/layouts/navigation.blade.php b/resources/views/layouts/navigation.blade.php deleted file mode 100644 index 769e96ad..00000000 --- a/resources/views/layouts/navigation.blade.php +++ /dev/null @@ -1,100 +0,0 @@ - diff --git a/resources/views/layouts/onboarding.blade.php b/resources/views/layouts/onboarding.blade.php index b43f53c8..08ec8b22 100644 --- a/resources/views/layouts/onboarding.blade.php +++ b/resources/views/layouts/onboarding.blade.php @@ -7,6 +7,8 @@ {{ config('app.name') }} - Setup + @include('layouts.theme-script') + @@ -15,7 +17,7 @@ @vite(['resources/css/app.css', 'resources/js/app.js']) @livewireStyles - +
@auth @@ -27,10 +29,10 @@ -
+
@csrf -
diff --git a/resources/views/layouts/theme-script.blade.php b/resources/views/layouts/theme-script.blade.php new file mode 100644 index 00000000..ea7b5dd8 --- /dev/null +++ b/resources/views/layouts/theme-script.blade.php @@ -0,0 +1,7 @@ + diff --git a/resources/views/livewire/articles.blade.php b/resources/views/livewire/articles.blade.php index 85c1965b..7f9ae1ca 100644 --- a/resources/views/livewire/articles.blade.php +++ b/resources/views/livewire/articles.blade.php @@ -16,22 +16,22 @@ class="inline-flex items-center px-4 py-2 border border-transparent text-sm font {{-- Tab bar --}} -
+
@if ($availableCommunities)
- + @@ -195,48 +195,48 @@ class="text-xs text-blue-600 hover:text-blue-800" - @error('newCommunityId')

{{ $message }}

@enderror + @error('newCommunityId')

{{ $message }}

@enderror
@endif
- + - @error('newLanguageId')

{{ $message }}

@enderror + @error('newLanguageId')

{{ $message }}

@enderror
- + - @error('newDescription')

{{ $message }}

@enderror + @error('newDescription')

{{ $message }}

@enderror
diff --git a/resources/views/livewire/dashboard.blade.php b/resources/views/livewire/dashboard.blade.php index dd84eb8b..b1bc06e5 100644 --- a/resources/views/livewire/dashboard.blade.php +++ b/resources/views/livewire/dashboard.blade.php @@ -3,10 +3,10 @@
-

System Overview

+

System Overview

-
+
@@ -14,17 +14,17 @@
-

Active Feeds

-

+

Active Feeds

+

{{ $systemStats['active_feeds'] }} - /{{ $systemStats['total_feeds'] }} + /{{ $systemStats['total_feeds'] }}

-
+
@@ -32,17 +32,17 @@
-

Platform Accounts

-

+

Platform Accounts

+

{{ $systemStats['active_platform_accounts'] }} - /{{ $systemStats['total_platform_accounts'] }} + /{{ $systemStats['total_platform_accounts'] }}

-
+
@@ -50,17 +50,17 @@
-

Platform Channels

-

+

Platform Channels

+

{{ $systemStats['active_platform_channels'] }} - /{{ $systemStats['total_platform_channels'] }} + /{{ $systemStats['total_platform_channels'] }}

-
+
@@ -68,10 +68,10 @@
-

Active Routes

-

+

Active Routes

+

{{ $systemStats['active_routes'] }} - /{{ $systemStats['total_routes'] }} + /{{ $systemStats['total_routes'] }}

@@ -82,10 +82,10 @@
-

Article Statistics

+

Article Statistics

- @error('newName')

{{ $message }}

@enderror + @error('newName')

{{ $message }}

@enderror
- + - @error('newProvider')

{{ $message }}

@enderror + @error('newProvider')

{{ $message }}

@enderror
- + - @error('newLanguageId')

{{ $message }}

@enderror + @error('newLanguageId')

{{ $message }}

@enderror
- + - @error('newDescription')

{{ $message }}

@enderror + @error('newDescription')

{{ $message }}

@enderror
diff --git a/resources/views/livewire/notification-bell.blade.php b/resources/views/livewire/notification-bell.blade.php index 91a8dcb5..99776f2c 100644 --- a/resources/views/livewire/notification-bell.blade.php +++ b/resources/views/livewire/notification-bell.blade.php @@ -1,7 +1,7 @@
@@ -41,7 +41,7 @@ class="text-xs text-blue-600 hover:text-blue-800"
@forelse ($this->notifications as $notification)
@@ -61,14 +61,14 @@ class="px-4 py-3 border-b border-gray-50 last:border-b-0 {{ $notification->isRea @endif
-

{{ $notification->title }}

-

{{ $notification->message }}

+

{{ $notification->title }}

+

{{ $notification->message }}

- {{ $notification->created_at->diffForHumans() }} + {{ $notification->created_at->diffForHumans() }} @unless ($notification->isRead()) @@ -82,7 +82,7 @@ class="text-xs text-blue-600 hover:text-blue-800" -

No notifications

+

No notifications

@endforelse
diff --git a/resources/views/livewire/onboarding.blade.php b/resources/views/livewire/onboarding.blade.php index 6f65810e..58066199 100644 --- a/resources/views/livewire/onboarding.blade.php +++ b/resources/views/livewire/onboarding.blade.php @@ -1,33 +1,33 @@
-
+
{{-- Step 1: Welcome --}} @if ($step === 1)
-

Welcome to FFR

-

+

Welcome to FFR

+

Let's get you set up! We'll help you configure your Lemmy account, add your first feed, and create a channel for posting.

-
+
1
Connect your Lemmy account
-
-
2
+
+
2
Configure a channel
-
-
3
+
+
3
Add your first feed
-
-
4
+
+
4
Create a route
-
-
5
+
+
5
You're ready to go!
@@ -46,29 +46,29 @@ class="w-full bg-blue-600 text-white py-3 px-4 rounded-md hover:bg-blue-700 tran {{-- Step 2: Platform Account --}} @if ($step === 2)
-

Connect Your Lemmy Account

-

+

Connect Your Lemmy Account

+

{{ $existingAccount ? 'Your connected Lemmy account' : 'Enter your Lemmy instance details and login credentials' }}

{{-- Progress indicator --}}
1
-
2
-
3
-
4
+
2
+
3
+
4
@if (!empty($formErrors['general'])) -
-

{{ $formErrors['general'] }}

+
+

{{ $formErrors['general'] }}

@endif @if ($existingAccount) {{-- Account Card --}}
-
+
@@ -77,8 +77,8 @@ class="w-full bg-blue-600 text-white py-3 px-4 rounded-md hover:bg-blue-700 tran
-

Account Connected

-
+

Account Connected

+

Username: {{ $existingAccount['username'] }}

Instance: {{ str_replace('https://', '', $existingAccount['instance_url']) }}

@@ -87,7 +87,7 @@ class="w-full bg-blue-600 text-white py-3 px-4 rounded-md hover:bg-blue-700 tran
- @@ -234,7 +234,7 @@ class="text-xs text-blue-600 hover:text-blue-800" - @error('channelCommunityId')

{{ $message }}

@enderror + @error('channelCommunityId')

{{ $message }}

@enderror
@endif
-
-
-
@if (!empty($formErrors['general'])) -
-

{{ $formErrors['general'] }}

+
+

{{ $formErrors['general'] }}

@endif
-
-
-
-
-
@if (!empty($formErrors['general'])) -
-

{{ $formErrors['general'] }}

+
+

{{ $formErrors['general'] }}

@endif
-
-
-
-
-

Setup Complete!

-

+

Setup Complete!

+

Great! You've successfully configured FFR. Your feeds will now be monitored and articles will be automatically posted to your configured channels.

@@ -526,18 +526,18 @@ class="bg-blue-600 text-white py-2 px-6 rounded-md hover:bg-blue-700 transition
-
+

What happens next?

-
    +
    • • Your feeds will be checked regularly for new articles
    • • New articles will be automatically posted to your channels
    • • You can monitor activity in the Articles and other sections
-
+

Want more control?

-

+

You can add more feeds, channels, and configure settings from the dashboard.

@@ -552,7 +552,7 @@ class="w-full bg-blue-600 text-white py-3 px-4 rounded-md hover:bg-blue-700 tran {{ $isLoading ? 'Finishing...' : 'Go to Dashboard' }} -
+
View ArticlesManage Feeds diff --git a/resources/views/livewire/routes.blade.php b/resources/views/livewire/routes.blade.php index d16f7d4c..22902c40 100644 --- a/resources/views/livewire/routes.blade.php +++ b/resources/views/livewire/routes.blade.php @@ -13,22 +13,22 @@ class="inline-flex items-center px-4 py-2 border border-transparent text-sm font
@forelse ($routes as $route) -
+
-

+

{{ $route->feed?->name }} → {{ $route->platformChannel?->display_name ?? $route->platformChannel?->name }}

@if ($route->is_active) - + Active @else - + @@ -36,7 +36,7 @@ class="inline-flex items-center px-4 py-2 border border-transparent text-sm font @endif
-
+
Priority: {{ $route->priority }} Feed: {{ $route->feed?->name }} @@ -46,36 +46,36 @@ class="inline-flex items-center px-4 py-2 border border-transparent text-sm font Created: {{ $route->created_at->format('M d, Y') }} @if ($route->auto_approve === true) - Auto-approve: On + Auto-approve: On @elseif ($route->auto_approve === false) - Auto-approve: Off + Auto-approve: Off @endif
@if ($route->platformChannel?->description) -

+

{{ $route->platformChannel->description }}

@endif @if ($route->keywords->isNotEmpty())
- + - Keywords + Keywords
@foreach ($route->keywords as $keyword) - + {{ $keyword->keyword }} @endforeach
@else -
+
No keyword filters - matches all articles
@endif @@ -83,7 +83,7 @@ class="inline-flex items-center px-4 py-2 border border-transparent text-sm font
@empty
- + -

No routes

-

+

No routes

+

Get started by creating a new route to connect feeds with channels.

@@ -147,13 +147,13 @@ class="inline-flex items-center px-4 py-2 border border-transparent text-sm font
-
-
@@ -218,18 +218,18 @@ class="px-4 py-2 text-sm font-medium text-white bg-blue-600 border border-transp @if ($editingRoute) -
-

+

+

Feed: {{ $editingRoute->feed?->name }}

-

+

{{ $editingRoute->platformChannel?->platformInstance?->platform?->channelLabel() ?? 'Channel' }}: {{ $editingRoute->platformChannel?->display_name ?? $editingRoute->platformChannel?->name }}

-
- +
-

Override global approval setting for this route

+

Override global approval setting for this route

- + - Keywords + Keywords
@else @if (!$showKeywordInput) -
+
No keywords defined. This route will match all articles.
@endif @@ -358,7 +358,7 @@ class="text-red-600 hover:text-red-800" diff --git a/resources/views/livewire/settings.blade.php b/resources/views/livewire/settings.blade.php index b65ead29..87ca51de 100644 --- a/resources/views/livewire/settings.blade.php +++ b/resources/views/livewire/settings.blade.php @@ -3,26 +3,26 @@
-
-
-

+
+
+

Article Processing

-

+

Control how articles are processed and handled

-

+

Article Processing Enabled

-

+

Enable automatic fetching and processing of articles from feeds

@@ -44,10 +44,10 @@ class="shrink-0"
-

+

Publishing Interval (minutes)

-

+

Minimum time between publishing articles. Set to 0 for no delay.

@@ -58,7 +58,7 @@ class="shrink-0" min="0" max="1440" step="1" - class="w-24 rounded-md border border-gray-300 px-3 py-2 shadow-xs focus:border-indigo-500 focus:ring-indigo-500 text-sm" + class="w-24 rounded-md border border-gray-300 px-3 py-2 shadow-xs focus:border-indigo-500 focus:ring-indigo-500 text-sm dark:border-gray-600" />
@if ($successMessage) -
-

{{ $successMessage }}

+
+

{{ $successMessage }}

@endif @if ($errorMessage) -
-

{{ $errorMessage }}

+
+

{{ $errorMessage }}

@endif
diff --git a/resources/views/profile/edit.blade.php b/resources/views/profile/edit.blade.php index 57d38a9d..7ae98e7e 100644 --- a/resources/views/profile/edit.blade.php +++ b/resources/views/profile/edit.blade.php @@ -1,25 +1,25 @@ -

+

{{ __('Profile') }}

-
+
@include('profile.partials.update-profile-information-form')
-
+
@include('profile.partials.update-password-form')
-
+
@include('profile.partials.delete-user-form')
diff --git a/resources/views/profile/partials/delete-user-form.blade.php b/resources/views/profile/partials/delete-user-form.blade.php index edeeb4a6..6bdbf422 100644 --- a/resources/views/profile/partials/delete-user-form.blade.php +++ b/resources/views/profile/partials/delete-user-form.blade.php @@ -1,10 +1,10 @@
-

+

{{ __('Delete Account') }}

-

+

{{ __('Once your account is deleted, all of its resources and data will be permanently deleted. Before deleting your account, please download any data or information that you wish to retain.') }}

@@ -19,11 +19,11 @@ @csrf @method('delete') -

+

{{ __('Are you sure you want to delete your account?') }}

-

+

{{ __('Once your account is deleted, all of its resources and data will be permanently deleted. Please enter your password to confirm you would like to permanently delete your account.') }}

diff --git a/resources/views/profile/partials/update-password-form.blade.php b/resources/views/profile/partials/update-password-form.blade.php index eaca1acc..d1d576ad 100644 --- a/resources/views/profile/partials/update-password-form.blade.php +++ b/resources/views/profile/partials/update-password-form.blade.php @@ -1,10 +1,10 @@
-

+

{{ __('Update Password') }}

-

+

{{ __('Ensure your account is using a long, random password to stay secure.') }}

@@ -40,7 +40,7 @@ x-show="show" x-transition x-init="setTimeout(() => show = false, 2000)" - class="text-sm text-gray-600" + class="text-sm text-gray-600 dark:text-gray-300" >{{ __('Saved.') }}

@endif
diff --git a/resources/views/profile/partials/update-profile-information-form.blade.php b/resources/views/profile/partials/update-profile-information-form.blade.php index 6bf01e2b..4224c7eb 100644 --- a/resources/views/profile/partials/update-profile-information-form.blade.php +++ b/resources/views/profile/partials/update-profile-information-form.blade.php @@ -1,10 +1,10 @@
-

+

{{ __('Profile Information') }}

-

+

{{ __("Update your account's profile information and email address.") }}

@@ -30,16 +30,16 @@ @if ($user instanceof \Illuminate\Contracts\Auth\MustVerifyEmail && ! $user->hasVerifiedEmail())
-

+

{{ __('Your email address is unverified.') }} -

@if (session('status') === 'verification-link-sent') -

+

{{ __('A new verification link has been sent to your email address.') }}

@endif @@ -56,7 +56,7 @@ x-show="show" x-transition x-init="setTimeout(() => show = false, 2000)" - class="text-sm text-gray-600" + class="text-sm text-gray-600 dark:text-gray-300" >{{ __('Saved.') }}

@endif
diff --git a/tests/Feature/Livewire/ArticlesTest.php b/tests/Feature/Livewire/ArticlesTest.php index 87219c16..22b462af 100644 --- a/tests/Feature/Livewire/ArticlesTest.php +++ b/tests/Feature/Livewire/ArticlesTest.php @@ -321,7 +321,7 @@ public function test_pending_feed_badge_shows_total_count_not_page_count(): void $html = (string) preg_replace('/\s+/', ' ', Livewire::test(Articles::class)->html()); - $this->assertStringContainsString('VRT News 20 ', $html); + $this->assertMatchesRegularExpression('#VRT News 20 #', $html); } public function test_expanding_a_feed_reveals_only_that_feeds_articles(): void