Media Library - v1.1.0
Glass Effects
The Media Library v1.1 integrates with livewire-ui-components v2.0 to provide modern glassmorphism (glass) effects for cards, modals, and overlays.
Overview
Glass effects create a frosted glass appearance with:
- Semi-transparent backgrounds
- Backdrop blur
- Subtle borders
- Modern aesthetic
Basic Usage
Cards with Glass Effect
<x-artisanpack-card :glass="true">
Content with glass styling
</x-artisanpack-card>
Stats with Glass Effect
<x-artisanpack-stat
title="Total Media"
:value="$count"
:glass="true"
/>
Media Statistics Dashboard
<livewire:media-statistics :glass="true" />
Configuration
Configure glass effects in config/artisanpack.php:
'media' => [
'ui' => [
'glass_effects' => [
'enabled' => true,
'card_overlay' => [
'blur' => 'md',
'opacity' => 80,
],
'modal_backdrop' => [
'blur' => 'sm',
'opacity' => 50,
],
],
],
],
Options
enabled
Enable or disable glass effects globally:
'glass_effects' => [
'enabled' => env('MEDIA_GLASS_EFFECTS', true),
],
card_overlay.blur
Blur intensity for card overlays:
| Value | Effect |
|---|---|
sm |
Subtle blur (4px) |
md |
Medium blur (12px) - default |
lg |
Strong blur (16px) |
xl |
Very strong blur (24px) |
2xl |
Maximum blur (40px) |
'card_overlay' => [
'blur' => 'lg',
],
card_overlay.opacity
Background opacity (0-100):
'card_overlay' => [
'opacity' => 80, // 80% opaque
],
Lower values = more transparent, higher values = more opaque.
modal_backdrop.blur
Blur intensity for modal backdrops:
'modal_backdrop' => [
'blur' => 'sm',
],
modal_backdrop.opacity
Modal backdrop opacity:
'modal_backdrop' => [
'opacity' => 50, // 50% opaque
],
Programmatic Control
Runtime Configuration
Override settings at runtime:
config([
'artisanpack.media.ui.glass_effects.enabled' => false,
]);
Component-Level Control
Override per-component:
{{-- Enable glass on a specific card --}}
<x-artisanpack-card :glass="true">
Glass enabled
</x-artisanpack-card>
{{-- Disable glass on a specific card --}}
<x-artisanpack-card :glass="false">
Glass disabled
</x-artisanpack-card>
Custom Glass Classes
Apply custom glass styling:
<div class="glass-custom">
Custom glass container
</div>
.glass-custom {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(16px);
-webkit-backdrop-filter: blur(16px);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 1rem;
}
Best Practices
Background Requirements
Glass effects work best with colorful backgrounds:
{{-- Good: Gradient background --}}
<div class="bg-gradient-to-br from-primary/30 to-secondary/30 p-6">
<livewire:media-statistics :glass="true" />
</div>
{{-- Good: Image background --}}
<div class="relative">
<img src="/hero.jpg" class="absolute inset-0 w-full h-full object-cover" />
<div class="relative z-10 p-6">
<livewire:media-statistics :glass="true" />
</div>
</div>
{{-- Less effective: Solid white background --}}
<div class="bg-white p-6">
<livewire:media-statistics :glass="true" />
</div>
Contrast for Readability
Ensure text remains readable:
{{-- Add text shadow for better readability --}}
<x-artisanpack-card :glass="true" class="text-shadow">
<h2 class="text-white drop-shadow-lg">Title</h2>
<p class="text-white/90 drop-shadow">Content</p>
</x-artisanpack-card>
Performance
Glass effects use backdrop-filter which can impact performance on older devices:
{{-- Conditionally disable on low-powered devices --}}
@if(!$isLowPowerDevice)
<livewire:media-statistics :glass="true" />
@else
<livewire:media-statistics :glass="false" />
@endif
Browser Support
backdrop-filter is supported in:
- Chrome 76+
- Firefox 103+
- Safari 9+
- Edge 79+
For unsupported browsers, the component falls back to a semi-transparent solid background.
Styling Examples
Dashboard with Glass Cards
<div class="min-h-screen bg-gradient-to-br from-indigo-500 via-purple-500 to-pink-500 p-8">
<h1 class="text-3xl font-bold text-white mb-8">Media Dashboard</h1>
<livewire:media-statistics
:glass="true"
:show-sparklines="true"
/>
</div>
Modal with Glass Backdrop
<x-artisanpack-modal
wire:model="showModal"
:glass-backdrop="true"
:backdrop-blur="'md'"
:backdrop-opacity="60"
>
<x-slot:title>Select Media</x-slot:title>
...
</x-artisanpack-modal>
Card Overlay on Media Grid
<div class="relative group">
<img src="{{ $media->thumbnail_url }}" class="w-full aspect-square object-cover" />
<div class="absolute inset-0 opacity-0 group-hover:opacity-100 transition-opacity">
<x-artisanpack-card :glass="true" class="absolute bottom-0 left-0 right-0 m-2">
<p class="text-white text-sm truncate">{{ $media->title }}</p>
</x-artisanpack-card>
</div>
</div>
Dark Mode Support
<x-artisanpack-card
:glass="true"
class="bg-white/10 dark:bg-black/20"
>
Content adapts to dark mode
</x-artisanpack-card>
Customizing via CSS
Override default glass styles:
/* Custom glass effect */
[data-glass="true"] {
--glass-blur: 20px;
--glass-opacity: 0.15;
--glass-border-opacity: 0.25;
background: rgba(255, 255, 255, var(--glass-opacity));
backdrop-filter: blur(var(--glass-blur));
border: 1px solid rgba(255, 255, 255, var(--glass-border-opacity));
}
/* Stronger glass for headers */
.glass-strong {
--glass-opacity: 0.25;
--glass-blur: 24px;
}
/* Subtle glass for overlays */
.glass-subtle {
--glass-opacity: 0.08;
--glass-blur: 8px;
}
Tailwind CSS Integration
Use Tailwind's backdrop utilities directly:
<div class="bg-white/10 backdrop-blur-md border border-white/20 rounded-xl p-4">
Manual glass effect with Tailwind
</div>
Next Steps
- Media Statistics - KPI dashboard component
- Configuration - All UI options
- Customization - General customization guide