parent
f4e03fab82
commit
3504ca59c8
|
|
@ -89,31 +89,4 @@ class CheckUpdates extends Command
|
||||||
$v = preg_replace('/-.*$/', '', $v); // Build-/dirty-Suffix abschneiden
|
$v = preg_replace('/-.*$/', '', $v); // Build-/dirty-Suffix abschneiden
|
||||||
return $v !== '' ? $v : null;
|
return $v !== '' ? $v : null;
|
||||||
}
|
}
|
||||||
// public function handle(): int
|
|
||||||
// {
|
|
||||||
// $appPath = base_path();
|
|
||||||
// $current = trim(@file_get_contents(base_path('VERSION'))) ?: '0.0.0';
|
|
||||||
// // newest tag from origin (sorted semver-friendly)
|
|
||||||
// $latest = trim(shell_exec(
|
|
||||||
// "cd {$appPath} && git fetch --tags --quiet origin && git tag --list | sort -V | tail -n1"
|
|
||||||
// ) ?? '');
|
|
||||||
//
|
|
||||||
// // Tags haben usually ein 'v' Prefix – entfernen
|
|
||||||
// $latest = ltrim($latest, 'v');
|
|
||||||
//
|
|
||||||
// if (!$latest) {
|
|
||||||
// $this->warn('Keine Release-Tags gefunden.');
|
|
||||||
// cache()->forget('mailwolt.update_available');
|
|
||||||
// return 0;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// if (version_compare($latest, $current, '>')) {
|
|
||||||
// cache()->forever('mailwolt.update_available', $latest);
|
|
||||||
// $this->info("Update verfügbar: {$latest} (installiert: {$current})");
|
|
||||||
// } else {
|
|
||||||
// cache()->forget('mailwolt.update_available');
|
|
||||||
// $this->info("Aktuell (installiert: {$current}).");
|
|
||||||
// }
|
|
||||||
// return 0;
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,108 +1,11 @@
|
||||||
{{--@php--}}
|
|
||||||
{{-- $hasUpdate = $latest && $current && version_compare($latest, $current, '>');--}}
|
|
||||||
{{--@endphp--}}
|
|
||||||
|
|
||||||
{{--<div class="glass-card rounded-2xl p-4 border border-white/10 bg-white/5 max-h-fit">--}}
|
|
||||||
{{-- <div class="flex items-start gap-2">--}}
|
|
||||||
{{-- --}}{{-- Shield-Bot --}}
|
|
||||||
{{-- <div class="relative shrink-0">--}}
|
|
||||||
{{-- <div class="shrink-0 relative">--}}
|
|
||||||
|
|
||||||
{{-- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">--}}
|
|
||||||
{{-- <defs>--}}
|
|
||||||
{{-- <linearGradient id="shieldGradient" x1="0" y1="0" x2="0" y2="1">--}}
|
|
||||||
{{-- <stop offset="0" stop-color="#4ade80"></stop>--}}
|
|
||||||
{{-- <stop offset="1" stop-color="#15803d"></stop>--}}
|
|
||||||
{{-- </linearGradient>--}}
|
|
||||||
{{-- <radialGradient id="shine" cx="30%" cy="20%" r="70%">--}}
|
|
||||||
{{-- <stop offset="0%" stop-color="rgba(255,255,255,0.4)"></stop>--}}
|
|
||||||
{{-- <stop offset="100%" stop-color="rgba(255,255,255,0)"></stop>--}}
|
|
||||||
{{-- </radialGradient>--}}
|
|
||||||
{{-- <filter id="glow" x="-20%" y="-20%" width="140%" height="140%">--}}
|
|
||||||
{{-- <feDropShadow dx="0" dy="0" stdDeviation="3" flood-color="#22c55e" flood-opacity="0.6"></feDropShadow>--}}
|
|
||||||
{{-- </filter>--}}
|
|
||||||
{{-- </defs>--}}
|
|
||||||
{{-- <path d="M32 6l20 8v12c0 13.5-8.7 22.7-20 27-11.3-4.3-20-13.5-20-27V14l20-8z" fill="url(#shieldGradient)" filter="url(#glow)"></path>--}}
|
|
||||||
{{-- <path d="M32 6l20 8v12c0 13.5-8.7 22.7-20 27-11.3-4.3-20-13.5-20-27V14l20-8z" fill="url(#shine)"></path>--}}
|
|
||||||
{{-- <i class="ph-bold ph-arrows-clockwise absolute top-1/2 left-1/2 -translate-1/2 text-2xl {{ $state === 'running' ? 'animate-spin' : '' }}"></i>--}}
|
|
||||||
{{-- </svg>--}}
|
|
||||||
{{-- </div>--}}
|
|
||||||
{{-- </div>--}}
|
|
||||||
|
|
||||||
{{-- <div class="min-w-0 flex-1">--}}
|
|
||||||
{{-- <div class="flex items-center justify-between gap-3">--}}
|
|
||||||
{{-- <div class="min-w-0">--}}
|
|
||||||
{{-- <div class="text-white/90 font-semibold">MailWolt Update</div>--}}
|
|
||||||
{{-- --}}{{-- kleine Statuszeile mit Versionen, wenn vorhanden --}}
|
|
||||||
{{-- <div class="text-xs text-white/70">--}}
|
|
||||||
{{-- @if($current)--}}
|
|
||||||
{{-- aktuell: <span class="text-white/90">{{ $current }}</span>--}}
|
|
||||||
{{-- @else--}}
|
|
||||||
{{-- aktuell: <span class="text-white/60">–</span>--}}
|
|
||||||
{{-- @endif--}}
|
|
||||||
{{-- @if($latest)--}}
|
|
||||||
{{-- <span class="mx-1 text-white/30">•</span>--}}
|
|
||||||
{{-- verfügbar: <span class="text-emerald-200">{{ $latest }}</span>--}}
|
|
||||||
{{-- @endif--}}
|
|
||||||
{{-- </div>--}}
|
|
||||||
{{-- </div>--}}
|
|
||||||
{{-- <div>--}}
|
|
||||||
{{-- --}}{{-- Badge rechts --}}
|
|
||||||
{{-- <span class="shrink-0 inline-flex items-center gap-1.5 px-2.5 py-0.5 rounded-full text-[11px] border px-3 py-1--}}
|
|
||||||
{{-- {{ $hasUpdate--}}
|
|
||||||
{{-- ? 'text-yellow-200 bg-yellow-500/10 border-yellow-400/30'--}}
|
|
||||||
{{-- : 'text-emerald-200 bg-emerald-500/10 border-emerald-400/30' }}">--}}
|
|
||||||
{{-- <i class="ph {{ $hasUpdate ? 'ph-arrow-fat-line-up' : 'ph-check-circle' }} text-[12px]"></i>--}}
|
|
||||||
{{-- {{ $hasUpdate ? 'Update verfügbar' : 'Aktuell' }}--}}
|
|
||||||
{{-- </span>--}}
|
|
||||||
{{-- <button wire:click="refreshState"--}}
|
|
||||||
{{-- @disabled($state==='running')--}}
|
|
||||||
{{-- class="inline-flex items-center gap-2 rounded p-1.5--}}
|
|
||||||
{{-- text-white/75 bg-white/5 border border-white/10 hover:border-white/20--}}
|
|
||||||
{{-- disabled:opacity-60">--}}
|
|
||||||
{{-- <i class="ph ph-arrow-clockwise text-[11px]"></i>--}}
|
|
||||||
{{-- </button>--}}
|
|
||||||
|
|
||||||
{{-- </div>--}}
|
|
||||||
{{-- </div>--}}
|
|
||||||
{{-- <div class="mt-4 flex items-center gap-2">--}}
|
|
||||||
{{-- @if($hasUpdate)--}}
|
|
||||||
{{-- <button wire:click="runUpdate"--}}
|
|
||||||
{{-- @disabled($state==='running')--}}
|
|
||||||
{{-- class="inline-flex items-center gap-2 rounded-lg px-3 py-1.5--}}
|
|
||||||
{{-- text-emerald-200 bg-emerald-500/10 border border-emerald-400/30--}}
|
|
||||||
{{-- hover:bg-emerald-500/15 hover:border-emerald-300/50--}}
|
|
||||||
{{-- disabled:opacity-60">--}}
|
|
||||||
{{-- <i class="ph ph-arrow-fat-lines-up text-[14px]"></i> Jetzt aktualisieren--}}
|
|
||||||
{{-- </button>--}}
|
|
||||||
{{-- @endif--}}
|
|
||||||
{{-- </div>--}}
|
|
||||||
|
|
||||||
{{-- --}}{{-- Progress-Bar, wenn running --}}
|
|
||||||
{{-- @if($state === 'running')--}}
|
|
||||||
{{-- <div class="mt-3 h-1.5 rounded bg-white/10 overflow-hidden">--}}
|
|
||||||
{{-- <div class="h-full bg-emerald-400/70 animate-[progress_1.4s_infinite]" style="width:40%"></div>--}}
|
|
||||||
{{-- </div>--}}
|
|
||||||
{{-- <style>@keyframes progress {--}}
|
|
||||||
{{-- 0% {--}}
|
|
||||||
{{-- transform: translateX(-100%)--}}
|
|
||||||
{{-- }--}}
|
|
||||||
{{-- 100% {--}}
|
|
||||||
{{-- transform: translateX(260%)--}}
|
|
||||||
{{-- }--}}
|
|
||||||
{{-- }</style>--}}
|
|
||||||
{{-- @endif--}}
|
|
||||||
{{-- </div>--}}
|
|
||||||
{{-- </div>--}}
|
|
||||||
{{--</div>--}}
|
|
||||||
<div
|
<div
|
||||||
class="glass-card rounded-2xl p-4 border border-white/10 bg-white/5 max-h-fit"
|
class="glass-card rounded-2xl p-4 border border-white/10 bg-white/5 max-h-fit"
|
||||||
@if($state === 'running') wire:poll.3s="pollUpdate" @endif
|
@if($state === 'running') wire:poll.3s="pollUpdate" @endif
|
||||||
>
|
>
|
||||||
<div class="flex items-start gap-2">
|
<div class="flex items-start gap-2">
|
||||||
{{-- Shield + Update-Icon --}}
|
{{-- Shield + Spinner --}}
|
||||||
<div class="relative shrink-0">
|
<div class="relative shrink-0">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" aria-hidden="true">
|
||||||
<defs>
|
<defs>
|
||||||
<linearGradient id="shieldGradient" x1="0" y1="0" x2="0" y2="1">
|
<linearGradient id="shieldGradient" x1="0" y1="0" x2="0" y2="1">
|
||||||
<stop offset="0" stop-color="#4ade80"/>
|
<stop offset="0" stop-color="#4ade80"/>
|
||||||
|
|
@ -117,12 +20,11 @@
|
||||||
</filter>
|
</filter>
|
||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- Schild -->
|
|
||||||
<path d="M32 6l20 8v12c0 13.5-8.7 22.7-20 27-11.3-4.3-20-13.5-20-27V14l20-8z"
|
<path d="M32 6l20 8v12c0 13.5-8.7 22.7-20 27-11.3-4.3-20-13.5-20-27V14l20-8z"
|
||||||
fill="url(#shieldGradient)" filter="url(#glow)"/>
|
fill="url(#shieldGradient)" filter="url(#glow)"/>
|
||||||
<path d="M32 6l20 8v12c0 13.5-8.7 22.7-20 27-11.3-4.3-20-13.5-20-27V14l20-8z"
|
<path d="M32 6l20 8v12c0 13.5-8.7 22.7-20 27-11.3-4.3-20-13.5-20-27V14l20-8z"
|
||||||
fill="url(#shine)"/>
|
fill="url(#shine)"/>
|
||||||
<i class="ph-bold ph-arrows-clockwise absolute top-1/2 left-1/2 -translate-1/2 text-2xl {{ $state === 'running' ? 'animate-spin' : '' }}"></i>
|
<i class="ph-bold ph-arrows-clockwise absolute top-1/2 left-1/2 -translate-1/2 text-2xl {{ $state === 'running' ? 'animate-spin' : '' }}"></i>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -131,6 +33,7 @@
|
||||||
<div class="min-w-0">
|
<div class="min-w-0">
|
||||||
<div class="text-white/90 font-semibold">{{ config('app.name') }} Update</div>
|
<div class="text-white/90 font-semibold">{{ config('app.name') }} Update</div>
|
||||||
|
|
||||||
|
{{-- Versionszeile --}}
|
||||||
<div class="text-xs text-white/70">
|
<div class="text-xs text-white/70">
|
||||||
@if($displayCurrent)
|
@if($displayCurrent)
|
||||||
aktuell: <span class="text-white/90">{{ $displayCurrent }}</span>
|
aktuell: <span class="text-white/90">{{ $displayCurrent }}</span>
|
||||||
|
|
@ -143,47 +46,44 @@
|
||||||
verfügbar: <span class="text-emerald-200">{{ $displayLatest }}</span>
|
verfügbar: <span class="text-emerald-200">{{ $displayLatest }}</span>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="flex flex-col items-end gap-1">
|
{{-- Einzeilige Fortschritts-/Fehleranzeige (optional) --}}
|
||||||
<span class="inline-flex items-center gap-1.5 rounded-full text-[11px] border px-3 py-1 w-fit
|
@if($progressLine || $errorLine)
|
||||||
{{ $this->hasUpdate
|
<div class="mt-1 text-[11px] leading-tight">
|
||||||
? 'text-yellow-200 bg-yellow-500/10 border-yellow-400/30'
|
@if($progressLine)
|
||||||
: 'text-emerald-200 bg-emerald-500/10 border-emerald-400/30' }}">
|
<div class="text-white/60">{{ $progressLine }}</div>
|
||||||
<i class="ph {{ $this->hasUpdate ? 'ph-arrow-fat-line-up' : 'ph-check-circle' }} text-[12px]"></i>
|
@endif
|
||||||
{{ $this->hasUpdate ? 'Update verfügbar' : 'Aktuell' }}
|
@if($errorLine)
|
||||||
</span>
|
<div class="text-rose-300">{{ $errorLine }}</div>
|
||||||
@if($this->hasUpdate)
|
@endif
|
||||||
<button wire:click="runUpdate"
|
</div>
|
||||||
@disabled($state==='running')
|
|
||||||
class="inline-flex items-center gap-1.5 rounded-full text-[11px] px-3 py-1 w-fit
|
|
||||||
text-emerald-200 bg-emerald-500/10 border border-emerald-400/30
|
|
||||||
hover:bg-emerald-500/15 hover:border-emerald-300/50
|
|
||||||
disabled:opacity-60">
|
|
||||||
<i class="ph ph-arrow-fat-lines-up text-[14px]"></i>
|
|
||||||
Jetzt aktualisieren
|
|
||||||
</button>
|
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{{-- Badge + Button (rein aus Properties) --}}
|
||||||
|
<div class="flex flex-col items-end gap-1">
|
||||||
|
<span class="inline-flex items-center gap-1.5 rounded-full text-[11px] border px-3 py-1 w-fit {{ $badgeClass }}">
|
||||||
|
<i class="ph {{ $badgeIcon }} text-[12px]"></i>
|
||||||
|
{{ $badgeText }}
|
||||||
|
</span>
|
||||||
|
|
||||||
|
@if($showButton)
|
||||||
|
<button wire:click="runUpdate"
|
||||||
|
@disabled($buttonDisabled)
|
||||||
|
class="inline-flex items-center gap-1.5 rounded-full text-[11px] px-3 py-1 w-fit
|
||||||
|
text-emerald-200 bg-emerald-500/10 border border-emerald-400/30
|
||||||
|
hover:bg-emerald-500/15 hover:border-emerald-300/50
|
||||||
|
disabled:opacity-60">
|
||||||
|
<i class="ph ph-arrow-fat-lines-up text-[14px]"></i>
|
||||||
|
{{ $buttonLabel }}
|
||||||
|
</button>
|
||||||
|
@endif
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- <div class="mt-4 flex items-center gap-2">--}}
|
{{-- Progress-Balken nur während running --}}
|
||||||
{{-- @if($this->hasUpdate)--}}
|
|
||||||
{{-- <button wire:click="runUpdate"--}}
|
|
||||||
{{-- @disabled($state==='running')--}}
|
|
||||||
{{-- class="inline-flex items-center gap-2 rounded-lg px-3 py-1.5--}}
|
|
||||||
{{-- text-emerald-200 bg-emerald-500/10 border border-emerald-400/30--}}
|
|
||||||
{{-- hover:bg-emerald-500/15 hover:border-emerald-300/50--}}
|
|
||||||
{{-- disabled:opacity-60">--}}
|
|
||||||
{{-- <i class="ph ph-arrow-fat-lines-up text-[14px]"></i> Jetzt aktualisieren--}}
|
|
||||||
{{-- </button>--}}
|
|
||||||
{{-- @endif--}}
|
|
||||||
{{-- </div>--}}
|
|
||||||
|
|
||||||
{{-- Fortschritt nur während running --}}
|
|
||||||
@if($state === 'running')
|
@if($state === 'running')
|
||||||
<div class="mt-3 h-1.5 rounded bg-white/10 overflow-hidden">
|
<div class="mt-3 h-1.5 rounded bg-white/10 overflow-hidden" aria-hidden="true">
|
||||||
<div class="h-full bg-emerald-400/70 animate-[mwprogress_1.4s_infinite]" style="width:40%"></div>
|
<div class="h-full bg-emerald-400/70 animate-[mwprogress_1.4s_infinite]" style="width:40%"></div>
|
||||||
</div>
|
</div>
|
||||||
<style>
|
<style>
|
||||||
|
|
@ -196,3 +96,89 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{--<div--}}
|
||||||
|
{{-- class="glass-card rounded-2xl p-4 border border-white/10 bg-white/5 max-h-fit"--}}
|
||||||
|
{{-- @if($state === 'running') wire:poll.3s="pollUpdate" @endif--}}
|
||||||
|
{{-->--}}
|
||||||
|
{{-- <div class="flex items-start gap-2">--}}
|
||||||
|
{{-- --}}{{-- Shield + Update-Icon --}}
|
||||||
|
{{-- <div class="relative shrink-0">--}}
|
||||||
|
{{-- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">--}}
|
||||||
|
{{-- <defs>--}}
|
||||||
|
{{-- <linearGradient id="shieldGradient" x1="0" y1="0" x2="0" y2="1">--}}
|
||||||
|
{{-- <stop offset="0" stop-color="#4ade80"/>--}}
|
||||||
|
{{-- <stop offset="1" stop-color="#15803d"/>--}}
|
||||||
|
{{-- </linearGradient>--}}
|
||||||
|
{{-- <radialGradient id="shine" cx="30%" cy="20%" r="70%">--}}
|
||||||
|
{{-- <stop offset="0%" stop-color="rgba(255,255,255,0.35)"/>--}}
|
||||||
|
{{-- <stop offset="100%" stop-color="rgba(255,255,255,0)"/>--}}
|
||||||
|
{{-- </radialGradient>--}}
|
||||||
|
{{-- <filter id="glow" x="-20%" y="-20%" width="140%" height="140%">--}}
|
||||||
|
{{-- <feDropShadow dx="0" dy="0" stdDeviation="3" flood-color="#22c55e" flood-opacity="0.6"/>--}}
|
||||||
|
{{-- </filter>--}}
|
||||||
|
{{-- </defs>--}}
|
||||||
|
|
||||||
|
{{-- <!-- Schild -->--}}
|
||||||
|
{{-- <path d="M32 6l20 8v12c0 13.5-8.7 22.7-20 27-11.3-4.3-20-13.5-20-27V14l20-8z"--}}
|
||||||
|
{{-- fill="url(#shieldGradient)" filter="url(#glow)"/>--}}
|
||||||
|
{{-- <path d="M32 6l20 8v12c0 13.5-8.7 22.7-20 27-11.3-4.3-20-13.5-20-27V14l20-8z"--}}
|
||||||
|
{{-- fill="url(#shine)"/>--}}
|
||||||
|
{{-- <i class="ph-bold ph-arrows-clockwise absolute top-1/2 left-1/2 -translate-1/2 text-2xl {{ $state === 'running' ? 'animate-spin' : '' }}"></i>--}}
|
||||||
|
{{-- </svg>--}}
|
||||||
|
{{-- </div>--}}
|
||||||
|
|
||||||
|
{{-- <div class="min-w-0 flex-1">--}}
|
||||||
|
{{-- <div class="flex items-start justify-between gap-3">--}}
|
||||||
|
{{-- <div class="min-w-0">--}}
|
||||||
|
{{-- <div class="text-white/90 font-semibold">{{ config('app.name') }} Update</div>--}}
|
||||||
|
|
||||||
|
{{-- <div class="text-xs text-white/70">--}}
|
||||||
|
{{-- @if($displayCurrent)--}}
|
||||||
|
{{-- aktuell: <span class="text-white/90">{{ $displayCurrent }}</span>--}}
|
||||||
|
{{-- @else--}}
|
||||||
|
{{-- aktuell: <span class="text-white/60">–</span>--}}
|
||||||
|
{{-- @endif--}}
|
||||||
|
|
||||||
|
{{-- @if($displayLatest)--}}
|
||||||
|
{{-- <span class="mx-1 text-white/30">•</span>--}}
|
||||||
|
{{-- verfügbar: <span class="text-emerald-200">{{ $displayLatest }}</span>--}}
|
||||||
|
{{-- @endif--}}
|
||||||
|
{{-- </div>--}}
|
||||||
|
{{-- </div>--}}
|
||||||
|
|
||||||
|
{{-- <div class="flex flex-col items-end gap-1">--}}
|
||||||
|
{{-- <span class="inline-flex items-center gap-1.5 rounded-full text-[11px] border px-3 py-1 w-fit--}}
|
||||||
|
{{-- {{ $this->hasUpdate--}}
|
||||||
|
{{-- ? 'text-yellow-200 bg-yellow-500/10 border-yellow-400/30'--}}
|
||||||
|
{{-- : 'text-emerald-200 bg-emerald-500/10 border-emerald-400/30' }}">--}}
|
||||||
|
{{-- <i class="ph {{ $this->hasUpdate ? 'ph-arrow-fat-line-up' : 'ph-check-circle' }} text-[12px]"></i>--}}
|
||||||
|
{{-- {{ $this->hasUpdate ? 'Update verfügbar' : 'Aktuell' }}--}}
|
||||||
|
{{-- </span>--}}
|
||||||
|
{{-- @if($this->hasUpdate)--}}
|
||||||
|
{{-- <button wire:click="runUpdate"--}}
|
||||||
|
{{-- @disabled($state==='running')--}}
|
||||||
|
{{-- class="inline-flex items-center gap-1.5 rounded-full text-[11px] px-3 py-1 w-fit--}}
|
||||||
|
{{-- text-emerald-200 bg-emerald-500/10 border border-emerald-400/30--}}
|
||||||
|
{{-- hover:bg-emerald-500/15 hover:border-emerald-300/50--}}
|
||||||
|
{{-- disabled:opacity-60">--}}
|
||||||
|
{{-- <i class="ph ph-arrow-fat-lines-up text-[14px]"></i>--}}
|
||||||
|
{{-- Jetzt aktualisieren--}}
|
||||||
|
{{-- </button>--}}
|
||||||
|
{{-- @endif--}}
|
||||||
|
{{-- </div>--}}
|
||||||
|
{{-- </div>--}}
|
||||||
|
{{-- --}}{{-- Fortschritt nur während running --}}
|
||||||
|
{{-- @if($state === 'running')--}}
|
||||||
|
{{-- <div class="mt-3 h-1.5 rounded bg-white/10 overflow-hidden">--}}
|
||||||
|
{{-- <div class="h-full bg-emerald-400/70 animate-[mwprogress_1.4s_infinite]" style="width:40%"></div>--}}
|
||||||
|
{{-- </div>--}}
|
||||||
|
{{-- <style>--}}
|
||||||
|
{{-- @keyframes mwprogress {--}}
|
||||||
|
{{-- 0% { transform: translateX(-100%) }--}}
|
||||||
|
{{-- 100% { transform: translateX(260%) }--}}
|
||||||
|
{{-- }--}}
|
||||||
|
{{-- </style>--}}
|
||||||
|
{{-- @endif--}}
|
||||||
|
{{-- </div>--}}
|
||||||
|
{{-- </div>--}}
|
||||||
|
{{--</div>--}}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue