-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtypes.ts
More file actions
111 lines (100 loc) · 1.91 KB
/
types.ts
File metadata and controls
111 lines (100 loc) · 1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
export enum Section {
Home = 'home',
Chat = 'chat',
Tools = 'tools',
Events = 'events',
Shop = 'shop',
About = 'about',
Settings = 'settings',
Profile = 'profile',
MessageCenter = 'message_center'
}
export enum Language {
ZH = 'zh',
EN = 'en'
}
export enum Theme {
LIGHT = 'light',
DARK = 'dark'
}
export interface MessageEntry {
text: string;
sender: 'me' | 'them';
time: string;
image?: string;
isNotification?: boolean;
notifType?: 'system' | 'reward' | 'event' | 'security';
}
export interface MiniChat {
userId: string;
userName: string;
avatar: string;
isMinimized: boolean;
isOfficial?: boolean;
messages: MessageEntry[];
}
export interface PostComment {
id: string;
author: string;
avatar: string;
text: string;
time: string;
}
export interface Post {
id: string;
author: string;
authorLevel?: number;
isVerified?: boolean;
avatar: string;
content: string;
images: string[];
tools: string[];
prompt: string;
likes: number;
likedByMe?: boolean;
comments: number;
commentList?: PostComment[];
aiSummary?: string;
category: string;
rating?: number;
}
export interface Tool {
id: string;
name: string;
category: string;
rating: number;
reviews: number;
description: string;
icon: string;
trend: 'up' | 'down' | 'stable';
}
export interface ShopItem {
id: string;
name: string;
price: number;
image: string;
type: 'virtual' | 'physical';
description: string;
}
export interface Event {
id: string;
title: string;
date: string;
participants: number;
reward: string;
image: string;
type: string;
description: string;
rules: string[];
prizes: { title: string; reward: string }[];
isJoined?: boolean;
}
export interface NotificationItem {
id: string;
type: 'system' | 'reward' | 'event' | 'security';
title: string;
content: string;
time: string;
read: boolean;
actionLabel?: string;
}