|
11 | 11 | </p> |
12 | 12 | </div> |
13 | 13 | <div class="flex items-center space-x-3"> |
14 | | - <a href="{{ route('customer.showcase.index') }}" class="inline-flex items-center px-4 py-2 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"> |
15 | | - Showcase |
16 | | - </a> |
17 | | - <a href="{{ route('customer.integrations') }}" class="inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"> |
18 | | - Integrations |
| 14 | + <a href="{{ route('customer.plugins.index') }}" class="inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"> |
| 15 | + <x-icons.puzzle class="mr-2 -ml-1 size-4" /> |
| 16 | + Plugins |
19 | 17 | </a> |
20 | 18 | <a href="{{ route('customer.plugins.index') }}" class="inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"> |
21 | 19 | <x-icons.puzzle class="mr-2 -ml-1 size-4" /> |
22 | 20 | Plugins |
23 | 21 | </a> |
24 | 22 | <a href="{{ route('customer.billing-portal') }}" class="inline-flex items-center px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-md shadow-sm text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 hover:bg-gray-50 dark:hover:bg-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"> |
25 | | - Manage Subscription |
| 23 | + Manage Your Subscription |
26 | 24 | </a> |
27 | 25 | </div> |
28 | 26 | </div> |
29 | 27 | </div> |
30 | 28 | </header> |
31 | 29 |
|
32 | | - {{-- Banners --}} |
33 | | - <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 mb-6"> |
34 | | - <div class="grid grid-cols-1 lg:grid-cols-2 gap-6"> |
35 | | - @if(auth()->user()->hasActualLicense()) |
36 | | - <x-discounts-banner :inline="true" /> |
37 | | - @endif |
38 | | - <livewire:wall-of-love-banner :inline="true" /> |
39 | | - </div> |
40 | | - </div> |
| 30 | + {{-- Wall of Love Callout for Early Adopters --}} |
| 31 | + <livewire:wall-of-love-banner /> |
| 32 | + |
| 33 | + <x-discounts-banner /> |
41 | 34 |
|
42 | 35 | {{-- Content --}} |
43 | 36 | <div class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8"> |
44 | | - {{-- Flash Messages --}} |
45 | | - @if(session()->has('success')) |
46 | | - <div class="bg-green-50 dark:bg-green-900/20 border border-green-200 dark:border-green-700 rounded-lg p-4 mb-6"> |
47 | | - <div class="flex items-center"> |
48 | | - <svg class="h-5 w-5 text-green-600 dark:text-green-400 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"> |
49 | | - <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path> |
50 | | - </svg> |
51 | | - <p class="text-sm text-green-700 dark:text-green-300">{{ session('success') }}</p> |
52 | | - </div> |
53 | | - </div> |
54 | | - @endif |
55 | | - |
56 | | - @if(session()->has('error')) |
57 | | - <div class="bg-red-50 dark:bg-red-900/20 border border-red-200 dark:border-red-700 rounded-lg p-4 mb-6"> |
58 | | - <div class="flex items-center"> |
59 | | - <svg class="h-5 w-5 text-red-600 dark:text-red-400 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24"> |
60 | | - <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path> |
61 | | - </svg> |
62 | | - <p class="text-sm text-red-700 dark:text-red-300">{{ session('error') }}</p> |
63 | | - </div> |
64 | | - </div> |
65 | | - @endif |
66 | | - |
67 | 37 | @if($licenses->count() > 0) |
68 | 38 | <div class="bg-white dark:bg-gray-800 shadow overflow-hidden sm:rounded-md"> |
69 | 39 | <ul class="divide-y divide-gray-200 dark:divide-gray-700"> |
|
159 | 129 | @endforeach |
160 | 130 | </ul> |
161 | 131 | </div> |
162 | | - @endif |
163 | | - |
164 | | - {{-- Assigned Sub-Licenses --}} |
165 | | - @if($assignedSubLicenses->count() > 0) |
166 | | - <div class="mt-8"> |
167 | | - <h2 class="text-lg font-medium text-gray-900 dark:text-white mb-4">Assigned Sub-Licenses</h2> |
168 | | - <div class="bg-white dark:bg-gray-800 shadow overflow-hidden sm:rounded-md"> |
169 | | - <ul class="divide-y divide-gray-200 dark:divide-gray-700"> |
170 | | - @foreach($assignedSubLicenses as $subLicense) |
171 | | - <li> |
172 | | - <div class="px-4 py-4 sm:px-6"> |
173 | | - <div class="flex items-center justify-between"> |
174 | | - <div class="flex items-center"> |
175 | | - <div class="flex-shrink-0"> |
176 | | - @if($subLicense->is_suspended) |
177 | | - <div class="w-3 h-3 bg-red-400 rounded-full"></div> |
178 | | - @elseif($subLicense->expires_at && $subLicense->expires_at->isPast()) |
179 | | - <div class="w-3 h-3 bg-yellow-400 rounded-full"></div> |
180 | | - @else |
181 | | - <div class="w-3 h-3 bg-green-400 rounded-full"></div> |
182 | | - @endif |
183 | | - </div> |
184 | | - <div class="ml-4"> |
185 | | - <div class="flex items-start"> |
186 | | - <div class="flex flex-col"> |
187 | | - <p class="text-sm font-medium text-blue-600 dark:text-blue-400 truncate"> |
188 | | - {{ $subLicense->parentLicense->policy_name ?? 'Sub-License' }} |
189 | | - </p> |
190 | | - <p class="text-xs text-gray-500 dark:text-gray-400"> |
191 | | - Sub-license |
192 | | - </p> |
193 | | - </div> |
194 | | - @if($subLicense->is_suspended) |
195 | | - <span class="ml-2 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200"> |
196 | | - Suspended |
197 | | - </span> |
198 | | - @elseif($subLicense->expires_at && $subLicense->expires_at->isPast()) |
199 | | - <span class="ml-2 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200"> |
200 | | - Expired |
201 | | - </span> |
202 | | - @else |
203 | | - <span class="ml-2 inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-200"> |
204 | | - Active |
205 | | - </span> |
206 | | - @endif |
207 | | - </div> |
208 | | - <p class="mt-1 text-sm text-gray-500 dark:text-gray-400 font-mono"> |
209 | | - {{ $subLicense->key }} |
210 | | - </p> |
211 | | - </div> |
212 | | - </div> |
213 | | - <div class="flex flex-col items-end"> |
214 | | - <p class="text-sm text-gray-900 dark:text-white"> |
215 | | - @if($subLicense->expires_at) |
216 | | - Expires {{ $subLicense->expires_at->format('M j, Y') }} |
217 | | - @else |
218 | | - No expiration |
219 | | - @endif |
220 | | - </p> |
221 | | - <p class="text-xs text-gray-500 dark:text-gray-400"> |
222 | | - Assigned {{ $subLicense->created_at->format('M j, Y') }} |
223 | | - </p> |
224 | | - </div> |
225 | | - </div> |
226 | | - </div> |
227 | | - </li> |
228 | | - @endforeach |
229 | | - </ul> |
230 | | - </div> |
231 | | - </div> |
232 | | - @endif |
233 | | - |
234 | | - @if($licenses->count() === 0 && $assignedSubLicenses->count() === 0) |
| 132 | + @else |
235 | 133 | <div class="text-center"> |
236 | 134 | <div class="bg-white dark:bg-gray-800 shadow sm:rounded-lg p-6"> |
237 | 135 | <h3 class="mt-2 text-sm font-medium text-gray-900 dark:text-white">No licenses found</h3> |
|
0 commit comments