diff --git a/extensions/Servers/Proxmox/views/components/ui/action-button.blade.php b/extensions/Servers/Proxmox/views/components/ui/action-button.blade.php
index 9df746114..afc2ded7c 100644
--- a/extensions/Servers/Proxmox/views/components/ui/action-button.blade.php
+++ b/extensions/Servers/Proxmox/views/components/ui/action-button.blade.php
@@ -1,5 +1,5 @@
{{--
- Action Toolbar Button Component - TailServer Theme
+ Action Toolbar Button Component - shadcn-style
Individual button for VM control actions
Usage:
@@ -24,23 +24,23 @@
@php
$variants = [
- 'default' => 'bg-gradient-to-b from-neutral/5 to-neutral/10 hover:from-neutral/10 hover:to-neutral/15 text-base border border-neutral/20 hover:border-neutral/30 shadow-sm hover:shadow',
- 'primary' => 'bg-gradient-to-b from-primary/10 to-primary/15 hover:from-primary/15 hover:to-primary/20 text-primary border border-primary/20 hover:border-primary/30 shadow-sm hover:shadow-md hover:shadow-primary/10',
- 'success' => 'bg-gradient-to-b from-success/10 to-success/15 hover:from-success/15 hover:to-success/20 text-success border border-success/20 hover:border-success/30 shadow-sm hover:shadow-md hover:shadow-success/10',
- 'warning' => 'bg-gradient-to-b from-warning/10 to-warning/15 hover:from-warning/15 hover:to-warning/20 text-warning border border-warning/20 hover:border-warning/30 shadow-sm hover:shadow-md hover:shadow-warning/10',
- 'danger' => 'bg-gradient-to-b from-danger/10 to-danger/15 hover:from-danger/15 hover:to-danger/20 text-danger border border-danger/20 hover:border-danger/30 shadow-sm hover:shadow-md hover:shadow-danger/10',
+ 'default' => 'border bg-background hover:bg-accent hover:text-accent-foreground',
+ 'primary' => 'border border-primary/20 bg-primary/10 text-primary hover:bg-primary/20',
+ 'success' => 'border border-success/20 bg-success/10 text-success hover:bg-success/20',
+ 'warning' => 'border border-warning/20 bg-warning/10 text-warning hover:bg-warning/20',
+ 'danger' => 'border border-danger/20 bg-danger/10 text-danger hover:bg-danger/20',
];
$sizes = [
- 'sm' => 'px-2.5 py-1.5 text-xs',
- 'md' => 'px-3.5 py-2 text-sm',
- 'lg' => 'px-5 py-2.5 text-base',
+ 'sm' => 'h-8 px-3 text-xs',
+ 'md' => 'h-9 px-4 text-sm',
+ 'lg' => 'h-10 px-5 text-sm',
];
$iconSizes = [
'sm' => 'size-3.5',
'md' => 'size-4',
- 'lg' => 'size-5',
+ 'lg' => 'size-4',
];
@endphp
@@ -53,11 +53,11 @@
{{ $attributes->merge([
'disabled' => $disabled || $loading,
])->class([
- 'inline-flex items-center gap-2 rounded-xl font-medium transition-all duration-200 hover:-translate-y-0.5 active:translate-y-0 active:scale-95',
+ 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md font-medium ring-offset-background transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
$variants[$variant] ?? $variants['default'],
$sizes[$size] ?? $sizes['md'],
- 'opacity-50 cursor-not-allowed hover:translate-y-0' => $disabled,
- 'cursor-wait hover:translate-y-0' => $loading,
+ 'pointer-events-none opacity-50' => $disabled,
+ 'cursor-wait' => $loading,
]) }}
>
@if($loading)
diff --git a/extensions/Servers/Proxmox/views/components/ui/alert.blade.php b/extensions/Servers/Proxmox/views/components/ui/alert.blade.php
index 945fbb7fb..6985e6c70 100644
--- a/extensions/Servers/Proxmox/views/components/ui/alert.blade.php
+++ b/extensions/Servers/Proxmox/views/components/ui/alert.blade.php
@@ -1,5 +1,5 @@
{{--
- Alert Component - TailServer Theme
+ Alert Component - TailServer Theme (shadcn-inspired)
Usage:
Default alert
@@ -8,7 +8,7 @@
--}}
@props([
- 'variant' => 'info',
+ 'variant' => 'default',
'title' => null,
'icon' => null,
'dismissible' => false,
@@ -18,46 +18,36 @@
@php
$variantConfig = [
+ 'default' => [
+ 'class' => 'bg-card text-card-foreground',
+ 'icon' => $icon ?? 'ri-information-line',
+ ],
'info' => [
- 'bg' => 'bg-gradient-to-r from-info/10 via-info/5 to-transparent',
- 'border' => 'border-info/20',
- 'text' => 'text-info',
+ 'class' => 'border-info/20 bg-info/5 text-info [&>svg]:text-info',
'icon' => $icon ?? 'ri-information-line',
],
'success' => [
- 'bg' => 'bg-gradient-to-r from-success/10 via-success/5 to-transparent',
- 'border' => 'border-success/20',
- 'text' => 'text-success',
+ 'class' => 'border-success/20 bg-success/5 text-success [&>svg]:text-success',
'icon' => $icon ?? 'ri-checkbox-circle-line',
],
'warning' => [
- 'bg' => 'bg-gradient-to-r from-warning/10 via-warning/5 to-transparent',
- 'border' => 'border-warning/20',
- 'text' => 'text-warning',
+ 'class' => 'border-warning/20 bg-warning/5 text-warning [&>svg]:text-warning',
'icon' => $icon ?? 'ri-error-warning-line',
],
'danger' => [
- 'bg' => 'bg-gradient-to-r from-danger/10 via-danger/5 to-transparent',
- 'border' => 'border-danger/20',
- 'text' => 'text-danger',
+ 'class' => 'border-danger/20 bg-danger/5 text-danger [&>svg]:text-danger',
'icon' => $icon ?? 'ri-error-warning-fill',
],
- 'default' => [
- 'bg' => 'bg-gradient-to-r from-neutral/10 via-neutral/5 to-transparent',
- 'border' => 'border-neutral/20',
- 'text' => 'text-base/70',
- 'icon' => $icon ?? 'ri-information-line',
- ],
];
$config = $variantConfig[$variant] ?? $variantConfig['default'];
@endphp
class([
- 'rounded-xl p-4 border',
- $config['bg'],
- $config['border'],
+ 'relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5',
+ $config['class'],
]) }}
@if($dismissible || $collapsible)
x-data="{
@@ -65,56 +55,54 @@
@if($collapsible) collapsed: {{ $collapsed ? 'true' : 'false' }} @endif
}"
x-show="show"
- x-transition:enter="transition ease-out duration-300"
- x-transition:enter-start="opacity-0 scale-95"
- x-transition:enter-end="opacity-100 scale-100"
- x-transition:leave="transition ease-in duration-200"
- x-transition:leave-start="opacity-100 scale-100"
- x-transition:leave-end="opacity-0 scale-95"
+ x-transition:enter="transition ease-out duration-150"
+ x-transition:enter-start="opacity-0"
+ x-transition:enter-end="opacity-100"
+ x-transition:leave="transition ease-in duration-100"
+ x-transition:leave-start="opacity-100"
+ x-transition:leave-end="opacity-0"
@endif
>
-
-
-
-
- @if($title)
-
{{ $title }}
- @endif
-
- @if($collapsible)
-
- @endif
- @if($dismissible)
-
- @endif
-
-
-
- {{ $slot }}
-
+
+
+ @if($title)
+
{{ $title }}
+ @endif
+
+ {{ $slot }}
+ @if($dismissible || $collapsible)
+
+ @if($collapsible)
+
+ @endif
+ @if($dismissible)
+
+ @endif
+
+ @endif
diff --git a/extensions/Servers/Proxmox/views/components/ui/allocation-card.blade.php b/extensions/Servers/Proxmox/views/components/ui/allocation-card.blade.php
index 09ae20d2e..a67c5e484 100644
--- a/extensions/Servers/Proxmox/views/components/ui/allocation-card.blade.php
+++ b/extensions/Servers/Proxmox/views/components/ui/allocation-card.blade.php
@@ -1,5 +1,5 @@
{{--
- Resource Allocation Card Component - TailServer Theme
+ Resource Allocation Card Component - shadcn-style
For displaying CPU, Memory, and other resource allocation vs entitlement
Usage:
@@ -26,26 +26,23 @@
'iconColor' => 'text-primary',
])
-
class(['group relative border border-neutral/20 rounded-xl p-4 bg-background hover:border-neutral/30 hover:shadow-sm transition-all duration-200']) }}>
- {{-- Subtle gradient overlay on hover --}}
-
-
-
+
class(['rounded-xl border bg-card p-4 shadow-sm transition-colors duration-150 hover:bg-accent/50']) }}>
+
@if($icon)
-
-
+
+
@endif
-
-
{{ $label }}
-
{{ $usageSummary }}
-
{{ $entitlementLabel }}
+
+
{{ $label }}
+
{{ $usageSummary }}
+
{{ $entitlementLabel }}
@if($badge)
-
+
{{ $badge['label'] ?? '' }}
@endif
@@ -54,12 +51,12 @@
@if(!is_null($percent))
- Usage
- {{ $percent }}%
+ Usage
+ {{ $percent }}%
-
+
@@ -67,7 +64,7 @@
@endif
@if($description)
-
{{ $description }}
+
{{ $description }}
@endif
diff --git a/extensions/Servers/Proxmox/views/components/ui/badge.blade.php b/extensions/Servers/Proxmox/views/components/ui/badge.blade.php
index c05cf0fe4..d1cfce2b1 100644
--- a/extensions/Servers/Proxmox/views/components/ui/badge.blade.php
+++ b/extensions/Servers/Proxmox/views/components/ui/badge.blade.php
@@ -1,5 +1,5 @@
{{--
- Badge Component - TailServer Theme
+ Badge Component - TailServer Theme (shadcn-inspired)
Usage:
Default
@@ -18,31 +18,31 @@
])
@php
- $baseClasses = 'inline-flex items-center font-semibold rounded-full transition-colors';
+ $baseClasses = 'inline-flex items-center rounded-md border font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2';
$variantClasses = [
- 'default' => $outline ? 'bg-transparent border border-neutral/30 text-base/70' : 'bg-neutral/10 text-base/70',
- 'primary' => $outline ? 'bg-transparent border border-primary/40 text-primary' : 'bg-primary/10 text-primary',
- 'secondary' => $outline ? 'bg-transparent border border-secondary/40 text-secondary' : 'bg-secondary/10 text-secondary',
- 'success' => $outline ? 'bg-transparent border border-success/40 text-success' : 'bg-success/10 text-success',
- 'warning' => $outline ? 'bg-transparent border border-warning/40 text-warning' : 'bg-warning/10 text-warning',
- 'danger' => $outline ? 'bg-transparent border border-danger/40 text-danger' : 'bg-danger/10 text-danger',
- 'info' => $outline ? 'bg-transparent border border-info/40 text-info' : 'bg-info/10 text-info',
- 'muted' => 'bg-neutral/5 text-base/40',
+ 'default' => 'border-transparent bg-primary text-primary-foreground shadow',
+ 'secondary' => 'border-transparent bg-secondary text-secondary-foreground',
+ 'success' => $outline ? 'border-success/40 text-success bg-transparent' : 'border-transparent bg-success/15 text-success',
+ 'warning' => $outline ? 'border-warning/40 text-warning bg-transparent' : 'border-transparent bg-warning/15 text-warning',
+ 'danger' => $outline ? 'border-danger/40 text-danger bg-transparent' : 'border-transparent bg-danger/15 text-danger',
+ 'info' => $outline ? 'border-info/40 text-info bg-transparent' : 'border-transparent bg-info/15 text-info',
+ 'outline' => 'text-foreground border-neutral/20',
+ 'muted' => 'border-transparent bg-muted text-muted-foreground',
];
$sizeClasses = [
- 'xs' => 'px-1.5 py-0.5 text-[10px] leading-tight',
- 'sm' => 'px-2 py-0.5 text-[11px] leading-tight',
- 'md' => 'px-2.5 py-1 text-xs',
- 'lg' => 'px-3 py-1.5 text-sm',
+ 'xs' => 'px-1.5 py-0.5 text-[10px]',
+ 'sm' => 'px-2 py-0.5 text-[11px]',
+ 'md' => 'px-2.5 py-0.5 text-xs',
+ 'lg' => 'px-3 py-1 text-sm',
];
$iconSizes = [
'xs' => 'size-2.5',
'sm' => 'size-3',
- 'md' => 'size-3.5',
- 'lg' => 'size-4',
+ 'md' => 'size-3',
+ 'lg' => 'size-3.5',
];
$dotSizes = [
@@ -62,7 +62,7 @@
$dotSize = $dotSizes[$size] ?? $dotSizes['md'];
@endphp
-class([$classes, 'gap-1.5' => $icon || $dot]) }}>
+class([$classes, 'gap-1' => $icon || $dot]) }}>
@if($dot)
@if($pulse)
@@ -72,7 +72,7 @@
@endif
@if($icon)
-
+
@endif
{{ $slot }}
diff --git a/extensions/Servers/Proxmox/views/components/ui/button.blade.php b/extensions/Servers/Proxmox/views/components/ui/button.blade.php
index 48da8425f..24f730e36 100644
--- a/extensions/Servers/Proxmox/views/components/ui/button.blade.php
+++ b/extensions/Servers/Proxmox/views/components/ui/button.blade.php
@@ -1,5 +1,5 @@
{{--
- Button Component - TailServer Theme
+ Button Component - TailServer Theme (shadcn-inspired)
Usage:
Click me
@@ -24,33 +24,36 @@
@php
$tag = $href ? 'a' : 'button';
- $baseClasses = 'group relative inline-flex items-center justify-center gap-2 rounded-lg font-semibold transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-background disabled:opacity-50 disabled:cursor-not-allowed overflow-hidden';
+ $baseClasses = 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50';
$variantClasses = [
- 'primary' => 'bg-primary text-white border border-primary hover:bg-primary/90 hover:shadow-md hover:shadow-primary/20 active:scale-[0.98] focus:ring-primary/50',
- 'secondary' => 'bg-background-secondary text-base border border-neutral/30 hover:bg-background-secondary/80 hover:border-neutral/50 active:scale-[0.98] focus:ring-neutral/30',
- 'outline' => 'bg-transparent text-base border border-neutral/30 hover:bg-neutral/10 hover:border-neutral/50 focus:ring-neutral/30',
- 'ghost' => 'bg-transparent text-base hover:bg-neutral/10 focus:ring-neutral/20',
- 'danger' => 'bg-danger text-white border border-danger hover:bg-danger/90 hover:shadow-md hover:shadow-danger/20 active:scale-[0.98] focus:ring-danger/50',
- 'success' => 'bg-success text-white border border-success hover:bg-success/90 hover:shadow-md hover:shadow-success/20 active:scale-[0.98] focus:ring-success/50',
- 'warning' => 'bg-warning text-white border border-warning hover:bg-warning/90 hover:shadow-md hover:shadow-warning/20 active:scale-[0.98] focus:ring-warning/50',
- 'info' => 'bg-info text-white border border-info hover:bg-info/90 hover:shadow-md hover:shadow-info/20 active:scale-[0.98] focus:ring-info/50',
+ 'primary' => 'bg-primary text-primary-foreground shadow hover:bg-primary/90',
+ 'secondary' => 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',
+ 'outline' => 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',
+ 'ghost' => 'hover:bg-accent hover:text-accent-foreground',
+ 'danger' => 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',
+ 'success' => 'bg-success text-white shadow-sm hover:bg-success/90',
+ 'warning' => 'bg-warning text-white shadow-sm hover:bg-warning/90',
+ 'info' => 'bg-info text-white shadow-sm hover:bg-info/90',
+ 'link' => 'text-primary underline-offset-4 hover:underline',
];
$sizeClasses = [
- 'xs' => 'px-2 py-1 text-xs',
- 'sm' => 'px-2.5 py-1.5 text-sm',
- 'md' => 'px-3.5 py-2 text-sm',
- 'lg' => 'px-4 py-2.5 text-base',
- 'xl' => 'px-5 py-3 text-lg',
+ 'xs' => 'h-7 px-2 text-xs',
+ 'sm' => 'h-8 px-3 text-xs',
+ 'md' => 'h-9 px-4 py-2',
+ 'lg' => 'h-10 px-8',
+ 'xl' => 'h-11 px-10 text-base',
+ 'icon' => 'h-9 w-9',
];
$iconSizes = [
'xs' => 'size-3',
'sm' => 'size-3.5',
'md' => 'size-4',
- 'lg' => 'size-5',
- 'xl' => 'size-6',
+ 'lg' => 'size-4',
+ 'xl' => 'size-5',
+ 'icon' => 'size-4',
];
$classes = collect([
@@ -69,24 +72,19 @@
@if($disabled || $loading) disabled @endif
{{ $attributes->class([$classes]) }}
>
- {{-- Subtle shine effect on hover --}}
-
-
-
- @if($loading)
-
- {{ $loadingText ?? $slot }}
- @else
- @if($icon)
-
- @endif
- {{ $slot }}
- @if($iconRight)
-
- @endif
+ @if($loading)
+
+ {{ $loadingText ?? $slot }}
+ @else
+ @if($icon)
+
@endif
-
+ {{ $slot }}
+ @if($iconRight)
+
+ @endif
+ @endif
{{ $tag }}>
diff --git a/extensions/Servers/Proxmox/views/components/ui/card.blade.php b/extensions/Servers/Proxmox/views/components/ui/card.blade.php
index 004c0e312..234593c9f 100644
--- a/extensions/Servers/Proxmox/views/components/ui/card.blade.php
+++ b/extensions/Servers/Proxmox/views/components/ui/card.blade.php
@@ -1,5 +1,5 @@
{{--
- Card Component - TailServer Theme
+ Card Component - TailServer Theme (shadcn-inspired)
Usage:
Content
@@ -22,42 +22,35 @@
'collapsed' => false,
])
-@php
- $cardClasses = 'relative flex flex-col rounded-xl border border-neutral/20 bg-background-secondary shadow-sm';
- if ($hover) {
- $cardClasses .= ' hover:bg-background-secondary/90 hover:border-neutral/30 hover:shadow-md transition-all duration-200';
- }
- if ($clickable) {
- $cardClasses .= ' cursor-pointer';
- }
-@endphp
-
class([$cardClasses]) }}
+ {{ $attributes->class([
+ 'flex flex-col gap-6 rounded-xl border border-neutral/15 bg-card text-card-foreground shadow-sm',
+ 'hover:shadow-md hover:border-neutral/25 transition-shadow duration-150' => $hover || $clickable,
+ 'cursor-pointer' => $clickable,
+ ]) }}
@if($collapsible)
x-data="{ isCollapsed: {{ $collapsed ? 'true' : 'false' }} }"
@endif
>
- {{-- Subtle gradient overlay for depth --}}
-
@if($title || $actions)
-
+