cleanup and start with nostr

This commit is contained in:
HolgerHatGarKeineNode
2023-11-20 18:10:33 +01:00
parent df1eb750b7
commit a392e6fee0
218 changed files with 31 additions and 17474 deletions

View File

@@ -1,169 +0,0 @@
<div>
<!-- Generate API Token -->
<x-jet-form-section submit="createApiToken">
<x-slot name="title">
{{ __('Create API Token') }}
</x-slot>
<x-slot name="description">
{{ __('API tokens allow third-party services to authenticate with our application on your behalf.') }}
</x-slot>
<x-slot name="form">
<!-- Token Name -->
<div class="col-span-6 sm:col-span-4">
<x-jet-label for="name" value="{{ __('Token Name') }}" />
<x-jet-input id="name" type="text" class="mt-1 block w-full" wire:model.defer="createApiTokenForm.name" autofocus />
<x-jet-input-error for="name" class="mt-2" />
</div>
<!-- Token Permissions -->
@if (Laravel\Jetstream\Jetstream::hasPermissions())
<div class="col-span-6">
<x-jet-label for="permissions" value="{{ __('Permissions') }}" />
<div class="mt-2 grid grid-cols-1 md:grid-cols-2 gap-4">
@foreach (Laravel\Jetstream\Jetstream::$permissions as $permission)
<label class="flex items-center">
<x-jet-checkbox wire:model.defer="createApiTokenForm.permissions" :value="$permission"/>
<span class="ml-2 text-sm text-gray-600">{{ $permission }}</span>
</label>
@endforeach
</div>
</div>
@endif
</x-slot>
<x-slot name="actions">
<x-jet-action-message class="mr-3" on="created">
{{ __('Created.') }}
</x-jet-action-message>
<x-jet-button>
{{ __('Create') }}
</x-jet-button>
</x-slot>
</x-jet-form-section>
@if ($this->user->tokens->isNotEmpty())
<x-jet-section-border />
<!-- Manage API Tokens -->
<div class="mt-10 sm:mt-0">
<x-jet-action-section>
<x-slot name="title">
{{ __('Manage API Tokens') }}
</x-slot>
<x-slot name="description">
{{ __('You may delete any of your existing tokens if they are no longer needed.') }}
</x-slot>
<!-- API Token List -->
<x-slot name="content">
<div class="space-y-6">
@foreach ($this->user->tokens->sortBy('name') as $token)
<div class="flex items-center justify-between">
<div>
{{ $token->name }}
</div>
<div class="flex items-center">
@if ($token->last_used_at)
<div class="text-sm text-gray-400">
{{ __('Last used') }} {{ $token->last_used_at->diffForHumans() }}
</div>
@endif
@if (Laravel\Jetstream\Jetstream::hasPermissions())
<button class="cursor-pointer ml-6 text-sm text-gray-400 underline" wire:click="manageApiTokenPermissions({{ $token->id }})">
{{ __('Permissions') }}
</button>
@endif
<button class="cursor-pointer ml-6 text-sm text-red-500" wire:click="confirmApiTokenDeletion({{ $token->id }})">
{{ __('Delete') }}
</button>
</div>
</div>
@endforeach
</div>
</x-slot>
</x-jet-action-section>
</div>
@endif
<!-- Token Value Modal -->
<x-jet-dialog-modal wire:model="displayingToken">
<x-slot name="title">
{{ __('API Token') }}
</x-slot>
<x-slot name="content">
<div>
{{ __('Please copy your new API token. For your security, it won\'t be shown again.') }}
</div>
<x-jet-input x-ref="plaintextToken" type="text" readonly :value="$plainTextToken"
class="mt-4 bg-gray-100 px-4 py-2 rounded font-mono text-sm text-gray-500 w-full"
autofocus autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"
@showing-token-modal.window="setTimeout(() => $refs.plaintextToken.select(), 250)"
/>
</x-slot>
<x-slot name="footer">
<x-jet-secondary-button wire:click="$set('displayingToken', false)" wire:loading.attr="disabled">
{{ __('Close') }}
</x-jet-secondary-button>
</x-slot>
</x-jet-dialog-modal>
<!-- API Token Permissions Modal -->
<x-jet-dialog-modal wire:model="managingApiTokenPermissions">
<x-slot name="title">
{{ __('API Token Permissions') }}
</x-slot>
<x-slot name="content">
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
@foreach (Laravel\Jetstream\Jetstream::$permissions as $permission)
<label class="flex items-center">
<x-jet-checkbox wire:model.defer="updateApiTokenForm.permissions" :value="$permission"/>
<span class="ml-2 text-sm text-gray-600">{{ $permission }}</span>
</label>
@endforeach
</div>
</x-slot>
<x-slot name="footer">
<x-jet-secondary-button wire:click="$set('managingApiTokenPermissions', false)" wire:loading.attr="disabled">
{{ __('Cancel') }}
</x-jet-secondary-button>
<x-jet-button class="ml-3" wire:click="updateApiToken" wire:loading.attr="disabled">
{{ __('Save') }}
</x-jet-button>
</x-slot>
</x-jet-dialog-modal>
<!-- Delete Token Confirmation Modal -->
<x-jet-confirmation-modal wire:model="confirmingApiTokenDeletion">
<x-slot name="title">
{{ __('Delete API Token') }}
</x-slot>
<x-slot name="content">
{{ __('Are you sure you would like to delete this API token?') }}
</x-slot>
<x-slot name="footer">
<x-jet-secondary-button wire:click="$toggle('confirmingApiTokenDeletion')" wire:loading.attr="disabled">
{{ __('Cancel') }}
</x-jet-secondary-button>
<x-jet-danger-button class="ml-3" wire:click="deleteApiToken" wire:loading.attr="disabled">
{{ __('Delete') }}
</x-jet-danger-button>
</x-slot>
</x-jet-confirmation-modal>
</div>

View File

@@ -1,13 +0,0 @@
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('API Tokens') }}
</h2>
</x-slot>
<div>
<div class="max-w-7xl mx-auto py-10 sm:px-6 lg:px-8">
@livewire('api.api-token-manager')
</div>
</div>
</x-app-layout>

View File

@@ -1,28 +0,0 @@
<x-guest-layout>
<x-jet-authentication-card>
<x-slot name="logo">
<x-jet-authentication-card-logo />
</x-slot>
<div class="mb-4 text-sm text-gray-600">
{{ __('This is a secure area of the application. Please confirm your password before continuing.') }}
</div>
<x-jet-validation-errors class="mb-4" />
<form method="POST" action="{{ route('password.confirm') }}">
@csrf
<div>
<x-jet-label for="password" value="{{ __('Password') }}" />
<x-jet-input id="password" class="block mt-1 w-full" type="password" name="password" required autocomplete="current-password" autofocus />
</div>
<div class="flex justify-end mt-4">
<x-jet-button class="ml-4">
{{ __('Confirm') }}
</x-jet-button>
</div>
</form>
</x-jet-authentication-card>
</x-guest-layout>

View File

@@ -1,34 +0,0 @@
<x-guest-layout>
<x-jet-authentication-card>
<x-slot name="logo">
<x-jet-authentication-card-logo />
</x-slot>
<div class="mb-4 text-sm text-gray-600">
{{ __('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.') }}
</div>
@if (session('status'))
<div class="mb-4 font-medium text-sm text-green-600">
{{ session('status') }}
</div>
@endif
<x-jet-validation-errors class="mb-4" />
<form method="POST" action="{{ route('password.email') }}">
@csrf
<div class="block">
<x-jet-label for="email" value="{{ __('Email') }}" />
<x-jet-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')" required autofocus />
</div>
<div class="flex items-center justify-end mt-4">
<x-jet-button>
{{ __('Email Password Reset Link') }}
</x-jet-button>
</div>
</form>
</x-jet-authentication-card>
</x-guest-layout>

View File

@@ -1,72 +0,0 @@
<x-guest-layout>
<x-jet-authentication-card>
<x-slot name="logo">
<x-jet-authentication-card-logo/>
</x-slot>
<x-jet-validation-errors class="mb-4"/>
@if (session('status'))
<div class="mb-4 font-medium text-sm text-green-600">
{{ session('status') }}
</div>
@endif
<form method="POST" action="{{ route('login') }}">
<div class="flex items-center justify-end mb-4">
<x-button icon="arrow-left" secondary class="ml-4" href="/">
{{ __('Back to the website') }}
</x-button>
</div>
@csrf
<div>
<x-jet-label for="email" value="{{ __('Email') }}"/>
<x-jet-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')"
required autofocus/>
@if(app()->environment())
<pre>admin@einundzwanzig.space</pre>
@endif
</div>
<div class="mt-4">
<x-jet-label for="password" value="{{ __('Password') }}"/>
<x-jet-input id="password" class="block mt-1 w-full" type="password" name="password" required
autocomplete="current-password"/>
@if(app()->environment())
<pre>1234</pre>
@endif
</div>
<div class="block mt-4">
<label for="remember_me" class="flex items-center">
<x-jet-checkbox id="remember_me" name="remember"/>
<span class="ml-2 text-sm text-gray-600">{{ __('Remember me') }}</span>
</label>
</div>
@if(app()->environment('local'))
<div class="flex items-center justify-end mt-4">
@if (Route::has('password.request'))
<a class="underline text-sm text-gray-600 hover:text-gray-900"
href="{{ route('password.request') }}">
{{ __('Forgot your password?') }}
</a>
@endif
<x-jet-button class="ml-4">
{{ __('Log in') }}
</x-jet-button>
</div>
@endif
<div class="flex items-center justify-left mt-4">
<x-button href="{{ route('auth.login') }}" primary icon="lightning-bolt">LNURL-Auth</x-button>
</div>
</form>
</x-jet-authentication-card>
</x-guest-layout>

View File

@@ -1,86 +0,0 @@
<x-guest-layout>
<x-jet-authentication-card>
<x-slot name="logo">
<x-jet-authentication-card-logo/>
</x-slot>
<x-jet-validation-errors class="mb-4"/>
<form method="POST" action="{{ route('register') }}">
<div class="flex items-center justify-end mb-4">
<x-button icon="arrow-left" secondary class="ml-4" href="/">
{{ __('Back to the website') }}
</x-button>
</div>
@csrf
<div>
<x-jet-label for="name" value="{{ __('Name') }}"/>
<x-jet-input id="name" class="block mt-1 w-full" type="text" name="name" :value="old('name')" required
autofocus autocomplete="name"/>
</div>
<div class="mt-4">
<x-jet-label for="email" value="{{ __('Email') }}"/>
<x-jet-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email')"
required/>
</div>
<div class="mt-4">
<x-jet-label for="password" value="{{ __('Password') }}"/>
<x-jet-input id="password" class="block mt-1 w-full" type="password" name="password" required
autocomplete="new-password"/>
</div>
<div class="mt-4">
<x-jet-label for="password_confirmation" value="{{ __('Confirm Password') }}"/>
<x-jet-input id="password_confirmation" class="block mt-1 w-full" type="password"
name="password_confirmation" required autocomplete="new-password"/>
</div>
<div class="mt-4">
<x-jet-label for="is_lecturer">
<div class="flex items-center">
<x-jet-checkbox name="is_lecturer" id="is_lecturer" required/>
<div class="ml-2">
{{ __('I want to submit new courses on this platform') }}
</div>
</div>
</x-jet-label>
</div>
@if (Laravel\Jetstream\Jetstream::hasTermsAndPrivacyPolicyFeature())
<div class="mt-4">
<x-jet-label for="terms">
<div class="flex items-center">
<x-jet-checkbox name="terms" id="terms" required/>
<div class="ml-2">
{!! __('I agree to the :terms_of_service and :privacy_policy', [
'terms_of_service' => '<a target="_blank" href="'.route('terms.show').'" class="underline text-sm text-gray-600 hover:text-gray-900">'.__('Terms of Service').'</a>',
'privacy_policy' => '<a target="_blank" href="'.route('policy.show').'" class="underline text-sm text-gray-600 hover:text-gray-900">'.__('Privacy Policy').'</a>',
]) !!}
</div>
</div>
</x-jet-label>
</div>
@endif
{{--<div class="flex items-center justify-end mt-4">
<a class="underline text-sm text-gray-600 hover:text-gray-900" href="{{ route('login') }}">
{{ __('Already registered?') }}
</a>
<x-jet-button class="ml-4">
{{ __('Register') }}
</x-jet-button>
</div>--}}
<div class="flex items-center justify-left mt-4">
<x-button href="{{ route('auth.login') }}" primary icon="lightning-bolt">Login</x-button>
</div>
</form>
</x-jet-authentication-card>
</x-guest-layout>

View File

@@ -1,36 +0,0 @@
<x-guest-layout>
<x-jet-authentication-card>
<x-slot name="logo">
<x-jet-authentication-card-logo />
</x-slot>
<x-jet-validation-errors class="mb-4" />
<form method="POST" action="{{ route('password.update') }}">
@csrf
<input type="hidden" name="token" value="{{ $request->route('token') }}">
<div class="block">
<x-jet-label for="email" value="{{ __('Email') }}" />
<x-jet-input id="email" class="block mt-1 w-full" type="email" name="email" :value="old('email', $request->email)" required autofocus />
</div>
<div class="mt-4">
<x-jet-label for="password" value="{{ __('Password') }}" />
<x-jet-input id="password" class="block mt-1 w-full" type="password" name="password" required autocomplete="new-password" />
</div>
<div class="mt-4">
<x-jet-label for="password_confirmation" value="{{ __('Confirm Password') }}" />
<x-jet-input id="password_confirmation" class="block mt-1 w-full" type="password" name="password_confirmation" required autocomplete="new-password" />
</div>
<div class="flex items-center justify-end mt-4">
<x-jet-button>
{{ __('Reset Password') }}
</x-jet-button>
</div>
</form>
</x-jet-authentication-card>
</x-guest-layout>

View File

@@ -1,57 +0,0 @@
<x-guest-layout>
<x-jet-authentication-card>
<x-slot name="logo">
<x-jet-authentication-card-logo />
</x-slot>
<div x-data="{ recovery: false }">
<div class="mb-4 text-sm text-gray-600" x-show="! recovery">
{{ __('Please confirm access to your account by entering the authentication code provided by your authenticator application.') }}
</div>
<div class="mb-4 text-sm text-gray-600" x-show="recovery">
{{ __('Please confirm access to your account by entering one of your emergency recovery codes.') }}
</div>
<x-jet-validation-errors class="mb-4" />
<form method="POST" action="{{ route('two-factor.login') }}">
@csrf
<div class="mt-4" x-show="! recovery">
<x-jet-label for="code" value="{{ __('Code') }}" />
<x-jet-input id="code" class="block mt-1 w-full" type="text" inputmode="numeric" name="code" autofocus x-ref="code" autocomplete="one-time-code" />
</div>
<div class="mt-4" x-show="recovery">
<x-jet-label for="recovery_code" value="{{ __('Recovery Code') }}" />
<x-jet-input id="recovery_code" class="block mt-1 w-full" type="text" name="recovery_code" x-ref="recovery_code" autocomplete="one-time-code" />
</div>
<div class="flex items-center justify-end mt-4">
<button type="button" class="text-sm text-gray-600 hover:text-gray-900 underline cursor-pointer"
x-show="! recovery"
x-on:click="
recovery = true;
$nextTick(() => { $refs.recovery_code.focus() })
">
{{ __('Use a recovery code') }}
</button>
<button type="button" class="text-sm text-gray-600 hover:text-gray-900 underline cursor-pointer"
x-show="recovery"
x-on:click="
recovery = false;
$nextTick(() => { $refs.code.focus() })
">
{{ __('Use an authentication code') }}
</button>
<x-jet-button class="ml-4">
{{ __('Log in') }}
</x-jet-button>
</div>
</form>
</div>
</x-jet-authentication-card>
</x-guest-layout>

View File

@@ -1,45 +0,0 @@
<x-guest-layout>
<x-jet-authentication-card>
<x-slot name="logo">
<x-jet-authentication-card-logo />
</x-slot>
<div class="mb-4 text-sm text-gray-600">
{{ __('Before continuing, 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.') }}
</div>
@if (session('status') == 'verification-link-sent')
<div class="mb-4 font-medium text-sm text-green-600">
{{ __('A new verification link has been sent to the email address you provided in your profile settings.') }}
</div>
@endif
<div class="mt-4 flex items-center justify-between">
<form method="POST" action="{{ route('verification.send') }}">
@csrf
<div>
<x-jet-button type="submit">
{{ __('Resend Verification Email') }}
</x-jet-button>
</div>
</form>
<div>
<a
href="{{ route('profile.show') }}"
class="underline text-sm text-gray-600 hover:text-gray-900"
>
{{ __('Edit Profile') }}</a>
<form method="POST" action="{{ route('logout') }}" class="inline">
@csrf
<button type="submit" class="underline text-sm text-gray-600 hover:text-gray-900 ml-2">
{{ __('Log Out') }}
</button>
</form>
</div>
</div>
</x-jet-authentication-card>
</x-guest-layout>

View File

@@ -1,6 +0,0 @@
<div class="w-full mb-4 md:w-auto md:mb-0">
<x-button :href="route('bitcoinEvent.form', ['country' => $country, 'bitcoinEvent' => null])">
<i class="fa fa-thin fa-plus"></i>
{{ __('Register event') }}
</x-button>
</div>

View File

@@ -1,7 +0,0 @@
<div class="flex flex-col space-y-1 justify-center items-center">
<img class="h-8" src="{{ asset('vendor/blade-country-flags/1x1-'.$row->venue->city->country->code.'.svg') }}"
alt="{{ $row->venue->city->country->code }}">
<div>
{{ $row->venue->city->country->code }}
</div>
</div>

View File

@@ -1,13 +0,0 @@
<div class="flex flex-col space-y-1">
<a href="{{ $row->link }}" target="_blank">
<x-badge class="whitespace-nowrap">{{ __('Link') }}</x-badge>
</a>
<div>
@can('update', $row)
<x-button primary xs :href="route('bitcoinEvent.form', ['bitcoinEvent' => $row])">
<i class="fa-thin fa-edit"></i>
{{ __('Edit') }}
</x-button>
@endif
</div>
</div>

View File

@@ -1,6 +0,0 @@
<div class="flex items-center space-x-2">
<img class="h-12" src="{{ $row->getFirstMediaUrl('logo', 'thumb') }}" alt="{{ $row->title }}">
<div>
{{ $row->title }}
</div>
</div>

View File

@@ -1,31 +0,0 @@
<div class="flex flex-col space-y-1" wire:key="bookcase_action_{{ $row->id }}">
@auth
<div>
@if($row->orange_pills_count > 0)
<img class="aspect-auto max-h-12" src="{{ asset('img/social_credit_plus.webp') }}" alt="">
@endif
</div>
<div>
@if($row->orange_pills_count < 1)
<img class="aspect-auto max-h-12" src="{{ asset('img/social_credit_minus.webp') }}" alt="">
@endif
</div>
<div class="flex items-center space-x-1">
<x-button xs
:href="route('bookCases.form', ['bookCase' => $row->id, 'country' => $country])"
class="whitespace-nowrap" primary class="text-21gray whitespace-nowrap"
>
{{ __('💊 Orange Pill Now') }}
</x-button>
<x-button xs class="whitespace-nowrap"
:href="route('bookCases.comment.bookcase', ['bookCase' => $row->id, 'country' => $country])">{{ __('Details') }}</x-button>
</div>
@else
<div>
<x-badge class="whitespace-nowrap" amber>
<i class="fa fa-thin fa-shelves-empty mr-2"></i>
{{ __('no bitcoin books yet') }}
</x-badge>
</div>
@endauth
</div>

View File

@@ -1,40 +0,0 @@
<div class="flex flex-col space-y-1">
@if($type === 'school' && !$manage)
<div>
<div>
@if($row->course_events_count > 0)
<x-button xs amber wire:click="proximitySearch({{ $row->id }})" class="text-21gray">
<i class="fa fa-thin fa-person-chalkboard mr-2"></i>
{{ __('Perimeter search course date :name (100km)', ['name' => $row->name]) }}
</x-button>
@endif
</div>
<div>
@if($row->course_events_count < 1)
<x-button xs outlined wire:click="proximitySearch({{ $row->id }})" class="text-21gray">
<i class="fa fa-thin fa-person-chalkboard mr-2"></i>
{{ __('Perimeter search course date :name (100km)', ['name' => $row->name]) }}
</x-button>
@endif
</div>
</div>
@endif
<div>
@if($type === 'bookCase' && !$manage)
<div>
<x-button xs amber wire:click="proximitySearchForBookCases({{ $row->id }})" class="text-21gray">
<i class="fa fa-thin fa-book mr-2"></i>
{{ __('Perimeter search bookcase :name (25km)', ['name' => $row->name]) }}
</x-button>
</div>
@endif
</div>
<div>
@can('update', $row)
<x-button xs :href="route('city.form', ['city' => $row])">
<i class="fa fa-thin fa-edit"></i>
{{ __('Edit') }}
</x-button>
@endcan
</div>
</div>

View File

@@ -1,6 +0,0 @@
<div class="w-full mb-4 md:w-auto md:mb-0">
<x-button :href="route('city.form')">
<i class="fa fa-thin fa-plus"></i>
{{ __('New City') }}
</x-button>
</div>

View File

@@ -1,6 +0,0 @@
<div class="w-full mb-4 md:w-auto md:mb-0">
<x-button xs :href="route('course.form.courseEvent')">
<i class="fa fa-thin fa-plus"></i>
{{ __('Register course date') }}
</x-button>
</div>

View File

@@ -1,23 +0,0 @@
<div class="flex flex-col space-y-1">
@if($row->course_events_count > 0)
<div>
<x-button class="whitespace-nowrap" xs amber wire:click="courseSearch({{ $row->id }})">
{{ __('Show dates') }} [{{ $row->course_events_count }}]
</x-button>
</div>
@else
<div>
<x-button class="whitespace-nowrap" xs outline wire:click="courseSearch({{ $row->id }})">
{{ __('Show dates') }}
</x-button>
</div>
@endif
@can('update', $row)
<div>
<x-button class="whitespace-nowrap" amber xs :href="route('course.form.course', ['course' => $row])">
<i class="fa fa-thin fa-edit"></i>
{{ __('Edit') }}
</x-button>
</div>
@endcan
</div>

View File

@@ -1,6 +0,0 @@
<div class="w-full mb-4 md:w-auto md:mb-0">
<x-button :href="route('course.form.course')">
<i class="fa fa-thin fa-plus"></i>
{{ __('Register course') }}
</x-button>
</div>

View File

@@ -1,6 +0,0 @@
<div class="flex items-center space-x-2">
<img class="h-12" src="{{ $row->lecturer->getFirstMediaUrl('avatar', 'thumb') }}" alt="{{ $row->lecturer->name }}">
<div>
{{ $row->lecturer->name }}
</div>
</div>

View File

@@ -1,5 +0,0 @@
<div class="flex items-center">
@foreach($row->tags as $tag)
<x-badge class="whitespace-nowrap">{{ $tag->name }}</x-badge>
@endforeach
</div>

View File

@@ -1,15 +0,0 @@
<div class="flex flex-col space-y-1">
<div>
<x-button xs class="whitespace-nowrap" amber
wire:click="viewHistoryModal({{ $row->id }})">{{ __('Register') }}</x-button>
</div>
@can('update', $row)
<div>
<x-button xs class="whitespace-nowrap" amber
:href="route('course.form.courseEvent', ['courseEvent' => $row])">
<i class="fa-thin fa-edit"></i>
{{ __('Edit') }}
</x-button>
</div>
@endcan
</div>

View File

@@ -1,5 +0,0 @@
<div class="flex space-x-1">
@foreach($row->course->categories as $category)
<x-badge class="whitespace-nowrap">{{ $category->name }}</x-badge>
@endforeach
</div>

View File

@@ -1,6 +0,0 @@
<div class="flex items-center space-x-2">
<img class="h-12" src="{{ $row->course->lecturer->getFirstMediaUrl('avatar', 'thumb') }}" alt="{{ $row->course->lecturer->name }}">
<div>
{{ $row->course->lecturer->name }}
</div>
</div>

View File

@@ -1,59 +0,0 @@
<div class="flex flex-col space-y-1">
<div>
@if($row->courses_count > 0)
<x-button
xs amber wire:click="lecturerSearch({{ $row->id }})">
<i class="fa fa-thin fa-calendar mr-2"></i>
{{ __('Show dates') }} ({{ $row->courses_events_count }})
</x-button>
@endif
</div>
<div>
@if($row->courses_count < 1)
<x-button
xs outlined wire:click="lecturerSearch({{ $row->id }})">
<i class="fa fa-thin fa-calendar mr-2"></i>
{{ __('Show dates') }} ({{ $row->courses_events_count }})
</x-button>
@endif
</div>
<div>
@if($row->library_items_count > 0)
<x-button
xs amber wire:click="lecturerSearch({{ $row->id }}, false)">
<i class="fa fa-thin fa-book mr-2"></i>
{{ __('Show content') }} ({{ $row->library_items_count }})
</x-button>
@endif
</div>
<div>
@if($row->library_items_count < 1)
<x-button
xs outlined wire:click="lecturerSearch({{ $row->id }}, false)">
<i class="fa fa-thin fa-book mr-2"></i>
{{ __('Show content') }} ({{ $row->library_items_count }})
</x-button>
@endif
</div>
<div>
<x-button
xs
:href="route('school.landingPage.lecturer', ['country' => $country, 'lecturer' => $row->slug])"
black>
<i class="fa fa-thin fa-browser mr-2"></i>
{{ __('Show landing page') }}
</x-button>
</div>
<div>
@if($row->created_by === auth()->id())
<x-button
:href="route('contentCreator.form', ['country' => $country, 'lecturer' => $row->id])"
xs
amber
>
<i class="fa fa-thin fa-edit mr-2"></i>
{{ __('Edit') }}
</x-button>
@endif
</div>
</div>

View File

@@ -1,6 +0,0 @@
<div class="w-full mb-4 md:w-auto md:mb-0">
<x-button :href="route('contentCreator.form', ['country' => $country, 'lecturer' => null])">
<i class="fa fa-thin fa-plus"></i>
{{ __('Register lecturer') }}
</x-button>
</div>

View File

@@ -1,58 +0,0 @@
<div class="flex flex-col space-y-1">
<div>
@if(str($row->value)->contains('http'))
<x-button xs amber :href="$row->value" target="_blank">
<i class="fa fa-thin fa-book-open mr-2"></i>
{{ __('Open') }}
</x-button>
@endif
</div>
<div>
@if($row->type === 'downloadable_file')
<x-button xs amber :href="$row->getFirstMediaUrl('single_file')" target="_blank">
<i class="fa fa-thin fa-download mr-2"></i>
{{ __('Download') }}
</x-button>
@endif
</div>
<div>
@if($row->type === 'podcast_episode')
<x-button xs amber :href="$row->episode->data['link']" target="_blank">
<i class="fa fa-thin fa-headphones mr-2"></i>
{{ __('Listen') }}
</x-button>
@endif
</div>
<div>
@if($row->type === 'markdown_article')
<x-button xs amber :href="route('article.view', [$row])">
<i class="fa fa-thin fa-newspaper mr-2"></i>
{{ __('Read') }}
</x-button>
@endif
</div>
<div>
@if($row->type !== 'markdown_article')
<x-button
x-data="{
textToCopy: '{{ url()->route('library.table.libraryItems', ['country' => 'de', 'table' => ['filters' => ['id' => $row->id]]]) }}',
}"
@click.prevent="window.navigator.clipboard.writeText(textToCopy);window.$wireui.notify({title:'{{ __('Share url copied!') }}',icon:'success'});"
xs black>
<i class="fa fa-thin fa-copy mr-2"></i>
{{ __('Share link') }}
</x-button>
@else
<x-button
x-data="{
textToCopy: '{{ url()->route('library.table.libraryItems', ['country' => 'de', 'table' => ['filters' => ['id' => $row->id]]]) }}',
}"
@click.prevent="window.navigator.clipboard.writeText(textToCopy);window.$wireui.notify({title:'{{ __('Share url copied!') }}',icon:'success'});"
xs black>
<i class="fa fa-thin fa-copy mr-2"></i>
{{ __('Share link') }}
</x-button>
@endif
</div>
</div>

View File

@@ -1,3 +0,0 @@
<div class="w-12 h-12">
<img class="object-cover" src="{{ $row->getFirstMediaUrl('main', 'thumb') }}" alt="{{ $row->name }}">
</div>

View File

@@ -1,5 +0,0 @@
<div class="flex flex-wrap items-center">
@foreach($row->tags as $tag)
<x-badge class="whitespace-nowrap m-1">{{ $tag->name }}</x-badge>
@endforeach
</div>

View File

@@ -1,10 +0,0 @@
<div class="w-full mb-4 md:w-auto md:mb-0">
<x-button :href="route('meetup.event.form', ['country' => $country, 'meetupEvent' => null])">
<i class="fa fa-thin fa-plus"></i>
{{ __('Register Meetup date') }}
</x-button>
<x-button :href="route('profile.meetups', ['country' => $country])">
<i class="fa fa-thin fa-user-group"></i>
{{ __('My meetups') }}
</x-button>
</div>

View File

@@ -1,18 +0,0 @@
<div class="flex flex-col space-y-1">
<div>
@if(count($row->attendees ?? []) > 0)
<x-badge green class="whitespace-nowrap">{{ __('Confirmations') }}
: {{ count($row->attendees ?? []) }}</x-badge>
@else
<x-badge class="whitespace-nowrap">{{ __('Confirmations') }}: {{ count($row->attendees ?? []) }}</x-badge>
@endif
</div>
<div>
@if(count($row->might_attendees ?? []) > 0)
<x-badge green class="whitespace-nowrap">{{ __('Perhaps') }}
: {{ count($row->might_attendees ?? []) }}</x-badge>
@else
<x-badge class="whitespace-nowrap">{{ __('Perhaps') }}: {{ count($row->might_attendees ?? []) }}</x-badge>
@endif
</div>
</div>

View File

