@nice2dev/ui-tools 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -0
- package/dist/access-control.d.ts +726 -0
- package/dist/access-control.d.ts.map +1 -0
- package/dist/accessibility-i18n.d.ts +1017 -0
- package/dist/accessibility-i18n.d.ts.map +1 -0
- package/dist/ai-assistant.d.ts +263 -0
- package/dist/ai-assistant.d.ts.map +1 -0
- package/dist/ai-playgrounds.d.ts +842 -0
- package/dist/ai-playgrounds.d.ts.map +1 -0
- package/dist/alerting-incidents.d.ts +558 -0
- package/dist/alerting-incidents.d.ts.map +1 -0
- package/dist/api-designer.d.ts +1568 -0
- package/dist/api-designer.d.ts.map +1 -0
- package/dist/api-testing.d.ts +1146 -0
- package/dist/api-testing.d.ts.map +1 -0
- package/dist/apm-profiling.d.ts +656 -0
- package/dist/apm-profiling.d.ts.map +1 -0
- package/dist/artifacts.d.ts +421 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/audit-compliance.d.ts +752 -0
- package/dist/audit-compliance.d.ts.map +1 -0
- package/dist/certificates.d.ts +256 -0
- package/dist/certificates.d.ts.map +1 -0
- package/dist/chart-builder.d.ts +1404 -0
- package/dist/chart-builder.d.ts.map +1 -0
- package/dist/cloud-instances.d.ts +169 -0
- package/dist/cloud-instances.d.ts.map +1 -0
- package/dist/config-management.d.ts +350 -0
- package/dist/config-management.d.ts.map +1 -0
- package/dist/containers.d.ts +256 -0
- package/dist/containers.d.ts.map +1 -0
- package/dist/dashboard-designer.d.ts +1238 -0
- package/dist/dashboard-designer.d.ts.map +1 -0
- package/dist/data-management.d.ts +496 -0
- package/dist/data-management.d.ts.map +1 -0
- package/dist/data-pipeline.d.ts +1105 -0
- package/dist/data-pipeline.d.ts.map +1 -0
- package/dist/data-warehouse.d.ts +1097 -0
- package/dist/data-warehouse.d.ts.map +1 -0
- package/dist/dataset-management.d.ts +782 -0
- package/dist/dataset-management.d.ts.map +1 -0
- package/dist/db-adapters.d.ts +704 -0
- package/dist/db-adapters.d.ts.map +1 -0
- package/dist/db-admin.d.ts +699 -0
- package/dist/db-admin.d.ts.map +1 -0
- package/dist/db-designer.d.ts +366 -0
- package/dist/db-designer.d.ts.map +1 -0
- package/dist/debugger.d.ts +356 -0
- package/dist/debugger.d.ts.map +1 -0
- package/dist/device-management.d.ts +871 -0
- package/dist/device-management.d.ts.map +1 -0
- package/dist/distributed-tracing.d.ts +427 -0
- package/dist/distributed-tracing.d.ts.map +1 -0
- package/dist/dns-management.d.ts +215 -0
- package/dist/dns-management.d.ts.map +1 -0
- package/dist/download-manager.d.ts +271 -0
- package/dist/download-manager.d.ts.map +1 -0
- package/dist/download-torrent.d.ts +1062 -0
- package/dist/download-torrent.d.ts.map +1 -0
- package/dist/edge-computing.d.ts +720 -0
- package/dist/edge-computing.d.ts.map +1 -0
- package/dist/education.d.ts +1135 -0
- package/dist/education.d.ts.map +1 -0
- package/dist/email-template.d.ts +1141 -0
- package/dist/email-template.d.ts.map +1 -0
- package/dist/erp-enterprise.d.ts +1270 -0
- package/dist/erp-enterprise.d.ts.map +1 -0
- package/dist/form-builder.d.ts +1117 -0
- package/dist/form-builder.d.ts.map +1 -0
- package/dist/game-engine-advanced.d.ts +1049 -0
- package/dist/game-engine-advanced.d.ts.map +1 -0
- package/dist/git.d.ts +415 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/hardware-integration.d.ts +966 -0
- package/dist/hardware-integration.d.ts.map +1 -0
- package/dist/iac.d.ts +318 -0
- package/dist/iac.d.ts.map +1 -0
- package/dist/icon-tools.d.ts +1023 -0
- package/dist/icon-tools.d.ts.map +1 -0
- package/dist/ide.d.ts +322 -0
- package/dist/ide.d.ts.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +176 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +1887 -0
- package/dist/index.mjs.map +1 -0
- package/dist/integration-platform.d.ts +857 -0
- package/dist/integration-platform.d.ts.map +1 -0
- package/dist/kubernetes.d.ts +278 -0
- package/dist/kubernetes.d.ts.map +1 -0
- package/dist/life-management.d.ts +1132 -0
- package/dist/life-management.d.ts.map +1 -0
- package/dist/log-management.d.ts +473 -0
- package/dist/log-management.d.ts.map +1 -0
- package/dist/mathematics.d.ts +870 -0
- package/dist/mathematics.d.ts.map +1 -0
- package/dist/message-queue.d.ts +1006 -0
- package/dist/message-queue.d.ts.map +1 -0
- package/dist/metrics-dashboard.d.ts +596 -0
- package/dist/metrics-dashboard.d.ts.map +1 -0
- package/dist/mobile-components.d.ts +766 -0
- package/dist/mobile-components.d.ts.map +1 -0
- package/dist/model-deployment.d.ts +787 -0
- package/dist/model-deployment.d.ts.map +1 -0
- package/dist/model-registry.d.ts +740 -0
- package/dist/model-registry.d.ts.map +1 -0
- package/dist/model-training.d.ts +706 -0
- package/dist/model-training.d.ts.map +1 -0
- package/dist/network-config.d.ts +334 -0
- package/dist/network-config.d.ts.map +1 -0
- package/dist/network-monitoring.d.ts +291 -0
- package/dist/network-monitoring.d.ts.map +1 -0
- package/dist/pdf-tools.d.ts +1003 -0
- package/dist/pdf-tools.d.ts.map +1 -0
- package/dist/pipelines.d.ts +250 -0
- package/dist/pipelines.d.ts.map +1 -0
- package/dist/remote-desktop.d.ts +207 -0
- package/dist/remote-desktop.d.ts.map +1 -0
- package/dist/report-designer.d.ts +1153 -0
- package/dist/report-designer.d.ts.map +1 -0
- package/dist/scada-industrial.d.ts +848 -0
- package/dist/scada-industrial.d.ts.map +1 -0
- package/dist/scientific-research.d.ts +1149 -0
- package/dist/scientific-research.d.ts.map +1 -0
- package/dist/secret-management.d.ts +617 -0
- package/dist/secret-management.d.ts.map +1 -0
- package/dist/security-scanning.d.ts +714 -0
- package/dist/security-scanning.d.ts.map +1 -0
- package/dist/self-service-analytics.d.ts +1208 -0
- package/dist/self-service-analytics.d.ts.map +1 -0
- package/dist/sensor-dashboard.d.ts +845 -0
- package/dist/sensor-dashboard.d.ts.map +1 -0
- package/dist/server-management.d.ts +331 -0
- package/dist/server-management.d.ts.map +1 -0
- package/dist/smart-home.d.ts +861 -0
- package/dist/smart-home.d.ts.map +1 -0
- package/dist/spreadsheet.d.ts +1043 -0
- package/dist/spreadsheet.d.ts.map +1 -0
- package/dist/sql-editor.d.ts +402 -0
- package/dist/sql-editor.d.ts.map +1 -0
- package/dist/terminal.d.ts +245 -0
- package/dist/terminal.d.ts.map +1 -0
- package/dist/testing-qa.d.ts +1013 -0
- package/dist/testing-qa.d.ts.map +1 -0
- package/dist/torrent-client.d.ts +298 -0
- package/dist/torrent-client.d.ts.map +1 -0
- package/dist/traceless.d.ts +759 -0
- package/dist/traceless.d.ts.map +1 -0
- package/dist/virtual-machines.d.ts +199 -0
- package/dist/virtual-machines.d.ts.map +1 -0
- package/dist/visual-scripting.d.ts +381 -0
- package/dist/visual-scripting.d.ts.map +1 -0
- package/dist/word-processor.d.ts +1124 -0
- package/dist/word-processor.d.ts.map +1 -0
- package/dist/workspace.d.ts +333 -0
- package/dist/workspace.d.ts.map +1 -0
- package/package.json +62 -0
|
@@ -0,0 +1,1132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file life-management.ts
|
|
3
|
+
* @module @nice2dev/ui-tools
|
|
4
|
+
* @description PRO-27 — Life Management / Personal ERP
|
|
5
|
+
*
|
|
6
|
+
* Types for personal finance, tasks/goals, health/fitness,
|
|
7
|
+
* knowledge/learning, family/home, and social/relationships.
|
|
8
|
+
*/
|
|
9
|
+
/** Currency information */
|
|
10
|
+
export interface PersonalCurrency {
|
|
11
|
+
code: string;
|
|
12
|
+
symbol: string;
|
|
13
|
+
name: string;
|
|
14
|
+
}
|
|
15
|
+
/** Frequency */
|
|
16
|
+
export type Frequency = 'daily' | 'weekly' | 'biweekly' | 'monthly' | 'quarterly' | 'yearly' | 'once';
|
|
17
|
+
/** Reminder */
|
|
18
|
+
export interface Reminder {
|
|
19
|
+
id: string;
|
|
20
|
+
type: ReminderType;
|
|
21
|
+
time: Date;
|
|
22
|
+
message?: string;
|
|
23
|
+
notificationChannels?: NotificationChannel[];
|
|
24
|
+
}
|
|
25
|
+
/** Reminder type */
|
|
26
|
+
export type ReminderType = 'alert' | 'email' | 'push' | 'sms';
|
|
27
|
+
/** Notification channel */
|
|
28
|
+
export type NotificationChannel = 'app' | 'email' | 'sms' | 'push';
|
|
29
|
+
/** Attachment */
|
|
30
|
+
export interface Attachment {
|
|
31
|
+
id: string;
|
|
32
|
+
name: string;
|
|
33
|
+
type: string;
|
|
34
|
+
url: string;
|
|
35
|
+
size?: number;
|
|
36
|
+
uploadedAt: Date;
|
|
37
|
+
}
|
|
38
|
+
/** Personal budget config */
|
|
39
|
+
export interface PersonalBudgetConfig {
|
|
40
|
+
currency: string;
|
|
41
|
+
startOfMonth?: number;
|
|
42
|
+
budgetMethod: BudgetMethod;
|
|
43
|
+
categories: BudgetCategory[];
|
|
44
|
+
envelopes?: BudgetEnvelope[];
|
|
45
|
+
savingsGoals?: SavingsGoal[];
|
|
46
|
+
}
|
|
47
|
+
/** Budget method */
|
|
48
|
+
export type BudgetMethod = 'traditional' | 'envelope' | 'zero_based' | '50_30_20';
|
|
49
|
+
/** Budget category */
|
|
50
|
+
export interface BudgetCategory {
|
|
51
|
+
id: string;
|
|
52
|
+
name: string;
|
|
53
|
+
type: CategoryType;
|
|
54
|
+
icon?: string;
|
|
55
|
+
color?: string;
|
|
56
|
+
parentId?: string;
|
|
57
|
+
budgetAmount?: number;
|
|
58
|
+
isRecurring?: boolean;
|
|
59
|
+
}
|
|
60
|
+
/** Category type */
|
|
61
|
+
export type CategoryType = 'income' | 'expense' | 'transfer' | 'savings';
|
|
62
|
+
/** Budget envelope */
|
|
63
|
+
export interface BudgetEnvelope {
|
|
64
|
+
id: string;
|
|
65
|
+
name: string;
|
|
66
|
+
budgeted: number;
|
|
67
|
+
spent: number;
|
|
68
|
+
available: number;
|
|
69
|
+
color?: string;
|
|
70
|
+
}
|
|
71
|
+
/** Savings goal */
|
|
72
|
+
export interface SavingsGoal {
|
|
73
|
+
id: string;
|
|
74
|
+
name: string;
|
|
75
|
+
targetAmount: number;
|
|
76
|
+
currentAmount: number;
|
|
77
|
+
targetDate?: Date;
|
|
78
|
+
contributions?: SavingsContribution[];
|
|
79
|
+
icon?: string;
|
|
80
|
+
color?: string;
|
|
81
|
+
}
|
|
82
|
+
/** Savings contribution */
|
|
83
|
+
export interface SavingsContribution {
|
|
84
|
+
date: Date;
|
|
85
|
+
amount: number;
|
|
86
|
+
note?: string;
|
|
87
|
+
}
|
|
88
|
+
/** Expense entry */
|
|
89
|
+
export interface ExpenseEntry {
|
|
90
|
+
id: string;
|
|
91
|
+
date: Date;
|
|
92
|
+
amount: number;
|
|
93
|
+
currency: string;
|
|
94
|
+
category: string;
|
|
95
|
+
description?: string;
|
|
96
|
+
payee?: string;
|
|
97
|
+
paymentMethod?: PaymentMethodType;
|
|
98
|
+
receipt?: Attachment;
|
|
99
|
+
tags?: string[];
|
|
100
|
+
location?: string;
|
|
101
|
+
isRecurring?: boolean;
|
|
102
|
+
recurringId?: string;
|
|
103
|
+
}
|
|
104
|
+
/** Payment method type */
|
|
105
|
+
export type PaymentMethodType = 'cash' | 'debit_card' | 'credit_card' | 'bank_transfer' | 'mobile_payment' | 'check' | 'crypto';
|
|
106
|
+
/** Recurring expense */
|
|
107
|
+
export interface RecurringExpense {
|
|
108
|
+
id: string;
|
|
109
|
+
name: string;
|
|
110
|
+
amount: number;
|
|
111
|
+
currency: string;
|
|
112
|
+
category: string;
|
|
113
|
+
frequency: Frequency;
|
|
114
|
+
nextDueDate: Date;
|
|
115
|
+
payee?: string;
|
|
116
|
+
autoPay?: boolean;
|
|
117
|
+
reminders?: Reminder[];
|
|
118
|
+
}
|
|
119
|
+
/** Investment account */
|
|
120
|
+
export interface InvestmentAccount {
|
|
121
|
+
id: string;
|
|
122
|
+
name: string;
|
|
123
|
+
type: InvestmentAccountType;
|
|
124
|
+
institution: string;
|
|
125
|
+
balance: number;
|
|
126
|
+
currency: string;
|
|
127
|
+
holdings: InvestmentHolding[];
|
|
128
|
+
taxAdvantaged?: boolean;
|
|
129
|
+
}
|
|
130
|
+
/** Investment account type */
|
|
131
|
+
export type InvestmentAccountType = 'brokerage' | 'retirement_401k' | 'retirement_ira' | 'pension' | 'hsa' | 'education_529' | 'crypto_wallet';
|
|
132
|
+
/** Investment holding */
|
|
133
|
+
export interface InvestmentHolding {
|
|
134
|
+
id: string;
|
|
135
|
+
symbol: string;
|
|
136
|
+
name: string;
|
|
137
|
+
type: AssetType;
|
|
138
|
+
quantity: number;
|
|
139
|
+
costBasis: number;
|
|
140
|
+
currentPrice: number;
|
|
141
|
+
currentValue: number;
|
|
142
|
+
gain: number;
|
|
143
|
+
gainPercent: number;
|
|
144
|
+
lots?: TaxLot[];
|
|
145
|
+
}
|
|
146
|
+
/** Asset type */
|
|
147
|
+
export type AssetType = 'stock' | 'etf' | 'mutual_fund' | 'bond' | 'crypto' | 'real_estate' | 'commodity' | 'cash';
|
|
148
|
+
/** Tax lot */
|
|
149
|
+
export interface TaxLot {
|
|
150
|
+
id: string;
|
|
151
|
+
purchaseDate: Date;
|
|
152
|
+
quantity: number;
|
|
153
|
+
costBasis: number;
|
|
154
|
+
isLongTerm?: boolean;
|
|
155
|
+
}
|
|
156
|
+
/** Dividend entry */
|
|
157
|
+
export interface DividendEntry {
|
|
158
|
+
id: string;
|
|
159
|
+
date: Date;
|
|
160
|
+
symbol: string;
|
|
161
|
+
amount: number;
|
|
162
|
+
type: 'qualified' | 'ordinary';
|
|
163
|
+
reinvested?: boolean;
|
|
164
|
+
}
|
|
165
|
+
/** Bill */
|
|
166
|
+
export interface Bill {
|
|
167
|
+
id: string;
|
|
168
|
+
name: string;
|
|
169
|
+
amount: number;
|
|
170
|
+
currency: string;
|
|
171
|
+
dueDate: Date;
|
|
172
|
+
frequency: Frequency;
|
|
173
|
+
category: string;
|
|
174
|
+
payee: string;
|
|
175
|
+
account?: string;
|
|
176
|
+
autoPay?: boolean;
|
|
177
|
+
status: BillStatus;
|
|
178
|
+
reminders?: Reminder[];
|
|
179
|
+
history?: BillPayment[];
|
|
180
|
+
}
|
|
181
|
+
/** Bill status */
|
|
182
|
+
export type BillStatus = 'upcoming' | 'due' | 'overdue' | 'paid';
|
|
183
|
+
/** Bill payment */
|
|
184
|
+
export interface BillPayment {
|
|
185
|
+
date: Date;
|
|
186
|
+
amount: number;
|
|
187
|
+
confirmationNumber?: string;
|
|
188
|
+
}
|
|
189
|
+
/** Net worth snapshot */
|
|
190
|
+
export interface NetWorthSnapshot {
|
|
191
|
+
date: Date;
|
|
192
|
+
assets: NetWorthAssets;
|
|
193
|
+
liabilities: NetWorthLiabilities;
|
|
194
|
+
netWorth: number;
|
|
195
|
+
}
|
|
196
|
+
/** Net worth assets */
|
|
197
|
+
export interface NetWorthAssets {
|
|
198
|
+
cash: number;
|
|
199
|
+
investments: number;
|
|
200
|
+
realEstate: number;
|
|
201
|
+
vehicles: number;
|
|
202
|
+
personalProperty: number;
|
|
203
|
+
other: number;
|
|
204
|
+
total: number;
|
|
205
|
+
}
|
|
206
|
+
/** Net worth liabilities */
|
|
207
|
+
export interface NetWorthLiabilities {
|
|
208
|
+
mortgage: number;
|
|
209
|
+
carLoans: number;
|
|
210
|
+
studentLoans: number;
|
|
211
|
+
creditCards: number;
|
|
212
|
+
personalLoans: number;
|
|
213
|
+
other: number;
|
|
214
|
+
total: number;
|
|
215
|
+
}
|
|
216
|
+
/** Debt */
|
|
217
|
+
export interface Debt {
|
|
218
|
+
id: string;
|
|
219
|
+
name: string;
|
|
220
|
+
type: DebtType;
|
|
221
|
+
principal: number;
|
|
222
|
+
currentBalance: number;
|
|
223
|
+
interestRate: number;
|
|
224
|
+
minimumPayment: number;
|
|
225
|
+
dueDate: number;
|
|
226
|
+
payoffDate?: Date;
|
|
227
|
+
extraPayment?: number;
|
|
228
|
+
}
|
|
229
|
+
/** Debt type */
|
|
230
|
+
export type DebtType = 'mortgage' | 'car_loan' | 'student_loan' | 'credit_card' | 'personal_loan' | 'medical' | 'other';
|
|
231
|
+
/** Debt payoff strategy */
|
|
232
|
+
export type DebtPayoffStrategy = 'snowball' | 'avalanche' | 'hybrid';
|
|
233
|
+
/** Retirement plan */
|
|
234
|
+
export interface RetirementPlan {
|
|
235
|
+
currentAge: number;
|
|
236
|
+
retirementAge: number;
|
|
237
|
+
lifeExpectancy: number;
|
|
238
|
+
currentSavings: number;
|
|
239
|
+
monthlyContribution: number;
|
|
240
|
+
expectedReturn: number;
|
|
241
|
+
inflationRate: number;
|
|
242
|
+
desiredMonthlyIncome: number;
|
|
243
|
+
socialSecurityBenefit?: number;
|
|
244
|
+
pensionBenefit?: number;
|
|
245
|
+
projectedNestEgg?: number;
|
|
246
|
+
projectedShortfall?: number;
|
|
247
|
+
}
|
|
248
|
+
/** Tax document */
|
|
249
|
+
export interface TaxDocument {
|
|
250
|
+
id: string;
|
|
251
|
+
year: number;
|
|
252
|
+
type: TaxDocumentType;
|
|
253
|
+
name: string;
|
|
254
|
+
attachment?: Attachment;
|
|
255
|
+
receivedDate?: Date;
|
|
256
|
+
dueDate?: Date;
|
|
257
|
+
status: TaxDocumentStatus;
|
|
258
|
+
}
|
|
259
|
+
/** Tax document type */
|
|
260
|
+
export type TaxDocumentType = 'w2' | '1099' | 'k1' | 'mortgage_interest' | 'charitable_donation' | 'medical_expense' | 'property_tax' | 'other';
|
|
261
|
+
/** Tax document status */
|
|
262
|
+
export type TaxDocumentStatus = 'pending' | 'received' | 'filed';
|
|
263
|
+
/** Life goal */
|
|
264
|
+
export interface LifeGoal {
|
|
265
|
+
id: string;
|
|
266
|
+
title: string;
|
|
267
|
+
description?: string;
|
|
268
|
+
type: GoalTimeframe;
|
|
269
|
+
category: LifeGoalCategory;
|
|
270
|
+
status: GoalStatus;
|
|
271
|
+
startDate?: Date;
|
|
272
|
+
targetDate?: Date;
|
|
273
|
+
progress: number;
|
|
274
|
+
milestones?: GoalMilestone[];
|
|
275
|
+
subGoals?: string[];
|
|
276
|
+
parentGoalId?: string;
|
|
277
|
+
metrics?: GoalMetric[];
|
|
278
|
+
notes?: string;
|
|
279
|
+
}
|
|
280
|
+
/** Goal timeframe */
|
|
281
|
+
export type GoalTimeframe = 'short_term' | 'medium_term' | 'long_term' | 'lifetime';
|
|
282
|
+
/** Life goal category */
|
|
283
|
+
export type LifeGoalCategory = 'career' | 'finance' | 'health' | 'relationships' | 'personal_growth' | 'education' | 'travel' | 'creativity' | 'spirituality' | 'community';
|
|
284
|
+
/** Goal status */
|
|
285
|
+
export type GoalStatus = 'not_started' | 'in_progress' | 'on_hold' | 'completed' | 'abandoned';
|
|
286
|
+
/** Goal milestone */
|
|
287
|
+
export interface GoalMilestone {
|
|
288
|
+
id: string;
|
|
289
|
+
title: string;
|
|
290
|
+
targetDate?: Date;
|
|
291
|
+
completed: boolean;
|
|
292
|
+
completedDate?: Date;
|
|
293
|
+
celebrationNote?: string;
|
|
294
|
+
}
|
|
295
|
+
/** Goal metric */
|
|
296
|
+
export interface GoalMetric {
|
|
297
|
+
name: string;
|
|
298
|
+
target: number;
|
|
299
|
+
current: number;
|
|
300
|
+
unit?: string;
|
|
301
|
+
}
|
|
302
|
+
/** Personal kanban config */
|
|
303
|
+
export interface PersonalKanbanConfig {
|
|
304
|
+
columns: KanbanColumn[];
|
|
305
|
+
cardTypes?: CardType[];
|
|
306
|
+
wipLimits?: Record<string, number>;
|
|
307
|
+
archiveAfterDays?: number;
|
|
308
|
+
}
|
|
309
|
+
/** Kanban column */
|
|
310
|
+
export interface KanbanColumn {
|
|
311
|
+
id: string;
|
|
312
|
+
name: string;
|
|
313
|
+
color?: string;
|
|
314
|
+
order: number;
|
|
315
|
+
wipLimit?: number;
|
|
316
|
+
}
|
|
317
|
+
/** Card type */
|
|
318
|
+
export interface CardType {
|
|
319
|
+
id: string;
|
|
320
|
+
name: string;
|
|
321
|
+
icon?: string;
|
|
322
|
+
color?: string;
|
|
323
|
+
}
|
|
324
|
+
/** Kanban card */
|
|
325
|
+
export interface KanbanCard {
|
|
326
|
+
id: string;
|
|
327
|
+
title: string;
|
|
328
|
+
description?: string;
|
|
329
|
+
type?: string;
|
|
330
|
+
columnId: string;
|
|
331
|
+
order: number;
|
|
332
|
+
dueDate?: Date;
|
|
333
|
+
labels?: string[];
|
|
334
|
+
assignee?: string;
|
|
335
|
+
checklist?: ChecklistItem[];
|
|
336
|
+
attachments?: Attachment[];
|
|
337
|
+
createdAt: Date;
|
|
338
|
+
updatedAt: Date;
|
|
339
|
+
}
|
|
340
|
+
/** Checklist item */
|
|
341
|
+
export interface ChecklistItem {
|
|
342
|
+
id: string;
|
|
343
|
+
text: string;
|
|
344
|
+
completed: boolean;
|
|
345
|
+
}
|
|
346
|
+
/** Habit */
|
|
347
|
+
export interface Habit {
|
|
348
|
+
id: string;
|
|
349
|
+
name: string;
|
|
350
|
+
description?: string;
|
|
351
|
+
frequency: HabitFrequency;
|
|
352
|
+
targetDays?: number[];
|
|
353
|
+
color?: string;
|
|
354
|
+
icon?: string;
|
|
355
|
+
goal?: number;
|
|
356
|
+
unit?: string;
|
|
357
|
+
stackedWith?: string;
|
|
358
|
+
reminder?: Reminder;
|
|
359
|
+
currentStreak: number;
|
|
360
|
+
longestStreak: number;
|
|
361
|
+
completions: HabitCompletion[];
|
|
362
|
+
isArchived?: boolean;
|
|
363
|
+
}
|
|
364
|
+
/** Habit frequency */
|
|
365
|
+
export type HabitFrequency = 'daily' | 'weekly' | 'custom';
|
|
366
|
+
/** Habit completion */
|
|
367
|
+
export interface HabitCompletion {
|
|
368
|
+
date: Date;
|
|
369
|
+
value?: number;
|
|
370
|
+
note?: string;
|
|
371
|
+
}
|
|
372
|
+
/** Routine */
|
|
373
|
+
export interface Routine {
|
|
374
|
+
id: string;
|
|
375
|
+
name: string;
|
|
376
|
+
type: RoutineType;
|
|
377
|
+
steps: RoutineStep[];
|
|
378
|
+
estimatedDuration: number;
|
|
379
|
+
isActive: boolean;
|
|
380
|
+
triggers?: RoutineTrigger[];
|
|
381
|
+
}
|
|
382
|
+
/** Routine type */
|
|
383
|
+
export type RoutineType = 'morning' | 'evening' | 'work' | 'exercise' | 'weekend' | 'custom';
|
|
384
|
+
/** Routine step */
|
|
385
|
+
export interface RoutineStep {
|
|
386
|
+
id: string;
|
|
387
|
+
order: number;
|
|
388
|
+
name: string;
|
|
389
|
+
duration: number;
|
|
390
|
+
isOptional?: boolean;
|
|
391
|
+
}
|
|
392
|
+
/** Routine trigger */
|
|
393
|
+
export interface RoutineTrigger {
|
|
394
|
+
type: 'time' | 'location' | 'event';
|
|
395
|
+
value: string;
|
|
396
|
+
}
|
|
397
|
+
/** Personal project */
|
|
398
|
+
export interface PersonalProject {
|
|
399
|
+
id: string;
|
|
400
|
+
name: string;
|
|
401
|
+
description?: string;
|
|
402
|
+
status: ProjectStatus;
|
|
403
|
+
startDate?: Date;
|
|
404
|
+
targetDate?: Date;
|
|
405
|
+
phases: ProjectPhase[];
|
|
406
|
+
tasks: ProjectTask[];
|
|
407
|
+
budget?: ProjectBudget;
|
|
408
|
+
notes?: string;
|
|
409
|
+
}
|
|
410
|
+
/** Project status */
|
|
411
|
+
export type ProjectStatus = 'planning' | 'active' | 'on_hold' | 'completed' | 'cancelled';
|
|
412
|
+
/** Project phase */
|
|
413
|
+
export interface ProjectPhase {
|
|
414
|
+
id: string;
|
|
415
|
+
name: string;
|
|
416
|
+
order: number;
|
|
417
|
+
startDate?: Date;
|
|
418
|
+
endDate?: Date;
|
|
419
|
+
status: PhaseStatus;
|
|
420
|
+
}
|
|
421
|
+
/** Phase status */
|
|
422
|
+
export type PhaseStatus = 'not_started' | 'in_progress' | 'completed';
|
|
423
|
+
/** Project task */
|
|
424
|
+
export interface ProjectTask {
|
|
425
|
+
id: string;
|
|
426
|
+
phaseId?: string;
|
|
427
|
+
name: string;
|
|
428
|
+
description?: string;
|
|
429
|
+
status: TaskStatus;
|
|
430
|
+
priority: TaskPriority;
|
|
431
|
+
dueDate?: Date;
|
|
432
|
+
estimatedHours?: number;
|
|
433
|
+
actualHours?: number;
|
|
434
|
+
dependencies?: string[];
|
|
435
|
+
}
|
|
436
|
+
/** Task status */
|
|
437
|
+
export type TaskStatus = 'todo' | 'in_progress' | 'blocked' | 'done';
|
|
438
|
+
/** Task priority */
|
|
439
|
+
export type TaskPriority = 'low' | 'medium' | 'high' | 'urgent';
|
|
440
|
+
/** Project budget */
|
|
441
|
+
export interface ProjectBudget {
|
|
442
|
+
total: number;
|
|
443
|
+
spent: number;
|
|
444
|
+
categories: BudgetCategorySpend[];
|
|
445
|
+
}
|
|
446
|
+
/** Budget category spend */
|
|
447
|
+
export interface BudgetCategorySpend {
|
|
448
|
+
category: string;
|
|
449
|
+
budgeted: number;
|
|
450
|
+
spent: number;
|
|
451
|
+
}
|
|
452
|
+
/** Daily review */
|
|
453
|
+
export interface DailyReview {
|
|
454
|
+
date: Date;
|
|
455
|
+
wentWell: string[];
|
|
456
|
+
couldImprove: string[];
|
|
457
|
+
gratitude: string[];
|
|
458
|
+
tomorrowPriorities: string[];
|
|
459
|
+
mood?: MoodRating;
|
|
460
|
+
energyLevel?: number;
|
|
461
|
+
notes?: string;
|
|
462
|
+
}
|
|
463
|
+
/** Mood rating */
|
|
464
|
+
export type MoodRating = 1 | 2 | 3 | 4 | 5;
|
|
465
|
+
/** Weekly review */
|
|
466
|
+
export interface WeeklyReview {
|
|
467
|
+
weekStart: Date;
|
|
468
|
+
weekEnd: Date;
|
|
469
|
+
goalsProgress: GoalProgressSummary[];
|
|
470
|
+
habitsSummary: HabitSummary;
|
|
471
|
+
keyAccomplishments: string[];
|
|
472
|
+
challenges: string[];
|
|
473
|
+
lessonsLearned: string[];
|
|
474
|
+
focusForNextWeek: string[];
|
|
475
|
+
}
|
|
476
|
+
/** Goal progress summary */
|
|
477
|
+
export interface GoalProgressSummary {
|
|
478
|
+
goalId: string;
|
|
479
|
+
goalTitle: string;
|
|
480
|
+
progressDelta: number;
|
|
481
|
+
notes?: string;
|
|
482
|
+
}
|
|
483
|
+
/** Habit summary */
|
|
484
|
+
export interface HabitSummary {
|
|
485
|
+
totalHabits: number;
|
|
486
|
+
completedDays: number;
|
|
487
|
+
targetDays: number;
|
|
488
|
+
completionRate: number;
|
|
489
|
+
streaksGained: number;
|
|
490
|
+
streaksLost: number;
|
|
491
|
+
}
|
|
492
|
+
/** Health dashboard config */
|
|
493
|
+
export interface HealthDashboardConfig {
|
|
494
|
+
metrics: HealthMetricConfig[];
|
|
495
|
+
goals?: HealthGoal[];
|
|
496
|
+
wearableIntegrations?: WearableIntegration[];
|
|
497
|
+
}
|
|
498
|
+
/** Health metric config */
|
|
499
|
+
export interface HealthMetricConfig {
|
|
500
|
+
id: string;
|
|
501
|
+
name: string;
|
|
502
|
+
type: HealthMetricType;
|
|
503
|
+
unit: string;
|
|
504
|
+
targetMin?: number;
|
|
505
|
+
targetMax?: number;
|
|
506
|
+
alertThresholds?: AlertThreshold[];
|
|
507
|
+
}
|
|
508
|
+
/** Health metric type */
|
|
509
|
+
export type HealthMetricType = 'weight' | 'blood_pressure_systolic' | 'blood_pressure_diastolic' | 'heart_rate' | 'blood_sugar' | 'body_fat' | 'bmi' | 'steps' | 'sleep_hours' | 'water_intake' | 'calories';
|
|
510
|
+
/** Alert threshold */
|
|
511
|
+
export interface AlertThreshold {
|
|
512
|
+
level: 'warning' | 'critical';
|
|
513
|
+
min?: number;
|
|
514
|
+
max?: number;
|
|
515
|
+
}
|
|
516
|
+
/** Health goal */
|
|
517
|
+
export interface HealthGoal {
|
|
518
|
+
metricType: HealthMetricType;
|
|
519
|
+
target: number;
|
|
520
|
+
deadline?: Date;
|
|
521
|
+
}
|
|
522
|
+
/** Wearable integration */
|
|
523
|
+
export interface WearableIntegration {
|
|
524
|
+
platform: WearablePlatform;
|
|
525
|
+
connected: boolean;
|
|
526
|
+
lastSync?: Date;
|
|
527
|
+
syncMetrics: HealthMetricType[];
|
|
528
|
+
}
|
|
529
|
+
/** Wearable platform */
|
|
530
|
+
export type WearablePlatform = 'apple_health' | 'google_fit' | 'fitbit' | 'garmin' | 'withings' | 'samsung_health';
|
|
531
|
+
/** Health measurement */
|
|
532
|
+
export interface HealthMeasurement {
|
|
533
|
+
id: string;
|
|
534
|
+
type: HealthMetricType;
|
|
535
|
+
value: number;
|
|
536
|
+
unit: string;
|
|
537
|
+
date: Date;
|
|
538
|
+
source?: 'manual' | 'wearable';
|
|
539
|
+
notes?: string;
|
|
540
|
+
}
|
|
541
|
+
/** Workout */
|
|
542
|
+
export interface Workout {
|
|
543
|
+
id: string;
|
|
544
|
+
name: string;
|
|
545
|
+
type: WorkoutType;
|
|
546
|
+
date: Date;
|
|
547
|
+
duration: number;
|
|
548
|
+
exercises: WorkoutExercise[];
|
|
549
|
+
totalCalories?: number;
|
|
550
|
+
notes?: string;
|
|
551
|
+
feeling?: MoodRating;
|
|
552
|
+
}
|
|
553
|
+
/** Workout type */
|
|
554
|
+
export type WorkoutType = 'strength' | 'cardio' | 'hiit' | 'yoga' | 'pilates' | 'swimming' | 'cycling' | 'running' | 'walking' | 'sports' | 'other';
|
|
555
|
+
/** Workout exercise */
|
|
556
|
+
export interface WorkoutExercise {
|
|
557
|
+
id: string;
|
|
558
|
+
exerciseId: string;
|
|
559
|
+
name: string;
|
|
560
|
+
sets?: ExerciseSet[];
|
|
561
|
+
duration?: number;
|
|
562
|
+
distance?: number;
|
|
563
|
+
calories?: number;
|
|
564
|
+
}
|
|
565
|
+
/** Exercise set */
|
|
566
|
+
export interface ExerciseSet {
|
|
567
|
+
setNumber: number;
|
|
568
|
+
reps?: number;
|
|
569
|
+
weight?: number;
|
|
570
|
+
duration?: number;
|
|
571
|
+
isPersonalRecord?: boolean;
|
|
572
|
+
}
|
|
573
|
+
/** Exercise */
|
|
574
|
+
export interface Exercise {
|
|
575
|
+
id: string;
|
|
576
|
+
name: string;
|
|
577
|
+
category: ExerciseCategory;
|
|
578
|
+
muscleGroups: MuscleGroup[];
|
|
579
|
+
equipment?: string[];
|
|
580
|
+
instructions?: string;
|
|
581
|
+
videoUrl?: string;
|
|
582
|
+
}
|
|
583
|
+
/** Exercise category */
|
|
584
|
+
export type ExerciseCategory = 'compound' | 'isolation' | 'cardio' | 'flexibility' | 'balance';
|
|
585
|
+
/** Muscle group */
|
|
586
|
+
export type MuscleGroup = 'chest' | 'back' | 'shoulders' | 'biceps' | 'triceps' | 'forearms' | 'abs' | 'obliques' | 'lower_back' | 'glutes' | 'quads' | 'hamstrings' | 'calves';
|
|
587
|
+
/** Food entry */
|
|
588
|
+
export interface FoodEntry {
|
|
589
|
+
id: string;
|
|
590
|
+
date: Date;
|
|
591
|
+
meal: MealType;
|
|
592
|
+
food: string;
|
|
593
|
+
servingSize: number;
|
|
594
|
+
servingUnit: string;
|
|
595
|
+
calories: number;
|
|
596
|
+
macros: Macros;
|
|
597
|
+
micronutrients?: Record<string, number>;
|
|
598
|
+
}
|
|
599
|
+
/** Meal type */
|
|
600
|
+
export type MealType = 'breakfast' | 'lunch' | 'dinner' | 'snack';
|
|
601
|
+
/** Macros */
|
|
602
|
+
export interface Macros {
|
|
603
|
+
protein: number;
|
|
604
|
+
carbs: number;
|
|
605
|
+
fat: number;
|
|
606
|
+
fiber?: number;
|
|
607
|
+
sugar?: number;
|
|
608
|
+
}
|
|
609
|
+
/** Meal plan */
|
|
610
|
+
export interface MealPlan {
|
|
611
|
+
id: string;
|
|
612
|
+
name: string;
|
|
613
|
+
startDate: Date;
|
|
614
|
+
endDate: Date;
|
|
615
|
+
days: MealPlanDay[];
|
|
616
|
+
shoppingList?: ShoppingItem[];
|
|
617
|
+
}
|
|
618
|
+
/** Meal plan day */
|
|
619
|
+
export interface MealPlanDay {
|
|
620
|
+
date: Date;
|
|
621
|
+
meals: PlannedMeal[];
|
|
622
|
+
totalCalories: number;
|
|
623
|
+
totalMacros: Macros;
|
|
624
|
+
}
|
|
625
|
+
/** Planned meal */
|
|
626
|
+
export interface PlannedMeal {
|
|
627
|
+
meal: MealType;
|
|
628
|
+
recipeId?: string;
|
|
629
|
+
recipeName: string;
|
|
630
|
+
servings: number;
|
|
631
|
+
prepTime?: number;
|
|
632
|
+
}
|
|
633
|
+
/** Medication */
|
|
634
|
+
export interface Medication {
|
|
635
|
+
id: string;
|
|
636
|
+
name: string;
|
|
637
|
+
dosage: string;
|
|
638
|
+
frequency: MedicationFrequency;
|
|
639
|
+
times: string[];
|
|
640
|
+
startDate: Date;
|
|
641
|
+
endDate?: Date;
|
|
642
|
+
prescribedBy?: string;
|
|
643
|
+
pharmacy?: string;
|
|
644
|
+
refillReminder?: number;
|
|
645
|
+
currentSupply?: number;
|
|
646
|
+
instructions?: string;
|
|
647
|
+
sideEffects?: string[];
|
|
648
|
+
}
|
|
649
|
+
/** Medication frequency */
|
|
650
|
+
export type MedicationFrequency = 'daily' | 'twice_daily' | 'three_times_daily' | 'weekly' | 'as_needed';
|
|
651
|
+
/** Sleep entry */
|
|
652
|
+
export interface SleepEntry {
|
|
653
|
+
id: string;
|
|
654
|
+
date: Date;
|
|
655
|
+
bedtime: Date;
|
|
656
|
+
wakeTime: Date;
|
|
657
|
+
totalHours: number;
|
|
658
|
+
quality: SleepQuality;
|
|
659
|
+
deepSleep?: number;
|
|
660
|
+
remSleep?: number;
|
|
661
|
+
awakenings?: number;
|
|
662
|
+
notes?: string;
|
|
663
|
+
}
|
|
664
|
+
/** Sleep quality */
|
|
665
|
+
export type SleepQuality = 'poor' | 'fair' | 'good' | 'excellent';
|
|
666
|
+
/** Mental health entry */
|
|
667
|
+
export interface MentalHealthEntry {
|
|
668
|
+
id: string;
|
|
669
|
+
date: Date;
|
|
670
|
+
mood: MoodRating;
|
|
671
|
+
anxietyLevel?: number;
|
|
672
|
+
stressLevel?: number;
|
|
673
|
+
triggers?: string[];
|
|
674
|
+
copingStrategies?: string[];
|
|
675
|
+
gratitudeEntries?: string[];
|
|
676
|
+
journalEntry?: string;
|
|
677
|
+
}
|
|
678
|
+
/** Personal wiki config */
|
|
679
|
+
export interface PersonalWikiConfig {
|
|
680
|
+
defaultTemplate?: string;
|
|
681
|
+
tagsEnabled?: boolean;
|
|
682
|
+
backlinksEnabled?: boolean;
|
|
683
|
+
graphViewEnabled?: boolean;
|
|
684
|
+
}
|
|
685
|
+
/** Wiki page */
|
|
686
|
+
export interface WikiPage {
|
|
687
|
+
id: string;
|
|
688
|
+
title: string;
|
|
689
|
+
content: string;
|
|
690
|
+
tags?: string[];
|
|
691
|
+
links: string[];
|
|
692
|
+
backlinks: string[];
|
|
693
|
+
createdAt: Date;
|
|
694
|
+
updatedAt: Date;
|
|
695
|
+
template?: string;
|
|
696
|
+
}
|
|
697
|
+
/** Reading item */
|
|
698
|
+
export interface ReadingItem {
|
|
699
|
+
id: string;
|
|
700
|
+
title: string;
|
|
701
|
+
author?: string;
|
|
702
|
+
type: ReadingType;
|
|
703
|
+
status: ReadingStatus;
|
|
704
|
+
startDate?: Date;
|
|
705
|
+
endDate?: Date;
|
|
706
|
+
currentPage?: number;
|
|
707
|
+
totalPages?: number;
|
|
708
|
+
progress: number;
|
|
709
|
+
rating?: number;
|
|
710
|
+
review?: string;
|
|
711
|
+
notes?: string[];
|
|
712
|
+
tags?: string[];
|
|
713
|
+
}
|
|
714
|
+
/** Reading type */
|
|
715
|
+
export type ReadingType = 'book' | 'ebook' | 'audiobook' | 'article' | 'paper' | 'blog_post';
|
|
716
|
+
/** Reading status */
|
|
717
|
+
export type ReadingStatus = 'want_to_read' | 'reading' | 'finished' | 'abandoned';
|
|
718
|
+
/** Book note */
|
|
719
|
+
export interface BookNote {
|
|
720
|
+
id: string;
|
|
721
|
+
bookId: string;
|
|
722
|
+
chapter?: string;
|
|
723
|
+
pageNumber?: number;
|
|
724
|
+
type: BookNoteType;
|
|
725
|
+
content: string;
|
|
726
|
+
highlight?: string;
|
|
727
|
+
createdAt: Date;
|
|
728
|
+
}
|
|
729
|
+
/** Book note type */
|
|
730
|
+
export type BookNoteType = 'summary' | 'quote' | 'insight' | 'action_item' | 'question';
|
|
731
|
+
/** Learning course */
|
|
732
|
+
export interface LearningCourse {
|
|
733
|
+
id: string;
|
|
734
|
+
title: string;
|
|
735
|
+
platform?: string;
|
|
736
|
+
instructor?: string;
|
|
737
|
+
status: LearningStatus;
|
|
738
|
+
startDate?: Date;
|
|
739
|
+
completionDate?: Date;
|
|
740
|
+
progress: number;
|
|
741
|
+
totalHours?: number;
|
|
742
|
+
completedHours?: number;
|
|
743
|
+
certificate?: Attachment;
|
|
744
|
+
notes?: string;
|
|
745
|
+
rating?: number;
|
|
746
|
+
}
|
|
747
|
+
/** Learning status */
|
|
748
|
+
export type LearningStatus = 'planned' | 'in_progress' | 'completed' | 'dropped';
|
|
749
|
+
/** Skill */
|
|
750
|
+
export interface Skill {
|
|
751
|
+
id: string;
|
|
752
|
+
name: string;
|
|
753
|
+
category: SkillCategory;
|
|
754
|
+
level: SkillLevel;
|
|
755
|
+
targetLevel?: SkillLevel;
|
|
756
|
+
lastPracticed?: Date;
|
|
757
|
+
hoursLogged: number;
|
|
758
|
+
resources?: LearningResource[];
|
|
759
|
+
}
|
|
760
|
+
/** Skill category */
|
|
761
|
+
export type SkillCategory = 'technical' | 'creative' | 'language' | 'physical' | 'social' | 'professional';
|
|
762
|
+
/** Skill level */
|
|
763
|
+
export type SkillLevel = 'beginner' | 'intermediate' | 'advanced' | 'expert';
|
|
764
|
+
/** Learning resource */
|
|
765
|
+
export interface LearningResource {
|
|
766
|
+
title: string;
|
|
767
|
+
type: ResourceType;
|
|
768
|
+
url?: string;
|
|
769
|
+
completed?: boolean;
|
|
770
|
+
}
|
|
771
|
+
/** Resource type */
|
|
772
|
+
export type ResourceType = 'course' | 'book' | 'video' | 'article' | 'podcast' | 'practice';
|
|
773
|
+
/** Idea */
|
|
774
|
+
export interface Idea {
|
|
775
|
+
id: string;
|
|
776
|
+
title: string;
|
|
777
|
+
description?: string;
|
|
778
|
+
type: IdeaType;
|
|
779
|
+
status: IdeaStatus;
|
|
780
|
+
tags?: string[];
|
|
781
|
+
attachments?: Attachment[];
|
|
782
|
+
voiceNote?: string;
|
|
783
|
+
relatedIdeas?: string[];
|
|
784
|
+
createdAt: Date;
|
|
785
|
+
incubationDate?: Date;
|
|
786
|
+
}
|
|
787
|
+
/** Idea type */
|
|
788
|
+
export type IdeaType = 'project' | 'business' | 'creative' | 'improvement' | 'random';
|
|
789
|
+
/** Idea status */
|
|
790
|
+
export type IdeaStatus = 'captured' | 'incubating' | 'developing' | 'archived' | 'implemented';
|
|
791
|
+
/** Journal entry */
|
|
792
|
+
export interface JournalEntry {
|
|
793
|
+
id: string;
|
|
794
|
+
date: Date;
|
|
795
|
+
title?: string;
|
|
796
|
+
content: string;
|
|
797
|
+
mood?: MoodRating;
|
|
798
|
+
tags?: string[];
|
|
799
|
+
photos?: Attachment[];
|
|
800
|
+
isPrivate: boolean;
|
|
801
|
+
prompts?: string[];
|
|
802
|
+
weather?: string;
|
|
803
|
+
location?: string;
|
|
804
|
+
}
|
|
805
|
+
/** Journal prompt */
|
|
806
|
+
export interface JournalPrompt {
|
|
807
|
+
id: string;
|
|
808
|
+
category: PromptCategory;
|
|
809
|
+
text: string;
|
|
810
|
+
frequency?: Frequency;
|
|
811
|
+
}
|
|
812
|
+
/** Prompt category */
|
|
813
|
+
export type PromptCategory = 'gratitude' | 'reflection' | 'creative' | 'goal_setting' | 'mindfulness';
|
|
814
|
+
/** Family member */
|
|
815
|
+
export interface FamilyMember {
|
|
816
|
+
id: string;
|
|
817
|
+
name: string;
|
|
818
|
+
relationship: FamilyRelationship;
|
|
819
|
+
birthDate?: Date;
|
|
820
|
+
color?: string;
|
|
821
|
+
avatar?: string;
|
|
822
|
+
}
|
|
823
|
+
/** Family relationship */
|
|
824
|
+
export type FamilyRelationship = 'self' | 'spouse' | 'child' | 'parent' | 'sibling' | 'other';
|
|
825
|
+
/** Family event */
|
|
826
|
+
export interface FamilyEvent {
|
|
827
|
+
id: string;
|
|
828
|
+
title: string;
|
|
829
|
+
type: FamilyEventType;
|
|
830
|
+
date: Date;
|
|
831
|
+
endDate?: Date;
|
|
832
|
+
allDay: boolean;
|
|
833
|
+
participants: string[];
|
|
834
|
+
location?: string;
|
|
835
|
+
description?: string;
|
|
836
|
+
reminders?: Reminder[];
|
|
837
|
+
recurring?: RecurringPattern;
|
|
838
|
+
}
|
|
839
|
+
/** Family event type */
|
|
840
|
+
export type FamilyEventType = 'birthday' | 'anniversary' | 'appointment' | 'school' | 'sports' | 'vacation' | 'holiday' | 'other';
|
|
841
|
+
/** Recurring pattern */
|
|
842
|
+
export interface RecurringPattern {
|
|
843
|
+
frequency: Frequency;
|
|
844
|
+
interval: number;
|
|
845
|
+
endDate?: Date;
|
|
846
|
+
occurrences?: number;
|
|
847
|
+
}
|
|
848
|
+
/** Child milestone */
|
|
849
|
+
export interface ChildMilestone {
|
|
850
|
+
id: string;
|
|
851
|
+
childId: string;
|
|
852
|
+
type: MilestoneType;
|
|
853
|
+
title: string;
|
|
854
|
+
date: Date;
|
|
855
|
+
description?: string;
|
|
856
|
+
photo?: Attachment;
|
|
857
|
+
}
|
|
858
|
+
/** Milestone type */
|
|
859
|
+
export type MilestoneType = 'first_word' | 'first_step' | 'first_tooth' | 'school_start' | 'graduation' | 'achievement' | 'other';
|
|
860
|
+
/** Vaccination record */
|
|
861
|
+
export interface VaccinationRecord {
|
|
862
|
+
id: string;
|
|
863
|
+
personId: string;
|
|
864
|
+
vaccine: string;
|
|
865
|
+
date: Date;
|
|
866
|
+
doseNumber?: number;
|
|
867
|
+
provider?: string;
|
|
868
|
+
nextDueDate?: Date;
|
|
869
|
+
notes?: string;
|
|
870
|
+
}
|
|
871
|
+
/** Chore */
|
|
872
|
+
export interface Chore {
|
|
873
|
+
id: string;
|
|
874
|
+
name: string;
|
|
875
|
+
description?: string;
|
|
876
|
+
frequency: Frequency;
|
|
877
|
+
assignees: ChoreAssignment[];
|
|
878
|
+
rotationEnabled?: boolean;
|
|
879
|
+
points?: number;
|
|
880
|
+
estimatedMinutes?: number;
|
|
881
|
+
area?: HouseArea;
|
|
882
|
+
}
|
|
883
|
+
/** Chore assignment */
|
|
884
|
+
export interface ChoreAssignment {
|
|
885
|
+
personId: string;
|
|
886
|
+
startDate: Date;
|
|
887
|
+
endDate?: Date;
|
|
888
|
+
}
|
|
889
|
+
/** Chore completion */
|
|
890
|
+
export interface ChoreCompletion {
|
|
891
|
+
choreId: string;
|
|
892
|
+
personId: string;
|
|
893
|
+
completedAt: Date;
|
|
894
|
+
verified?: boolean;
|
|
895
|
+
pointsEarned?: number;
|
|
896
|
+
}
|
|
897
|
+
/** House area */
|
|
898
|
+
export type HouseArea = 'kitchen' | 'bathroom' | 'bedroom' | 'living_room' | 'dining_room' | 'garage' | 'yard' | 'laundry' | 'office' | 'general';
|
|
899
|
+
/** Recipe */
|
|
900
|
+
export interface Recipe {
|
|
901
|
+
id: string;
|
|
902
|
+
name: string;
|
|
903
|
+
description?: string;
|
|
904
|
+
category: RecipeCategory;
|
|
905
|
+
cuisine?: string;
|
|
906
|
+
prepTime: number;
|
|
907
|
+
cookTime: number;
|
|
908
|
+
servings: number;
|
|
909
|
+
ingredients: RecipeIngredient[];
|
|
910
|
+
instructions: string[];
|
|
911
|
+
nutritionPerServing?: Macros;
|
|
912
|
+
tags?: string[];
|
|
913
|
+
image?: string;
|
|
914
|
+
source?: string;
|
|
915
|
+
rating?: number;
|
|
916
|
+
isFavorite?: boolean;
|
|
917
|
+
dietaryInfo?: DietaryInfo[];
|
|
918
|
+
}
|
|
919
|
+
/** Recipe category */
|
|
920
|
+
export type RecipeCategory = 'breakfast' | 'lunch' | 'dinner' | 'appetizer' | 'dessert' | 'snack' | 'drink' | 'side';
|
|
921
|
+
/** Recipe ingredient */
|
|
922
|
+
export interface RecipeIngredient {
|
|
923
|
+
name: string;
|
|
924
|
+
quantity: number;
|
|
925
|
+
unit: string;
|
|
926
|
+
notes?: string;
|
|
927
|
+
optional?: boolean;
|
|
928
|
+
}
|
|
929
|
+
/** Dietary info */
|
|
930
|
+
export type DietaryInfo = 'vegetarian' | 'vegan' | 'gluten_free' | 'dairy_free' | 'nut_free' | 'low_carb' | 'keto' | 'paleo';
|
|
931
|
+
/** Shopping item */
|
|
932
|
+
export interface ShoppingItem {
|
|
933
|
+
id: string;
|
|
934
|
+
name: string;
|
|
935
|
+
quantity?: number;
|
|
936
|
+
unit?: string;
|
|
937
|
+
category: ShoppingCategory;
|
|
938
|
+
store?: string;
|
|
939
|
+
aisle?: string;
|
|
940
|
+
price?: number;
|
|
941
|
+
isRecurring?: boolean;
|
|
942
|
+
checked: boolean;
|
|
943
|
+
}
|
|
944
|
+
/** Shopping category */
|
|
945
|
+
export type ShoppingCategory = 'produce' | 'dairy' | 'meat' | 'bakery' | 'frozen' | 'pantry' | 'beverages' | 'household' | 'personal_care' | 'other';
|
|
946
|
+
/** Home inventory item */
|
|
947
|
+
export interface HomeInventoryItem {
|
|
948
|
+
id: string;
|
|
949
|
+
name: string;
|
|
950
|
+
category: HomeInventoryCategory;
|
|
951
|
+
room: string;
|
|
952
|
+
quantity: number;
|
|
953
|
+
purchaseDate?: Date;
|
|
954
|
+
purchasePrice?: number;
|
|
955
|
+
currentValue?: number;
|
|
956
|
+
warranty?: WarrantyInfo;
|
|
957
|
+
receipt?: Attachment;
|
|
958
|
+
photos?: Attachment[];
|
|
959
|
+
serialNumber?: string;
|
|
960
|
+
model?: string;
|
|
961
|
+
brand?: string;
|
|
962
|
+
notes?: string;
|
|
963
|
+
}
|
|
964
|
+
/** Home inventory category */
|
|
965
|
+
export type HomeInventoryCategory = 'electronics' | 'appliances' | 'furniture' | 'clothing' | 'jewelry' | 'tools' | 'sports' | 'collectibles' | 'other';
|
|
966
|
+
/** Warranty info */
|
|
967
|
+
export interface WarrantyInfo {
|
|
968
|
+
provider: string;
|
|
969
|
+
startDate: Date;
|
|
970
|
+
endDate: Date;
|
|
971
|
+
coverage: string;
|
|
972
|
+
document?: Attachment;
|
|
973
|
+
}
|
|
974
|
+
/** Home maintenance task */
|
|
975
|
+
export interface HomeMaintenanceTask {
|
|
976
|
+
id: string;
|
|
977
|
+
name: string;
|
|
978
|
+
description?: string;
|
|
979
|
+
frequency: Frequency;
|
|
980
|
+
lastCompleted?: Date;
|
|
981
|
+
nextDue: Date;
|
|
982
|
+
category: MaintenanceCategory;
|
|
983
|
+
estimatedCost?: number;
|
|
984
|
+
serviceProvider?: ServiceProvider;
|
|
985
|
+
attachments?: Attachment[];
|
|
986
|
+
}
|
|
987
|
+
/** Maintenance category */
|
|
988
|
+
export type MaintenanceCategory = 'hvac' | 'plumbing' | 'electrical' | 'appliance' | 'exterior' | 'landscaping' | 'pest_control' | 'cleaning' | 'safety';
|
|
989
|
+
/** Service provider */
|
|
990
|
+
export interface ServiceProvider {
|
|
991
|
+
name: string;
|
|
992
|
+
phone?: string;
|
|
993
|
+
email?: string;
|
|
994
|
+
website?: string;
|
|
995
|
+
notes?: string;
|
|
996
|
+
rating?: number;
|
|
997
|
+
}
|
|
998
|
+
/** Personal contact */
|
|
999
|
+
export interface PersonalContact {
|
|
1000
|
+
id: string;
|
|
1001
|
+
firstName: string;
|
|
1002
|
+
lastName: string;
|
|
1003
|
+
nickname?: string;
|
|
1004
|
+
relationship: ContactRelationship;
|
|
1005
|
+
email?: string;
|
|
1006
|
+
phone?: string;
|
|
1007
|
+
address?: ContactAddress;
|
|
1008
|
+
birthday?: Date;
|
|
1009
|
+
anniversary?: Date;
|
|
1010
|
+
company?: string;
|
|
1011
|
+
jobTitle?: string;
|
|
1012
|
+
socialMedia?: SocialMediaLink[];
|
|
1013
|
+
notes?: string;
|
|
1014
|
+
tags?: string[];
|
|
1015
|
+
photo?: string;
|
|
1016
|
+
lastContact?: Date;
|
|
1017
|
+
contactFrequencyGoal?: ContactFrequencyGoal;
|
|
1018
|
+
}
|
|
1019
|
+
/** Contact relationship */
|
|
1020
|
+
export type ContactRelationship = 'family' | 'friend' | 'colleague' | 'acquaintance' | 'professional' | 'other';
|
|
1021
|
+
/** Contact address */
|
|
1022
|
+
export interface ContactAddress {
|
|
1023
|
+
street: string;
|
|
1024
|
+
city: string;
|
|
1025
|
+
state?: string;
|
|
1026
|
+
postalCode: string;
|
|
1027
|
+
country: string;
|
|
1028
|
+
}
|
|
1029
|
+
/** Social media link */
|
|
1030
|
+
export interface SocialMediaLink {
|
|
1031
|
+
platform: SocialPlatform;
|
|
1032
|
+
username: string;
|
|
1033
|
+
url?: string;
|
|
1034
|
+
}
|
|
1035
|
+
/** Social platform */
|
|
1036
|
+
export type SocialPlatform = 'facebook' | 'instagram' | 'twitter' | 'linkedin' | 'tiktok' | 'youtube' | 'other';
|
|
1037
|
+
/** Contact frequency goal */
|
|
1038
|
+
export interface ContactFrequencyGoal {
|
|
1039
|
+
frequency: Frequency;
|
|
1040
|
+
reminder?: boolean;
|
|
1041
|
+
}
|
|
1042
|
+
/** Gift record */
|
|
1043
|
+
export interface GiftRecord {
|
|
1044
|
+
id: string;
|
|
1045
|
+
type: 'given' | 'received';
|
|
1046
|
+
personId: string;
|
|
1047
|
+
occasion: GiftOccasion;
|
|
1048
|
+
date: Date;
|
|
1049
|
+
description: string;
|
|
1050
|
+
price?: number;
|
|
1051
|
+
notes?: string;
|
|
1052
|
+
thanked?: boolean;
|
|
1053
|
+
}
|
|
1054
|
+
/** Gift occasion */
|
|
1055
|
+
export type GiftOccasion = 'birthday' | 'christmas' | 'anniversary' | 'wedding' | 'baby_shower' | 'graduation' | 'thank_you' | 'just_because' | 'other';
|
|
1056
|
+
/** Gift idea */
|
|
1057
|
+
export interface GiftIdea {
|
|
1058
|
+
id: string;
|
|
1059
|
+
personId: string;
|
|
1060
|
+
description: string;
|
|
1061
|
+
price?: number;
|
|
1062
|
+
url?: string;
|
|
1063
|
+
occasion?: GiftOccasion;
|
|
1064
|
+
priority?: number;
|
|
1065
|
+
purchased?: boolean;
|
|
1066
|
+
}
|
|
1067
|
+
/** Personal event */
|
|
1068
|
+
export interface PersonalEvent {
|
|
1069
|
+
id: string;
|
|
1070
|
+
title: string;
|
|
1071
|
+
description?: string;
|
|
1072
|
+
date: Date;
|
|
1073
|
+
endDate?: Date;
|
|
1074
|
+
location?: string;
|
|
1075
|
+
type: PersonalEventType;
|
|
1076
|
+
guestList?: EventGuest[];
|
|
1077
|
+
budget?: EventBudget;
|
|
1078
|
+
tasks?: EventTask[];
|
|
1079
|
+
vendors?: EventVendor[];
|
|
1080
|
+
timeline?: EventTimelineItem[];
|
|
1081
|
+
}
|
|
1082
|
+
/** Personal event type */
|
|
1083
|
+
export type PersonalEventType = 'party' | 'wedding' | 'reunion' | 'dinner' | 'trip' | 'celebration' | 'other';
|
|
1084
|
+
/** Event guest */
|
|
1085
|
+
export interface EventGuest {
|
|
1086
|
+
contactId?: string;
|
|
1087
|
+
name: string;
|
|
1088
|
+
email?: string;
|
|
1089
|
+
status: RSVPStatus;
|
|
1090
|
+
plusOne?: boolean;
|
|
1091
|
+
dietaryRestrictions?: string;
|
|
1092
|
+
notes?: string;
|
|
1093
|
+
}
|
|
1094
|
+
/** RSVP status */
|
|
1095
|
+
export type RSVPStatus = 'pending' | 'accepted' | 'declined' | 'maybe';
|
|
1096
|
+
/** Event budget */
|
|
1097
|
+
export interface EventBudget {
|
|
1098
|
+
total: number;
|
|
1099
|
+
categories: EventBudgetCategory[];
|
|
1100
|
+
}
|
|
1101
|
+
/** Event budget category */
|
|
1102
|
+
export interface EventBudgetCategory {
|
|
1103
|
+
name: string;
|
|
1104
|
+
budgeted: number;
|
|
1105
|
+
spent: number;
|
|
1106
|
+
}
|
|
1107
|
+
/** Event task */
|
|
1108
|
+
export interface EventTask {
|
|
1109
|
+
id: string;
|
|
1110
|
+
name: string;
|
|
1111
|
+
dueDate?: Date;
|
|
1112
|
+
assignee?: string;
|
|
1113
|
+
status: TaskStatus;
|
|
1114
|
+
notes?: string;
|
|
1115
|
+
}
|
|
1116
|
+
/** Event vendor */
|
|
1117
|
+
export interface EventVendor {
|
|
1118
|
+
name: string;
|
|
1119
|
+
service: string;
|
|
1120
|
+
contact?: string;
|
|
1121
|
+
cost?: number;
|
|
1122
|
+
depositPaid?: boolean;
|
|
1123
|
+
confirmed?: boolean;
|
|
1124
|
+
}
|
|
1125
|
+
/** Event timeline item */
|
|
1126
|
+
export interface EventTimelineItem {
|
|
1127
|
+
time: string;
|
|
1128
|
+
activity: string;
|
|
1129
|
+
duration?: number;
|
|
1130
|
+
notes?: string;
|
|
1131
|
+
}
|
|
1132
|
+
//# sourceMappingURL=life-management.d.ts.map
|