@focus8/settings-registry 0.1.0 → 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.
package/dist/index.d.ts CHANGED
@@ -51,6 +51,17 @@ export type AllDayPreset = {
51
51
  };
52
52
  export declare const SETTINGS_CATEGORIES: readonly ["appearance", "calendarView", "calendars", "sound", "timer", "media", "lockScreen", "touch", "device", "language", "notification", "chronological", "eventForm", "chronologicalEventForm"];
53
53
  export type SettingsCategory = (typeof SETTINGS_CATEGORIES)[number];
54
+ export declare const CATEGORY_LABELS: Record<SettingsCategory, string>;
55
+ export declare const CATEGORY_ICONS: Record<SettingsCategory, string>;
56
+ /** Categories only shown for chronological calendar type */
57
+ export declare const CHRONOLOGICAL_ONLY_CATEGORIES: ReadonlySet<SettingsCategory>;
58
+ /** Categories only shown for time-based calendar type */
59
+ export declare const TIME_BASED_ONLY_CATEGORIES: ReadonlySet<SettingsCategory>;
60
+ /**
61
+ * Filter categories based on the active calendar type.
62
+ * Categories not exclusive to either type are always included.
63
+ */
64
+ export declare function getCategoriesForCalendarType(calendarType: CalendarType): SettingsCategory[];
54
65
  export type SettingsDataType = 'string' | 'number' | 'boolean' | 'json';