@@ -1,68 +0,0 @@
<div class="flex flex-col space-y-1">
<div>
<x-button
class="whitespace-nowrap"
primary
xs
:href="route('meetup.event.landing', ['country' => $row->meetup->city->country, 'meetupEvent' => $row->id])"
>
<i class="fa fa-thin fa-browser mr-2"></i>
{{ __('Link to participate') }}
</x-button>
</div>
@if($row->meetup->telegram_link)
<div>
<x-button
xs
black
target="_blank"
:href="$row->meetup->telegram_link"
>
<i class="fa fa-thin fa-external-link mr-2"></i>
{{ __('Telegram-Link') }}
</x-button>
</div>
@endif
@if($row->meetup->webpage)
<div>
<x-button
xs
black
target="_blank"
:href="$row->meetup->webpage"
>
<i class="fa fa-thin fa-external-link mr-2"></i>
{{ __('Website') }}
</x-button>
</div>
@endif
@if($row->meetup->twitter_username)
<div>
<x-button
xs
black
target="_blank"
:href="$row->meetup->twitter_username"
>
<i class="fa fa-brand fa-twitter mr-2"></i>
{{ __('Twitter') }}
</x-button>
</div>
@endif
@if($row->nostr)
<div
x-data="{
textToCopy: '{{ $row->nostr }}',
}"
@click.prevent="window.navigator.clipboard.writeText(textToCopy);window.$wireui.notify({title:'{{ __('PubKey copied!') }}',icon:'success'});"
>
<x-button
xs
black
>
<i class="fa fa-thin fa-clipboard mr-2"></i>
{{ __('Nostr') }}
</x-button>
</div>
@endif
</div>

View File

@@ -1,16 +0,0 @@
<div class="flex flex-col space-y-1">
<div>
@if(auth()->user()->can('update', $row))
<x-button
black
xs
:href="route('meetup.event.form', ['country' => $row->meetup->city->country, 'meetupEvent' => $row])"
>
<i class="fa fa-thin fa-edit mr-2"></i>
{{ __('Edit') }}
</x-button>
@else
<x-badge>{{ __('no authorization') }}</x-badge>
@endif
</div>
</div>

View File

@@ -1,8 +0,0 @@
<a href="{{ route('meetup.event.landing', ['country' => $country, 'meetupEvent' => $row]) }}">
<div class="flex items-center space-x-2">
<img class="h-12" src="{{ $row->meetup->getFirstMediaUrl('logo', 'thumb') }}" alt="{{ $row->meetup->name }}">
<div>
{{ $row->meetup->name }}
</div>
</div>
</a>

View File

@@ -1,125 +0,0 @@
<div class="flex flex-col space-y-1">
@if($row->meetup_events_count > 0)
<div>
<x-button
xs
amber
wire:click="meetupEventSearch({{ $row->id }})">
<i class="fa fa-thin fa-calendar mr-2"></i>
{{ __('Show dates') }} ({{ $row->meetup_events_count }})
</x-button>
</div>
@endif
@if($row->meetup_events_count < 1)
<div>
<x-button
xs
outlined
wire:click="meetupEventSearch({{ $row->id }})">
<i class="fa fa-thin fa-calendar-circle-exclamation mr-2"></i>
{{ __('Show dates') }} ({{ $row->meetup_events_count }})
</x-button>
</div>
@endif
<div>
<x-button
xs
black
x-data="{}"
@click.prevent="window.navigator.clipboard.writeText('{{ $ics }}');window.$wireui.notify({title:'{{ __('Calendar Stream Url copied!') }}',description:'{{ __('Paste the calendar stream link into a compatible calendar app.') }}',icon:'success'});"
>
<i class="fa fa-thin fa-calendar-arrow-down mr-2"></i>
{{ __('Calendar Stream-Url') }} ({{ $row->meetup_events_count }})
</x-button>
</div>
<div>
<x-button
black
xs
:href="route('meetup.landing', ['country' => $country ?? $row->city->country->code, 'meetup' => $row->slug])"
>
<i class="fa fa-thin fa-browser mr-2"></i>
{{ __('Show landing page') }}
</x-button>
</div>
@if($row->telegram_link)
<div>
<x-button
xs
black
target="_blank"
:href="$row->telegram_link"
>
<i class="fa fa-thin fa-external-link mr-2"></i>
{{ __('Telegram-Link') }}
</x-button>
</div>
@endif
@if($row->simplex)
<div>
<x-button
xs
black
target="_blank"
:href="$row->simplex"
>
<i class="fa fa-thin fa-external-link mr-2"></i>
{{ __('SimpleX-Link') }}
</x-button>
</div>
@endif
@if($row->webpage)
<div>
<x-button
xs
black
target="_blank"
:href="$row->webpage"
>
<i class="fa fa-thin fa-external-link mr-2"></i>
{{ __('Website') }}
</x-button>
</div>
@endif
@if($row->twitter_username)
<div>
<x-button
xs
black
target="_blank"
:href="'https://twitter.com/'.$row->twitter_username"
>
<i class="fa fa-brand fa-twitter mr-2"></i>
{{ __('Twitter') }}
</x-button>
</div>
@endif
@if($row->nostr)
<div
x-data="{
textToCopy: '{{ $row->nostr }}',
}"
@click.prevent="window.navigator.clipboard.writeText(textToCopy);window.$wireui.notify({title:'{{ __('PubKey copied!') }}',icon:'success'});"
>
<x-button
xs
black
>
<i class="fa fa-thin fa-clipboard mr-2"></i>
{{ __('Nostr') }}
</x-button>
</div>
@endif
@can('update', $row)
<div>
<x-button
:href="route('meetup.meetup.form', ['meetup' => $row->id, 'country' => $country])"
xs
amber
>
<i class="fa fa-thin fa-edit mr-2"></i>
{{ __('Edit') }}
</x-button>
</div>
@endcan
</div>

View File

@@ -1,10 +0,0 @@
<div class="w-full mb-4 md:w-auto md:mb-0">
<x-button :href="route('meetup.meetup.form', ['country' => $country, 'meetup' => null])">
<i class="fa fa-thin fa-plus"></i>
{{ __('Submit Meetup') }}
</x-button>
<x-button :href="route('profile.meetups', ['country' => $country])">
<i class="fa fa-thin fa-user-group"></i>
{{ __('My meetups') }}
</x-button>
</div>

View File

@@ -1,8 +0,0 @@
<div>
<a href="{{ $row->telegram_link }}" target="_blank">
<x-badge class="whitespace-nowrap">
<i class="fa fa-thin fa-external-link mr-2"></i>
{{ __('Open') }}
</x-badge>
</a>
</div>

View File

@@ -1,8 +0,0 @@
<a href="{{ route('meetup.landing', ['country' => $row->city->country, 'meetup' => $row]) }}">
<div class="flex items-center space-x-2">
<img class="h-24" src="{{ $row->getFirstMediaUrl('logo', 'thumb') }}" alt="{{ $row->name }}">
<div>
{{ $row->name }}
</div>
</div>
</a>

View File

@@ -1,24 +0,0 @@
<div class="flex flex-col space-y-1">
<div>
@if($row->osm_relation)
has OSM relation
@endif
</div>
<div>
population {{ $row->population }}
</div>
<div>
@if($row->population_date)
population date {{ $row->population_date }}
@endif
</div>
<div>
<x-button
xs
amber
:href="route('osm.meetups.item', ['meetup' => $row, 'search' => $row->city->name])"
>
Open OSM Item
</x-button>
</div>
</div>

View File

@@ -1,23 +0,0 @@
<div class="flex flex-col space-y-1">
@can('update', $row)
<div>
<x-button xs amber
:href="route('project.projectProposal.form', ['country' => $country, 'projectProposal' => $row])">
<i class="fa fa-thin fa-edit mr-2"></i>
{{ __('Edit') }}
</x-button>
</div>
@endcan
@auth
<div>
<x-button class="whitespace-nowrap" xs black :href="route('voting.projectFunding', ['projectProposal' => $row])">
<i class="fa fa-thin fa-check-to-slot mr-2"></i>
{{ __('Vote') }} [0]
</x-button>
</div>
@else
<div>
<x-badge>{{ __('for voting you have to be logged in') }}</x-badge>
</div>
@endauth
</div>

View File

@@ -1,6 +0,0 @@
<div class="w-full mb-4 md:w-auto md:mb-0">
<x-button :href="route('project.projectProposal.form', ['country' => $country, 'projectProposal' => null])">
<i class="fa fa-thin fa-plus"></i>
{{ __('Submit project for funding') }}
</x-button>
</div>

View File

@@ -1,6 +0,0 @@
<div class="flex items-center space-x-2">
<img class="h-12" src="{{ $row->user->profile_photo_url }}" alt="{{ $row->user->name }}">
<div>
{{ str($row->user->name)->limit(10) }}
</div>
</div>

View File

@@ -1,24 +0,0 @@
<div class="flex flex-col space-y-1">
<div>
@if($row->course_events_count > 0 && !$manage)
<x-button xs amber wire:click="venueSearch({{ $row->id }})">
{{ __('Show dates') }} ({{ $row->course_events_count }})
</x-button>
@endif
</div>
<div>
@if($row->course_events_count < 1 && !$manage)
<x-button xs outlined wire:click="venueSearch({{ $row->id }})">
{{ __('Show dates') }} ({{ $row->course_events_count }})
</x-button>
@endif
</div>
<div>
@can('update', $row)
<x-button primary xs :href="route('venue.form', ['venue' => $row])">
<i class="fa-thin fa-edit"></i>
{{ __('Edit') }}
</x-button>
@endif
</div>
</div>

View File

@@ -1,6 +0,0 @@
<div class="w-full mb-4 md:w-auto md:mb-0">
<x-button :href="route('venue.form', ['country' => $country, 'venue' => null])">
<i class="fa fa-thin fa-plus"></i>
{{ __('Create venue') }}
</x-button>
</div>

View File

@@ -1,30 +0,0 @@
<div
wire:ignore
x-data
x-init="
FilePond.registerPlugin(
FilePondPluginImagePreview,
FilePondPluginImageExifOrientation,
FilePondPluginFileValidateSize,
FilePondPluginImageEdit
);
FilePond.setOptions({
labelIdle: '{{ 'Drag & Drop Deiner Dateien oder <span class="filepond--label-action"> in Ordner suchen </span>' }}',
allowMultiple: {{ isset($attributes['multiple']) ? 'true' : 'false' }},
server: {
process: (fieldName, file, metadata, load, error, progress, abort, transfer, options) => {
@this.upload('{{ $attributes['wire:model'] }}', file, load, error, progress)
},
revert: (filename, load) => {
@this.removeUpload('{{ $attributes['wire:model'] }}', filename, load)
},
load: (source, load, error, progress, abort, headers) => {
@this.load('{{ $attributes['wire:model'] }}', load, error, progress, abort, headers)
},
},
});
FilePond.create($refs.input);
"
>
<input type="file" x-ref="input" name="{{ $attributes['name'] }}">
</div>

View File

@@ -1,13 +0,0 @@
@props([
'for',
'label',
])
<div class="sm:grid sm:grid-cols-3 sm:gap-4 sm:items-start sm:border-t sm:border-gray-700 sm:pt-5">
<label for="{{ $for }}"
class="block text-sm font-medium text-gray-100 sm:mt-px sm:pt-2">
{{ $label }}
</label>
<div class="mt-1 sm:mt-0 sm:col-span-2">
{{ $slot }}
</div>
</div>

View File

