mirror of
https://github.com/HolgerHatGarKeineNode/einundzwanzig-nostr.git
synced 2025-12-14 06:36:46 +00:00
voting system with nostr added
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -18,3 +18,4 @@ yarn-error.log
|
|||||||
/.fleet
|
/.fleet
|
||||||
/.idea
|
/.idea
|
||||||
/.vscode
|
/.vscode
|
||||||
|
/relay
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ namespace App\Console\Commands\Nostr;
|
|||||||
use App\Models\EinundzwanzigPleb;
|
use App\Models\EinundzwanzigPleb;
|
||||||
use App\Traits\NostrFetcherTrait;
|
use App\Traits\NostrFetcherTrait;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
use swentel\nostr\Subscription\Subscription;
|
|
||||||
|
|
||||||
class SyncProfiles extends Command
|
class SyncProfiles extends Command
|
||||||
{
|
{
|
||||||
|
|||||||
50
app/Enums/AssociationStatus.php
Normal file
50
app/Enums/AssociationStatus.php
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Enums;
|
||||||
|
|
||||||
|
use ArchTech\Enums\From;
|
||||||
|
use ArchTech\Enums\InvokableCases;
|
||||||
|
use ArchTech\Enums\Meta\Meta;
|
||||||
|
use ArchTech\Enums\Metadata;
|
||||||
|
use ArchTech\Enums\Names;
|
||||||
|
use ArchTech\Enums\Options;
|
||||||
|
use ArchTech\Enums\Values;
|
||||||
|
|
||||||
|
#[Meta(Label::class, Color::class)]
|
||||||
|
enum AssociationStatus: int
|
||||||
|
{
|
||||||
|
use InvokableCases;
|
||||||
|
use Names;
|
||||||
|
use Values;
|
||||||
|
use Options;
|
||||||
|
use Metadata;
|
||||||
|
use From;
|
||||||
|
|
||||||
|
#[Label('kein Mitglied')] #[Color('cyan')]
|
||||||
|
case DEFAULT = 1;
|
||||||
|
#[Label('Passiv')] #[Color('orange')]
|
||||||
|
case PASSIVE = 2;
|
||||||
|
#[Label('Aktiv')] #[Color('purple')]
|
||||||
|
case ACTIVE = 3;
|
||||||
|
#[Label('Ehrenmitglied')] #[Color('negative')]
|
||||||
|
case HONORARY = 4;
|
||||||
|
|
||||||
|
public static function selectOptions()
|
||||||
|
{
|
||||||
|
return collect(self::options())
|
||||||
|
->map(
|
||||||
|
fn(
|
||||||
|
$option,
|
||||||
|
$name
|
||||||
|
) => [
|
||||||
|
'value' => $option,
|
||||||
|
'label' => __(
|
||||||
|
self::fromName($name)
|
||||||
|
->label()
|
||||||
|
),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
->values()
|
||||||
|
->toArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
11
app/Enums/Color.php
Normal file
11
app/Enums/Color.php
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Enums;
|
||||||
|
|
||||||
|
use ArchTech\Enums\Meta\MetaProperty;
|
||||||
|
use Attribute;
|
||||||
|
|
||||||
|
#[Attribute]
|
||||||
|
class Color extends MetaProperty
|
||||||
|
{
|
||||||
|
}
|
||||||
11
app/Enums/Label.php
Normal file
11
app/Enums/Label.php
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Enums;
|
||||||
|
|
||||||
|
use ArchTech\Enums\Meta\MetaProperty;
|
||||||
|
use Attribute;
|
||||||
|
|
||||||
|
#[Attribute]
|
||||||
|
class Label extends MetaProperty
|
||||||
|
{
|
||||||
|
}
|
||||||
24
app/Http/Controllers/Api/Nostr/GetProfile.php
Normal file
24
app/Http/Controllers/Api/Nostr/GetProfile.php
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Api\Nostr;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\Profile;
|
||||||
|
use App\Traits\NostrFetcherTrait;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
class GetProfile extends Controller
|
||||||
|
{
|
||||||
|
use NostrFetcherTrait;
|
||||||
|
|
||||||
|
public function __invoke($key, Request $request)
|
||||||
|
{
|
||||||
|
if (!Profile::query()->where('pubkey', $key)->exists()) {
|
||||||
|
$this->fetchProfile([$key]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Profile::query()
|
||||||
|
->where('pubkey', $key)
|
||||||
|
->first();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
|
use App\Enums\AssociationStatus;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
class EinundzwanzigPleb extends Model
|
class EinundzwanzigPleb extends Model
|
||||||
@@ -9,6 +10,13 @@ class EinundzwanzigPleb extends Model
|
|||||||
|
|
||||||
protected $guarded = [];
|
protected $guarded = [];
|
||||||
|
|
||||||
|
protected function casts(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'association_status' => AssociationStatus::class,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
public function profile()
|
public function profile()
|
||||||
{
|
{
|
||||||
return $this->hasOne(Profile::class, 'pubkey', 'pubkey');
|
return $this->hasOne(Profile::class, 'pubkey', 'pubkey');
|
||||||
|
|||||||
10
app/Models/Election.php
Normal file
10
app/Models/Election.php
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class Election extends Model
|
||||||
|
{
|
||||||
|
protected $guarded = [];
|
||||||
|
}
|
||||||
@@ -17,6 +17,14 @@ trait NostrFetcherTrait
|
|||||||
{
|
{
|
||||||
$hex = collect([]);
|
$hex = collect([]);
|
||||||
foreach ($npubs as $item) {
|
foreach ($npubs as $item) {
|
||||||
|
// check if $item is already a hex string
|
||||||
|
if (preg_match('/^[0-9a-fA-F]+$/', $item)) {
|
||||||
|
$hex->push([
|
||||||
|
'hex' => $item,
|
||||||
|
'npub' => (new Key)->convertPublicKeyToBech32($item),
|
||||||
|
]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
$hex->push([
|
$hex->push([
|
||||||
'hex' => (new Key)->convertToHex($item),
|
'hex' => (new Key)->convertToHex($item),
|
||||||
'npub' => $item,
|
'npub' => $item,
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ use Illuminate\Foundation\Configuration\Middleware;
|
|||||||
return Application::configure(basePath: dirname(__DIR__))
|
return Application::configure(basePath: dirname(__DIR__))
|
||||||
->withRouting(
|
->withRouting(
|
||||||
web: __DIR__.'/../routes/web.php',
|
web: __DIR__.'/../routes/web.php',
|
||||||
|
api: __DIR__.'/../routes/api.php',
|
||||||
commands: __DIR__.'/../routes/console.php',
|
commands: __DIR__.'/../routes/console.php',
|
||||||
channels: __DIR__.'/../routes/channels.php',
|
channels: __DIR__.'/../routes/channels.php',
|
||||||
health: '/up',
|
health: '/up',
|
||||||
|
|||||||
@@ -7,12 +7,14 @@
|
|||||||
"require": {
|
"require": {
|
||||||
"php": "^8.2",
|
"php": "^8.2",
|
||||||
"akuechler/laravel-geoly": "^1.0",
|
"akuechler/laravel-geoly": "^1.0",
|
||||||
|
"archtechx/enums": "^1.1",
|
||||||
"calebporzio/sushi": "^2.5",
|
"calebporzio/sushi": "^2.5",
|
||||||
"laravel/folio": "^1.1",
|
"laravel/folio": "^1.1",
|
||||||
"laravel/framework": "^11.9",
|
"laravel/framework": "^11.9",
|
||||||
"laravel/pulse": "^1.2",
|
"laravel/pulse": "^1.2",
|
||||||
"laravel/reverb": "^1.0",
|
"laravel/reverb": "^1.0",
|
||||||
"laravel/sail": "^1.31",
|
"laravel/sail": "^1.31",
|
||||||
|
"laravel/sanctum": "^4.0",
|
||||||
"laravel/tinker": "^2.9",
|
"laravel/tinker": "^2.9",
|
||||||
"livewire/livewire": "^3.5",
|
"livewire/livewire": "^3.5",
|
||||||
"livewire/volt": "^1.6",
|
"livewire/volt": "^1.6",
|
||||||
@@ -24,7 +26,8 @@
|
|||||||
"spatie/laravel-sluggable": "^3.6",
|
"spatie/laravel-sluggable": "^3.6",
|
||||||
"spatie/laravel-tags": "^4.6",
|
"spatie/laravel-tags": "^4.6",
|
||||||
"staudenmeir/eloquent-has-many-deep": "^1.7",
|
"staudenmeir/eloquent-has-many-deep": "^1.7",
|
||||||
"swentel/nostr-php": "^1.4"
|
"swentel/nostr-php": "^1.4",
|
||||||
|
"wireui/wireui": "^2.1"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fakerphp/faker": "^1.23",
|
"fakerphp/faker": "^1.23",
|
||||||
|
|||||||
861
composer.lock
generated
861
composer.lock
generated
File diff suppressed because it is too large
Load Diff
83
config/sanctum.php
Normal file
83
config/sanctum.php
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Laravel\Sanctum\Sanctum;
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Stateful Domains
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Requests from the following domains / hosts will receive stateful API
|
||||||
|
| authentication cookies. Typically, these should include your local
|
||||||
|
| and production domains which access your API via a frontend SPA.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'stateful' => explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf(
|
||||||
|
'%s%s',
|
||||||
|
'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1',
|
||||||
|
Sanctum::currentApplicationUrlWithPort()
|
||||||
|
))),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Sanctum Guards
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This array contains the authentication guards that will be checked when
|
||||||
|
| Sanctum is trying to authenticate a request. If none of these guards
|
||||||
|
| are able to authenticate the request, Sanctum will use the bearer
|
||||||
|
| token that's present on an incoming request for authentication.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'guard' => ['web'],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Expiration Minutes
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| This value controls the number of minutes until an issued token will be
|
||||||
|
| considered expired. This will override any values set in the token's
|
||||||
|
| "expires_at" attribute, but first-party sessions are not affected.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'expiration' => null,
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Token Prefix
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Sanctum can prefix new tokens in order to take advantage of numerous
|
||||||
|
| security scanning initiatives maintained by open source platforms
|
||||||
|
| that notify developers if they commit tokens into repositories.
|
||||||
|
|
|
||||||
|
| See: https://docs.github.com/en/code-security/secret-scanning/about-secret-scanning
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'token_prefix' => env('SANCTUM_TOKEN_PREFIX', ''),
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Sanctum Middleware
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| When authenticating your first-party SPA with Sanctum you may need to
|
||||||
|
| customize some of the middleware Sanctum uses while processing the
|
||||||
|
| request. You may change the middleware listed below as required.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'middleware' => [
|
||||||
|
'authenticate_session' => Laravel\Sanctum\Http\Middleware\AuthenticateSession::class,
|
||||||
|
'encrypt_cookies' => Illuminate\Cookie\Middleware\EncryptCookies::class,
|
||||||
|
'validate_csrf_token' => Illuminate\Foundation\Http\Middleware\ValidateCsrfToken::class,
|
||||||
|
],
|
||||||
|
|
||||||
|
];
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('personal_access_tokens', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->morphs('tokenable');
|
||||||
|
$table->string('name');
|
||||||
|
$table->string('token', 64)->unique();
|
||||||
|
$table->text('abilities')->nullable();
|
||||||
|
$table->timestamp('last_used_at')->nullable();
|
||||||
|
$table->timestamp('expires_at')->nullable();
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('personal_access_tokens');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('einundzwanzig_plebs', function (Blueprint $table) {
|
||||||
|
$table->unsignedInteger('association_status')->default(1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('einundzwanzig_plebs', function (Blueprint $table) {
|
||||||
|
//
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration {
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::create('elections', function (Blueprint $table) {
|
||||||
|
$table->id();
|
||||||
|
$table->unsignedInteger('year');
|
||||||
|
$table->json('candidates');
|
||||||
|
$table->timestamps();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('elections');
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -65,6 +65,16 @@ services:
|
|||||||
- ping
|
- ping
|
||||||
retries: 3
|
retries: 3
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
|
relay:
|
||||||
|
ports:
|
||||||
|
- "7000"
|
||||||
|
volumes:
|
||||||
|
- ./relay:/usr/src/app/db
|
||||||
|
- ./relay/config.toml:/usr/src/app/config.toml
|
||||||
|
image: scsibug/nostr-rs-relay:latest
|
||||||
|
user: "${DOCKER_UID:-1000}:${DOCKER_GID:-1000}"
|
||||||
|
networks:
|
||||||
|
- sail
|
||||||
networks:
|
networks:
|
||||||
sail:
|
sail:
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
2601
package-lock.json
generated
2601
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -6,8 +6,9 @@
|
|||||||
"build": "vite build"
|
"build": "vite build"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@nostr-dev-kit/ndk": "^2.10.0",
|
||||||
|
"@tailwindcss/forms": "^0.5.8",
|
||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.20",
|
||||||
"axios": "^1.6.4",
|
|
||||||
"flatpickr": "^4.6.13",
|
"flatpickr": "^4.6.13",
|
||||||
"laravel-echo": "^1.16.1",
|
"laravel-echo": "^1.16.1",
|
||||||
"laravel-vite-plugin": "^1.0",
|
"laravel-vite-plugin": "^1.0",
|
||||||
|
|||||||
1568
public/dist/einundzwanzig.chat.css
vendored
1568
public/dist/einundzwanzig.chat.css
vendored
File diff suppressed because it is too large
Load Diff
14879
public/dist/einundzwanzig.chat.js
vendored
14879
public/dist/einundzwanzig.chat.js
vendored
File diff suppressed because it is too large
Load Diff
47
public/dist/filepond-plugin-image-edit.css
vendored
47
public/dist/filepond-plugin-image-edit.css
vendored
@@ -1,47 +0,0 @@
|
|||||||
/*!
|
|
||||||
* FilePondPluginImageEdit 1.6.3
|
|
||||||
* Licensed under MIT, https://opensource.org/licenses/MIT/
|
|
||||||
* Please visit https://pqina.nl/filepond/ for details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* eslint-disable */
|
|
||||||
.filepond--action-edit-item.filepond--action-edit-item {
|
|
||||||
width: 2em;
|
|
||||||
height: 2em;
|
|
||||||
padding: 0.1875em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filepond--action-edit-item.filepond--action-edit-item[data-align*='center'] {
|
|
||||||
margin-left: -0.1875em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filepond--action-edit-item.filepond--action-edit-item[data-align*='bottom'] {
|
|
||||||
margin-bottom: -0.1875em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filepond--action-edit-item-alt {
|
|
||||||
border: none;
|
|
||||||
line-height: inherit;
|
|
||||||
background: transparent;
|
|
||||||
font-family: inherit;
|
|
||||||
color: inherit;
|
|
||||||
outline: none;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0 0 0 0.25em;
|
|
||||||
pointer-events: all;
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filepond--action-edit-item-alt svg {
|
|
||||||
width: 1.3125em;
|
|
||||||
height: 1.3125em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filepond--action-edit-item-alt span {
|
|
||||||
font-size: 0;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
.filepond--root[data-style-panel-layout~='circle'] .filepond--action-edit-item {
|
|
||||||
opacity: 1 !important;
|
|
||||||
visibility: visible !important;
|
|
||||||
}
|
|
||||||
1047
public/dist/filepond.css
vendored
1047
public/dist/filepond.css
vendored
File diff suppressed because it is too large
Load Diff
BIN
public/img/meetup_saarland.jpg
Normal file
BIN
public/img/meetup_saarland.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 258 KiB |
@@ -1,3 +1,6 @@
|
|||||||
|
@import 'utility-patterns.css';
|
||||||
|
@import 'flatpickr.css';
|
||||||
|
|
||||||
@tailwind base;
|
@tailwind base;
|
||||||
@tailwind components;
|
@tailwind components;
|
||||||
@tailwind utilities;
|
@tailwind utilities;
|
||||||
|
|||||||
237
resources/css/flatpickr.css
Normal file
237
resources/css/flatpickr.css
Normal file
@@ -0,0 +1,237 @@
|
|||||||
|
/* Customise flatpickr */
|
||||||
|
* {
|
||||||
|
--calendarPadding: 24px;
|
||||||
|
--daySize: 36px;
|
||||||
|
--daysWidth: calc(var(--daySize)*7);
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes fpFadeInDown {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translate3d(0, -8px, 0);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate3d(0, 0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-calendar {
|
||||||
|
border: inherit;
|
||||||
|
@apply bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700/60 left-1/2;
|
||||||
|
margin-left: calc(calc(var(--daysWidth) + calc(var(--calendarPadding)*2))*0.5*-1);
|
||||||
|
padding: var(--calendarPadding);
|
||||||
|
width: calc(var(--daysWidth) + calc(var(--calendarPadding)*2));
|
||||||
|
}
|
||||||
|
|
||||||
|
@screen lg {
|
||||||
|
.flatpickr-calendar {
|
||||||
|
@apply left-0 right-auto;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-right.flatpickr-calendar {
|
||||||
|
@apply right-0 left-auto;
|
||||||
|
margin-left: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-calendar.animate.open {
|
||||||
|
animation: fpFadeInDown 200ms ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-calendar.static {
|
||||||
|
position: absolute;
|
||||||
|
top: calc(100% + 4px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-calendar.static.open {
|
||||||
|
z-index: 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-days {
|
||||||
|
width: var(--daysWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dayContainer {
|
||||||
|
width: var(--daysWidth);
|
||||||
|
min-width: var(--daysWidth);
|
||||||
|
max-width: var(--daysWidth);
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-day {
|
||||||
|
@apply bg-gray-50 dark:bg-gray-700/20 text-sm font-medium text-gray-600 dark:text-gray-100;
|
||||||
|
max-width: var(--daySize);
|
||||||
|
height: var(--daySize);
|
||||||
|
line-height: var(--daySize);
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-day,
|
||||||
|
.flatpickr-day.prevMonthDay,
|
||||||
|
.flatpickr-day.nextMonthDay {
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-day.flatpickr-disabled,
|
||||||
|
.flatpickr-day.flatpickr-disabled:hover,
|
||||||
|
.flatpickr-day.prevMonthDay,
|
||||||
|
.flatpickr-day.nextMonthDay,
|
||||||
|
.flatpickr-day.notAllowed,
|
||||||
|
.flatpickr-day.notAllowed.prevMonthDay,
|
||||||
|
.flatpickr-day.notAllowed.nextMonthDay {
|
||||||
|
@apply bg-transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-day,
|
||||||
|
.flatpickr-day.prevMonthDay,
|
||||||
|
.flatpickr-day.nextMonthDay,
|
||||||
|
.flatpickr-day.selected.startRange,
|
||||||
|
.flatpickr-day.startRange.startRange,
|
||||||
|
.flatpickr-day.endRange.startRange,
|
||||||
|
.flatpickr-day.selected.endRange,
|
||||||
|
.flatpickr-day.startRange.endRange,
|
||||||
|
.flatpickr-day.endRange.endRange,
|
||||||
|
.flatpickr-day.selected.startRange.endRange,
|
||||||
|
.flatpickr-day.startRange.startRange.endRange,
|
||||||
|
.flatpickr-day.endRange.startRange.endRange {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-day.flatpickr-disabled,
|
||||||
|
.flatpickr-day.flatpickr-disabled:hover,
|
||||||
|
.flatpickr-day.prevMonthDay,
|
||||||
|
.flatpickr-day.nextMonthDay,
|
||||||
|
.flatpickr-day.notAllowed,
|
||||||
|
.flatpickr-day.notAllowed.prevMonthDay,
|
||||||
|
.flatpickr-day.notAllowed.nextMonthDay {
|
||||||
|
@apply text-gray-400 dark:text-gray-500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.rangeMode .flatpickr-day {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-day.selected,
|
||||||
|
.flatpickr-day.startRange,
|
||||||
|
.flatpickr-day.endRange,
|
||||||
|
.flatpickr-day.selected.inRange,
|
||||||
|
.flatpickr-day.startRange.inRange,
|
||||||
|
.flatpickr-day.endRange.inRange,
|
||||||
|
.flatpickr-day.selected:focus,
|
||||||
|
.flatpickr-day.startRange:focus,
|
||||||
|
.flatpickr-day.endRange:focus,
|
||||||
|
.flatpickr-day.selected:hover,
|
||||||
|
.flatpickr-day.startRange:hover,
|
||||||
|
.flatpickr-day.endRange:hover,
|
||||||
|
.flatpickr-day.selected.prevMonthDay,
|
||||||
|
.flatpickr-day.startRange.prevMonthDay,
|
||||||
|
.flatpickr-day.endRange.prevMonthDay,
|
||||||
|
.flatpickr-day.selected.nextMonthDay,
|
||||||
|
.flatpickr-day.startRange.nextMonthDay,
|
||||||
|
.flatpickr-day.endRange.nextMonthDay {
|
||||||
|
@apply bg-violet-600 text-violet-50;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-day.inRange,
|
||||||
|
.flatpickr-day.prevMonthDay.inRange,
|
||||||
|
.flatpickr-day.nextMonthDay.inRange,
|
||||||
|
.flatpickr-day.today.inRange,
|
||||||
|
.flatpickr-day.prevMonthDay.today.inRange,
|
||||||
|
.flatpickr-day.nextMonthDay.today.inRange,
|
||||||
|
.flatpickr-day:hover,
|
||||||
|
.flatpickr-day.prevMonthDay:hover,
|
||||||
|
.flatpickr-day.nextMonthDay:hover,
|
||||||
|
.flatpickr-day:focus,
|
||||||
|
.flatpickr-day.prevMonthDay:focus,
|
||||||
|
.flatpickr-day.nextMonthDay:focus,
|
||||||
|
.flatpickr-day.today:hover,
|
||||||
|
.flatpickr-day.today:focus {
|
||||||
|
@apply bg-violet-500 text-violet-50;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-day.inRange,
|
||||||
|
.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
|
||||||
|
.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
|
||||||
|
.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-months {
|
||||||
|
align-items: center;
|
||||||
|
margin-top: -8px;
|
||||||
|
margin-bottom: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-months .flatpickr-prev-month,
|
||||||
|
.flatpickr-months .flatpickr-next-month {
|
||||||
|
position: static;
|
||||||
|
height: auto;
|
||||||
|
@apply text-gray-400 hover:text-gray-900 dark:text-gray-500 dark:hover:text-gray-300;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-months .flatpickr-prev-month svg,
|
||||||
|
.flatpickr-months .flatpickr-next-month svg {
|
||||||
|
width: 7px;
|
||||||
|
height: 11px;
|
||||||
|
fill: currentColor;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-months .flatpickr-prev-month:hover svg,
|
||||||
|
.flatpickr-months .flatpickr-next-month:hover svg {
|
||||||
|
@apply fill-current;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-months .flatpickr-prev-month {
|
||||||
|
margin-left: -10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-months .flatpickr-next-month {
|
||||||
|
margin-right: -10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-months .flatpickr-month {
|
||||||
|
@apply text-gray-800 dark:text-gray-100;
|
||||||
|
height: auto;
|
||||||
|
line-height: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-current-month {
|
||||||
|
@apply text-sm font-medium;
|
||||||
|
position: static;
|
||||||
|
height: auto;
|
||||||
|
width: auto;
|
||||||
|
left: auto;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-current-month span.cur-month {
|
||||||
|
@apply font-medium m-0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-current-month span.cur-month:hover {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-current-month input.cur-year {
|
||||||
|
font-weight: inherit;
|
||||||
|
box-shadow: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.numInputWrapper:hover {
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.numInputWrapper span {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
span.flatpickr-weekday {
|
||||||
|
@apply text-gray-400 dark:text-gray-500 font-medium text-xs;
|
||||||
|
}
|
||||||
|
|
||||||
|
.flatpickr-calendar.arrowTop::before,
|
||||||
|
.flatpickr-calendar.arrowTop::after,
|
||||||
|
.flatpickr-calendar.arrowBottom::before,
|
||||||
|
.flatpickr-calendar.arrowBottom::after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
138
resources/css/utility-patterns.css
Normal file
138
resources/css/utility-patterns.css
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
/* Typography */
|
||||||
|
.h1 {
|
||||||
|
@apply text-4xl font-extrabold tracking-tighter;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h2 {
|
||||||
|
@apply text-3xl font-extrabold tracking-tighter;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h3 {
|
||||||
|
@apply text-3xl font-extrabold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h4 {
|
||||||
|
@apply text-2xl font-extrabold tracking-tight;
|
||||||
|
}
|
||||||
|
|
||||||
|
@screen md {
|
||||||
|
.h1 {
|
||||||
|
@apply text-5xl;
|
||||||
|
}
|
||||||
|
|
||||||
|
.h2 {
|
||||||
|
@apply text-4xl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Buttons */
|
||||||
|
.btn,
|
||||||
|
.btn-lg,
|
||||||
|
.btn-sm,
|
||||||
|
.btn-xs {
|
||||||
|
@apply font-medium text-sm inline-flex items-center justify-center border border-transparent rounded-lg leading-5 shadow-sm transition;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
@apply px-3 py-2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-lg {
|
||||||
|
@apply px-4 py-3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-sm {
|
||||||
|
@apply px-2 py-1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-xs {
|
||||||
|
@apply px-2 py-0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Forms */
|
||||||
|
input[type="search"]::-webkit-search-decoration,
|
||||||
|
input[type="search"]::-webkit-search-cancel-button,
|
||||||
|
input[type="search"]::-webkit-search-results-button,
|
||||||
|
input[type="search"]::-webkit-search-results-decoration {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-input,
|
||||||
|
.form-textarea,
|
||||||
|
.form-multiselect,
|
||||||
|
.form-select,
|
||||||
|
.form-checkbox,
|
||||||
|
.form-radio {
|
||||||
|
@apply bg-white dark:bg-gray-900/30 border focus:ring-0 focus:ring-offset-0 dark:disabled:bg-gray-700/30 dark:disabled:border-gray-700 dark:disabled:hover:border-gray-700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-checkbox {
|
||||||
|
@apply rounded;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-input,
|
||||||
|
.form-textarea,
|
||||||
|
.form-multiselect,
|
||||||
|
.form-select {
|
||||||
|
@apply text-sm text-gray-800 dark:text-gray-100 leading-5 py-2 px-3 border-gray-200 hover:border-gray-300 focus:border-gray-300 dark:border-gray-700/60 dark:hover:border-gray-600 dark:focus:border-gray-600 shadow-sm rounded-lg;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-input,
|
||||||
|
.form-textarea {
|
||||||
|
@apply placeholder-gray-400 dark:placeholder-gray-500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-select {
|
||||||
|
@apply pr-10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-checkbox,
|
||||||
|
.form-radio {
|
||||||
|
@apply text-violet-500 checked:bg-violet-500 dark:checked:border-transparent border border-gray-300 focus:border-violet-300 dark:border-gray-700/60 dark:focus:border-violet-500/50;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Switch element */
|
||||||
|
.form-switch {
|
||||||
|
@apply relative select-none;
|
||||||
|
width: 44px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-switch label {
|
||||||
|
@apply block overflow-hidden cursor-pointer h-6 rounded-full;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-switch label > span:first-child {
|
||||||
|
@apply absolute block rounded-full;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
top: 2px;
|
||||||
|
left: 2px;
|
||||||
|
right: 50%;
|
||||||
|
transition: all .15s ease-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-switch input[type="checkbox"]:checked + label {
|
||||||
|
@apply bg-violet-500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-switch input[type="checkbox"]:checked + label > span:first-child {
|
||||||
|
left: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-switch input[type="checkbox"]:disabled + label {
|
||||||
|
@apply cursor-not-allowed bg-gray-100 dark:bg-gray-700/20 border border-gray-200 dark:border-gray-700/60;
|
||||||
|
}
|
||||||
|
|
||||||
|
.form-switch input[type="checkbox"]:disabled + label > span:first-child {
|
||||||
|
@apply bg-gray-400 dark:bg-gray-600;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Chrome, Safari and Opera */
|
||||||
|
.no-scrollbar::-webkit-scrollbar {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.no-scrollbar {
|
||||||
|
-ms-overflow-style: none; /* IE and Edge */
|
||||||
|
scrollbar-width: none; /* Firefox */
|
||||||
|
}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
import {Alpine, Livewire} from '../../vendor/livewire/livewire/dist/livewire.esm';
|
||||||
|
|
||||||
|
import nostrApp from "./nostrApp.js";
|
||||||
|
import nostrLogin from "./nostrLogin.js";
|
||||||
|
|
||||||
import './bootstrap';
|
import './bootstrap';
|
||||||
|
|
||||||
// Light switcher
|
// Light switcher
|
||||||
@@ -6,3 +11,12 @@ document.documentElement.classList.add('dark');
|
|||||||
document.querySelector('html').style.colorScheme = 'dark';
|
document.querySelector('html').style.colorScheme = 'dark';
|
||||||
localStorage.setItem('dark-mode', true);
|
localStorage.setItem('dark-mode', true);
|
||||||
document.dispatchEvent(new CustomEvent('darkMode', { detail: { mode: 'on' } }));
|
document.dispatchEvent(new CustomEvent('darkMode', { detail: { mode: 'on' } }));
|
||||||
|
|
||||||
|
Alpine.store('nostr', {
|
||||||
|
user: null,
|
||||||
|
});
|
||||||
|
|
||||||
|
Alpine.data('nostrApp', nostrApp);
|
||||||
|
Alpine.data('nostrLogin', nostrLogin);
|
||||||
|
|
||||||
|
Livewire.start();
|
||||||
|
|||||||
15
resources/js/nostrApp.js
Normal file
15
resources/js/nostrApp.js
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
export default (livewireComponent) => ({
|
||||||
|
|
||||||
|
signThisEvent: livewireComponent.entangle('signThisEvent'),
|
||||||
|
|
||||||
|
init() {
|
||||||
|
// on change of signThisEvent, call the method
|
||||||
|
this.$watch('signThisEvent', async () => {
|
||||||
|
const toBeSigned = JSON.parse(this.signThisEvent);
|
||||||
|
console.log(toBeSigned);
|
||||||
|
const signedEvent = await window.nostr.signEvent(toBeSigned);
|
||||||
|
this.$wire.call('signEvent', signedEvent);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
29
resources/js/nostrLogin.js
Normal file
29
resources/js/nostrLogin.js
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
export default () => ({
|
||||||
|
|
||||||
|
openNostrLogin() {
|
||||||
|
window.nostr.getPublicKey();
|
||||||
|
},
|
||||||
|
|
||||||
|
init() {
|
||||||
|
// listen for nostr auth events
|
||||||
|
document.addEventListener('nlAuth', (e) => {
|
||||||
|
// type is login, signup or logout
|
||||||
|
if (e.detail.type === 'login' || e.detail.type === 'signup') {
|
||||||
|
console.log('User logged in');
|
||||||
|
// fetch profile from /api/nostr/profile/{publicKey}
|
||||||
|
fetch('/api/nostr/profile/' + e.detail.pubkey)
|
||||||
|
.then(response => response.json())
|
||||||
|
.then(data => {
|
||||||
|
console.log('Profile fetched', data);
|
||||||
|
// store the profile in AlpineJS store
|
||||||
|
Alpine.store('nostr', { user: data });
|
||||||
|
this.$dispatch('nostrLoggedIn', {pubkey: data.pubkey});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log('User logged out')
|
||||||
|
Alpine.store('nostr', { user: null });
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
@@ -5,17 +5,19 @@
|
|||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
<title>{{ $title ?? 'Page Title' }}</title>
|
<title>{{ $title ?? 'Page Title' }}</title>
|
||||||
|
@livewireStyles
|
||||||
@vite(['resources/js/app.js','resources/css/app.css'])
|
@vite(['resources/js/app.js','resources/css/app.css'])
|
||||||
@googlefonts
|
@googlefonts
|
||||||
<script src="https://kit.fontawesome.com/866fd3d0ab.js" crossorigin="anonymous"></script>
|
<script src="https://kit.fontawesome.com/866fd3d0ab.js" crossorigin="anonymous"></script>
|
||||||
<script src='https://www.unpkg.com/nostr-login@latest/dist/unpkg.js' data-perms="sign_event:1,sign_event:0"
|
<script src='https://www.unpkg.com/nostr-login@latest/dist/unpkg.js' data-perms="sign_event:1,sign_event:0"
|
||||||
data-theme="default" data-dark-mode="true"></script>
|
data-theme="default" data-dark-mode="true"></script>
|
||||||
|
@wireUiScripts
|
||||||
@stack('scripts')
|
@stack('scripts')
|
||||||
</head>
|
</head>
|
||||||
<body
|
<body
|
||||||
class="font-sans antialiased bg-gray-100 dark:bg-[#222222] text-gray-600 dark:text-gray-400"
|
class="font-sans antialiased bg-gray-100 dark:bg-[#222222] text-gray-600 dark:text-gray-400"
|
||||||
:class="{ 'sidebar-expanded': sidebarExpanded }"
|
:class="{ 'sidebar-expanded': sidebarExpanded }"
|
||||||
x-data="{ sidebarOpen: false, sidebarExpanded: localStorage.getItem('sidebar-expanded') == 'true' }"
|
x-data="{ sidebarOpen: false, sidebarExpanded: localStorage.getItem('sidebar-expanded') == 'true', inboxSidebarOpen: false }"
|
||||||
x-init="$watch('sidebarExpanded', value => localStorage.setItem('sidebar-expanded', value))"
|
x-init="$watch('sidebarExpanded', value => localStorage.setItem('sidebar-expanded', value))"
|
||||||
>
|
>
|
||||||
<script>
|
<script>
|
||||||
@@ -25,9 +27,11 @@
|
|||||||
document.querySelector('body').classList.remove('sidebar-expanded');
|
document.querySelector('body').classList.remove('sidebar-expanded');
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<div class="flex h-[100dvh] overflow-hidden">
|
<div x-data="nostrLogin"
|
||||||
@include('components.layouts.sidebar')
|
class="flex h-[100dvh] overflow-hidden">
|
||||||
<div class="relative flex flex-col flex-1 overflow-y-auto overflow-x-hidden">
|
<livewire:layout.sidebar/>
|
||||||
|
<div
|
||||||
|
class="relative flex flex-col flex-1 overflow-y-auto overflow-x-hidden">
|
||||||
<!-- Site header -->
|
<!-- Site header -->
|
||||||
<header
|
<header
|
||||||
class="sticky top-0 before:absolute before:inset-0 before:backdrop-blur-md before:bg-white/90 dark:before:bg-[#222222]/90 lg:before:bg-[#222222]/90 dark:lg:before:bg-[#222222]/90 before:-z-10 max-lg:shadow-sm z-30">
|
class="sticky top-0 before:absolute before:inset-0 before:backdrop-blur-md before:bg-white/90 dark:before:bg-[#222222]/90 lg:before:bg-[#222222]/90 dark:lg:before:bg-[#222222]/90 before:-z-10 max-lg:shadow-sm z-30">
|
||||||
@@ -125,11 +129,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
<main class="grow">
|
<main class="grow">
|
||||||
<div class="px-4 sm:px-6 lg:px-8 py-8 w-full max-w-9xl mx-auto">
|
|
||||||
{{ $slot }}
|
{{ $slot }}
|
||||||
</div>
|
|
||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@livewireScriptConfig
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<!-- Association group -->
|
||||||
|
<div>
|
||||||
|
<h3 class="text-xs uppercase text-gray-400 dark:text-gray-500 font-semibold pl-3">
|
||||||
|
<span class="hidden lg:block lg:sidebar-expanded:hidden 2xl:hidden text-center w-6"
|
||||||
|
aria-hidden="true">•••</span>
|
||||||
|
<span class="lg:hidden lg:sidebar-expanded:block 2xl:block">Verein</span>
|
||||||
|
</h3>
|
||||||
|
<ul class="mt-3">
|
||||||
|
<li class="{{ $currentRoute === 'association.profile' ? $isCurrentRouteClass : $isNotCurrentRouteClass }}">
|
||||||
|
<a class="block text-gray-800 dark:text-gray-100 hover:text-gray-900 dark:hover:text-white truncate transition" href="{{ route('association.profile') }}">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<i class="fa-sharp-duotone fa-solid fa-id-card-clip h-6 w-6"></i>
|
||||||
|
<span class="text-sm font-medium ml-4 lg:opacity-0 lg:sidebar-expanded:opacity-100 2xl:opacity-100 duration-200">Meine Mitgliedschaft</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="{{ $currentRoute === 'association.election' ? $isCurrentRouteClass : $isNotCurrentRouteClass }}">
|
||||||
|
<a class="block text-gray-800 dark:text-gray-100 hover:text-gray-900 dark:hover:text-white truncate transition" href="{{ route('association.election', ['election' => date('Y')]) }}">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<i class="fa-sharp-duotone fa-solid fa-check-to-slot h-6 w-6"></i>
|
||||||
|
<span class="text-sm font-medium ml-4 lg:opacity-0 lg:sidebar-expanded:opacity-100 2xl:opacity-100 duration-200">Vorstand</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="{{ $currentRoute === 'association.elections' ? $isCurrentRouteClass : $isNotCurrentRouteClass }}">
|
||||||
|
<a class="block text-gray-800 dark:text-gray-100 hover:text-gray-900 dark:hover:text-white truncate transition" href="{{ route('association.elections') }}">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<i class="fa-sharp-duotone fa-solid fa-booth-curtain h-6 w-6"></i>
|
||||||
|
<span class="text-sm font-medium ml-4 lg:opacity-0 lg:sidebar-expanded:opacity-100 2xl:opacity-100 duration-200">Wahlen</span>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
@@ -15,7 +15,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="pl-4 pr-3 py-2 rounded-lg mb-0.5 last:mb-0">
|
<li class="pl-4 pr-3 py-2 rounded-lg mb-0.5 last:mb-0">
|
||||||
<a class="block text-gray-800 dark:text-gray-100 hover:text-gray-900 dark:hover:text-white truncate transition" href="{{ route('meetups.table') }}">
|
<a class="block text-gray-800 dark:text-gray-100 hover:text-gray-900 dark:hover:text-white truncate transition" href="{{ route('meetups.grid') }}">
|
||||||
<div class="flex items-center">
|
<div class="flex items-center">
|
||||||
<i class="fa-sharp-duotone fa-solid fa-handshake-angle h-6 w-6"></i>
|
<i class="fa-sharp-duotone fa-solid fa-handshake-angle h-6 w-6"></i>
|
||||||
<span class="text-sm font-medium ml-4 lg:opacity-0 lg:sidebar-expanded:opacity-100 2xl:opacity-100 duration-200">Alle Meetups</span>
|
<span class="text-sm font-medium ml-4 lg:opacity-0 lg:sidebar-expanded:opacity-100 2xl:opacity-100 duration-200">Alle Meetups</span>
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
<div class="min-w-fit">
|
<div class="min-w-fit">
|
||||||
|
@php
|
||||||
|
$isCurrentRouteClass = 'pl-4 pr-3 py-2 rounded-lg mb-0.5 last:mb-0 bg-[linear-gradient(135deg,var(--tw-gradient-stops))] from-violet-500/[0.12] dark:from-violet-500/[0.24] to-violet-500/[0.04]';
|
||||||
|
$isNotCurrentRouteClass = 'pl-4 pr-3 py-2 rounded-lg mb-0.5 last:mb-0';
|
||||||
|
$isCurrentSubItem = 'block text-violet-500 transition truncate';
|
||||||
|
$isNotCurrentSubItem = 'block text-gray-500/90 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 transition truncate';
|
||||||
|
@endphp
|
||||||
|
|
||||||
<!-- Sidebar backdrop (mobile only) -->
|
<!-- Sidebar backdrop (mobile only) -->
|
||||||
<div
|
<div
|
||||||
class="fixed inset-0 bg-gray-900 bg-opacity-30 z-40 lg:hidden lg:z-auto transition-opacity duration-200"
|
class="fixed inset-0 bg-gray-900 bg-opacity-30 z-40 lg:hidden lg:z-auto transition-opacity duration-200"
|
||||||
@@ -10,7 +17,7 @@
|
|||||||
<!-- Sidebar -->
|
<!-- Sidebar -->
|
||||||
<div
|
<div
|
||||||
id="sidebar"
|
id="sidebar"
|
||||||
class="flex flex-col absolute z-40 left-0 top-0 lg:static lg:left-auto lg:top-auto lg:translate-x-0 h-[100dvh] overflow-y-scroll lg:overflow-y-auto no-scrollbar w-64 lg:w-20 lg:sidebar-expanded:!w-64 2xl:!w-64 shrink-0 bg-white dark:bg-[#1B1B1B] shadow-sm rounded-r-2xl p-4 transition-all duration-200 ease-in-out"
|
class="flex flex-col absolute z-40 left-0 top-0 lg:static lg:left-auto lg:top-auto lg:translate-x-0 h-[100dvh] overflow-y-scroll lg:overflow-y-auto no-scrollbar w-64 lg:w-20 lg:sidebar-expanded:!w-64 2xl:!w-64 shrink-0 bg-white dark:bg-[#222222] shadow-sm rounded-r-2xl p-4 transition-all duration-200 ease-in-out"
|
||||||
:class="sidebarOpen ? 'translate-x-0' : '-translate-x-64'"
|
:class="sidebarOpen ? 'translate-x-0' : '-translate-x-64'"
|
||||||
@click.outside="sidebarOpen = false"
|
@click.outside="sidebarOpen = false"
|
||||||
@keydown.escape.window="sidebarOpen = false"
|
@keydown.escape.window="sidebarOpen = false"
|
||||||
@@ -38,7 +45,8 @@
|
|||||||
|
|
||||||
<!-- Links -->
|
<!-- Links -->
|
||||||
<div class="space-y-8">
|
<div class="space-y-8">
|
||||||
@include('components.layouts.navigation.meetups')
|
@include('components.layouts.navigation.meetups', ['isCurrentRouteClass' => $isCurrentRouteClass, 'isNotCurrentRouteClass' => $isNotCurrentRouteClass])
|
||||||
|
@include('components.layouts.navigation.association', ['isCurrentRouteClass' => $isCurrentRouteClass, 'isNotCurrentRouteClass' => $isNotCurrentRouteClass])
|
||||||
{{--@include('components.layouts.navigation.events')
|
{{--@include('components.layouts.navigation.events')
|
||||||
@include('components.layouts.navigation.courses')
|
@include('components.layouts.navigation.courses')
|
||||||
@include('components.layouts.navigation.nostr')
|
@include('components.layouts.navigation.nostr')
|
||||||
|
|||||||
87
resources/views/livewire/layout/sidebar.blade.php
Normal file
87
resources/views/livewire/layout/sidebar.blade.php
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use function Livewire\Volt\state;
|
||||||
|
use function Livewire\Volt\mount;
|
||||||
|
|
||||||
|
state(['currentRoute' => '']);
|
||||||
|
|
||||||
|
mount(function() {
|
||||||
|
$currentLivewireRouteName = request()->route()->getName();
|
||||||
|
$this->currentRoute = $currentLivewireRouteName;
|
||||||
|
});
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div class="min-w-fit">
|
||||||
|
@php
|
||||||
|
$isCurrentRouteClass = 'pl-4 pr-3 py-2 rounded-lg mb-0.5 last:mb-0 bg-[linear-gradient(135deg,var(--tw-gradient-stops))] from-orange-500/[0.12] dark:from-orange-500/[0.24] to-orange-500/[0.04]';
|
||||||
|
$isNotCurrentRouteClass = 'pl-4 pr-3 py-2 rounded-lg mb-0.5 last:mb-0';
|
||||||
|
$isCurrentSubItem = 'block text-orange-500 transition truncate';
|
||||||
|
$isNotCurrentSubItem = 'block text-gray-500/90 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 transition truncate';
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
<!-- Sidebar backdrop (mobile only) -->
|
||||||
|
<div
|
||||||
|
class="fixed inset-0 bg-gray-900 bg-opacity-30 z-40 lg:hidden lg:z-auto transition-opacity duration-200"
|
||||||
|
:class="sidebarOpen ? 'opacity-100' : 'opacity-0 pointer-events-none'"
|
||||||
|
aria-hidden="true"
|
||||||
|
x-cloak
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<!-- Sidebar -->
|
||||||
|
<div
|
||||||
|
id="sidebar"
|
||||||
|
class="flex flex-col absolute z-40 left-0 top-0 lg:static lg:left-auto lg:top-auto lg:translate-x-0 h-[100dvh] overflow-y-scroll lg:overflow-y-auto no-scrollbar w-64 lg:w-20 lg:sidebar-expanded:!w-64 2xl:!w-64 shrink-0 bg-white dark:bg-[#222222] shadow-sm rounded-r-2xl p-4 transition-all duration-200 ease-in-out"
|
||||||
|
:class="sidebarOpen ? 'translate-x-0' : '-translate-x-64'"
|
||||||
|
@click.outside="sidebarOpen = false"
|
||||||
|
@keydown.escape.window="sidebarOpen = false"
|
||||||
|
x-cloak="lg"
|
||||||
|
>
|
||||||
|
|
||||||
|
<!-- Sidebar header -->
|
||||||
|
<div class="flex justify-between mb-10 pr-3 sm:px-2">
|
||||||
|
<!-- Close button -->
|
||||||
|
<button class="lg:hidden text-gray-500 hover:text-gray-400" @click.stop="sidebarOpen = !sidebarOpen"
|
||||||
|
aria-controls="sidebar" :aria-expanded="sidebarOpen">
|
||||||
|
<span class="sr-only">Close sidebar</span>
|
||||||
|
<svg class="w-6 h-6 fill-current" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M10.7 18.7l1.4-1.4L7.8 13H20v-2H7.8l4.3-4.3-1.4-1.4L4 12z"/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
<!-- Logo -->
|
||||||
|
<img src="{{ asset('img/einundzwanzig-horizontal-inverted.svg') }}" alt="Logo" width="auto" height="32">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@php
|
||||||
|
$activeLinkGroupClass = ' bg-[linear-gradient(135deg,var(--tw-gradient-stops))] from-amber-500/[0.12] dark:from-amber-500/[0.24] to-amber-500/[0.04]';
|
||||||
|
$activeItemClass = 'block text-amber-500 transition truncate';
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
<!-- Links -->
|
||||||
|
<div class="space-y-8">
|
||||||
|
@include('components.layouts.navigation.meetups')
|
||||||
|
@include('components.layouts.navigation.association')
|
||||||
|
{{--@include('components.layouts.navigation.events')
|
||||||
|
@include('components.layouts.navigation.courses')
|
||||||
|
@include('components.layouts.navigation.nostr')
|
||||||
|
@include('components.layouts.navigation.legacy')--}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Expand / collapse button -->
|
||||||
|
<div class="pt-3 hidden lg:inline-flex 2xl:hidden justify-end mt-auto">
|
||||||
|
<div class="w-12 pl-4 pr-3 py-2">
|
||||||
|
<button
|
||||||
|
class="text-gray-400 hover:text-gray-500 dark:text-gray-500 dark:hover:text-gray-400 transition-colors"
|
||||||
|
@click="sidebarExpanded = !sidebarExpanded">
|
||||||
|
<span class="sr-only">Expand / collapse sidebar</span>
|
||||||
|
<svg class="shrink-0 fill-current text-gray-400 dark:text-gray-500 sidebar-expanded:rotate-180"
|
||||||
|
xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||||
|
<path
|
||||||
|
d="M15 16a1 1 0 0 1-1-1V1a1 1 0 1 1 2 0v14a1 1 0 0 1-1 1ZM8.586 7H1a1 1 0 1 0 0 2h7.586l-2.793 2.793a1 1 0 1 0 1.414 1.414l4.5-4.5A.997.997 0 0 0 12 8.01M11.924 7.617a.997.997 0 0 0-.217-.324l-4.5-4.5a1 1 0 0 0-1.414 1.414L8.586 7M12 7.99a.996.996 0 0 0-.076-.373Z"/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -0,0 +1,502 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Livewire\Volt\Component;
|
||||||
|
|
||||||
|
use swentel\nostr\Filter\Filter;
|
||||||
|
use swentel\nostr\Key\Key;
|
||||||
|
use swentel\nostr\Message\EventMessage;
|
||||||
|
use swentel\nostr\Message\RequestMessage;
|
||||||
|
use swentel\nostr\Relay\Relay;
|
||||||
|
use swentel\nostr\Relay\RelaySet;
|
||||||
|
use swentel\nostr\Request\Request;
|
||||||
|
use swentel\nostr\Subscription\Subscription;
|
||||||
|
use swentel\nostr\Event\Event as NostrEvent;
|
||||||
|
use swentel\nostr\Sign\Sign;
|
||||||
|
|
||||||
|
use function Livewire\Volt\computed;
|
||||||
|
use function Livewire\Volt\mount;
|
||||||
|
use function Livewire\Volt\state;
|
||||||
|
use function Livewire\Volt\with;
|
||||||
|
use function Livewire\Volt\updated;
|
||||||
|
use function Laravel\Folio\{middleware};
|
||||||
|
use function Laravel\Folio\name;
|
||||||
|
use function Livewire\Volt\{on};
|
||||||
|
|
||||||
|
name('association.election');
|
||||||
|
|
||||||
|
state(['currentPubkey' => null]);
|
||||||
|
state(['events' => []]);
|
||||||
|
state(['election' => fn() => $election]);
|
||||||
|
state(['plebs' => []]);
|
||||||
|
state(['search' => '']);
|
||||||
|
state(['signThisEvent' => '']);
|
||||||
|
|
||||||
|
mount(function () {
|
||||||
|
$this->plebs = \App\Models\EinundzwanzigPleb::query()
|
||||||
|
->with([
|
||||||
|
'profile',
|
||||||
|
])
|
||||||
|
->whereIn('association_status', [3, 4])
|
||||||
|
->orderBy('association_status', 'desc')
|
||||||
|
->get()
|
||||||
|
->toArray();
|
||||||
|
$this->loadEvents();
|
||||||
|
});
|
||||||
|
|
||||||
|
on([
|
||||||
|
'nostrLoggedIn' => function ($pubkey) {
|
||||||
|
$this->currentPubkey = $pubkey;
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
on(['echo:votes,.newVote' => function () {
|
||||||
|
$this->loadEvents();
|
||||||
|
}]);
|
||||||
|
|
||||||
|
updated([
|
||||||
|
'search' => function ($value) {
|
||||||
|
$this->plebs = \App\Models\EinundzwanzigPleb::query()
|
||||||
|
->with([
|
||||||
|
'profile',
|
||||||
|
])
|
||||||
|
->where('pubkey', 'like', "%$value%")
|
||||||
|
->orWhereHas('profile', function ($query) use ($value) {
|
||||||
|
$query->where('name', 'ilike', "%$value%");
|
||||||
|
})
|
||||||
|
->orderBy('association_status', 'desc')
|
||||||
|
->get()
|
||||||
|
->toArray();
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
|
$loadEvents = function () {
|
||||||
|
$subscription = new Subscription();
|
||||||
|
$subscriptionId = $subscription->setId();
|
||||||
|
|
||||||
|
$filter1 = new Filter();
|
||||||
|
$filter1->setKinds([2121]); // You can add multiple kind numbers
|
||||||
|
$filters = [$filter1]; // You can add multiple filters.
|
||||||
|
|
||||||
|
$requestMessage = new RequestMessage($subscriptionId, $filters);
|
||||||
|
|
||||||
|
$relays = [
|
||||||
|
new Relay('ws://relay:7000'),
|
||||||
|
];
|
||||||
|
$relaySet = new RelaySet();
|
||||||
|
$relaySet->setRelays($relays);
|
||||||
|
|
||||||
|
$request = new Request($relaySet, $requestMessage);
|
||||||
|
$response = $request->send();
|
||||||
|
|
||||||
|
$this->events = collect($response['ws://relay:7000'])
|
||||||
|
->map(fn($event)
|
||||||
|
=> [
|
||||||
|
'id' => $event->event->id,
|
||||||
|
'kind' => $event->event->kind,
|
||||||
|
'content' => $event->event->content,
|
||||||
|
'pubkey' => $event->event->pubkey,
|
||||||
|
'tags' => $event->event->tags,
|
||||||
|
'created_at' => $event->event->created_at,
|
||||||
|
])->toArray();
|
||||||
|
};
|
||||||
|
|
||||||
|
$vote = function ($pubkey, $type) {
|
||||||
|
$note = new NostrEvent();
|
||||||
|
$note->setContent($pubkey . ',' . $type);
|
||||||
|
$note->setKind(2121);
|
||||||
|
$this->signThisEvent = $note->toJson();
|
||||||
|
};
|
||||||
|
|
||||||
|
$signEvent = function ($event) {
|
||||||
|
$note = new NostrEvent();
|
||||||
|
$note->setId($event['id']);
|
||||||
|
$note->setSignature($event['sig']);
|
||||||
|
$note->setKind($event['kind']);
|
||||||
|
$note->setContent($event['content']);
|
||||||
|
$note->setPublicKey($event['pubkey']);
|
||||||
|
$note->setTags($event['tags']);
|
||||||
|
$note->setCreatedAt($event['created_at']);
|
||||||
|
$eventMessage = new EventMessage($note);
|
||||||
|
$relayUrl = 'ws://relay:7000';
|
||||||
|
$relay = new Relay($relayUrl);
|
||||||
|
$relay->setMessage($eventMessage);
|
||||||
|
$result = $relay->send();
|
||||||
|
|
||||||
|
Broadcast::on('votes')
|
||||||
|
->as('newVote')
|
||||||
|
->sendNow();
|
||||||
|
};
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<x-layouts.app title="{{ __('Wahl') }}">
|
||||||
|
@volt
|
||||||
|
<div class="relative flex h-full" x-data="nostrApp(@this)">
|
||||||
|
|
||||||
|
@php
|
||||||
|
$positions = [
|
||||||
|
'presidency' => ['icon' => 'fa-crown', 'title' => 'Präsidium'],
|
||||||
|
'vice_president' => ['icon' => 'fa-user-group-crown', 'title' => 'Vizepräsidium'],
|
||||||
|
'finances' => ['icon' => 'fa-bitcoin-sign', 'title' => 'Finanzen'],
|
||||||
|
'secretary' => ['icon' => 'fa-stapler', 'title' => 'Sekretär (Akurat)'],
|
||||||
|
'press_officer' => ['icon' => 'fa-newspaper', 'title' => 'Pressewart'],
|
||||||
|
'it_manager' => ['icon' => 'fa-server', 'title' => 'Technikwart'],
|
||||||
|
];
|
||||||
|
$loadedEvents = collect($events)
|
||||||
|
->map(function($event) {
|
||||||
|
$profile = \App\Models\Profile::query()
|
||||||
|
->where('pubkey', $event['pubkey'])
|
||||||
|
->first()
|
||||||
|
->toArray();
|
||||||
|
$votedFor = \App\Models\Profile::query()
|
||||||
|
->where('pubkey', str($event['content'])->before(',')->toString())
|
||||||
|
->first()
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
return [
|
||||||
|
'id' => $event['id'],
|
||||||
|
'kind' => $event['kind'],
|
||||||
|
'content' => $event['content'],
|
||||||
|
'pubkey' => $event['pubkey'],
|
||||||
|
'tags' => $event['tags'],
|
||||||
|
'created_at' => $event['created_at'],
|
||||||
|
'profile' => $profile,
|
||||||
|
'votedFor' => $votedFor,
|
||||||
|
'type' => str($event['content'])->after(',')->toString(),
|
||||||
|
];
|
||||||
|
})
|
||||||
|
->sortByDesc('created_at')
|
||||||
|
->unique(function ($event) {
|
||||||
|
return $event['pubkey'] . $event['type'];
|
||||||
|
})
|
||||||
|
->values();
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
<!-- Inbox sidebar -->
|
||||||
|
<div id="inbox-sidebar"
|
||||||
|
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)]">
|
||||||
|
|
||||||
|
<!-- #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="w-full flex items-center justify-between">
|
||||||
|
<!-- Channel menu -->
|
||||||
|
<div class="relative" x-data="{ open: false }">
|
||||||
|
<button class="grow flex items-center truncate" aria-haspopup="true"
|
||||||
|
@click.prevent="open = !open" :aria-expanded="open">
|
||||||
|
<div class="truncate">
|
||||||
|
<span
|
||||||
|
class="font-semibold text-gray-800 dark:text-gray-100">2024</span>
|
||||||
|
</div>
|
||||||
|
<svg class="w-3 h-3 shrink-0 ml-1 fill-current text-gray-400 dark:text-gray-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"
|
||||||
|
@click.outside="open = false" @keydown.escape.window="open = false"
|
||||||
|
x-show="open"
|
||||||
|
x-transition:enter="transition ease-out duration-200 transform"
|
||||||
|
x-transition:enter-start="opacity-0 -translate-y-2"
|
||||||
|
x-transition:enter-end="opacity-100 translate-y-0"
|
||||||
|
x-transition:leave="transition ease-out duration-200"
|
||||||
|
x-transition:leave-start="opacity-100" x-transition:leave-end="opacity-0"
|
||||||
|
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"
|
||||||
|
href="#0" @click="open = false" @focus="open = true"
|
||||||
|
@focusout="open = false">
|
||||||
|
<div class="flex items-center justify-between">
|
||||||
|
<div class="grow flex items-center truncate">
|
||||||
|
<div class="truncate">2024</div>
|
||||||
|
</div>
|
||||||
|
<svg class="w-3 h-3 shrink-0 fill-current text-orange-500 ml-1"
|
||||||
|
viewBox="0 0 12 12">
|
||||||
|
<path
|
||||||
|
d="M10.28 1.28L3.989 7.575 1.695 5.28A1 1 0 00.28 6.695l3 3a1 1 0 001.414 0l7-7A1 1 0 0010.28 1.28z"/>
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Group body -->
|
||||||
|
<div class="px-5 py-4">
|
||||||
|
<!-- Search form -->
|
||||||
|
<form class="relative">
|
||||||
|
<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"
|
||||||
|
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"
|
||||||
|
width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M7 14c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7zM7 2C4.243 2 2 4.243 2 7s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5z"/>
|
||||||
|
<path
|
||||||
|
d="M15.707 14.293L13.314 11.9a8.019 8.019 0 01-1.414 1.414l2.393 2.393a.997.997 0 001.414 0 .999.999 0 000-1.414z"/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
<!-- Inbox -->
|
||||||
|
<div class="mt-4">
|
||||||
|
<div class="text-xs font-semibold text-gray-400 dark:text-gray-500 uppercase mb-3">
|
||||||
|
Plebs
|
||||||
|
</div>
|
||||||
|
<ul class="mb-6">
|
||||||
|
@foreach($plebs as $pleb)
|
||||||
|
<li class="-mx-2">
|
||||||
|
<div class="flex w-full p-2 rounded text-left">
|
||||||
|
<img class="w-8 h-8 rounded-full mr-2 bg-black"
|
||||||
|
src="{{ $pleb['profile']['picture'] ?? 'https://robohash.org/' . $pleb['pubkey'] }}"
|
||||||
|
onerror="this.onerror=null; this.src='https://robohash.org/{{ $pleb['pubkey'] }}';"
|
||||||
|
width="32"
|
||||||
|
height="32"
|
||||||
|
alt="{{ $pleb['pubkey'] }}"/>
|
||||||
|
<div class="grow truncate">
|
||||||
|
<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>
|
||||||
|
</div>
|
||||||
|
<div class="text-xs text-gray-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">
|
||||||
|
<div class="flex items-center space-x-2 h-5">
|
||||||
|
@foreach($positions as $name => $p)
|
||||||
|
@php
|
||||||
|
$votedResult = $loadedEvents->filter(fn ($e) => $e['pubkey'] === $pleb['pubkey'])->firstWhere('type', $name);
|
||||||
|
@endphp
|
||||||
|
<div class="flex space-x-2" wire:key="p_{{ $name }}">
|
||||||
|
@if($votedResult)
|
||||||
|
<i class="fa-sharp-duotone fa-solid {{ $p['icon'] }} w-4 h-4 fill-current text-green-500"></i>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Inbox body -->
|
||||||
|
@if($currentPubkey)
|
||||||
|
|
||||||
|
@php
|
||||||
|
$electionConfig = collect(json_decode($election->candidates, true, 512, JSON_THROW_ON_ERROR))
|
||||||
|
->map(function ($c) use ($loadedEvents, $currentPubkey) {
|
||||||
|
$candidates = \App\Models\Profile::query()
|
||||||
|
->whereIn('pubkey', $c['c'])
|
||||||
|
->get()
|
||||||
|
->map(function ($p) use ($loadedEvents, $c, $currentPubkey) {
|
||||||
|
$votedClass = ' bg-green-500/20 text-green-700';
|
||||||
|
$notVotedClass = ' bg-gray-500/20 text-gray-100';
|
||||||
|
$hasVoted = $loadedEvents
|
||||||
|
->filter(fn($e) => $e['type'] === $c['type'] && $e['pubkey'] === $currentPubkey)
|
||||||
|
->firstWhere('votedFor.pubkey', $p->pubkey);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'pubkey' => $p->pubkey,
|
||||||
|
'name' => $p->name,
|
||||||
|
'picture' => $p->picture,
|
||||||
|
'votedClass' => $hasVoted ? $votedClass : $notVotedClass,
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
return [
|
||||||
|
'type' => $c['type'],
|
||||||
|
'c' => $c['c'],
|
||||||
|
'candidates' => $candidates,
|
||||||
|
];
|
||||||
|
});
|
||||||
|
@endphp
|
||||||
|
|
||||||
|
<div class="grow flex flex-col md:translate-x-0 transition-transform duration-300 ease-in-out"
|
||||||
|
:class="inboxSidebarOpen ? 'translate-x-1/3' : 'translate-x-0'">
|
||||||
|
|
||||||
|
<!-- 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">
|
||||||
|
<div class="flex justify-between items-center">
|
||||||
|
<x-badge success label="Die Wahl ist geöffnet bis zum 31.12.2024 um 22:00 Uhr"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Body -->
|
||||||
|
<div class="grow px-4 sm:px-6 md:px-5 py-4">
|
||||||
|
|
||||||
|
<!-- Mail subject -->
|
||||||
|
<header class="sm:flex sm:items-start sm:justify-between mb-4">
|
||||||
|
<h1 class="text-xl leading-snug text-gray-800 dark:text-gray-100 font-bold mb-1 sm:mb-0 ml-2">
|
||||||
|
Wahl des Vereinsvorstands
|
||||||
|
</h1>
|
||||||
|
<button
|
||||||
|
class="text-xs inline-flex font-medium bg-sky-500/20 text-sky-700 rounded-full text-center px-2.5 py-1 whitespace-nowrap">
|
||||||
|
2024
|
||||||
|
</button>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<!-- Messages box -->
|
||||||
|
<div
|
||||||
|
class="shadow-sm rounded-xl px-6 divide-y divide-gray-200 dark:divide-gray-700/60">
|
||||||
|
|
||||||
|
<!-- Mail -->
|
||||||
|
<div class="py-6">
|
||||||
|
<div class="grid grid-cols-12 gap-6">
|
||||||
|
|
||||||
|
@foreach($positions as $type => $position)
|
||||||
|
@if($electionConfig->firstWhere('type', $type))
|
||||||
|
<div
|
||||||
|
class="col-span-full sm:col-span-6 xl:col-span-4 bg-white dark:bg-gray-800 shadow-sm rounded-xl">
|
||||||
|
<div class="flex flex-col h-full p-5">
|
||||||
|
<header>
|
||||||
|
<div class="flex items-center justify-between">
|
||||||
|
<i class="fa-sharp-duotone fa-solid {{ $position['icon'] }} w-9 h-9 fill-current text-white"></i>
|
||||||
|
</div>
|
||||||
|
</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">
|
||||||
|
<h2 class="text-xl leading-snug font-semibold">{{ $position['title'] }}</h2>
|
||||||
|
</div>
|
||||||
|
<div class="text-sm">
|
||||||
|
@php
|
||||||
|
$votedResult = $loadedEvents->filter(fn ($event) => $event['pubkey'] === $currentPubkey)->firstWhere('type', $type);
|
||||||
|
@endphp
|
||||||
|
@if($votedResult)
|
||||||
|
<span>Du hast "{{ $votedResult['votedFor']['name'] }}" gewählt</span>
|
||||||
|
@else
|
||||||
|
<span>Klicke auf den Kandidaten, den du wählen möchtest.</span>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer class="mt-5">
|
||||||
|
<div class="flex justify-between items-center">
|
||||||
|
@foreach($electionConfig->firstWhere('type', $type)['candidates'] as $c)
|
||||||
|
<div wire:click="vote('{{ $c['pubkey'] }}', '{{ $type }}')"
|
||||||
|
class="{{ $c['votedClass'] }} cursor-pointer text-xs inline-flex font-medium rounded-full text-center px-2.5 py-1">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<img class="w-6 h-6 rounded-full mr-2 bg-black"
|
||||||
|
src="{{ $c['picture'] ?? 'https://robohash.org/' . $c['pubkey'] }}"
|
||||||
|
onerror="this.onerror=null; this.src='https://robohash.org/{{ $c['pubkey'] }}';"
|
||||||
|
width="24" height="24" alt="{{ $c['name'] }}"/>
|
||||||
|
{{ $c['name'] }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
@endforeach
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Log events -->
|
||||||
|
<div class="mt-6">
|
||||||
|
<div class="bg-white dark:bg-gray-800 shadow-sm rounded-xl mb-8">
|
||||||
|
<header class="px-5 py-4">
|
||||||
|
<h2 class="font-semibold text-gray-800 dark:text-gray-100">Logged Votes on Nostr <span
|
||||||
|
class="text-gray-400 dark:text-gray-500 font-medium">{{ $loadedEvents->count() }}</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">
|
||||||
|
<!-- 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">
|
||||||
|
<tr>
|
||||||
|
<th class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||||
|
<div class="font-semibold text-left">ID</div>
|
||||||
|
</th>
|
||||||
|
<th class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||||
|
<div class="font-semibold text-left">Kind</div>
|
||||||
|
</th>
|
||||||
|
<th class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||||
|
<div class="font-semibold text-left">Pubkey</div>
|
||||||
|
</th>
|
||||||
|
<th class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||||
|
<div class="font-semibold text-left">Created At</div>
|
||||||
|
</th>
|
||||||
|
<th class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||||
|
<div class="font-semibold text-left">Voted For</div>
|
||||||
|
</th>
|
||||||
|
<th class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||||
|
<div class="font-semibold text-left">Type</div>
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<!-- Table body -->
|
||||||
|
<tbody class="text-sm">
|
||||||
|
@foreach($loadedEvents as $event)
|
||||||
|
<tr>
|
||||||
|
<td class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||||
|
<div class="font-medium">{{ \Illuminate\Support\Str::limit($event['id'], 10) }}</div>
|
||||||
|
</td>
|
||||||
|
<td class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||||
|
<div>{{ $event['kind'] }}</div>
|
||||||
|
</td>
|
||||||
|
<td class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||||
|
<div>{{ $event['profile']['name'] }}</div>
|
||||||
|
</td>
|
||||||
|
<td class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||||
|
<div>{{ $event['created_at'] }}</div>
|
||||||
|
</td>
|
||||||
|
<td class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||||
|
<div>{{ $event['votedFor']['name'] }}</div>
|
||||||
|
</td>
|
||||||
|
<td class="px-2 first:pl-5 last:pr-5 py-3 whitespace-nowrap">
|
||||||
|
<div>{{ $event['type'] }}</div>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@endvolt
|
||||||
|
</x-layouts.app>
|
||||||
54
resources/views/pages/association/election/index.blade.php
Normal file
54
resources/views/pages/association/election/index.blade.php
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Livewire\Volt\Component;
|
||||||
|
|
||||||
|
use function Livewire\Volt\computed;
|
||||||
|
use function Livewire\Volt\mount;
|
||||||
|
use function Livewire\Volt\state;
|
||||||
|
use function Livewire\Volt\with;
|
||||||
|
use function Livewire\Volt\updated;
|
||||||
|
use function Laravel\Folio\{middleware};
|
||||||
|
use function Laravel\Folio\name;
|
||||||
|
use function Livewire\Volt\{on};
|
||||||
|
|
||||||
|
name('association.elections');
|
||||||
|
|
||||||
|
state(['elections' => []]);
|
||||||
|
|
||||||
|
mount(function () {
|
||||||
|
$this->elections = \App\Models\Election::query()
|
||||||
|
->get()
|
||||||
|
->toArray();
|
||||||
|
});
|
||||||
|
|
||||||
|
updated([
|
||||||
|
]);
|
||||||
|
|
||||||
|
$saveElection = function ($index) {
|
||||||
|
$election = $this->elections[$index];
|
||||||
|
$electionModel = \App\Models\Election::find($election['id']);
|
||||||
|
$electionModel->candidates = $election['candidates'];
|
||||||
|
$electionModel->save();
|
||||||
|
};
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<x-layouts.app title="{{ __('Wahlen') }}">
|
||||||
|
@volt
|
||||||
|
<div class="relative flex h-full">
|
||||||
|
@foreach($elections as $election)
|
||||||
|
<div class="w-1/3 p-4">
|
||||||
|
<div class="shadow-lg rounded-lg overflow-hidden">
|
||||||
|
{{ $election['year'] }}
|
||||||
|
</div>
|
||||||
|
<div class="shadow-lg rounded-lg overflow-hidden">
|
||||||
|
<x-textarea wire:model="elections.{{ $loop->index }}.candidates" rows="25" label="candidates" placeholder="" />
|
||||||
|
</div>
|
||||||
|
<div class="py-2">
|
||||||
|
<x-button label="Speichern" wire:click="saveElection({{ $loop->index }})"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endforeach
|
||||||
|
</div>
|
||||||
|
@endvolt
|
||||||
|
</x-layouts.app>
|
||||||
164
resources/views/pages/association/profile.blade.php
Normal file
164
resources/views/pages/association/profile.blade.php
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Livewire\Volt\Component;
|
||||||
|
|
||||||
|
use function Livewire\Volt\computed;
|
||||||
|
use function Livewire\Volt\mount;
|
||||||
|
use function Livewire\Volt\state;
|
||||||
|
use function Livewire\Volt\with;
|
||||||
|
use function Laravel\Folio\{middleware};
|
||||||
|
use function Laravel\Folio\name;
|
||||||
|
use function Livewire\Volt\{on};
|
||||||
|
|
||||||
|
name('association.profile');
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<x-layouts.app title="{{ __('Wahl') }}">
|
||||||
|
@volt
|
||||||
|
<div class="px-4 sm:px-6 lg:px-8 py-8 w-full max-w-9xl mx-auto">
|
||||||
|
|
||||||
|
<!-- Page header -->
|
||||||
|
<div class="mb-8">
|
||||||
|
|
||||||
|
<!-- Title -->
|
||||||
|
<h1 class="text-2xl md:text-3xl text-[#1B1B1B] dark:text-gray-100 font-bold">
|
||||||
|
Einundzwanzig ist, was du draus machst
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="bg-white dark:bg-[#1B1B1B] shadow-sm rounded-xl mb-8">
|
||||||
|
<div class="flex flex-col md:flex-row md:-mr-px">
|
||||||
|
|
||||||
|
<!-- Sidebar -->
|
||||||
|
<div
|
||||||
|
class="flex flex-nowrap overflow-x-scroll no-scrollbar md:block md:overflow-auto px-3 py-6 border-b md:border-b-0 md:border-r border-gray-200 dark:border-gray-700/60 min-w-60 md:space-y-3">
|
||||||
|
<!-- Group 1 -->
|
||||||
|
<div>
|
||||||
|
<div class="text-xs font-semibold text-gray-400 dark:text-gray-500 uppercase mb-3">
|
||||||
|
Meine Mitgliedschaft
|
||||||
|
</div>
|
||||||
|
<ul class="flex flex-nowrap md:block mr-3 md:mr-0">
|
||||||
|
<li class="mr-0.5 md:mr-0 md:mb-0.5">
|
||||||
|
<a class="flex items-center px-2.5 py-2 rounded-lg whitespace-nowrap bg-[linear-gradient(135deg,var(--tw-gradient-stops))] from-orange-500/[0.12] dark:from-orange-500/[0.24] to-orange-500/[0.04]"
|
||||||
|
href="settings.html">
|
||||||
|
<i class="fa-sharp-duotone fa-solid fa-id-card-clip shrink-0 fill-current text-orange-400 mr-2"></i>
|
||||||
|
<span
|
||||||
|
class="text-sm font-medium text-orange-500 dark:text-orange-400">Status</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{{--<li class="mr-0.5 md:mr-0 md:mb-0.5">
|
||||||
|
<a class="flex items-center px-2.5 py-2 rounded-lg whitespace-nowrap"
|
||||||
|
href="notifications.html">
|
||||||
|
<svg class="shrink-0 fill-current text-gray-400 dark:text-gray-500 mr-2" width="16"
|
||||||
|
height="16" viewBox="0 0 16 16">
|
||||||
|
<path
|
||||||
|
d="m9 12.614 4.806 1.374a.15.15 0 0 0 .174-.21L8.133 2.082a.15.15 0 0 0-.268 0L2.02 13.777a.149.149 0 0 0 .174.21L7 12.614V9a1 1 0 1 1 2 0v3.614Zm-1 1.794-5.257 1.503c-1.798.514-3.35-1.355-2.513-3.028L6.076 1.188c.791-1.584 3.052-1.584 3.845 0l5.848 11.695c.836 1.672-.714 3.54-2.512 3.028L8 14.408Z"/>
|
||||||
|
</svg>
|
||||||
|
<span
|
||||||
|
class="text-sm font-medium text-gray-600 dark:text-gray-300 hover:text-gray-700 dark:hover:text-gray-200">My Notifications</span>
|
||||||
|
</a>
|
||||||
|
</li>--}}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- Group 2 -->
|
||||||
|
{{--<div>
|
||||||
|
<div class="text-xs font-semibold text-gray-400 dark:text-gray-500 uppercase mb-3">Experience
|
||||||
|
</div>
|
||||||
|
<ul class="flex flex-nowrap md:block mr-3 md:mr-0">
|
||||||
|
<li class="mr-0.5 md:mr-0 md:mb-0.5">
|
||||||
|
<a class="flex items-center px-2.5 py-2 rounded-lg whitespace-nowrap"
|
||||||
|
href="feedback.html">
|
||||||
|
<svg class="shrink-0 fill-current text-gray-400 dark:text-gray-500 mr-2" width="16"
|
||||||
|
height="16" viewBox="0 0 16 16">
|
||||||
|
<path
|
||||||
|
d="M14.3.3c.4-.4 1-.4 1.4 0 .4.4.4 1 0 1.4l-8 8c-.2.2-.4.3-.7.3-.3 0-.5-.1-.7-.3-.4-.4-.4-1 0-1.4l8-8zM15 7c.6 0 1 .4 1 1 0 4.4-3.6 8-8 8s-8-3.6-8-8 3.6-8 8-8c.6 0 1 .4 1 1s-.4 1-1 1C4.7 2 2 4.7 2 8s2.7 6 6 6 6-2.7 6-6c0-.6.4-1 1-1z"/>
|
||||||
|
</svg>
|
||||||
|
<span
|
||||||
|
class="text-sm font-medium text-gray-600 dark:text-gray-300 hover:text-gray-700 dark:hover:text-gray-200">Give Feedback</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>--}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Panel -->
|
||||||
|
<div class="grow">
|
||||||
|
|
||||||
|
<!-- Panel body -->
|
||||||
|
<div class="p-6 space-y-6">
|
||||||
|
<h2 class="text-2xl text-[#1B1B1B] dark:text-gray-100 font-bold mb-5">Aktueller Status</h2>
|
||||||
|
|
||||||
|
<!-- Picture -->
|
||||||
|
<section>
|
||||||
|
<div class="flex items-center">
|
||||||
|
<x-button label="Mit Nostr verbinden" @click="openNostrLogin" x-show="!$store.nostr.user"/>
|
||||||
|
<template x-if="$store.nostr.user">
|
||||||
|
<div class="flex items">
|
||||||
|
<img class="w-12 h-12 rounded-full"
|
||||||
|
x-bind:src="$store.nostr.user.picture"
|
||||||
|
alt="">
|
||||||
|
<div class="ml-4">
|
||||||
|
<h3 class="text-lg leading-snug text-[#1B1B1B] dark:text-gray-100 font-bold" x-text="$store.nostr.user.nip05"></h3>
|
||||||
|
<div class="text-sm text-gray-500 dark:text-gray-400" x-text="$store.nostr.user.nip05"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Business Profile -->
|
||||||
|
<section>
|
||||||
|
<h3 class="text-xl leading-snug text-[#1B1B1B] dark:text-gray-100 font-bold mb-1">
|
||||||
|
passives Mitglied werden
|
||||||
|
</h3>
|
||||||
|
<div class="text-sm">
|
||||||
|
TEXT
|
||||||
|
</div>
|
||||||
|
<div class="sm:flex sm:items-center space-y-4 sm:space-y-0 sm:space-x-4 mt-5">
|
||||||
|
<div class="sm:w-1/3">
|
||||||
|
<x-button label="Beantragen"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<!-- Email -->
|
||||||
|
<section>
|
||||||
|
<h3 class="text-xl leading-snug text-[#1B1B1B] dark:text-gray-100 font-bold mb-1">aktives
|
||||||
|
Mitglied werden</h3>
|
||||||
|
<div class="text-sm">
|
||||||
|
TEXT
|
||||||
|
</div>
|
||||||
|
<div class="sm:flex sm:items-center space-y-4 sm:space-y-0 sm:space-x-4 mt-5">
|
||||||
|
<div class="sm:w-1/3">
|
||||||
|
<x-button label="Beantragen"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Panel footer -->
|
||||||
|
{{--<footer>
|
||||||
|
<div class="flex flex-col px-6 py-5 border-t border-gray-200 dark:border-gray-700/60">
|
||||||
|
<div class="flex self-end">
|
||||||
|
<button
|
||||||
|
class="btn dark:bg-[#1B1B1B] border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 text-[#1B1B1B] dark:text-gray-300">
|
||||||
|
Cancel
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="btn bg-gray-900 text-gray-100 hover:bg-[#1B1B1B] dark:bg-gray-100 dark:text-[#1B1B1B] dark:hover:bg-white ml-3">
|
||||||
|
Save Changes
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>--}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@endvolt
|
||||||
|
</x-layouts.app>
|
||||||
247
resources/views/pages/meetups/grid.blade.php
Normal file
247
resources/views/pages/meetups/grid.blade.php
Normal file
@@ -0,0 +1,247 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Livewire\Volt\Component;
|
||||||
|
use swentel\nostr\Filter\Filter;
|
||||||
|
use swentel\nostr\Key\Key;
|
||||||
|
use swentel\nostr\Message\RequestMessage;
|
||||||
|
use swentel\nostr\Relay\Relay;
|
||||||
|
use swentel\nostr\Request\Request;
|
||||||
|
use swentel\nostr\Subscription\Subscription;
|
||||||
|
|
||||||
|
use function Livewire\Volt\computed;
|
||||||
|
use function Livewire\Volt\mount;
|
||||||
|
use function Livewire\Volt\state;
|
||||||
|
use function Livewire\Volt\with;
|
||||||
|
use function Laravel\Folio\{middleware};
|
||||||
|
use function Laravel\Folio\name;
|
||||||
|
use function Livewire\Volt\{on};
|
||||||
|
|
||||||
|
name('meetups.grid');
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
<x-layouts.app title="{{ __('Meetups') }}">
|
||||||
|
@volt
|
||||||
|
<div class="relative flex">
|
||||||
|
|
||||||
|
<!-- Profile sidebar -->
|
||||||
|
<div
|
||||||
|
id="profile-sidebar"
|
||||||
|
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="profileSidebarOpen ? '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)]">
|
||||||
|
|
||||||
|
<!-- Profile 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="w-full flex items-center justify-between">
|
||||||
|
<!-- Profile image -->
|
||||||
|
<div class="relative">
|
||||||
|
<div class="grow flex items-center truncate">
|
||||||
|
<div class="truncate">
|
||||||
|
<span
|
||||||
|
class="font-semibold text-gray-800 dark:text-gray-100">All meetups</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Add button -->
|
||||||
|
<button
|
||||||
|
class="p-1.5 shrink-0 rounded-lg bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700/60 hover:border-gray-300 dark:hover:border-gray-600 shadow-sm ml-2">
|
||||||
|
<svg class="fill-current text-violet-500" width="16" height="16"
|
||||||
|
viewBox="0 0 16 16">
|
||||||
|
<path
|
||||||
|
d="M15 7H9V1c0-.6-.4-1-1-1S7 .4 7 1v6H1c-.6 0-1 .4-1 1s.4 1 1 1h6v6c0 .6.4 1 1 1s1-.4 1-1V9h6c.6 0 1-.4 1-1s-.4-1-1-1Z"/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- Group body -->
|
||||||
|
<div class="px-5 py-4">
|
||||||
|
<!-- Search form -->
|
||||||
|
<div class="relative">
|
||||||
|
<label for="profile-search" class="sr-only">Search</label>
|
||||||
|
<input id="profile-search" class="form-input w-full pl-9 bg-white dark:bg-gray-800 rounded"
|
||||||
|
type="search" placeholder="Search…"/>
|
||||||
|
<button class="absolute inset-0 right-auto group cursor-default" 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"
|
||||||
|
width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path
|
||||||
|
d="M7 14c-3.86 0-7-3.14-7-7s3.14-7 7-7 7 3.14 7 7-3.14 7-7 7zM7 2C4.243 2 2 4.243 2 7s2.243 5 5 5 5-2.243 5-5-2.243-5-5-5z"/>
|
||||||
|
<path
|
||||||
|
d="M15.707 14.293L13.314 11.9a8.019 8.019 0 01-1.414 1.414l2.393 2.393a.997.997 0 001.414 0 .999.999 0 000-1.414z"/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<!-- Team members -->
|
||||||
|
<div class="mt-4">
|
||||||
|
<div class="text-xs font-semibold text-gray-400 dark:text-gray-500 uppercase mb-3">
|
||||||
|
Countries
|
||||||
|
</div>
|
||||||
|
<ul class="mb-6">
|
||||||
|
<li class="-mx-2">
|
||||||
|
<button
|
||||||
|
class="w-full p-2 rounded-lg bg-[linear-gradient(135deg,var(--tw-gradient-stops))] from-violet-500/[0.12] dark:from-violet-500/[0.24] to-violet-500/[0.04]"
|
||||||
|
@click="profileSidebarOpen = false">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<div class="relative mr-2">
|
||||||
|
<img class="w-8 h-8 rounded-full"
|
||||||
|
src="{{ asset('vendor/blade-country-flags/1x1-de.svg') }}"
|
||||||
|
width="32" height="32" alt="User 08"/>
|
||||||
|
</div>
|
||||||
|
<div class="truncate">
|
||||||
|
<span class="text-sm font-medium text-gray-800 dark:text-gray-100">Deutschland</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
<li class="-mx-2">
|
||||||
|
<button
|
||||||
|
class="w-full p-2"
|
||||||
|
@click="profileSidebarOpen = false">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<div class="relative mr-2">
|
||||||
|
<img class="w-8 h-8 rounded-full"
|
||||||
|
src="{{ asset('vendor/blade-country-flags/1x1-at.svg') }}"
|
||||||
|
width="32" height="32" alt="User 08"/>
|
||||||
|
</div>
|
||||||
|
<div class="truncate">
|
||||||
|
<span class="text-sm font-medium text-gray-800 dark:text-gray-100">Österreich</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
<li class="-mx-2">
|
||||||
|
<button
|
||||||
|
class="w-full p-2"
|
||||||
|
@click="profileSidebarOpen = false">
|
||||||
|
<div class="flex items-center">
|
||||||
|
<div class="relative mr-2">
|
||||||
|
<img class="w-8 h-8 rounded-full"
|
||||||
|
src="{{ asset('vendor/blade-country-flags/1x1-ch.svg') }}"
|
||||||
|
width="32" height="32" alt="User 08"/>
|
||||||
|
</div>
|
||||||
|
<div class="truncate">
|
||||||
|
<span class="text-sm font-medium text-gray-800 dark:text-gray-100">Schweiz</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Profile body -->
|
||||||
|
<div
|
||||||
|
class="grow flex flex-col md:translate-x-0 transition-transform duration-300 ease-in-out"
|
||||||
|
:class="profileSidebarOpen ? 'translate-x-1/3' : 'translate-x-0'"
|
||||||
|
>
|
||||||
|
|
||||||
|
<!-- Profile background -->
|
||||||
|
<div class="relative h-56 bg-gray-200 dark:bg-gray-900">
|
||||||
|
<img class="object-cover object-top h-full w-full" src="{{ asset('img/meetup_saarland.jpg') }}"
|
||||||
|
width="979" height="220"
|
||||||
|
alt="Profile background"/>
|
||||||
|
<!-- Close button -->
|
||||||
|
<button
|
||||||
|
class="md:hidden absolute top-4 left-4 sm:left-6 text-white opacity-80 hover:opacity-100"
|
||||||
|
@click.stop="profileSidebarOpen = !profileSidebarOpen"
|
||||||
|
aria-controls="profile-sidebar"
|
||||||
|
:aria-expanded="profileSidebarOpen"
|
||||||
|
>
|
||||||
|
<span class="sr-only">Close sidebar</span>
|
||||||
|
<svg class="w-6 h-6 fill-current" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M10.7 18.7l1.4-1.4L7.8 13H20v-2H7.8l4.3-4.3-1.4-1.4L4 12z"/>
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Content -->
|
||||||
|
<div class="relative px-4 sm:px-6 pb-8">
|
||||||
|
|
||||||
|
<!-- Pre-header -->
|
||||||
|
<div class="-mt-16 mb-6 sm:mb-3">
|
||||||
|
|
||||||
|
<div class="flex flex-col items-center sm:flex-row sm:justify-between sm:items-end">
|
||||||
|
|
||||||
|
<!-- Avatar -->
|
||||||
|
<div class="inline-flex -ml-1 -mt-1 mb-4 sm:mb-0" style="height: 128px">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Actions -->
|
||||||
|
<div class="flex space-x-2 sm:mb-2">
|
||||||
|
{{-- ACTIONS --}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="grid xl:grid-cols-2 gap-6 mb-8">
|
||||||
|
|
||||||
|
<!-- Item 1 -->
|
||||||
|
<article class="flex bg-white dark:bg-[#1B1B1B] shadow-sm rounded-xl overflow-hidden">
|
||||||
|
<!-- Image -->
|
||||||
|
<a class="relative block w-24 sm:w-56 xl:sidebar-expanded:w-40 2xl:sidebar-expanded:w-56 shrink-0" href="meetups-post.html">
|
||||||
|
<img class="absolute object-cover object-center w-full h-full" src="./images/meetups-thumb-01.jpg" width="220" height="236" alt="Meetup 01" />
|
||||||
|
<!-- Like button -->
|
||||||
|
<button class="absolute top-0 right-0 mt-4 mr-4">
|
||||||
|
<div class="text-gray-100 bg-gray-900 bg-opacity-60 rounded-full">
|
||||||
|
<span class="sr-only">Like</span>
|
||||||
|
<svg class="h-8 w-8 fill-current" viewBox="0 0 32 32">
|
||||||
|
<path d="M22.682 11.318A4.485 4.485 0 0019.5 10a4.377 4.377 0 00-3.5 1.707A4.383 4.383 0 0012.5 10a4.5 4.5 0 00-3.182 7.682L16 24l6.682-6.318a4.5 4.5 0 000-6.364zm-1.4 4.933L16 21.247l-5.285-5A2.5 2.5 0 0112.5 12c1.437 0 2.312.681 3.5 2.625C17.187 12.681 18.062 12 19.5 12a2.5 2.5 0 011.785 4.251h-.003z" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
</a>
|
||||||
|
<!-- Content -->
|
||||||
|
<div class="grow p-5 flex flex-col">
|
||||||
|
<div class="grow">
|
||||||
|
<div class="text-sm font-semibold text-violet-500 uppercase mb-2">Mon 27 Dec, 2024</div>
|
||||||
|
<a class="inline-flex mb-2" href="meetups-post.html">
|
||||||
|
<h3 class="text-lg font-bold text-gray-800 dark:text-gray-100">Silicon Valley Bootstrapper Breakfast Online for 2024</h3>
|
||||||
|
</a>
|
||||||
|
<div class="text-sm">Lorem ipsum is placeholder text commonly used in the graphic, print, and publishing industries for previewing layouts.</div>
|
||||||
|
</div>
|
||||||
|
<!-- Footer -->
|
||||||
|
<div class="flex justify-between items-center mt-3">
|
||||||
|
<!-- Tag -->
|
||||||
|
<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">
|
||||||
|
<svg class="w-4 h-3 fill-gray-400 dark:fill-gray-500 mr-2" viewBox="0 0 16 12">
|
||||||
|
<path d="m16 2-4 2.4V2a2 2 0 0 0-2-2H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V7.6l4 2.4V2ZM2 10V2h8v8H2Z" />
|
||||||
|
</svg>
|
||||||
|
<span>Online Event</span>
|
||||||
|
</div>
|
||||||
|
<!-- Avatars -->
|
||||||
|
<div class="flex items-center space-x-2">
|
||||||
|
<div class="flex -space-x-3 -ml-0.5">
|
||||||
|
<img class="rounded-full border-2 border-white dark:border-gray-800 box-content" src="./images/avatar-01.jpg" width="28" height="28" alt="User 01" />
|
||||||
|
<img class="rounded-full border-2 border-white dark:border-gray-800 box-content" src="./images/avatar-04.jpg" width="28" height="28" alt="User 04" />
|
||||||
|
<img class="rounded-full border-2 border-white dark:border-gray-800 box-content" src="./images/avatar-05.jpg" width="28" height="28" alt="User 05" />
|
||||||
|
</div>
|
||||||
|
<div class="text-xs font-medium text-gray-400 dark:text-gray-500 italic">+22</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
@endvolt
|
||||||
|
</x-layouts.app>
|
||||||
135
resources/views/pages/meetups/mockup.blade.php
Normal file
135
resources/views/pages/meetups/mockup.blade.php
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Livewire\Volt\Component;
|
||||||
|
use swentel\nostr\Filter\Filter;
|
||||||
|
use swentel\nostr\Key\Key;
|
||||||
|
use swentel\nostr\Message\EventMessage;
|
||||||
|
use swentel\nostr\Message\RequestMessage;
|
||||||
|
use swentel\nostr\Relay\Relay;
|
||||||
|
use swentel\nostr\Relay\RelaySet;
|
||||||
|
use swentel\nostr\Request\Request;
|
||||||
|
use swentel\nostr\Subscription\Subscription;
|
||||||
|
use swentel\nostr\Event\Event as NostrEvent;
|
||||||
|
use swentel\nostr\Sign\Sign;
|
||||||
|
|
||||||
|
use function Livewire\Volt\computed;
|
||||||
|
use function Livewire\Volt\mount;
|
||||||
|
use function Livewire\Volt\state;
|
||||||
|
use function Livewire\Volt\with;
|
||||||
|
use function Laravel\Folio\{middleware};
|
||||||
|
use function Laravel\Folio\name;
|
||||||
|
use function Livewire\Volt\{on};
|
||||||
|
|
||||||
|
name('meetups.mockup');
|
||||||
|
|
||||||
|
state(['events' => []]);
|
||||||
|
state(['title' => '']);
|
||||||
|
state(['description' => '']);
|
||||||
|
state(['signThisEvent' => '']);
|
||||||
|
|
||||||
|
mount(function () {
|
||||||
|
$this->loadEvents();
|
||||||
|
});
|
||||||
|
|
||||||
|
$loadEvents = function() {
|
||||||
|
$subscription = new Subscription();
|
||||||
|
$subscriptionId = $subscription->setId();
|
||||||
|
|
||||||
|
$filter1 = new Filter();
|
||||||
|
$filter1->setKinds([31924]); // You can add multiple kind numbers
|
||||||
|
$filter1->setLimit(25); // Limit to fetch only a maximum of 25 events
|
||||||
|
$filters = [$filter1]; // You can add multiple filters.
|
||||||
|
|
||||||
|
$requestMessage = new RequestMessage($subscriptionId, $filters);
|
||||||
|
|
||||||
|
$relays = [
|
||||||
|
new Relay('ws://nostream:8008'),
|
||||||
|
];
|
||||||
|
$relaySet = new RelaySet();
|
||||||
|
$relaySet->setRelays($relays);
|
||||||
|
|
||||||
|
$request = new Request($relaySet, $requestMessage);
|
||||||
|
$response = $request->send();
|
||||||
|
|
||||||
|
$this->events = collect($response['ws://nostream:8008'])
|
||||||
|
->map(fn($event)
|
||||||
|
=> [
|
||||||
|
'id' => $event->event->id,
|
||||||
|
'kind' => $event->event->kind,
|
||||||
|
'content' => $event->event->content,
|
||||||
|
'pubkey' => $event->event->pubkey,
|
||||||
|
'tags' => $event->event->tags,
|
||||||
|
'created_at' => $event->event->created_at,
|
||||||
|
])->toArray();
|
||||||
|
};
|
||||||
|
|
||||||
|
$save = function () {
|
||||||
|
$note = new NostrEvent();
|
||||||
|
$note->setContent($this->description);
|
||||||
|
$note->setKind(31924);
|
||||||
|
$note->setTags([
|
||||||
|
['d', str()->uuid()->toString()],
|
||||||
|
['title', $this->title],
|
||||||
|
]);
|
||||||
|
$this->signThisEvent = $note->toJson();
|
||||||
|
};
|
||||||
|
|
||||||
|
$signEvent = function ($event) {
|
||||||
|
$note = new NostrEvent();
|
||||||
|
$note->setId($event['id']);
|
||||||
|
$note->setSignature($event['sig']);
|
||||||
|
$note->setKind($event['kind']);
|
||||||
|
$note->setContent($event['content']);
|
||||||
|
$note->setPublicKey($event['pubkey']);
|
||||||
|
$note->setTags($event['tags']);
|
||||||
|
$note->setCreatedAt($event['created_at']);
|
||||||
|
$eventMessage = new EventMessage($note);
|
||||||
|
$relayUrl = 'ws://nostream:8008';
|
||||||
|
$relay = new Relay($relayUrl);
|
||||||
|
$relay->setMessage($eventMessage);
|
||||||
|
$result = $relay->send();
|
||||||
|
|
||||||
|
$this->title = '';
|
||||||
|
$this->description = '';
|
||||||
|
$this->loadEvents();
|
||||||
|
};
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
<x-layouts.app title="{{ __('Mockup') }}">
|
||||||
|
@volt
|
||||||
|
<div class="relative" x-data="nostrApp(@this)">
|
||||||
|
<div class="flex items-center space-x-2 mt-12">
|
||||||
|
<div>
|
||||||
|
<x-input wire:model.live.debounce="title" label="Title"/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<x-textarea wire:model.live.debounce="description" label="Description"/>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<x-button wire:click="save" label="Save"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<h1 class="text-2x font-bold py-6">Meetups</h1>
|
||||||
|
<ul class="border-t border-white space-y-4 divide-y divide-white">
|
||||||
|
@foreach($events as $event)
|
||||||
|
<li>
|
||||||
|
<div class="flex items">
|
||||||
|
<div class="flex items-center space-x-2">
|
||||||
|
<div>
|
||||||
|
Name: {{ collect($event['tags'])->firstWhere(0, 'title')[1] }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
Beschreibung: {{ $event['content'] }}
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
@dump($event)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
@endforeach
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
@endvolt
|
||||||
|
</x-layouts.app>
|
||||||
5
routes/api.php
Normal file
5
routes/api.php
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
|
Route::get('/nostr/profile/{key}', \App\Http\Controllers\Api\Nostr\GetProfile::class);
|
||||||
@@ -1,6 +1,10 @@
|
|||||||
/** @type {import('tailwindcss').Config} */
|
/** @type {import('tailwindcss').Config} */
|
||||||
|
|
||||||
|
const colors = require('tailwindcss/colors');
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
presets: [
|
presets: [
|
||||||
|
require("./vendor/wireui/wireui/tailwind.config.js"),
|
||||||
require("./vendor/power-components/livewire-powergrid/tailwind.config.js"),
|
require("./vendor/power-components/livewire-powergrid/tailwind.config.js"),
|
||||||
],
|
],
|
||||||
content: [
|
content: [
|
||||||
@@ -9,12 +13,36 @@ export default {
|
|||||||
|
|
||||||
'./app/Livewire/**/*Table.php',
|
'./app/Livewire/**/*Table.php',
|
||||||
'./vendor/power-components/livewire-powergrid/resources/views/**/*.php',
|
'./vendor/power-components/livewire-powergrid/resources/views/**/*.php',
|
||||||
'./vendor/power-components/livewire-powergrid/src/Themes/Tailwind.php'
|
'./vendor/power-components/livewire-powergrid/src/Themes/Tailwind.php',
|
||||||
|
|
||||||
|
'./vendor/wireui/wireui/src/*.php',
|
||||||
|
'./vendor/wireui/wireui/ts/**/*.ts',
|
||||||
|
'./vendor/wireui/wireui/src/WireUi/**/*.php',
|
||||||
|
'./vendor/wireui/wireui/src/Components/**/*.php',
|
||||||
],
|
],
|
||||||
darkMode: 'class',
|
darkMode: 'class',
|
||||||
theme: {
|
theme: {
|
||||||
extend: {
|
extend: {
|
||||||
colors: {
|
colors: {
|
||||||
|
primary: {
|
||||||
|
'50': '#fffbea',
|
||||||
|
'100': '#fff2c5',
|
||||||
|
'200': '#ffe685',
|
||||||
|
'300': '#ffd246',
|
||||||
|
'400': '#ffbd1b',
|
||||||
|
'500': '#ff9900',
|
||||||
|
'600': '#e27200',
|
||||||
|
'700': '#bb4d02',
|
||||||
|
'800': '#983b08',
|
||||||
|
'900': '#7c310b',
|
||||||
|
'950': '#481700',
|
||||||
|
},
|
||||||
|
secondary: colors.gray,
|
||||||
|
positive: colors.emerald,
|
||||||
|
negative: colors.red,
|
||||||
|
warning: colors.amber,
|
||||||
|
info: colors.blue,
|
||||||
|
|
||||||
"pg-primary": {
|
"pg-primary": {
|
||||||
50: "#F0F0F0",
|
50: "#F0F0F0",
|
||||||
100: "#E3E3E3",
|
100: "#E3E3E3",
|
||||||
@@ -157,7 +185,9 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
plugins: [],
|
plugins: [
|
||||||
|
require('@tailwindcss/forms'),
|
||||||
|
],
|
||||||
safelist: [
|
safelist: [
|
||||||
'w-96',
|
'w-96',
|
||||||
'group',
|
'group',
|
||||||
|
|||||||
658
yarn.lock
658
yarn.lock
@@ -166,6 +166,57 @@
|
|||||||
"@jridgewell/resolve-uri" "^3.1.0"
|
"@jridgewell/resolve-uri" "^3.1.0"
|
||||||
"@jridgewell/sourcemap-codec" "^1.4.14"
|
"@jridgewell/sourcemap-codec" "^1.4.14"
|
||||||
|
|
||||||
|
"@noble/ciphers@^0.5.1":
|
||||||
|
version "0.5.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-0.5.3.tgz#48b536311587125e0d0c1535f73ec8375cd76b23"
|
||||||
|
integrity sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==
|
||||||
|
|
||||||
|
"@noble/curves@1.2.0":
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35"
|
||||||
|
integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==
|
||||||
|
dependencies:
|
||||||
|
"@noble/hashes" "1.3.2"
|
||||||
|
|
||||||
|
"@noble/curves@^1.4.0":
|
||||||
|
version "1.6.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.6.0.tgz#be5296ebcd5a1730fccea4786d420f87abfeb40b"
|
||||||
|
integrity sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==
|
||||||
|
dependencies:
|
||||||
|
"@noble/hashes" "1.5.0"
|
||||||
|
|
||||||
|
"@noble/curves@~1.1.0":
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d"
|
||||||
|
integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==
|
||||||
|
dependencies:
|
||||||
|
"@noble/hashes" "1.3.1"
|
||||||
|
|
||||||
|
"@noble/hashes@1.3.1":
|
||||||
|
version "1.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9"
|
||||||
|
integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==
|
||||||
|
|
||||||
|
"@noble/hashes@1.3.2":
|
||||||
|
version "1.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39"
|
||||||
|
integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==
|
||||||
|
|
||||||
|
"@noble/hashes@1.5.0", "@noble/hashes@^1.3.1":
|
||||||
|
version "1.5.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.5.0.tgz#abadc5ca20332db2b1b2aa3e496e9af1213570b0"
|
||||||
|
integrity sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==
|
||||||
|
|
||||||
|
"@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1":
|
||||||
|
version "1.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699"
|
||||||
|
integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==
|
||||||
|
|
||||||
|
"@noble/secp256k1@^2.0.0":
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-2.1.0.tgz#71d829a0b8ce84aea137708f82273977eea84597"
|
||||||
|
integrity sha512-XLEQQNdablO0XZOIniFQimiXsZDNwaYgL96dZwC54Q30imSbAOFf3NKtepc+cXyuZf5Q1HCgbqgZ2UFFuHVcEw==
|
||||||
|
|
||||||
"@nodelib/fs.scandir@2.1.5":
|
"@nodelib/fs.scandir@2.1.5":
|
||||||
version "2.1.5"
|
version "2.1.5"
|
||||||
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
|
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
|
||||||
@@ -187,95 +238,147 @@
|
|||||||
"@nodelib/fs.scandir" "2.1.5"
|
"@nodelib/fs.scandir" "2.1.5"
|
||||||
fastq "^1.6.0"
|
fastq "^1.6.0"
|
||||||
|
|
||||||
|
"@nostr-dev-kit/ndk@^2.10.0":
|
||||||
|
version "2.10.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@nostr-dev-kit/ndk/-/ndk-2.10.0.tgz#b8474b6af7cab5285e9415fd96bedd7f24934810"
|
||||||
|
integrity sha512-TqCAAo6ylORraAXrzRkCGFN2xTMiFbdER8Y8CtUT0HwOpFG/Wn+PBNeDeDmqkl/6LaPdeyXmVwCWj2KcUjIwYA==
|
||||||
|
dependencies:
|
||||||
|
"@noble/curves" "^1.4.0"
|
||||||
|
"@noble/hashes" "^1.3.1"
|
||||||
|
"@noble/secp256k1" "^2.0.0"
|
||||||
|
"@scure/base" "^1.1.1"
|
||||||
|
debug "^4.3.4"
|
||||||
|
light-bolt11-decoder "^3.0.0"
|
||||||
|
node-fetch "^3.3.1"
|
||||||
|
nostr-tools "^2.7.1"
|
||||||
|
tseep "^1.1.1"
|
||||||
|
typescript-lru-cache "^2.0.0"
|
||||||
|
utf8-buffer "^1.0.0"
|
||||||
|
websocket-polyfill "^0.0.3"
|
||||||
|
|
||||||
"@pkgjs/parseargs@^0.11.0":
|
"@pkgjs/parseargs@^0.11.0":
|
||||||
version "0.11.0"
|
version "0.11.0"
|
||||||
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
|
resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
|
||||||
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
|
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
|
||||||
|
|
||||||
"@rollup/rollup-android-arm-eabi@4.21.2":
|
"@rollup/rollup-android-arm-eabi@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz#0412834dc423d1ff7be4cb1fc13a86a0cd262c11"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.22.5.tgz#e0f5350845090ca09690fe4a472717f3b8aae225"
|
||||||
integrity sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==
|
integrity sha512-SU5cvamg0Eyu/F+kLeMXS7GoahL+OoizlclVFX3l5Ql6yNlywJJ0OuqTzUx0v+aHhPHEB/56CT06GQrRrGNYww==
|
||||||
|
|
||||||
"@rollup/rollup-android-arm64@4.21.2":
|
"@rollup/rollup-android-arm64@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz#baf1a014b13654f3b9e835388df9caf8c35389cb"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.22.5.tgz#08270faef6747e2716d3e978a8bbf479f75fb19a"
|
||||||
integrity sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==
|
integrity sha512-S4pit5BP6E5R5C8S6tgU/drvgjtYW76FBuG6+ibG3tMvlD1h9LHVF9KmlmaUBQ8Obou7hEyS+0w+IR/VtxwNMQ==
|
||||||
|
|
||||||
"@rollup/rollup-darwin-arm64@4.21.2":
|
"@rollup/rollup-darwin-arm64@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz#0a2c364e775acdf1172fe3327662eec7c46e55b1"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.22.5.tgz#691671133b350661328d42c8dbdedd56dfb97dfd"
|
||||||
integrity sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==
|
integrity sha512-250ZGg4ipTL0TGvLlfACkIxS9+KLtIbn7BCZjsZj88zSg2Lvu3Xdw6dhAhfe/FjjXPVNCtcSp+WZjVsD3a/Zlw==
|
||||||
|
|
||||||
"@rollup/rollup-darwin-x64@4.21.2":
|
"@rollup/rollup-darwin-x64@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz#a972db75890dfab8df0da228c28993220a468c42"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.22.5.tgz#b2ec52a1615f24b1cd40bc8906ae31af81e8a342"
|
||||||
integrity sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==
|
integrity sha512-D8brJEFg5D+QxFcW6jYANu+Rr9SlKtTenmsX5hOSzNYVrK5oLAEMTUgKWYJP+wdKyCdeSwnapLsn+OVRFycuQg==
|
||||||
|
|
||||||
"@rollup/rollup-linux-arm-gnueabihf@4.21.2":
|
"@rollup/rollup-linux-arm-gnueabihf@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz#1609d0630ef61109dd19a278353e5176d92e30a1"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.22.5.tgz#217f01f304808920680bd269002df38e25d9205f"
|
||||||
integrity sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==
|
integrity sha512-PNqXYmdNFyWNg0ma5LdY8wP+eQfdvyaBAojAXgO7/gs0Q/6TQJVXAXe8gwW9URjbS0YAammur0fynYGiWsKlXw==
|
||||||
|
|
||||||
"@rollup/rollup-linux-arm-musleabihf@4.21.2":
|
"@rollup/rollup-linux-arm-musleabihf@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz#3c1dca5f160aa2e79e4b20ff6395eab21804f266"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.22.5.tgz#93ac1c5a1e389f4482a2edaeec41fcffee54a930"
|
||||||
integrity sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==
|
integrity sha512-kSSCZOKz3HqlrEuwKd9TYv7vxPYD77vHSUvM2y0YaTGnFc8AdI5TTQRrM1yIp3tXCKrSL9A7JLoILjtad5t8pQ==
|
||||||
|
|
||||||
"@rollup/rollup-linux-arm64-gnu@4.21.2":
|
"@rollup/rollup-linux-arm64-gnu@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz#c2fe376e8b04eafb52a286668a8df7c761470ac7"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.22.5.tgz#a7f146787d6041fecc4ecdf1aa72234661ca94a4"
|
||||||
integrity sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==
|
integrity sha512-oTXQeJHRbOnwRnRffb6bmqmUugz0glXaPyspp4gbQOPVApdpRrY/j7KP3lr7M8kTfQTyrBUzFjj5EuHAhqH4/w==
|
||||||
|
|
||||||
"@rollup/rollup-linux-arm64-musl@4.21.2":
|
"@rollup/rollup-linux-arm64-musl@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz#e62a4235f01e0f66dbba587c087ca6db8008ec80"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.22.5.tgz#6a37236189648e678bd564d6e8ca798f42cf42c5"
|
||||||
integrity sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==
|
integrity sha512-qnOTIIs6tIGFKCHdhYitgC2XQ2X25InIbZFor5wh+mALH84qnFHvc+vmWUpyX97B0hNvwNUL4B+MB8vJvH65Fw==
|
||||||
|
|
||||||
"@rollup/rollup-linux-powerpc64le-gnu@4.21.2":
|
"@rollup/rollup-linux-powerpc64le-gnu@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz#24b3457e75ee9ae5b1c198bd39eea53222a74e54"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.22.5.tgz#5661420dc463bec31ecb2d17d113de858cfcfe2d"
|
||||||
integrity sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==
|
integrity sha512-TMYu+DUdNlgBXING13rHSfUc3Ky5nLPbWs4bFnT+R6Vu3OvXkTkixvvBKk8uO4MT5Ab6lC3U7x8S8El2q5o56w==
|
||||||
|
|
||||||
"@rollup/rollup-linux-riscv64-gnu@4.21.2":
|
"@rollup/rollup-linux-riscv64-gnu@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz#38edfba9620fe2ca8116c97e02bd9f2d606bde09"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.22.5.tgz#cb00342b7432bdef723aa606281de2f522d6dcf7"
|
||||||
integrity sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==
|
integrity sha512-PTQq1Kz22ZRvuhr3uURH+U/Q/a0pbxJoICGSprNLAoBEkyD3Sh9qP5I0Asn0y0wejXQBbsVMRZRxlbGFD9OK4A==
|
||||||
|
|
||||||
"@rollup/rollup-linux-s390x-gnu@4.21.2":
|
"@rollup/rollup-linux-s390x-gnu@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz#a3bfb8bc5f1e802f8c76cff4a4be2e9f9ac36a18"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.22.5.tgz#0708889674dccecccd28e2befccf791e0767fcb7"
|
||||||
integrity sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==
|
integrity sha512-bR5nCojtpuMss6TDEmf/jnBnzlo+6n1UhgwqUvRoe4VIotC7FG1IKkyJbwsT7JDsF2jxR+NTnuOwiGv0hLyDoQ==
|
||||||
|
|
||||||
"@rollup/rollup-linux-x64-gnu@4.21.2":
|
"@rollup/rollup-linux-x64-gnu@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz#0dadf34be9199fcdda44b5985a086326344f30ad"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.22.5.tgz#a135b040b21582e91cfed2267ccfc7d589e1dbc6"
|
||||||
integrity sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==
|
integrity sha512-N0jPPhHjGShcB9/XXZQWuWBKZQnC1F36Ce3sDqWpujsGjDz/CQtOL9LgTrJ+rJC8MJeesMWrMWVLKKNR/tMOCA==
|
||||||
|
|
||||||
"@rollup/rollup-linux-x64-musl@4.21.2":
|
"@rollup/rollup-linux-x64-musl@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz#7b7deddce240400eb87f2406a445061b4fed99a8"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.22.5.tgz#88395a81a3ab7ee3dc8dc31a73ff62ed3185f34d"
|
||||||
integrity sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==
|
integrity sha512-uBa2e28ohzNNwjr6Uxm4XyaA1M/8aTgfF2T7UIlElLaeXkgpmIJ2EitVNQxjO9xLLLy60YqAgKn/AqSpCUkE9g==
|
||||||
|
|
||||||
"@rollup/rollup-win32-arm64-msvc@4.21.2":
|
"@rollup/rollup-win32-arm64-msvc@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz#a0ca0c5149c2cfb26fab32e6ba3f16996fbdb504"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.22.5.tgz#12ee49233b1125f2c1da38392f63b1dbb0c31bba"
|
||||||
integrity sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==
|
integrity sha512-RXT8S1HP8AFN/Kr3tg4fuYrNxZ/pZf1HemC5Tsddc6HzgGnJm0+Lh5rAHJkDuW3StI0ynNXukidROMXYl6ew8w==
|
||||||
|
|
||||||
"@rollup/rollup-win32-ia32-msvc@4.21.2":
|
"@rollup/rollup-win32-ia32-msvc@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz#aae2886beec3024203dbb5569db3a137bc385f8e"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.22.5.tgz#0f987b134c6b3123c22842b33ba0c2b6fb78cc3b"
|
||||||
integrity sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==
|
integrity sha512-ElTYOh50InL8kzyUD6XsnPit7jYCKrphmddKAe1/Ytt74apOxDq5YEcbsiKs0fR3vff3jEneMM+3I7jbqaMyBg==
|
||||||
|
|
||||||
"@rollup/rollup-win32-x64-msvc@4.21.2":
|
"@rollup/rollup-win32-x64-msvc@4.22.5":
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz#e4291e3c1bc637083f87936c333cdbcad22af63b"
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.22.5.tgz#f2feb149235a5dc1deb5439758f8871255e5a161"
|
||||||
integrity sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==
|
integrity sha512-+lvL/4mQxSV8MukpkKyyvfwhH266COcWlXE/1qxwN08ajovta3459zrjLghYMgDerlzNwLAcFpvU+WWE5y6nAQ==
|
||||||
|
|
||||||
"@types/estree@1.0.5":
|
"@scure/base@1.1.1":
|
||||||
version "1.0.5"
|
version "1.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
|
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938"
|
||||||
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
|
integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==
|
||||||
|
|
||||||
|
"@scure/base@^1.1.1", "@scure/base@~1.1.0":
|
||||||
|
version "1.1.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1"
|
||||||
|
integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==
|
||||||
|
|
||||||
|
"@scure/bip32@1.3.1":
|
||||||
|
version "1.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10"
|
||||||
|
integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==
|
||||||
|
dependencies:
|
||||||
|
"@noble/curves" "~1.1.0"
|
||||||
|
"@noble/hashes" "~1.3.1"
|
||||||
|
"@scure/base" "~1.1.0"
|
||||||
|
|
||||||
|
"@scure/bip39@1.2.1":
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a"
|
||||||
|
integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==
|
||||||
|
dependencies:
|
||||||
|
"@noble/hashes" "~1.3.0"
|
||||||
|
"@scure/base" "~1.1.0"
|
||||||
|
|
||||||
|
"@tailwindcss/forms@^0.5.8":
|
||||||
|
version "0.5.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/@tailwindcss/forms/-/forms-0.5.9.tgz#b495c12575d6eae5865b2cbd9876b26d89f16f61"
|
||||||
|
integrity sha512-tM4XVr2+UVTxXJzey9Twx48c1gcxFStqn1pQz0tRsX8o3DvxhN5oY5pvyAbUx7VTaZxpej4Zzvc6h+1RJBzpIg==
|
||||||
|
dependencies:
|
||||||
|
mini-svg-data-uri "^1.2.3"
|
||||||
|
|
||||||
|
"@types/estree@1.0.6":
|
||||||
|
version "1.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.6.tgz#628effeeae2064a1b4e79f78e81d87b7e5fc7b50"
|
||||||
|
integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
|
||||||
|
|
||||||
ansi-regex@^5.0.1:
|
ansi-regex@^5.0.1:
|
||||||
version "5.0.1"
|
version "5.0.1"
|
||||||
@@ -283,9 +386,9 @@ ansi-regex@^5.0.1:
|
|||||||
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
||||||
|
|
||||||
ansi-regex@^6.0.1:
|
ansi-regex@^6.0.1:
|
||||||
version "6.0.1"
|
version "6.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a"
|
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.1.0.tgz#95ec409c69619d6cb1b8b34f14b660ef28ebd654"
|
||||||
integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
|
integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==
|
||||||
|
|
||||||
ansi-styles@^4.0.0:
|
ansi-styles@^4.0.0:
|
||||||
version "4.3.0"
|
version "4.3.0"
|
||||||
@@ -317,11 +420,6 @@ arg@^5.0.2:
|
|||||||
resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
|
resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
|
||||||
integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
|
integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
|
||||||
|
|
||||||
asynckit@^0.4.0:
|
|
||||||
version "0.4.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
|
||||||
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
|
|
||||||
|
|
||||||
autoprefixer@^10.4.20:
|
autoprefixer@^10.4.20:
|
||||||
version "10.4.20"
|
version "10.4.20"
|
||||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b"
|
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b"
|
||||||
@@ -334,15 +432,6 @@ autoprefixer@^10.4.20:
|
|||||||
picocolors "^1.0.1"
|
picocolors "^1.0.1"
|
||||||
postcss-value-parser "^4.2.0"
|
postcss-value-parser "^4.2.0"
|
||||||
|
|
||||||
axios@^1.6.4:
|
|
||||||
version "1.7.7"
|
|
||||||
resolved "https://registry.yarnpkg.com/axios/-/axios-1.7.7.tgz#2f554296f9892a72ac8d8e4c5b79c14a91d0a47f"
|
|
||||||
integrity sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==
|
|
||||||
dependencies:
|
|
||||||
follow-redirects "^1.15.6"
|
|
||||||
form-data "^4.0.0"
|
|
||||||
proxy-from-env "^1.1.0"
|
|
||||||
|
|
||||||
balanced-match@^1.0.0:
|
balanced-match@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||||
@@ -368,24 +457,31 @@ braces@^3.0.3, braces@~3.0.2:
|
|||||||
fill-range "^7.1.1"
|
fill-range "^7.1.1"
|
||||||
|
|
||||||
browserslist@^4.23.3:
|
browserslist@^4.23.3:
|
||||||
version "4.23.3"
|
version "4.24.0"
|
||||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800"
|
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4"
|
||||||
integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==
|
integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite "^1.0.30001646"
|
caniuse-lite "^1.0.30001663"
|
||||||
electron-to-chromium "^1.5.4"
|
electron-to-chromium "^1.5.28"
|
||||||
node-releases "^2.0.18"
|
node-releases "^2.0.18"
|
||||||
update-browserslist-db "^1.1.0"
|
update-browserslist-db "^1.1.0"
|
||||||
|
|
||||||
|
bufferutil@^4.0.1:
|
||||||
|
version "4.0.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.8.tgz#1de6a71092d65d7766c4d8a522b261a6e787e8ea"
|
||||||
|
integrity sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==
|
||||||
|
dependencies:
|
||||||
|
node-gyp-build "^4.3.0"
|
||||||
|
|
||||||
camelcase-css@^2.0.1:
|
camelcase-css@^2.0.1:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
|
resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
|
||||||
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
|
integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
|
||||||
|
|
||||||
caniuse-lite@^1.0.30001646:
|
caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001663:
|
||||||
version "1.0.30001655"
|
version "1.0.30001664"
|
||||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz#0ce881f5a19a2dcfda2ecd927df4d5c1684b982f"
|
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz#d588d75c9682d3301956b05a3749652a80677df4"
|
||||||
integrity sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==
|
integrity sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==
|
||||||
|
|
||||||
chokidar@^3.5.3:
|
chokidar@^3.5.3:
|
||||||
version "3.6.0"
|
version "3.6.0"
|
||||||
@@ -414,13 +510,6 @@ color-name@~1.1.4:
|
|||||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||||
|
|
||||||
combined-stream@^1.0.8:
|
|
||||||
version "1.0.8"
|
|
||||||
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
|
|
||||||
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
|
|
||||||
dependencies:
|
|
||||||
delayed-stream "~1.0.0"
|
|
||||||
|
|
||||||
commander@^4.0.0:
|
commander@^4.0.0:
|
||||||
version "4.1.1"
|
version "4.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
|
||||||
@@ -440,10 +529,32 @@ cssesc@^3.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
|
||||||
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
|
||||||
|
|
||||||
delayed-stream@~1.0.0:
|
d@1, d@^1.0.1, d@^1.0.2:
|
||||||
version "1.0.0"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de"
|
||||||
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
|
integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==
|
||||||
|
dependencies:
|
||||||
|
es5-ext "^0.10.64"
|
||||||
|
type "^2.7.2"
|
||||||
|
|
||||||
|
data-uri-to-buffer@^4.0.0:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz#d8feb2b2881e6a4f58c2e08acfd0e2834e26222e"
|
||||||
|
integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==
|
||||||
|
|
||||||
|
debug@^2.2.0:
|
||||||
|
version "2.6.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||||
|
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
||||||
|
dependencies:
|
||||||
|
ms "2.0.0"
|
||||||
|
|
||||||
|
debug@^4.3.4:
|
||||||
|
version "4.3.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52"
|
||||||
|
integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==
|
||||||
|
dependencies:
|
||||||
|
ms "^2.1.3"
|
||||||
|
|
||||||
didyoumean@^1.2.2:
|
didyoumean@^1.2.2:
|
||||||
version "1.2.2"
|
version "1.2.2"
|
||||||
@@ -460,10 +571,10 @@ eastasianwidth@^0.2.0:
|
|||||||
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
|
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
|
||||||
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
|
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
|
||||||
|
|
||||||
electron-to-chromium@^1.5.4:
|
electron-to-chromium@^1.5.28:
|
||||||
version "1.5.13"
|
version "1.5.29"
|
||||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6"
|
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz#aa592a3caa95d07cc26a66563accf99fa573a1ee"
|
||||||
integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==
|
integrity sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==
|
||||||
|
|
||||||
emoji-regex@^8.0.0:
|
emoji-regex@^8.0.0:
|
||||||
version "8.0.0"
|
version "8.0.0"
|
||||||
@@ -475,6 +586,33 @@ emoji-regex@^9.2.2:
|
|||||||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
|
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
|
||||||
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
|
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
|
||||||
|
|
||||||
|
es5-ext@^0.10.35, es5-ext@^0.10.62, es5-ext@^0.10.63, es5-ext@^0.10.64, es5-ext@~0.10.14:
|
||||||
|
version "0.10.64"
|
||||||
|
resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714"
|
||||||
|
integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==
|
||||||
|
dependencies:
|
||||||
|
es6-iterator "^2.0.3"
|
||||||
|
es6-symbol "^3.1.3"
|
||||||
|
esniff "^2.0.1"
|
||||||
|
next-tick "^1.1.0"
|
||||||
|
|
||||||
|
es6-iterator@^2.0.3:
|
||||||
|
version "2.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7"
|
||||||
|
integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==
|
||||||
|
dependencies:
|
||||||
|
d "1"
|
||||||
|
es5-ext "^0.10.35"
|
||||||
|
es6-symbol "^3.1.1"
|
||||||
|
|
||||||
|
es6-symbol@^3.1.1, es6-symbol@^3.1.3:
|
||||||
|
version "3.1.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c"
|
||||||
|
integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==
|
||||||
|
dependencies:
|
||||||
|
d "^1.0.2"
|
||||||
|
ext "^1.7.0"
|
||||||
|
|
||||||
esbuild@^0.21.3:
|
esbuild@^0.21.3:
|
||||||
version "0.21.5"
|
version "0.21.5"
|
||||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d"
|
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d"
|
||||||
@@ -504,11 +642,36 @@ esbuild@^0.21.3:
|
|||||||
"@esbuild/win32-ia32" "0.21.5"
|
"@esbuild/win32-ia32" "0.21.5"
|
||||||
"@esbuild/win32-x64" "0.21.5"
|
"@esbuild/win32-x64" "0.21.5"
|
||||||
|
|
||||||
escalade@^3.1.2:
|
escalade@^3.2.0:
|
||||||
version "3.2.0"
|
version "3.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
|
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
|
||||||
integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
|
integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
|
||||||
|
|
||||||
|
esniff@^2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308"
|
||||||
|
integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==
|
||||||
|
dependencies:
|
||||||
|
d "^1.0.1"
|
||||||
|
es5-ext "^0.10.62"
|
||||||
|
event-emitter "^0.3.5"
|
||||||
|
type "^2.7.2"
|
||||||
|
|
||||||
|
event-emitter@^0.3.5:
|
||||||
|
version "0.3.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39"
|
||||||
|
integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==
|
||||||
|
dependencies:
|
||||||
|
d "1"
|
||||||
|
es5-ext "~0.10.14"
|
||||||
|
|
||||||
|
ext@^1.7.0:
|
||||||
|
version "1.7.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f"
|
||||||
|
integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==
|
||||||
|
dependencies:
|
||||||
|
type "^2.7.2"
|
||||||
|
|
||||||
fast-glob@^3.3.0:
|
fast-glob@^3.3.0:
|
||||||
version "3.3.2"
|
version "3.3.2"
|
||||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
|
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
|
||||||
@@ -527,6 +690,14 @@ fastq@^1.6.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
reusify "^1.0.4"
|
reusify "^1.0.4"
|
||||||
|
|
||||||
|
fetch-blob@^3.1.2, fetch-blob@^3.1.4:
|
||||||
|
version "3.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9"
|
||||||
|
integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==
|
||||||
|
dependencies:
|
||||||
|
node-domexception "^1.0.0"
|
||||||
|
web-streams-polyfill "^3.0.3"
|
||||||
|
|
||||||
fill-range@^7.1.1:
|
fill-range@^7.1.1:
|
||||||
version "7.1.1"
|
version "7.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
|
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
|
||||||
@@ -539,11 +710,6 @@ flatpickr@^4.6.13:
|
|||||||
resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.13.tgz#8a029548187fd6e0d670908471e43abe9ad18d94"
|
resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.13.tgz#8a029548187fd6e0d670908471e43abe9ad18d94"
|
||||||
integrity sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==
|
integrity sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==
|
||||||
|
|
||||||
follow-redirects@^1.15.6:
|
|
||||||
version "1.15.6"
|
|
||||||
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b"
|
|
||||||
integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
|
|
||||||
|
|
||||||
foreground-child@^3.1.0:
|
foreground-child@^3.1.0:
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77"
|
resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77"
|
||||||
@@ -552,14 +718,12 @@ foreground-child@^3.1.0:
|
|||||||
cross-spawn "^7.0.0"
|
cross-spawn "^7.0.0"
|
||||||
signal-exit "^4.0.1"
|
signal-exit "^4.0.1"
|
||||||
|
|
||||||
form-data@^4.0.0:
|
formdata-polyfill@^4.0.10:
|
||||||
version "4.0.0"
|
version "4.0.10"
|
||||||
resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
|
resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423"
|
||||||
integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
|
integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==
|
||||||
dependencies:
|
dependencies:
|
||||||
asynckit "^0.4.0"
|
fetch-blob "^3.1.2"
|
||||||
combined-stream "^1.0.8"
|
|
||||||
mime-types "^2.1.12"
|
|
||||||
|
|
||||||
fraction.js@^4.3.7:
|
fraction.js@^4.3.7:
|
||||||
version "4.3.7"
|
version "4.3.7"
|
||||||
@@ -645,6 +809,11 @@ is-number@^7.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
|
||||||
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
||||||
|
|
||||||
|
is-typedarray@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
|
||||||
|
integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
|
||||||
|
|
||||||
isexe@^2.0.0:
|
isexe@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||||
@@ -677,6 +846,13 @@ laravel-vite-plugin@^1.0:
|
|||||||
picocolors "^1.0.0"
|
picocolors "^1.0.0"
|
||||||
vite-plugin-full-reload "^1.1.0"
|
vite-plugin-full-reload "^1.1.0"
|
||||||
|
|
||||||
|
light-bolt11-decoder@^3.0.0:
|
||||||
|
version "3.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/light-bolt11-decoder/-/light-bolt11-decoder-3.2.0.tgz#2d48f78386cde526c4131db8f9dfd3250a2d5d4d"
|
||||||
|
integrity sha512-3QEofgiBOP4Ehs9BI+RkZdXZNtSys0nsJ6fyGeSiAGCBsMwHGUDS/JQlY/sTnWs91A2Nh0S9XXfA8Sy9g6QpuQ==
|
||||||
|
dependencies:
|
||||||
|
"@scure/base" "1.1.1"
|
||||||
|
|
||||||
lilconfig@^2.1.0:
|
lilconfig@^2.1.0:
|
||||||
version "2.1.0"
|
version "2.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
|
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
|
||||||
@@ -710,17 +886,10 @@ micromatch@^4.0.4, micromatch@^4.0.5:
|
|||||||
braces "^3.0.3"
|
braces "^3.0.3"
|
||||||
picomatch "^2.3.1"
|
picomatch "^2.3.1"
|
||||||
|
|
||||||
mime-db@1.52.0:
|
mini-svg-data-uri@^1.2.3:
|
||||||
version "1.52.0"
|
version "1.4.4"
|
||||||
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
|
resolved "https://registry.yarnpkg.com/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939"
|
||||||
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
|
integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==
|
||||||
|
|
||||||
mime-types@^2.1.12:
|
|
||||||
version "2.1.35"
|
|
||||||
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
|
|
||||||
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
|
||||||
dependencies:
|
|
||||||
mime-db "1.52.0"
|
|
||||||
|
|
||||||
minimatch@^9.0.4:
|
minimatch@^9.0.4:
|
||||||
version "9.0.5"
|
version "9.0.5"
|
||||||
@@ -734,6 +903,16 @@ minimatch@^9.0.4:
|
|||||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
|
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
|
||||||
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
||||||
|
|
||||||
|
ms@2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
|
||||||
|
integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
|
||||||
|
|
||||||
|
ms@^2.1.3:
|
||||||
|
version "2.1.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||||
|
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||||
|
|
||||||
mz@^2.7.0:
|
mz@^2.7.0:
|
||||||
version "2.7.0"
|
version "2.7.0"
|
||||||
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
|
resolved "https://registry.yarnpkg.com/mz/-/mz-2.7.0.tgz#95008057a56cafadc2bc63dde7f9ff6955948e32"
|
||||||
@@ -748,6 +927,30 @@ nanoid@^3.3.7:
|
|||||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
|
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
|
||||||
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
|
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
|
||||||
|
|
||||||
|
next-tick@^1.1.0:
|
||||||
|
version "1.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb"
|
||||||
|
integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==
|
||||||
|
|
||||||
|
node-domexception@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5"
|
||||||
|
integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==
|
||||||
|
|
||||||
|
node-fetch@^3.3.1:
|
||||||
|
version "3.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.3.2.tgz#d1e889bacdf733b4ff3b2b243eb7a12866a0b78b"
|
||||||
|
integrity sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==
|
||||||
|
dependencies:
|
||||||
|
data-uri-to-buffer "^4.0.0"
|
||||||
|
fetch-blob "^3.1.4"
|
||||||
|
formdata-polyfill "^4.0.10"
|
||||||
|
|
||||||
|
node-gyp-build@^4.3.0:
|
||||||
|
version "4.8.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.2.tgz#4f802b71c1ab2ca16af830e6c1ea7dd1ad9496fa"
|
||||||
|
integrity sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==
|
||||||
|
|
||||||
node-releases@^2.0.18:
|
node-releases@^2.0.18:
|
||||||
version "2.0.18"
|
version "2.0.18"
|
||||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
|
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
|
||||||
@@ -763,6 +966,25 @@ normalize-range@^0.1.2:
|
|||||||
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
|
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
|
||||||
integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
|
integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
|
||||||
|
|
||||||
|
nostr-tools@^2.7.1:
|
||||||
|
version "2.7.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/nostr-tools/-/nostr-tools-2.7.2.tgz#74a6ff543a81da1dcce9563b9317faa17221acce"
|
||||||
|
integrity sha512-Bq3Ug0SZFtgtL1+0wCnAe8AJtI7yx/00/a2nUug9SkhfOwlKS92Tef12iCK9FdwXw+oFZWMtRnSwcLayQso+xA==
|
||||||
|
dependencies:
|
||||||
|
"@noble/ciphers" "^0.5.1"
|
||||||
|
"@noble/curves" "1.2.0"
|
||||||
|
"@noble/hashes" "1.3.1"
|
||||||
|
"@scure/base" "1.1.1"
|
||||||
|
"@scure/bip32" "1.3.1"
|
||||||
|
"@scure/bip39" "1.2.1"
|
||||||
|
optionalDependencies:
|
||||||
|
nostr-wasm v0.1.0
|
||||||
|
|
||||||
|
nostr-wasm@v0.1.0:
|
||||||
|
version "0.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/nostr-wasm/-/nostr-wasm-0.1.0.tgz#17af486745feb2b7dd29503fdd81613a24058d94"
|
||||||
|
integrity sha512-78BTryCLcLYv96ONU8Ws3Q1JzjlAt+43pWQhIl86xZmWeegYCNLPml7yQ+gG3vR6V5h4XGj+TxO+SS5dsThQIA==
|
||||||
|
|
||||||
object-assign@^4.0.1:
|
object-assign@^4.0.1:
|
||||||
version "4.1.1"
|
version "4.1.1"
|
||||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||||
@@ -774,9 +996,9 @@ object-hash@^3.0.0:
|
|||||||
integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
|
integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
|
||||||
|
|
||||||
package-json-from-dist@^1.0.0:
|
package-json-from-dist@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00"
|
resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
|
||||||
integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==
|
integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
|
||||||
|
|
||||||
path-key@^3.1.0:
|
path-key@^3.1.0:
|
||||||
version "3.1.1"
|
version "3.1.1"
|
||||||
@@ -796,7 +1018,7 @@ path-scurry@^1.11.1:
|
|||||||
lru-cache "^10.2.0"
|
lru-cache "^10.2.0"
|
||||||
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||||
|
|
||||||
picocolors@^1.0.0, picocolors@^1.0.1:
|
picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
|
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
|
||||||
integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
|
integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
|
||||||
@@ -861,18 +1083,13 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
|
|||||||
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
|
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
|
||||||
|
|
||||||
postcss@^8.4.23, postcss@^8.4.41, postcss@^8.4.43:
|
postcss@^8.4.23, postcss@^8.4.41, postcss@^8.4.43:
|
||||||
version "8.4.44"
|
version "8.4.47"
|
||||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.44.tgz#d56834ef6508610ba224bb22b2457b2169ed0480"
|
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.47.tgz#5bf6c9a010f3e724c503bf03ef7947dcb0fea365"
|
||||||
integrity sha512-Aweb9unOEpQ3ezu4Q00DPvvM2ZTUitJdNKeP/+uQgr1IBIqu574IaZoURId7BKtWMREwzKa9OgzPzezWGPWFQw==
|
integrity sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
nanoid "^3.3.7"
|
nanoid "^3.3.7"
|
||||||
picocolors "^1.0.1"
|
picocolors "^1.1.0"
|
||||||
source-map-js "^1.2.0"
|
source-map-js "^1.2.1"
|
||||||
|
|
||||||
proxy-from-env@^1.1.0:
|
|
||||||
version "1.1.0"
|
|
||||||
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
|
|
||||||
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
|
|
||||||
|
|
||||||
pusher-js@^8.4.0-rc2:
|
pusher-js@^8.4.0-rc2:
|
||||||
version "8.4.0-rc2"
|
version "8.4.0-rc2"
|
||||||
@@ -915,28 +1132,28 @@ reusify@^1.0.4:
|
|||||||
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
|
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
|
||||||
|
|
||||||
rollup@^4.20.0:
|
rollup@^4.20.0:
|
||||||
version "4.21.2"
|
version "4.22.5"
|
||||||
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.21.2.tgz#f41f277a448d6264e923dd1ea179f0a926aaf9b7"
|
resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.22.5.tgz#d5108cc470249417e50492456253884d19f5d40f"
|
||||||
integrity sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==
|
integrity sha512-WoinX7GeQOFMGznEcWA1WrTQCd/tpEbMkc3nuMs9BT0CPjMdSjPMTVClwWd4pgSQwJdP65SK9mTCNvItlr5o7w==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/estree" "1.0.5"
|
"@types/estree" "1.0.6"
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
"@rollup/rollup-android-arm-eabi" "4.21.2"
|
"@rollup/rollup-android-arm-eabi" "4.22.5"
|
||||||
"@rollup/rollup-android-arm64" "4.21.2"
|
"@rollup/rollup-android-arm64" "4.22.5"
|
||||||
"@rollup/rollup-darwin-arm64" "4.21.2"
|
"@rollup/rollup-darwin-arm64" "4.22.5"
|
||||||
"@rollup/rollup-darwin-x64" "4.21.2"
|
"@rollup/rollup-darwin-x64" "4.22.5"
|
||||||
"@rollup/rollup-linux-arm-gnueabihf" "4.21.2"
|
"@rollup/rollup-linux-arm-gnueabihf" "4.22.5"
|
||||||
"@rollup/rollup-linux-arm-musleabihf" "4.21.2"
|
"@rollup/rollup-linux-arm-musleabihf" "4.22.5"
|
||||||
"@rollup/rollup-linux-arm64-gnu" "4.21.2"
|
"@rollup/rollup-linux-arm64-gnu" "4.22.5"
|
||||||
"@rollup/rollup-linux-arm64-musl" "4.21.2"
|
"@rollup/rollup-linux-arm64-musl" "4.22.5"
|
||||||
"@rollup/rollup-linux-powerpc64le-gnu" "4.21.2"
|
"@rollup/rollup-linux-powerpc64le-gnu" "4.22.5"
|
||||||
"@rollup/rollup-linux-riscv64-gnu" "4.21.2"
|
"@rollup/rollup-linux-riscv64-gnu" "4.22.5"
|
||||||
"@rollup/rollup-linux-s390x-gnu" "4.21.2"
|
"@rollup/rollup-linux-s390x-gnu" "4.22.5"
|
||||||
"@rollup/rollup-linux-x64-gnu" "4.21.2"
|
"@rollup/rollup-linux-x64-gnu" "4.22.5"
|
||||||
"@rollup/rollup-linux-x64-musl" "4.21.2"
|
"@rollup/rollup-linux-x64-musl" "4.22.5"
|
||||||
"@rollup/rollup-win32-arm64-msvc" "4.21.2"
|
"@rollup/rollup-win32-arm64-msvc" "4.22.5"
|
||||||
"@rollup/rollup-win32-ia32-msvc" "4.21.2"
|
"@rollup/rollup-win32-ia32-msvc" "4.22.5"
|
||||||
"@rollup/rollup-win32-x64-msvc" "4.21.2"
|
"@rollup/rollup-win32-x64-msvc" "4.22.5"
|
||||||
fsevents "~2.3.2"
|
fsevents "~2.3.2"
|
||||||
|
|
||||||
run-parallel@^1.1.9:
|
run-parallel@^1.1.9:
|
||||||
@@ -963,10 +1180,10 @@ signal-exit@^4.0.1:
|
|||||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
|
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
|
||||||
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
|
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
|
||||||
|
|
||||||
source-map-js@^1.2.0:
|
source-map-js@^1.2.1:
|
||||||
version "1.2.0"
|
version "1.2.1"
|
||||||
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af"
|
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
|
||||||
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
|
integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
|
||||||
|
|
||||||
"string-width-cjs@npm:string-width@^4.2.0":
|
"string-width-cjs@npm:string-width@^4.2.0":
|
||||||
version "4.2.3"
|
version "4.2.3"
|
||||||
@@ -1035,9 +1252,9 @@ supports-preserve-symlinks-flag@^1.0.0:
|
|||||||
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
||||||
|
|
||||||
tailwindcss@^3.4.10:
|
tailwindcss@^3.4.10:
|
||||||
version "3.4.10"
|
version "3.4.13"
|
||||||
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.10.tgz#70442d9aeb78758d1f911af29af8255ecdb8ffef"
|
resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.13.tgz#3d11e5510660f99df4f1bfb2d78434666cb8f831"
|
||||||
integrity sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==
|
integrity sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@alloc/quick-lru" "^5.2.0"
|
"@alloc/quick-lru" "^5.2.0"
|
||||||
arg "^5.0.2"
|
arg "^5.0.2"
|
||||||
@@ -1088,18 +1305,57 @@ ts-interface-checker@^0.1.9:
|
|||||||
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
|
resolved "https://registry.yarnpkg.com/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz#784fd3d679722bc103b1b4b8030bcddb5db2a699"
|
||||||
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
|
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
|
||||||
|
|
||||||
|
tseep@^1.1.1:
|
||||||
|
version "1.3.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/tseep/-/tseep-1.3.1.tgz#734c5f7ca37cb8af4e4e0a5c205742673562a10e"
|
||||||
|
integrity sha512-ZPtfk1tQnZVyr7BPtbJ93qaAh2lZuIOpTMjhrYa4XctT8xe7t4SAW9LIxrySDuYMsfNNayE51E/WNGrNVgVicQ==
|
||||||
|
|
||||||
|
tstl@^2.0.7:
|
||||||
|
version "2.5.16"
|
||||||
|
resolved "https://registry.yarnpkg.com/tstl/-/tstl-2.5.16.tgz#0b52a6a572ece7dc2b532ebc89ba3a95c95c4009"
|
||||||
|
integrity sha512-+O2ybLVLKcBwKm4HymCEwZIT0PpwS3gCYnxfSDEjJEKADvIFruaQjd3m7CAKNU1c7N3X3WjVz87re7TA2A5FUw==
|
||||||
|
|
||||||
tweetnacl@^1.0.3:
|
tweetnacl@^1.0.3:
|
||||||
version "1.0.3"
|
version "1.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
|
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
|
||||||
integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==
|
integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==
|
||||||
|
|
||||||
update-browserslist-db@^1.1.0:
|
type@^2.7.2:
|
||||||
version "1.1.0"
|
version "2.7.3"
|
||||||
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e"
|
resolved "https://registry.yarnpkg.com/type/-/type-2.7.3.tgz#436981652129285cc3ba94f392886c2637ea0486"
|
||||||
integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==
|
integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==
|
||||||
|
|
||||||
|
typedarray-to-buffer@^3.1.5:
|
||||||
|
version "3.1.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
|
||||||
|
integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
|
||||||
dependencies:
|
dependencies:
|
||||||
escalade "^3.1.2"
|
is-typedarray "^1.0.0"
|
||||||
picocolors "^1.0.1"
|
|
||||||
|
typescript-lru-cache@^2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/typescript-lru-cache/-/typescript-lru-cache-2.0.0.tgz#d4ad0f071ab51987b088a57c3c502d7dd62dee07"
|
||||||
|
integrity sha512-Jp57Qyy8wXeMkdNuZiglE6v2Cypg13eDA1chHwDG6kq51X7gk4K7P7HaDdzZKCxkegXkVHNcPD0n5aW6OZH3aA==
|
||||||
|
|
||||||
|
update-browserslist-db@^1.1.0:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5"
|
||||||
|
integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==
|
||||||
|
dependencies:
|
||||||
|
escalade "^3.2.0"
|
||||||
|
picocolors "^1.1.0"
|
||||||
|
|
||||||
|
utf-8-validate@^5.0.2:
|
||||||
|
version "5.0.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2"
|
||||||
|
integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==
|
||||||
|
dependencies:
|
||||||
|
node-gyp-build "^4.3.0"
|
||||||
|
|
||||||
|
utf8-buffer@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/utf8-buffer/-/utf8-buffer-1.0.0.tgz#457e7d848d4d9cd873772b710d150565f6e543d9"
|
||||||
|
integrity sha512-ueuhzvWnp5JU5CiGSY4WdKbiN/PO2AZ/lpeLiz2l38qwdLy/cW40XobgyuIWucNyum0B33bVB0owjFCeGBSLqg==
|
||||||
|
|
||||||
util-deprecate@^1.0.2:
|
util-deprecate@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
@@ -1115,9 +1371,9 @@ vite-plugin-full-reload@^1.1.0:
|
|||||||
picomatch "^2.3.1"
|
picomatch "^2.3.1"
|
||||||
|
|
||||||
vite@^5.0:
|
vite@^5.0:
|
||||||
version "5.4.3"
|
version "5.4.8"
|
||||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.3.tgz#771c470e808cb6732f204e1ee96c2ed65b97a0eb"
|
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.8.tgz#af548ce1c211b2785478d3ba3e8da51e39a287e8"
|
||||||
integrity sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q==
|
integrity sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild "^0.21.3"
|
esbuild "^0.21.3"
|
||||||
postcss "^8.4.43"
|
postcss "^8.4.43"
|
||||||
@@ -1125,6 +1381,31 @@ vite@^5.0:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
fsevents "~2.3.3"
|
fsevents "~2.3.3"
|
||||||
|
|
||||||
|
web-streams-polyfill@^3.0.3:
|
||||||
|
version "3.3.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz#2073b91a2fdb1fbfbd401e7de0ac9f8214cecb4b"
|
||||||
|
integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==
|
||||||
|
|
||||||
|
websocket-polyfill@^0.0.3:
|
||||||
|
version "0.0.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/websocket-polyfill/-/websocket-polyfill-0.0.3.tgz#7321ada0f5f17516290ba1cb587ac111b74ce6a5"
|
||||||
|
integrity sha512-pF3kR8Uaoau78MpUmFfzbIRxXj9PeQrCuPepGE6JIsfsJ/o/iXr07Q2iQNzKSSblQJ0FiGWlS64N4pVSm+O3Dg==
|
||||||
|
dependencies:
|
||||||
|
tstl "^2.0.7"
|
||||||
|
websocket "^1.0.28"
|
||||||
|
|
||||||
|
websocket@^1.0.28:
|
||||||
|
version "1.0.35"
|
||||||
|
resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.35.tgz#374197207d7d4cc4c36cbf8a1bb886ee52a07885"
|
||||||
|
integrity sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==
|
||||||
|
dependencies:
|
||||||
|
bufferutil "^4.0.1"
|
||||||
|
debug "^2.2.0"
|
||||||
|
es5-ext "^0.10.63"
|
||||||
|
typedarray-to-buffer "^3.1.5"
|
||||||
|
utf-8-validate "^5.0.2"
|
||||||
|
yaeti "^0.0.6"
|
||||||
|
|
||||||
which@^2.0.1:
|
which@^2.0.1:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
|
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
|
||||||
@@ -1150,7 +1431,12 @@ wrap-ansi@^8.1.0:
|
|||||||
string-width "^5.0.1"
|
string-width "^5.0.1"
|
||||||
strip-ansi "^7.0.1"
|
strip-ansi "^7.0.1"
|
||||||
|
|
||||||
|
yaeti@^0.0.6:
|
||||||
|
version "0.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577"
|
||||||
|
integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==
|
||||||
|
|
||||||
yaml@^2.3.4:
|
yaml@^2.3.4:
|
||||||
version "2.5.0"
|
version "2.5.1"
|
||||||
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.0.tgz#c6165a721cf8000e91c36490a41d7be25176cf5d"
|
resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.5.1.tgz#c9772aacf62cb7494a95b0c4f1fb065b563db130"
|
||||||
integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==
|
integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==
|
||||||
|
|||||||
Reference in New Issue
Block a user