mirror of
https://github.com/Einundzwanzig-Podcast/einundzwanzig-portal.git
synced 2025-12-11 06:46:47 +00:00
cleanup and start with nostr
This commit is contained in:
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -1,3 +0,0 @@
|
||||
<div class="w-12 h-12">
|
||||
<img class="object-cover" src="{{ $row->getFirstMediaUrl('main', 'thumb') }}" alt="{{ $row->name }}">
|
||||
</div>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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/>
|
||||
|
||||
@@ -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/>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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> — Map data © <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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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: '© <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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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">·</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>
|
||||
@@ -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">·</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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
Reference in New Issue
Block a user