@@ -1,63 +0,0 @@
<div
wire:ignore
x-data="{
value: @entangle($attributes->wire('model')).defer,
init() {
let editor = new EasyMDE({
element: this.$refs.editor,
lineNumbers: true,
uploadImage: false,
spellChecker: false,
{{-- imageMaxSize: 1024 * 1024 * 10,--}}
{{-- imageUploadFunction: (file, onSuccess, onError) => {--}}
{{-- @this.upload('images', file, (uploadedFilename) => {--}}
{{-- const currentImage = @this.get('currentImage');--}}
{{-- const temporaryUrls = @this.get('temporaryUrls');--}}
{{-- onSuccess(temporaryUrls[currentImage]);--}}
{{-- @this.set('currentImage', currentImage + 1)--}}
{{-- }, () => {--}}
{{-- // Error callback.--}}
{{-- }, (event) => {--}}
{{-- // Progress callback.--}}
{{-- // event.detail.progress contains a number between 1 and 100 as the upload progresses.--}}
{{-- })--}}
{{-- },--}}
showIcons: [
'heading',
'heading-smaller',
'heading-bigger',
'heading-1',
'heading-2',
'heading-3',
'code',
'table',
'quote',
'strikethrough',
'unordered-list',
'ordered-list',
'clean-block',
'horizontal-rule',
'undo',
'redo',
//'upload-image',
],
})
editor.value(this.value)
editor.codemirror.on('change', () => {
this.value = editor.value()
})
},
}"
class="w-full"
>
<div class="prose max-w-none">
<textarea x-ref="editor"></textarea>
</div>
<style>
.EasyMDEContainer {
background-color: white;
}
</style>
</div>

View File

@@ -1,19 +0,0 @@
<x-app-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Dashboard') }}
</h2>
</x-slot>
<div class="py-12">
<div class="max-w-7xl mx-auto sm:px-6 lg:px-8">
<div class="bg-21gray overflow-hidden shadow-xl sm:rounded-lg">
<div class="grid grid-cols-1 gap-4 sm:grid-cols-2">
WIP
</div>
</div>
</div>
</div>
</x-app-layout>

View File

@@ -1,16 +0,0 @@
<table>
<thead>
<tr>
<th>Name</th>
<th>Status</th>
</tr>
</thead>
<tbody>
@foreach($attendees as $a)
<tr>
<td>{{ $a['name'] }}</td>
<td>{{ $a['status'] }}</td>
</tr>
@endforeach
</tbody>
</table>

View File

@@ -11,58 +11,23 @@
<link rel="manifest" href="/site.webmanifest">
@stack('feeds')
{!! seo($SEOData ?? null) !!}
<!-- Fonts -->
{{-- Fonts --}}
@googlefonts
<!-- Scripts -->
<script src="https://mempool.space/mempool.js"></script>
<script src="{{ asset('dist/jquery.js') }}"></script>
<script src="{{ asset('vendor/jvector/jquery-jvectormap-2.0.5.min.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/world-mill.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/europe-merc.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/de.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/at.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/ch.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/fr.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/es.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/it.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/pt.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/pl.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/se.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/mx.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/us.js') }}"></script>
<script src="{{ asset('dist/smoothscroll.js') }}"></script>
{{-- Scripts --}}
<script src="https://kit.fontawesome.com/866fd3d0ab.js" crossorigin="anonymous"></script>
@mapstyles
@mapscripts
<script src="{{ asset('dist/heatmap.min.js') }}"></script>
<script src="{{ asset('dist/leaflet-heatmap.js') }}"></script>
<script src="{{ asset('dist/leaflet-providers.js') }}"></script>
<wireui:scripts/>
@vite(['resources/css/app.css', 'resources/js/app.js'])
<!-- Styles -->
<link rel="stylesheet" href="{{ asset('vendor/jvector/jquery-jvectormap-2.0.5.css') }}" type="text/css"
media="screen"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/easymde/dist/easymde.min.css">
<x-comments::styles/>
<x-embed-styles/>
@vite(['resources/css/app.css', 'resources/js/app.js'])
{{-- Styles --}}
@livewireStyles
@include('layouts.styles')
</head>
<body class="font-sans antialiased {{ isset($darkModeDisabled) && $darkModeDisabled ? '' : 'bg-21gray' }} dark">
<body class="font-sans antialiased">
<x-notifications z-index="z-[99999]" blur="md" align="center"/>
<x-dialog z-index="z-[99999]" blur="md" align="center"/>
@if(auth()->user())
{{-- HIGHSCORE-CHAT --}}
<livewire:chat.highscore-chat/>
@endif
<livewire:laravel-echo/>
<x-jet-banner/>
<div class="min-h-screen">
<!-- Page Content -->
<main>
{{ $slot }}
</main>
</div>
{{ $slot }}
@stack('modals')
@livewireScripts
<x-comments::scripts/>

View File

@@ -11,56 +11,23 @@
<link rel="manifest" href="/site.webmanifest">
@stack('feeds')
{!! seo($SEOData ?? null) !!}
<!-- Fonts -->
{{-- Fonts --}}
@googlefonts
<!-- Scripts -->
<link rel="stylesheet" href="{{ asset('vendor/jvector/jquery-jvectormap-2.0.5.css') }}" type="text/css"
media="screen"/>
<script src="https://mempool.space/mempool.js"></script>
<script src="{{ asset('dist/jquery.js') }}"></script>
<script src="{{ asset('vendor/jvector/jquery-jvectormap-2.0.5.min.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/world-mill.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/europe-merc.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/de.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/at.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/ch.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/fr.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/es.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/it.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/pt.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/pl.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/se.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/mx.js') }}"></script>
<script src="{{ asset('vendor/jvector/maps/us.js') }}"></script>
<script src="{{ asset('dist/smoothscroll.js') }}"></script>
{{-- Scripts --}}
<script src="https://kit.fontawesome.com/866fd3d0ab.js" crossorigin="anonymous"></script>
@mapscripts
<script src="{{ asset('dist/heatmap.min.js') }}"></script>
<script src="{{ asset('dist/leaflet-heatmap.js') }}"></script>
<script src="{{ asset('dist/leaflet-providers.js') }}"></script>
<wireui:scripts/>
<x-embed-styles />
<x-embed-styles/>
@vite(['resources/css/app.css', 'resources/js/app.js'])
<!-- Styles -->
<x-comments::styles/>
{{-- Styles --}}
@livewireStyles
@include('layouts.styles')
</head>
<body class="font-sans antialiased bg-21gray dark">
<body class="font-sans antialiased">
<x-notifications z-index="z-[99999]" blur="md" align="center"/>
<x-dialog z-index="z-[99999]" blur="md" align="center" />
@if(auth()->user())
{{-- HIGHSCORE-CHAT --}}
<livewire:chat.highscore-chat/>
@endif
<x-dialog z-index="z-[99999]" blur="md" align="center"/>
<livewire:laravel-echo/>
<x-jet-banner/>
<div class="min-h-screen">
<!-- Page Content -->
<main>
{{ $slot }}
</main>
</div>
{{ $slot }}
@stack('modals')
@livewireScripts
<x-comments::scripts/>

View File

@@ -1,67 +1,4 @@
<style>
.shiki .highlight {
background-color: hsl(197, 88%, 94%);
padding: 3px 0;
}
.shiki .add {
background-color: hsl(136, 100%, 96%);
padding: 3px 0;
}
.shiki .del {
background-color: hsl(354, 100%, 96%);
padding: 3px 0;
}
.shiki.focus .line:not(.focus) {
transition: all 250ms;
filter: blur(2px);
}
.shiki.focus:hover .line {
transition: all 250ms;
filter: blur(0);
}
.comments {
--comments-color-background: rgb(34, 34, 34);
--comments-color-background: rgb(34, 34, 34);
--comments-color-background-nested: rgb(34, 34, 34);
--comments-color-background-paper: rgb(55, 51, 51);
--comments-color-background-info: rgb(104, 89, 214);
--comments-color-reaction: rgb(59, 59, 59);
--comments-color-reaction-hover: rgb(65, 63, 63);
--comments-color-reacted: rgba(67, 56, 202, 0.25);
--comments-color-reacted-hover: rgba(67, 56, 202, 0.5);
--comments-color-border: rgb(221, 221, 221);
--comments-color-text: white;
--comments-color-text-dimmed: rgb(164, 164, 164);
--comments-color-text-inverse: white;
--comments-color-accent: rgba(67, 56, 202);
--comments-color-accent-hover: rgba(67, 56, 202, 0.75);
--comments-color-danger: rgb(225, 29, 72);
--comments-color-danger-hover: rgb(225, 29, 72, 0.75);
--comments-color-success: rgb(10, 200, 134);
--comments-color-success-hover: rgb(10, 200, 134, 0.75);
--comments-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
}
.comments-button {
background-color: #F7931A !important;
}
.leaflet-pane {
z-index: 0 !important;
}
[x-cloak] {
display: none !important;
}

View File

@@ -1,14 +0,0 @@
<div class="bg-white flex flex-col h-screen justify-between py-16">
<div class="max-w-screen-2xl mx-auto px-2 sm:px-10 space-y-4 flex flex-col sm:flex-row">
<div class="flex flex-col space-y-4">
<div class="flex justify-center" wire:key="qrcode">
<a href="{{ $this->url }}">
<img src="{{ 'data:image/png;base64, '. $this->qrCode }}" alt="qrcode">
</a>
</div>
<code class="font-mono text-black">
{{ $this->url }}
</code>
</div>
</div>
</div>

View File

@@ -1,216 +0,0 @@
<x-jet-authentication-card>
<x-slot name="logo">
<x-jet-authentication-card-logo/>
</x-slot>
<div wire:ignore>
<div class="flex items-center justify-end mb-4">
<x-button icon="arrow-left" secondary class="ml-4" href="/">
{{ __('Back to the website') }}
</x-button>
</div>
<div>
<div class="text-center text-2xl text-gray-800 mt-6">
Login with lightning
</div>
<div class="flex justify-center" wire:key="qrcode">
<a href="lightning:{{ $this->lnurl }}">
<img src="{{ 'data:image/png;base64, '. $this->qrCode }}" alt="qrcode">
</a>
</div>
<div class="my-2 flex justify-center font-mono break-all">
<input class="w-full" readonly wire:key="lnurl" onClick="this.select();"
value="lightning:{{ $this->lnurl }}"/>
</div>
<div class="flex justify-between w-full">
<div
x-data="{
textToCopy: 'lightning:{{ $this->lnurl }}',
}"
@click.prevent="window.navigator.clipboard.writeText(textToCopy);window.$wireui.notify({title:'{{ __('URL copied!') }}',icon:'success'});"
>
<x-button
black
>
<i class="fa fa-thin fa-clipboard"></i>
{{ __('Copy') }}
</x-button>
</div>
<div
x-data="{
textToCopy: 'lightning:{{ $this->lnurl }}',
}"
@click.prevent="window.navigator.clipboard.writeText(textToCopy);window.$wireui.notify({title:'{{ __('URL copied!') }}',icon:'success'});"
>
<x-button
primary
black
:href="'lightning:'.$this->lnurl"
>
{{ __('Click to connect') }}
<svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 512 512"
height="1em" width="1em" xmlns="http://www.w3.org/2000/svg">
<path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"
d="M461.81 53.81a4.4 4.4 0 00-3.3-3.39c-54.38-13.3-180 34.09-248.13 102.17a294.9 294.9 0 00-33.09 39.08c-21-1.9-42-.3-59.88 7.5-50.49 22.2-65.18 80.18-69.28 105.07a9 9 0 009.8 10.4l81.07-8.9a180.29 180.29 0 001.1 18.3 18.15 18.15 0 005.3 11.09l31.39 31.39a18.15 18.15 0 0011.1 5.3 179.91 179.91 0 0018.19 1.1l-8.89 81a9 9 0 0010.39 9.79c24.9-4 83-18.69 105.07-69.17 7.8-17.9 9.4-38.79 7.6-59.69a293.91 293.91 0 0039.19-33.09c68.38-68 115.47-190.86 102.37-247.95zM298.66 213.67a42.7 42.7 0 1160.38 0 42.65 42.65 0 01-60.38 0z"></path>
<path fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="32"
d="M109.64 352a45.06 45.06 0 00-26.35 12.84C65.67 382.52 64 448 64 448s65.52-1.67 83.15-19.31A44.73 44.73 0 00160 402.32"></path>
</svg>
</x-button>
</div>
</div>
</div>
@if(app()->environment('local'))
<div class="flex items-center justify-end mt-4">
<x-button icon="login" secondary class="ml-4" href="{{ route('loginAsAdmin') }}">
{{ __('Admin login') }}
</x-button>
</div>
@endif
<div class="pt-12">
{{ __('Scan this code or copy & paste it to your lightning wallet. Or click to login with your wallet.') }}
</div>
<div class="pt-2">
<td
class="py-1 px-3 text-base leading-6 break-words border border-solid border-collapse border-neutral-600 text-slate-400"
style="list-style: outside;"
>
<a
target="_blank"
href="https://github.com/getAlby/lightning-browser-extension"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>Alby</a
>,
<a
target="_blank"
href="https://github.com/alexbosworth/balanceofsatoshis"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>Balance of Satoshis</a
>,
<a
target="_blank"
href="https://www.walletofsatoshi.com/"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>Wallet of Satoshi</a
>,
<a
target="_blank" href="https://blixtwallet.github.io"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;">Blixt</a>,
<a
target="_blank"
href="https://breez.technology"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>Breez</a
>,
<a
target="_blank"
href="https://bluewallet.io"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>BlueWallet</a
>,
<a
target="_blank"
href="https://coinos.io"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>coinos</a
>,
<a
target="_blank"
href="https://geyser.fund"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>Geyser</a
>, <a
target="_blank" href="https://lifpay.me"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;">LifPay</a>,
<a
target="_blank"
href="https://lnbits.com"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>LNbits</a
>,
<a
target="_blank"
href="https://ln.tips"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>LightningTipBot</a
>, <a
target="_blank" href="https://phoenix.acinq.co"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;">Phoenix</a>,
<a
target="_blank"
href="https://seedauth.etleneum.com/"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>SeedAuth</a
>,
<a
target="_blank"
href="https://github.com/pseudozach/seedauthextension"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>SeedAuthExtension</a
>,
<a
target="_blank" href="https://lightning-wallet.com"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;">SimpleBitcoinWallet</a>,
<a
target="_blank" href="https://sparrowwallet.com/"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;">Sparrow Wallet</a>,
<a
target="_blank"
href="https://www.thunderhub.io"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>ThunderHub</a
>,
<a
target="_blank"
href="https://zaphq.io/"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;"
>Zap Desktop</a
>, <a
target="_blank" href="https://zeusln.app"
rel="nofollow"
class="leading-6 text-blue-400 bg-transparent cursor-pointer"
style="text-decoration: none; list-style: outside;">Zeus</a>
</td>
</div>
</div>
<div wire:poll="checkAuth" wire:key="checkAuth"></div>
</x-jet-authentication-card>

View File

@@ -1,52 +0,0 @@
<x-jet-authentication-card>
<x-slot name="logo">
<x-jet-authentication-card-logo/>
</x-slot>
<div>
<div
wire:ignore
x-data="{
userProfile: @entangle('userProfile'),
init() {
const nip07signer = new window.NDKNip07Signer();
const ndk = new window.NDK({
explicitRelayUrls: ['wss://nostr.codingarena.de'],
signer: nip07signer
});
ndk.connect();
},
login() {
nip07signer.user().then(async (user) => {
if (!!user.npub) {
console.log('user pub: ' + user.npub);
const ndkUser = ndk.getUser({
npub: user.npub,
});
await ndkUser.fetchProfile();
console.log(ndkUser);
this.userProfile = ndkUser.profile;
}
});
}
}"
>
<div class="space-y-6" x-init="init()">
<x-button x-show="!userProfile.npub" primary label="NIP-07 Login" icon="login" @click="login()"/>
<p x-text="userProfile.npub"></p>
<p x-text="userProfile.about"></p>
<img :src="userProfile.image" alt="image"/>
</div>
</div>
@if($existingAccount)
<div class="mt-12 text-red-500 space-y-6">
<p>Es existiert ein Account mit dem npub {{ $userProfile['npub'] }}</p>
</div>
@endif
</div>
</x-jet-authentication-card>

View File

@@ -1,140 +0,0 @@
<x-jet-authentication-card>
<x-slot name="logo">
<x-jet-authentication-card-logo/>
</x-slot>
<div
class="flex justify-center space-x-4"
wire:ignore
x-data="{
userProfile: @entangle('userProfile'),
ndk: null,
nip07signer: null,
init() {
this.nip07signer = new window.NDKNip07Signer();
this.ndk = new window.NDK({
explicitRelayUrls: ['wss://nos.lol', 'wss://eden.nostr.land', 'wss://relay.damus.io', 'wss://nostr.einundzwanzig.space'],
signer: this.nip07signer
});
this.ndk.connect();
},
login() {
this.nip07signer.user().then(async (user) => {
if (!!user.npub) {
console.log('user pub: ' + user.npub);
const ndkUser = this.ndk.getUser({
npub: user.npub,
});
await ndkUser.fetchProfile();
console.log(ndkUser);
$wire.login(user.npub);
}
});
}
}"
>
<x-button lg primary @click="login()">
<svg class="svg-inline--fa mr-2" fill="#ffffff" version="1.1" id="nostr" xmlns="http://www.w3.org/2000/svg"
height="20px" viewBox="0 0 571.004 571.004"
xml:space="preserve">
<g>
<g>
<path d="M533.187,269.019c-1.432-1.746-2.219-3.876-1.252-5.993c1.868-4.08,0.611-7.658-0.931-11.465
c-0.877-2.167-0.796-4.716-1.15-7.095c-0.221-1.493-0.057-3.199-0.742-4.435c-1.775-3.199-3.812-6.275-5.949-9.245
c-2.681-3.717-5.564-7.291-8.38-10.914c-3.325-4.284-6.581-8.633-10.09-12.766c-0.706-0.833-2.604-1.42-3.607-1.085
c-2.411,0.808-4.732,2.052-6.874,3.452c-2.771,1.812-5.435,3.317-8.928,3.713c-3.953,0.453-8.062,1.403-11.604,3.154
c-5.189,2.562-9.747,6.401-14.924,9c-4.913,2.464-8.328,6.112-11.184,10.567c-0.783,1.22-1.705,2.371-2.685,3.444
c-3.252,3.574-5.549,7.629-7.051,12.248c-1.154,3.554-2.378,7.226-4.373,10.322c-1.963,3.044-3.256,6.194-4.162,9.601
c-0.285,1.065-0.44,2.167-0.656,3.251c-2.212-0.539-4.19-0.873-6.06-1.518c-1.709-0.592-3.684-1.15-4.879-2.375
c-2.979-3.052-6.528-5.059-10.388-6.577c-3.448-1.354-6.581-3.06-9.441-5.496c-1.514-1.29-3.771-1.738-5.721-2.489
c-1.419-0.547-3.043-0.714-4.3-1.501c-3.439-2.146-6.639-4.68-10.11-6.765c-2.256-1.359-4.737-2.542-7.271-3.166
c-1.722-0.424-2.293-0.865-2.216-2.599c0.241-5.227-0.832-10.175-3.235-14.872c-2.855-5.582-8.723-8.625-14.777-7.589
c-2.697,0.461-5.573,1.347-8.128,0.833c-3.329-0.669-6.516-2-10.028-1.861c-0.612,0.025-1.31-0.437-1.864-0.82
c-4.076-2.832-8.152-5.663-12.163-8.584c-1.489-1.085-2.782-1.154-4.442-0.322c-1.221,0.612-2.705,0.955-4.08,0.967
c-6.047,0.062-12.098-0.082-18.148-0.077c-5.173,0.004-10.498,1.815-15.377-1.399c-0.241-0.159-0.588-0.216-0.886-0.221
c-3.023-0.028-4.488-1.632-5.096-4.524c-0.171-0.82-1.436-1.971-2.236-2c-3.986-0.143-7.984-0.041-11.971,0.139
c-2.187,0.102-4.619,0.004-6.483,0.922c-3.941,1.942-7.556,4.533-11.355,6.773c-1.505,0.889-3.023,1.085-3.872-0.763
c0.979-1.261,2.337-2.272,2.627-3.525c0.771-3.37-3.705-7.181-6.969-6.059c-1.498,0.514-3.003,1.208-4.272,2.138
c-2.464,1.807-4.725,3.896-7.144,5.769c-3.011,2.33-6.055,4.655-10.449,4.737c0.983-3.753-1.718-5.104-4.108-6.597
c-1.094-0.686-2.293-1.281-3.525-1.652c-3.276-1-6.348-0.763-8.956,1.828c-2.158,2.142-3.488,2.179-6.014,0.367
c-3.081-2.208-3.986-2.175-7.128,0c-1.122,0.775-2.346,1.832-3.586,1.926c-4.268,0.318-6.646,3.052-8.931,6.132
c-1.632,2.203-3.244,4.472-5.173,6.405c-4.378,4.39-8.911,8.629-13.48,12.815c-0.608,0.559-1.95,0.873-2.709,0.608
c-3.378-1.191-5.582-3.823-6.899-7.001c-2.521-6.075-4.957-12.203-7.07-18.429c-0.816-2.399-1.11-5.165-0.865-7.687
c0.559-5.786,1.771-11.51,2.411-17.291c1.196-10.796,3.583-21.343,7.405-31.445c6.773-17.891,13.934-35.643,21.2-53.342
c4.619-11.249,7.817-22.852,10.167-34.75c1.644-8.319,2.477-16.63,1.901-25.137c-0.286-4.227,0.232-8.56,0.808-12.787
c1.669-12.232-2.46-19.547-13.843-24.068c-1.403-0.559-2.766-1.228-4.149-1.844c-2.15,0-4.3,0-6.455,0
c-2.909,0.91-5.871,1.681-8.715,2.762c-3.827,1.457-7.989,2.484-10.51,6.145c-1.701,2.472-4.088,3.5-6.916,4.06
c-3.9,0.771-7.797,1.62-11.62,2.705c-3.378,0.959-6.369,2.709-9.135,5.872c6.863,1.652,13.211,3.305,19.617,4.692
c7.629,1.652,14.558,4.729,20.518,9.763c2.954,2.493,5.667,5.447,6.165,9.425c0.51,4.084,0.608,8.271,0.392,12.383
c-0.563,10.694-4.137,20.661-7.976,30.515c-2.358,6.059-5.406,11.876-7.36,18.054c-4.321,13.656-8.486,27.348-14.19,40.522
c-3.309,7.646-6.83,15.251-8.307,23.534c-1.722,9.657-3.264,19.343-4.917,29.013c-0.845,4.958-0.877,10.049-2.864,14.819
c-0.873,2.093-1.269,4.406-1.693,6.654c-0.975,5.182-1.832,10.379-2.733,15.573c0,7.838,0,15.675,0,23.513
c0.632,3.905,1.363,7.801,1.877,11.722c1.481,11.232,4.773,21.955,8.825,32.489c0.816,2.121,1.322,4.378,1.783,6.613
c0.718,3.473,1.069,7.365,4.309,9.303c2.427,1.452,2.982,3.402,3.603,5.671c1.828,6.684,1.318,13.428,0.147,20.086
c-1.114,6.341-0.845,12.525,0.861,18.65c2.313,8.318,4.72,16.613,7.291,24.859c0.461,1.48,1.71,2.896,2.946,3.916
c5.3,4.382,10.735,8.605,16.108,12.897c0.355,0.281,0.645,0.656,0.914,1.028c2.652,3.672,6.373,5.879,10.677,6.638
c8.262,1.457,16.275,4.117,24.664,4.929c1.363,0.131,2.742,0.453,4.035,0.906c2.362,0.828,4.696,1.733,7.038,2.623
c1.257,0.824,2.391,1.832,3.415,3.064c-0.698,2.239-1.901,4.234-3.199,6.164c-3.529,5.239-8.344,8.948-14.007,11.633
c-5.818,2.754-11.975,4.442-18.242,5.744c-8.115,1.686-16.259,3.231-24.378,4.88c-6.789,1.379-13.248,3.79-19.633,6.414
c-8.25,3.39-16.463,6.879-24.77,10.13c-6.447,2.525-13.158,4.149-20.086,4.68c-2.077,0.159-4.178,0.017-6.267,0.065
c-0.604,0.017-1.326,0.045-1.783,0.367c-3.46,2.437-7.446,3.407-11.481,4.272c-1.607,0.347-3.203,0.742-4.802,1.117
c-4.423,1.049-7.703,3.672-10.237,7.36c-2.481,3.619-3.827,7.691-4.762,11.914c-1.26,5.708-1.685,11.521-1.921,17.344
c-0.306,7.405-0.526,14.814-0.828,22.22c-0.082,2.023-0.367,4.035-0.486,6.059c-0.033,0.592,0.012,1.302,0.314,1.779
c3.525,5.654,7.299,11.126,12.276,15.643c4.251,3.859,8.993,6.769,14.819,7.557c0.171,0.024,0.326,0.175,0.485,0.265
c1.775,0,3.55,0,5.32,0c1.032-0.253,2.085-0.444,3.097-0.767c2.216-0.702,4.415-1.461,6.663-2.212
c-0.196-1.881-0.971-3.166-2.317-3.962c-1.236-0.734-2.595-1.301-3.958-1.771c-1.73-0.596-3.55-0.942-5.275-1.554
c-1.114-0.396-2.208-0.968-3.174-1.648c-1.367-0.968-1.979-2.424-2.052-4.097c0.069-0.102,0.118-0.257,0.212-0.298
c4.643-1.885,7.16-5.879,9.694-9.837c0.298-0.461,0.294-1.195,0.241-1.787c-0.445-4.696-1.775-9.184-3.354-13.599
c-1.75-4.884-3.595-9.73-5.333-14.614c-0.551-1.547-0.836-3.183-1.326-4.749c-0.318-1.017,0.11-1.543,0.938-1.971
c1.64-0.841,3.423-0.832,5.189-0.886c2.464-0.073,4.945,0.041,7.393-0.188c1.408-0.131,2.925-0.515,4.121-1.236
c13.692-8.303,28.474-14.003,43.791-18.413c13.876-3.998,27.997-6.915,42.244-9.229c6.247-1.012,12.501-1.967,18.76-2.897
c0.918-0.134,1.665-0.428,2.371-1.027c4.227-3.595,9.217-5.586,14.635-6.259c5.773-0.715,11.608-0.951,17.393-1.563
c3.578-0.379,7.161-0.905,10.678-1.656c4.308-0.918,8.045-3.129,11.146-6.205c2.688-2.669,5.132-5.59,7.593-8.482
c3.28-3.855,6.414-7.834,9.727-11.661c1.02-1.179,2.432-2.012,3.631-3.039c0.792-0.674,1.501-0.653,2.391-0.11
c4.125,2.529,8.576,4.32,13.199,5.712c5.716,1.722,11.566,2.75,17.495,3.374c10.983,1.159,22,1.204,33.023,0.906
c3.166-0.086,6.333-0.09,9.503-0.184c0.93-0.029,1.718,0.171,2.473,0.729c3.309,2.444,6.646,4.852,9.963,7.291
c3.117,2.293,6.345,4.402,9.927,5.92c0.641,0.273,1.277,0.612,1.95,0.735c2.758,0.497,4.741,2.235,6.744,4.002
c5.908,5.214,11.343,10.894,16.161,17.111c6.324,8.156,12.468,16.455,18.617,24.745c6.152,8.295,12.342,16.557,19.396,24.125
c6.863,7.36,14.423,13.868,23.122,18.984c0.775,0.457,1.432,0.955,1.844,1.815c3.187,6.655,8.475,11.09,15.076,14.093
c6.81,3.097,14.006,4.256,21.444,4.142c10.33-0.159,20.062-2.53,28.906-8.014c5.264-3.264,9.572-7.471,12.347-13.097
c1.15-2.338,2.109-4.737,2.269-7.385c0.016-0.29,0.212-0.571,0.326-0.853c0-0.633,0-1.27,0-1.901
c-3.488-0.6-6.802,0.208-10.045,1.362c-3.101,1.102-6.124,2.416-9.25,3.443c-2.692,0.886-5.442,1.673-8.225,2.195
c-4.554,0.853-8.042-1.113-10.037-5.41c0.804-1.049,1.995-1.195,3.194-1.253c2.338-0.113,4.685-0.143,7.022-0.302
c0.799-0.053,1.664-0.249,2.338-0.648c0.6-0.359,1.121-1.024,1.411-1.673c0.498-1.126,0.311-1.44-0.869-2.085
c-3.402-1.856-6.993-3.264-10.714-4.324c-8.421-2.399-17.055-3.028-25.757-3.061c-1.836-0.008-3.677-0.004-5.513,0.082
c-0.963,0.045-1.66-0.249-2.366-0.906c-4.843-4.5-9.094-9.53-13.166-14.721c-6.613-8.429-12.48-17.389-18.47-26.259
c-2.836-4.198-5.786-8.319-8.769-12.411c-0.999-1.375-2.244-2.574-3.419-3.811c-0.384-0.404-0.885-0.727-1.383-0.991
c-1.358-0.727-2.269-0.408-2.905,1.003c-0.229,0.511-0.379,1.062-0.648,1.828c-0.633-0.465-1.179-0.841-1.697-1.253
c-5.03-4.019-8.866-9.058-11.905-14.655c-2.954-5.446-5.627-11.048-8.344-16.626c-2.607-5.353-5.092-10.767-8.438-15.712
c-1.521-2.248-3.317-4.312-4.9-6.523c-0.783-1.094-1.709-1.229-2.949-1.094c-5.324,0.579-10.625,0.494-15.843-0.894
c-2.591-0.689-5.035-1.718-7.1-3.488c-1.473-1.269-2.562-2.746-3.211-4.513c1.95-0.433,3.893-0.897,5.818-1.424
c6.459-1.767,12.926-2.469,19.552-2.081c7.964,0.466,15.92,1.159,23.892,1.437c2.853,0.098,5.966-0.172,8.557-1.244
c3.859-1.596,7.544-3.799,10.971-6.206c5.075-3.566,9.702-7.78,14.847-11.232c2.379-1.595,3.203-3.292,3.306-5.92
c0.134-3.509,1.9-4.781,5.3-4.149c0.6,0.114,1.203,0.253,1.787,0.44c3.852,1.229,7.633,1.028,11.489-0.163
c2.962-0.914,6.066-1.354,9.053-2.195c0.547-0.154,1.024-1.199,1.163-1.909c0.094-0.481-0.616-1.068-0.693-1.648
c-0.127-0.922-0.384-2.402,0.057-2.705c0.854-0.575,2.154-0.656,3.265-0.636c0.881,0.016,1.733,0.62,2.627,0.729
c2.064,0.258,3.995,0.021,5.247-1.986c1.232-1.971,1.277-3.864-0.163-5.757c-0.465-0.608-1.069-1.249-1.191-1.946
c-0.163-0.938-0.273-2.199,0.212-2.881c1.779-2.488,3.771-4.83,5.77-7.152c1.828-2.121,4.251-3.354,6.997-3.541
c0.967-0.065,2.158,0.742,2.966,1.465c0.633,0.562,0.686,1.729,1.261,2.407c0.674,0.795,1.628,1.347,2.465,2.007
c0.571-0.877,1.358-1.688,1.656-2.651c0.311-0.992-0.028-2.175,0.236-3.187c0.213-0.812,0.743-1.738,1.416-2.195
c3.591-2.439,7.442-4.524,10.861-7.177c2.574-1.991,4.508-4.786,6.944-6.98c4.182-3.771,9.526-5.097,14.789-6.472
c3.452-0.901,4.194-1.921,3.134-5.365c-0.514-1.673-1.228-3.309-2.052-4.854c-1.062-1.987-0.531-3.362,1.297-4.402
c0.727-0.412,1.498-0.751,2.252-1.114c2.387-1.139,4.08-2.701,4.688-5.521c0.612-2.827,1.75-5.549,2.741-8.286
c1.339-3.692,2.432-7.65,7.34-8.144c0.147-0.017,0.294-0.061,0.441-0.094c0-1.077,0-2.15,0-3.228
c-1.135-1.775-2.15-3.639-3.432-5.3C536.084,271.981,534.492,270.614,533.187,269.019z"/>
</g>
</g>
</svg>
Nostr NIP-07
</x-button>
<x-button
:href="route('auth.ln')"
lg primary>
<i class="fa-thin fa-bolt-lightning mr-2"></i>
LNURL-auth
</x-button>
</div>
</x-jet-authentication-card>

View File

@@ -1,289 +0,0 @@
<div
class="relative isolate flex items-center justify-center gap-x-6 overflow-hidden bg-gray-50 px-6 py-2.5 sm:px-3.5 sm:before:flex-1 -mt-4">
<div class="absolute left-[max(-7rem,calc(50%-52rem))] top-1/2 -z-10 -translate-y-1/2 transform-gpu blur-2xl"
aria-hidden="true">
<div class="aspect-[577/310] w-[36.0625rem] bg-gradient-to-r from-[#FABE75] to-[#F7931A] opacity-30"
style="clip-path: polygon(74.8% 41.9%, 97.2% 73.2%, 100% 34.9%, 92.5% 0.4%, 87.5% 0%, 75% 28.6%, 58.5% 54.6%, 50.1% 56.8%, 46.9% 44%, 48.3% 17.4%, 24.7% 53.9%, 0% 27.9%, 11.9% 74.2%, 24.9% 54.1%, 68.6% 100%, 74.8% 41.9%)"></div>
</div>
<div class="absolute left-[max(45rem,calc(50%+8rem))] top-1/2 -z-10 -translate-y-1/2 transform-gpu blur-2xl"
aria-hidden="true">
<div class="aspect-[577/310] w-[36.0625rem] bg-gradient-to-r from-[#FABE75] to-[#F7931A] opacity-30"
style="clip-path: polygon(74.8% 41.9%, 97.2% 73.2%, 100% 34.9%, 92.5% 0.4%, 87.5% 0%, 75% 28.6%, 58.5% 54.6%, 50.1% 56.8%, 46.9% 44%, 48.3% 17.4%, 24.7% 53.9%, 0% 27.9%, 11.9% 74.2%, 24.9% 54.1%, 68.6% 100%, 74.8% 41.9%)"></div>
</div>
<div class="w-full flex flex-col sm:flex-row items-center sm:space-x-4 justify-center">
<div x-data="{
height: null,
init() {
const that = this;
const tip = async () => {
const {
bitcoin: { blocks },
} = mempoolJS();
const blocksTipHeight = await blocks.getBlocksTipHeight();
that.height = blocksTipHeight;
};
tip();
setInterval(tip, 10000);
}
}">
<span
class="inline-flex items-center rounded-md bg-amber-100 px-2.5 py-0.5 text-sm font-medium text-amber-800">
<i class="-ml-0.5 mr-1.5 h-2 w-2 text-amber-400"></i>
Blockhöhe <span class="font-bold text-2xl ml-4" x-text="height && height.toLocaleString('de-DE')"></span>
</span>
</div>
{{--@if(!empty($weather))
<div class="text-md leading-6 text-gray-900 text-center max-w-screen-2xl">
{{ $weather }} (um {{ \App\Support\Carbon::parse($changed)->asTime() }} Uhr aktualisiert - jede 4. Stunde)
</div>
@else
<div class="text-md leading-6 text-gray-900 text-center max-w-screen-2xl">
Wetterdaten werden in Kürze wieder verfügbar sein. (OpenAI Quota exceeded)
</div>
@endif--}}
<div
x-data="{
fastestFee: null,
halfHourFee: null,
hourFee: null,
economyFee: null,
minimumFee: null,
init() {
const that = this;
const init = async () => {
const { bitcoin: { websocket } } = mempoolJS({
hostname: 'mempool.space'
});
const ws = websocket.initClient({
options: ['blocks', 'stats', 'mempool-blocks', 'live-2h-chart'],
});
ws.addEventListener('message', function incoming({data}) {
const res = JSON.parse(data.toString());
if (res.block) {
}
if (res.fees) {
that.fastestFee = res.fees.fastestFee;
that.halfHourFee = res.fees.halfHourFee;
that.hourFee = res.fees.hourFee;
that.economyFee = res.fees.economyFee;
that.minimumFee = res.fees.minimumFee;
}
});
};
init();
}
}"
>
<template x-if="!minimumFee">
<div class="text-amber-500 w-[384px]">
<div class="h-3 w-3">
<span
class="animate-ping inline-flex h-full w-full rounded-full bg-amber-500 opacity-75"></span>
</div>
Loading fees...
</div>
</template>
<template x-if="minimumFee">
<div
_ngcontent-serverapp-c131=""
class="flex flex-col justify-around p-5 leading-6 text-center text-white break-words"
style="min-height: 1px; list-style: outside;"
>
<app-fees-box
_ngcontent-serverapp-c131=""
class="block text-center break-words"
_nghost-serverapp-c126=""
style="list-style: outside;"
>
<div
_ngcontent-serverapp-c126=""
class="text-white"
style="list-style: outside;"
>
<div
_ngcontent-serverapp-c126=""
class="flex break-words"
style="list-style: outside;"
>
<div
_ngcontent-serverapp-c126=""
class="flex flex-row mb-3 w-1/4 h-5 bg-lime-700"
style="background: rgb(93, 125, 1); --darkreader-inline-bgcolor: #4a6401; --darkreader-inline-bgimage: none; transition: background-color 1s ease 0s; list-style: outside;"
data-darkreader-inline-bgcolor=""
data-darkreader-inline-bgimage=""
>
<span
_ngcontent-serverapp-c126=""
ngbtooltip="Either 2x the minimum, or the Low Priority rate (whichever is lower)"
placement="top"
class="px-1 pt-px w-full text-xs leading-4 truncate"
style="list-style: outside;"
>No Priority</span>
</div>
<div
_ngcontent-serverapp-c126=""
class="h-5 bg-white bg-opacity-[0]"
style="width: 4%; background-image: repeating-linear-gradient(90deg, rgb(36, 41, 58), rgb(36, 41, 58) 2px, rgb(23, 25, 39) 2px, rgb(23, 25, 39) 4px); list-style: outside;"
></div>
<div
_ngcontent-serverapp-c126=""
class="flex flex-row mb-3 w-3/4 h-5"
style="background: linear-gradient(to right, rgb(93, 125, 1), rgb(166, 125, 14)); --darkreader-inline-bgcolor: rgba(0, 0, 0, 0); --darkreader-inline-bgimage: linear-gradient(to right, #4a6401, #85640b); transition: background-color 1s ease 0s; border-radius: 0px 10px 10px 0px; list-style: outside;"
data-darkreader-inline-bgcolor=""
data-darkreader-inline-bgimage=""
>
<span
_ngcontent-serverapp-c126=""
ngbtooltip="Usually places your transaction in between the second and third mempool blocks"
placement="top"
class="px-1 pt-px w-1/3 text-xs leading-4 truncate"
style="list-style: outside;"
>Hour</span><span
_ngcontent-serverapp-c126=""
ngbtooltip="Usually places your transaction in between the first and second mempool blocks"
placement="top"
class="px-1 pt-px w-1/3 text-xs leading-4 truncate"
style="list-style: outside;"
>Half Hour</span
><span
_ngcontent-serverapp-c126=""
ngbtooltip="Places your transaction in the first mempool block"
placement="top"
class="px-1 pt-px w-1/3 text-xs leading-4 truncate"
style="list-style: outside;"
>Fastest</span
>
</div>
</div>
<div
_ngcontent-serverapp-c126=""
class="flex flex-row justify-between break-words"
style="list-style: outside;"
>
<div
_ngcontent-serverapp-c126=""
class="my-0 mx-auto w-24"
style="list-style: outside;"
>
<div
_ngcontent-serverapp-c126=""
class="mb-0 text-xl leading-8"
style="list-style: outside;"
>
<div
_ngcontent-serverapp-c126=""
class="m-auto leading-7 border-b border-gray-200 border-solid text-gray-900"
style="list-style: outside;"
>
<span x-text="minimumFee"></span>
<span
_ngcontent-serverapp-c126=""
class="inline-flex relative top-0 text-xs leading-4 text-gray-900"
style="list-style: outside;"
>sat/vB</span
>
</div>
</div>
</div>
<div
_ngcontent-serverapp-c126=""
class=""
style="width: 4%; list-style: outside;"
></div>
<div
_ngcontent-serverapp-c126=""
class="my-0 mx-auto w-24"
style="list-style: outside;"
>
<div
_ngcontent-serverapp-c126=""
class="mb-0 text-xl leading-8"
style="list-style: outside;"
>
<div
_ngcontent-serverapp-c126=""
class="m-auto leading-7 border-b border-gray-200 border-solid text-gray-900"
style="list-style: outside;"
>
<span x-text="hourFee"></span>
<span
_ngcontent-serverapp-c126=""
class="inline-flex relative top-0 text-xs leading-4 text-gray-900"
style="list-style: outside;"
>sat/vB</span>
</div>
<span
_ngcontent-serverapp-c126=""
class="block relative top-0 text-xs leading-5 text-gray-900"
style="list-style: outside;"
></span>
</div>
</div>
<div
_ngcontent-serverapp-c126=""
class="my-0 mx-auto w-24"
style="list-style: outside;"
>
<div
_ngcontent-serverapp-c126=""
class="mb-0 text-xl leading-8"
style="list-style: outside;"
>
<div
_ngcontent-serverapp-c126=""
class="m-auto leading-7 border-b border-gray-200 border-solid text-gray-900"
style="list-style: outside;"
>
<span x-text="halfHourFee"></span>
<span
_ngcontent-serverapp-c126=""
class="inline-flex relative top-0 text-xs leading-4 text-gray-900"
style="list-style: outside;"
>sat/vB</span
>
</div>
<span
_ngcontent-serverapp-c126=""
class="block relative top-0 text-xs leading-5 text-gray-900"
style="list-style: outside;"
></span>
</div>
</div>
<div
_ngcontent-serverapp-c126=""
class="my-0 mx-auto w-24"
style="list-style: outside;"
>
<div
_ngcontent-serverapp-c126=""
class="mb-0 text-xl leading-8"
style="list-style: outside;"
>
<div
_ngcontent-serverapp-c126=""
class="m-auto leading-7 border-b border-gray-200 border-solid text-gray-900"
style="list-style: outside;"
>
<span x-text="fastestFee"></span>
<span
_ngcontent-serverapp-c126=""
class="inline-flex relative top-0 text-xs leading-4 text-gray-900"
style="list-style: outside;"
>sat/vB</span
>
</div>
<span
_ngcontent-serverapp-c126=""
class="block relative top-0 text-xs leading-5 text-gray-900"
style="list-style: outside;"
></span>
</div>
</div>
</div>
</div>
</app-fees-box>
</div>
</template>
</div>
</div>
</div>

View File

@@ -1,169 +0,0 @@
<div class="bg-21gray flex flex-col h-screen justify-between">
{{-- HEADER --}}
<livewire:frontend.header :country="$country"/>
{{-- MAIN --}}
<section class="w-full mb-12">
<div class="max-w-screen-2xl mx-auto px-2 sm:px-10 space-y-4" id="table">
<div class="w-full flex justify-end">
<x-button
x-data="{
textToCopy: '{{ route('bitcoinEvent.ics', ['country' => $country]) }}',
}"
@click.prevent="window.navigator.clipboard.writeText(textToCopy);window.$wireui.notify({title:'{{ __('Calendar Stream Url copied!') }}',description:'{{ __('Paste the calendar stream link into a compatible calendar app.') }}',icon:'success'});"
amber>
<i class="fa fa-thin fa-calendar-arrow-down mr-2"></i>
{{ __('Calendar Stream-Url') }} ({{ $events->count() }})
</x-button>
</div>
<div class="flex items-start">
<div class="w-full sm:w-1/2">
@php
$locale = \Illuminate\Support\Facades\Cookie::get('lang', 'de');
@endphp
<link rel="stylesheet" type="text/css"
href="{{ asset('dist/js-year-calendar.min.css') }}"/>
<script src="{{ asset('dist/js-year-calendar.min.js') }}"></script>
<script src="{{ asset('dist/locales/js-year-calendar.'.$locale.'.js') }}"></script>
<style>
.calendar {
max-height: 280px;
}
.calendar .calendar-header {
background-color: #F7931A;
color: white;
border: 0;
}
.calendar table.month th.month-title {
color: #F7931A;
}
.calendar table.month th.day-header {
color: #fff;
}
.calendar table.month td.day .day-content {
color: #fff;
}
.calendar .calendar-header table th:hover {
background: #222;
}
</style>
<div
wire:ignore
x-data="{
calendar: null,
init() {
let events = {{ Js::from($events) }};
events = events.map(function(e){
return {id: e.id, startDate: new Date(e.startDate), endDate: new Date(e.endDate), location: e.location, description: e.description}
})
new Calendar(this.$refs.calendar, {
style: 'background',
language: '{{ $locale }}',
startYear: {{ $year }},
dataSource: events,
yearChanged: function(e) {
@this.set('year', e.currentYear);
},
clickDay: function(e) {
if(e.events.length > 0) {
var content = '';
var ids = [];
for(var i in e.events) {
ids.push(e.events[i].id);
content += '<div class=\'event-tooltip-content\'>'
+ '<div class=\'event-name\'>' + e.events[i].location + '</div>'
+ '<div class=\'event-location\'>' + e.events[i].description + '</div>'
+ '</div>';
}
console.log(content);
$wire.call('popover', content, ids.join(','));
}
},
});
},
}"
>
<div x-ref="calendar"></div>
</div>
</div>
<div class="hidden sm:inline sm:w-1/2">
<div
wire:ignore
class="w-full flex justify-center"
x-data="{
init() {
let markers = {{ Js::from($markers) }};
console.log(markers);
$('#map').vectorMap({
zoomButtons : true,
zoomOnScroll: true,
map: 'world_mill',
height: 300,
backgroundColor: 'transparent',
markers: markers.map(function(h){ return {name: h.name, latLng: h.coords} }),
onMarkerClick: function(event, index) {
$wire.call('filterByMarker', markers[index].id)
},
markerStyle: {
initial: {
image: '{{ asset('img/btc.png') }}',
}
},
regionStyle: {
initial: {
fill: '#a4a4a4'
},
hover: {
'fill-opacity': 1,
cursor: 'default'
},
}
});
}
}"
>
<div id="map" style="width: 100%; height: 300px" class="bg-gray-900"></div>
</div>
</div>
</div>
<div class="md:flex md:items-center md:justify-between">
<div class="min-w-0 flex-1">
<h2 class="text-2xl font-bold leading-7 text-white sm:truncate sm:text-3xl sm:tracking-tight">
{{ __('Bitcoin Events') }}
</h2>
</div>
<div class="mt-4 flex md:mt-0 md:ml-4">
{{----}}
</div>
</div>
<livewire:tables.bitcoin-event-table :country="$country->code"/>
</div>
</section>
{{-- FOOTER --}}
<livewire:frontend.footer/>
<div wire:ignore class="z-50 hidden md:block">
<script
src="{{ asset('dist/einundzwanzig.chat.js') }}"
data-website-owner-pubkey="daf83d92768b5d0005373f83e30d4203c0b747c170449e02fea611a0da125ee6"
data-chat-type="GLOBAL"
data-chat-tags="#einundzwanzig_portal_events"
data-relays="wss://nostr.einundzwanzig.space,wss://nostr.easify.de,wss://nostr.mom,wss://relay.damus.io,wss://relay.snort.social"
></script>
<link rel="stylesheet" href="{{ asset('dist/einundzwanzig.chat.css') }}">
</div>
</div>

View File

