@@ -3,15 +3,81 @@ import { MessageModule } from 'primeng/message';
3
3
4
4
@Component ( {
5
5
selector : 'app-message' ,
6
- template : `
7
- <p-message
8
- [severity]="severity()"
9
- [text]="title()"
10
- />
11
- ` ,
6
+ template : ` <p-message [severity]="severity()" [text]="title()" /> ` ,
12
7
imports : [ MessageModule ] ,
13
8
} )
14
9
export class Message {
15
10
title = input . required < string > ( ) ;
16
11
severity = input . required < string > ( ) ;
17
12
}
13
+
14
+ @Component ( {
15
+ selector : 'app-empty-search-message' ,
16
+ template : `
17
+ <div
18
+ class="flex flex-col items-center justify-center py-12 px-6 text-center max-w-md mx-auto"
19
+ >
20
+ <div class="w-16 h-16 mb-4 text-gray-400">
21
+ <svg
22
+ viewBox="0 0 24 24"
23
+ fill="none"
24
+ stroke="currentColor"
25
+ stroke-width="2"
26
+ stroke-linecap="round"
27
+ stroke-linejoin="round"
28
+ >
29
+ <circle cx="11" cy="11" r="8"></circle>
30
+ <path d="m21 21-4.35-4.35"></path>
31
+ <path d="M16 11a5 5 0 1 1-10 0 5 5 0 0 1 10 0z"></path>
32
+ </svg>
33
+ </div>
34
+ <h3 class="text-lg font-semibold text-gray-800 mb-2">{{ title() }}</h3>
35
+ <p class="text-gray-600 mb-4">{{ description() }}</p>
36
+ <div class="flex flex-col sm:flex-row gap-2 text-sm text-gray-500">
37
+ <span>Try adjusting your search terms</span>
38
+ <span class="hidden sm:inline">•</span>
39
+ <span>or browse all events above</span>
40
+ </div>
41
+ </div>
42
+ ` ,
43
+ standalone : true ,
44
+ } )
45
+ export class EmptySearchMessage {
46
+ title = input . required < string > ( ) ;
47
+ description = input . required < string > ( ) ;
48
+ }
49
+
50
+ @Component ( {
51
+ selector : 'app-no-events-message' ,
52
+ template : `
53
+ <div
54
+ class="flex flex-col items-center justify-center py-16 px-6 text-center max-w-md mx-auto"
55
+ >
56
+ <div class="w-20 h-20 mb-4 text-gray-400">
57
+ <svg
58
+ viewBox="0 0 24 24"
59
+ fill="none"
60
+ stroke="currentColor"
61
+ stroke-width="2"
62
+ stroke-linecap="round"
63
+ stroke-linejoin="round"
64
+ >
65
+ <rect x="3" y="4" width="18" height="18" rx="2" ry="2"></rect>
66
+ <line x1="16" y1="2" x2="16" y2="6"></line>
67
+ <line x1="8" y1="2" x2="8" y2="6"></line>
68
+ <line x1="3" y1="10" x2="21" y2="10"></line>
69
+ </svg>
70
+ </div>
71
+ <h3 class="text-lg font-semibold text-gray-800 mb-2">{{ title() }}</h3>
72
+ <p class="text-gray-600 mb-4">{{ description() }}</p>
73
+ <div class="text-sm text-gray-500">
74
+ <span>Check back soon for upcoming Angular events!</span>
75
+ </div>
76
+ </div>
77
+ ` ,
78
+ standalone : true ,
79
+ } )
80
+ export class NoEventsMessage {
81
+ title = input . required < string > ( ) ;
82
+ description = input . required < string > ( ) ;
83
+ }
0 commit comments