@mrck-labs/vanaheim-shared 0.2.1 → 0.3.0

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.
@@ -11,10 +11,62 @@ declare const FREQUENCIES: readonly ["monthly", "yearly", "6-monthly", "weekly",
11
11
  type Frequency = (typeof FREQUENCIES)[number];
12
12
  declare const FREQUENCY_LABELS: Record<Frequency, string>;
13
13
  declare const FREQUENCY_MULTIPLIERS: Record<Frequency, number>;
14
+ /**
15
+ * Frequency options for dropdowns/toggle groups
16
+ * Format: { value: Frequency, label: string }
17
+ */
18
+ declare const FREQUENCY_OPTIONS: ({
19
+ value: "monthly";
20
+ label: string;
21
+ } | {
22
+ value: "yearly";
23
+ label: string;
24
+ } | {
25
+ value: "6-monthly";
26
+ label: string;
27
+ } | {
28
+ value: "weekly";
29
+ label: string;
30
+ } | {
31
+ value: "one-time";
32
+ label: string;
33
+ })[];
14
34
  declare const DEFAULT_FOCUS_DURATIONS: readonly [15, 25, 30, 45, 60, 90];
15
35
  type FocusDuration = (typeof DEFAULT_FOCUS_DURATIONS)[number];
16
36
  declare const FOCUS_STATUS: readonly ["active", "completed", "abandoned"];
17
37
  type FocusStatus = (typeof FOCUS_STATUS)[number];
38
+ declare const HEALTH_FREQUENCY_TYPES: readonly ["daily", "specific_days", "times_per_week", "times_per_month"];
39
+ declare const HEALTH_FREQUENCY_LABELS: Record<string, string>;
40
+ declare const DAY_OPTIONS: readonly [{
41
+ readonly value: 0;
42
+ readonly label: "Sun";
43
+ }, {
44
+ readonly value: 1;
45
+ readonly label: "Mon";
46
+ }, {
47
+ readonly value: 2;
48
+ readonly label: "Tue";
49
+ }, {
50
+ readonly value: 3;
51
+ readonly label: "Wed";
52
+ }, {
53
+ readonly value: 4;
54
+ readonly label: "Thu";
55
+ }, {
56
+ readonly value: 5;
57
+ readonly label: "Fri";
58
+ }, {
59
+ readonly value: 6;
60
+ readonly label: "Sat";
61
+ }];
62
+ /**
63
+ * Preset colors for categories, labels, and other UI elements
64
+ */
65
+ declare const PRESET_COLORS: string[];
66
+ /**
67
+ * Preset icons/emojis for categories and UI elements
68
+ */
69
+ declare const PRESET_ICONS: string[];
18
70
  declare const LINEAR_PRIORITIES: readonly [0, 1, 2, 3, 4];
19
71
  type LinearPriorityValue = (typeof LINEAR_PRIORITIES)[number];
20
72
  declare const LINEAR_PRIORITY_COLORS: Record<LinearPriorityValue, string>;
@@ -39,4 +91,4 @@ declare const SETTING_KEYS: {
39
91
  };
40
92
  type SettingKey = (typeof SETTING_KEYS)[keyof typeof SETTING_KEYS];
41
93
 
42
- export { API_URLS, CLOUD_AGENT_STATUSES, CLOUD_AGENT_STATUS_COLORS, CLOUD_AGENT_STATUS_EMOJI, CURRENCIES, CURRENCY_NAMES, CURRENCY_SYMBOLS, type Currency, DEFAULT_FOCUS_DURATIONS, FOCUS_STATUS, FREQUENCIES, FREQUENCY_LABELS, FREQUENCY_MULTIPLIERS, type FocusDuration, type FocusStatus, type Frequency, LINEAR_PRIORITIES, LINEAR_PRIORITY_COLORS, type LinearPriorityValue, SETTING_KEYS, type SettingKey };
94
+ export { API_URLS, CLOUD_AGENT_STATUSES, CLOUD_AGENT_STATUS_COLORS, CLOUD_AGENT_STATUS_EMOJI, CURRENCIES, CURRENCY_NAMES, CURRENCY_SYMBOLS, type Currency, DAY_OPTIONS, DEFAULT_FOCUS_DURATIONS, FOCUS_STATUS, FREQUENCIES, FREQUENCY_LABELS, FREQUENCY_MULTIPLIERS, FREQUENCY_OPTIONS, type FocusDuration, type FocusStatus, type Frequency, HEALTH_FREQUENCY_LABELS, HEALTH_FREQUENCY_TYPES, LINEAR_PRIORITIES, LINEAR_PRIORITY_COLORS, type LinearPriorityValue, PRESET_COLORS, PRESET_ICONS, SETTING_KEYS, type SettingKey };
@@ -11,10 +11,62 @@ declare const FREQUENCIES: readonly ["monthly", "yearly", "6-monthly", "weekly",
11
11
  type Frequency = (typeof FREQUENCIES)[number];
12
12
  declare const FREQUENCY_LABELS: Record<Frequency, string>;
13
13
  declare const FREQUENCY_MULTIPLIERS: Record<Frequency, number>;
14
+ /**
15
+ * Frequency options for dropdowns/toggle groups
16
+ * Format: { value: Frequency, label: string }
17
+ */
18
+ declare const FREQUENCY_OPTIONS: ({
19
+ value: "monthly";
20
+ label: string;
21
+ } | {
22
+ value: "yearly";
23
+ label: string;
24
+ } | {
25
+ value: "6-monthly";
26
+ label: string;
27
+ } | {
28
+ value: "weekly";
29
+ label: string;
30
+ } | {
31
+ value: "one-time";
32
+ label: string;
33
+ })[];
14
34
  declare const DEFAULT_FOCUS_DURATIONS: readonly [15, 25, 30, 45, 60, 90];
15
35
  type FocusDuration = (typeof DEFAULT_FOCUS_DURATIONS)[number];
16
36
  declare const FOCUS_STATUS: readonly ["active", "completed", "abandoned"];
17
37
  type FocusStatus = (typeof FOCUS_STATUS)[number];
38
+ declare const HEALTH_FREQUENCY_TYPES: readonly ["daily", "specific_days", "times_per_week", "times_per_month"];
39
+ declare const HEALTH_FREQUENCY_LABELS: Record<string, string>;
40
+ declare const DAY_OPTIONS: readonly [{
41
+ readonly value: 0;
42
+ readonly label: "Sun";
43
+ }, {
44
+ readonly value: 1;
45
+ readonly label: "Mon";
46
+ }, {
47
+ readonly value: 2;
48
+ readonly label: "Tue";
49
+ }, {
50
+ readonly value: 3;
51
+ readonly label: "Wed";
52
+ }, {
53
+ readonly value: 4;
54
+ readonly label: "Thu";
55
+ }, {
56
+ readonly value: 5;
57
+ readonly label: "Fri";
58
+ }, {
59
+ readonly value: 6;
60
+ readonly label: "Sat";
61
+ }];
62
+ /**
63
+ * Preset colors for categories, labels, and other UI elements
64
+ */
65
+ declare const PRESET_COLORS: string[];
66
+ /**
67
+ * Preset icons/emojis for categories and UI elements
68
+ */
69
+ declare const PRESET_ICONS: string[];
18
70
  declare const LINEAR_PRIORITIES: readonly [0, 1, 2, 3, 4];
19
71
  type LinearPriorityValue = (typeof LINEAR_PRIORITIES)[number];
20
72
  declare const LINEAR_PRIORITY_COLORS: Record<LinearPriorityValue, string>;
@@ -39,4 +91,4 @@ declare const SETTING_KEYS: {
39
91
  };
40
92
  type SettingKey = (typeof SETTING_KEYS)[keyof typeof SETTING_KEYS];
41
93
 
42
- export { API_URLS, CLOUD_AGENT_STATUSES, CLOUD_AGENT_STATUS_COLORS, CLOUD_AGENT_STATUS_EMOJI, CURRENCIES, CURRENCY_NAMES, CURRENCY_SYMBOLS, type Currency, DEFAULT_FOCUS_DURATIONS, FOCUS_STATUS, FREQUENCIES, FREQUENCY_LABELS, FREQUENCY_MULTIPLIERS, type FocusDuration, type FocusStatus, type Frequency, LINEAR_PRIORITIES, LINEAR_PRIORITY_COLORS, type LinearPriorityValue, SETTING_KEYS, type SettingKey };
94
+ export { API_URLS, CLOUD_AGENT_STATUSES, CLOUD_AGENT_STATUS_COLORS, CLOUD_AGENT_STATUS_EMOJI, CURRENCIES, CURRENCY_NAMES, CURRENCY_SYMBOLS, type Currency, DAY_OPTIONS, DEFAULT_FOCUS_DURATIONS, FOCUS_STATUS, FREQUENCIES, FREQUENCY_LABELS, FREQUENCY_MULTIPLIERS, FREQUENCY_OPTIONS, type FocusDuration, type FocusStatus, type Frequency, HEALTH_FREQUENCY_LABELS, HEALTH_FREQUENCY_TYPES, LINEAR_PRIORITIES, LINEAR_PRIORITY_COLORS, type LinearPriorityValue, PRESET_COLORS, PRESET_ICONS, SETTING_KEYS, type SettingKey };
@@ -27,13 +27,19 @@ __export(constants_exports, {
27
27
  CURRENCIES: () => CURRENCIES,
28
28
  CURRENCY_NAMES: () => CURRENCY_NAMES,
29
29
  CURRENCY_SYMBOLS: () => CURRENCY_SYMBOLS,
30
+ DAY_OPTIONS: () => DAY_OPTIONS,
30
31
  DEFAULT_FOCUS_DURATIONS: () => DEFAULT_FOCUS_DURATIONS,
31
32
  FOCUS_STATUS: () => FOCUS_STATUS,
32
33
  FREQUENCIES: () => FREQUENCIES,
33
34
  FREQUENCY_LABELS: () => FREQUENCY_LABELS,
34
35
  FREQUENCY_MULTIPLIERS: () => FREQUENCY_MULTIPLIERS,
36
+ FREQUENCY_OPTIONS: () => FREQUENCY_OPTIONS,
37
+ HEALTH_FREQUENCY_LABELS: () => HEALTH_FREQUENCY_LABELS,
38
+ HEALTH_FREQUENCY_TYPES: () => HEALTH_FREQUENCY_TYPES,
35
39
  LINEAR_PRIORITIES: () => LINEAR_PRIORITIES,
36
40
  LINEAR_PRIORITY_COLORS: () => LINEAR_PRIORITY_COLORS,
41
+ PRESET_COLORS: () => PRESET_COLORS,
42
+ PRESET_ICONS: () => PRESET_ICONS,
37
43
  SETTING_KEYS: () => SETTING_KEYS
38
44
  });
39
45
  module.exports = __toCommonJS(constants_exports);
@@ -71,8 +77,98 @@ var FREQUENCY_MULTIPLIERS = {
71
77
  weekly: 52,
72
78
  "one-time": 1
73
79
  };
80
+ var FREQUENCY_OPTIONS = [
81
+ { value: "monthly", label: "Monthly" },
82
+ { value: "yearly", label: "Yearly" },
83
+ { value: "6-monthly", label: "Every 6 Months" },
84
+ { value: "weekly", label: "Weekly" },
85
+ { value: "one-time", label: "One Time" }
86
+ ];
74
87
  var DEFAULT_FOCUS_DURATIONS = [15, 25, 30, 45, 60, 90];
75
88
  var FOCUS_STATUS = ["active", "completed", "abandoned"];
89
+ var HEALTH_FREQUENCY_TYPES = [
90
+ "daily",
91
+ "specific_days",
92
+ "times_per_week",
93
+ "times_per_month"
94
+ ];
95
+ var HEALTH_FREQUENCY_LABELS = {
96
+ daily: "Daily",
97
+ specific_days: "Specific Days",
98
+ times_per_week: "Times per Week",
99
+ times_per_month: "Times per Month"
100
+ };
101
+ var DAY_OPTIONS = [
102
+ { value: 0, label: "Sun" },
103
+ { value: 1, label: "Mon" },
104
+ { value: 2, label: "Tue" },
105
+ { value: 3, label: "Wed" },
106
+ { value: 4, label: "Thu" },
107
+ { value: 5, label: "Fri" },
108
+ { value: 6, label: "Sat" }
109
+ ];
110
+ var PRESET_COLORS = [
111
+ "#10B981",
112
+ // Emerald
113
+ "#3B82F6",
114
+ // Blue
115
+ "#F59E0B",
116
+ // Amber
117
+ "#EF4444",
118
+ // Red
119
+ "#8B5CF6",
120
+ // Purple
121
+ "#EC4899",
122
+ // Pink
123
+ "#14B8A6",
124
+ // Teal
125
+ "#F97316",
126
+ // Orange
127
+ "#6366F1",
128
+ // Indigo
129
+ "#84CC16"
130
+ // Lime
131
+ ];
132
+ var PRESET_ICONS = [
133
+ "\u{1F4DD}",
134
+ // Writing/Notes
135
+ "\u{1F4BB}",
136
+ // Coding/Tech
137
+ "\u{1F3A8}",
138
+ // Design/Art
139
+ "\u{1F4CA}",
140
+ // Analytics/Data
141
+ "\u{1F527}",
142
+ // Tools/Settings
143
+ "\u{1F4DA}",
144
+ // Learning/Docs
145
+ "\u{1F4A1}",
146
+ // Ideas/Lightbulb
147
+ "\u{1F680}",
148
+ // Launch/Start
149
+ "\u26A1",
150
+ // Fast/Energy
151
+ "\u{1F3AF}",
152
+ // Target/Goal
153
+ "\u{1F48A}",
154
+ // Health/Medicine
155
+ "\u{1F957}",
156
+ // Food/Diet
157
+ "\u{1F4A7}",
158
+ // Water/Hydration
159
+ "\u{1F3C3}",
160
+ // Exercise/Running
161
+ "\u{1F634}",
162
+ // Sleep/Rest
163
+ "\u{1F9D8}",
164
+ // Meditation/Mindfulness
165
+ "\u{1F4AA}",
166
+ // Strength/Fitness
167
+ "\u{1F34E}",
168
+ // Health/Food
169
+ "\u{1F517}"
170
+ // Links/Connections
171
+ ];
76
172
  var LINEAR_PRIORITIES = [0, 1, 2, 3, 4];
77
173
  var LINEAR_PRIORITY_COLORS = {
78
174
  0: "#6b7280",
@@ -135,13 +231,19 @@ var SETTING_KEYS = {
135
231
  CURRENCIES,
136
232
  CURRENCY_NAMES,
137
233
  CURRENCY_SYMBOLS,
234
+ DAY_OPTIONS,
138
235
  DEFAULT_FOCUS_DURATIONS,
139
236
  FOCUS_STATUS,
140
237
  FREQUENCIES,
141
238
  FREQUENCY_LABELS,
142
239
  FREQUENCY_MULTIPLIERS,
240
+ FREQUENCY_OPTIONS,
241
+ HEALTH_FREQUENCY_LABELS,
242
+ HEALTH_FREQUENCY_TYPES,
143
243
  LINEAR_PRIORITIES,
144
244
  LINEAR_PRIORITY_COLORS,
245
+ PRESET_COLORS,
246
+ PRESET_ICONS,
145
247
  SETTING_KEYS
146
248
  });
147
249
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/constants/index.ts"],"sourcesContent":["/**\n * Shared Constants\n *\n * Common constants used across Vanaheim apps.\n */\n\n// ============================================================================\n// Currency\n// ============================================================================\n\nexport const CURRENCIES = ['CHF', 'USD', 'EUR', 'PLN'] as const\nexport type Currency = (typeof CURRENCIES)[number]\n\nexport const CURRENCY_SYMBOLS: Record<Currency, string> = {\n CHF: 'CHF',\n USD: '$',\n EUR: '€',\n PLN: 'zł',\n}\n\nexport const CURRENCY_NAMES: Record<Currency, string> = {\n CHF: 'Swiss Franc',\n USD: 'US Dollar',\n EUR: 'Euro',\n PLN: 'Polish Złoty',\n}\n\n// ============================================================================\n// Frequency\n// ============================================================================\n\nexport const FREQUENCIES = [\n 'monthly',\n 'yearly',\n '6-monthly',\n 'weekly',\n 'one-time',\n] as const\nexport type Frequency = (typeof FREQUENCIES)[number]\n\nexport const FREQUENCY_LABELS: Record<Frequency, string> = {\n monthly: 'Monthly',\n yearly: 'Yearly',\n '6-monthly': 'Every 6 Months',\n weekly: 'Weekly',\n 'one-time': 'One Time',\n}\n\nexport const FREQUENCY_MULTIPLIERS: Record<Frequency, number> = {\n monthly: 12,\n yearly: 1,\n '6-monthly': 2,\n weekly: 52,\n 'one-time': 1,\n}\n\n// ============================================================================\n// Focus\n// ============================================================================\n\nexport const DEFAULT_FOCUS_DURATIONS = [15, 25, 30, 45, 60, 90] as const\nexport type FocusDuration = (typeof DEFAULT_FOCUS_DURATIONS)[number]\n\nexport const FOCUS_STATUS = ['active', 'completed', 'abandoned'] as const\nexport type FocusStatus = (typeof FOCUS_STATUS)[number]\n\n// ============================================================================\n// Linear\n// ============================================================================\n\nexport const LINEAR_PRIORITIES = [0, 1, 2, 3, 4] as const\nexport type LinearPriorityValue = (typeof LINEAR_PRIORITIES)[number]\n\nexport const LINEAR_PRIORITY_COLORS: Record<LinearPriorityValue, string> = {\n 0: '#6b7280', // No priority - gray\n 1: '#ef4444', // Urgent - red\n 2: '#f97316', // High - orange\n 3: '#eab308', // Medium - yellow\n 4: '#3b82f6', // Low - blue\n}\n\n// ============================================================================\n// Cloud Agents\n// ============================================================================\n\nexport const CLOUD_AGENT_STATUSES = [\n 'CREATING',\n 'RUNNING',\n 'FINISHED',\n 'FAILED',\n 'CANCELLED',\n] as const\n\nexport const CLOUD_AGENT_STATUS_EMOJI: Record<string, string> = {\n CREATING: '🔨',\n RUNNING: '⏳',\n FINISHED: '✅',\n FAILED: '❌',\n CANCELLED: '🚫',\n}\n\nexport const CLOUD_AGENT_STATUS_COLORS: Record<string, string> = {\n CREATING: '#3b82f6',\n RUNNING: '#3b82f6',\n FINISHED: '#10b981',\n FAILED: '#ef4444',\n CANCELLED: '#6b7280',\n}\n\n// ============================================================================\n// API URLs\n// ============================================================================\n\nexport const API_URLS = {\n CURSOR_CLOUD: 'https://api.cursor.com',\n LINEAR_GRAPHQL: 'https://api.linear.app/graphql',\n} as const\n\n// ============================================================================\n// Settings Keys\n// ============================================================================\n\nexport const SETTING_KEYS = {\n // AI\n AI_MODEL: 'ai_model',\n AI_REASONING_ENABLED: 'ai_reasoning_enabled',\n\n // API Keys\n OPENAI_API_KEY: 'openai_api_key',\n ANTHROPIC_API_KEY: 'anthropic_api_key',\n CURSOR_API_KEY: 'cursor_api_key',\n LINEAR_API_KEY: 'linear_api_key',\n\n // Google\n GOOGLE_CLIENT_ID: 'google_client_id',\n GOOGLE_CLIENT_SECRET: 'google_client_secret',\n GOOGLE_CALENDAR_TOKENS: 'google_calendar_tokens',\n SELECTED_CALENDAR_IDS: 'selected_calendar_ids',\n} as const\n\nexport type SettingKey = (typeof SETTING_KEYS)[keyof typeof SETTING_KEYS]\n\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUO,IAAM,aAAa,CAAC,OAAO,OAAO,OAAO,KAAK;AAG9C,IAAM,mBAA6C;AAAA,EACxD,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;AAEO,IAAM,iBAA2C;AAAA,EACtD,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;AAMO,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,mBAA8C;AAAA,EACzD,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,YAAY;AACd;AAEO,IAAM,wBAAmD;AAAA,EAC9D,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,YAAY;AACd;AAMO,IAAM,0BAA0B,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAGvD,IAAM,eAAe,CAAC,UAAU,aAAa,WAAW;AAOxD,IAAM,oBAAoB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AAGxC,IAAM,yBAA8D;AAAA,EACzE,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AACL;AAMO,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,2BAAmD;AAAA,EAC9D,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AACb;AAEO,IAAM,4BAAoD;AAAA,EAC/D,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AACb;AAMO,IAAM,WAAW;AAAA,EACtB,cAAc;AAAA,EACd,gBAAgB;AAClB;AAMO,IAAM,eAAe;AAAA;AAAA,EAE1B,UAAU;AAAA,EACV,sBAAsB;AAAA;AAAA,EAGtB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA;AAAA,EAGhB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,uBAAuB;AACzB;","names":[]}
1
+ {"version":3,"sources":["../../src/constants/index.ts"],"sourcesContent":["/**\n * Shared Constants\n *\n * Common constants used across Vanaheim apps.\n */\n\n// ============================================================================\n// Currency\n// ============================================================================\n\nexport const CURRENCIES = [\"CHF\", \"USD\", \"EUR\", \"PLN\"] as const;\nexport type Currency = (typeof CURRENCIES)[number];\n\nexport const CURRENCY_SYMBOLS: Record<Currency, string> = {\n CHF: \"CHF\",\n USD: \"$\",\n EUR: \"€\",\n PLN: \"zł\",\n};\n\nexport const CURRENCY_NAMES: Record<Currency, string> = {\n CHF: \"Swiss Franc\",\n USD: \"US Dollar\",\n EUR: \"Euro\",\n PLN: \"Polish Złoty\",\n};\n\n// ============================================================================\n// Frequency\n// ============================================================================\n\nexport const FREQUENCIES = [\n \"monthly\",\n \"yearly\",\n \"6-monthly\",\n \"weekly\",\n \"one-time\",\n] as const;\nexport type Frequency = (typeof FREQUENCIES)[number];\n\nexport const FREQUENCY_LABELS: Record<Frequency, string> = {\n monthly: \"Monthly\",\n yearly: \"Yearly\",\n \"6-monthly\": \"Every 6 Months\",\n weekly: \"Weekly\",\n \"one-time\": \"One Time\",\n};\n\nexport const FREQUENCY_MULTIPLIERS: Record<Frequency, number> = {\n monthly: 12,\n yearly: 1,\n \"6-monthly\": 2,\n weekly: 52,\n \"one-time\": 1,\n};\n\n/**\n * Frequency options for dropdowns/toggle groups\n * Format: { value: Frequency, label: string }\n */\nexport const FREQUENCY_OPTIONS = [\n { value: \"monthly\" as const, label: \"Monthly\" },\n { value: \"yearly\" as const, label: \"Yearly\" },\n { value: \"6-monthly\" as const, label: \"Every 6 Months\" },\n { value: \"weekly\" as const, label: \"Weekly\" },\n { value: \"one-time\" as const, label: \"One Time\" },\n];\n\n// ============================================================================\n// Focus\n// ============================================================================\n\nexport const DEFAULT_FOCUS_DURATIONS = [15, 25, 30, 45, 60, 90] as const;\nexport type FocusDuration = (typeof DEFAULT_FOCUS_DURATIONS)[number];\n\nexport const FOCUS_STATUS = [\"active\", \"completed\", \"abandoned\"] as const;\nexport type FocusStatus = (typeof FOCUS_STATUS)[number];\n\n// ============================================================================\n// Health & Habits\n// ============================================================================\n\nexport const HEALTH_FREQUENCY_TYPES = [\n \"daily\",\n \"specific_days\",\n \"times_per_week\",\n \"times_per_month\",\n] as const;\n\nexport const HEALTH_FREQUENCY_LABELS: Record<string, string> = {\n daily: \"Daily\",\n specific_days: \"Specific Days\",\n times_per_week: \"Times per Week\",\n times_per_month: \"Times per Month\",\n};\n\nexport const DAY_OPTIONS = [\n { value: 0, label: \"Sun\" },\n { value: 1, label: \"Mon\" },\n { value: 2, label: \"Tue\" },\n { value: 3, label: \"Wed\" },\n { value: 4, label: \"Thu\" },\n { value: 5, label: \"Fri\" },\n { value: 6, label: \"Sat\" },\n] as const;\n\n/**\n * Preset colors for categories, labels, and other UI elements\n */\nexport const PRESET_COLORS = [\n \"#10B981\", // Emerald\n \"#3B82F6\", // Blue\n \"#F59E0B\", // Amber\n \"#EF4444\", // Red\n \"#8B5CF6\", // Purple\n \"#EC4899\", // Pink\n \"#14B8A6\", // Teal\n \"#F97316\", // Orange\n \"#6366F1\", // Indigo\n \"#84CC16\", // Lime\n];\n\n/**\n * Preset icons/emojis for categories and UI elements\n */\nexport const PRESET_ICONS = [\n \"📝\", // Writing/Notes\n \"💻\", // Coding/Tech\n \"🎨\", // Design/Art\n \"📊\", // Analytics/Data\n \"🔧\", // Tools/Settings\n \"📚\", // Learning/Docs\n \"💡\", // Ideas/Lightbulb\n \"🚀\", // Launch/Start\n \"⚡\", // Fast/Energy\n \"🎯\", // Target/Goal\n \"💊\", // Health/Medicine\n \"🥗\", // Food/Diet\n \"💧\", // Water/Hydration\n \"🏃\", // Exercise/Running\n \"😴\", // Sleep/Rest\n \"🧘\", // Meditation/Mindfulness\n \"💪\", // Strength/Fitness\n \"🍎\", // Health/Food\n \"🔗\", // Links/Connections\n];\n\n// ============================================================================\n// Linear\n// ============================================================================\n\nexport const LINEAR_PRIORITIES = [0, 1, 2, 3, 4] as const;\nexport type LinearPriorityValue = (typeof LINEAR_PRIORITIES)[number];\n\nexport const LINEAR_PRIORITY_COLORS: Record<LinearPriorityValue, string> = {\n 0: \"#6b7280\", // No priority - gray\n 1: \"#ef4444\", // Urgent - red\n 2: \"#f97316\", // High - orange\n 3: \"#eab308\", // Medium - yellow\n 4: \"#3b82f6\", // Low - blue\n};\n\n// ============================================================================\n// Cloud Agents\n// ============================================================================\n\nexport const CLOUD_AGENT_STATUSES = [\n \"CREATING\",\n \"RUNNING\",\n \"FINISHED\",\n \"FAILED\",\n \"CANCELLED\",\n] as const;\n\nexport const CLOUD_AGENT_STATUS_EMOJI: Record<string, string> = {\n CREATING: \"🔨\",\n RUNNING: \"⏳\",\n FINISHED: \"✅\",\n FAILED: \"❌\",\n CANCELLED: \"🚫\",\n};\n\nexport const CLOUD_AGENT_STATUS_COLORS: Record<string, string> = {\n CREATING: \"#3b82f6\",\n RUNNING: \"#3b82f6\",\n FINISHED: \"#10b981\",\n FAILED: \"#ef4444\",\n CANCELLED: \"#6b7280\",\n};\n\n// ============================================================================\n// API URLs\n// ============================================================================\n\nexport const API_URLS = {\n CURSOR_CLOUD: \"https://api.cursor.com\",\n LINEAR_GRAPHQL: \"https://api.linear.app/graphql\",\n} as const;\n\n// ============================================================================\n// Settings Keys\n// ============================================================================\n\nexport const SETTING_KEYS = {\n // AI\n AI_MODEL: \"ai_model\",\n AI_REASONING_ENABLED: \"ai_reasoning_enabled\",\n\n // API Keys\n OPENAI_API_KEY: \"openai_api_key\",\n ANTHROPIC_API_KEY: \"anthropic_api_key\",\n CURSOR_API_KEY: \"cursor_api_key\",\n LINEAR_API_KEY: \"linear_api_key\",\n\n // Google\n GOOGLE_CLIENT_ID: \"google_client_id\",\n GOOGLE_CLIENT_SECRET: \"google_client_secret\",\n GOOGLE_CALENDAR_TOKENS: \"google_calendar_tokens\",\n SELECTED_CALENDAR_IDS: \"selected_calendar_ids\",\n} as const;\n\nexport type SettingKey = (typeof SETTING_KEYS)[keyof typeof SETTING_KEYS];\n"],"mappings":"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","names":[]}
@@ -33,8 +33,98 @@ var FREQUENCY_MULTIPLIERS = {
33
33
  weekly: 52,
34
34
  "one-time": 1
35
35
  };
36
+ var FREQUENCY_OPTIONS = [
37
+ { value: "monthly", label: "Monthly" },
38
+ { value: "yearly", label: "Yearly" },
39
+ { value: "6-monthly", label: "Every 6 Months" },
40
+ { value: "weekly", label: "Weekly" },
41
+ { value: "one-time", label: "One Time" }
42
+ ];
36
43
  var DEFAULT_FOCUS_DURATIONS = [15, 25, 30, 45, 60, 90];
37
44
  var FOCUS_STATUS = ["active", "completed", "abandoned"];
45
+ var HEALTH_FREQUENCY_TYPES = [
46
+ "daily",
47
+ "specific_days",
48
+ "times_per_week",
49
+ "times_per_month"
50
+ ];
51
+ var HEALTH_FREQUENCY_LABELS = {
52
+ daily: "Daily",
53
+ specific_days: "Specific Days",
54
+ times_per_week: "Times per Week",
55
+ times_per_month: "Times per Month"
56
+ };
57
+ var DAY_OPTIONS = [
58
+ { value: 0, label: "Sun" },
59
+ { value: 1, label: "Mon" },
60
+ { value: 2, label: "Tue" },
61
+ { value: 3, label: "Wed" },
62
+ { value: 4, label: "Thu" },
63
+ { value: 5, label: "Fri" },
64
+ { value: 6, label: "Sat" }
65
+ ];
66
+ var PRESET_COLORS = [
67
+ "#10B981",
68
+ // Emerald
69
+ "#3B82F6",
70
+ // Blue
71
+ "#F59E0B",
72
+ // Amber
73
+ "#EF4444",
74
+ // Red
75
+ "#8B5CF6",
76
+ // Purple
77
+ "#EC4899",
78
+ // Pink
79
+ "#14B8A6",
80
+ // Teal
81
+ "#F97316",
82
+ // Orange
83
+ "#6366F1",
84
+ // Indigo
85
+ "#84CC16"
86
+ // Lime
87
+ ];
88
+ var PRESET_ICONS = [
89
+ "\u{1F4DD}",
90
+ // Writing/Notes
91
+ "\u{1F4BB}",
92
+ // Coding/Tech
93
+ "\u{1F3A8}",
94
+ // Design/Art
95
+ "\u{1F4CA}",
96
+ // Analytics/Data
97
+ "\u{1F527}",
98
+ // Tools/Settings
99
+ "\u{1F4DA}",
100
+ // Learning/Docs
101
+ "\u{1F4A1}",
102
+ // Ideas/Lightbulb
103
+ "\u{1F680}",
104
+ // Launch/Start
105
+ "\u26A1",
106
+ // Fast/Energy
107
+ "\u{1F3AF}",
108
+ // Target/Goal
109
+ "\u{1F48A}",
110
+ // Health/Medicine
111
+ "\u{1F957}",
112
+ // Food/Diet
113
+ "\u{1F4A7}",
114
+ // Water/Hydration
115
+ "\u{1F3C3}",
116
+ // Exercise/Running
117
+ "\u{1F634}",
118
+ // Sleep/Rest
119
+ "\u{1F9D8}",
120
+ // Meditation/Mindfulness
121
+ "\u{1F4AA}",
122
+ // Strength/Fitness
123
+ "\u{1F34E}",
124
+ // Health/Food
125
+ "\u{1F517}"
126
+ // Links/Connections
127
+ ];
38
128
  var LINEAR_PRIORITIES = [0, 1, 2, 3, 4];
39
129
  var LINEAR_PRIORITY_COLORS = {
40
130
  0: "#6b7280",
@@ -96,13 +186,19 @@ export {
96
186
  CURRENCIES,
97
187
  CURRENCY_NAMES,
98
188
  CURRENCY_SYMBOLS,
189
+ DAY_OPTIONS,
99
190
  DEFAULT_FOCUS_DURATIONS,
100
191
  FOCUS_STATUS,
101
192
  FREQUENCIES,
102
193
  FREQUENCY_LABELS,
103
194
  FREQUENCY_MULTIPLIERS,
195
+ FREQUENCY_OPTIONS,
196
+ HEALTH_FREQUENCY_LABELS,
197
+ HEALTH_FREQUENCY_TYPES,
104
198
  LINEAR_PRIORITIES,
105
199
  LINEAR_PRIORITY_COLORS,
200
+ PRESET_COLORS,
201
+ PRESET_ICONS,
106
202
  SETTING_KEYS
107
203
  };
108
204
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/constants/index.ts"],"sourcesContent":["/**\n * Shared Constants\n *\n * Common constants used across Vanaheim apps.\n */\n\n// ============================================================================\n// Currency\n// ============================================================================\n\nexport const CURRENCIES = ['CHF', 'USD', 'EUR', 'PLN'] as const\nexport type Currency = (typeof CURRENCIES)[number]\n\nexport const CURRENCY_SYMBOLS: Record<Currency, string> = {\n CHF: 'CHF',\n USD: '$',\n EUR: '€',\n PLN: 'zł',\n}\n\nexport const CURRENCY_NAMES: Record<Currency, string> = {\n CHF: 'Swiss Franc',\n USD: 'US Dollar',\n EUR: 'Euro',\n PLN: 'Polish Złoty',\n}\n\n// ============================================================================\n// Frequency\n// ============================================================================\n\nexport const FREQUENCIES = [\n 'monthly',\n 'yearly',\n '6-monthly',\n 'weekly',\n 'one-time',\n] as const\nexport type Frequency = (typeof FREQUENCIES)[number]\n\nexport const FREQUENCY_LABELS: Record<Frequency, string> = {\n monthly: 'Monthly',\n yearly: 'Yearly',\n '6-monthly': 'Every 6 Months',\n weekly: 'Weekly',\n 'one-time': 'One Time',\n}\n\nexport const FREQUENCY_MULTIPLIERS: Record<Frequency, number> = {\n monthly: 12,\n yearly: 1,\n '6-monthly': 2,\n weekly: 52,\n 'one-time': 1,\n}\n\n// ============================================================================\n// Focus\n// ============================================================================\n\nexport const DEFAULT_FOCUS_DURATIONS = [15, 25, 30, 45, 60, 90] as const\nexport type FocusDuration = (typeof DEFAULT_FOCUS_DURATIONS)[number]\n\nexport const FOCUS_STATUS = ['active', 'completed', 'abandoned'] as const\nexport type FocusStatus = (typeof FOCUS_STATUS)[number]\n\n// ============================================================================\n// Linear\n// ============================================================================\n\nexport const LINEAR_PRIORITIES = [0, 1, 2, 3, 4] as const\nexport type LinearPriorityValue = (typeof LINEAR_PRIORITIES)[number]\n\nexport const LINEAR_PRIORITY_COLORS: Record<LinearPriorityValue, string> = {\n 0: '#6b7280', // No priority - gray\n 1: '#ef4444', // Urgent - red\n 2: '#f97316', // High - orange\n 3: '#eab308', // Medium - yellow\n 4: '#3b82f6', // Low - blue\n}\n\n// ============================================================================\n// Cloud Agents\n// ============================================================================\n\nexport const CLOUD_AGENT_STATUSES = [\n 'CREATING',\n 'RUNNING',\n 'FINISHED',\n 'FAILED',\n 'CANCELLED',\n] as const\n\nexport const CLOUD_AGENT_STATUS_EMOJI: Record<string, string> = {\n CREATING: '🔨',\n RUNNING: '⏳',\n FINISHED: '✅',\n FAILED: '❌',\n CANCELLED: '🚫',\n}\n\nexport const CLOUD_AGENT_STATUS_COLORS: Record<string, string> = {\n CREATING: '#3b82f6',\n RUNNING: '#3b82f6',\n FINISHED: '#10b981',\n FAILED: '#ef4444',\n CANCELLED: '#6b7280',\n}\n\n// ============================================================================\n// API URLs\n// ============================================================================\n\nexport const API_URLS = {\n CURSOR_CLOUD: 'https://api.cursor.com',\n LINEAR_GRAPHQL: 'https://api.linear.app/graphql',\n} as const\n\n// ============================================================================\n// Settings Keys\n// ============================================================================\n\nexport const SETTING_KEYS = {\n // AI\n AI_MODEL: 'ai_model',\n AI_REASONING_ENABLED: 'ai_reasoning_enabled',\n\n // API Keys\n OPENAI_API_KEY: 'openai_api_key',\n ANTHROPIC_API_KEY: 'anthropic_api_key',\n CURSOR_API_KEY: 'cursor_api_key',\n LINEAR_API_KEY: 'linear_api_key',\n\n // Google\n GOOGLE_CLIENT_ID: 'google_client_id',\n GOOGLE_CLIENT_SECRET: 'google_client_secret',\n GOOGLE_CALENDAR_TOKENS: 'google_calendar_tokens',\n SELECTED_CALENDAR_IDS: 'selected_calendar_ids',\n} as const\n\nexport type SettingKey = (typeof SETTING_KEYS)[keyof typeof SETTING_KEYS]\n\n"],"mappings":";AAUO,IAAM,aAAa,CAAC,OAAO,OAAO,OAAO,KAAK;AAG9C,IAAM,mBAA6C;AAAA,EACxD,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;AAEO,IAAM,iBAA2C;AAAA,EACtD,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AACP;AAMO,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,mBAA8C;AAAA,EACzD,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,YAAY;AACd;AAEO,IAAM,wBAAmD;AAAA,EAC9D,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,YAAY;AACd;AAMO,IAAM,0BAA0B,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;AAGvD,IAAM,eAAe,CAAC,UAAU,aAAa,WAAW;AAOxD,IAAM,oBAAoB,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;AAGxC,IAAM,yBAA8D;AAAA,EACzE,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AAAA,EACH,GAAG;AAAA;AACL;AAMO,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,2BAAmD;AAAA,EAC9D,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AACb;AAEO,IAAM,4BAAoD;AAAA,EAC/D,UAAU;AAAA,EACV,SAAS;AAAA,EACT,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,WAAW;AACb;AAMO,IAAM,WAAW;AAAA,EACtB,cAAc;AAAA,EACd,gBAAgB;AAClB;AAMO,IAAM,eAAe;AAAA;AAAA,EAE1B,UAAU;AAAA,EACV,sBAAsB;AAAA;AAAA,EAGtB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA;AAAA,EAGhB,kBAAkB;AAAA,EAClB,sBAAsB;AAAA,EACtB,wBAAwB;AAAA,EACxB,uBAAuB;AACzB;","names":[]}
1
+ {"version":3,"sources":["../../src/constants/index.ts"],"sourcesContent":["/**\n * Shared Constants\n *\n * Common constants used across Vanaheim apps.\n */\n\n// ============================================================================\n// Currency\n// ============================================================================\n\nexport const CURRENCIES = [\"CHF\", \"USD\", \"EUR\", \"PLN\"] as const;\nexport type Currency = (typeof CURRENCIES)[number];\n\nexport const CURRENCY_SYMBOLS: Record<Currency, string> = {\n CHF: \"CHF\",\n USD: \"$\",\n EUR: \"€\",\n PLN: \"zł\",\n};\n\nexport const CURRENCY_NAMES: Record<Currency, string> = {\n CHF: \"Swiss Franc\",\n USD: \"US Dollar\",\n EUR: \"Euro\",\n PLN: \"Polish Złoty\",\n};\n\n// ============================================================================\n// Frequency\n// ============================================================================\n\nexport const FREQUENCIES = [\n \"monthly\",\n \"yearly\",\n \"6-monthly\",\n \"weekly\",\n \"one-time\",\n] as const;\nexport type Frequency = (typeof FREQUENCIES)[number];\n\nexport const FREQUENCY_LABELS: Record<Frequency, string> = {\n monthly: \"Monthly\",\n yearly: \"Yearly\",\n \"6-monthly\": \"Every 6 Months\",\n weekly: \"Weekly\",\n \"one-time\": \"One Time\",\n};\n\nexport const FREQUENCY_MULTIPLIERS: Record<Frequency, number> = {\n monthly: 12,\n yearly: 1,\n \"6-monthly\": 2,\n weekly: 52,\n \"one-time\": 1,\n};\n\n/**\n * Frequency options for dropdowns/toggle groups\n * Format: { value: Frequency, label: string }\n */\nexport const FREQUENCY_OPTIONS = [\n { value: \"monthly\" as const, label: \"Monthly\" },\n { value: \"yearly\" as const, label: \"Yearly\" },\n { value: \"6-monthly\" as const, label: \"Every 6 Months\" },\n { value: \"weekly\" as const, label: \"Weekly\" },\n { value: \"one-time\" as const, label: \"One Time\" },\n];\n\n// ============================================================================\n// Focus\n// ============================================================================\n\nexport const DEFAULT_FOCUS_DURATIONS = [15, 25, 30, 45, 60, 90] as const;\nexport type FocusDuration = (typeof DEFAULT_FOCUS_DURATIONS)[number];\n\nexport const FOCUS_STATUS = [\"active\", \"completed\", \"abandoned\"] as const;\nexport type FocusStatus = (typeof FOCUS_STATUS)[number];\n\n// ============================================================================\n// Health & Habits\n// ============================================================================\n\nexport const HEALTH_FREQUENCY_TYPES = [\n \"daily\",\n \"specific_days\",\n \"times_per_week\",\n \"times_per_month\",\n] as const;\n\nexport const HEALTH_FREQUENCY_LABELS: Record<string, string> = {\n daily: \"Daily\",\n specific_days: \"Specific Days\",\n times_per_week: \"Times per Week\",\n times_per_month: \"Times per Month\",\n};\n\nexport const DAY_OPTIONS = [\n { value: 0, label: \"Sun\" },\n { value: 1, label: \"Mon\" },\n { value: 2, label: \"Tue\" },\n { value: 3, label: \"Wed\" },\n { value: 4, label: \"Thu\" },\n { value: 5, label: \"Fri\" },\n { value: 6, label: \"Sat\" },\n] as const;\n\n/**\n * Preset colors for categories, labels, and other UI elements\n */\nexport const PRESET_COLORS = [\n \"#10B981\", // Emerald\n \"#3B82F6\", // Blue\n \"#F59E0B\", // Amber\n \"#EF4444\", // Red\n \"#8B5CF6\", // Purple\n \"#EC4899\", // Pink\n \"#14B8A6\", // Teal\n \"#F97316\", // Orange\n \"#6366F1\", // Indigo\n \"#84CC16\", // Lime\n];\n\n/**\n * Preset icons/emojis for categories and UI elements\n */\nexport const PRESET_ICONS = [\n \"📝\", // Writing/Notes\n \"💻\", // Coding/Tech\n \"🎨\", // Design/Art\n \"📊\", // Analytics/Data\n \"🔧\", // Tools/Settings\n \"📚\", // Learning/Docs\n \"💡\", // Ideas/Lightbulb\n \"🚀\", // Launch/Start\n \"⚡\", // Fast/Energy\n \"🎯\", // Target/Goal\n \"💊\", // Health/Medicine\n \"🥗\", // Food/Diet\n \"💧\", // Water/Hydration\n \"🏃\", // Exercise/Running\n \"😴\", // Sleep/Rest\n \"🧘\", // Meditation/Mindfulness\n \"💪\", // Strength/Fitness\n \"🍎\", // Health/Food\n \"🔗\", // Links/Connections\n];\n\n// ============================================================================\n// Linear\n// ============================================================================\n\nexport const LINEAR_PRIORITIES = [0, 1, 2, 3, 4] as const;\nexport type LinearPriorityValue = (typeof LINEAR_PRIORITIES)[number];\n\nexport const LINEAR_PRIORITY_COLORS: Record<LinearPriorityValue, string> = {\n 0: \"#6b7280\", // No priority - gray\n 1: \"#ef4444\", // Urgent - red\n 2: \"#f97316\", // High - orange\n 3: \"#eab308\", // Medium - yellow\n 4: \"#3b82f6\", // Low - blue\n};\n\n// ============================================================================\n// Cloud Agents\n// ============================================================================\n\nexport const CLOUD_AGENT_STATUSES = [\n \"CREATING\",\n \"RUNNING\",\n \"FINISHED\",\n \"FAILED\",\n \"CANCELLED\",\n] as const;\n\nexport const CLOUD_AGENT_STATUS_EMOJI: Record<string, string> = {\n CREATING: \"🔨\",\n RUNNING: \"⏳\",\n FINISHED: \"✅\",\n FAILED: \"❌\",\n CANCELLED: \"🚫\",\n};\n\nexport const CLOUD_AGENT_STATUS_COLORS: Record<string, string> = {\n CREATING: \"#3b82f6\",\n RUNNING: \"#3b82f6\",\n FINISHED: \"#10b981\",\n FAILED: \"#ef4444\",\n CANCELLED: \"#6b7280\",\n};\n\n// ============================================================================\n// API URLs\n// ============================================================================\n\nexport const API_URLS = {\n CURSOR_CLOUD: \"https://api.cursor.com\",\n LINEAR_GRAPHQL: \"https://api.linear.app/graphql\",\n} as const;\n\n// ============================================================================\n// Settings Keys\n// ============================================================================\n\nexport const SETTING_KEYS = {\n // AI\n AI_MODEL: \"ai_model\",\n AI_REASONING_ENABLED: \"ai_reasoning_enabled\",\n\n // API Keys\n OPENAI_API_KEY: \"openai_api_key\",\n ANTHROPIC_API_KEY: \"anthropic_api_key\",\n CURSOR_API_KEY: \"cursor_api_key\",\n LINEAR_API_KEY: \"linear_api_key\",\n\n // Google\n GOOGLE_CLIENT_ID: \"google_client_id\",\n GOOGLE_CLIENT_SECRET: \"google_client_secret\",\n GOOGLE_CALENDAR_TOKENS: \"google_calendar_tokens\",\n SELECTED_CALENDAR_IDS: \"selected_calendar_ids\",\n} as const;\n\nexport type SettingKey = (typeof SETTING_KEYS)[keyof typeof SETTING_KEYS];\n"],"mappings":"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","names":[]}
@@ -110,7 +110,7 @@ interface NewFocusCategory {
110
110
  sortOrder?: number;
111
111
  isDefault?: boolean;
112
112
  }
113
- type FocusSessionStatus = 'active' | 'completed' | 'abandoned';
113
+ type FocusSessionStatus = "active" | "completed" | "abandoned";
114
114
  interface FocusSession {
115
115
  id: string;
116
116
  userId: string;
@@ -140,7 +140,7 @@ interface FocusSessionFilters {
140
140
  startedAfter?: string;
141
141
  startedBefore?: string;
142
142
  }
143
- type ChatMessageRole = 'user' | 'assistant' | 'system';
143
+ type ChatMessageRole = "user" | "assistant" | "system";
144
144
  interface ChatConversation {
145
145
  id: string;
146
146
  userId: string;
@@ -181,7 +181,7 @@ interface NewEFLink {
181
181
  icon?: string | null;
182
182
  sortOrder?: number;
183
183
  }
184
- type LieuDayType = 'earned' | 'used';
184
+ type LieuDayType = "earned" | "used";
185
185
  interface LieuDay {
186
186
  id: string;
187
187
  userId: string;
@@ -196,8 +196,8 @@ interface NewLieuDay {
196
196
  date: string;
197
197
  reason?: string | null;
198
198
  }
199
- type BankConnectionStatus = 'pending' | 'linked' | 'expired' | 'error';
200
- type TransactionType = 'debit' | 'credit';
199
+ type BankConnectionStatus = "pending" | "linked" | "expired" | "error";
200
+ type TransactionType = "debit" | "credit";
201
201
  interface BankConnection {
202
202
  id: string;
203
203
  userId: string;
@@ -224,6 +224,90 @@ interface BankTransaction {
224
224
  transactionType: TransactionType | null;
225
225
  createdAt: string;
226
226
  }
227
+ interface HealthCategory {
228
+ id: string;
229
+ userId: string;
230
+ name: string;
231
+ icon: string;
232
+ color: string;
233
+ sortOrder: number;
234
+ isDefault: boolean;
235
+ createdAt: string;
236
+ updatedAt: string;
237
+ }
238
+ interface NewHealthCategory {
239
+ name: string;
240
+ icon: string;
241
+ color: string;
242
+ sortOrder?: number;
243
+ isDefault?: boolean;
244
+ }
245
+ type HealthFrequencyType = "daily" | "specific_days" | "times_per_week" | "times_per_month";
246
+ interface HealthFrequencyConfig {
247
+ days?: number[];
248
+ target?: number;
249
+ }
250
+ interface HealthHabit {
251
+ id: string;
252
+ userId: string;
253
+ categoryId: string;
254
+ name: string;
255
+ description: string | null;
256
+ frequencyType: HealthFrequencyType;
257
+ frequencyConfig: string | null;
258
+ targetAmount: number | null;
259
+ targetUnit: string | null;
260
+ streakCurrent: number;
261
+ streakBest: number;
262
+ isActive: boolean;
263
+ createdAt: string;
264
+ updatedAt: string;
265
+ category?: HealthCategory;
266
+ }
267
+ interface NewHealthHabit {
268
+ categoryId: string;
269
+ name: string;
270
+ description?: string | null;
271
+ frequencyType: HealthFrequencyType;
272
+ frequencyConfig?: HealthFrequencyConfig | null;
273
+ targetAmount?: number | null;
274
+ targetUnit?: string | null;
275
+ isActive?: boolean;
276
+ }
277
+ interface HealthCompletion {
278
+ id: string;
279
+ habitId: string;
280
+ userId: string;
281
+ date: string;
282
+ completedAt: string;
283
+ notes: string | null;
284
+ }
285
+ interface NewHealthCompletion {
286
+ habitId: string;
287
+ date?: string;
288
+ notes?: string | null;
289
+ }
290
+ interface HealthHabitFilters {
291
+ categoryId?: string;
292
+ isActive?: boolean;
293
+ frequencyType?: HealthFrequencyType;
294
+ }
295
+ interface HealthCompletionFilters {
296
+ habitId?: string;
297
+ dateFrom?: string;
298
+ dateTo?: string;
299
+ }
300
+ interface HealthStats {
301
+ totalHabits: number;
302
+ dailyHabits: number;
303
+ weeklyHabits: number;
304
+ completedToday: number;
305
+ pendingToday: number;
306
+ completionRate: number;
307
+ totalStreak: number;
308
+ bestStreak: number;
309
+ weeklyCompletions: number;
310
+ }
227
311
  interface Setting {
228
312
  id: string;
229
313
  userId: string;
@@ -237,4 +321,4 @@ interface ExchangeRate {
237
321
  updatedAt: string;
238
322
  }
239
323
 
240
- export type { BankConnectionStatus as B, ChatMessageRole as C, ExpenseCategory as E, FocusCategory as F, IncomeCategory as I, LieuDayType as L, NewExpenseCategory as N, Setting as S, TransactionType as T, Expense as a, NewExpense as b, NewIncomeCategory as c, Income as d, NewIncome as e, NewFocusCategory as f, FocusSessionStatus as g, FocusSession as h, NewFocusSession as i, FocusSessionFilters as j, ChatConversation as k, NewChatConversation as l, ChatMessage as m, NewChatMessage as n, EFLink as o, NewEFLink as p, LieuDay as q, NewLieuDay as r, BankConnection as s, BankTransaction as t, ExchangeRate as u };
324
+ export type { NewHealthCompletion as A, BankConnectionStatus as B, ChatMessageRole as C, HealthHabitFilters as D, ExpenseCategory as E, FocusCategory as F, HealthCompletionFilters as G, HealthCategory as H, IncomeCategory as I, HealthStats as J, ExchangeRate as K, LieuDayType as L, NewExpenseCategory as N, Setting as S, TransactionType as T, Expense as a, NewExpense as b, NewIncomeCategory as c, Income as d, NewIncome as e, NewFocusCategory as f, FocusSessionStatus as g, FocusSession as h, NewFocusSession as i, FocusSessionFilters as j, ChatConversation as k, NewChatConversation as l, ChatMessage as m, NewChatMessage as n, EFLink as o, NewEFLink as p, LieuDay as q, NewLieuDay as r, BankConnection as s, BankTransaction as t, NewHealthCategory as u, HealthFrequencyType as v, HealthFrequencyConfig as w, HealthHabit as x, NewHealthHabit as y, HealthCompletion as z };