@@ -1,147 +0,0 @@
<div>
{{-- HEADER --}}
<livewire:frontend.header :country="null"/>
<div class="container p-4 mx-auto bg-21gray my-2">
<div class="pb-5 flex flex-row justify-between">
<h3 class="text-lg font-medium leading-6 text-gray-200">{{ __('Bitcoin Event') }}</h3>
<div class="flex flex-row space-x-2 items-center">
@can('delete', $bitcoinEvent)
@if($bitcoinEvent->id)
<div x-data>
<x-button
x-on:click="$wireui.confirmDialog({
icon: 'warning',
title: '{{ __('Are you sure you want to delete this Bitcoin event?') }}',
accept: {label: '{{ __('Yes') }}',
execute: () => $wire.deleteMe()},
reject: {label: '{{ __('No, cancel') }}'},
})"
negative>
<i class="fa fa-thin fa-trash"></i>
{{ __('Delete') }}
</x-button>
</div>
@endif
@endcan
<div>
<x-button :href="$fromUrl">
<i class="fa fa-thin fa-arrow-left"></i>
{{ __('Back') }}
</x-button>
</div>
</div>
</div>
<form class="space-y-8 divide-y divide-gray-700 pb-24">
<div class="space-y-8 divide-y divide-gray-700 sm:space-y-5">
<div class="mt-6 sm:mt-5 space-y-6 sm:space-y-5">
<x-input.group :for="md5('image')" :label="__('Logo')">
<div class="py-4">
@if ($image && str($image->getMimeType())->contains(['image/jpeg','image/jpg', 'image/png', 'image/gif', 'image/svg+xml', 'image/webp']))
<div class="text-gray-200">{{ __('Preview') }}:</div>
<img class="h-48 object-contain" src="{{ $image->temporaryUrl() }}">
@endif
@if ($bitcoinEvent->getFirstMediaUrl('logo'))
<div class="text-gray-200">{{ __('Current picture') }}:</div>
<img class="h-48 object-contain" src="{{ $bitcoinEvent->getFirstMediaUrl('logo') }}">
@endif
</div>
<input class="text-gray-200" type="file" wire:model="image">
@error('image') <span class="text-red-500">{{ $message }}</span> @enderror
</x-input.group>
<x-input.group :for="md5('venue_id')">
<x-slot name="label">
<div class="flex flex-row space-x-4 items-center">
<div>
{{ __('Venue') }}
</div>
<x-button xs href="{{ route('venue.form') }}">
<i class="fa fa-thin fa-plus"></i>
{{ __('Create venue') }}
</x-button>
</div>
</x-slot>
<x-select
autocomplete="off"
wire:model.debounce="bitcoinEvent.venue_id"
:placeholder="__('Venue')"
:async-data="[
'api' => route('api.venues.index'),
'method' => 'GET', // default is GET
]"
:template="[
'name' => 'user-option',
'config' => ['src' => 'flag']
]"
option-label="name"
option-value="id"
option-description="city.name"
/>
</x-input.group>
<x-input.group :for="md5('bitcoinEvent.from')" :label="__('Start')">
<x-datetime-picker
:clearable="false"
time-format="24"
timezone="UTC"
user-timezone="{{ config('app.user-timezone') }}"
autocomplete="off"
wire:model.debounce="bitcoinEvent.from"
display-format="DD-MM-YYYY HH:mm"
:placeholder="__('Start')"/>
</x-input.group>
<x-input.group :for="md5('bitcoinEvent.to')" :label="__('To')">
<x-datetime-picker
:clearable="false"
time-format="24"
timezone="UTC"
user-timezone="{{ config('app.user-timezone') }}"
autocomplete="off"
wire:model.debounce="bitcoinEvent.to"
display-format="DD-MM-YYYY HH:mm"
:placeholder="__('To')"/>
</x-input.group>
<x-input.group :for="md5('bitcoinEvent.title')" :label="__('Title')">
<x-input autocomplete="off" wire:model.debounce="bitcoinEvent.title"
:placeholder="__('Title')"/>
</x-input.group>
<x-input.group :for="md5('bitcoinEvent.description')" :label="__('Description')">
<div
class="text-amber-500 text-xs py-2">{{ __('For images in Markdown, please use eg. Imgur or another provider.') }}</div>
<x-input.simple-mde wire:model.defer="bitcoinEvent.description"/>
@error('bitcoinEvent.description') <span
class="text-red-500 py-2">{{ $message }}</span> @enderror
</x-input.group>
<x-input.group :for="md5('bitcoinEvent.link')" :label="__('Link')">
<x-input autocomplete="off" wire:model.debounce="bitcoinEvent.link"
:placeholder="__('Link')"/>
</x-input.group>
<x-input.group :for="md5('bitcoinEvent.show_worldwide')" :label="__('Show worldwide')">
<x-toggle lg autocomplete="off" wire:model.debounce="bitcoinEvent.show_worldwide"
:placeholder="__('Show worldwide')"/>
<p class="text-xs py-2 text-gray-200">{{ __('If checked, the event will be shown everywhere.') }}</p>
</x-input.group>
<x-input.group :for="md5('action')" :label="__('Action')">
<x-button primary wire:click="submit">
<i class="fa fa-thin fa-save"></i>
{{ __('Save') }}
</x-button>
</x-input.group>
</div>
</div>
</form>
</div>
<script src="https://cdn.jsdelivr.net/npm/easymde/dist/easymde.min.js"></script>
</div>

View File

@@ -1,34 +0,0 @@
<div class="bg-21gray flex flex-col h-screen justify-between">
{{-- HEADER --}}
<livewire:frontend.header :c="$country->code"/>
{{-- MAIN --}}
<section class="w-full mb-12">
<div class="max-w-screen-2xl mx-auto px-2 sm:px-10" id="table">
<div class="md:flex md:items-center md:justify-between">
<div class="min-w-0 flex-1">
<h2 class="text-2xl font-bold leading-7 text-white sm:truncate sm:text-3xl sm:tracking-tight">
{{ __('Bookcases') }}
</h2>
</div>
<div class="mt-4 flex md:mt-0 md:ml-4">
{{----}}
</div>
</div>
<livewire:tables.book-case-table :country="$country->code"/>
</div>
</section>
{{-- FOOTER --}}
<livewire:frontend.footer/>
<div wire:ignore class="z-50 hidden md:block">
<script
src="{{ asset('dist/einundzwanzig.chat.js') }}"
data-website-owner-pubkey="daf83d92768b5d0005373f83e30d4203c0b747c170449e02fea611a0da125ee6"
data-chat-type="GLOBAL"
data-chat-tags="#einundzwanzig_bookcases"
data-relays="wss://nostr.einundzwanzig.space,wss://nostr.easify.de,wss://nostr.mom,wss://relay.damus.io,wss://relay.snort.social"
></script>
<link rel="stylesheet" href="{{ asset('dist/einundzwanzig.chat.css') }}">
</div>
</div>

View File

@@ -1,23 +0,0 @@
<div class="bg-21gray flex flex-col h-screen justify-between">
{{-- HEADER --}}
<livewire:frontend.header :country="$country"/>
{{-- MAIN --}}
<section class="w-full mb-12">
<div class="max-w-screen-2xl mx-auto px-2 sm:px-10 space-y-4" id="table">
<div class="md:flex md:items-center md:justify-between">
<div class="min-w-0 flex-1">
<h2 class="text-2xl font-bold leading-7 text-white sm:truncate sm:text-3xl sm:tracking-tight">
{{ __('City search') }}
</h2>
</div>
<div class="mt-4 flex md:mt-0 md:ml-4">
{{----}}
</div>
</div>
<livewire:tables.city-table :country="$country->code" type="bookCase" :manage="$manage"/>
</div>
</section>
{{-- FOOTER --}}
<livewire:frontend.footer/>
</div>

View File

@@ -1,106 +0,0 @@
<div class="bg-21gray flex flex-col h-screen justify-between">
<livewire:frontend.header :country="$country"/>
{{-- MAIN --}}
<section class="w-full mb-12">
<div class="max-w-screen-2xl mx-auto px-2 sm:px-10">
<div class="flex">
<div class="flex items-center space-x-1">
<x-button
:href="route('bookCases.form', ['bookCase' => $bookCase->id, 'country' => $country])"
class="whitespace-nowrap" primary class="text-21gray whitespace-nowrap"
>
{{ __('💊 Orange Pill Now') }}
</x-button>
</div>
</div>
<div class="p-4">
<ul role="list"
class="mx-auto grid max-w-2xl grid-cols-2 gap-y-16 gap-x-8 text-center sm:grid-cols-3 md:grid-cols-4 lg:mx-0 lg:max-w-none lg:grid-cols-5 xl:grid-cols-6">
@foreach($bookCase->orangePills as $orangePill)
@if($orangePill->user_id === auth()->id())
<a href="{{ route('bookCases.form', ['country' => $country, 'bookCase' => $orangePill->bookCase, 'orangePill' => $orangePill]) }}"
wire:key="orange_pill_{{ $loop->index }}">
<li class="border border-amber-500 rounded">
<img class="mx-auto h-24 w-24 object-cover rounded"
src="{{ $orangePill->getFirstMediaUrl('images') }}" alt="image">
<h3 class="text-base font-semibold leading-7 tracking-tight text-gray-200">{{ $orangePill->user->name }}</h3>
<p class="text-sm leading-6 text-gray-300">{{ $orangePill->comment }}</p>
</li>
</a>
@else
<li>
<img class="mx-auto h-24 w-24 object-cover rounded"
src="{{ $orangePill->getFirstMediaUrl('images') }}" alt="">
<h3 class="text-base font-semibold leading-7 tracking-tight text-gray-200">{{ $orangePill->user->name }}</h3>
<p class="text-sm leading-6 text-gray-300">{{ $orangePill->comment }}</p>
<p class="text-sm leading-6 text-gray-300">{{ $orangePill->date->asDateTime() }}</p>
</li>
@endif
@endforeach
</ul>
</div>
<div class="grid grid-cols-1 gap-4 sm:grid-cols-2">
<div
class="relative flex items-center space-x-3 rounded-lg border border-gray-300 bg-white px-6 py-5 shadow-sm">
{{--<div class="flex-shrink-0">
<img class="h-10 w-10 rounded-full" src="https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="">
</div>--}}
<div class="min-w-0 flex-1">
<div class="focus:outline-none space-y-2">
<p class="text-sm font-medium text-gray-900">Name</p>
<p class="truncate text-sm text-gray-500">{{ $bookCase->title }}</p>
<p class="text-sm font-medium text-gray-900">Link</p>
<p class="text-sm text-gray-500">
<a target="_blank"
href="{{ $this->url_to_absolute($bookCase->homepage) }}">{{ $this->url_to_absolute($bookCase->homepage) }}</a>
</p>
<p class="text-sm font-medium text-gray-900">Adresse</p>
<p class="truncate text-sm text-gray-500">{{ $bookCase->address }}</p>
<p class="text-sm font-medium text-gray-900">Art</p>
<p class="truncate text-sm text-gray-500">{{ $bookCase->type }}</p>
<p class="text-sm font-medium text-gray-900">Geöffnet</p>
<p class="truncate text-sm text-gray-500">{{ $bookCase->open }}</p>
<p class="text-sm font-medium text-gray-900">Kontakt</p>
<p class="truncate text-sm text-gray-500">{{ $bookCase->contact }}</p>
<p class="text-sm font-medium text-gray-900">Information</p>
<p class="truncate text-sm text-gray-500">{{ $bookCase->comment }}</p>
</div>
</div>
</div>
<div class="rounded" wire:ignore>
@map([
'lat' => $bookCase->latitude,
'lng' => $bookCase->longitude,
'zoom' => 24,
'markers' => [
[
'title' => $bookCase->title,
'lat' => $bookCase->latitude,
'lng' => $bookCase->longitude,
'url' => 'https://gonoware.com',
'icon' => asset('img/btc-logo-6219386_1280.png'),
'icon_size' => [42, 42],
],
],
])
</div>
</div>
<div class="my-4">
<livewire:comments :model="$bookCase" newest-first hide-notification-options/>
</div>
</div>
</section>
{{-- FOOTER --}}
<livewire:frontend.footer/>
</div>

View File

@@ -1,89 +0,0 @@
<div>
{{-- HEADER --}}
<livewire:frontend.header :country="null"/>
<div class="container p-4 mx-auto bg-21gray my-2">
<div class="pb-5 flex flex-row justify-between">
<h3 class="text-lg font-medium leading-6 text-gray-200">{{ __('Book Case') }}: {{ $bookCase->title }}</h3>
<div class="flex flex-row space-x-2 items-center">
<div>
@if($orangePill->id)
<x-button negative wire:click="deleteMe">
<i class="fa fa-thin fa-trash"></i>
{{ __('Delete') }}
</x-button>
@endif
</div>
<div>
<x-button :href="$fromUrl">
<i class="fa fa-thin fa-arrow-left"></i>
{{ __('Back') }}
</x-button>
</div>
</div>
</div>
<form class="space-y-8 divide-y divide-gray-700 pb-24">
<div class="space-y-8 divide-y divide-gray-700 sm:space-y-5">
<div class="mt-6 sm:mt-5 space-y-6 sm:space-y-5">
<x-input.group :for="md5('image')" :label="__('Main picture')">
<div class="py-4">
@if ($image && str($image->getMimeType())->contains(['image/jpeg','image/jpg', 'image/png', 'image/gif', 'image/svg+xml', 'image/webp']))
<div class="text-gray-200">{{ __('Preview') }}:</div>
<img class="h-48 object-contain" src="{{ $image->temporaryUrl() }}">
@endif
@if ($orangePill->getFirstMediaUrl('images'))
<div class="text-gray-200">{{ __('Current picture') }}:</div>
<img class="h-48 object-contain" src="{{ $orangePill->getFirstMediaUrl('images') }}">
@endif
</div>
<input class="text-gray-200" type="file" wire:model="image">
@error('image') <span class="text-red-500">{{ $message }}</span> @enderror
</x-input.group>
@if($image && str($image->getMimeType())->contains(['image/jpeg','image/jpg', 'image/png', 'image/gif', 'image/svg+xml', 'image/webp']))
<x-input.group :for="md5('orangePill.amount')" :label="__('Amount')">
<x-input
min="1"
type="number"
wire:model.debounce="orangePill.amount"
label="{{ __('Number of books') }}"
placeholder="{{ __('Number of books') }}"
corner-hint="{{ __('How many bitcoin books have you put in?') }}"
/>
</x-input.group>
<x-input.group :for="md5('orangePill.date')" :label="__('Date')">
<x-datetime-picker
label="{{ __('Date') }}"
placeholder="{{ __('Date') }}"
wire:model.defer="orangePill.date"
timezone="UTC"
user-timezone="{{ config('app.user-timezone') }}"
corner-hint="{{ __('When did you put bitcoin books in?') }}"
without-time
display-format="DD.MM.YYYY"
/>
</x-input.group>
<x-input.group :for="md5('orangePill.comment')" :label="__('Comment')">
<x-textarea wire:model.defer="orangePill.comment" label="{{ __('Comment') }}"
placeholder="{{ __('Comment') }}"
corner-hint="{{ __('For example, what books you put in.') }}"/>
</x-input.group>
<x-input.group :for="md5('orangePill.save')" label="">
<x-button primary wire:click="save">
<i class="fa fa-thin fa-save"></i>
{{ __('Save') }}
</x-button>
</x-input.group>
@endif
</div>
</div>
</form>
</div>
</div>

View File

@@ -1,80 +0,0 @@
<div
id="matrix"
class="h-screen justify-between relative">
{{-- HEADER --}}
<livewire:frontend.header :country="$country" bgColor="bg-transparent"/>
{{-- MAIN --}}
<section class="w-full mb-12">
<div class="max-w-screen-2xl mx-auto px-2 sm:px-10">
<livewire:book-case.stats/>
<h1 class="text-xl font-bold py-4 text-gray-200">
{{ __('Orange Pill Heatmap') }}
</h1>
<div
x-data="{
data: @js($heatmap_data),
init() {
var testData = {
max: 8,
data: this.data,
};
var baseLayer = L.tileLayer(
'https://stamen-tiles-{s}.a.ssl.fastly.net/toner/{z}/{x}/{y}.png',{
attribution: 'Map tiles by <a href=\'http://stamen.com\'>Stamen Design</a>, <a href=\'http://creativecommons.org/licenses/by/3.0\'>CC BY 3.0</a> &mdash; Map data &copy; <a href=\'http://www.openstreetmap.org/copyright\'>OpenStreetMap</a>',
maxZoom: 8
}
);
var cfg = {
'radius': 25,
'maxOpacity': .6,
// scales the radius based on map zoom
'scaleRadius': false,
// if set to false the heatmap uses the global maximum for colorization
// if activated: uses the data maximum within the current map boundaries
// (there will always be a red spot with useLocalExtremas true)
'useLocalExtrema': true,
// which field name in your data represents the latitude - default 'lat'
latField: 'lat',
// which field name in your data represents the longitude - default 'lng'
lngField: 'lng',
// which field name in your data represents the data value - default 'value'
valueField: 'count'
};
var heatmapLayer = new HeatmapOverlay(cfg);
var map = new L.Map($refs.map, {
center: new L.LatLng(51.1642,10.4541194),
zoom: 6,
maxZoom: 8,
layers: [baseLayer, heatmapLayer]
});
heatmapLayer.setData(testData);
}
}"
>
<div x-ref="map" style="height: 70vh;"></div>
</div>
</div>
</section>
{{-- FOOTER --}}
<livewire:frontend.footer/>
<div wire:ignore class="z-50 hidden md:block">
<script
src="{{ asset('dist/einundzwanzig.chat.js') }}"
data-website-owner-pubkey="daf83d92768b5d0005373f83e30d4203c0b747c170449e02fea611a0da125ee6"
data-chat-type="GLOBAL"
data-chat-tags="#einundzwanzig_bookcases"
data-relays="wss://nostr.einundzwanzig.space,wss://nostr.easify.de,wss://nostr.mom,wss://relay.damus.io,wss://relay.snort.social"
></script>
<link rel="stylesheet" href="{{ asset('dist/einundzwanzig.chat.css') }}">
</div>
</div>

View File

@@ -1,174 +0,0 @@
<div class="bg-21gray flex flex-col h-screen justify-between">
{{-- HEADER --}}
<livewire:frontend.header :country="$country"/>
{{-- MAIN --}}
<section class="w-full mb-12">
<div class="max-w-screen-2xl mx-auto px-2 sm:px-10 space-y-4" id="table">
<livewire:book-case.stats/>
<div class="md:flex md:items-center md:justify-between">
<div class="min-w-0 flex-1">
<h2 class="text-2xl font-bold leading-7 text-white sm:truncate sm:text-3xl sm:tracking-tight">
{{ __('Highscore Table') }}
</h2>
</div>
</div>
<ul role="list" class="grid grid-cols-1 gap-6 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4">
@foreach($plebs as $pleb)
<li x-data="{show: false}"
wire:key="pleb_{{ $pleb->id }}"
class="cursor-pointer col-span-1 flex flex-col rounded-lg bg-amber-500 text-center shadow-2xl">
<div>
<div class="-mt-px flex ">
<div class="flex w-0 flex-1">
@if($pleb->lightning_address || $pleb->lnurl || $pleb->node_id)
<div x-on:click="show = !show"
x-transition:enter="transition ease-out duration-300"
x-transition:enter-start="opacity-0"
x-transition:enter-end="opacity-100"
x-transition:leave="transition ease-in duration-300"
x-transition:leave-start="opacity-100"
x-transition:leave-end="opacity-0 scale-90"
class="relative -mr-px inline-flex w-0 flex-1 items-center justify-center rounded-bl-lg border border-transparent py-4 text-xl font-bold text-gray-800 hover:text-gray-900">
<i class="fa-thin fa-bolt-lightning"></i>
<span class="ml-3" x-text="show ? 'Schließen' : 'Donate'"></span>
</div>
@else
<a href="{{ route('profile.show') }}"
class="relative -mr-px inline-flex w-0 flex-1 items-center justify-center rounded-bl-lg border border-transparent py-4 text-xl font-bold text-gray-800 hover:text-gray-900">
<i class="fa-thin fa-bolt-slash"></i>
<span class="ml-3">{{ __('Missing lightning address') }}</span>
</a>
@endif
</div>
</div>
@php
$address = match(true) {
$pleb->lightning_address !== '' => $pleb->lightning_address,
$pleb->lnurl !== '' => $pleb->lnurl,
$pleb->node_id !== '' => $pleb->node_id,
default => null,
};
@endphp
<div x-show="show">
@if($address)
<div wire:ignore>
<lightning-widget
name="{{ $pleb->name }}"
accent="#f7931a"
to="{{ $address }}"
image="{{ $pleb->profile_photo_url }}"
amounts="21,210,2100,21000"
/>
</div>
@endif
</div>
</div>
<div class="flex flex-1 flex-col p-8" x-show="!show"
wire:click="openModal({{ $pleb->id }})">
<img class="mx-auto h-32 w-32 object-cover flex-shrink-0 rounded-full"
src="{{ $pleb->profile_photo_url }}" alt="{{ $pleb->name }}">
<h3 class="mt-6 text-sm font-medium text-gray-900 truncate">{{ $pleb->name }}</h3>
<dl class="mt-1 flex flex-grow flex-col justify-between">
<dd class="text-sm text-gray-800">{{ $pleb->orange_pills_count }} {{ __('Bookcases') }} {{ __('Orange pilled') }}</dd>
<dd class="mt-3">
<span class="rounded-full bg-21gray px-2 py-1 text-xs font-medium text-gray-200">{{ __('Points') }}: {{ $pleb->getPoints() }}</span>
</dd>
</dl>
</div>
</li>
@endforeach
<script src="https://embed.twentyuno.net/js/app.js"></script>
</ul>
<style>
.card {
border-radius: 0px !important;
}
</style>
<x-jet-dialog-modal wire:model="viewingModal" maxWidth="screen" bg="bg-21gray">
<x-slot name="title">
@if($modal)
<div class="text-gray-200">
{{ $modal->name }}
</div>
@endif
</x-slot>
<x-slot name="content">
@if($modal)
<div class="space-y-4 mt-16 flex flex-col justify-center min-h-[600px]">
<div class="bg-amber-800 p-4 rounded">
<div class="mt-6 flow-root">
<ul role="list" class="-my-5 divide-y divide-gray-200">
<li class="py-5">
<div class="relative focus-within:ring-2 focus-within:ring-indigo-500">
<h3 class="text-sm font-semibold text-gray-200">
<div class="">
<!-- Extend touch target to entire panel -->
<span class="absolute inset-0" aria-hidden="true"></span>
{{ $modal->name }} {{ __('has') }} {{ $modal->reputations->where('name', 'LoggedIn')->sum('point') }} {{ __('logins') }}
</div>
</h3>
<p class="mt-1 text-sm text-gray-200 line-clamp-2">{{ __('You get a point when you log in.') }}</p>
</div>
</li>
</ul>
</div>
</div>
<ul role="list"
class="grid grid-cols-2 gap-x-4 gap-y-8 sm:grid-cols-3 sm:gap-x-6 lg:grid-cols-4 xl:gap-x-8">
@foreach($modal->orangePills as $orangePill)
<li class="relative">
<a target="_blank"
href="{{ route('bookCases.comment.bookcase', ['country' => $country, 'bookCase' => $orangePill->bookCase]) }}">
<div
class="group aspect-w-10 aspect-h-10 block w-full overflow-hidden rounded-lg bg-gray-100 focus-within:ring-2 focus-within:ring-indigo-500 focus-within:ring-offset-2 focus-within:ring-offset-gray-100">
<img
src="{{ $orangePill->getFirstMediaUrl('images') ? $orangePill->getFirstMediaUrl('images', 'preview') : ($orangePill->bookCase->getFirstMediaUrl('images') ? $orangePill->bookCase->getFirstMediaUrl('images', 'preview') : asset('img/empty_book_case.webp')) }}"
alt="book_case"
class="pointer-events-none object-cover group-hover:opacity-75">
</div>
<p class="pointer-events-none mt-2 block truncate text-sm font-medium text-gray-200">
210 {{ __('points') }}</p>
<p class="pointer-events-none block text-sm font-medium text-gray-200">{{ $orangePill->date->asDate() }}</p>
<p class="pointer-events-none block text-sm font-medium text-gray-200">{{ $orangePill->bookCase->title }}</p>
<p class="pointer-events-none block text-sm font-medium text-gray-200">{{ $orangePill->bookCase->address }}</p>
</a>
</li>
@endforeach
</ul>
</div>
@endif
</x-slot>
<x-slot name="footer">
<x-jet-secondary-button wire:click="resetModal" wire:loading.attr="disabled">
@lang('Close')
</x-jet-secondary-button>
</x-slot>
</x-jet-dialog-modal>
</div>
</section>
{{-- FOOTER --}}
<livewire:frontend.footer/>
<div wire:ignore class="z-50 hidden md:block">
<script
src="{{ asset('dist/einundzwanzig.chat.js') }}"
data-website-owner-pubkey="daf83d92768b5d0005373f83e30d4203c0b747c170449e02fea611a0da125ee6"
data-chat-type="GLOBAL"
data-chat-tags="#einundzwanzig_bookcases"
data-relays="wss://nostr.einundzwanzig.space,wss://nostr.easify.de,wss://nostr.mom,wss://relay.damus.io,wss://relay.snort.social"
></script>
<link rel="stylesheet" href="{{ asset('dist/einundzwanzig.chat.css') }}">
</div>
</div>

View File

@@ -1,23 +0,0 @@
<div class="bg-gray-900 py-12 sm:py-24">
<div class="mx-auto max-w-7xl px-6 lg:px-8">
<dl class="grid grid-cols-1 gap-x-8 gap-y-16 text-center lg:grid-cols-2">
<div class="mx-auto flex max-w-xs flex-col gap-y-4">
<dt class="text-base leading-7 text-gray-400">
{{ __('Book cases orange pilled') }}
</dt>
<dd class="order-first text-3xl font-semibold tracking-tight text-white sm:text-5xl">
{{ number_format($orangePills, 0, ',', '.') }}
</dd>
</div>
<div class="mx-auto flex max-w-xs flex-col gap-y-4">
<dt class="text-base leading-7 text-gray-400">
{{ __('Number of plebs') }}
</dt>
<dd class="order-first text-3xl font-semibold tracking-tight text-white sm:text-5xl">
{{ number_format($plebs, 0, ',', '.') }}
</dd>
</div>
</dl>
</div>
</div>

View File

@@ -1,67 +0,0 @@
<div
id="matrix"
class="h-screen justify-between relative">
{{-- HEADER --}}
<livewire:frontend.header :country="$country" bgColor="bg-transparent"/>
{{-- MAIN --}}
<section class="w-full mb-12">
<div class="max-w-screen-2xl mx-auto px-2 sm:px-10">
<livewire:book-case.stats/>
<h1 class="text-xl font-bold py-4 text-gray-200">
{{ __('World Map') }}
</h1>
<div
x-data="{
data: @js($mapData),
init() {
var baseLayer = L.tileLayer(
'https://{s}.tile.openstreetmap.de/{z}/{x}/{y}.png',{
attribution: '&copy; <a href=\'https://www.openstreetmap.org/copyright\'>OpenStreetMap</a> contributors',
}
);
var map = new L.Map($refs.map, {
preferCanvas: true,
center: new L.LatLng(51.1642,10.4541194),
zoom: 6,
layers: [baseLayer]
});
this.data.forEach(element => {
if(element.op > 0) {
const marker = L.circleMarker([element.lat, element.lng], {color: '#f7931a', radius: 8});
marker.url = element.url;
marker.addTo(map).on('click', e => window.open(e.target.url, '_self'));
} else {
const marker = L.circleMarker([element.lat, element.lng], {color: '#111827', radius: 8});
marker.url = element.url;
marker.addTo(map).on('click', e => window.open(e.target.url, '_self'));
}
});
}
}"
>
<div x-ref="map" style="height: 70vh;"></div>
</div>
</div>
</section>
{{-- FOOTER --}}
<livewire:frontend.footer/>
<div wire:ignore class="z-50 hidden md:block">
<script
src="{{ asset('dist/einundzwanzig.chat.js') }}"
data-website-owner-pubkey="daf83d92768b5d0005373f83e30d4203c0b747c170449e02fea611a0da125ee6"
data-chat-type="GLOBAL"
data-chat-tags="#einundzwanzig_bookcases"
data-relays="wss://nostr.einundzwanzig.space,wss://nostr.easify.de,wss://nostr.mom,wss://relay.damus.io,wss://relay.snort.social"
></script>
<link rel="stylesheet" href="{{ asset('dist/einundzwanzig.chat.css') }}">
</div>
</div>

View File

