mirror of
https://github.com/HolgerHatGarKeineNode/einundzwanzig-nostr.git
synced 2026-01-28 07:43:18 +00:00
🎨 Update color palette: replace gray with zinc across Blade templates for improved design consistency and accessibility.
🛠 Refactor forms: rename NostrAuth method for clarity and enhance Flux button usage for cleaner and reusable components.
✨ Add `WithNostrAuth` trait: refactor `show` template logic, streamline project-support handling, and improve layout readability.
This commit is contained in:
@@ -168,7 +168,7 @@ new class extends Component {
|
||||
|
||||
<!-- Left: Title -->
|
||||
<div class="mb-4 sm:mb-0">
|
||||
<h1 class="text-2xl md:text-3xl text-gray-800 dark:text-gray-100 font-bold">
|
||||
<h1 class="text-2xl md:text-3xl text-zinc-800 dark:text-zinc-100 font-bold">
|
||||
Wahl des Vorstands {{ $election->year }}
|
||||
</h1>
|
||||
</div>
|
||||
@@ -183,9 +183,9 @@ new class extends Component {
|
||||
<!-- Cards -->
|
||||
<div class="grid gap-y-4">
|
||||
<div wire:key="presidency" wire:ignore
|
||||
class="flex flex-col bg-white dark:bg-gray-800 shadow-sm rounded-xl">
|
||||
<header class="px-5 py-4 border-b border-gray-100 dark:border-gray-700/60">
|
||||
<h2 class="font-semibold text-gray-800 dark:text-gray-100"><i
|
||||
class="flex flex-col bg-white dark:bg-zinc-800 shadow-sm rounded-xl">
|
||||
<header class="px-5 py-4 border-b border-zinc-100 dark:border-zinc-700/60">
|
||||
<h2 class="font-semibold text-zinc-800 dark:text-zinc-100"><i
|
||||
class="fa-sharp-duotone fa-solid {{ $president['icon'] }} w-5 h-5 fill-current text-white mr-4"></i>{{ $president['title'] }}
|
||||
</h2>
|
||||
</header>
|
||||
@@ -196,9 +196,9 @@ new class extends Component {
|
||||
</div>
|
||||
</div>
|
||||
<div wire:key="board" wire:ignore
|
||||
class="flex flex-col bg-white dark:bg-gray-800 shadow-sm rounded-xl">
|
||||
<header class="px-5 py-4 border-b border-gray-100 dark:border-gray-700/60">
|
||||
<h2 class="font-semibold text-gray-800 dark:text-gray-100"><i
|
||||
class="flex flex-col bg-white dark:bg-zinc-800 shadow-sm rounded-xl">
|
||||
<header class="px-5 py-4 border-b border-zinc-100 dark:border-zinc-700/60">
|
||||
<h2 class="font-semibold text-zinc-800 dark:text-zinc-100"><i
|
||||
class="fa-sharp-duotone fa-solid {{ $board['icon'] }} w-5 h-5 fill-current text-white mr-4"></i>{{ $board['title'] }}
|
||||
</h2>
|
||||
</header>
|
||||
|
||||
@@ -124,7 +124,7 @@ new class extends Component {
|
||||
->get()
|
||||
->map(function ($p) use ($loadedEvents, $c) {
|
||||
$votedClass = ' bg-green-500/20 text-green-700';
|
||||
$notVotedClass = ' bg-gray-500/20 text-gray-100';
|
||||
$notVotedClass = ' bg-zinc-500/20 text-zinc-100';
|
||||
$hasVoted = $loadedEvents
|
||||
->filter(fn ($e) => $e['type'] === $c['type'] && $e['pubkey'] === $this->currentPubkey)
|
||||
->firstWhere('votedFor.pubkey', $p->pubkey);
|
||||
@@ -158,7 +158,7 @@ new class extends Component {
|
||||
->get()
|
||||
->map(function ($p) use ($loadedBoardEvents, $c) {
|
||||
$votedClass = ' bg-green-500/20 text-green-700';
|
||||
$notVotedClass = ' bg-gray-500/20 text-gray-100';
|
||||
$notVotedClass = ' bg-zinc-500/20 text-zinc-100';
|
||||
$hasVoted = $loadedBoardEvents
|
||||
->filter(fn ($e) => $e['type'] === $c['type'] && $e['pubkey'] === $this->currentPubkey)
|
||||
->firstWhere('votedFor.pubkey', $p->pubkey);
|
||||
@@ -311,13 +311,13 @@ new class extends Component {
|
||||
class="absolute z-20 top-0 bottom-0 w-full md:w-auto md:static md:top-auto md:bottom-auto -mr-px md:translate-x-0 transition-transform duration-200 ease-in-out"
|
||||
:class="inboxSidebarOpen ? 'translate-x-0' : '-translate-x-full'">
|
||||
<div
|
||||
class="sticky top-16 bg-white dark:bg-[#1B1B1B] overflow-x-hidden overflow-y-auto no-scrollbar shrink-0 border-r border-gray-200 dark:border-gray-700/60 md:w-[18rem] xl:w-[20rem] h-[calc(100dvh-64px)]">
|
||||
class="sticky top-16 bg-white dark:bg-[#1B1B1B] overflow-x-hidden overflow-y-auto no-scrollbar shrink-0 border-r border-zinc-200 dark:border-zinc-700/60 md:w-[18rem] xl:w-[20rem] h-[calc(100dvh-64px)]">
|
||||
|
||||
<!-- #Marketing group -->
|
||||
<div>
|
||||
<!-- Group header -->
|
||||
<div class="sticky top-0 z-10">
|
||||
<div class="flex items-center bg-white dark:bg-[#1B1B1B] border-b border-gray-200 dark:border-gray-700/60 px-5 h-16">
|
||||
<div class="flex items-center bg-white dark:bg-[#1B1B1B] border-b border-zinc-200 dark:border-zinc-700/60 px-5 h-16">
|
||||
<div class="w-full flex items-center justify-between">
|
||||
<!-- Channel menu -->
|
||||
<div class="relative" x-data="{ open: false }">
|
||||
@@ -325,16 +325,16 @@ new class extends Component {
|
||||
@click.prevent="open = !open" :aria-expanded="open">
|
||||
<div class="truncate">
|
||||
<span
|
||||
class="font-semibold text-gray-800 dark:text-gray-100">2024</span>
|
||||
class="font-semibold text-zinc-800 dark:text-zinc-100">2024</span>
|
||||
</div>
|
||||
<svg
|
||||
class="w-3 h-3 shrink-0 ml-1 fill-current text-gray-400 dark:text-gray-500"
|
||||
class="w-3 h-3 shrink-0 ml-1 fill-current text-zinc-400 dark:text-zinc-500"
|
||||
viewBox="0 0 12 12">
|
||||
<path d="M5.9 11.4L.5 6l1.4-1.4 4 4 4-4L11.3 6z"/>
|
||||
</svg>
|
||||
</button>
|
||||
<div
|
||||
class="origin-top-right z-10 absolute top-full left-0 min-w-60 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700/60 py-1.5 rounded-lg shadow-lg overflow-hidden mt-1"
|
||||
class="origin-top-right z-10 absolute top-full left-0 min-w-60 bg-white dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-700/60 py-1.5 rounded-lg shadow-lg overflow-hidden mt-1"
|
||||
@click.outside="open = false" @keydown.escape.window="open = false"
|
||||
x-show="open"
|
||||
x-transition:enter="transition ease-out duration-200 transform"
|
||||
@@ -346,7 +346,7 @@ new class extends Component {
|
||||
x-cloak>
|
||||
<ul>
|
||||
<li>
|
||||
<a class="font-medium text-sm text-gray-600 dark:text-gray-300 hover:text-gray-800 dark:hover:text-gray-200 block py-1.5 px-3"
|
||||
<a class="font-medium text-sm text-zinc-600 dark:text-zinc-300 hover:text-zinc-800 dark:hover:text-zinc-200 block py-1.5 px-3"
|
||||
href="#0" @click="open = false" @focus="open = true"
|
||||
@focusout="open = false">
|
||||
<div class="flex items-center justify-between">
|
||||
@@ -375,11 +375,11 @@ new class extends Component {
|
||||
<label for="inbox-search" class="sr-only">Search</label>
|
||||
<input
|
||||
wire:model.live.debounce="search"
|
||||
id="inbox-search" class="form-input w-full pl-9 bg-white dark:bg-gray-800"
|
||||
id="inbox-search" class="form-input w-full pl-9 bg-white dark:bg-zinc-800"
|
||||
type="search" placeholder="Suche…"/>
|
||||
<button class="absolute inset-0 right-auto group" type="submit" aria-label="Search">
|
||||
<svg
|
||||
class="shrink-0 fill-current text-gray-400 dark:text-gray-500 group-hover:text-gray-500 dark:group-hover:text-gray-400 ml-3 mr-2"
|
||||
class="shrink-0 fill-current text-zinc-400 dark:text-zinc-500 group-hover:text-zinc-500 dark:group-hover:text-zinc-400 ml-3 mr-2"
|
||||
width="16" height="16" viewBox="0 0 16 16"
|
||||
xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
@@ -391,7 +391,7 @@ new class extends Component {
|
||||
</form>
|
||||
<!-- Inbox -->
|
||||
<div class="mt-4">
|
||||
<div class="text-xs font-semibold text-gray-400 dark:text-gray-500 uppercase mb-3">
|
||||
<div class="text-xs font-semibold text-zinc-400 dark:text-zinc-500 uppercase mb-3">
|
||||
Plebs
|
||||
</div>
|
||||
<ul class="mb-6">
|
||||
@@ -408,16 +408,16 @@ new class extends Component {
|
||||
<div class="flex items-center justify-between mb-1.5">
|
||||
<div class="truncate">
|
||||
<span
|
||||
class="text-sm font-semibold text-gray-800 dark:text-gray-100 truncate">{{ $pleb['profile']['name'] ?? $pleb['pubkey'] }}</span>
|
||||
class="text-sm font-semibold text-zinc-800 dark:text-zinc-100 truncate">{{ $pleb['profile']['name'] ?? $pleb['pubkey'] }}</span>
|
||||
</div>
|
||||
<div class="text-xs text-gray-500 font-medium">
|
||||
<div class="text-xs text-zinc-500 font-medium">
|
||||
<x-badge
|
||||
:color="\App\Enums\AssociationStatus::from($pleb['association_status'])->color()"
|
||||
:label="\App\Enums\AssociationStatus::from($pleb['association_status'])->label()"/>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="text-xs font-medium text-gray-800 dark:text-gray-100 truncate mb-0.5">
|
||||
class="text-xs font-medium text-zinc-800 dark:text-zinc-100 truncate mb-0.5">
|
||||
<div class="flex items-center space-x-2 h-5">
|
||||
@foreach($positions as $name => $p)
|
||||
@php
|
||||
@@ -451,7 +451,7 @@ new class extends Component {
|
||||
<!-- Header -->
|
||||
<div class="sticky top-16">
|
||||
<div
|
||||
class="flex items-center justify-between before:absolute before:inset-0 before:backdrop-blur-md before:bg-gray-50/90 dark:before:bg-[#1B1B1B]/90 before:-z-10 border-b border-gray-200 dark:border-gray-700/60 px-4 sm:px-6 md:px-5 h-16">
|
||||
class="flex items-center justify-between before:absolute before:inset-0 before:backdrop-blur-md before:bg-zinc-50/90 dark:before:bg-[#1B1B1B]/90 before:-z-10 border-b border-zinc-200 dark:border-zinc-700/60 px-4 sm:px-6 md:px-5 h-16">
|
||||
<div
|
||||
class="flex flex-col space-y-2 sm:space-y-0 sm:flex-row justify-between items-center w-full">
|
||||
<div>
|
||||
@@ -476,7 +476,7 @@ new class extends Component {
|
||||
|
||||
<!-- Mail subject -->
|
||||
<header class="sm:flex sm:items-start space-x-4 mb-4">
|
||||
<h1 class="text-xl leading-snug text-gray-800 dark:text-gray-100 font-bold mb-1 sm:mb-0 ml-2">
|
||||
<h1 class="text-xl leading-snug text-zinc-800 dark:text-zinc-100 font-bold mb-1 sm:mb-0 ml-2">
|
||||
Wahlen
|
||||
</h1>
|
||||
<button
|
||||
@@ -487,11 +487,11 @@ new class extends Component {
|
||||
|
||||
<!-- Messages box -->
|
||||
<div
|
||||
class="shadow-sm rounded-xl px-6 divide-y divide-gray-200 dark:divide-gray-700/60">
|
||||
class="shadow-sm rounded-xl px-6 divide-y divide-zinc-200 dark:divide-zinc-700/60">
|
||||
|
||||
<!-- Mail -->
|
||||
<div class="py-6">
|
||||
<h1 class="text-xl leading-snug text-gray-800 dark:text-gray-100 font-bold mb-1 sm:mb-0 ml-2">
|
||||
<h1 class="text-xl leading-snug text-zinc-800 dark:text-zinc-100 font-bold mb-1 sm:mb-0 ml-2">
|
||||
Wahl des Präsidiums
|
||||
</h1>
|
||||
<div class="grid sm:grid-cols-2 gap-6">
|
||||
@@ -503,7 +503,7 @@ new class extends Component {
|
||||
</header>
|
||||
<div class="grow mt-2">
|
||||
<div
|
||||
class="inline-flex text-gray-800 dark:text-gray-100 hover:text-gray-900 dark:hover:text-white mb-1">
|
||||
class="inline-flex text-zinc-800 dark:text-zinc-100 hover:text-zinc-900 dark:hover:text-white mb-1">
|
||||
<h2 class="text-xl leading-snug font-semibold">{{ $positions['presidency']['title'] }}</h2>
|
||||
</div>
|
||||
<div class="text-sm">
|
||||
@@ -541,7 +541,7 @@ new class extends Component {
|
||||
</flux:card>
|
||||
</div>
|
||||
|
||||
<h1 class="mt-6 text-xl leading-snug text-gray-800 dark:text-gray-100 font-bold mb-1 sm:mb-0 ml-2">
|
||||
<h1 class="mt-6 text-xl leading-snug text-zinc-800 dark:text-zinc-100 font-bold mb-1 sm:mb-0 ml-2">
|
||||
Wahl der übrigen Vorstandsmitglieder
|
||||
</h1>
|
||||
<div class="grid gap-6">
|
||||
@@ -583,18 +583,18 @@ new class extends Component {
|
||||
<div x-cloak x-show="showLog" class="mt-6 hidden sm:block">
|
||||
<flux:card mb-8>
|
||||
<header class="px-5 py-4">
|
||||
<h2 class="font-semibold text-gray-800 dark:text-gray-100">Präsidium Log <span
|
||||
class="text-gray-400 dark:text-gray-500 font-medium">{{ count($this->loadedEvents) }}</span>
|
||||
<h2 class="font-semibold text-zinc-800 dark:text-zinc-100">Präsidium Log <span
|
||||
class="text-zinc-400 dark:text-zinc-500 font-medium">{{ count($this->loadedEvents) }}</span>
|
||||
</h2>
|
||||
</header>
|
||||
<div>
|
||||
<!-- Table -->
|
||||
<div class="overflow-x-auto">
|
||||
<table
|
||||
class="table-auto w-full dark:text-gray-300 divide-y divide-gray-100 dark:divide-gray-700/60">
|
||||
class="table-auto w-full dark:text-zinc-300 divide-y divide-zinc-100 dark:divide-zinc-700/60">
|
||||
<!-- Table header -->
|
||||
<thead
|
||||
class="text-xs uppercase text-gray-500 dark:text-gray-400 bg-gray-50 dark:bg-gray-900/20 border-t border-gray-100 dark:border-gray-700/60">
|
||||
class="text-xs uppercase text-zinc-500 dark:text-zinc-400 bg-zinc-50 dark:bg-zinc-900/20 border-t border-zinc-100 dark:border-zinc-700/60">
|
||||
<tr>
|
||||
<th class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div class="font-semibold text-left">ID</div>
|
||||
@@ -650,18 +650,18 @@ new class extends Component {
|
||||
<div x-cloak x-show="showLog" class="mt-6 hidden sm:block">
|
||||
<flux:card mb-8>
|
||||
<header class="px-5 py-4">
|
||||
<h2 class="font-semibold text-gray-800 dark:text-gray-100">Board Log <span
|
||||
class="text-gray-400 dark:text-gray-500 font-medium">{{ count($this->loadedBoardEvents) }}</span>
|
||||
<h2 class="font-semibold text-zinc-800 dark:text-zinc-100">Board Log <span
|
||||
class="text-zinc-400 dark:text-zinc-500 font-medium">{{ count($this->loadedBoardEvents) }}</span>
|
||||
</h2>
|
||||
</header>
|
||||
<div>
|
||||
<!-- Table -->
|
||||
<div class="overflow-x-auto">
|
||||
<table
|
||||
class="table-auto w-full dark:text-gray-300 divide-y divide-gray-100 dark:divide-gray-700/60">
|
||||
class="table-auto w-full dark:text-zinc-300 divide-y divide-zinc-100 dark:divide-zinc-700/60">
|
||||
<!-- Table header -->
|
||||
<thead
|
||||
class="text-xs uppercase text-gray-500 dark:text-gray-400 bg-gray-50 dark:bg-gray-900/20 border-t border-gray-100 dark:border-gray-700/60">
|
||||
class="text-xs uppercase text-zinc-500 dark:text-zinc-400 bg-zinc-50 dark:bg-zinc-900/20 border-t border-zinc-100 dark:border-zinc-700/60">
|
||||
<tr>
|
||||
<th class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div class="font-semibold text-left">ID</div>
|
||||
|
||||
@@ -129,7 +129,7 @@ class extends Component {
|
||||
|
||||
<!-- Title -->
|
||||
<header class="mb-6">
|
||||
<h1 class="text-2xl md:text-3xl text-gray-800 dark:text-gray-100 font-bold">
|
||||
<h1 class="text-2xl md:text-3xl text-zinc-800 dark:text-zinc-100 font-bold">
|
||||
News
|
||||
</h1>
|
||||
</header>
|
||||
@@ -142,7 +142,7 @@ class extends Component {
|
||||
<!-- Group 1 -->
|
||||
<div>
|
||||
<div
|
||||
class="text-xs font-semibold text-gray-400 dark:text-gray-500 uppercase mb-3 md:sr-only">
|
||||
class="text-xs font-semibold text-zinc-400 dark:text-zinc-500 uppercase mb-3 md:sr-only">
|
||||
Menu
|
||||
</div>
|
||||
<ul class="flex flex-nowrap md:block mr-3 md:mr-0">
|
||||
@@ -180,7 +180,7 @@ class extends Component {
|
||||
<!-- Content -->
|
||||
<div class="grow">
|
||||
<!-- Title -->
|
||||
<h2 class="font-semibold text-gray-800 dark:text-gray-100 mb-2">
|
||||
<h2 class="font-semibold text-zinc-800 dark:text-zinc-100 mb-2">
|
||||
{{ $post->name }}
|
||||
</h2>
|
||||
<p class="mb-6">
|
||||
@@ -189,7 +189,7 @@ class extends Component {
|
||||
<!-- Footer -->
|
||||
<footer class="flex flex-wrap text-sm">
|
||||
<div
|
||||
class="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-gray-400 dark:after:text-gray-600 after:px-2">
|
||||
class="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-zinc-400 dark:after:text-zinc-600 after:px-2">
|
||||
<div
|
||||
class="font-medium text-amber-500 hover:text-amber-600 dark:hover:text-amber-400">
|
||||
<div class="flex items-center">
|
||||
@@ -204,9 +204,9 @@ class extends Component {
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-gray-400 dark:after:text-gray-600 after:px-2">
|
||||
class="flex items-center after:block after:content-['·'] last:after:content-[''] after:text-sm after:text-zinc-400 dark:after:text-zinc-600 after:px-2">
|
||||
<span
|
||||
class="text-gray-500">{{ $post->created_at->format('d.m.Y') }}</span>
|
||||
class="text-zinc-500">{{ $post->created_at->format('d.m.Y') }}</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
@@ -274,7 +274,7 @@ class extends Component {
|
||||
@if($canEdit)
|
||||
<flux:card>
|
||||
<div
|
||||
class="text-xs font-semibold text-gray-400 dark:text-gray-200 uppercase mb-4">
|
||||
class="text-xs font-semibold text-zinc-400 dark:text-zinc-200 uppercase mb-4">
|
||||
News anlegen
|
||||
</div>
|
||||
<div class="mt-4 flex flex-col space-y-2">
|
||||
@@ -348,7 +348,7 @@ class extends Component {
|
||||
<flux:heading>Zugriff auf News nicht möglich</flux:heading>
|
||||
<p>Um die News einzusehen, benötigst du:</p>
|
||||
<ul class="list-disc ml-5 mt-2 space-y-1">
|
||||
<li>Einen Vereinsstatus von mindestens 2 (Aktives Mitglied)</li>
|
||||
<li>Einen Vereinsstatus von "Aktives Mitglied"</li>
|
||||
<li>Eine bezahlte Mitgliedschaft für das aktuelle Jahr ({{ date('Y') }})</li>
|
||||
</ul>
|
||||
<p class="mt-3">
|
||||
|
||||
@@ -295,7 +295,7 @@ new class extends Component {
|
||||
<div>
|
||||
<!-- Header -->
|
||||
<div class="mb-8">
|
||||
<h1 class="text-2xl md:text-3xl text-[#1B1B1B] dark:text-gray-100 font-bold">
|
||||
<h1 class="text-2xl md:text-3xl text-[#1B1B1B] dark:text-zinc-100 font-bold">
|
||||
Einundzwanzig ist, was du draus machst
|
||||
</h1>
|
||||
</div>
|
||||
@@ -321,10 +321,10 @@ new class extends Component {
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-1 min-w-0">
|
||||
<h3 class="text-lg font-semibold text-gray-800 dark:text-gray-100 mb-1">
|
||||
<h3 class="text-lg font-semibold text-zinc-800 dark:text-zinc-100 mb-1">
|
||||
Nostr Relay
|
||||
</h3>
|
||||
<p class="text-sm text-gray-600 dark:text-gray-400">
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400">
|
||||
Exklusive Schreib-Rechte auf Premium Nostr Relay von Einundzwanzig.
|
||||
</p>
|
||||
</div>
|
||||
@@ -342,10 +342,10 @@ new class extends Component {
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-1 min-w-0">
|
||||
<h3 class="text-lg font-semibold text-gray-800 dark:text-gray-100 mb-1">
|
||||
<h3 class="text-lg font-semibold text-zinc-800 dark:text-zinc-100 mb-1">
|
||||
Get NIP-05 verified
|
||||
</h3>
|
||||
<p class="text-sm text-gray-600 dark:text-gray-400">
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400">
|
||||
Verifiziere deine Identität mit einem menschenlesbaren Nostr-Namen.
|
||||
</p>
|
||||
</div>
|
||||
@@ -378,8 +378,8 @@ new class extends Component {
|
||||
|
||||
<!-- Rules Info -->
|
||||
<div
|
||||
class="mt-3 p-3 bg-white/50 dark:bg-gray-800/50 rounded border border-gray-200 dark:border-gray-600">
|
||||
<p class="text-xs text-gray-600 dark:text-gray-400 leading-relaxed">
|
||||
class="mt-3 p-3 bg-white/50 dark:bg-zinc-800/50 rounded border border-zinc-200 dark:border-zinc-600">
|
||||
<p class="text-xs text-zinc-600 dark:text-zinc-400 leading-relaxed">
|
||||
<strong>Regeln für dein Handle:</strong> Nur Kleinbuchstaben (a-z), Zahlen
|
||||
(0-9) und die Zeichen "-" und "_" sind erlaubt. Dein Handle wird automatisch
|
||||
kleingeschrieben.
|
||||
@@ -388,8 +388,8 @@ new class extends Component {
|
||||
|
||||
<!-- Explanation -->
|
||||
<div
|
||||
class="mt-4 p-3 bg-white/50 dark:bg-gray-800/50 rounded border border-gray-200 dark:border-gray-600">
|
||||
<p class="text-xs text-gray-600 dark:text-gray-400 leading-relaxed">
|
||||
class="mt-4 p-3 bg-white/50 dark:bg-zinc-800/50 rounded border border-zinc-200 dark:border-zinc-600">
|
||||
<p class="text-xs text-zinc-600 dark:text-zinc-400 leading-relaxed">
|
||||
<flux:link href="https://nostr.how/en/guides/get-verified#self-hosted"
|
||||
target="_blank">NIP-05
|
||||
</flux:link>
|
||||
@@ -401,7 +401,7 @@ new class extends Component {
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="text-xs text-gray-500 dark:text-gray-400 italic">
|
||||
<div class="text-xs text-zinc-500 dark:text-zinc-400 italic">
|
||||
Aktiviere deine Mitgliedschaft, um NIP-05 zu verifizieren.
|
||||
</div>
|
||||
@endif
|
||||
@@ -413,10 +413,10 @@ new class extends Component {
|
||||
<div class="flex items-start gap-3">
|
||||
<i class="fa-sharp-duotone fa-solid fa-star text-amber-500 mt-0.5"></i>
|
||||
<div>
|
||||
<p class="font-medium text-gray-800 dark:text-gray-100">
|
||||
<p class="font-medium text-zinc-800 dark:text-zinc-100">
|
||||
Mehr Vorteile kommen bald!
|
||||
</p>
|
||||
<p class="text-sm text-gray-600 dark:text-gray-400 mt-1">
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400 mt-1">
|
||||
Wir arbeiten ständig daran, unsere Mitglieder-Vorteile auszubauen.
|
||||
Bleib dran für neue exklusive Services und Kooperationen.
|
||||
</p>
|
||||
@@ -434,16 +434,16 @@ new class extends Component {
|
||||
<flux:callout variant="info">
|
||||
<div class="flex items-start gap-4">
|
||||
<img
|
||||
class="w-12 h-12 rounded-full shrink-0 border-2 border-gray-200 dark:border-gray-600"
|
||||
class="w-12 h-12 rounded-full shrink-0 border-2 border-zinc-200 dark:border-zinc-600"
|
||||
src="{{ $currentPleb->profile?->picture ?? asset('apple-touch-icon.png') }}"
|
||||
alt="Avatar"
|
||||
>
|
||||
<div class="flex-1 min-w-0">
|
||||
<div class="mb-2">
|
||||
<h4 class="font-semibold text-gray-800 dark:text-gray-100 text-base">
|
||||
<h4 class="font-semibold text-zinc-800 dark:text-zinc-100 text-base">
|
||||
{{ $currentPleb->profile?->display_name ?? $currentPleb->profile?->name ?? 'Unbekannt' }}
|
||||
</h4>
|
||||
<p class="text-xs text-gray-500 dark:text-gray-400 mt-0.5">
|
||||
<p class="text-xs text-zinc-500 dark:text-zinc-400 mt-0.5">
|
||||
@if($currentPleb->profile?->name)
|
||||
{{ $currentPleb->profile->name }}
|
||||
@endif
|
||||
@@ -451,24 +451,24 @@ new class extends Component {
|
||||
</div>
|
||||
<div class="space-y-1 text-xs">
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-gray-500 dark:text-gray-400 shrink-0">Pubkey:</span>
|
||||
<span class="text-zinc-500 dark:text-zinc-400 shrink-0">Pubkey:</span>
|
||||
<code
|
||||
class="bg-gray-100 dark:bg-gray-800 px-2 py-0.5 rounded text-gray-700 dark:text-gray-300 truncate font-mono">
|
||||
class="bg-zinc-100 dark:bg-zinc-800 px-2 py-0.5 rounded text-zinc-700 dark:text-zinc-300 truncate font-mono">
|
||||
{{ $currentPleb->pubkey }}
|
||||
</code>
|
||||
</div>
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-gray-500 dark:text-gray-400 shrink-0">Npub:</span>
|
||||
<span class="text-zinc-500 dark:text-zinc-400 shrink-0">Npub:</span>
|
||||
<code
|
||||
class="bg-gray-100 dark:bg-gray-800 px-2 py-0.5 rounded text-gray-700 dark:text-gray-300 truncate font-mono text-xs">
|
||||
class="bg-zinc-100 dark:bg-zinc-800 px-2 py-0.5 rounded text-zinc-700 dark:text-zinc-300 truncate font-mono text-xs">
|
||||
{{ $currentPleb->npub }}
|
||||
</code>
|
||||
</div>
|
||||
@if($currentPleb->nip05_handle)
|
||||
<div class="flex items-center gap-2">
|
||||
<span class="text-gray-500 dark:text-gray-400 shrink-0">NIP-05:</span>
|
||||
<span class="text-zinc-500 dark:text-zinc-400 shrink-0">NIP-05:</span>
|
||||
<code
|
||||
class="bg-gray-100 dark:bg-gray-800 px-2 py-0.5 rounded text-gray-700 dark:text-gray-300 font-mono text-xs">
|
||||
class="bg-zinc-100 dark:bg-zinc-800 px-2 py-0.5 rounded text-zinc-700 dark:text-zinc-300 font-mono text-xs">
|
||||
{{ $currentPleb->nip05_handle }}
|
||||
</code>
|
||||
</div>
|
||||
@@ -484,7 +484,7 @@ new class extends Component {
|
||||
@if(!$currentPleb)
|
||||
<!-- Nostr Login Apps Section -->
|
||||
<div class="space-y-4 mb-8">
|
||||
<h3 class="text-lg md:text-xl text-gray-500 dark:text-gray-400 italic mb-4">
|
||||
<h3 class="text-lg md:text-xl text-zinc-500 dark:text-zinc-400 italic mb-4">
|
||||
Empfohlene Nostr Login und Signer-Apps
|
||||
</h3>
|
||||
|
||||
@@ -494,11 +494,11 @@ new class extends Component {
|
||||
<div
|
||||
class="flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4">
|
||||
<div class="flex-1">
|
||||
<a class="font-semibold text-gray-800 dark:text-gray-100 hover:text-amber-500 dark:hover:text-amber-400 transition-colors"
|
||||
<a class="font-semibold text-zinc-800 dark:text-zinc-100 hover:text-amber-500 dark:hover:text-amber-400 transition-colors"
|
||||
href="https://github.com/greenart7c3/Amber">
|
||||
Amber
|
||||
</a>
|
||||
<p class="text-sm text-gray-600 dark:text-gray-400 mt-1">
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400 mt-1">
|
||||
Perfekt für mobile Android Geräte. Eine App, in der man alle Keys/nsecs
|
||||
verwalten kann.
|
||||
</p>
|
||||
@@ -513,11 +513,11 @@ new class extends Component {
|
||||
<div
|
||||
class="flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4">
|
||||
<div class="flex-1">
|
||||
<a class="font-semibold text-gray-800 dark:text-gray-100 hover:text-amber-500 dark:hover:text-amber-400 transition-colors"
|
||||
<a class="font-semibold text-zinc-800 dark:text-zinc-100 hover:text-amber-500 dark:hover:text-amber-400 transition-colors"
|
||||
href="https://addons.mozilla.org/en-US/firefox/addon/alby/">
|
||||
Alby - Bitcoin Lightning Wallet & Nostr
|
||||
</a>
|
||||
<p class="text-sm text-gray-600 dark:text-gray-400 mt-1">
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400 mt-1">
|
||||
Browser-Erweiterung in die man seinen Key/nsec eingeben kann. Pro Alby-Konto
|
||||
ein nsec.
|
||||
</p>
|
||||
@@ -532,11 +532,11 @@ new class extends Component {
|
||||
<div
|
||||
class="flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4">
|
||||
<div class="flex-1">
|
||||
<a class="font-semibold text-gray-800 dark:text-gray-100 hover:text-amber-500 dark:hover:text-amber-400 transition-colors"
|
||||
<a class="font-semibold text-zinc-800 dark:text-zinc-100 hover:text-amber-500 dark:hover:text-amber-400 transition-colors"
|
||||
href="https://chromewebstore.google.com/detail/nos2x/kpgefcfmnafjgpblomihpgmejjdanjjp">
|
||||
nos2x
|
||||
</a>
|
||||
<p class="text-sm text-gray-600 dark:text-gray-400 mt-1">
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400 mt-1">
|
||||
Browser-Erweiterung für Chrome Browser. Multi-Key fähig.
|
||||
</p>
|
||||
</div>
|
||||
@@ -550,11 +550,11 @@ new class extends Component {
|
||||
<div
|
||||
class="flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4">
|
||||
<div class="flex-1">
|
||||
<a class="font-semibold text-gray-800 dark:text-gray-100 hover:text-amber-500 dark:hover:text-amber-400 transition-colors"
|
||||
<a class="font-semibold text-zinc-800 dark:text-zinc-100 hover:text-amber-500 dark:hover:text-amber-400 transition-colors"
|
||||
href="https://addons.mozilla.org/en-US/firefox/addon/nos2x-fox/">
|
||||
nos2x-fox
|
||||
</a>
|
||||
<p class="text-sm text-gray-600 dark:text-gray-400 mt-1">
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400 mt-1">
|
||||
Browser-Erweiterung für Firefox Browser. Multi-Key fähig.
|
||||
</p>
|
||||
</div>
|
||||
@@ -568,14 +568,14 @@ new class extends Component {
|
||||
<!-- User Profile Display -->
|
||||
<div class="mt-6">
|
||||
<template x-if="$store.nostr.user">
|
||||
<div class="flex items-center gap-4 p-4 bg-gray-50 dark:bg-gray-800/50 rounded-lg">
|
||||
<div class="flex items-center gap-4 p-4 bg-zinc-50 dark:bg-zinc-800/50 rounded-lg">
|
||||
<img class="w-12 h-12 rounded-full"
|
||||
x-bind:src="$store.nostr.user.picture || '{{ asset('apple-touch-icon.png') }}'"
|
||||
alt="Avatar">
|
||||
<div class="flex-1 min-w-0">
|
||||
<h3 class="truncate text-lg leading-snug text-[#1B1B1B] dark:text-gray-100 font-bold"
|
||||
<h3 class="truncate text-lg leading-snug text-[#1B1B1B] dark:text-zinc-100 font-bold"
|
||||
x-text="$store.nostr.user.display_name"></h3>
|
||||
<div class="truncate text-sm text-gray-500 dark:text-gray-400"
|
||||
<div class="truncate text-sm text-zinc-500 dark:text-zinc-400"
|
||||
x-text="$store.nostr.user.name"></div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -589,7 +589,7 @@ new class extends Component {
|
||||
<path
|
||||
d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zM7 11.4L3.6 8 5 6.6l2 2 4-4L12.4 6 7 11.4z"></path>
|
||||
</svg>
|
||||
<p class="text-sm text-gray-700 dark:text-gray-300">Profil in der Datenbank
|
||||
<p class="text-sm text-zinc-700 dark:text-zinc-300">Profil in der Datenbank
|
||||
vorhanden.</p>
|
||||
</div>
|
||||
</flux:card>
|
||||
@@ -602,10 +602,10 @@ new class extends Component {
|
||||
<!-- Membership Registration Section -->
|
||||
<div class="space-y-4 py-6">
|
||||
<div>
|
||||
<h3 class="text-xl md:text-2xl text-[#1B1B1B] dark:text-gray-100 font-bold mb-2">
|
||||
<h3 class="text-xl md:text-2xl text-[#1B1B1B] dark:text-zinc-100 font-bold mb-2">
|
||||
Einundzwanzig Mitglied werden
|
||||
</h3>
|
||||
<p class="text-sm text-gray-600 dark:text-gray-400">
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400">
|
||||
Nur Personen können Mitglied werden und zahlen 21.000 Satoshis im Jahr.
|
||||
<a href="https://einundzwanzig.space/verein/"
|
||||
class="text-amber-500 hover:text-amber-600 dark:hover:text-amber-400 font-medium">
|
||||
@@ -637,11 +637,11 @@ new class extends Component {
|
||||
<div class="py-6">
|
||||
<flux:callout variant="warning" class="mb-6">
|
||||
<div class="space-y-4">
|
||||
<p class="font-medium text-gray-800 dark:text-gray-100">
|
||||
<p class="font-medium text-zinc-800 dark:text-zinc-100">
|
||||
Falls du möchtest, kannst du hier eine E-Mail Adresse hinterlegen, damit der Verein
|
||||
dich darüber informieren kann, wenn es Neuigkeiten gibt.
|
||||
</p>
|
||||
<p class="text-sm text-gray-600 dark:text-gray-400">
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400">
|
||||
Am besten eine anonymisierte E-Mail Adresse verwenden. Wir sichern diese Adresse
|
||||
AES-256 verschlüsselt in der Datenbank ab.
|
||||
</p>
|
||||
@@ -694,7 +694,7 @@ new class extends Component {
|
||||
d="M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 12c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zm1-3H7V4h2v5z"></path>
|
||||
</svg>
|
||||
<div>
|
||||
<p class="font-medium text-gray-800 dark:text-gray-100">
|
||||
<p class="font-medium text-zinc-800 dark:text-zinc-100">
|
||||
@if($currentYearIsPaid)
|
||||
<span class="text-green-600 dark:text-green-400">Du bist derzeit ein Mitglied des Vereins. Das aktuelle Jahr ist bezahlt.</span>
|
||||
@else
|
||||
@@ -712,7 +712,7 @@ new class extends Component {
|
||||
<div class="space-y-6">
|
||||
<!-- Payment Info -->
|
||||
<div>
|
||||
<h3 class="text-xl md:text-2xl text-gray-800 dark:text-gray-100 font-bold mb-4">
|
||||
<h3 class="text-xl md:text-2xl text-zinc-800 dark:text-zinc-100 font-bold mb-4">
|
||||
Mitgliedsbeitrag
|
||||
</h3>
|
||||
|
||||
@@ -729,7 +729,7 @@ new class extends Component {
|
||||
@endphp
|
||||
|
||||
@if(isset($latestEvent))
|
||||
<p class="text-gray-700 dark:text-gray-300 mb-6">{{ $latestEvent['content'] }}</p>
|
||||
<p class="text-zinc-700 dark:text-zinc-300 mb-6">{{ $latestEvent['content'] }}</p>
|
||||
|
||||
<!-- Payment Button -->
|
||||
<div class="flex justify-center py-6">
|
||||
@@ -763,8 +763,8 @@ new class extends Component {
|
||||
|
||||
<!-- Payment History -->
|
||||
@if($payments && count($payments) > 0)
|
||||
<div class="pt-6 border-t border-gray-200 dark:border-gray-600">
|
||||
<h4 class="text-lg md:text-xl text-gray-800 dark:text-gray-100 font-bold mb-4">
|
||||
<div class="pt-6 border-t border-zinc-200 dark:border-zinc-600">
|
||||
<h4 class="text-lg md:text-xl text-zinc-800 dark:text-zinc-100 font-bold mb-4">
|
||||
Bisherige Zahlungen
|
||||
</h4>
|
||||
|
||||
@@ -772,7 +772,7 @@ new class extends Component {
|
||||
<div class="hidden md:block overflow-x-auto">
|
||||
<table class="table-auto w-full">
|
||||
<thead
|
||||
class="text-xs font-semibold uppercase text-gray-500 dark:text-gray-400 border-b border-gray-200 dark:border-gray-600">
|
||||
class="text-xs font-semibold uppercase text-zinc-500 dark:text-zinc-400 border-b border-zinc-200 dark:border-zinc-600">
|
||||
<tr>
|
||||
<th class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap text-left">
|
||||
<div class="font-semibold">Satoshis</div>
|
||||
@@ -788,20 +788,20 @@ new class extends Component {
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="text-sm divide-y divide-gray-200 dark:divide-gray-600">
|
||||
<tbody class="text-sm divide-y divide-zinc-200 dark:divide-zinc-600">
|
||||
@foreach($payments as $payment)
|
||||
<tr>
|
||||
<td class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div
|
||||
class="font-medium text-gray-800 dark:text-gray-100">{{ $payment->amount }}</div>
|
||||
class="font-medium text-zinc-800 dark:text-zinc-100">{{ $payment->amount }}</div>
|
||||
</td>
|
||||
<td class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
<div
|
||||
class="text-gray-800 dark:text-gray-100">{{ $payment->year }}</div>
|
||||
class="text-zinc-800 dark:text-zinc-100">{{ $payment->year }}</div>
|
||||
</td>
|
||||
<td class="px-2 first:pl-5 last:pr-5 py-3">
|
||||
<div
|
||||
class="font-mono text-xs text-gray-600 dark:text-gray-400 break-all">{{ $payment->event_id }}</div>
|
||||
class="font-mono text-xs text-zinc-600 dark:text-zinc-400 break-all">{{ $payment->event_id }}</div>
|
||||
</td>
|
||||
<td class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||
@if($payment->btc_pay_invoice)
|
||||
@@ -824,23 +824,23 @@ new class extends Component {
|
||||
<div class="md:hidden space-y-4">
|
||||
@foreach($payments as $payment)
|
||||
<div
|
||||
class="bg-white dark:bg-gray-800 rounded-lg border border-gray-200 dark:border-gray-600 p-4">
|
||||
class="bg-white dark:bg-zinc-800 rounded-lg border border-zinc-200 dark:border-zinc-600 p-4">
|
||||
<div class="space-y-3">
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-sm font-medium text-gray-500 dark:text-gray-400">Satoshis</span>
|
||||
<span class="text-sm font-medium text-zinc-500 dark:text-zinc-400">Satoshis</span>
|
||||
<span
|
||||
class="font-semibold text-gray-800 dark:text-gray-100">{{ $payment->amount }}</span>
|
||||
class="font-semibold text-zinc-800 dark:text-zinc-100">{{ $payment->amount }}</span>
|
||||
</div>
|
||||
<div class="flex justify-between items-center">
|
||||
<span class="text-sm font-medium text-gray-500 dark:text-gray-400">Jahr</span>
|
||||
<span class="text-sm font-medium text-zinc-500 dark:text-zinc-400">Jahr</span>
|
||||
<span
|
||||
class="text-gray-800 dark:text-gray-100">{{ $payment->year }}</span>
|
||||
class="text-zinc-800 dark:text-zinc-100">{{ $payment->year }}</span>
|
||||
</div>
|
||||
<div>
|
||||
<span
|
||||
class="text-sm font-medium text-gray-500 dark:text-gray-400 block mb-1">Event-ID</span>
|
||||
class="text-sm font-medium text-zinc-500 dark:text-zinc-400 block mb-1">Event-ID</span>
|
||||
<span
|
||||
class="font-mono text-xs text-gray-600 dark:text-gray-400 break-all">{{ $payment->event_id }}</span>
|
||||
class="font-mono text-xs text-zinc-600 dark:text-zinc-400 break-all">{{ $payment->event_id }}</span>
|
||||
</div>
|
||||
@if($payment->btc_pay_invoice)
|
||||
<flux:button
|
||||
|
||||
@@ -69,7 +69,7 @@ class extends Component
|
||||
<div
|
||||
class="flex flex-col md:flex-row items-center mb-6 space-y-4 md:space-y-0 md:space-x-4">
|
||||
<div class="flex items-center justify-between w-full">
|
||||
<h1 class="text-2xl md:text-3xl text-gray-800 dark:text-gray-100 font-bold">
|
||||
<h1 class="text-2xl md:text-3xl text-zinc-800 dark:text-zinc-100 font-bold">
|
||||
Projektförderung anlegen
|
||||
</h1>
|
||||
</div>
|
||||
@@ -102,7 +102,7 @@ class extends Component
|
||||
|
||||
@if($isAdmin)
|
||||
<flux:separator />
|
||||
<flux:heading level="3" class="text-sm font-semibold uppercase tracking-wide text-gray-500 dark:text-gray-400">Admin Felder</flux:heading>
|
||||
<flux:heading level="3" class="text-sm font-semibold uppercase tracking-wide text-zinc-500 dark:text-zinc-400">Admin Felder</flux:heading>
|
||||
<div class="space-y-3 mt-3">
|
||||
<flux:field>
|
||||
<flux:label>Akzeptiert</flux:label>
|
||||
@@ -127,7 +127,7 @@ class extends Component
|
||||
<div>
|
||||
<flux:card>
|
||||
<flux:heading level="2">Information</flux:heading>
|
||||
<p class="text-sm text-gray-800 dark:text-gray-100 mt-4">
|
||||
<p class="text-sm text-zinc-800 dark:text-zinc-100 mt-4">
|
||||
Fülle das Formular aus, um eine neue Projektförderung anzulegen.
|
||||
</p>
|
||||
</flux:card>
|
||||
|
||||
@@ -87,7 +87,7 @@ class extends Component
|
||||
<div
|
||||
class="flex flex-col md:flex-row items-center mb-6 space-y-4 md:space-y-0 md:space-x-4">
|
||||
<div class="flex items-center justify-between w-full">
|
||||
<h1 class="text-2xl md:text-3xl text-gray-800 dark:text-gray-100 font-bold">
|
||||
<h1 class="text-2xl md:text-3xl text-zinc-800 dark:text-zinc-100 font-bold">
|
||||
Projektförderung bearbeiten
|
||||
</h1>
|
||||
</div>
|
||||
@@ -128,7 +128,7 @@ class extends Component
|
||||
|
||||
@if($isAdmin)
|
||||
<flux:separator />
|
||||
<flux:heading level="3" class="text-sm font-semibold uppercase tracking-wide text-gray-500 dark:text-gray-400">Admin Felder</flux:heading>
|
||||
<flux:heading level="3" class="text-sm font-semibold uppercase tracking-wide text-zinc-500 dark:text-zinc-400">Admin Felder</flux:heading>
|
||||
<div class="space-y-3 mt-3">
|
||||
<flux:field>
|
||||
<flux:label>Akzeptiert</flux:label>
|
||||
@@ -153,7 +153,7 @@ class extends Component
|
||||
<div>
|
||||
<flux:card>
|
||||
<flux:heading level="2">Information</flux:heading>
|
||||
<p class="text-sm text-gray-800 dark:text-gray-100 mt-4">
|
||||
<p class="text-sm text-zinc-800 dark:text-zinc-100 mt-4">
|
||||
Bearbeite die Projektförderung und speichere deine Änderungen.
|
||||
</p>
|
||||
</flux:card>
|
||||
|
||||
@@ -96,7 +96,7 @@ new class extends Component {
|
||||
|
||||
<!-- Left: Title -->
|
||||
<div class="mb-4 sm:mb-0">
|
||||
<h1 class="text-2xl md:text-3xl text-gray-800 dark:text-gray-100 font-bold">
|
||||
<h1 class="text-2xl md:text-3xl text-zinc-800 dark:text-zinc-100 font-bold">
|
||||
Einundzwanzig Projektunterstützungen
|
||||
</h1>
|
||||
</div>
|
||||
@@ -124,32 +124,28 @@ new class extends Component {
|
||||
<div class="mb-5">
|
||||
<ul class="flex flex-wrap -m-1">
|
||||
<li class="m-1">
|
||||
<button wire:click="setFilter('all')"
|
||||
class="inline-flex items-center justify-center text-sm font-medium leading-5 rounded-full px-3 py-1 border @if($activeFilter === 'all') border-transparent shadow-sm bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-800 @else border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400 @endif transition">
|
||||
<flux:button wire:click="setFilter('all')" :variant="$activeFilter === 'all' ? 'primary' : 'ghost'">
|
||||
Alle
|
||||
</button>
|
||||
</flux:button>
|
||||
</li>
|
||||
<li class="m-1">
|
||||
<button wire:click="setFilter('new')"
|
||||
class="inline-flex items-center justify-center text-sm font-medium leading-5 rounded-full px-3 py-1 border @if($activeFilter === 'new') border-transparent shadow-sm bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-800 @else border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400 @endif transition">
|
||||
<flux:button wire:click="setFilter('new')" :variant="$activeFilter === 'new' ? 'primary' : 'ghost'">
|
||||
Neu
|
||||
</button>
|
||||
</flux:button>
|
||||
</li>
|
||||
<li class="m-1">
|
||||
<button wire:click="setFilter('supported')"
|
||||
class="inline-flex items-center justify-center text-sm font-medium leading-5 rounded-full px-3 py-1 border @if($activeFilter === 'supported') border-transparent shadow-sm bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-800 @else border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400 @endif transition">
|
||||
<flux:button wire:click="setFilter('supported')" :variant="$activeFilter === 'supported' ? 'primary' : 'ghost'">
|
||||
Unterstützt
|
||||
</button>
|
||||
</flux:button>
|
||||
</li>
|
||||
<li class="m-1">
|
||||
<button wire:click="setFilter('rejected')"
|
||||
class="inline-flex items-center justify-center text-sm font-medium leading-5 rounded-full px-3 py-1 border @if($activeFilter === 'rejected') border-transparent shadow-sm bg-gray-900 dark:bg-gray-100 text-white dark:text-gray-800 @else border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm bg-white dark:bg-gray-800 text-gray-500 dark:text-gray-400 @endif transition">
|
||||
<flux:button wire:click="setFilter('rejected')" :variant="$activeFilter === 'rejected' ? 'primary' : 'ghost'">
|
||||
Abgelehnt
|
||||
</button>
|
||||
</flux:button>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="text-sm text-gray-500 dark:text-gray-400 italic mb-4">{{ $projects->count() }} Projekte</div>
|
||||
<div class="text-sm text-zinc-500 dark:text-zinc-400 italic mb-4">{{ $projects->count() }} Projekte</div>
|
||||
|
||||
<!-- Content -->
|
||||
<div class="grid xl:grid-cols-2 gap-6 mb-8">
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
<?php
|
||||
|
||||
use App\Livewire\Forms\VoteForm;
|
||||
use App\Livewire\Traits\WithNostrAuth;
|
||||
use App\Models\Vote;
|
||||
use App\Support\NostrAuth;
|
||||
use Livewire\Component;
|
||||
|
||||
new class extends Component {
|
||||
use WithNostrAuth;
|
||||
|
||||
public $projectProposal;
|
||||
|
||||
public bool $isAllowed = false;
|
||||
@@ -67,120 +69,104 @@ new class extends Component {
|
||||
?>
|
||||
|
||||
<div>
|
||||
@if($projectProposal->accepted || $isAllowed)
|
||||
<div class="px-4 sm:px-6 lg:px-8 py-8 w-full">
|
||||
<div class="mx-auto flex flex-col lg:flex-row lg:space-x-8 xl:space-x-12">
|
||||
<div class="flex-1">
|
||||
<div class="mb-6">
|
||||
<flux:button :href="route('association.projectSupport')" variant="primary" size="sm" icon="chevron-left">
|
||||
Zurück zur Übersicht
|
||||
</flux:button>
|
||||
</div>
|
||||
<div class="text-sm font-semibold text-violet-500 uppercase mb-2">
|
||||
{{ $projectProposal->created_at->translatedFormat('d.m.Y') }}
|
||||
</div>
|
||||
<header class="mb-4">
|
||||
<h1 class="text-2xl md:text-3xl text-gray-800 dark:text-gray-100 font-bold mb-2">
|
||||
{{ $projectProposal->name }}
|
||||
</h1>
|
||||
<x-markdown>
|
||||
{!! $projectProposal->description !!}
|
||||
</x-markdown>
|
||||
</header>
|
||||
<div class="px-4 sm:px-6 lg:px-8 py-8 w-full">
|
||||
<div class="mx-auto flex flex-col lg:flex-row lg:space-x-8 xl:space-x-12">
|
||||
<div class="flex-1">
|
||||
<div class="mb-6">
|
||||
<flux:button :href="route('association.projectSupport')" variant="primary" size="sm"
|
||||
icon="chevron-left">
|
||||
Zurück zur Übersicht
|
||||
</flux:button>
|
||||
</div>
|
||||
<div class="text-sm font-semibold text-violet-500 uppercase mb-2">
|
||||
{{ $projectProposal->created_at->translatedFormat('d.m.Y') }}
|
||||
</div>
|
||||
<header class="mb-4">
|
||||
<h1 class="text-2xl md:text-3xl text-zinc-800 dark:text-zinc-100 font-bold mb-2">
|
||||
{{ $projectProposal->name }}
|
||||
</h1>
|
||||
<x-markdown>
|
||||
{!! $projectProposal->description !!}
|
||||
</x-markdown>
|
||||
</header>
|
||||
|
||||
<div class="space-y-3 sm:flex sm:items-center sm:justify-between sm:space-y-0 mb-6">
|
||||
<div class="flex items-center sm:mr-4">
|
||||
<a class="block mr-2 shrink-0" href="#0">
|
||||
<img class="rounded-full"
|
||||
src="{{ $projectProposal->einundzwanzigPleb->profile?->picture ?? asset('einundzwanzig-alpha.jpg') }}"
|
||||
width="32" height="32" alt="User">
|
||||
</a>
|
||||
<div class="text-sm whitespace-nowrap">Eingereicht von
|
||||
<div class="font-semibold text-gray-800 dark:text-gray-100">
|
||||
{{ $projectProposal->einundzwanzigPleb?->profile->name ?? str($projectProposal->einundzwanzigPleb->npub)->limit(32) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-wrap items-center sm:justify-end space-x-2">
|
||||
<div
|
||||
class="text-xs inline-flex items-center font-medium border border-gray-200 dark:border-gray-700/60 text-gray-600 dark:text-gray-400 rounded-full text-center px-2.5 py-1">
|
||||
<a target="_blank" href="{{ $projectProposal->website }}">Webseite</a>
|
||||
</div>
|
||||
<div
|
||||
class="text-xs inline-flex font-medium uppercase bg-green-500/20 text-green-700 rounded-full text-center px-2.5 py-1">
|
||||
{{ number_format($projectProposal->support_in_sats, 0, ',', '.') }} Sats
|
||||
<div class="space-y-3 sm:flex sm:items-center sm:justify-between sm:space-y-0 mb-6">
|
||||
<div class="flex items-center sm:mr-4">
|
||||
<a class="block mr-2 shrink-0" href="#0">
|
||||
<img class="rounded-full"
|
||||
src="{{ $projectProposal->einundzwanzigPleb->profile?->picture ?? asset('einundzwanzig-alpha.jpg') }}"
|
||||
width="32" height="32" alt="User">
|
||||
</a>
|
||||
<div class="text-sm whitespace-nowrap">Eingereicht von
|
||||
<div class="font-semibold text-zinc-800 dark:text-zinc-100">
|
||||
{{ $projectProposal->einundzwanzigPleb?->profile->name ?? str($projectProposal->einundzwanzigPleb->npub)->limit(32) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<figure class="mb-6">
|
||||
<img class="rounded-sm h-48" src="{{ $projectProposal->getFirstMediaUrl('main') }}"
|
||||
alt="Picture">
|
||||
</figure>
|
||||
|
||||
<hr class="my-6 border-t border-gray-100 dark:border-gray-700/60">
|
||||
<div class="flex flex-wrap items-center sm:justify-end space-x-2">
|
||||
<div
|
||||
class="text-xs inline-flex items-center font-medium border border-zinc-200 dark:border-zinc-700/60 text-zinc-600 dark:text-zinc-400 rounded-full text-center px-2.5 py-1">
|
||||
<a target="_blank" href="{{ $projectProposal->website }}">Webseite</a>
|
||||
</div>
|
||||
<div
|
||||
class="text-xs inline-flex font-medium uppercase bg-green-500/20 text-green-700 rounded-full text-center px-2.5 py-1">
|
||||
{{ number_format($projectProposal->support_in_sats, 0, ',', '.') }} Sats
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if($isAllowed && !$projectProposal->accepted)
|
||||
<div class="lg:w-80 xl:w-96 shrink-0 space-y-4">
|
||||
<div class="bg-white dark:bg-gray-800 p-5 shadow-sm rounded-xl">
|
||||
@if(!$ownVoteExists)
|
||||
<div class="space-y-2">
|
||||
<flux:button wire:click="handleApprove" class="w-full">
|
||||
<i class="fill-current shrink-0 fa-sharp-duotone fa-solid fa-thumbs-up mr-2"></i>
|
||||
Zustimmen
|
||||
</flux:button>
|
||||
<flux:button wire:click="handleNotApprove" variant="danger" class="w-full">
|
||||
<i class="fill-current shrink-0 fa-sharp-duotone fa-solid fa-thumbs-down mr-2"></i>
|
||||
Ablehnen
|
||||
</flux:button>
|
||||
</div>
|
||||
@else
|
||||
<p class="text-sm text-gray-700 dark:text-gray-300">Du hast bereits abgestimmt.</p>
|
||||
@endif
|
||||
</div>
|
||||
<figure class="mb-6">
|
||||
<img class="rounded-sm h-48" src="{{ $projectProposal->getFirstMediaUrl('main') }}"
|
||||
alt="Picture">
|
||||
</figure>
|
||||
|
||||
<div class="bg-white dark:bg-gray-800 p-5 shadow-sm rounded-xl">
|
||||
<div class="text-sm font-semibold text-gray-800 dark:text-gray-100 mb-2">
|
||||
Zustimmungen des Vorstands ({{ count($this->boardVotes->where('value', 1)) }})
|
||||
</div>
|
||||
</div>
|
||||
<hr class="my-6 border-t border-zinc-100 dark:border-zinc-700/60">
|
||||
</div>
|
||||
|
||||
<div class="bg-white dark:bg-gray-800 p-5 shadow-sm rounded-xl">
|
||||
<div class="text-sm font-semibold text-gray-800 dark:text-gray-100 mb-2">
|
||||
Ablehnungen des Vorstands ({{ count($this->boardVotes->where('value', 0)) }})
|
||||
</div>
|
||||
<div class="lg:w-80 xl:w-96 shrink-0 space-y-4">
|
||||
<div class="bg-white dark:bg-zinc-800 p-5 shadow-sm rounded-xl">
|
||||
@if(!$ownVoteExists)
|
||||
<div class="space-y-2">
|
||||
<flux:button wire:click="handleApprove" class="w-full">
|
||||
<i class="fill-current shrink-0 fa-sharp-duotone fa-solid fa-thumbs-up mr-2"></i>
|
||||
Zustimmen
|
||||
</flux:button>
|
||||
<flux:button wire:click="handleNotApprove" variant="danger" class="w-full">
|
||||
<i class="fill-current shrink-0 fa-sharp-duotone fa-solid fa-thumbs-down mr-2"></i>
|
||||
Ablehnen
|
||||
</flux:button>
|
||||
</div>
|
||||
@else
|
||||
<p class="text-sm text-zinc-700 dark:text-zinc-300">Du hast bereits abgestimmt.</p>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="bg-white dark:bg-gray-800 p-5 shadow-sm rounded-xl">
|
||||
<div class="text-sm font-semibold text-gray-800 dark:text-gray-100 mb-2">
|
||||
Zustimmungen der übrigen Mitglieder
|
||||
({{ count($this->otherVotes->where('value', 1)) }})
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white dark:bg-gray-800 p-5 shadow-sm rounded-xl">
|
||||
<div class="text-sm font-semibold text-gray-800 dark:text-gray-100 mb-2">
|
||||
Ablehnungen der übrigen Mitglieder
|
||||
({{ count($this->otherVotes->where('value', 0)) }})
|
||||
</div>
|
||||
</div>
|
||||
<div class="bg-white dark:bg-zinc-800 p-5 shadow-sm rounded-xl">
|
||||
<div class="text-sm font-semibold text-zinc-800 dark:text-zinc-100 mb-2">
|
||||
Zustimmungen des Vorstands ({{ count($this->boardVotes->where('value', 1)) }})
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="bg-white dark:bg-zinc-800 p-5 shadow-sm rounded-xl">
|
||||
<div class="text-sm font-semibold text-zinc-800 dark:text-zinc-100 mb-2">
|
||||
Ablehnungen des Vorstands ({{ count($this->boardVotes->where('value', 0)) }})
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white dark:bg-zinc-800 p-5 shadow-sm rounded-xl">
|
||||
<div class="text-sm font-semibold text-zinc-800 dark:text-zinc-100 mb-2">
|
||||
Zustimmungen der übrigen Mitglieder
|
||||
({{ count($this->otherVotes->where('value', 1)) }})
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="bg-white dark:bg-zinc-800 p-5 shadow-sm rounded-xl">
|
||||
<div class="text-sm font-semibold text-zinc-800 dark:text-zinc-100 mb-2">
|
||||
Ablehnungen der übrigen Mitglieder
|
||||
({{ count($this->otherVotes->where('value', 0)) }})
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@else
|
||||
<div class="px-4 sm:px-6 lg:px-8 py-8 w-full mx-auto">
|
||||
<flux:callout variant="warning" icon="exclamation-circle">
|
||||
<flux:heading>Zugriff auf Projektförderung nicht möglich</flux:heading>
|
||||
<p>
|
||||
@if(!NostrAuth::check())
|
||||
Bitte melde dich zunächst mit Nostr an, um Zugriff auf die Projektförderung zu erhalten.
|
||||
@else
|
||||
Du benötigst eine gültige Nostr-Authentifizierung, um diese Projektförderung einzusehen.
|
||||
@endif
|
||||
</p>
|
||||
</flux:callout>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user