55
66
  export type SettingDef<T = unknown> = {
56
67
  category: SettingsCategory;
@@ -205,7 +216,51 @@ export declare class SettingsRegistry {
205
216
  serialize(key: SettingKey, value: unknown): string;
206
217
  /** Deserialize a DB string back to a typed setting value */
207
218
  deserialize<K extends SettingKey>(key: K, raw: string | null): SettingValue<K>;
219
+ /**
220
+ * Get the category for a setting key.
221
+ * Returns undefined if the key is not recognized.
222
+ */
223
+ getCategory(key: string): SettingsCategory | undefined;
224
+ /**
225
+ * Get a human-readable label for a setting key.
226
+ * Strips the category prefix and formats the remaining path.
227
+ * Example: 'lockScreen.inactivityTimeoutMinutes' → 'Inactivity Timeout Minutes'
228
+ */
229
+ getSettingLabel(key: string): string;
208
230
  }
231
+ export type ParsedSettingEntry = {
232
+ /** The full setting key (e.g. 'lockScreen.inactivityTimeoutMinutes') */
233
+ key: string;
234
+ /** The setting name without category prefix (e.g. 'inactivityTimeoutMinutes') */
235
+ name: string;
236
+ /** Human-readable label (e.g. 'Inactivity Timeout Minutes') */
237
+ label: string;
238
+ /** The setting value */
239
+ value: unknown;
240
+ };
241
+ export type ParsedSettingsGroup = {
242
+ /** The category key */
243
+ category: SettingsCategory;
244
+ /** Human-readable category label */
245
+ label: string;
246
+ /** Settings in this category */
247
+ settings: ParsedSettingEntry[];
248
+ };
249
+ /**
250
+ * Parse a settings JSON snapshot into categorized groups, optionally filtered
251
+ * by calendar type. This is the single function both web and mobile should use
252
+ * to display a settings snapshot.
253
+ *
254
+ * @param json The raw JSON string from the settings snapshot
255
+ * @param calendarType Optional calendar type filter — hides irrelevant categories
256
+ * @param registry Optional registry instance (uses defaultRegistry if omitted)
257
+ */
258
+ export declare function parseSettingsSnapshot(json: string, calendarType?: CalendarType, registry?: SettingsRegistry): ParsedSettingsGroup[];
259
+ /**
260
+ * Format a setting value for display.
261
+ * Handles booleans, numbers, strings, arrays, objects, and null/undefined.
262
+ */
263
+ export declare function formatSettingValue(value: unknown): string;
209
264
  export declare const defaultRegistry: SettingsRegistry;
210
265
  export declare function createSettingsRegistry(config?: Partial<RegistryConfig>): {
211
266
  readonly 'appearance.theme': SettingDef<ThemeSetting>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -33,6 +33,68 @@ export const SETTINGS_CATEGORIES = [
33
33
  'eventForm',
34
34
  'chronologicalEventForm',
35
35
  ];
36
+ // ---------------------------------------------------------------------------
37
+ // Category display labels — human-readable names for UI rendering
38
+ // ---------------------------------------------------------------------------
39
+ export const CATEGORY_LABELS = {
40
+ appearance: 'Appearance',
41
+ calendarView: 'Calendar View',
42
+ calendars: 'Calendars',
43
+ sound: 'Sound & Alerts',
44
+ timer: 'Timer',
45
+ media: 'Media',
46
+ lockScreen: 'Lock Screen',
47
+ touch: 'Touch & Gestures',
48
+ device: 'Device',
49
+ language: 'Language',
50
+ notification: 'Notifications',
51
+ chronological: 'Chronological',
52
+ eventForm: 'Event Form',
53
+ chronologicalEventForm: 'Event Form (Chronological)',
54
+ };
55
+ // ---------------------------------------------------------------------------
56
+ // Category icons — lucide icon names matching the mobile app
57
+ // ---------------------------------------------------------------------------
58
+ export const CATEGORY_ICONS = {
59
+ appearance: 'Palette',
60
+ calendarView: 'Eye',
61
+ calendars: 'Calendar',
62
+ sound: 'Volume2',
63
+ timer: 'Timer',
64
+ media: 'Images',
65
+ lockScreen: 'Lock',
66
+ touch: 'Hand',
67
+ device: 'Smartphone',
68
+ language: 'Globe',
69
+ notification: 'Bell',
70
+ chronological: 'List',
71
+ eventForm: 'CalendarPlus',
72
+ chronologicalEventForm: 'CalendarPlus',
73
+ };
74
+ // ---------------------------------------------------------------------------
75
+ // Calendar-type filtering — which categories are exclusive to a calendar type
76
+ // ---------------------------------------------------------------------------
77
+ /** Categories only shown for chronological calendar type */
78
+ export const CHRONOLOGICAL_ONLY_CATEGORIES = new Set(['chronological', 'chronologicalEventForm']);
79
+ /** Categories only shown for time-based calendar type */
80
+ export const TIME_BASED_ONLY_CATEGORIES = new Set(['eventForm']);
81
+ /**
82
+ * Filter categories based on the active calendar type.
83
+ * Categories not exclusive to either type are always included.
84
+ */
85
+ export function getCategoriesForCalendarType(calendarType) {
86
+ return SETTINGS_CATEGORIES.filter((cat) => {
87
+ if (calendarType === 'time-based' &&
88
+ CHRONOLOGICAL_ONLY_CATEGORIES.has(cat)) {
89
+ return false;
90
+ }
91
+ if (calendarType === 'chronological' &&
92
+ TIME_BASED_ONLY_CATEGORIES.has(cat)) {
93
+ return false;
94
+ }
95
+ return true;
96
+ });
97
+ }
36
98
  /** Default config for non-enrolled mode */
37
99
  export const DEFAULT_REGISTRY_CONFIG = {
38
100
  isEnrolled: false,
@@ -277,6 +339,110 @@ export class SettingsRegistry {
277
339
  }
278
340
  }
279
341
  }
342
+ /**
343
+ * Get the category for a setting key.
344
+ * Returns undefined if the key is not recognized.
345
+ */
346
+ getCategory(key) {
347
+ if (key in this.entries) {
348
+ return this.entries[key].category;
349
+ }
350
+ // Fallback: extract category from dot-prefix
351
+ const dotIndex = key.indexOf('.');
352
+ if (dotIndex > 0) {
353
+ const prefix = key.substring(0, dotIndex);
354
+ if (SETTINGS_CATEGORIES.includes(prefix)) {
355
+ return prefix;
356
+ }
357
+ }
358
+ return undefined;
359
+ }
360
+ /**
361
+ * Get a human-readable label for a setting key.
362
+ * Strips the category prefix and formats the remaining path.
363
+ * Example: 'lockScreen.inactivityTimeoutMinutes' → 'Inactivity Timeout Minutes'
364
+ */
365
+ getSettingLabel(key) {
366
+ const dotIndex = key.indexOf('.');
367
+ const name = dotIndex > 0 ? key.substring(dotIndex + 1) : key;
368
+ // Convert camelCase / dot-separated path to Title Case words
369
+ return name
370
+ .replace(/\./g, ' › ')
371
+ .replace(/([a-z])([A-Z])/g, '$1 $2')
372
+ .replace(/^./, (c) => c.toUpperCase());
373
+ }
374
+ }
375
+ /**
376
+ * Parse a settings JSON snapshot into categorized groups, optionally filtered
377
+ * by calendar type. This is the single function both web and mobile should use
378
+ * to display a settings snapshot.
379
+ *
380
+ * @param json The raw JSON string from the settings snapshot
381
+ * @param calendarType Optional calendar type filter — hides irrelevant categories
382
+ * @param registry Optional registry instance (uses defaultRegistry if omitted)
383
+ */
384
+ export function parseSettingsSnapshot(json, calendarType, registry = defaultRegistry) {
385
+ let parsed;
386
+ try {
387
+ parsed = JSON.parse(json);
388
+ }
389
+ catch {
390
+ return [];
391
+ }
392
+ const groups = new Map();
393
+ for (const [key, value] of Object.entries(parsed)) {
394
+ const category = registry.getCategory(key);
395
+ if (!category) {
396
+ continue;
397
+ }
398
+ const dotIndex = key.indexOf('.');
399
+ const name = dotIndex > 0 ? key.substring(dotIndex + 1) : key;
400
+ if (!groups.has(category)) {
401
+ groups.set(category, []);
402
+ }
403
+ groups.get(category).push({
404
+ key,
405
+ name,
406
+ label: registry.getSettingLabel(key),
407
+ value,
408
+ });
409
+ }
410
+ // Determine which categories to show
411
+ const allowedCategories = calendarType
412
+ ? getCategoriesForCalendarType(calendarType)
413
+ : [...SETTINGS_CATEGORIES];
414
+ return allowedCategories
415
+ .filter((cat) => groups.has(cat))
416
+ .map((category) => ({
417
+ category,
418
+ label: CATEGORY_LABELS[category],
419
+ settings: groups.get(category),
420
+ }));
421
+ }
422
+ /**
423
+ * Format a setting value for display.
424
+ * Handles booleans, numbers, strings, arrays, objects, and null/undefined.
425
+ */
426
+ export function formatSettingValue(value) {
427
+ if (value === null || value === undefined) {
428
+ return '—';
429
+ }
430
+ if (typeof value === 'boolean') {
431
+ return value ? 'true' : 'false';
432
+ }
433
+ if (typeof value === 'number') {
434
+ return String(value);
435
+ }
436
+ if (typeof value === 'string') {
437
+ return value || '""';
438
+ }
439
+ if (Array.isArray(value)) {
440
+ return `[${value.length} items]`;
441
+ }
442
+ if (typeof value === 'object') {
443
+ return JSON.stringify(value);
444
+ }
445
+ return String(value);
280
446
  }