@@ -1,129 +0,0 @@
<div x-cloak x-data="{ open: @entangle('open') }" x-show="open" class="relative z-50"
aria-labelledby="slide-over-title" x-ref="dialog" aria-modal="true">
<div class="fixed inset-0 overflow-hidden backdrop-blur-sm">
<div class="absolute inset-0 overflow-hidden">
<div class="pointer-events-none fixed inset-y-0 right-0 flex max-w-full pl-10">
<div x-show="open" x-transition:enter="transform transition ease-in-out duration-500 sm:duration-700"
x-transition:enter-start="translate-x-full" x-transition:enter-end="translate-x-0"
x-transition:leave="transform transition ease-in-out duration-500 sm:duration-700"
x-transition:leave-start="translate-x-0" x-transition:leave-end="translate-x-full"
class="pointer-events-auto w-screen max-w-md"
x-description="Slide-over panel, show/hide based on slide-over state."
x-trap.noscroll="open"
>
<div class="flex h-full flex-col overflow-y-scroll bg-white shadow-xl">
<div class="bg-amber-700 py-6 px-4 sm:px-6">
<div class="flex items-center justify-between">
<h2 class="text-lg font-medium text-gray-900" id="slide-over-title">{{ __('PlebChat') }}</h2>
<div class="ml-3 flex h-7 items-center">
<button type="button"
class="rounded-md bg-amber-700 text-amber-200 hover:text-white focus:outline-none focus:ring-2 focus:ring-white"
@click="open = false">
<span class="sr-only">{{ __('Close panel') }}</span>
<svg class="h-6 w-6" x-description="Heroicon name: outline/x-mark"
xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
stroke-width="1.5" stroke="currentColor" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round"
d="M6 18L18 6M6 6l12 12"></path>
</svg>
</button>
</div>
</div>
<div class="mt-1">
<p class="text-sm text-gray-900">
{{ __('This chat is limited by 21 messages.') }}
</p>
</div>
</div>
<div class="relative flex-1">
<!-- Replace with your content -->
<div class="absolute inset-0">
<div class="flex antialiased text-gray-800 h-full">
<div class="flex flex-row w-full overflow-x-hidden">
<div class="flex flex-col flex-auto">
<div
class="flex flex-col h-full flex-auto flex-shrink-0 bg-21gray p-4"
>
<div
x-data="{ scroll: () => { $el.scrollTo(0, $el.scrollHeight); }}"
@chat-updated.window="scroll()"
x-intersect="scroll()"
class="flex flex-col overflow-x-auto mb-4">
<div class="flex flex-col">
<div class="grid grid-cols-12 gap-y-2">
@php
$myMessageClass = 'col-start-1 col-end-8 p-3 rounded-lg';
$otherMessageClass = 'col-start-6 col-end-13 p-3 rounded-lg';
@endphp
@foreach($messages as $message)
<div class="{{ auth()->id() === $message['fromId'] ? $myMessageClass : $otherMessageClass }}">
<div class="flex flex-row items-center">
<div
class="flex items-center justify-center h-10 w-10 rounded-full flex-shrink-0"
>
<img class="object-cover rounded" src="{{ $message['userImg'] }}" alt="{{ $message['fromName'] }}">
</div>
<div
class="relative ml-3 text-sm bg-white py-2 px-4 shadow rounded-xl"
>
<div>
<p>
{{ $message['message'] }}
</p>
<p class="text-xs text-gray-400 italic">
{{ $message['time'] }}
</p>
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
<div
class="flex flex-row items-center h-16 rounded-xl bg-white w-full px-4"
>
<div class="flex-grow ml-4">
<form wire:submit.prevent="sendMessage">
<div class="relative w-full">
<input
wire:model.defer="myNewMessage"
type="text"
class="flex w-full border rounded-xl focus:outline-none focus:border-amber-300 pl-4 h-10"
/>
@error('myNewMessage')<p
class="text-red-500 text-xs">{{ $message }}</p>@enderror
</div>
</form>
</div>
<div class="ml-4">
<button
wire:click="sendMessage"
class="flex items-center justify-center bg-amber-500 hover:bg-amber-600 rounded-xl text-white px-4 py-1 flex-shrink-0"
>
<span>{{ __('Send') }}</span>
<span class="ml-2">
<i class="fa-thin fa-envelope w-4 h-4 transform rotate-45 -mt-px"></i>
</span>
</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- /End replace -->
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@@ -1,70 +0,0 @@
<div>
{{-- HEADER --}}
<livewire:frontend.header :country="null"/>
<div class="container p-4 mx-auto bg-21gray my-2">
<div class="pb-5 flex flex-row justify-between">
<h3 class="text-lg font-medium leading-6 text-gray-200">{{ __('City') }}</h3>
<div class="flex flex-row space-x-2 items-center">
<div>
<x-button :href="$fromUrl">
<i class="fa fa-thin fa-arrow-left"></i>
{{ __('Back') }}
</x-button>
</div>
</div>
</div>
<form class="space-y-8 divide-y divide-gray-700 pb-24">
<div class="space-y-8 divide-y divide-gray-700 sm:space-y-5">
<div class="mt-6 sm:mt-5 space-y-6 sm:space-y-5">
<x-input.group :for="md5('city.country_id')" :label="__('Country')">
<x-select
:clearable="false"
wire:model="city.country_id"
:searchable="true"
:async-data="[
'api' => route('api.countries.index'),
'method' => 'GET', // default is GET
]"
:template="[
'name' => 'user-option',
'config' => ['src' => 'flag']
]"
option-label="name"
option-value="id"
/>
</x-input.group>
<x-input.group :for="md5('city.name')" :label="__('Name')">
<x-input autocomplete="off" wire:model.debounce="city.name"
:placeholder="__('Name')"/>
</x-input.group>
<x-input.group :for="md5('city.latitude')" :label="__('Latitude')">
<x-input autocomplete="off" wire:model.debounce="city.latitude"
:placeholder="__('Latitude')"/>
<div class="text-amber-500 text-xs py-2"><a target="_blank" href="https://www.latlong.net/">https://www.latlong.net/</a>
</div>
</x-input.group>
<x-input.group :for="md5('city.longitude')" :label="__('Longitude')">
<x-input autocomplete="off" wire:model.debounce="city.longitude"
:placeholder="__('Longitude')"/>
<div class="text-amber-500 text-xs py-2"><a target="_blank" href="https://www.latlong.net/">https://www.latlong.net/</a>
</div>
</x-input.group>
<x-input.group :for="md5('meetupEvent.link')" label="">
<x-button primary wire:click="save">
<i class="fa fa-thin fa-save"></i>
{{ __('Save') }}
</x-button>
</x-input.group>
</div>
</div>
</form>
</div>
</div>

View File

@@ -1,105 +0,0 @@
<div>
{{-- HEADER --}}
<livewire:frontend.header :country="null"/>
<div class="container p-4 mx-auto bg-21gray my-2">
<div class="pb-5 flex flex-row justify-between">
<h3 class="text-lg font-medium leading-6 text-gray-200">{{ __('Lecturer/Content Creator') }}</h3>
<div class="flex flex-row space-x-2 items-center">
<div>
<x-button :href="$fromUrl">
<i class="fa fa-thin fa-arrow-left"></i>
{{ __('Back') }}
</x-button>
</div>
</div>
</div>
<form class="space-y-8 divide-y divide-gray-700 pb-24">
<div class="space-y-8 divide-y divide-gray-700 sm:space-y-5">
<div class="mt-6 sm:mt-5 space-y-6 sm:space-y-5">
<x-input.group :for=" md5('image')" :label="__('Avatar/Picture')">
<div class="py-4">
@if ($image && str($image->getMimeType())->contains(['image/jpeg','image/jpg', 'image/png', 'image/gif', 'image/svg+xml', 'image/webp']))
<div class="text-gray-200">{{ __('Preview') }}:</div>
<img class="h-48 object-contain" src="{{ $image->temporaryUrl() }}">
@endif
@if ($lecturer->getFirstMediaUrl('avatar'))
<div class="text-gray-200">{{ __('Current picture') }}:</div>
<img class="h-48 object-contain" src="{{ $lecturer->getFirstMediaUrl('avatar') }}">
@endif
</div>
<input class="text-gray-200" type="file" wire:model="image">
@error('image') <span class="text-red-500">{{ $message }}</span> @enderror
</x-input.group>
<x-input.group :for="md5('lecturer.name')" :label="__('Name')">
<x-input autocomplete="off" wire:model.debounce="lecturer.name"
:placeholder="__('Name')"/>
</x-input.group>
<x-input.group :for="md5('lecturer.subtitle')" :label="__('Subtitle')">
<x-input autocomplete="off" wire:model.debounce="lecturer.subtitle"
:placeholder="__('Subtitle')" :hint="__('This is the subtitle on the landing page.')"/>
</x-input.group>
<x-input.group :for="md5('lecturer.intro')" :label="__('Intro')">
<div
class="text-amber-500 text-xs py-2">{{ __('For images in Markdown, please use eg. Imgur or another provider.') }}</div>
<x-input.simple-mde wire:model.defer="lecturer.intro"/>
@error('lecturer.intro') <span class="text-red-500 py-2">{{ $message }}</span> @enderror
<span
class="text-gray-400 text-xs py-2">{{ __('This is the introduction text that is shown on the landing page.') }}</span>
</x-input.group>
<x-input.group :for="md5('lecturer.nostr')" :label="__('Nostr public key')">
<x-input autocomplete="off" wire:model.debounce="lecturer.nostr"
:placeholder="__('Nostr public key')" :hint="__('starts with npub...')"/>
</x-input.group>
<x-input.group :for="md5('lecturer.twitter_username')" :label="__('Twitter Username')">
<x-input autocomplete="off" wire:model.debounce="lecturer.twitter_username"
:placeholder="__('Twitter Username')" :hint="__('Without @')"/>
</x-input.group>
<x-input.group :for="md5('lecturer.website')" :label="__('Website')">
<x-input autocomplete="off" wire:model.debounce="lecturer.website"
:placeholder="__('Website')"/>
</x-input.group>
<x-input.group :for="md5('lecturer.paynym')" :label="__('PayNym')">
<x-input autocomplete="off" wire:model.debounce="lecturer.paynym"
:placeholder="__('PayNym')" :hint="__('starts with PM...')"/>
</x-input.group>
<x-input.group :for="md5('lecturer.lightning_address')" :label="__('Lightning Address')">
<x-input autocomplete="off" wire:model.debounce="lecturer.lightning_address"
:placeholder="__('Lightning Address')" :hint="__('for example xy@getalby.com')"/>
</x-input.group>
<x-input.group :for="md5('lecturer.lnurl')" :label="__('LNURL')">
<x-input autocomplete="off" wire:model.debounce="lecturer.lnurl"
:placeholder="__('LNURL')" :hint="__('starts with: lnurl1dp68gurn8gh....')"/>
</x-input.group>
<x-input.group :for="md5('lecturer.node_id')" :label="__('Node Id')">
<x-input autocomplete="off" wire:model.debounce="lecturer.node_id"
:placeholder="__('Node Id')"/>
</x-input.group>
<x-input.group :for="md5('meetupEvent.link')" label="">
<x-button primary wire:click="save">
<i class="fa fa-thin fa-save"></i>
{{ __('Save') }}
</x-button>
</x-input.group>
</div>
</div>
</form>
</div>
<script src="https://cdn.jsdelivr.net/npm/easymde/dist/easymde.min.js"></script>
</div>

View File

@@ -1,57 +0,0 @@
<div class="py-6 bg-gray-900 w-full">
<div class="px-10 mx-auto max-w-7xl">
<div class="flex flex-col items-center md:flex-row md:justify-between">
<a href="/">
<img src="{{ asset('img/einundzwanzig-horizontal-inverted.svg') }}"
class="text-white fill-current" alt="">
</a>
<div class="flex flex-row justify-center mb-4 -ml-4 -mr-4">
<a
target="_blank"
href="https://einundzwanzig.space/kontakt/"
class="p-4 text-gray-700 hover:text-gray-400">
Kontakt
</a>
<a
target="_blank" href="https://einundzwanzig.space/datenschutz/"
class="p-4 text-gray-700 hover:text-gray-400">
Datenschutz
</a>
<a href="#" class="p-4 text-gray-700 hover:text-gray-400">
</a>
</div>
</div>
<div class="flex flex-col space-y-6 sm:space-y-0 justify-between text-center md:flex-row">
<p class="order-last text-sm leading-tight text-gray-500 md:order-first">
{{ __('Built with ❤️ by our team.') }}
</p>
<ul class="flex flex-col space-y-2 sm:space-y-0 sm:flex-row justify-center pb-3 -ml-4 -mr-4 text-sm">
<li>
<a href="https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal" target="_blank"
class="px-4 text-gray-500 hover:text-white">
<i class="fa fab fa-github mr-1"></i>
{{ __('Github') }}
</a>
</li>
<li>
<a href="https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal/discussions" target="_blank"
class="px-4 text-gray-500 hover:text-white">
<i class="fa fa-thin fa-thought-bubble mr-1"></i>
{{ __('Wish List/Feedback') }}
</a>
</li>
<li>
<a href="/languages/{{ $language->language }}/translations" target="_blank"
class="px-4 text-gray-500 hover:text-white">
<i class="fa fa-thin fa-language mr-1"></i>
{{ __('Translate (:lang :percent%)', ['lang' => $language->name ? $language->name : $language->language, 'percent' => $percentTranslated]) }}
</a>
</li>
{{-- <li><a href="#_" class="px-4 text-gray-500 hover:text-white">FAQ's</a></li>--}}
{{-- <li><a href="#_" class="px-4 text-gray-500 hover:text-white">Terms</a></li>--}}
</ul>
</div>
</div>
</div>

View File

@@ -1,112 +0,0 @@
<header x-data="{ open: false }" @keydown.window.escape="open = false" class="relative isolate z-10 bg-white mb-4">
<nav class="mx-auto flex items-center justify-between p-6 lg:px-8" aria-label="Global">
<div class="flex lg:flex-1">
<a href="/" class="-m-1.5 p-1.5">
<span class="sr-only">Einundzwanzig Portal</span>
<img class="h-2 sm:h-4 w-auto" src="{{ asset('img/einundzwanzig-horizontal.svg') }}" alt="Logo">
</a>
</div>
<div class="flex lg:hidden">
<button type="button" class="-m-2.5 inline-flex items-center justify-center rounded-md p-2.5 text-gray-700"
@click="open = true">
<span class="sr-only">Open main menu</span>
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round"
d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path>
</svg>
</button>
</div>
<div class="hidden lg:flex lg:gap-x-8" x-data="Components.popoverGroup()" x-init="init()">
@include('livewire.frontend.navigation.news')
@include('livewire.frontend.navigation.meetups')
@include('livewire.frontend.navigation.courses')
@include('livewire.frontend.navigation.library')
@include('livewire.frontend.navigation.events')
@include('livewire.frontend.navigation.bookcases')
@include('livewire.frontend.navigation.association')
@auth
@include('livewire.frontend.navigation.profile')
@endauth
@include('livewire.frontend.navigation.settings')
</div>
<div class="hidden lg:flex lg:flex-1 lg:justify-end">
@if(!auth()->check())
<a href="{{ route('auth.login') }}" class="text-sm font-semibold leading-6 text-gray-900">Log in <span
aria-hidden="true"></span></a>
@else
<form method="POST" action="{{ route('logout') }}" class="inline">
@csrf
<button secondary type="submit"
class="-mx-3 block rounded-lg py-2.5 px-3 text-base font-semibold leading-7 text-gray-900 hover:bg-gray-50">
<i class="fa-thin fa-sign-out"></i>
{{ __('Logout') }}
</button>
</form>
@endif
</div>
</nav>
<div x-description="Mobile menu, show/hide based on menu open state." class="lg:hidden" x-ref="dialog" x-show="open"
aria-modal="true" style="display: none;" x-cloak>
<div x-description="Background backdrop, show/hide based on slide-over state." class="fixed inset-0 z-10"></div>
<div
class="fixed inset-y-0 right-0 z-10 w-full overflow-y-auto bg-white px-6 py-6 sm:max-w-sm sm:ring-1 sm:ring-gray-900/10"
@click.away="open = false">
<div class="flex items-center justify-between">
<a href="#" class="-m-1.5 p-1.5">
<span class="sr-only">Einundzwanzig Portal</span>
<img class="h-2 sm:h-4 w-auto" src="{{ asset('img/einundzwanzig-horizontal.svg') }}" alt="Logo">
</a>
<button type="button" class="-m-2.5 rounded-md p-2.5 text-gray-700" @click="open = false">
<span class="sr-only">Close menu</span>
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"
aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path>
</svg>
</button>
</div>
<div class="mt-6 flow-root">
<div class="-my-6 divide-y divide-gray-500/10">
<div class="space-y-2 py-6">
@include('livewire.frontend.navigation_mobile.news')
@include('livewire.frontend.navigation_mobile.meetups')
@include('livewire.frontend.navigation_mobile.events')
@include('livewire.frontend.navigation_mobile.courses')
@include('livewire.frontend.navigation_mobile.library')
@include('livewire.frontend.navigation_mobile.bookcases')
@include('livewire.frontend.navigation_mobile.association')
@include('livewire.frontend.navigation_mobile.profile')
</div>
<div class="py-6">
@if(!auth()->check())
<a href="{{ route('auth.login') }}"
class="-mx-3 block rounded-lg py-2.5 px-3 text-base font-semibold leading-7 text-gray-900 hover:bg-gray-50">
Log in</a>
@else
<form method="POST" action="{{ route('logout') }}" class="inline">
@csrf
<button secondary type="submit"
class="-mx-3 block rounded-lg py-2.5 px-3 text-base font-semibold leading-7 text-gray-900 hover:bg-gray-50">
<i class="fa-thin fa-sign-out"></i>
{{ __('Logout') }}
</button>
</form>
@endif
</div>
</div>
</div>
</div>
</div>
</header>

View File

@@ -1,92 +0,0 @@
<div x-data="Components.popover({ open: false, focus: false })" x-init="init()" @keydown.escape="onEscape"
@close-popover-group.window="onClosePopoverGroup">
<button type="button" class="flex items-center gap-x-1 text-sm font-semibold leading-6 text-gray-900"
@click="toggle" @mousedown="if (open) $event.preventDefault()" aria-expanded="true"
:aria-expanded="open.toString()">
{{ __('Association') }}
<svg class="h-5 w-5 flex-none text-gray-400" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div x-show="open" x-transition:enter="transition ease-out duration-200"
x-transition:enter-start="opacity-0 -translate-y-1"
x-transition:enter-end="opacity-100 translate-y-0"
x-transition:leave="transition ease-in duration-150"
x-transition:leave-start="opacity-100 translate-y-0"
x-transition:leave-end="opacity-0 -translate-y-1"
x-description="'Product' flyout menu, show/hide based on flyout menu state."
class="absolute inset-x-0 top-0 -z-10 bg-white pt-16 shadow-lg ring-1 ring-gray-900/5"
x-ref="panel" @click.away="open = false" x-cloak>
<div class="mx-auto grid max-w-7xl grid-cols-1 gap-y-10 gap-x-8 py-10 px-6 lg:grid-cols-2 lg:px-8">
<div class="grid grid-cols-2 gap-x-6 sm:gap-x-8">
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">{{ __('Association') }}</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('project.table.projectFunding', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-rectangle-history flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Submitted projects') }}
</a>
</div>
</div>
</div>
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">{{ __('Manage') }}</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('project.projectProposal.form', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-plus flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Submit project for funding') }}
</a>
</div>
</div>
</div>
</div>
<div class="grid grid-cols-1 gap-10 sm:gap-8 lg:grid-cols-2">
<h3 class="sr-only">Recent posts</h3>
@foreach($projectProposals as $item)
<article
class="relative isolate flex max-w-2xl flex-col gap-x-8 gap-y-6 sm:flex-row sm:items-start lg:flex-col lg:items-stretch">
<div class="relative flex-none">
<img
class="aspect-[2/1] w-full rounded-lg bg-gray-100 object-cover sm:aspect-[16/9] sm:h-32 lg:h-auto"
src="{{ $item->getFirstMediaUrl('main') }}"
alt="">
<div
class="absolute inset-0 rounded-lg ring-1 ring-inset ring-gray-900/10"></div>
</div>
<div>
<div class="flex items-center gap-x-4">
<div class="font-bold">{{ __('This project requires') }} </div><div
class="font-bold text-amber-500">{{ number_format($item->support_in_sats, 0, ',', '.') }} {{ __('sats') }}</div>
</div>
<h4 class="mt-2 text-sm font-semibold leading-6 text-gray-900">
<a href="{{ route('voting.projectFunding', ['projectProposal' => $item]) }}">
<span class="absolute inset-0"></span>
{{ $item->name }}
</a>
</h4>
<p class="mt-2 text-sm leading-6 text-gray-600 truncate">
{{ __('Yes') }}: {{ $item->votes->where('value', 1)->count() }} / {{ __('No') }}: {{ $item->votes->where('value', 0)->count() }}
</p>
<p class="mt-2 text-sm leading-6 text-gray-600 truncate">
{{ __('From') }}: {{ $item->user->name }}
</p>
</div>
</article>
@endforeach
</div>
</div>
</div>
</div>

View File

@@ -1,120 +0,0 @@
<div x-data="Components.popover({ open: false, focus: false })" x-init="init()" @keydown.escape="onEscape"
@close-popover-group.window="onClosePopoverGroup">
<button type="button" class="flex items-center gap-x-1 text-sm font-semibold leading-6 text-gray-900"
@click="toggle" @mousedown="if (open) $event.preventDefault()" aria-expanded="true"
:aria-expanded="open.toString()">
{{ __('Bookcases') }}
<svg class="h-5 w-5 flex-none text-gray-400" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div x-show="open" x-transition:enter="transition ease-out duration-200"
x-transition:enter-start="opacity-0 -translate-y-1"
x-transition:enter-end="opacity-100 translate-y-0"
x-transition:leave="transition ease-in duration-150"
x-transition:leave-start="opacity-100 translate-y-0"
x-transition:leave-end="opacity-0 -translate-y-1"
x-description="'Product' flyout menu, show/hide based on flyout menu state."
class="absolute inset-x-0 top-0 -z-10 bg-white pt-16 shadow-lg ring-1 ring-gray-900/5"
x-ref="panel" @click.away="open = false" x-cloak>
<div class="mx-auto grid max-w-7xl grid-cols-1 gap-y-10 gap-x-8 py-10 px-6 lg:grid-cols-2 lg:px-8">
<div class="grid grid-cols-2 gap-x-6 sm:gap-x-8">
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">Bücherschränke</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('bookCases.table.city', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-city flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('City search') }}
</a>
<a href="{{ route('bookCases.table.bookcases', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-book flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Bookcases') }}
</a>
<a href="{{ route('bookCases.world', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-map flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('World map') }}
</a>
<a href="{{ route('bookCases.heatmap', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-heat flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Heatmap') }}
</a>
@auth
<a href="{{ route('bookCases.highScoreTable', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-star flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Highscore Table') }}
</a>
@endauth
</div>
</div>
</div>
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">{{ __('Manage') }}</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="https://openbookcase.de/" target="_blank"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-plus flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Submit new book case') }}
</a>
</div>
</div>
</div>
</div>
<div class="grid grid-cols-1 gap-10 sm:gap-8 lg:grid-cols-2">
<h3 class="sr-only">Recent posts</h3>
@foreach($orangePills as $item)
<article
class="relative isolate flex max-w-2xl flex-col gap-x-8 gap-y-6 sm:flex-row sm:items-start lg:flex-col lg:items-stretch">
<div class="relative flex-none">
<img
class="aspect-[2/1] w-full rounded-lg bg-gray-100 object-cover sm:aspect-[16/9] sm:h-32 lg:h-auto"
src="{{ $item->getFirstMediaUrl('images') }}"
alt="{{ $item->bookCase->title }}">
<div
class="absolute inset-0 rounded-lg ring-1 ring-inset ring-gray-900/10"></div>
</div>
<div>
<div class="flex items-center gap-x-4">
<time datetime="2023-03-16" class="text-sm leading-6 text-gray-600">
{{ $item->date->asDateTime() }}
</time>
<div
class="relative z-10 rounded-full bg-gray-50 py-1.5 px-3 text-xs font-medium text-gray-600 hover:bg-gray-100">
{{ $item->user->name }}
</div>
</div>
<h4 class="mt-2 text-sm font-semibold leading-6 text-gray-900">
<a href="{{ route('bookCases.comment.bookcase', ['country' => $country, 'bookCase' => $item->bookCase]) }}">
<span class="absolute inset-0"></span>
{{ $item->bookCase->title }}
</a>
</h4>
<p class="mt-2 text-sm leading-6 text-gray-600">
{{ $item->bookCase->address }}
</p>
</div>
</article>
@endforeach
</div>
</div>
</div>
</div>

View File

@@ -1,152 +0,0 @@
<div x-data="Components.popover({ open: false, focus: false })" x-init="init()" @keydown.escape="onEscape"
@close-popover-group.window="onClosePopoverGroup">
<button type="button" class="flex items-center gap-x-1 text-sm font-semibold leading-6 text-gray-900"
@click="toggle" @mousedown="if (open) $event.preventDefault()" aria-expanded="true"
:aria-expanded="open.toString()">
{{ __('Courses') }}
<svg class="h-5 w-5 flex-none text-gray-400" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div x-show="open" x-transition:enter="transition ease-out duration-200"
x-transition:enter-start="opacity-0 -translate-y-1"
x-transition:enter-end="opacity-100 translate-y-0"
x-transition:leave="transition ease-in duration-150"
x-transition:leave-start="opacity-100 translate-y-0"
x-transition:leave-end="opacity-0 -translate-y-1"
x-description="'Product' flyout menu, show/hide based on flyout menu state."
class="absolute inset-x-0 top-0 -z-10 bg-white pt-16 shadow-lg ring-1 ring-gray-900/5"
x-ref="panel" @click.away="open = false" x-cloak>
<div class="mx-auto grid max-w-7xl grid-cols-1 gap-y-10 gap-x-8 py-10 px-6 lg:grid-cols-2 lg:px-8">
<div class="grid grid-cols-2 gap-x-6 sm:gap-x-8">
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">Kurse</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('school.table.city', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-city flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Cities') }}
</a>
<a href="{{ route('school.table.lecturer', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-chalkboard-user flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Lecturers') }}
</a>
<a href="{{ route('school.table.venue', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-building flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Venues') }}
</a>
<a href="{{ route('school.table.course', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-screen-users flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Courses') }}
</a>
<a href="{{ route('school.table.event', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-calendar flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Course Events') }}
</a>
</div>
</div>
</div>
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">{{ __('Manage') }}</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('contentCreator.form') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-plus flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Register lecturer') }}
</a>
<a href="{{ route('venue.form') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-plus flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Create venue') }}
</a>
<a href="{{ route('course.form.course') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-plus flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Register course') }}
</a>
<a href="{{ route('course.form.courseEvent') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-plus flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Register course date') }}
</a>
<a href="{{ route('school.table.lecturer', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-list flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Manage lecturers') }}
</a>
<a href="{{ route('bookCases.table.city', ['country' => $country, 'manage' => true]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-list flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Manage cities/areas') }}
</a>
<a href="{{ route('school.table.venue', ['country' => $country, 'manage' => true]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-list flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Manage venues') }}
</a>
</div>
</div>
</div>
</div>
<div class="grid grid-cols-1 gap-10 sm:gap-8 lg:grid-cols-2">
<h3 class="sr-only">Recent posts</h3>
@foreach($courseEvents as $item)
<article
class="relative isolate flex max-w-2xl flex-col gap-x-8 gap-y-6 sm:flex-row sm:items-start lg:flex-col lg:items-stretch">
<div class="relative flex-none">
<img
class="aspect-[2/1] w-full rounded-lg bg-gray-100 object-cover sm:aspect-[16/9] sm:h-32 lg:h-auto"
src="{{ $item->course->lecturer->getFirstMediaUrl('avatar') }}"
alt="{{ $item->course->lecturer->name }}">
<div
class="absolute inset-0 rounded-lg ring-1 ring-inset ring-gray-900/10"></div>
</div>
<div>
<div class="flex items-center gap-x-4">
<time datetime="2023-03-16" class="text-sm leading-6 text-gray-600">
{{ $item->from->asDateTime() }}
</time>
<div
class="relative z-10 rounded-full bg-gray-50 py-1.5 px-3 text-xs font-medium text-gray-600 hover:bg-gray-100">{{ $item->course->lecturer->name }}</div>
</div>
<h4 class="mt-2 text-sm font-semibold leading-6 text-gray-900">
<a href="#">
<span class="absolute inset-0"></span>
{{ $item->course->name }}
</a>
</h4>
<p class="mt-2 text-sm leading-6 text-gray-600 truncate">
{{ $item->course->description }}
</p>
</div>
</article>
@endforeach
</div>
</div>
</div>
</div>

View File

@@ -1,108 +0,0 @@
<div x-data="Components.popover({ open: false, focus: false })" x-init="init()" @keydown.escape="onEscape"
@close-popover-group.window="onClosePopoverGroup">
<button type="button" class="flex items-center gap-x-1 text-sm font-semibold leading-6 text-gray-900"
@click="toggle" @mousedown="if (open) $event.preventDefault()" aria-expanded="true"
:aria-expanded="open.toString()">
{{ __('Bitcoin Events') }}
<svg class="h-5 w-5 flex-none text-gray-400" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div x-show="open" x-transition:enter="transition ease-out duration-200"
x-transition:enter-start="opacity-0 -translate-y-1"
x-transition:enter-end="opacity-100 translate-y-0"
x-transition:leave="transition ease-in duration-150"
x-transition:leave-start="opacity-100 translate-y-0"
x-transition:leave-end="opacity-0 -translate-y-1"
x-description="'Product' flyout menu, show/hide based on flyout menu state."
class="absolute inset-x-0 top-0 -z-10 bg-white pt-16 shadow-lg ring-1 ring-gray-900/5"
x-ref="panel" @click.away="open = false" x-cloak>
<div class="mx-auto grid max-w-7xl grid-cols-1 gap-y-10 gap-x-8 py-10 px-6 lg:grid-cols-2 lg:px-8">
<div class="grid grid-cols-2 gap-x-6 sm:gap-x-8">
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">{{ __('Bitcoin Events') }}</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('bitcoinEvent.table.bitcoinEvent', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-calendar-lines-pen flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Events') }}
</a>
</div>
</div>
</div>
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">{{ __('Manage') }}</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('venue.form') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-plus flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Create venue') }}
</a>
<a href="{{ route('bitcoinEvent.form') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-plus flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Register event') }}
</a>
<a href="{{ route('bookCases.table.city', ['country' => $country, 'manage' => true]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-list flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Manage cities/areas') }}
</a>
<a href="{{ route('school.table.venue', ['country' => $country, 'manage' => true]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-list flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Manage venues') }}
</a>
</div>
</div>
</div>
</div>
<div class="grid grid-cols-1 gap-10 sm:gap-8 lg:grid-cols-2">
<h3 class="sr-only">Recent posts</h3>
@foreach($bitcoinEvents as $item)
<article
class="relative isolate flex max-w-2xl flex-col gap-x-8 gap-y-6 sm:flex-row sm:items-start lg:flex-col lg:items-stretch">
<div class="relative flex-none">
<img
class="aspect-[2/1] w-full rounded-lg bg-gray-100 object-cover sm:aspect-[16/9] sm:h-32 lg:h-auto"
src="{{ $item->getFirstMediaUrl('logo') }}"
alt="{{ $item->title }}">
<div
class="absolute inset-0 rounded-lg ring-1 ring-inset ring-gray-900/10"></div>
</div>
<div>
<div class="flex items-center gap-x-4">
<time datetime="2023-03-16" class="text-sm leading-6 text-gray-600">
{{ $item->from->asDateTime('d.m.Y') }}
</time>
</div>
<h4 class="mt-2 text-sm font-semibold leading-6 text-gray-900">
<a href="{{ $item->link }}" target="_blank">
<span class="absolute inset-0"></span>
{{ $item->title }}
</a>
</h4>
<p class="mt-2 text-sm leading-6 text-gray-600 truncate">
{{ $item->venue->name}}
</p>
</div>
</article>
@endforeach
</div>
</div>
</div>
</div>

View File

@@ -1,141 +0,0 @@
<div x-data="Components.popover({ open: false, focus: false })" x-init="init()" @keydown.escape="onEscape"
@close-popover-group.window="onClosePopoverGroup">
<button type="button" class="flex items-center gap-x-1 text-sm font-semibold leading-6 text-gray-900"
@click="toggle" @mousedown="if (open) $event.preventDefault()" aria-expanded="true"
:aria-expanded="open.toString()">
{{ __('Library') }}
<svg class="h-5 w-5 flex-none text-gray-400" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div x-show="open" x-transition:enter="transition ease-out duration-200"
x-transition:enter-start="opacity-0 -translate-y-1"
x-transition:enter-end="opacity-100 translate-y-0"
x-transition:leave="transition ease-in duration-150"
x-transition:leave-start="opacity-100 translate-y-0"
x-transition:leave-end="opacity-0 -translate-y-1"
x-description="'Product' flyout menu, show/hide based on flyout menu state."
class="absolute inset-x-0 top-0 -z-10 bg-white pt-16 shadow-lg ring-1 ring-gray-900/5"
x-ref="panel" @click.away="open = false" x-cloak>
<div class="mx-auto grid max-w-7xl grid-cols-1 gap-y-10 gap-x-8 py-10 px-6 lg:grid-cols-2 lg:px-8">
<div class="grid grid-cols-2 gap-x-6 sm:gap-x-8">
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">{{ __('Library') }}</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('library.table.libraryItems', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-search flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Search') }}
</a>
<a href="{{ route('library.table.libraryItems', ['country' => $country, 'currentTab' => 'Tutorials']) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-graduation-cap flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Tutorials') }}
</a>
<a href="{{ route('library.table.libraryItems', ['country' => $country, 'currentTab' => 'Videos']) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-video flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Videos') }}
</a>
<a href="{{ route('library.table.libraryItems', ['country' => $country, 'currentTab' => 'Bücher']) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-book flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Bücher') }}
</a>
<a href="{{ route('buecherverleih') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-book-arrow-right flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Bücherverleih') }}
</a>
<a href="{{ route('library.table.podcastsEpisodes', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-podcast flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Podcast Episodes') }}
</a>
<a href="{{ route('bindles', ['country' => null]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-image flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Bindles') }}
</a>
@auth
<a href="{{ route('library.table.lecturer', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-school flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Library for lecturers') }}
</a>
@endauth
</div>
</div>
</div>
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">{{ __('Manage') }}</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('library.libraryItem.form', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-plus flex-none text-gray-400"></i>
{{ __('Submit contents') }}
</a>
<a href="{{ route('school.table.lecturer', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-list flex-none text-gray-400"></i>
{{ __('Manage content creators') }}
</a>
</div>
</div>
</div>
</div>
<div class="grid grid-cols-1 gap-10 sm:gap-8 lg:grid-cols-2">
<h3 class="sr-only">Recent posts</h3>
@foreach($libraryItems as $item)
<article
class="relative isolate flex max-w-2xl flex-col gap-x-8 gap-y-6 sm:flex-row sm:items-start lg:flex-col lg:items-stretch">
<div class="relative flex-none">
<img
class="aspect-[2/1] w-full rounded-lg bg-gray-100 object-cover sm:aspect-[16/9] sm:h-32 lg:h-auto"
src="{{ $item->getFirstMediaUrl('main') }}"
alt="">
<div
class="absolute inset-0 rounded-lg ring-1 ring-inset ring-gray-900/10"></div>
</div>
<div>
<div class="flex items-center gap-x-4">
<div
class="relative z-10 rounded-full bg-gray-50 py-1.5 px-3 text-xs font-medium text-gray-600 hover:bg-gray-100">
{{ $item->lecturer->name }}
</div>
</div>
<h4 class="mt-2 text-sm font-semibold leading-6 text-gray-900">
<a href="{{ route('libraryItem.view', ['libraryItem' => $item]) }}">
<span class="absolute inset-0"></span>
{{ $item->name }}
</a>
</h4>
<p class="mt-2 text-sm leading-6 text-gray-600 truncate">
{{ $item->excerpt }}
</p>
</div>
</article>
@endforeach
</div>
</div>
</div>
</div>

View File

@@ -1,219 +0,0 @@
<div x-data="Components.popover({ open: false, focus: false })" x-init="init()" @keydown.escape="onEscape"
@close-popover-group.window="onClosePopoverGroup">
<button type="button" class="flex items-center gap-x-1 text-sm font-semibold leading-6 text-gray-900"
@click="toggle" @mousedown="if (open) $event.preventDefault()" aria-expanded="true"
:aria-expanded="open.toString()">
{{ __('Meetups') }}
<svg class="h-5 w-5 flex-none text-gray-400" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div x-show="open" x-transition:enter="transition ease-out duration-200"
x-transition:enter-start="opacity-0 -translate-y-1"
x-transition:enter-end="opacity-100 translate-y-0"
x-transition:leave="transition ease-in duration-150"
x-transition:leave-start="opacity-100 translate-y-0"
x-transition:leave-end="opacity-0 -translate-y-1"
x-description="'Product' flyout menu, show/hide based on flyout menu state."
class="absolute inset-x-0 top-0 -z-10 bg-white pt-16 shadow-lg ring-1 ring-gray-900/5"
x-ref="panel" @click.away="open = false" x-cloak>
<div class="mx-auto grid max-w-7xl grid-cols-1 gap-y-10 gap-x-8 py-10 px-6 lg:grid-cols-2 lg:px-8">
<div class="grid grid-cols-2 gap-x-6 sm:gap-x-8">
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">Meetups</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('meetup.world', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-globe flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('World map') }}
</a>
<a href="{{ route('meetup.table.meetup', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-people-group flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Meetups') }}
</a>
<a href="{{ route('meetup.table.meetupEvent', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-calendar flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Meetup dates') }}
</a>
<a href="{{ route('nostr.plebs') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<svg class="svg-inline--fa flex-none text-gray-400 w-6 h-5 mr-2 -ml-1" fill="#000000" version="1.1" id="nostr" xmlns="http://www.w3.org/2000/svg"
height="20px" viewBox="0 0 571.004 571.004"
xml:space="preserve">
<g>
<g>
<path d="M533.187,269.019c-1.432-1.746-2.219-3.876-1.252-5.993c1.868-4.08,0.611-7.658-0.931-11.465
c-0.877-2.167-0.796-4.716-1.15-7.095c-0.221-1.493-0.057-3.199-0.742-4.435c-1.775-3.199-3.812-6.275-5.949-9.245
c-2.681-3.717-5.564-7.291-8.38-10.914c-3.325-4.284-6.581-8.633-10.09-12.766c-0.706-0.833-2.604-1.42-3.607-1.085
c-2.411,0.808-4.732,2.052-6.874,3.452c-2.771,1.812-5.435,3.317-8.928,3.713c-3.953,0.453-8.062,1.403-11.604,3.154
c-5.189,2.562-9.747,6.401-14.924,9c-4.913,2.464-8.328,6.112-11.184,10.567c-0.783,1.22-1.705,2.371-2.685,3.444
c-3.252,3.574-5.549,7.629-7.051,12.248c-1.154,3.554-2.378,7.226-4.373,10.322c-1.963,3.044-3.256,6.194-4.162,9.601
c-0.285,1.065-0.44,2.167-0.656,3.251c-2.212-0.539-4.19-0.873-6.06-1.518c-1.709-0.592-3.684-1.15-4.879-2.375
c-2.979-3.052-6.528-5.059-10.388-6.577c-3.448-1.354-6.581-3.06-9.441-5.496c-1.514-1.29-3.771-1.738-5.721-2.489
c-1.419-0.547-3.043-0.714-4.3-1.501c-3.439-2.146-6.639-4.68-10.11-6.765c-2.256-1.359-4.737-2.542-7.271-3.166
c-1.722-0.424-2.293-0.865-2.216-2.599c0.241-5.227-0.832-10.175-3.235-14.872c-2.855-5.582-8.723-8.625-14.777-7.589
c-2.697,0.461-5.573,1.347-8.128,0.833c-3.329-0.669-6.516-2-10.028-1.861c-0.612,0.025-1.31-0.437-1.864-0.82
c-4.076-2.832-8.152-5.663-12.163-8.584c-1.489-1.085-2.782-1.154-4.442-0.322c-1.221,0.612-2.705,0.955-4.08,0.967
c-6.047,0.062-12.098-0.082-18.148-0.077c-5.173,0.004-10.498,1.815-15.377-1.399c-0.241-0.159-0.588-0.216-0.886-0.221
c-3.023-0.028-4.488-1.632-5.096-4.524c-0.171-0.82-1.436-1.971-2.236-2c-3.986-0.143-7.984-0.041-11.971,0.139
c-2.187,0.102-4.619,0.004-6.483,0.922c-3.941,1.942-7.556,4.533-11.355,6.773c-1.505,0.889-3.023,1.085-3.872-0.763
c0.979-1.261,2.337-2.272,2.627-3.525c0.771-3.37-3.705-7.181-6.969-6.059c-1.498,0.514-3.003,1.208-4.272,2.138
c-2.464,1.807-4.725,3.896-7.144,5.769c-3.011,2.33-6.055,4.655-10.449,4.737c0.983-3.753-1.718-5.104-4.108-6.597
c-1.094-0.686-2.293-1.281-3.525-1.652c-3.276-1-6.348-0.763-8.956,1.828c-2.158,2.142-3.488,2.179-6.014,0.367
c-3.081-2.208-3.986-2.175-7.128,0c-1.122,0.775-2.346,1.832-3.586,1.926c-4.268,0.318-6.646,3.052-8.931,6.132
c-1.632,2.203-3.244,4.472-5.173,6.405c-4.378,4.39-8.911,8.629-13.48,12.815c-0.608,0.559-1.95,0.873-2.709,0.608
c-3.378-1.191-5.582-3.823-6.899-7.001c-2.521-6.075-4.957-12.203-7.07-18.429c-0.816-2.399-1.11-5.165-0.865-7.687
c0.559-5.786,1.771-11.51,2.411-17.291c1.196-10.796,3.583-21.343,7.405-31.445c6.773-17.891,13.934-35.643,21.2-53.342
c4.619-11.249,7.817-22.852,10.167-34.75c1.644-8.319,2.477-16.63,1.901-25.137c-0.286-4.227,0.232-8.56,0.808-12.787
c1.669-12.232-2.46-19.547-13.843-24.068c-1.403-0.559-2.766-1.228-4.149-1.844c-2.15,0-4.3,0-6.455,0
c-2.909,0.91-5.871,1.681-8.715,2.762c-3.827,1.457-7.989,2.484-10.51,6.145c-1.701,2.472-4.088,3.5-6.916,4.06
c-3.9,0.771-7.797,1.62-11.62,2.705c-3.378,0.959-6.369,2.709-9.135,5.872c6.863,1.652,13.211,3.305,19.617,4.692
c7.629,1.652,14.558,4.729,20.518,9.763c2.954,2.493,5.667,5.447,6.165,9.425c0.51,4.084,0.608,8.271,0.392,12.383
c-0.563,10.694-4.137,20.661-7.976,30.515c-2.358,6.059-5.406,11.876-7.36,18.054c-4.321,13.656-8.486,27.348-14.19,40.522
c-3.309,7.646-6.83,15.251-8.307,23.534c-1.722,9.657-3.264,19.343-4.917,29.013c-0.845,4.958-0.877,10.049-2.864,14.819
c-0.873,2.093-1.269,4.406-1.693,6.654c-0.975,5.182-1.832,10.379-2.733,15.573c0,7.838,0,15.675,0,23.513
c0.632,3.905,1.363,7.801,1.877,11.722c1.481,11.232,4.773,21.955,8.825,32.489c0.816,2.121,1.322,4.378,1.783,6.613
c0.718,3.473,1.069,7.365,4.309,9.303c2.427,1.452,2.982,3.402,3.603,5.671c1.828,6.684,1.318,13.428,0.147,20.086
c-1.114,6.341-0.845,12.525,0.861,18.65c2.313,8.318,4.72,16.613,7.291,24.859c0.461,1.48,1.71,2.896,2.946,3.916
c5.3,4.382,10.735,8.605,16.108,12.897c0.355,0.281,0.645,0.656,0.914,1.028c2.652,3.672,6.373,5.879,10.677,6.638
c8.262,1.457,16.275,4.117,24.664,4.929c1.363,0.131,2.742,0.453,4.035,0.906c2.362,0.828,4.696,1.733,7.038,2.623
c1.257,0.824,2.391,1.832,3.415,3.064c-0.698,2.239-1.901,4.234-3.199,6.164c-3.529,5.239-8.344,8.948-14.007,11.633
c-5.818,2.754-11.975,4.442-18.242,5.744c-8.115,1.686-16.259,3.231-24.378,4.88c-6.789,1.379-13.248,3.79-19.633,6.414
c-8.25,3.39-16.463,6.879-24.77,10.13c-6.447,2.525-13.158,4.149-20.086,4.68c-2.077,0.159-4.178,0.017-6.267,0.065
c-0.604,0.017-1.326,0.045-1.783,0.367c-3.46,2.437-7.446,3.407-11.481,4.272c-1.607,0.347-3.203,0.742-4.802,1.117
c-4.423,1.049-7.703,3.672-10.237,7.36c-2.481,3.619-3.827,7.691-4.762,11.914c-1.26,5.708-1.685,11.521-1.921,17.344
c-0.306,7.405-0.526,14.814-0.828,22.22c-0.082,2.023-0.367,4.035-0.486,6.059c-0.033,0.592,0.012,1.302,0.314,1.779
c3.525,5.654,7.299,11.126,12.276,15.643c4.251,3.859,8.993,6.769,14.819,7.557c0.171,0.024,0.326,0.175,0.485,0.265
c1.775,0,3.55,0,5.32,0c1.032-0.253,2.085-0.444,3.097-0.767c2.216-0.702,4.415-1.461,6.663-2.212
c-0.196-1.881-0.971-3.166-2.317-3.962c-1.236-0.734-2.595-1.301-3.958-1.771c-1.73-0.596-3.55-0.942-5.275-1.554
c-1.114-0.396-2.208-0.968-3.174-1.648c-1.367-0.968-1.979-2.424-2.052-4.097c0.069-0.102,0.118-0.257,0.212-0.298
c4.643-1.885,7.16-5.879,9.694-9.837c0.298-0.461,0.294-1.195,0.241-1.787c-0.445-4.696-1.775-9.184-3.354-13.599
c-1.75-4.884-3.595-9.73-5.333-14.614c-0.551-1.547-0.836-3.183-1.326-4.749c-0.318-1.017,0.11-1.543,0.938-1.971
c1.64-0.841,3.423-0.832,5.189-0.886c2.464-0.073,4.945,0.041,7.393-0.188c1.408-0.131,2.925-0.515,4.121-1.236
c13.692-8.303,28.474-14.003,43.791-18.413c13.876-3.998,27.997-6.915,42.244-9.229c6.247-1.012,12.501-1.967,18.76-2.897
c0.918-0.134,1.665-0.428,2.371-1.027c4.227-3.595,9.217-5.586,14.635-6.259c5.773-0.715,11.608-0.951,17.393-1.563
c3.578-0.379,7.161-0.905,10.678-1.656c4.308-0.918,8.045-3.129,11.146-6.205c2.688-2.669,5.132-5.59,7.593-8.482
c3.28-3.855,6.414-7.834,9.727-11.661c1.02-1.179,2.432-2.012,3.631-3.039c0.792-0.674,1.501-0.653,2.391-0.11
c4.125,2.529,8.576,4.32,13.199,5.712c5.716,1.722,11.566,2.75,17.495,3.374c10.983,1.159,22,1.204,33.023,0.906
c3.166-0.086,6.333-0.09,9.503-0.184c0.93-0.029,1.718,0.171,2.473,0.729c3.309,2.444,6.646,4.852,9.963,7.291
c3.117,2.293,6.345,4.402,9.927,5.92c0.641,0.273,1.277,0.612,1.95,0.735c2.758,0.497,4.741,2.235,6.744,4.002
c5.908,5.214,11.343,10.894,16.161,17.111c6.324,8.156,12.468,16.455,18.617,24.745c6.152,8.295,12.342,16.557,19.396,24.125
c6.863,7.36,14.423,13.868,23.122,18.984c0.775,0.457,1.432,0.955,1.844,1.815c3.187,6.655,8.475,11.09,15.076,14.093
c6.81,3.097,14.006,4.256,21.444,4.142c10.33-0.159,20.062-2.53,28.906-8.014c5.264-3.264,9.572-7.471,12.347-13.097
c1.15-2.338,2.109-4.737,2.269-7.385c0.016-0.29,0.212-0.571,0.326-0.853c0-0.633,0-1.27,0-1.901
c-3.488-0.6-6.802,0.208-10.045,1.362c-3.101,1.102-6.124,2.416-9.25,3.443c-2.692,0.886-5.442,1.673-8.225,2.195
c-4.554,0.853-8.042-1.113-10.037-5.41c0.804-1.049,1.995-1.195,3.194-1.253c2.338-0.113,4.685-0.143,7.022-0.302
c0.799-0.053,1.664-0.249,2.338-0.648c0.6-0.359,1.121-1.024,1.411-1.673c0.498-1.126,0.311-1.44-0.869-2.085
c-3.402-1.856-6.993-3.264-10.714-4.324c-8.421-2.399-17.055-3.028-25.757-3.061c-1.836-0.008-3.677-0.004-5.513,0.082
c-0.963,0.045-1.66-0.249-2.366-0.906c-4.843-4.5-9.094-9.53-13.166-14.721c-6.613-8.429-12.48-17.389-18.47-26.259
c-2.836-4.198-5.786-8.319-8.769-12.411c-0.999-1.375-2.244-2.574-3.419-3.811c-0.384-0.404-0.885-0.727-1.383-0.991
c-1.358-0.727-2.269-0.408-2.905,1.003c-0.229,0.511-0.379,1.062-0.648,1.828c-0.633-0.465-1.179-0.841-1.697-1.253
c-5.03-4.019-8.866-9.058-11.905-14.655c-2.954-5.446-5.627-11.048-8.344-16.626c-2.607-5.353-5.092-10.767-8.438-15.712
c-1.521-2.248-3.317-4.312-4.9-6.523c-0.783-1.094-1.709-1.229-2.949-1.094c-5.324,0.579-10.625,0.494-15.843-0.894
c-2.591-0.689-5.035-1.718-7.1-3.488c-1.473-1.269-2.562-2.746-3.211-4.513c1.95-0.433,3.893-0.897,5.818-1.424
c6.459-1.767,12.926-2.469,19.552-2.081c7.964,0.466,15.92,1.159,23.892,1.437c2.853,0.098,5.966-0.172,8.557-1.244
c3.859-1.596,7.544-3.799,10.971-6.206c5.075-3.566,9.702-7.78,14.847-11.232c2.379-1.595,3.203-3.292,3.306-5.92
c0.134-3.509,1.9-4.781,5.3-4.149c0.6,0.114,1.203,0.253,1.787,0.44c3.852,1.229,7.633,1.028,11.489-0.163
c2.962-0.914,6.066-1.354,9.053-2.195c0.547-0.154,1.024-1.199,1.163-1.909c0.094-0.481-0.616-1.068-0.693-1.648
c-0.127-0.922-0.384-2.402,0.057-2.705c0.854-0.575,2.154-0.656,3.265-0.636c0.881,0.016,1.733,0.62,2.627,0.729
c2.064,0.258,3.995,0.021,5.247-1.986c1.232-1.971,1.277-3.864-0.163-5.757c-0.465-0.608-1.069-1.249-1.191-1.946
c-0.163-0.938-0.273-2.199,0.212-2.881c1.779-2.488,3.771-4.83,5.77-7.152c1.828-2.121,4.251-3.354,6.997-3.541
c0.967-0.065,2.158,0.742,2.966,1.465c0.633,0.562,0.686,1.729,1.261,2.407c0.674,0.795,1.628,1.347,2.465,2.007
c0.571-0.877,1.358-1.688,1.656-2.651c0.311-0.992-0.028-2.175,0.236-3.187c0.213-0.812,0.743-1.738,1.416-2.195
c3.591-2.439,7.442-4.524,10.861-7.177c2.574-1.991,4.508-4.786,6.944-6.98c4.182-3.771,9.526-5.097,14.789-6.472
c3.452-0.901,4.194-1.921,3.134-5.365c-0.514-1.673-1.228-3.309-2.052-4.854c-1.062-1.987-0.531-3.362,1.297-4.402
c0.727-0.412,1.498-0.751,2.252-1.114c2.387-1.139,4.08-2.701,4.688-5.521c0.612-2.827,1.75-5.549,2.741-8.286
c1.339-3.692,2.432-7.65,7.34-8.144c0.147-0.017,0.294-0.061,0.441-0.094c0-1.077,0-2.15,0-3.228
c-1.135-1.775-2.15-3.639-3.432-5.3C536.084,271.981,534.492,270.614,533.187,269.019z"/>
</g>
</g>
</svg>
{{ __('Plebs on Nostr') }}
</a>
</div>
</div>
</div>
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">{{ __('Manage') }}</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('meetup.meetup.form', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-plus flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Submit Meetup') }}
</a>
<a href="{{ route('meetup.event.form', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-plus flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Register Meetup date') }}
</a>
<a href="{{ route('bookCases.table.city', ['country' => $country, 'manage' => true]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-list flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Manage cities/areas') }}
</a>
<a href="{{ route('profile.meetups') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-user-group flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('My meetups') }}
</a>
</div>
</div>
</div>
</div>
<div class="grid grid-cols-1 gap-10 sm:gap-8 lg:grid-cols-2">
<h3 class="sr-only">Recent posts</h3>
@foreach($meetups as $item)
<article
class="relative isolate flex max-w-2xl flex-col gap-x-8 gap-y-6 sm:flex-row sm:items-start lg:flex-col lg:items-stretch">
<div class="relative flex-none">
<img
class="aspect-[2/1] w-full rounded-lg bg-gray-100 object-cover sm:aspect-[16/9] sm:h-32 lg:h-auto"
src="{{ $item->meetup->getFirstMediaUrl('logo') }}"
alt="">
<div
class="absolute inset-0 rounded-lg ring-1 ring-inset ring-gray-900/10"></div>
</div>
<div>
<div class="flex items-center gap-x-4">
<time datetime="2023-03-16" class="text-sm leading-6 text-gray-600">
{{ $item->meetup->users->count() }} {{ __('Participants') }}
</time>
<time datetime="2023-03-16" class="text-sm leading-6 text-gray-600">
{{ $item->start->asDateTime() }}
</time>
</div>
<h4 class="mt-2 text-sm font-semibold leading-6 text-gray-900">
<a href="{{ route('meetup.event.landing', ['country' => $item->meetup->city->country, 'meetupEvent' => $item]) }}">
<span class="absolute inset-0"></span>
{{ $item->meetup->name }}
</a>
</h4>
<p class="mt-2 text-sm leading-6 text-gray-600 truncate">
{{ $item->location }}
</p>
</div>
</article>
@endforeach
</div>
</div>
</div>
</div>

View File

@@ -1,107 +0,0 @@
<div x-data="Components.popover({ open: false, focus: false })" x-init="init()" @keydown.escape="onEscape"
@close-popover-group.window="onClosePopoverGroup">
<button type="button" class="flex items-center gap-x-1 text-sm font-semibold leading-6 text-gray-900"
@click="toggle" @mousedown="if (open) $event.preventDefault()" aria-expanded="true"
:aria-expanded="open.toString()">
{{ __('News') }}
<svg class="h-5 w-5 flex-none text-gray-400" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div x-show="open" x-transition:enter="transition ease-out duration-200"
x-transition:enter-start="opacity-0 -translate-y-1"
x-transition:enter-end="opacity-100 translate-y-0"
x-transition:leave="transition ease-in duration-150"
x-transition:leave-start="opacity-100 translate-y-0"
x-transition:leave-end="opacity-0 -translate-y-1"
x-description="'Product' flyout menu, show/hide based on flyout menu state."
class="absolute inset-x-0 top-0 -z-10 bg-white pt-16 shadow-lg ring-1 ring-gray-900/5"
x-ref="panel" @click.away="open = false" x-cloak>
<div class="mx-auto grid max-w-7xl grid-cols-1 gap-y-10 gap-x-8 py-10 px-6 lg:grid-cols-2 lg:px-8">
<div class="grid grid-cols-2 gap-x-6 sm:gap-x-8">
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">News</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('article.overview') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-newspaper flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('News Article') }}
</a>
<a href="{{ route('authors.overview') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-pen-nib flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Authors') }}
</a>
</div>
</div>
</div>
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">{{ __('Manage') }}</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('news.form') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-plus flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Submit news articles') }}
</a>
@if($country)
<a href="{{ route('school.table.lecturer', ['country' => $country]) }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-list flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Manage content creators') }}
</a>
@endif
</div>
</div>
</div>
</div>
<div class="grid grid-cols-1 gap-10 sm:gap-8 lg:grid-cols-2">
<h3 class="sr-only">Recent news article</h3>
@foreach($news as $item)
<article wire:key="library_item_{{ $item->id }}"
class="relative isolate flex max-w-2xl flex-col gap-x-8 gap-y-6 sm:flex-row sm:items-start lg:flex-col lg:items-stretch">
<div class="relative flex-none">
<a href="{{ route('article.view', ['libraryItem' => $item]) }}">
<img
class="aspect-[2/1] w-full rounded-lg bg-gray-100 object-cover sm:aspect-[16/9] sm:h-32 lg:h-auto"
src="{{ $item->getFirstMediaUrl('main') }}"
alt="{{ $item->name }}">
</a>
<div
class="absolute inset-0 rounded-lg ring-1 ring-inset ring-gray-900/10"></div>
</div>
<div>
<div class="flex items-center gap-x-4">
<time datetime="2023-03-16" class="text-sm leading-6 text-gray-600">
{{ $item->created_at->asDateTime() }}
</time>
<div
class="relative z-10 rounded-full bg-gray-50 py-1.5 px-3 text-xs font-medium text-gray-600 hover:bg-gray-100">
{{ $item->lecturer->name }}
</div>
</div>
<h4 class="mt-2 text-sm font-semibold leading-6 text-gray-900">
<a href="{{ route('article.view', ['libraryItem' => $item]) }}">
<span class="absolute inset-0"></span>
{{ $item->name }}
</a>
</h4>
</div>
</article>
@endforeach
</div>
</div>
</div>
</div>

View File

@@ -1,109 +0,0 @@
<div x-data="Components.popover({ open: false, focus: false })" x-init="init()"
@keydown.escape="onEscape"
@close-popover-group.window="onClosePopoverGroup">
<button type="button"
class="flex items-center gap-x-1 text-sm font-semibold leading-6 text-gray-900"
@click="toggle" @mousedown="if (open) $event.preventDefault()" aria-expanded="true"
:aria-expanded="open.toString()">
{{ __('My profile') }}
<svg class="h-5 w-5 flex-none text-gray-400" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div x-show="open" x-transition:enter="transition ease-out duration-200"
x-transition:enter-start="opacity-0 -translate-y-1"
x-transition:enter-end="opacity-100 translate-y-0"
x-transition:leave="transition ease-in duration-150"
x-transition:leave-start="opacity-100 translate-y-0"
x-transition:leave-end="opacity-0 -translate-y-1"
x-description="'Product' flyout menu, show/hide based on flyout menu state."
class="absolute inset-x-0 top-0 -z-10 bg-white pt-16 shadow-lg ring-1 ring-gray-900/5"
x-ref="panel" @click.away="open = false" x-cloak>
<div
class="mx-auto grid max-w-7xl grid-cols-1 gap-y-10 gap-x-8 py-10 px-6 lg:grid-cols-2 lg:px-8">
<div class="grid grid-cols-2 gap-x-6 sm:gap-x-8">
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">{{ __('My profile') }}</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('profile.show') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-city flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('My profile') }}
</a>
<a href="{{ route('profile.meetups') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-user-group flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('My meetups') }}
</a>
<a href="{{ route('profile.lnbits') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-key-skeleton-left-right flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('LNBits') }}
</a>
</div>
</div>
</div>
<div>
<h3 class="text-sm font-medium leading-6 text-gray-500">{{ __('Manage') }}</h3>
<div class="mt-6 flow-root">
<div class="-my-2">
<a href="{{ route('profile.wallet') }}"
class="flex gap-x-4 py-2 text-sm font-semibold leading-6 text-gray-900">
<i class="fa-thin fa-bolt flex-none text-gray-400 w-6 h-5 mr-2 -ml-1"></i>
{{ __('Change lightning wallet/pubkey') }}
</a>
</div>
</div>
</div>
</div>
<div class="grid grid-cols-1 gap-10 sm:gap-8 lg:grid-cols-2">
<h3 class="sr-only">Recent posts</h3>
{{--@foreach($orangePills as $item)
<article
class="relative isolate flex max-w-2xl flex-col gap-x-8 gap-y-6 sm:flex-row sm:items-start lg:flex-col lg:items-stretch">
<div class="relative flex-none">
<img
class="aspect-[2/1] w-full rounded-lg bg-gray-100 object-cover sm:aspect-[16/9] sm:h-32 lg:h-auto"
src="{{ $item->getFirstMediaUrl('images') }}"
alt="{{ $item->bookCase->title }}">
<div
class="absolute inset-0 rounded-lg ring-1 ring-inset ring-gray-900/10"></div>
</div>
<div>
<div class="flex items-center gap-x-4">
<time datetime="2023-03-16" class="text-sm leading-6 text-gray-600">
{{ $item->date->asDateTime() }}
</time>
<div
class="relative z-10 rounded-full bg-gray-50 py-1.5 px-3 text-xs font-medium text-gray-600 hover:bg-gray-100">
{{ $item->user->name }}
</div>
</div>
<h4 class="mt-2 text-sm font-semibold leading-6 text-gray-900">
<a href="#">
<span class="absolute inset-0"></span>
{{ $item->bookCase->title }}
</a>
</h4>
<p class="mt-2 text-sm leading-6 text-gray-600">
{{ $item->bookCase->address }}
</p>
</div>
</article>
@endforeach--}}
</div>
</div>
</div>
</div>

View File

@@ -1,52 +0,0 @@
<div x-data="Components.popover({ open: false, focus: false })" x-init="init()"
@keydown.escape="onEscape"
@close-popover-group.window="onClosePopoverGroup">
<button type="button"
class="flex items-center gap-x-1 text-sm font-semibold leading-6 text-gray-900"
@click="toggle" @mousedown="if (open) $event.preventDefault()" aria-expanded="true"
:aria-expanded="open.toString()">
{{ __('Settings') }}
<svg class="h-5 w-5 flex-none text-gray-400" viewBox="0 0 20 20" fill="currentColor"
aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div x-show="open" x-transition:enter="transition ease-out duration-200"
x-transition:enter-start="opacity-0 -translate-y-1"
x-transition:enter-end="opacity-100 translate-y-0"
x-transition:leave="transition ease-in duration-150"
x-transition:leave-start="opacity-100 translate-y-0"
x-transition:leave-end="opacity-0 -translate-y-1"
x-description="'Product' flyout menu, show/hide based on flyout menu state."
class="absolute inset-x-0 top-0 -z-10 bg-white pt-16 shadow-lg ring-1 ring-gray-900/5"
x-ref="panel" @click.away="open = false" x-cloak>
<div
class="mx-auto grid max-w-7xl grid-cols-1 gap-y-10 gap-x-8 py-10 px-6 lg:grid-cols-2 lg:px-8">
<div class="grid grid-cols-1 gap-10 sm:gap-8 lg:grid-cols-3">
<h3 class="sr-only">{{ __('Settings') }}</h3>
<x-select label="{{ __('Timezone') }}" :clearable="false" wire:model.debounce="timezone"
id="timezone"
:options="collect(Timezonelist::toArray(false))->collapse()->keys()"/>
<x-native-select
label="{{ __('Change country') }}"
wire:model="c"
option-label="name"
option-value="code"
:options="$countries"
/>
<x-select
label="{{ __('Change language') }}"
wire:model="l"
:clearable="false"
:searchable="true"
:async-data="route('api.languages.index')"
option-label="name"
option-value="language"
/>
</div>
</div>
</div>
</div>

View File

@@ -1,24 +0,0 @@
<div x-data="{ open: false }" class="-mx-3">
<button type="button"
class="flex w-full items-center justify-between rounded-lg py-2 pl-3 pr-3.5 text-base font-semibold leading-7 hover:bg-gray-50"
aria-controls="disclosure-1" @click="open = !open" aria-expanded="false"
x-bind:aria-expanded="open.toString()">
{{ __('Association') }}
<svg class="h-5 w-5 flex-none"
x-description="Expand/collapse icon, toggle classes based on menu open state."
x-state:on="Open" x-state:off="Closed" :class="{ 'rotate-180': open }"
viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div class="mt-2 space-y-2"
x-description="'Product' sub-menu, show/hide based on menu state." id="disclosure-1"
x-show="open" style="display: none;" x-cloak>
<a href="{{ route('project.table.projectFunding', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Submitted projects') }}</a>
<a href="{{ route('project.projectProposal.form', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Submit project for funding') }}</a>
</div>
</div>

View File

@@ -1,32 +0,0 @@
<div x-data="{ open: false }" class="-mx-3">
<button type="button"
class="flex w-full items-center justify-between rounded-lg py-2 pl-3 pr-3.5 text-base font-semibold leading-7 hover:bg-gray-50"
aria-controls="disclosure-1" @click="open = !open" aria-expanded="false"
x-bind:aria-expanded="open.toString()">
{{ __('Bookcases') }}
<svg class="h-5 w-5 flex-none"
x-description="Expand/collapse icon, toggle classes based on menu open state."
x-state:on="Open" x-state:off="Closed" :class="{ 'rotate-180': open }"
viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div class="mt-2 space-y-2"
x-description="'Product' sub-menu, show/hide based on menu state." id="disclosure-1"
x-show="open" style="display: none;" x-cloak>
<a href="{{ route('bookCases.table.city', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('City search') }}</a>
<a href="{{ route('bookCases.table.bookcases', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Bookcases') }}</a>
<a href="{{ route('bookCases.world', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('World map') }}</a>
@auth
<a href="{{ route('bookCases.highScoreTable', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Highscore Table') }}</a>
@endauth
<a href="https://openbookcase.de/" target="_blank"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Submit new book case') }}</a>
</div>
</div>

View File

@@ -1,30 +0,0 @@
<div x-data="{ open: false }" class="-mx-3">
<button type="button"
class="flex w-full items-center justify-between rounded-lg py-2 pl-3 pr-3.5 text-base font-semibold leading-7 hover:bg-gray-50"
aria-controls="disclosure-1" @click="open = !open" aria-expanded="false"
x-bind:aria-expanded="open.toString()">
{{ __('Courses') }}
<svg class="h-5 w-5 flex-none"
x-description="Expand/collapse icon, toggle classes based on menu open state."
x-state:on="Open" x-state:off="Closed" :class="{ 'rotate-180': open }"
viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div class="mt-2 space-y-2"
x-description="'Product' sub-menu, show/hide based on menu state." id="disclosure-1"
x-show="open" style="display: none;" x-cloak>
<a href="{{ route('school.table.city', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('City search') }}</a>
<a href="{{ route('school.table.course', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Courses') }}</a>
<a href="{{ route('school.table.venue', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Venues') }}</a>
<a href="{{ route('school.table.lecturer', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Lecturers') }}</a>
<a href="{{ route('school.table.event', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Course Events') }}</a>
</div>
</div>

View File

@@ -1,24 +0,0 @@
<div x-data="{ open: false }" class="-mx-3">
<button type="button"
class="flex w-full items-center justify-between rounded-lg py-2 pl-3 pr-3.5 text-base font-semibold leading-7 hover:bg-gray-50"
aria-controls="disclosure-1" @click="open = !open" aria-expanded="false"
x-bind:aria-expanded="open.toString()">
{{ __('Events') }}
<svg class="h-5 w-5 flex-none"
x-description="Expand/collapse icon, toggle classes based on menu open state."
x-state:on="Open" x-state:off="Closed" :class="{ 'rotate-180': open }"
viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div class="mt-2 space-y-2"
x-description="'Product' sub-menu, show/hide based on menu state." id="disclosure-1"
x-show="open" style="display: none;" x-cloak>
<a href="{{ route('bitcoinEvent.table.bitcoinEvent', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Events') }}</a>
<a href="{{ route('bitcoinEvent.form') }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Register event') }}</a>
</div>
</div>

View File

@@ -1,26 +0,0 @@
<div x-data="{ open: false }" class="-mx-3">
<button type="button"
class="flex w-full items-center justify-between rounded-lg py-2 pl-3 pr-3.5 text-base font-semibold leading-7 hover:bg-gray-50"
aria-controls="disclosure-1" @click="open = !open" aria-expanded="false"
x-bind:aria-expanded="open.toString()">
{{ __('Library') }}
<svg class="h-5 w-5 flex-none"
x-description="Expand/collapse icon, toggle classes based on menu open state."
x-state:on="Open" x-state:off="Closed" :class="{ 'rotate-180': open }"
viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div class="mt-2 space-y-2"
x-description="'Product' sub-menu, show/hide based on menu state." id="disclosure-1"
x-show="open" style="display: none;" x-cloak>
<a href="{{ route('library.table.libraryItems', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Search') }}</a>
@auth
<a href="{{ route('library.table.lecturer', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Library for lecturers') }}</a>
@endauth
</div>
</div>

View File

@@ -1,28 +0,0 @@
<div x-data="{ open: false }" class="-mx-3">
<button type="button"
class="flex w-full items-center justify-between rounded-lg py-2 pl-3 pr-3.5 text-base font-semibold leading-7 hover:bg-gray-50"
aria-controls="disclosure-1" @click="open = !open" aria-expanded="false"
x-bind:aria-expanded="open.toString()">
{{ __('Meetups') }}
<svg class="h-5 w-5 flex-none"
x-description="Expand/collapse icon, toggle classes based on menu open state."
x-state:on="Open" x-state:off="Closed" :class="{ 'rotate-180': open }"
viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div class="mt-2 space-y-2"
x-description="'Product' sub-menu, show/hide based on menu state." id="disclosure-1"
x-show="open" style="display: none;" x-cloak>
<a href="{{ route('meetup.world', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('World map') }}</a>
<a href="{{ route('meetup.table.meetup', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Meetups') }}</a>
<a href="{{ route('meetup.table.meetupEvent', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Meetup dates') }}</a>
<a href="{{ route('nostr.plebs') }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Plebs on Nostr') }}</a>
</div>
</div>

View File

@@ -1,26 +0,0 @@
<div x-data="{ open: false }" class="-mx-3">
<button type="button"
class="flex w-full items-center justify-between rounded-lg py-2 pl-3 pr-3.5 text-base font-semibold leading-7 hover:bg-gray-50"
aria-controls="disclosure-1" @click="open = !open" aria-expanded="false"
x-bind:aria-expanded="open.toString()">
{{ __('News') }}
<svg class="h-5 w-5 flex-none"
x-description="Expand/collapse icon, toggle classes based on menu open state."
x-state:on="Open" x-state:off="Closed" :class="{ 'rotate-180': open }"
viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div class="mt-2 space-y-2"
x-description="'Product' sub-menu, show/hide based on menu state." id="disclosure-1"
x-show="open" style="display: none;" x-cloak>
<a href="{{ route('article.overview') }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('News Article') }}</a>
<a href="{{ route('authors.overview') }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Authors') }}</a>
<a href="{{ route('school.table.lecturer', ['country' => $country]) }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Manage content creators') }}</a>
</div>
</div>

View File

@@ -1,27 +0,0 @@
@auth
<div x-data="{ open: false }" class="-mx-3">
<button type="button"
class="flex w-full items-center justify-between rounded-lg py-2 pl-3 pr-3.5 text-base font-semibold leading-7 hover:bg-gray-50"
aria-controls="disclosure-1" @click="open = !open" aria-expanded="false"
x-bind:aria-expanded="open.toString()">
{{ __('My profile') }}
<svg class="h-5 w-5 flex-none"
x-description="Expand/collapse icon, toggle classes based on menu open state."
x-state:on="Open" x-state:off="Closed" :class="{ 'rotate-180': open }"
viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
<path fill-rule="evenodd"
d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z"
clip-rule="evenodd"></path>
</svg>
</button>
<div class="mt-2 space-y-2"
x-description="'Product' sub-menu, show/hide based on menu state."
id="disclosure-1"
x-show="open" style="display: none;" x-cloak>
<a href="{{ route('profile.show') }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('My profile') }}</a>
<a href="{{ route('profile.wallet') }}"
class="block rounded-lg py-2 pl-6 pr-3 text-sm font-semibold leading-7 text-gray-900 hover:bg-gray-50">{{ __('Change lightning wallet/pubkey') }}</a>
</div>
</div>
@endauth

View File

@@ -1,31 +0,0 @@
<div>
<div class="border-b border-gray-200 pb-5 sm:pb-0 my-6">
<h3 class="text-lg font-medium leading-6 text-gray-200">{{ __('Search') }}</h3>
<div class="mt-3 sm:mt-4">
<!-- Tabs at small breakpoint and up -->
<div class="hidden sm:block">
<nav class="-mb-px flex space-x-8">
@php
$currentTab = 'border-amber-500 text-amber-600';
$notCurrentTab = 'border-transparent text-gray-200 hover:text-gray-400 hover:border-gray-300';
@endphp
<a href="{{ route('school.table.city', ['country' => $country]).'#table' }}"
class="{{ request()->routeIs('school.table.city') ? $currentTab : $notCurrentTab }} whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ __('Cities') }}</a>
<a href="{{ route('school.table.lecturer', ['country' => $country]).'#table' }}"
class="{{ request()->routeIs('school.table.lecturer') ? $currentTab : $notCurrentTab }} whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ __('Lecturers') }}</a>
<a href="{{ route('school.table.venue', ['country' => $country]).'#table' }}"
class="{{ request()->routeIs('school.table.venue') ? $currentTab : $notCurrentTab }} whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ __('Venues') }}</a>
<a href="{{ route('school.table.course', ['country' => $country]).'#table' }}"
class="{{ request()->routeIs('school.table.course') ? $currentTab : $notCurrentTab }} whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ __('Courses') }}</a>
<a href="{{ route('school.table.event', ['country' => $country]).'#table' }}"
class="{{ request()->routeIs('school.table.event') ? $currentTab : $notCurrentTab }} whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ __('Dates') }}</a>
</nav>
</div>
</div>
</div>
</div>

View File

@@ -1,198 +0,0 @@
<div class="min-h-screen bg-21gray flex flex-col justify-between">
<section class="relative px-10 pt-16 pb-24 sm:py-16 sm:overflow-hidden">
<img class="absolute h-43 left-0 z-0 w-3/4 transform -translate-y-1/2 opacity-70 top-1/2"
src="{{ asset('img/gradient-blob.svg') }}">
<img class="absolute left-0 z-0 object-cover object-center w-full h-full opacity-50 top-24"
src="{{ asset('img/swirl-white.svg') }}">
<div class="container relative z-10 px-4 mx-auto">
<div class="w-full mb-8 sm:w-1/2 md:w-3/4 sm:pr-4 md:pr-12 sm:-mb-32 md:-mb-24 lg:-mb-36 xl:-mb-28">
<h2 class="tracking-widest text-amber-500 uppercase">{{ __('Einundzwanzig') }}</h2>
<p class="my-3 text-5xl font-bold tracking-tighter text-amber-500 lg:text-6xl">{{ __('Bitcoin Portal') }}</p>
<p class="max-w-sm text-lg text-gray-200">
{{ __('A Bitcoin community for all.') }}
</p>
<div
class="max-w-sm text-lg text-gray-200 space-y-2 sm:space-y-0 sm:space-x-2 flex flex-col sm:flex-row items-start sm:items-end">
<x-native-select
label="{{ __('Change country') }}"
wire:model="c"
option-label="name"
option-value="code"
:options="$countries"
/>
<x-select
label="{{ __('Change language') }}"
wire:model="l"
:clearable="false"
:searchable="true"
:async-data="route('api.languages.index')"
option-label="name"
option-value="language"
/>
<div class="py-2 sm:py-0">
@if(!auth()->check())
<x-button secondary href="{{ route('auth.login') }}">
<i class="fa-thin fa-sign-in"></i>
{{ __('Login') }}
</x-button>
@else
<form method="POST" action="{{ route('logout') }}" class="inline">
@csrf
<x-button secondary type="submit">
<i class="fa-thin fa-sign-out"></i>
{{ __('Logout') }}
</x-button>
</form>
@endif
</div>
</div>
</div>
<div class="grid w-full grid-cols-1 gap-8 sm:grid-cols-2 md:grid-cols-3 xl:grid-cols-4">
{{-- News --}}
<div class="row-span-2 col-span-full sm:col-span-1 md:col-start-1 sm:row-start-2 md:row-start-3">
<a href="{{ route('article.overview') }}"
class="relative flex flex-col items-start justify-end w-full h-full overflow-hidden bg-black shadow-lg rounded-xl group"
style="aspect-ratio: 1/1;">
<div class="absolute inset-0 w-full h-full">
<div
class="absolute bottom-0 left-0 z-10 w-full h-full opacity-30 bg-gradient-to-b from-transparent to-gray-900"></div>
<img
class="bg-white absolute inset-0 object-contain object-center w-full h-full transition duration-500 lg:opacity-80 group-hover:opacity-100 group-hover:scale-110"
src="{{ asset('img/einundzwanzig-news-colored.png') }}" alt="">
</div>
<div class="relative z-10 flex flex-col items-start justify-start w-full px-6 py-7">
<h4 class="text-4xl font-bold tracking-tight text-gray-100 sm:text-3xl md:text-2xl lg:text-3xl">
{{ __('News') }}
</h4>
</div>
</a>
</div>
<div
class="row-span-2 col-span-full sm:col-span-1 md:col-start-1 xl:col-start-2 sm:row-start-4 md:row-start-5 xl:row-start-2">
<a href="{{ route('school.table.course', ['country' => $c]) }}"
class="relative flex flex-col items-start justify-end w-full h-full overflow-hidden bg-black shadow-lg rounded-xl group"
style="aspect-ratio: 1/1;">
<div class="absolute inset-0 w-full h-full">
<div
class="absolute bottom-0 left-0 z-10 w-full h-full opacity-30 bg-gradient-to-b from-transparent to-gray-900"></div>
<img
class="absolute inset-0 object-cover object-center w-full h-full transition duration-500 lg:opacity-80 group-hover:opacity-100 group-hover:scale-110"
src="{{ asset('img/vhs_kurs.jpg') }}" alt="">
</div>
<div class="relative z-10 flex flex-col items-start justify-start w-full px-6 py-7">
<span
class="px-2 py-1 mb-3 text-xs font-semibold tracking-tight text-white uppercase bg-amber-500 rounded-md">{{ __('Education') }}</span>
<h4 class="text-4xl font-bold tracking-tight text-gray-100 sm:text-3xl md:text-2xl lg:text-3xl">
{{ __('Courses') }}
</h4>
</div>
</a>
</div>
<div
class="row-span-2 col-span-full sm:col-span-1 md:col-start-2 xl:col-start-2 sm:row-start-6 md:row-start-2 xl:row-start-4">
<a href="{{ route('library.table.libraryItems', ['country' => $c]) }}"
class="relative flex flex-col items-start justify-end w-full h-full overflow-hidden bg-black shadow-lg rounded-xl group"
style="aspect-ratio: 1/1;">
<div class="absolute inset-0 w-full h-full">
<div
class="absolute bottom-0 left-0 z-10 w-full h-full opacity-30 bg-gradient-to-b from-transparent to-gray-900"></div>
<img
class="absolute inset-0 object-cover object-center w-full h-full transition duration-500 lg:opacity-80 group-hover:opacity-100 group-hover:scale-110"
src="{{ asset('img/news_2.png') }}" alt="">
</div>
<div class="relative z-10 flex flex-col items-start justify-start w-full px-6 py-7">
<span
class="px-2 py-1 mb-3 text-xs font-semibold tracking-tight text-white uppercase bg-amber-500 rounded-md">{{ _('Content') }}</span>
<h4 class="text-4xl font-bold tracking-tight text-gray-100 sm:text-3xl md:text-2xl lg:text-3xl">
{{ __('Library') }}
</h4>
</div>
</a>
</div>
<div
class="row-span-2 col-span-full sm:col-span-1 md:col-start-2 xl:col-start-3 sm:row-start-1 md:row-start-4 xl:row-start-1">
<a href="{{ route('bitcoinEvent.table.bitcoinEvent', ['country' => $c]) }}"
class="relative flex flex-col items-start justify-end w-full h-full overflow-hidden bg-black shadow-lg rounded-xl group"
style="aspect-ratio: 1/1;">
<div class="absolute inset-0 w-full h-full">
<div
class="absolute bottom-0 left-0 z-10 w-full h-full opacity-30 bg-gradient-to-b from-transparent to-gray-900"></div>
<img
class="absolute inset-0 object-cover object-center w-full h-full transition duration-500 lg:opacity-80 group-hover:opacity-100 group-hover:scale-110"
src="{{ asset('img/20220915_007_industryday.webp') }}" alt="">
</div>
<div class="relative z-10 flex flex-col items-start justify-start w-full px-6 py-7">
<span
class="px-2 py-1 mb-3 text-xs font-semibold tracking-tight text-white uppercase bg-amber-500 rounded-md">{{ __('Worldwide') }}</span>
<h4 class="text-2xl sm:text-4xl font-bold tracking-tight text-gray-100 sm:text-3xl md:text-2xl lg:text-3xl">
{{ __('Events') }}
</h4>
</div>
</a>
</div>
<div
class="row-span-2 col-span-full sm:col-span-1 md:col-start-3 xl:col-start-3 sm:row-start-3 md:row-start-1 xl:row-start-3">
<a href="{{ route('bookCases.world', ['country' => $c]) }}"
class="relative flex flex-col items-start justify-end w-full h-full overflow-hidden bg-black shadow-lg rounded-xl group"
style="aspect-ratio: 1/1;">
<div class="absolute inset-0 w-full h-full">
<div
class="absolute bottom-0 left-0 z-10 w-full h-full opacity-30 bg-gradient-to-b from-transparent to-gray-900"></div>
<img
class="absolute inset-0 object-cover object-center w-full h-full transition duration-500 lg:opacity-80 group-hover:opacity-100 group-hover:scale-110"
src="{{ asset('img/bookcase.jpg') }}" alt="">
</div>
<div class="relative z-10 flex flex-col items-start justify-start w-full px-6 py-7">
<span
class="px-2 py-1 mb-3 text-xs font-semibold tracking-tight text-white uppercase bg-amber-500 rounded-md">{{ __('Reading') }}</span>
<h4 class="text-4xl font-bold tracking-tight text-gray-100 sm:text-3xl md:text-2xl lg:text-3xl">
{{ __('Bookcases') }}
</h4>
</div>
</a>
</div>
<div
class="row-span-2 col-span-full sm:col-span-1 md:col-start-3 xl:col-start-4 sm:row-start-5 md:row-start-3 xl:row-start-2">
<a href="{{ route('meetup.table.meetup', ['country' => $c]) }}"
class="relative flex flex-col items-start justify-end w-full h-full overflow-hidden bg-black shadow-lg rounded-xl group"
style="aspect-ratio: 1/1;">
<div class="absolute inset-0 w-full h-full">
<div
class="absolute bottom-0 left-0 z-10 w-full h-full bg-gradient-to-b from-transparent to-gray-900 opacity-30"></div>
<img
class="absolute inset-0 object-cover object-center w-full h-full transition duration-500 lg:opacity-80 group-hover:opacity-100 group-hover:scale-110"
src="{{ asset('img/meetup_saarland.jpg') }}" alt="">
</div>
<div class="relative z-10 flex flex-col items-start justify-start w-full px-6 py-7">
<h4 class="text-4xl font-bold tracking-tight text-gray-100 sm:text-3xl md:text-2xl lg:text-3xl">
{{ __('Meetups') }}
</h4>
</div>
</a>
</div>
</div>
</div>
</section>
{{-- FOOTER --}}
<div class="bottom-0 w-full">
<livewire:frontend.footer/>
</div>
<div wire:ignore class="z-50 hidden md:block">
<script
src="{{ asset('dist/einundzwanzig.chat.js') }}"
data-website-owner-pubkey="daf83d92768b5d0005373f83e30d4203c0b747c170449e02fea611a0da125ee6"
data-chat-type="GLOBAL"
data-chat-tags="#einundzwanzig_portal"
data-relays="wss://nostr.einundzwanzig.space,wss://nostr.easify.de,wss://nostr.mom,wss://relay.damus.io,wss://relay.snort.social"
></script>
<link rel="stylesheet" href="{{ asset('dist/einundzwanzig.chat.css') }}">
</div>
</div>

View File

@@ -1,94 +0,0 @@
<div>
<section class="w-full">
<div class="max-w-screen-2xl mx-auto px-10">
<div class="flex flex-col flex-wrap items-center justify-between py-7 mx-auto md:flex-row max-w-screen-2xl">
<div class="relative flex flex-col md:flex-row">
<a href="#_"
class="flex items-center mb-5 font-medium text-gray-900 lg:w-auto lg:items-center lg:justify-center md:mb-0">
<img src="{{ asset('img/einundzwanzig-horizontal-inverted.svg') }}">
</a>
<nav
class="flex flex-wrap items-center mb-5 text-lg md:mb-0 md:pl-8 md:ml-8 md:border-l md:border-gray-800">
<a href="#_" class="mr-5 font-medium leading-6 text-gray-400 hover:text-gray-300">{{ __('Cities') }}</a>
<a href="#_" class="mr-5 font-medium leading-6 text-gray-400 hover:text-gray-300">{{ __('Lecturers') }}</a>
<a href="#_" class="mr-5 font-medium leading-6 text-gray-400 hover:text-gray-300">{{ __('Courses') }}</a>
<a href="#_" class="mr-5 font-medium leading-6 text-gray-400 hover:text-gray-300">{{ __('Dates') }}</a>
</nav>
</div>
<div class="inline-flex items-center ml-5 text-lg space-x-6 lg:justify-end">
<a href="{{ route('nova.login') }}"
class="text-base font-medium leading-6 text-gray-400 hover:text-gray-300 whitespace-no-wrap transition duration-150 ease-in-out">
{{ __('Login') }}
</a>
<a href="#"
class="inline-flex items-center justify-center px-4 py-2 font-medium leading-6 text-gray-200 hover:text-white whitespace-no-wrap bg-gray-800 border border-transparent rounded shadow-sm hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-800">
{{ __('Registration') }}
</a>
</div>
</div>
<div class="flex lg:flex-row flex-col pt-4 md:pt-4 lg:pt-4">
<div
class="w-full lg:w-1/2 flex lg:px-0 px-5 flex-col md:items-center lg:items-start justify-center -mt-12">
<h1 class="text-white text-3xl sm:text-5xl lg:max-w-none max-w-4xl lg:text-left text-left md:text-center xl:text-7xl font-black">
Bitcoin <span
class="bg-clip-text text-transparent bg-gradient-to-br from-yellow-400 via-yellow-500 to-yellow-700 mt-1 lg:block">{{ __('School') }}</span>
</h1>
<p class="text-gray-500 sm:text-lg md:text-xl xl:text-2xl lg:max-w-none max-w-2xl md:text-center lg:text-left lg:pr-32 mt-6">
{{ __('Find Bitcoin courses in your city') }}
</p>
<a href="#_"
class="bg-white px-12 lg:px-16 py-4 text-center lg:py-5 font-bold rounded text-lg md:text-xl lg:text-2xl mt-8 inline-block w-auto">
{{ __('👇 Find a course 👇') }}
</a>
<p class="text-gray-400 font-normal mt-4">{{-- TEXT --}}</p>
</div>
<div class="w-full lg:w-1/2 relative lg:mt-0 mt-20 flex items-center justify-center">
{{--<img src="https://cdn.devdojo.com/images/march2022/mesh-gradient1.png"
class="absolute lg:max-w-none max-w-3xl mx-auto mt-32 w-full h-full inset-0">--}}
<img src="{{ asset('img/btc-logo-6219386_1280.png') }}"
class="w-full md:w-auto w-72 max-w-md max-w-sm ml-4 md:ml-20 lg:ml-0 xl:max-w-lg relative">
</div>
</div>
</div>
</section>
<section class="w-full mb-12">
<div class="max-w-screen-2xl mx-auto px-10">
<div class="border-b border-gray-200 pb-5 sm:pb-0 my-6">
<h3 class="text-lg font-medium leading-6 text-gray-200">{{ __('Search') }}</h3>
<div class="mt-3 sm:mt-4">
<!-- Dropdown menu on small screens -->
<div class="sm:hidden">
<label for="current-tab" class="sr-only">{{ __('Select a tab') }}</label>
<select id="current-tab" name="current-tab"
class="block w-full rounded-md border-gray-300 py-2 pl-3 pr-10 text-base focus:border-indigo-500 focus:outline-none focus:ring-indigo-500 sm:text-sm">
<option>{{ __('Cities') }}</option>
<option>{{ __('Lecturers') }}</option>
<option>{{ __('Courses') }}</option>
<option>{{ __('Dates') }}</option>
</select>
</div>
<!-- Tabs at small breakpoint and up -->
<div class="hidden sm:block">
<nav class="-mb-px flex space-x-8">
<!-- Current: "border-indigo-200 text-indigo-600", Default: "border-transparent text-gray-200 hover:text-gray-400 hover:border-gray-300" -->
<a href="#"
class="border-transparent text-gray-200 hover:text-gray-400 hover:border-gray-300 whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ __('Cities') }}</a>
<a href="#"
class="border-amber-500 text-amber-500 hover:border-gray-300 whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ __('Lecturers') }}</a>
<a href="#"
class="border-transparent text-gray-200 hover:text-gray-400 hover:border-gray-300 whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ __('Courses') }}</a>
<a href="#"
class="border-transparent text-gray-200 hover:text-gray-400 hover:border-gray-300 whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ __('Dates') }}</a>
</nav>
</div>
</div>
</div>
<livewire:tables.lecturer-table/>
</div>
</section>
</div>

View File

@@ -1,33 +0,0 @@
<div>
<div
class="mt-10 flex flex-col items-center justify-center gap-x-6 bg-white pb-12">
@if(!$invoicePaid)
<div class="text-xl font-semibold text-gray-900 py-6 px-2">
Deine Nachricht wird live vorgelesen.
Fülle zuerst das Textfeld mit deiner Nachricht aus
und bezahle erst danach mit Lightning.
</div>
<div class="text-xl font-semibold text-gray-900 py-6 w-full px-12">
<x-textarea wire:model="message" label="Deine Nachricht hier" corner-hint="max. 255 Zeichen"/>
</div>
<div class="text-xl font-semibold text-gray-900 py-6 px-2">
{{ __('Click QR-Code to open your wallet') }}
</div>
<div class="flex justify-center" wire:key="qrcode">
<a href="lightning:{{ $this->invoice }}">
<img src="{{ 'data:image/png;base64, '. $this->qrCode }}"
alt="qrcode">
</a>
</div>
<div class="text-xl font-semibold text-gray-900 py-6">
21 sats
</div>
<div wire:poll.keep-alive="checkPaymentHash"
wire:key="checkPaymentHash"></div>
@else
<div class="text-xl font-semibold text-gray-900 py-6">
Danke für deine Nachricht. Wenn alles klappt, dann werden wir die Nachricht gleich hören.
</div>
@endif
</div>
</div>

View File

@@ -1,216 +0,0 @@
<div>
{{-- HEADER --}}
<livewire:frontend.header :country="null"/>
<div class="container p-4 mx-auto bg-21gray my-2">
<div class="pb-5 flex flex-row justify-between">
<h3 class="text-lg font-medium leading-6 text-gray-200">{{ __('Library Item') }}</h3>
<div class="flex flex-row space-x-2 items-center">
<div>
<x-button :href="$fromUrl">
<i class="fa fa-thin fa-arrow-left"></i>
{{ __('Back') }}
</x-button>
</div>
</div>
</div>
<form class="space-y-8 divide-y divide-gray-700 pb-24">
<div class="space-y-8 divide-y divide-gray-700 sm:space-y-5">
<div class="mt-6 sm:mt-5 space-y-6 sm:space-y-5">
<x-input.group :for="md5('libraryItem.lecturer_id')">
<x-slot name="label">
<div class="flex flex-row space-x-4 items-center">
<div>
{{ __('Author') }}
</div>
<div>
<x-button xs :href="route('contentCreator.form')">
<i class="fa fa-thin fa-plus"></i>
{{ __('Create new author') }}
</x-button>
</div>
</div>
</x-slot>
<x-select
:clearable="false"
wire:model="libraryItem.lecturer_id"
:searchable="true"
:async-data="[
'api' => route('api.lecturers.index'),
'method' => 'GET', // default is GET
]"
:template="[
'name' => 'user-option',
'config' => ['src' => 'image']
]"
option-label="name"
option-value="id"
/>
</x-input.group>
<x-input.group :for="md5('libraryItem.type')" label="{{ __('Type') }}">
<x-select
:clearable="false"
wire:model="libraryItem.type"
:options="$types"
option-label="label"
option-value="value"
/>
</x-input.group>
<x-input.group :for="md5('library')" label="{{ __('Library') }}">
<x-select
:disabled="$lecturer"
hint="{{ __('Please classify by type of your entry.') }}"
:clearable="false"
wire:model="library"
:options="$libraries"
option-label="name"
option-value="id"
/>
</x-input.group>
<x-input.group :for="md5('selectedTags')" :label="__('Tags')">
<x-slot name="label">
<div class="flex flex-row space-x-4 items-center">
<div>
{{ __('Tags') }}
</div>
@if(!$addTag)
<x-button
xs
wire:click="$set('addTag', true)"
>
<i class="fa fa-thin fa-plus"></i>
{{ __('Add') }}
</x-button>
@else
<x-input label="" wire:model.debounce="newTag" placeholder="{{ __('New tag') }}"/>
<x-button
xs
wire:click="addTag">
<i class="text-xl fa-thin fa-save"></i>
</x-button>
@endif
</div>
</x-slot>
<div class="py-2 flex flex-wrap items-center space-x-1">
@foreach($tags as $tag)
<div class="cursor-pointer" wire:key="tag{{ $loop->index }}"
wire:click="selectTag('{{ $tag['name'] }}')">
@if(collect($selectedTags)->contains($tag['name']))
<x-badge
amber>
{{ $tag['name'] }}
</x-badge>
@else
<x-badge
black>
{{ $tag['name']}}
</x-badge>
@endif
</div>
@endforeach
</div>
</x-input.group>
@if($libraryItem->lecturer_id && $libraryItem->type && $library && count($selectedTags) > 0)
<x-input.group :for=" md5('image')" :label="__('Main picture')">
<div class="py-4">
@if ($image && str($image->getMimeType())->contains(['image/jpeg','image/jpg', 'image/png', 'image/gif', 'image/svg+xml', 'image/webp']))
<div class="text-gray-200">{{ __('Preview') }}:</div>
<img class="h-48 object-contain" src="{{ $image->temporaryUrl() }}">
@endif
@if ($libraryItem->getFirstMediaUrl('main'))
<div class="text-gray-200">{{ __('Current picture') }}:</div>
<img class="h-48 object-contain" src="{{ $libraryItem->getFirstMediaUrl('main') }}">
@endif
</div>
<input class="text-gray-200" type="file" wire:model="image">
@error('image') <span class="text-red-500">{{ $message }}</span> @enderror
</x-input.group>
@if(!$isBindle)
<x-input.group :for="md5('libraryItem.main_image_caption')"
:label="__('Main image caption')">
<x-input autocomplete="off" wire:model.debounce="libraryItem.main_image_caption"
:placeholder="__('Main image caption')"
:cornerHint="__('Ex: Photo by Timothy Vollmer/ CC BY')"/>
</x-input.group>
@endif
<x-input.group :for="md5('libraryItem.name')" :label="__('Title')">
<x-input autocomplete="off" wire:model.debounce="libraryItem.name"
:placeholder="__('Title')"/>
</x-input.group>
@if(!$isBindle)
<x-input.group :for="md5('libraryItem.subtitle')" :label="__('Subtitle')">
<x-input autocomplete="off" wire:model.debounce="libraryItem.subtitle"
:placeholder="__('Subtitle')"/>
</x-input.group>
<x-input.group :for="md5('libraryItem.excerpt')" :label="__('Excerpt')">
<x-textarea autocomplete="off" wire:model.debounce="libraryItem.excerpt"
:placeholder="__('Excerpt')"/>
</x-input.group>
<x-input.group :for="md5('libraryItem.language_code')" :label="__('Language Code')">
<x-select
placeholder="{{ __('Choose language') }}"
wire:model="libraryItem.language_code"
:clearable="false"
:searchable="true"
:async-data="route('api.languages.index')"
option-label="name"
option-value="language"
/>
</x-input.group>
@endif
@if($libraryItem->type === App\Enums\LibraryItemType::MarkdownArticleExtern())
<x-input.group :for="md5('libraryItem.value')" :label="__('Article as Markdown')">
<div
class="text-amber-500 text-xs py-2">{{ __('For images in Markdown, please use eg. Imgur or another provider.') }}</div>
<x-input.simple-mde wire:model.defer="libraryItem.value"/>
@error('libraryItem.value') <span
class="text-red-500 py-2">{{ $message }}</span> @enderror
</x-input.group>
@elseif($libraryItem->type !== App\Enums\LibraryItemType::DownloadableFile())
<x-input.group :for="md5('libraryItem.value')" :label="__('Link')">
<x-input type="url" autocomplete="off" wire:model.debounce="libraryItem.value"
:placeholder="__('Link')"/>
</x-input.group>
@elseif($libraryItem->type === App\Enums\LibraryItemType::DownloadableFile())
<x-input.group :for="md5('file')" :label="__('File')">
<input class="text-gray-200" type="file" wire:model="file">
@error('file') <span class="text-red-500">{{ $message }}</span> @enderror
</x-input.group>
@endif
@if(!$isBindle)
<x-input.group :for="md5('libraryItem.read_time')" :label="__('Time to read')">
<x-inputs.number min="1" autocomplete="off" wire:model.debounce="libraryItem.read_time"
:placeholder="__('Time to read')"
:hint="__('How many minutes to read?')"/>
</x-input.group>
@endif
<x-input.group :for="md5('meetupEvent.link')" label="">
<x-button primary wire:click="save">
<i class="fa fa-thin fa-save"></i>
{{ __('Save') }}
</x-button>
</x-input.group>
@endif
</div>
</div>
</form>
</div>
<script src="https://cdn.jsdelivr.net/npm/easymde/dist/easymde.min.js"></script>
</div>

