File size: 1,935 Bytes
59bd45e | 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 | export enum Tab {
HOME = 'HOME',
RECORD = 'RECORD',
COMMUNITY = 'COMMUNITY',
MINE = 'MINE'
}
export enum MoodAction {
MOOD = 'MOOD',
INSPIRATION = 'INSPIRATION',
TODO = 'TODO'
}
export enum RecordSource {
MOOD = 'MOOD',
INSPIRATION = 'INSPIRATION',
VOICE = 'VOICE',
MANUAL = 'MANUAL'
}
export enum MoodType {
HAPPY = 'HAPPY', // Warm Pink/Coral
CALM = 'CALM', // Lavender
TIRED = 'TIRED', // Foggy Blue
ANXIOUS = 'ANXIOUS', // Warm Beige/Grey
HOPEFUL = 'HOPEFUL' // Creamy Yellow
}
export interface NavItem {
id: Tab;
label: string;
iconName: string;
}
export interface ActionItem {
id: MoodAction;
label: string;
iconName: string;
}
export interface RecordItem {
id: string;
content: string;
createdAt: number; // Unix timestamp
sourceType: RecordSource;
}
export interface CommunityPost {
id: string;
user: {
name: string;
avatarColor: string; // Tailwind bg class
};
content: string;
createdAt: number;
likeCount: number;
isLiked: boolean;
commentCount: number;
}
export interface Profile {
name: string;
birthday: string; // e.g., "Mar 12"
moodStatus: string;
avatarUrl?: string; // Optional image URL
}
export interface DeviceStatus {
isConnected: boolean;
batteryLevel: number; // 0-100
deviceName: string;
}
export interface MoodItem {
id: string;
type: MoodType;
date: number;
intensity: number; // 0-1 (affects size)
x?: number; // relative position percentage (optional for random placement)
y?: number; // relative position percentage
}
export interface InspirationItem {
id: string;
content: string;
createdAt: number;
tags?: string[];
}
export type TodoCategory = 'study' | 'work' | 'life' | 'health';
export interface TodoItem {
id: string;
title: string;
createdAt: number;
scheduledAt?: number;
isDone: boolean;
category?: TodoCategory;
location?: string;
time?: string;
} |