281
447
  // ---------------------------------------------------------------------------
282
448
  // Default registry instance (non-enrolled, system theme, nb locale)
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@focus8/settings-registry",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Shared settings registry for FocusPlanner — single source of truth for all app settings.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -100,6 +100,84 @@ export const SETTINGS_CATEGORIES = [
100
100
 
101
101
  export type SettingsCategory = (typeof SETTINGS_CATEGORIES)[number];
102
102
 
103
+ // ---------------------------------------------------------------------------
104
+ // Category display labels — human-readable names for UI rendering
105
+ // ---------------------------------------------------------------------------
106
+
107
+ export const CATEGORY_LABELS: Record<SettingsCategory, string> = {
108
+ appearance: 'Appearance',
109
+ calendarView: 'Calendar View',
110
+ calendars: 'Calendars',
111
+ sound: 'Sound & Alerts',
112
+ timer: 'Timer',
113
+ media: 'Media',
114
+ lockScreen: 'Lock Screen',
115
+ touch: 'Touch & Gestures',
116
+ device: 'Device',
117
+ language: 'Language',
118
+ notification: 'Notifications',
119
+ chronological: 'Chronological',
120
+ eventForm: 'Event Form',
121
+ chronologicalEventForm: 'Event Form (Chronological)',
122
+ };
123
+
124
+ // ---------------------------------------------------------------------------
125
+ // Category icons — lucide icon names matching the mobile app
126
+ // ---------------------------------------------------------------------------
127
+
128
+ export const CATEGORY_ICONS: Record<SettingsCategory, string> = {
129
+ appearance: 'Palette',
130
+ calendarView: 'Eye',
131
+ calendars: 'Calendar',
132
+ sound: 'Volume2',
133
+ timer: 'Timer',
134
+ media: 'Images',
135
+ lockScreen: 'Lock',
136
+ touch: 'Hand',
137
+ device: 'Smartphone',
138
+ language: 'Globe',
139
+ notification: 'Bell',
140
+ chronological: 'List',
141
+ eventForm: 'CalendarPlus',
142
+ chronologicalEventForm: 'CalendarPlus',
143
+ };
144
+
145
+ // ---------------------------------------------------------------------------
146
+ // Calendar-type filtering — which categories are exclusive to a calendar type
147
+ // ---------------------------------------------------------------------------
148
+
149
+ /** Categories only shown for chronological calendar type */
150
+ export const CHRONOLOGICAL_ONLY_CATEGORIES: ReadonlySet<SettingsCategory> =
151
+ new Set<SettingsCategory>(['chronological', 'chronologicalEventForm']);
152
+
153
+ /** Categories only shown for time-based calendar type */
154
+ export const TIME_BASED_ONLY_CATEGORIES: ReadonlySet<SettingsCategory> =
155
+ new Set<SettingsCategory>(['eventForm']);
156
+
157
+ /**
158
+ * Filter categories based on the active calendar type.
159
+ * Categories not exclusive to either type are always included.
160
+ */
161
+ export function getCategoriesForCalendarType(
162
+ calendarType: CalendarType,
163
+ ): SettingsCategory[] {
164
+ return SETTINGS_CATEGORIES.filter((cat) => {
165
+ if (
166
+ calendarType === 'time-based' &&
167
+ CHRONOLOGICAL_ONLY_CATEGORIES.has(cat)
168
+ ) {
169
+ return false;
170
+ }
171
+ if (
172
+ calendarType === 'chronological' &&
173
+ TIME_BASED_ONLY_CATEGORIES.has(cat)
174
+ ) {
175
+ return false;
176
+ }
177
+ return true;
178
+ });
179
+ }
180
+
103
181
  // ---------------------------------------------------------------------------