View File

@@ -1,184 +0,0 @@
<div class="bg-21gray flex flex-col h-screen justify-between">
{{-- HEADER --}}
<livewire:frontend.header :country="$country"/>
<div class="max-w-screen-2xl mx-auto">
<div class="w-full mb-6 sm:my-6">
<div class="flex w-full justify-center mb-4">
<x-button primary :href="route('library.libraryItem.form', ['country' => $country])">
<i class="fa-thin fa-plus"></i>
{{ __('Submit contents') }}
</x-button>
</div>
<x-input class="sm:min-w-[900px]" placeholder="Suche..." wire:model.debounce="search">
<x-slot name="append">
<div class="absolute inset-y-0 right-0 flex items-center p-0.5">
<x-button
wire:click="resetFiltering({{ $isLecturerPage }})"
class="h-full rounded-r-md"
black
flat
squared
>
<i class="fa-thin fa-xmark"></i>
</x-button>
</div>
</x-slot>
</x-input>
</div>
</div>
{{-- MAIN --}}
<section class="w-full mb-12">
<div class="max-w-screen-2xl mx-auto px-2 sm:px-10" id="table">
<div class="relative border-b border-gray-200 pb-5 sm:pb-0">
<div class="md:flex md:items-center md:justify-between">
@if(request()->route()->getName() === 'library.table.lecturer')
<h3 class="text-2xl font-medium leading-6 text-gray-200">{{ __('Lecturer Libraries') }}</h3>
@else
<h3 class="text-2xl font-medium leading-6 text-gray-200">{{ __('Libraries') }}</h3>
@endif
<x-button wire:click="resetFiltering({{ $isLecturerPage }})"
xs>{{ __('Reset filtering and search') }}</x-button>
</div>
<div class="mt-4">
<!-- Dropdown menu on small screens -->
{{--<div class="sm:hidden">
<label for="current-tab" class="sr-only">Select a tab</label>
<select id="current-tab" name="current-tab" class="block w-full rounded-md border-gray-300 py-2 pl-3 pr-10 text-base focus:border-amber-500 focus:outline-none focus:ring-amber-500 sm:text-sm">
<option>Applied</option>
<option>Phone Screening</option>
<option>Interview</option>
<option>Offer</option>
<option>Hired</option>
</select>
</div>--}}
<!-- Tabs at small breakpoint and up -->
<div class="hidden sm:block">
<nav class="-mb-px flex space-x-8">
@foreach($libraries as $library)
@php
$currentLibraryClass = $currentTab === $library['name'] ? 'border-amber-500 text-amber-600' : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300';
@endphp
@if($isLecturerPage)
<a href="{{ route('library.table.lecturer', ['country' => $country, 'currentTab' => $library['name']]) }}"
class="{{ $currentLibraryClass }} whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ $library['name'] }}</a>
@else
<a href="{{ route('library.table.libraryItems', ['country' => $country, 'currentTab' => $library['name']]) }}"
class="{{ $currentLibraryClass }} whitespace-nowrap pb-4 px-1 border-b-2 font-medium text-sm">{{ $library['name'] }}</a>
@endif
@endforeach
</nav>
</div>
</div>
</div>
<livewire:library.search-by-tag-component/>
<div class="my-12">
<div wire:loading.class="opacity-25"
class="mx-auto mt-12 grid max-w-lg gap-5 lg:max-w-none lg:grid-cols-3">
@foreach($libraryItems as $libraryItem)
@php
$link = $isLecturerPage ? route('lecturerMaterial.view', ['libraryItem' => $libraryItem]) : route('libraryItem.view', ['libraryItem' => $libraryItem]);
@endphp
<div wire:key="library_item_{{ $libraryItem->id }}"
class="flex flex-col overflow-hidden rounded-lg border-2 border-[#F7931A]">
<div class="flex-shrink-0 pt-6">
<a href="{{ $link }}">
<img class="h-48 w-full object-contain"
src="{{ $libraryItem->getFirstMediaUrl('main', 'seo') }}"
alt="{{ $libraryItem->name }}">
</a>
</div>
<div class="flex flex-1 flex-col justify-between bg-21gray p-6">
<div class="flex-1">
<div class="text-sm font-medium text-amber-600">
<div
class="text-amber-500">{{ $libraryItem->tags->pluck('name')->join(', ') }}</div>
</div>
<a href="{{ $link }}"
class="mt-2 block">
<p class="text-xl font-semibold text-gray-200">{{ $libraryItem->name }}</p>
<p class="mt-3 text-base text-gray-300 line-clamp-6">{{ strip_tags($libraryItem->excerpt) }}</p>
</a>
</div>
<div class="mt-6 flex items-center">
<div class="flex-shrink-0">
<div>
<span
class="sr-only text-gray-200">{{ $libraryItem->lecturer->name }}</span>
<img class="h-10 w-10 object-cover rounded"
src="{{ $libraryItem->lecturer->getFirstMediaUrl('avatar') }}"
alt="{{ $libraryItem->lecturer->name }}">
</div>
</div>
<div class="ml-3">
<div class="text-sm font-medium text-gray-200">
<div class="text-gray-200">{{ $libraryItem->lecturer->name }}</div>
</div>
<div class="flex space-x-1 text-sm text-gray-400">
<time
datetime="2020-03-16">{{ $libraryItem->created_at->asDateTime() }}</time>
@if($libraryItem->read_time)
<span aria-hidden="true">&middot;</span>
<span>{{ $libraryItem->read_time }} {{ __('min read') }}</span>
@endif
</div>
<div
class="flex space-x-1 text-sm text-gray-500 justify-end items-end">
<div>
<x-button xs
:href="route('library.libraryItem.form', ['country' => $country, 'libraryItem' => $libraryItem])">
<i class="fa fa-thin fa-edit"></i>
{{ __('Edit') }}
</x-button>
</div>
</div>
</div>
</div>
</div>
</div>
@endforeach
<div
x-data="{
observe () {
let observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
@this.call('loadMore')
}
})
}, {
root: null
})
observer.observe(this.$el)
}
}"
x-init="observe"
></div>
@if($libraryItems->hasMorePages())
<x-button outline wire:click.prevent="loadMore">{{ __('load more...') }}</x-button>
@endif
</div>
</div>
</div>
</section>
{{-- FOOTER --}}
<livewire:frontend.footer/>
<div wire:ignore class="z-50 hidden md:block">
<script
src="{{ asset('dist/einundzwanzig.chat.js') }}"
data-website-owner-pubkey="daf83d92768b5d0005373f83e30d4203c0b747c170449e02fea611a0da125ee6"
data-chat-type="GLOBAL"
data-chat-tags="#einundzwanzig_portal_library"
data-relays="wss://nostr.einundzwanzig.space,wss://nostr.easify.de,wss://nostr.mom,wss://relay.damus.io,wss://relay.snort.social"
></script>
<link rel="stylesheet" href="{{ asset('dist/einundzwanzig.chat.css') }}">
</div>
</div>

