feat: enhance Erugo theme to responsive full-screen cyber glassmorphism template

This commit is contained in:
eldov
2026-08-30 06:32:14 +02:00
parent 43db9196cd
commit 0046c92ee3
5 changed files with 732 additions and 169 deletions
+16
View File
@@ -0,0 +1,16 @@
# Erugo Views & Design
Frontend Blade Templates und Layouts für den Erugo Upload-Dienst ([upload.free-warez.win](https://upload.free-warez.win)).
---
## 📁 Struktur
- `views/app.blade.php`: Hauptlayout mit Farbschemata, CSS-Variablen und UI-Komponenten.
- `views/shares/`: Templates für Share-Status (`pending.blade.php`, `failed.blade.php`).
- `views/emails/`: HTML-Mail-Templates (Twig).
- `deploy.sh`: Synchronisiert die Views zum VPS und startet den Container neu.
## 🚀 Deployment
```bash
./deploy.sh
```
Executable
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env bash
# deploy.sh - Deploy Erugo Views & Themes
# Domain: upload.free-warez.win
# Target Host: free-warez.win -> /opt/containers/erugo/views
set -euo pipefail
TARGET_HOST="free-warez.win"
TARGET_DIR="/opt/containers/erugo/views"
LOCAL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "🚀 Deploying Erugo Views"
echo " Target: $TARGET_HOST:$TARGET_DIR"
echo "==============================================="
# 1. Check SSH connection
echo "📡 Checking SSH connection to $TARGET_HOST..."
if ! ssh -q -o BatchMode=yes -o ConnectTimeout=5 "$TARGET_HOST" exit; then
echo "❌ Cannot connect to $TARGET_HOST via SSH."
exit 1
fi
# 2. Sync Views
echo "🔄 Syncing blade templates & views..."
rsync -avz --delete "$LOCAL_DIR/views/" "$TARGET_HOST:$TARGET_DIR/"
# 3. Restart container to flush template caches
echo "🔄 Restarting Erugo container..."
ssh "$TARGET_HOST" "docker restart erugo"
echo "✅ Erugo updated!"
echo "✨ Deployment complete!"
+596 -128
View File
@@ -1,188 +1,656 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="{{ $settings['default_language'] ?? 'de' }}">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href="/api/favicon" type="image/svg+xml"> <link rel="icon" href="/api/favicon" type="image/svg+xml">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.0.2/css/bootstrap.min.css" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.0.2/css/bootstrap.min.css" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css" integrity="sha512-Evv84Mr4kqVGRNSgIGL/F/aIDqQb7xQ2vcrdIwxfjThSH8CSR7PBEakCr51Ck+w+/U6swU2Im1vVX0SVk9ABhg==" crossorigin="anonymous" referrerpolicy="no-referrer" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css" integrity="sha512-Evv84Mr4kqVGRNSgIGL/F/aIDqQb7xQ2vcrdIwxfjThSH8CSR7PBEakCr51Ck+w+/U6swU2Im1vVX0SVk9ABhg==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<title>{{ $settings['application_name'] }}</title> <title>{{ $settings['application_name'] }}</title>
@vite('resources/js/app.js') @vite('resources/js/app.js')
</head> </head>
<body data-settings='{!! htmlspecialchars(json_encode($settings)) !!}' data-version="{{ config('app.version') }}" data-error="{{ session()->get('error') }}" data-success="{{ session()->get('success') }}"> <body data-settings='{!! htmlspecialchars(json_encode($settings)) !!}' data-version="{{ config('app.version') }}" data-error="{{ session()->get('error') }}" data-success="{{ session()->get('success') }}">
<style id="erugo-css-variables"> <style id="erugo-css-variables">
:root { :root {
/* Links */ /* Links */
--link-color: {{ $theme->theme->links->default }}; --link-color: {{ $theme->theme->links->default ?? '#00f2fe' }};
--link-color-hover: {{ $theme->theme->links->hover }}; --link-color-hover: {{ $theme->theme->links->hover ?? '#38bdf8' }};
--link-color-active: {{ $theme->theme->links->active }}; --link-color-active: {{ $theme->theme->links->active ?? '#10b981' }};
--link-color-disabled: {{ $theme->theme->links->disabled }}; --link-color-disabled: {{ $theme->theme->links->disabled ?? 'rgba(148, 163, 184, 0.5)' }};
/* Primary buttons */ /* Primary buttons */
--primary-button-background-color: {{ $theme->theme->buttons->primary->default->background }}; --primary-button-background-color: {{ $theme->theme->buttons->primary->default->background ?? 'linear-gradient(135deg, #00f2fe 0%, #4facfe 100%)' }};
--primary-button-text-color: {{ $theme->theme->buttons->primary->default->text }}; --primary-button-text-color: {{ $theme->theme->buttons->primary->default->text ?? '#030712' }};
--primary-button-background-color-hover: {{ $theme->theme->buttons->primary->hover->background }}; --primary-button-background-color-hover: {{ $theme->theme->buttons->primary->hover->background ?? 'linear-gradient(135deg, #38bdf8 0%, #00f2fe 100%)' }};
--primary-button-text-color-hover: {{ $theme->theme->buttons->primary->hover->text }}; --primary-button-text-color-hover: {{ $theme->theme->buttons->primary->hover->text ?? '#030712' }};
--primary-button-background-color-active: {{ $theme->theme->buttons->primary->active->background }}; --primary-button-background-color-active: {{ $theme->theme->buttons->primary->active->background ?? '#0ea5e9' }};
--primary-button-text-color-active: {{ $theme->theme->buttons->primary->active->text }}; --primary-button-text-color-active: {{ $theme->theme->buttons->primary->active->text ?? '#ffffff' }};
--primary-button-background-color-disabled: {{ $theme->theme->buttons->primary->disabled->background ?? 'rgba(100, 100, 100, 0.566)' }}; --primary-button-background-color-disabled: {{ $theme->theme->buttons->primary->disabled->background ?? 'rgba(100, 116, 139, 0.4)' }};
--primary-button-text-color-disabled: {{ $theme->theme->buttons->primary->disabled->text ?? 'rgba(255, 255, 255, 0.579)' }}; --primary-button-text-color-disabled: {{ $theme->theme->buttons->primary->disabled->text ?? 'rgba(255, 255, 255, 0.5)' }};
/* Secondary buttons */ /* Secondary buttons */
--secondary-button-background-color: {{ $theme->theme->buttons->secondary->default->background }}; --secondary-button-background-color: {{ $theme->theme->buttons->secondary->default->background ?? 'rgba(30, 41, 59, 0.7)' }};
--secondary-button-text-color: {{ $theme->theme->buttons->secondary->default->text }}; --secondary-button-text-color: {{ $theme->theme->buttons->secondary->default->text ?? '#f8fafc' }};
--secondary-button-background-color-hover: {{ $theme->theme->buttons->secondary->hover->background }}; --secondary-button-background-color-hover: {{ $theme->theme->buttons->secondary->hover->background ?? 'rgba(51, 65, 85, 0.85)' }};
--secondary-button-text-color-hover: {{ $theme->theme->buttons->secondary->hover->text }}; --secondary-button-text-color-hover: {{ $theme->theme->buttons->secondary->hover->text ?? '#ffffff' }};
--secondary-button-background-color-active: {{ $theme->theme->buttons->secondary->active->background }}; --secondary-button-background-color-active: {{ $theme->theme->buttons->secondary->active->background ?? 'rgba(15, 23, 42, 0.9)' }};
--secondary-button-text-color-active: {{ $theme->theme->buttons->secondary->active->text }}; --secondary-button-text-color-active: {{ $theme->theme->buttons->secondary->active->text ?? '#ffffff' }};
--secondary-button-background-color-disabled: {{ $theme->theme->buttons->secondary->disabled->background ?? 'rgba(100, 100, 100, 0.566)' }}; --secondary-button-background-color-disabled: {{ $theme->theme->buttons->secondary->disabled->background ?? 'rgba(71, 85, 105, 0.4)' }};
--secondary-button-text-color-disabled: {{ $theme->theme->buttons->secondary->disabled->text ?? 'rgba(255, 255, 255, 0.579)' }}; --secondary-button-text-color-disabled: {{ $theme->theme->buttons->secondary->disabled->text ?? 'rgba(255, 255, 255, 0.4)' }};
/* Scrollbars */ /* Scrollbars */
@if(isset($theme->theme->scrollbars)) --scrollbar-track-color: rgba(15, 23, 42, 0.6);
--scrollbar-track-color: {{ $theme->theme->scrollbars->track ?? 'rgba(226, 232, 240, 0.6)' }}; --scrollbar-thumb-color: rgba(56, 189, 248, 0.4);
--scrollbar-thumb-color: {{ $theme->theme->scrollbars->thumb ?? 'rgba(148, 163, 184, 0.7)' }}; --scrollbar-thumb-hover-color: rgba(0, 242, 254, 0.7);
--scrollbar-thumb-hover-color: {{ $theme->theme->scrollbars->thumbHover ?? 'rgba(100, 116, 139, 0.8)' }}; --scrollbar-width: 8px;
--scrollbar-width: {{ $theme->theme->scrollbars->width ?? '8px' }}; --scrollbar-border-radius: 4px;
--scrollbar-border-radius: {{ $theme->theme->scrollbars->borderRadius ?? '4px' }};
@endif
/* Uploader Colors */ /* Uploader Colors */
@if(isset($theme->theme->uploader)) --uploader-background-color: rgba(11, 17, 33, 0.85);
--uploader-background-color: {{ $theme->theme->uploader->background ?? 'rgba(240, 240, 240, 0.769)' }}; --uploader-text-color: #f1f5f9;
--uploader-text-color: {{ $theme->theme->uploader->text ?? 'rgb(71, 71, 71)' }}; --uploader-header-background-color: rgba(15, 23, 42, 0.88);
--uploader-header-background-color: {{ $theme->theme->uploader->header->background ?? 'rgba(245, 245, 245, 0.5)' }}; --uploader-header-text-color: #f8fafc;
--uploader-header-text-color: {{ $theme->theme->uploader->header->text ?? 'rgb(39, 39, 39)' }}; --uploader-item-background-color: rgba(19, 28, 50, 0.75);
--uploader-item-background-color: {{ $theme->theme->uploader->item->background ?? 'rgba(255, 255, 255, 0.8)' }}; --uploader-item-text-color: #f8fafc;
--uploader-item-text-color: {{ $theme->theme->uploader->item->text ?? 'rgb(39, 39, 39)' }};
@endif
/* Panel Colors */ /* Panel Colors */
@if(isset($theme->theme->panel)) --panel-background-color: rgba(11, 17, 33, 0.85);
--panel-background-color: {{ $theme->theme->panel->background ?? 'rgb(235, 235, 235)' }}; --panel-text-color: #f8fafc;
--panel-text-color: {{ $theme->theme->panel->text ?? 'rgb(34, 34, 34)' }}; --panel-text-color-alt: #94a3b8;
--panel-text-color-alt: {{ $theme->theme->panel->textAlt ?? 'rgb(126, 126, 126)' }};
--panel-item-background-color: {{ $theme->theme->panel->item->background ?? 'rgb(215, 215, 215)' }}; --panel-item-background-color: rgba(22, 33, 58, 0.75);
--panel-item-text-color: {{ $theme->theme->panel->item->text ?? 'rgb(34, 34, 34)' }}; --panel-item-text-color: #f8fafc;
--panel-item-background-color-hover: {{ $theme->theme->panel->item->hover->background ?? 'rgb(238, 238, 238)' }}; --panel-item-background-color-hover: rgba(30, 45, 78, 0.85);
--panel-item-text-color-hover: {{ $theme->theme->panel->item->hover->text ?? 'rgb(34, 34, 34)' }}; --panel-item-text-color-hover: #ffffff;
--panel-item-action-hover-background-color-from: {{ $theme->theme->panel->item->action->hover->backgroundFrom ?? 'rgba(238, 238, 238, 0.42)' }}; --panel-item-action-hover-background-color-from: rgba(11, 17, 33, 0.4);
--panel-item-action-hover-background-color-to: {{ $theme->theme->panel->item->action->hover->backgroundTo ?? 'rgb(238, 238, 238)' }}; --panel-item-action-hover-background-color-to: rgba(11, 17, 33, 0.95);
--panel-header-background-color: {{ $theme->theme->panel->header->background ?? 'rgba(80, 175, 223, 0.8)' }}; --panel-header-background-color: rgba(15, 23, 42, 0.92);
--panel-header-text-color: {{ $theme->theme->panel->header->text ?? 'rgb(34, 34, 34)' }}; --panel-header-text-color: #f8fafc;
--panel-subheader-background-color: {{ $theme->theme->panel->subheader->background ?? 'linear-gradient(to bottom, rgb(236, 236, 236) 0%, rgb(241, 241, 241) 100%)' }}; --panel-subheader-background-color: rgba(19, 28, 50, 0.85);
--panel-subheader-text-color: {{ $theme->theme->panel->subheader->text ?? 'rgb(34, 34, 34)' }}; --panel-subheader-text-color: #cbd5e1;
--panel-nav-item-background-color: {{ $theme->theme->panel->nav->item->background ?? 'rgb(223, 223, 223)' }}; --panel-nav-item-background-color: rgba(30, 41, 59, 0.7);
--panel-nav-item-text-color: {{ $theme->theme->panel->nav->item->text ?? 'rgb(53, 53, 53)' }}; --panel-nav-item-text-color: #cbd5e1;
--panel-nav-item-background-color-hover: {{ $theme->theme->panel->nav->item->hover->background ?? 'rgba(80, 175, 223, 0.8)' }}; --panel-nav-item-background-color-hover: rgba(14, 165, 233, 0.35);
--panel-nav-item-text-color-hover: {{ $theme->theme->panel->nav->item->hover->text ?? 'rgb(244, 244, 244)' }}; --panel-nav-item-text-color-hover: #ffffff;
--panel-section-background-color: {{ $theme->theme->panel->section->background ?? 'rgb(225, 225, 225)' }}; --panel-section-background-color: rgba(15, 23, 42, 0.75);
--panel-section-text-color: {{ $theme->theme->panel->section->text ?? 'rgb(53, 53, 53)' }}; --panel-section-text-color: #f8fafc;
--panel-section-background-color-alt: {{ $theme->theme->panel->section->alt->background ?? 'rgb(218, 218, 218)' }}; --panel-section-background-color-alt: rgba(19, 28, 50, 0.65);
--panel-section-text-color-alt: {{ $theme->theme->panel->section->alt->text ?? 'rgb(53, 53, 53)' }}; --panel-section-text-color-alt: #cbd5e1;
@endif
/* Tabs Colors */ /* Tabs Colors */
@if(isset($theme->theme->tabs)) --tabs-bar-background-color: rgba(15, 23, 42, 0.85);
--tabs-bar-background-color: {{ $theme->theme->tabs->bar->background ?? 'rgb(221, 221, 221)' }}; --tabs-tab-background-color: rgba(30, 41, 59, 0.6);
--tabs-tab-background-color: {{ $theme->theme->tabs->tab->background ?? 'rgb(211, 211, 211)' }}; --tabs-tab-text-color: #94a3b8;
--tabs-tab-text-color: {{ $theme->theme->tabs->tab->text ?? 'rgb(53, 53, 53)' }}; --tabs-tab-background-color-hover: rgba(56, 189, 248, 0.25);
--tabs-tab-background-color-hover: {{ $theme->theme->tabs->tab->hover->background ?? 'rgba(80, 175, 223, 0.8)' }}; --tabs-tab-text-color-hover: #ffffff;
--tabs-tab-text-color-hover: {{ $theme->theme->tabs->tab->hover->text ?? 'rgb(244, 244, 244)' }}; --tabs-tab-background-color-active: rgba(14, 165, 233, 0.35);
--tabs-tab-background-color-active: {{ $theme->theme->tabs->tab->active->background ?? 'rgba(80, 175, 223, 0.8)' }}; --tabs-tab-text-color-active: #38bdf8;
--tabs-tab-text-color-active: {{ $theme->theme->tabs->tab->active->text ?? 'rgb(244, 244, 244)' }};
@endif
/* Table Colors */ /* Table Colors */
@if(isset($theme->theme->table)) --table-background-color: rgba(11, 17, 33, 0.8);
--table-background-color: {{ $theme->theme->table->background ?? 'rgb(221, 221, 221)' }}; --table-text-color: #f8fafc;
--table-text-color: {{ $theme->theme->table->text ?? 'rgb(34, 34, 34)' }}; --table-header-background-color: rgba(15, 23, 42, 0.95);
--table-header-background-color: {{ $theme->theme->table->header->background ?? 'rgba(80, 175, 223, 1)' }}; --table-header-text-color: #38bdf8;
--table-header-text-color: {{ $theme->theme->table->header->text ?? 'rgb(255, 255, 255)' }}; --table-row-background-color: rgba(19, 28, 50, 0.6);
--table-row-background-color: {{ $theme->theme->table->row->background ?? 'rgb(238, 238, 238)' }}; --table-row-text-color: #f8fafc;
--table-row-text-color: {{ $theme->theme->table->row->text ?? 'rgb(34, 34, 34)' }}; --table-row-background-color-alt: rgba(15, 23, 42, 0.75);
--table-row-background-color-alt: {{ $theme->theme->table->row->alt->background ?? 'rgb(241, 241, 241)' }}; --table-row-text-color-alt: #cbd5e1;
--table-row-text-color-alt: {{ $theme->theme->table->row->alt->text ?? 'rgb(34, 34, 34)' }};
@endif
/* Input Colors */ /* Input Colors */
@if(isset($theme->theme->input)) --input-background-color: rgba(6, 10, 22, 0.65);
--input-background-color: {{ $theme->theme->input->background ?? 'rgb(236, 236, 236)' }}; --input-text-color: #f8fafc;
--input-text-color: {{ $theme->theme->input->text ?? 'rgb(34, 34, 34)' }}; --input-border-color: rgba(148, 163, 184, 0.2);
--input-border-color: {{ $theme->theme->input->border->default ?? 'rgb(222, 222, 222)' }}; --input-border-color-hover: rgba(56, 189, 248, 0.5);
--input-border-color-hover: {{ $theme->theme->input->border->hover ?? 'rgb(205, 205, 205)' }}; --input-border-color-focus: #00f2fe;
--input-border-color-focus: {{ $theme->theme->input->border->focus ?? 'rgb(80, 175, 223)' }}; --input-placeholder-color: #64748b;
--input-placeholder-color: {{ $theme->theme->input->placeholder ?? 'rgb(164, 164, 164)' }};
@endif
/* Checkbox Colors */ /* Checkbox Colors */
@if(isset($theme->theme->checkbox)) --checkbox-background-color: rgba(15, 23, 42, 0.8);
--checkbox-background-color: {{ $theme->theme->checkbox->background ?? 'rgb(236, 236, 236)' }}; --checkbox-checked-background-color: #00f2fe;
--checkbox-checked-background-color: {{ $theme->theme->checkbox->checked->background ?? 'rgb(80, 175, 223)' }}; --checkbox-checked-check-color: #030712;
--checkbox-checked-check-color: {{ $theme->theme->checkbox->checked->check ?? 'rgb(255, 255, 255)' }};
@endif
/* Label Colors */ /* Label Colors */
@if(isset($theme->theme->label)) --label-text-color: #e2e8f0;
--label-text-color: {{ $theme->theme->label->text ?? 'rgb(34, 34, 34)' }};
@endif
/* Progress Bar Colors */ /* Progress Bar Colors */
@if(isset($theme->theme->progressBar)) --progress-bar-background-color: rgba(15, 23, 42, 0.7);
--progress-bar-background-color: {{ $theme->theme->progressBar->background ?? 'rgb(211, 211, 211)' }}; --progress-bar-fill-color: linear-gradient(90deg, #00f2fe 0%, #3b82f6 50%, #a855f7 100%);
--progress-bar-fill-color: {{ $theme->theme->progressBar->fill ?? 'rgb(80, 175, 223)' }}; --progress-bar-text-color: #f8fafc;
--progress-bar-text-color: {{ $theme->theme->progressBar->text ?? 'rgb(34, 34, 34)' }};
@endif
/* Overlay Colors */ /* Overlay Colors */
@if(isset($theme->theme->overlay)) --overlay-background-color: rgba(3, 7, 18, 0.75);
--overlay-background-color: {{ $theme->theme->overlay->background ?? 'rgba(255, 255, 255, 0.2)' }};
@endif
/* Status Colors */ /* Status Colors */
--color-success: {{ $theme->theme->status->success ?? 'rgb(34, 197, 94)' }}; --color-success: #10b981;
--color-warning: {{ $theme->theme->status->warning ?? 'rgb(234, 179, 8)' }}; --color-warning: #f59e0b;
--color-danger: {{ $theme->theme->status->danger ?? 'rgb(239, 68, 68)' }}; --color-danger: #ef4444;
/* Dimensions */ /* Dimensions */
@if(isset($theme->theme->dimensions)) --button-height: 48px;
@if(isset($theme->theme->dimensions->button)) --button-width: 100%;
--button-height: {{ $theme->theme->dimensions->button->height ?? '50px' }}; --icon-only-button-width: 44px;
--button-width: {{ $theme->theme->dimensions->button->width ?? '100%' }}; --button-border-radius: 12px;
--icon-only-button-width: {{ $theme->theme->dimensions->button->iconOnlyWidth ?? '50px' }}; --panel-border-radius: 18px;
--button-border-radius: {{ $theme->theme->dimensions->button->borderRadius ?? '10px' }}; --tabs-border-radius: 10px 10px 0 0;
@endif --settings-width: min(1000px, 94vw);
--settings-height: 85vh;
}
</style>
@if(isset($theme->theme->dimensions->panel)) <!-- ================================================================= -->
--panel-border-radius: {{ $theme->theme->dimensions->panel->borderRadius ?? '10px' }}; <!-- CYBERDROP PRO — FULLSCREEN ULTRA GLASSMORPHISM THEME -->
@endif <!-- ================================================================= -->
<style id="cyberdrop-fullscreen-theme">
/* Global Typography & Viewport Setup */
html, body {
font-family: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;
background-color: #050811 !important;
color: #f8fafc !important;
min-height: 100vh !important;
overflow-x: hidden !important;
-webkit-font-smoothing: antialiased !important;
-moz-osx-font-smoothing: grayscale !important;
}
@if(isset($theme->theme->dimensions->tabs)) #app {
--tabs-border-radius: {{ $theme->theme->dimensions->tabs->borderRadius ?? '5px 5px 0 0' }}; min-height: 100vh !important;
@endif display: flex !important;
flex-direction: column !important;
justify-content: space-between !important;
align-items: center !important;
padding: 0 !important;
position: relative !important;
z-index: 1 !important;
}
@if(isset($theme->theme->dimensions->settings)) /* Ambient Cinematic Background Overlay */
--settings-width: {{ $theme->theme->dimensions->settings->width ?? '100vw' }}; .backgrounds {
--settings-height: {{ $theme->theme->dimensions->settings->height ?? '100vh' }}; filter: brightness(0.65) contrast(1.15) !important;
@endif transition: filter 0.8s ease !important;
@endif }
.backgrounds::after {
content: '';
position: fixed;
inset: 0;
background:
radial-gradient(ellipse at 50% 15%, rgba(0, 242, 254, 0.12) 0%, transparent 60%),
radial-gradient(ellipse at 85% 75%, rgba(139, 92, 246, 0.10) 0%, transparent 55%),
radial-gradient(ellipse at 15% 85%, rgba(16, 185, 129, 0.08) 0%, transparent 50%),
linear-gradient(180deg, rgba(5, 8, 17, 0.45) 0%, rgba(5, 8, 17, 0.85) 100%) !important;
pointer-events: none;
z-index: 1;
}
/* Subtle Cyber HUD Grid overlay */
.backgrounds::before {
content: '';
position: fixed;
inset: 0;
background-image:
linear-gradient(rgba(56, 189, 248, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(56, 189, 248, 0.03) 1px, transparent 1px);
background-size: 40px 40px;
pointer-events: none;
z-index: 1;
}
/* Header Logo Container */
.logo-container {
margin-top: 28px !important;
z-index: 10 !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
}
.logo-container:hover {
transform: scale(1.04) !important;
}
.logo-container img {
max-height: 52px !important;
width: auto !important;
filter: drop-shadow(0 0 25px rgba(0, 242, 254, 0.55)) !important;
}
/* Floating Language Selector (Top Right) */
.language-selector {
z-index: 25 !important;
position: fixed !important;
top: 24px !important;
right: 28px !important;
background: rgba(13, 19, 36, 0.75) !important;
backdrop-filter: blur(20px) saturate(180%) !important;
-webkit-backdrop-filter: blur(20px) saturate(180%) !important;
border: 1px solid rgba(0, 242, 254, 0.2) !important;
border-radius: 9999px !important;
padding: 6px 14px !important;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4), 0 0 15px rgba(0, 242, 254, 0.1) !important;
transition: all 0.3s ease !important;
}
.language-selector:hover {
border-color: rgba(0, 242, 254, 0.5) !important;
box-shadow: 0 10px 35px rgba(0, 0, 0, 0.5), 0 0 20px rgba(0, 242, 254, 0.25) !important;
}
.language-selector select, .language-selector button {
background: transparent !important;
color: #f8fafc !important;
border: none !important;
font-size: 0.88rem !important;
font-weight: 600 !important;
outline: none !important;
cursor: pointer !important;
}
/* ================================================================= */
/* VOLLBILD MAIN WORKSPACE CONTAINER */
/* ================================================================= */
.main {
width: min(1280px, 94vw) !important;
max-width: 1360px !important;
min-height: 520px !important;
margin: 32px auto !important;
display: flex !important;
flex-direction: column !important;
align-items: center !important;
justify-content: center !important;
z-index: 10 !important;
transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1) !important;
}
@media (min-width: 1024px) {
.main {
width: min(1320px, 92vw) !important;
}
}
/* ================================================================= */
/* AUTH / LOGIN CARD (Sleek Centered Cyber Glass) */
/* ================================================================= */
.auth-container {
width: min(520px, 92vw) !important;
background: rgba(11, 17, 33, 0.84) !important;
backdrop-filter: blur(28px) saturate(190%) !important;
-webkit-backdrop-filter: blur(28px) saturate(190%) !important;
border: 1px solid rgba(0, 242, 254, 0.28) !important;
border-radius: 24px !important;
box-shadow:
0 25px 60px -15px rgba(0, 0, 0, 0.8),
0 0 35px rgba(0, 242, 254, 0.18),
inset 0 1px 0 rgba(255, 255, 255, 0.12) !important;
padding: 42px 48px !important;
position: relative !important;
overflow: hidden !important;
transition: transform 0.3s ease, box-shadow 0.3s ease !important;
}
.auth-container:hover {
box-shadow:
0 30px 70px -15px rgba(0, 0, 0, 0.85),
0 0 45px rgba(0, 242, 254, 0.25),
inset 0 1px 0 rgba(255, 255, 255, 0.18) !important;
}
/* Glowing Top Neon Accent Bar */
.auth-container::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background: linear-gradient(90deg, #00f2fe 0%, #4facfe 50%, #a855f7 100%) !important;
box-shadow: 0 0 18px #00f2fe !important;
}
.auth-container h1 {
font-size: 2rem !important;
font-weight: 700 !important;
background: linear-gradient(135deg, #ffffff 30%, #94a3b8 100%) !important;
-webkit-background-clip: text !important;
-webkit-text-fill-color: transparent !important;
margin-bottom: 8px !important;
letter-spacing: -0.025em !important;
}
.auth-container p {
color: #94a3b8 !important;
font-size: 0.95rem !important;
margin-bottom: 28px !important;
line-height: 1.55 !important;
}
/* Inputs & Form Fields */
.input-container {
margin-bottom: 22px !important;
}
.input-container label {
display: block !important;
font-size: 0.82rem !important;
font-weight: 600 !important;
text-transform: uppercase !important;
letter-spacing: 0.06em !important;
color: #94a3b8 !important;
margin-bottom: 8px !important;
}
.input-container input,
.auth-container input,
.upload-basket-details input,
.upload-basket-details textarea,
.settings-container input,
.settings-container textarea {
width: 100% !important;
background: rgba(6, 10, 22, 0.65) !important;
border: 1px solid rgba(148, 163, 184, 0.22) !important;
border-radius: 12px !important;
color: #f8fafc !important;
padding: 14px 18px !important;
font-size: 0.98rem !important;
font-family: inherit !important;
transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1) !important;
outline: none !important;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3) !important;
}
.input-container input:focus,
.auth-container input:focus,
.upload-basket-details input:focus,
.upload-basket-details textarea:focus,
.settings-container input:focus,
.settings-container textarea:focus {
border-color: #00f2fe !important;
background: rgba(6, 10, 22, 0.88) !important;
box-shadow: 0 0 0 3px rgba(0, 242, 254, 0.22), inset 0 2px 4px rgba(0, 0, 0, 0.3) !important;
}
/* ================================================================= */
/* VOLLBILD UPLOADER & DASHBOARD (Expansive Desktop Layout) */
/* ================================================================= */
.upload-form, .upload-basket, .upload-basket-details, .sharePanel {
border: 1px solid rgba(0, 242, 254, 0.22) !important;
backdrop-filter: blur(28px) saturate(185%) !important;
-webkit-backdrop-filter: blur(28px) saturate(185%) !important;
}
.upload-form {
width: 100% !important;
background: rgba(15, 23, 42, 0.88) !important;
border-radius: 24px 24px 0 0 !important;
border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important;
padding: 24px 32px !important;
box-shadow: 0 -10px 30px rgba(0, 0, 0, 0.3) !important;
}
.upload-form .buttons {
display: flex !important;
gap: 16px !important;
justify-content: center !important;
width: 100% !important;
}
.upload-form .max-size-label {
color: #94a3b8 !important;
font-size: 0.85rem !important;
font-family: 'JetBrains Mono', monospace !important;
letter-spacing: 0.02em !important;
margin-top: 12px !important;
}
/* Spacious Upload Basket & Drag Zone */
.upload-basket {
width: 100% !important;
min-height: 340px !important;
max-height: 550px !important;
background: rgba(11, 17, 33, 0.85) !important;
padding: 24px 28px !important;
box-shadow: inset 0 0 30px rgba(0, 0, 0, 0.3) !important;
border-top: none !important;
border-bottom: none !important;
}
/* Interactive Dropzone */
.dropzone {
width: 100% !important;
min-height: 240px !important;
display: flex !important;
flex-direction: column !important;
align-items: center !important;
justify-content: center !important;
border: 2px dashed rgba(0, 242, 254, 0.35) !important;
border-radius: 18px !important;
background: rgba(6, 10, 22, 0.4) !important;
transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;
padding: 30px !important;
}
.dropzone:hover, .dropzone.active {
border-color: #00f2fe !important;
background: rgba(0, 242, 254, 0.08) !important;
box-shadow: 0 0 35px rgba(0, 242, 254, 0.25), inset 0 0 20px rgba(0, 242, 254, 0.1) !important;
transform: scale(1.005) !important;
}
.upload-basket .upload-basket-empty-text {
color: #cbd5e1 !important;
font-size: 1.1rem !important;
font-weight: 500 !important;
letter-spacing: 0.01em !important;
gap: 12px !important;
}
.upload-basket .upload-basket-empty-text svg {
width: 28px !important;
height: 28px !important;
stroke: #00f2fe !important;
filter: drop-shadow(0 0 10px rgba(0, 242, 254, 0.6)) !important;
}
/* Upload Basket File Items (Cards) */
.upload-basket .upload-basket-item,
.download-panel-content .share-files-list .upload-basket-item {
background: rgba(19, 28, 50, 0.8) !important;
border: 1px solid rgba(255, 255, 255, 0.07) !important;
border-radius: 14px !important;
padding: 12px 18px !important;
margin-bottom: 8px !important;
transition: all 0.25s ease !important;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.25) !important;
}
.upload-basket .upload-basket-item:hover,
.download-panel-content .share-files-list .upload-basket-item:hover {
background: rgba(26, 38, 68, 0.9) !important;
border-color: rgba(0, 242, 254, 0.4) !important;
transform: translateX(3px) !important;
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.35), 0 0 15px rgba(0, 242, 254, 0.15) !important;
}
.upload-basket .upload-basket-item .name {
font-weight: 600 !important;
font-size: 0.95rem !important;
color: #f8fafc !important;
gap: 10px !important;
}
.upload-basket .upload-basket-item .name svg {
width: 20px !important;
height: 20px !important;
stroke: #38bdf8 !important;
}
.upload-basket .upload-basket-item .meta {
font-family: 'JetBrains Mono', monospace !important;
font-size: 0.8rem !important;
color: #94a3b8 !important;
opacity: 0.85 !important;
}
/* Basket Details Bottom Form */
.upload-basket-details {
width: 100% !important;
background: rgba(15, 23, 42, 0.9) !important;
border-radius: 0 0 24px 24px !important;
padding: 24px 32px !important;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.6) !important;
}
/* ================================================================= */
/* BUTTONS & MICRO-INTERACTIONS */
/* ================================================================= */
button, .btn-primary, .button-row button {
background: linear-gradient(135deg, #00f2fe 0%, #4facfe 50%, #6366f1 100%) !important;
color: #030712 !important;
font-weight: 700 !important;
font-size: 0.98rem !important;
padding: 13px 28px !important;
border-radius: 12px !important;
border: none !important;
box-shadow: 0 4px 20px rgba(0, 242, 254, 0.35) !important;
transition: all 0.25s cubic-bezier(0.16, 1, 0.3, 1) !important;
cursor: pointer !important;
letter-spacing: 0.02em !important;
}
button:hover, .btn-primary:hover, .button-row button:hover {
transform: translateY(-2px) scale(1.01) !important;
box-shadow: 0 8px 30px rgba(0, 242, 254, 0.55) !important;
filter: brightness(1.12) !important;
}
button:active, .button-row button:active {
transform: translateY(0) scale(0.99) !important;
}
/* Secondary / Ghost Buttons */
.btn-secondary, button.secondary, .button-bar button {
background: rgba(30, 41, 59, 0.75) !important;
color: #f8fafc !important;
border: 1px solid rgba(148, 163, 184, 0.2) !important;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.25) !important;
}
.btn-secondary:hover, button.secondary:hover, .button-bar button:hover {
background: rgba(51, 65, 85, 0.9) !important;
border-color: rgba(56, 189, 248, 0.5) !important;
color: #ffffff !important;
}
/* ================================================================= */
/* FLOATING BOTTOM MAIN MENU DOCK */
/* ================================================================= */
.main-menu {
position: fixed !important;
bottom: 24px !important;
left: 50% !important;
transform: translateX(-50%) !important;
z-index: 30 !important;
display: flex !important;
gap: 10px !important;
padding: 8px 14px !important;
background: rgba(11, 17, 33, 0.88) !important;
backdrop-filter: blur(28px) saturate(190%) !important;
-webkit-backdrop-filter: blur(28px) saturate(190%) !important;
border: 1px solid rgba(0, 242, 254, 0.25) !important;
border-radius: 9999px !important;
box-shadow:
0 20px 40px rgba(0, 0, 0, 0.6),
0 0 25px rgba(0, 242, 254, 0.15) !important;
}
.main-menu button {
background: transparent !important;
color: #94a3b8 !important;
border-radius: 9999px !important;
padding: 10px 14px !important;
font-size: 1.1rem !important;
box-shadow: none !important;
transition: all 0.25s ease !important;
}
.main-menu button:hover, .main-menu button.active {
color: #00f2fe !important;
background: rgba(0, 242, 254, 0.15) !important;
box-shadow: 0 0 15px rgba(0, 242, 254, 0.3) !important;
transform: scale(1.08) !important;
}
/* ================================================================= */
/* RECIPIENT SHARE PANEL / DOWNLOAD PAGE */
/* ================================================================= */
.sharePanel {
width: 100% !important;
background: rgba(11, 17, 33, 0.85) !important;
border-radius: 24px !important;
padding: 36px 44px !important;
box-shadow: 0 25px 60px -15px rgba(0, 0, 0, 0.7), 0 0 35px rgba(0, 242, 254, 0.15) !important;
}
.sharePanel-title h1 {
font-size: 1.85rem !important;
font-weight: 700 !important;
background: linear-gradient(135deg, #ffffff 30%, #94a3b8 100%) !important;
-webkit-background-clip: text !important;
-webkit-text-fill-color: transparent !important;
}
/* ================================================================= */
/* PROGRESS BAR & TOASTS */
/* ================================================================= */
.progress-bar, .Vue-Toastification__progress-bar {
background: linear-gradient(90deg, #00f2fe 0%, #38bdf8 50%, #8b5cf6 100%) !important;
box-shadow: 0 0 15px rgba(0, 242, 254, 0.6) !important;
}
.Vue-Toastification__toast {
background: rgba(15, 23, 42, 0.92) !important;
backdrop-filter: blur(20px) !important;
border: 1px solid rgba(0, 242, 254, 0.3) !important;
border-radius: 14px !important;
color: #f8fafc !important;
box-shadow: 0 15px 35px rgba(0, 0, 0, 0.5), 0 0 20px rgba(0, 242, 254, 0.2) !important;
}
/* Links & Accents */
a {
color: #38bdf8 !important;
text-decoration: none !important;
transition: all 0.2s ease !important;
}
a:hover {
color: #7dd3fc !important;
text-shadow: 0 0 10px rgba(56, 189, 248, 0.6) !important;
}
/* Footer */
footer {
color: rgba(148, 163, 184, 0.6) !important;
font-size: 0.85rem !important;
padding: 20px !important;
text-align: center !important;
z-index: 10 !important;
} }
</style> </style>
<div id="app"></div> <div id="app"></div>
</body> </body>
</html> </html>
+38 -14
View File
@@ -1,32 +1,56 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="de">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href="/api/favicon" type="image/svg+xml">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css" rel="stylesheet" <title>{{ $settings['application_name'] }} - Fehler</title>
integrity="sha512-Evv84Mr4kqVGRNSgIGL/F/aIDqQb7xQ2vcrdIwxfjThSH8CSR7PBEakCr51Ck+w+/U6swU2Im1vVX0SVk9ABhg=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
<title>{{ $settings['application_name'] }}</title>
@vite('resources/js/app.js') @vite('resources/js/app.js')
</head> </head>
<body data-settings='{!! json_encode($settings) !!}'> <body data-settings='{!! json_encode($settings) !!}'>
<style id="erugo-css-variables"> <style>
:root { body {
--primary-color: {{ $settings['css_primary_color'] }}; font-family: 'Outfit', -apple-system, BlinkMacSystemFont, sans-serif !important;
--secondary-color: {{ $settings['css_secondary_color'] }}; background: #060913 radial-gradient(circle at 50% 30%, rgba(239, 68, 68, 0.15) 0%, transparent 60%) !important;
--accent-color: {{ $settings['css_accent_color'] }}; color: #f8fafc !important;
--accent-color-light: {{ $settings['css_accent_color_light'] }}; min-height: 100vh !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
}
.share-not-ready {
width: min(540px, 92vw) !important;
background: rgba(15, 23, 42, 0.85) !important;
backdrop-filter: blur(28px) saturate(180%) !important;
border: 1px solid rgba(239, 68, 68, 0.35) !important;
border-radius: 24px !important;
box-shadow: 0 25px 60px rgba(0, 0, 0, 0.7), 0 0 35px rgba(239, 68, 68, 0.2) !important;
padding: 44px 40px !important;
text-align: center !important;
}
.share-not-ready h1 {
font-size: 1.9rem !important;
font-weight: 700 !important;
color: #ef4444 !important;
margin-bottom: 12px !important;
}
.share-not-ready p {
color: #94a3b8 !important;
font-size: 1rem !important;
line-height: 1.6 !important;
} }
</style> </style>
<div class="share-not-ready"> <div class="share-not-ready">
<div class="share-status-inner"> <div class="share-status-inner">
<h1>Bad Error</h1> <h1>⚠️ Transfer Nicht Verfügbar</h1>
<p>Something went horribly wrong with this share. <br><small>Please ask the sender to try again.</small></p> <p>Dieser Link ist abgelaufen oder die Dateien wurden gelöscht.<br><small style="color: #64748b;">Bitte kontaktiere den Absender für eine neue Freigabe.</small></p>
</div> </div>
</div> </div>
</body> </body>
+50 -27
View File
@@ -1,50 +1,73 @@
<!doctype html> <!doctype html>
<html lang="en"> <html lang="de">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="icon" href="/api/favicon" type="image/svg+xml">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.0.2/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.7.2/css/all.min.css" rel="stylesheet" <title>{{ $settings['application_name'] }} - Wird vorbereitet</title>
integrity="sha512-Evv84Mr4kqVGRNSgIGL/F/aIDqQb7xQ2vcrdIwxfjThSH8CSR7PBEakCr51Ck+w+/U6swU2Im1vVX0SVk9ABhg=="
crossorigin="anonymous" referrerpolicy="no-referrer" />
<title>{{ $settings['application_name'] }}</title>
@vite('resources/js/app.js') @vite('resources/js/app.js')
<script> <script>
function reload() { function reload() {
window.location.reload(); window.location.reload();
} }
</script> </script>
</head> </head>
<body data-settings='{!! json_encode($settings) !!}'> <body data-settings='{!! json_encode($settings) !!}'>
<style id="erugo-css-variables"> <style>
:root { body {
--primary-color: {{ $settings['css_primary_color'] }}; font-family: 'Outfit', -apple-system, BlinkMacSystemFont, sans-serif !important;
--secondary-color: {{ $settings['css_secondary_color'] }}; background: #060913 radial-gradient(circle at 50% 30%, rgba(0, 242, 254, 0.15) 0%, transparent 60%) !important;
--accent-color: {{ $settings['css_accent_color'] }}; color: #f8fafc !important;
--accent-color-light: {{ $settings['css_accent_color_light'] }}; min-height: 100vh !important;
display: flex !important;
align-items: center !important;
justify-content: center !important;
}
.share-not-ready {
width: min(540px, 92vw) !important;
background: rgba(15, 23, 42, 0.85) !important;
backdrop-filter: blur(28px) saturate(180%) !important;
border: 1px solid rgba(0, 242, 254, 0.3) !important;
border-radius: 24px !important;
box-shadow: 0 25px 60px rgba(0, 0, 0, 0.7), 0 0 35px rgba(0, 242, 254, 0.2) !important;
padding: 44px 40px !important;
text-align: center !important;
}
.share-not-ready h1 {
font-size: 1.8rem !important;
font-weight: 700 !important;
color: #00f2fe !important;
margin-bottom: 12px !important;
}
.share-not-ready p {
color: #94a3b8 !important;
font-size: 1rem !important;
line-height: 1.6 !important;
}
.btn-reload {
margin-top: 20px !important;
background: linear-gradient(135deg, #00f2fe 0%, #4facfe 100%) !important;
color: #030712 !important;
font-weight: 700 !important;
padding: 12px 28px !important;
border-radius: 12px !important;
border: none !important;
cursor: pointer !important;
box-shadow: 0 4px 20px rgba(0, 242, 254, 0.35) !important;
} }
</style> </style>
<div class="share-not-ready"> <div class="share-not-ready">
<div class="share-status-inner"> <div class="share-status-inner">
<h1><svg class="lucide lucide-circle-dashed" xmlns="http://www.w3.org/2000/svg" width="24" height="24" <h1>Transfer Wird Vorbereitet...</h1>
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" <p>Die Dateien werden gerade verarbeitet oder hochgeladen.<br><small style="color: #64748b;">Diese Seite aktualisiert sich in Kürze automatisch.</small></p>
stroke-linejoin="round"> <button class="btn-reload" onclick="reload()">Neu Laden</button>
<path d="M10.1 2.182a10 10 0 0 1 3.8 0" />
<path d="M13.9 21.818a10 10 0 0 1-3.8 0" />
<path d="M17.609 3.721a10 10 0 0 1 2.69 2.7" />
<path d="M2.182 13.9a10 10 0 0 1 0-3.8" />
<path d="M20.279 17.609a10 10 0 0 1-2.7 2.69" />
<path d="M21.818 10.1a10 10 0 0 1 0 3.8" />
<path d="M3.721 6.391a10 10 0 0 1 2.7-2.69" />
<path d="M6.391 20.279a10 10 0 0 1-2.69-2.7" />
</svg>Share is being processed</h1>
<p>Try again in a few moments.</p>
<button onclick="reload()">Try again now</button>
</div> </div>
</div> </div>
</body> </body>