104
182
  // Data type discriminator — stored alongside each setting in the DB
105
183
  // ---------------------------------------------------------------------------
@@ -696,6 +774,147 @@ export class SettingsRegistry {
696
774
  }
697
775
  }
698
776
  }
777
+
778
+ /**
779
+ * Get the category for a setting key.
780
+ * Returns undefined if the key is not recognized.
781
+ */
782
+ getCategory(key: string): SettingsCategory | undefined {
783
+ if (key in this.entries) {
784
+ return this.entries[key as SettingKey].category;
785
+ }
786
+ // Fallback: extract category from dot-prefix
787
+ const dotIndex = key.indexOf('.');
788
+ if (dotIndex > 0) {
789
+ const prefix = key.substring(0, dotIndex);
790
+ if (SETTINGS_CATEGORIES.includes(prefix as SettingsCategory)) {
791
+ return prefix as SettingsCategory;
792
+ }
793
+ }
794
+ return undefined;
795
+ }
796
+
797
+ /**
798
+ * Get a human-readable label for a setting key.
799
+ * Strips the category prefix and formats the remaining path.
800
+ * Example: 'lockScreen.inactivityTimeoutMinutes' → 'Inactivity Timeout Minutes'
801
+ */
802
+ getSettingLabel(key: string): string {
803
+ const dotIndex = key.indexOf('.');
804
+ const name = dotIndex > 0 ? key.substring(dotIndex + 1) : key;
805
+ // Convert camelCase / dot-separated path to Title Case words
806
+ return name
807
+ .replace(/\./g, ' › ')
808
+ .replace(/([a-z])([A-Z])/g, '$1 $2')
809
+ .replace(/^./, (c) => c.toUpperCase());
810
+ }
811
+ }
812
+
813
+ // ---------------------------------------------------------------------------
814
+ // Snapshot parsing — parse a JSON settings snapshot into categorized groups
815
+ // ---------------------------------------------------------------------------
816
+
817
+ export type ParsedSettingEntry = {
818
+ /** The full setting key (e.g. 'lockScreen.inactivityTimeoutMinutes') */
819
+ key: string;
820
+ /** The setting name without category prefix (e.g. 'inactivityTimeoutMinutes') */
821
+ name: string;
822
+ /** Human-readable label (e.g. 'Inactivity Timeout Minutes') */
823
+ label: string;
824
+ /** The setting value */
825
+ value: unknown;
826
+ };
827
+
828
+ export type ParsedSettingsGroup = {
829
+ /** The category key */
830
+ category: SettingsCategory;
831
+ /** Human-readable category label */
832
+ label: string;
833
+ /** Settings in this category */
834
+ settings: ParsedSettingEntry[];
835
+ };
836
+
837
+ /**
838
+ * Parse a settings JSON snapshot into categorized groups, optionally filtered
839
+ * by calendar type. This is the single function both web and mobile should use
840
+ * to display a settings snapshot.
841
+ *
842
+ * @param json The raw JSON string from the settings snapshot
843
+ * @param calendarType Optional calendar type filter — hides irrelevant categories
844
+ * @param registry Optional registry instance (uses defaultRegistry if omitted)
845
+ */
846
+ export function parseSettingsSnapshot(
847
+ json: string,
848
+ calendarType?: CalendarType,
849
+ registry: SettingsRegistry = defaultRegistry,
850
+ ): ParsedSettingsGroup[] {
851
+ let parsed: Record<string, unknown>;
852
+ try {
853
+ parsed = JSON.parse(json);
854
+ } catch {
855
+ return [];
856
+ }
857
+
858
+ const groups = new Map<SettingsCategory, ParsedSettingEntry[]>();
859
+
860
+ for (const [key, value] of Object.entries(parsed)) {
861
+ const category = registry.getCategory(key);
862
+ if (!category) {
863
+ continue;
864
+ }
865
+
866
+ const dotIndex = key.indexOf('.');
867
+ const name = dotIndex > 0 ? key.substring(dotIndex + 1) : key;
868
+
869
+ if (!groups.has(category)) {
870
+ groups.set(category, []);
871
+ }
872
+ groups.get(category)!.push({
873
+ key,
874
+ name,
875
+ label: registry.getSettingLabel(key),
876
+ value,
877
+ });
878
+ }
879
+
880
+ // Determine which categories to show
881
+ const allowedCategories = calendarType
882
+ ? getCategoriesForCalendarType(calendarType)
883
+ : [...SETTINGS_CATEGORIES];
884
+
885
+ return allowedCategories
886
+ .filter((cat) => groups.has(cat))
887
+ .map((category) => ({
888
+ category,
889
+ label: CATEGORY_LABELS[category],
890
+ settings: groups.get(category)!,
891
+ }));
892
+ }
893
+
894
+ /**
895
+ * Format a setting value for display.
896
+ * Handles booleans, numbers, strings, arrays, objects, and null/undefined.
897
+ */
898
+ export function formatSettingValue(value: unknown): string {
899
+ if (value === null || value === undefined) {
900
+ return '—';
901
+ }
902
+ if (typeof value === 'boolean') {
903
+ return value ? 'true' : 'false';
904
+ }
905
+ if (typeof value === 'number') {
906
+ return String(value);
907
+ }
908
+ if (typeof value === 'string') {
909
+ return value || '""';
910
+ }
911
+ if (Array.isArray(value)) {
912
+ return `[${value.length} items]`;
913
+ }
914
+ if (typeof value === 'object') {
915
+ return JSON.stringify(value);
916
+ }
917
+ return String(value);
699
918
  }
700
919
 
701
920
  // ---------------------------------------------------------------------------