View File

@@ -1,130 +0,0 @@
<div class="bg-21gray flex flex-col h-screen justify-between">
{{-- HEADER --}}
<livewire:frontend.header :country="$country"/>
<div class="max-w-screen-2xl mx-auto">
<div class="w-full mb-6 sm:my-6">
<x-input class="sm:min-w-[900px]" placeholder="Suche..." wire:model.debounce="search">
<x-slot name="append">
<div class="absolute inset-y-0 right-0 flex items-center p-0.5">
<x-button
wire:click="resetFiltering()"
class="h-full rounded-r-md"
black
flat
squared
>
<i class="fa-thin fa-xmark"></i>
</x-button>
</div>
</x-slot>
</x-input>
</div>
</div>
{{-- MAIN --}}
<section class="w-full mb-12">
<div class="max-w-screen-2xl mx-auto px-2 sm:px-10" id="table">
<div class="relative border-b border-gray-200 pb-5 sm:pb-0">
<div class="md:flex md:items-center md:justify-between py-6">
<h3 class="text-2xl font-medium leading-6 text-gray-200">{{ __('Podcast Episodes') }}</h3>
<x-button wire:click="resetFiltering()"
xs>
{{ __('Reset filtering and search') }}
</x-button>
</div>
</div>
<div class="my-12">
<div wire:loading.class="opacity-25"
class="mx-auto mt-12 grid max-w-lg gap-5 lg:max-w-none lg:grid-cols-3">
@foreach($episodes as $episode)
<div wire:key="episode_{{ $episode->id }}"
class="flex flex-col overflow-hidden rounded-lg border-2 border-[#F7931A]">
<div class="flex-shrink-0 pt-6">
<a href="{{ $episode->data['link'] }}" target="_blank">
<img class="h-48 w-full object-contain"
src="{{ !empty($episode->data['image']) ? $episode->data['image'] : $episode->podcast->data['image'] }}"
alt="{{ $episode->data['title'] }}">
</a>
</div>
<div class="flex flex-1 flex-col justify-between bg-21gray p-6">
<div class="flex-1">
<div class="text-sm font-medium text-amber-600">
<div
class="text-amber-500">{{ __('Language') }}: {{ $episode->data['feedLanguage'] }}</div>
</div>
<a href="{{ $episode->data['link'] }}" target="_blank"
class="mt-2 block">
<p class="text-xl font-semibold text-gray-200">{{ $episode->data['title'] }}</p>
<p class="prose mt-3 text-base text-gray-300 line-clamp-3">{{ strip_tags($episode->data['description']) }}</p>
</a>
</div>
<div class="mt-6 flex items-center">
<div class="flex-shrink-0">
<div>
<span
class="sr-only text-gray-200">{{ $episode->podcast->title }}</span>
<img class="h-10 w-10 object-cover rounded"
src="{{ $episode->podcast->data['image'] }}"
alt="{{ $episode->podcast->data['title'] }}">
</div>
</div>
<div class="ml-3">
<div class="text-sm font-medium text-gray-200">
<div class="text-gray-200">{{ $episode->podcast->title }}</div>
</div>
<div class="flex space-x-1 text-sm text-gray-400">
<time
datetime="2020-03-16">{{ \App\Support\Carbon::parse($episode->data['datePublished'])->asDateTime() }}</time>
<span aria-hidden="true">&middot;</span>
<span>{{ round($episode->data['duration'] / 60) }} {{ __('minutes') }}</span>
</div>
</div>
</div>
</div>
</div>
@endforeach
<div
x-data="{
observe () {
let observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
@this.call('loadMore')
}
})
}, {
root: null
})
observer.observe(this.$el)
}
}"
x-init="observe"
></div>
@if($episodes->hasMorePages())
<x-button outline wire:click.prevent="loadMore">{{ __('load more...') }}</x-button>
@endif
</div>
</div>
</div>
</section>
{{-- FOOTER --}}
<livewire:frontend.footer/>
<div wire:ignore class="z-50 hidden md:block">
<script
src="{{ asset('dist/einundzwanzig.chat.js') }}"
data-website-owner-pubkey="daf83d92768b5d0005373f83e30d4203c0b747c170449e02fea611a0da125ee6"
data-chat-type="GLOBAL"
data-chat-tags="#einundzwanzig_portal_podcasts"
data-relays="wss://nostr.einundzwanzig.space,wss://nostr.easify.de,wss://nostr.mom,wss://relay.damus.io,wss://relay.snort.social"
></script>
<link rel="stylesheet" href="{{ asset('dist/einundzwanzig.chat.css') }}">
</div>
</div>

View File

@@ -1,52 +0,0 @@
<div>
<div
class="flex overflow-auto relative flex-wrap gap-x-1 gap-y-1 justify-left p-0 mx-auto mt-2 mb-2 w-full font-normal text-white align-baseline border-0 border-solid md:mx-auto md:mb-0 md:max-w-screen-2xl"
>
@foreach($languages as $language)
<div
class="flex flex-wrap justify-left p-0 m-0 text-center align-baseline border-0 border-solid"
style="font-size: 128%; background-position: 0px center; list-style: outside;"
>
<a
href="{{ route(request()->route()->getName(), ['country' => $country, 'filters' => ['language' => [$language]]]) }}"
>
@if(in_array($language, $filters['language'] ?? [], false))
<x-badge squared amber>
{{ $language }}
</x-badge>
@else
<x-badge squared gray>
{{ $language }}
</x-badge>
@endif
</a>
</div>
@endforeach
</div>
<div
class="flex overflow-auto relative flex-wrap gap-x-1 gap-y-1 justify-left p-0 mx-auto mt-2 mb-2 w-full font-normal text-white align-baseline border-0 border-solid md:mx-auto md:mb-0 md:max-w-screen-2xl"
>
@foreach($tags as $tag)
<div
class="flex flex-wrap justify-left p-0 m-0 text-center align-baseline border-0 border-solid"
style="font-size: 128%; background-position: 0px center; list-style: outside;"
>
<a
href="{{ route(request()->route()->getName(), ['country' => $country, 'filters' => ['tag' => [$tag->id]]]) }}"
>
@if(in_array($tag->id, $filters['tag'] ?? [], false))
<x-badge squared amber>
<i class="fa fa-thin fa-{{ $tag->icon }}"></i>
{{ $tag->name }}
</x-badge>
@else
<x-badge squared gray>
<i class="fa fa-thin fa-{{ $tag->icon }}"></i>
{{ $tag->name }}
</x-badge>
@endif
</a>
</div>
@endforeach
</div>
</div>

View File

@@ -1,50 +0,0 @@
<div class="h-full {{ $darkMode ? 'bg-21gray' : 'bg-transparent' }}">
@php
$focus = '';
$map = $country->code . '_merc';
if (!\File::exists(public_path('vendor/jvector/maps/' . $country->code . '.js'))) {
$map = 'europe_merc';
$focus = 'focusOn: {lat:'.$country->latitude.',lng:'.$country->longitude.',scale:8,animate:true},';
}
@endphp
<div
wire:ignore
class="w-full flex justify-center h-full"
x-data="{
init() {
let markers = {{ Js::from($markers) }};
$('#map').vectorMap({
{{ $focus }}
zoomButtons : true,
zoomOnScroll: true,
map: '{{ $map }}',
backgroundColor: 'transparent',
markers: markers.map(function(h){ return {name: h.name, latLng: h.coords, url: h.url} }),
onMarkerClick: function(event, index) {
window.open(
markers[index].url,
'_blank'
);
},
markerStyle: {
initial: {
image: '{{ asset('img/btc.png') }}',
}
},
regionStyle: {
initial: {
fill: '#a4a4a4'
},
hover: {
'fill-opacity': 1,
cursor: 'default'
},
}
});
}
}"
>
<div id="map" style="width: 100%; height: 100vh;" class="my-4 sm:my-0"></div>
</div>
</div>

View File

@@ -1,123 +0,0 @@
<div>
{{-- HEADER --}}
<livewire:frontend.header :country="null"/>
<div class="container p-4 mx-auto bg-21gray my-2">
<div class="pb-5 flex flex-row justify-between">
<h3 class="text-lg font-medium leading-6 text-gray-200">{{ __('Meetup Event') }}</h3>
<div class="flex flex-row space-x-2 items-center">
<div>
@if($meetupEvent->id)
<x-button negative wire:click="deleteMe">
<i class="fa fa-thin fa-trash"></i>
{{ __('Delete') }}
</x-button>
@endif
</div>
<div>
<x-button :href="$fromUrl">
<i class="fa fa-thin fa-arrow-left"></i>
{{ __('Back') }}
</x-button>
</div>
</div>
</div>
<form class="space-y-8 divide-y divide-gray-700 pb-24">
<div class="space-y-8 divide-y divide-gray-700 sm:space-y-5">
<div class="mt-6 sm:mt-5 space-y-6 sm:space-y-5">
<x-input.group :for="md5('meetup_id')" :label="__('Meetup')">
<x-select
autocomplete="off"
wire:model.debounce="meetupEvent.meetup_id"
:placeholder="__('Meetup')"
:async-data="[
'api' => route('api.meetup.index'),
'method' => 'GET', // default is GET
'params' => ['user_id' => auth()->id()], // default is []
]"
:template="[
'name' => 'user-option',
'config' => ['src' => 'profile_image']
]"
option-label="name"
option-value="id"
option-description="city.name"
/>
</x-input.group>
<x-input.group :for="md5('meetupEvent.start')" :label="__('Start')">
<x-datetime-picker
:clearable="false"
time-format="24"
timezone="UTC"
user-timezone="{{ config('app.user-timezone') }}"
autocomplete="off"
wire:model.debounce="meetupEvent.start"
display-format="DD-MM-YYYY HH:mm"
:placeholder="__('Start')"/>
</x-input.group>
@if(!$meetupEvent->id && $meetupEvent->start)
<x-input.group :for="md5('recurringid')" :label="__('Recurring appointment / monthly')">
<x-toggle lg :label="__('Recurring appointment')" wire:model="recurring"/>
<p class="text-xs text-amber-400 py-2">{{ __('The recurring appointments are created in the database as new entries. Please be careful with this function, otherwise you will have to change or delete all the appointments you have created manually if you make an error.') }}</p>
</x-input.group>
@endif
@if($recurring)
<x-input.group :for="md5('repetitions')" :label="__('Number of repetitions')">
<x-input type="number" autocomplete="off" wire:model.debounce="repetitions"
:placeholder="__('Number of repetitions')"/>
</x-input.group>
@endif
<x-input.group :for="md5('meetupEvent.location')" :label="__('Location')">
<x-input autocomplete="off" wire:model.debounce="meetupEvent.location"
:placeholder="__('Location')"/>
</x-input.group>
<x-input.group :for="md5('meetupEvent.description')" :label="__('Description')">
<x-textarea autocomplete="off" wire:model.debounce="meetupEvent.description"
:placeholder="__('Description')"/>
</x-input.group>
<x-input.group :for="md5('meetupEvent.link')" :label="__('Link')">
<x-input type="url" autocomplete="off" wire:model.debounce="meetupEvent.link"
:placeholder="__('Link')"
:hint="__('For example, a link to a location on Google Maps or a link to a website. (not your Telegram group link)')"/>
</x-input.group>
<x-input.group :for="md5('grid')" :label="__('Recurring appointments')">
@if($recurring && count($series) === $repetitions)
<div class="grid grid-cols-1 lg:grid-cols-3 gap-2">
@for($i = 0; $i < $repetitions; $i++)
<x-datetime-picker
:label="\App\Support\Carbon::parse($series[$i]['start'])->asDayNameAndMonthName()"
:clearable="false"
time-format="24"
timezone="UTC"
user-timezone="{{ config('app.user-timezone') }}"
autocomplete="off"
wire:model.debounce="series.{{ $i }}.start"
display-format="DD-MM-YYYY HH:mm"
:placeholder="__('Start')"/>
@endfor
</div>
@endif
</x-input.group>
<x-input.group :for="md5('meetupEvent.link')" :label="__('Action')">
<x-button primary wire:click="submit">
<i class="fa fa-thin fa-save"></i>
{{ __('Save') }}
</x-button>
</x-input.group>
</div>
</div>
</form>
</div>
</div>

View File

@@ -1,137 +0,0 @@
<div>
{{-- HEADER --}}
<livewire:frontend.header :country="null"/>
<div class="container p-4 mx-auto bg-21gray my-2">
<div class="pb-5 flex flex-row justify-between">
<h3 class="text-lg font-medium leading-6 text-gray-200">{{ __('Meetup') }}</h3>
<div class="flex flex-row space-x-2 items-center">
<div>
<x-button :href="$fromUrl">
<i class="fa fa-thin fa-arrow-left"></i>
{{ __('Back') }}
</x-button>
</div>
</div>
</div>
<form class="space-y-8 divide-y divide-gray-700 pb-24">
<div class="space-y-8 divide-y divide-gray-700 sm:space-y-5">
<div class="mt-6 sm:mt-5 space-y-6 sm:space-y-5">
<x-input.group :for="md5('image')" :label="__('Main picture')">
<div class="py-4">
@if ($image && str($image->getMimeType())->contains(['image/jpeg','image/jpg', 'image/png', 'image/gif', 'image/svg+xml', 'image/webp']))
<div class="text-gray-200">{{ __('Preview') }}:</div>
<img class="h-48 object-contain" src="{{ $image->temporaryUrl() }}">
@endif
@if ($meetup->getFirstMediaUrl('logo'))
<div class="text-gray-200">{{ __('Current picture') }}:</div>
<img class="h-48 object-contain" src="{{ $meetup->getFirstMediaUrl('logo') }}">
@endif
</div>
<input class="text-gray-200" type="file" wire:model="image">
@error('image') <span class="text-red-500">{{ $message }}</span> @enderror
</x-input.group>
<x-input.group :for="md5('meetup.name')" :label="__('Name')">
<x-input autocomplete="off" wire:model.debounce="meetup.name"
:placeholder="__('Name')"
/>
</x-input.group>
<x-input.group :for="md5('meetup.community')" :label="__('Community')">
<x-select
:options="['einundzwanzig', 'bitcoin', 'satoshis_coffeeshop']"
:clearable="false"
autocomplete="off"
wire:model.debounce="meetup.community"
:placeholder="__('Community')"
:hint="__('This is the community that the meetup belongs to. If a community is not listed, please contact the administrator.')"
/>
</x-input.group>
<x-input.group :for="md5('city_id')">
<x-slot name="label">
<div class="flex flex-row space-x-4 items-center">
<div>
{{ __('City/Area') }}
</div>
<x-button xs :href="route('city.form')">
<i class="fa fa-thin fa-plus"></i>
{{ __('New City') }}
</x-button>
</div>
</x-slot>
<x-select
:clearable="false"
autocomplete="off"
wire:model.debounce="meetup.city_id"
:placeholder="__('City/Area')"
:async-data="[
'api' => route('api.cities.index'),
'method' => 'GET', // default is GET
]"
option-label="name"
option-value="id"
option-description="country.name"
/>
</x-input.group>
<x-input.group :for="md5('meetup.intro')" :label="__('Intro')">
<x-textarea autocomplete="off" wire:model.debounce="meetup.intro"
:placeholder="__('Intro')"
:hint="__('This is the introduction text that is shown on the landing page.')"
/>
</x-input.group>
<x-input.group :for="md5('meetup.nostr')" :label="__('Nostr public key')">
<x-input autocomplete="off" wire:model.debounce="meetup.nostr"
:placeholder="__('Nostr public key')"
/>
</x-input.group>
<x-input.group :for="md5('meetup.simplex')" :label="__('Simplex')">
<x-input autocomplete="off" wire:model.debounce="meetup.simplex"
:placeholder="__('Simplex')"
/>
</x-input.group>
<x-input.group :for="md5('meetup.matrix_group')" :label="__('Matrix Group')">
<x-input autocomplete="off" wire:model.debounce="meetup.matrix_group"
:placeholder="__('Matrix Group')"
/>
</x-input.group>
<x-input.group :for="md5('meetup.telegram_link')" :label="__('Telegram-Link')">
<x-input autocomplete="off" wire:model.debounce="meetup.telegram_link"
:placeholder="__('Telegram-Link')"
/>
</x-input.group>
<x-input.group :for="md5('meetup.webpage')" :label="__('Website')">
<x-input type="url" autocomplete="off" wire:model.debounce="meetup.webpage"
:placeholder="__('Link')"/>
</x-input.group>
<x-input.group :for="md5('meetup.twitter_username')" :label="__('Twitter Username')">
<x-input autocomplete="off" wire:model.debounce="meetup.twitter_username"
:placeholder="__('Twitter Username')"
:hint="__('Without @')"
/>
</x-input.group>
<x-input.group :for="md5('meetup.link')" :label="__('Action')">
<x-button primary wire:click="submit">
<i class="fa fa-thin fa-save"></i>
{{ __('Save') }}
</x-button>
</x-input.group>
</div>
</div>
</form>
</div>
</div>

Some files were not shown because too many files have changed in this diff Show More