@guinetik/primitives-ts 0.10.0 → 0.12.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.
@@ -32,7 +32,7 @@ exports.FEATURE_LABELS = {
32
32
  files: 'File uploads',
33
33
  launchpad: 'Launchpad',
34
34
  users: 'Users',
35
- system: 'System monitoring',
35
+ system: 'Host',
36
36
  chat: 'Chat',
37
37
  agents: 'Agents',
38
38
  analytics: 'Analytics',
@@ -34,6 +34,7 @@ describe('access.types', () => {
34
34
  it('exposes a stable feature catalog', () => {
35
35
  expect(access_types_1.FEATURE_CATALOG).toContain('users');
36
36
  expect(access_types_1.FEATURE_CATALOG.length).toBe(11);
37
+ expect(access_types_1.FEATURE_LABELS.system).toBe('Host');
37
38
  });
38
39
  });
39
40
  describe('email feature key', () => {
@@ -48,4 +48,56 @@ export interface AnalyticsReport {
48
48
  totals: AnalyticsReportTotals;
49
49
  topPages: AnalyticsTopPageRow[];
50
50
  }
51
+ /** Whether a dashboard card loaded. */
52
+ export type AnalyticsCardStatus = 'ok' | 'error';
53
+ /** Persisted card definition (no metrics). */
54
+ export interface AnalyticsDashboardCardConfig {
55
+ /** Admin API resource name, e.g. `properties/123456`. */
56
+ propertyId: string;
57
+ displayName: string;
58
+ /** Admin API resource name, e.g. `accounts/123`. */
59
+ accountId: string;
60
+ order: number;
61
+ }
62
+ /** Percent change per metric versus the previous equal-length window. */
63
+ export interface AnalyticsTotalsDelta {
64
+ activeUsers: number;
65
+ sessions: number;
66
+ screenPageViews: number;
67
+ }
68
+ /** One rendered card. Metrics are absent when `status` is `'error'`. */
69
+ export interface AnalyticsDashboardCard extends AnalyticsDashboardCardConfig {
70
+ status: AnalyticsCardStatus;
71
+ totals?: AnalyticsReportTotals;
72
+ previous?: AnalyticsReportTotals;
73
+ delta?: AnalyticsTotalsDelta;
74
+ /** Sanitised reason; present only when `status` is `'error'`. */
75
+ reason?: string;
76
+ }
77
+ /**
78
+ * Daily `activeUsers` per property. `dates` is shared by every series;
79
+ * each array aligns to it index-for-index. A failed property has no entry.
80
+ */
81
+ export interface AnalyticsDashboardSeries {
82
+ /** ISO `yyyy-mm-dd`, ascending. */
83
+ dates: string[];
84
+ byProperty: Record<string, number[]>;
85
+ }
86
+ /** Batch dashboard payload. */
87
+ export interface AnalyticsDashboard {
88
+ dateRangePreset: AnalyticsDateRangePreset;
89
+ /** Resolved ISO date, not a GA relative token. */
90
+ startDate: string;
91
+ endDate: string;
92
+ cards: AnalyticsDashboardCard[];
93
+ series: AnalyticsDashboardSeries;
94
+ }
95
+ /**
96
+ * Percent change between two windows, rounded to one decimal.
97
+ * A zero previous window yields 0 when current is also 0, else 100.
98
+ *
99
+ * @param current - Metric total for the selected window.
100
+ * @param previous - Metric total for the preceding equal-length window.
101
+ */
102
+ export declare function percentChange(current: number, previous: number): number;
51
103
  //# sourceMappingURL=analytics.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analytics.types.d.ts","sourceRoot":"","sources":["../src/analytics.types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,iEAAiE;AACjE,MAAM,MAAM,wBAAwB,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAE5D,iEAAiE;AACjE,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,wBAAwB,CAAC;CAC3C;AAED,yCAAyC;AACzC,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B,oDAAoD;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,iBAAiB,EAAE,CAAC;CACjC;AAED,qDAAqD;AACrD,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,sCAAsC;AACtC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,yBAAyB;AACzB,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,wBAAwB,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC"}
1
+ {"version":3,"file":"analytics.types.d.ts","sourceRoot":"","sources":["../src/analytics.types.ts"],"names":[],"mappings":"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"}
@@ -4,3 +4,17 @@
4
4
  * Refresh tokens never appear in these types.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.percentChange = percentChange;
8
+ /**
9
+ * Percent change between two windows, rounded to one decimal.
10
+ * A zero previous window yields 0 when current is also 0, else 100.
11
+ *
12
+ * @param current - Metric total for the selected window.
13
+ * @param previous - Metric total for the preceding equal-length window.
14
+ */
15
+ function percentChange(current, previous) {
16
+ if (previous === 0) {
17
+ return current === 0 ? 0 : 100;
18
+ }
19
+ return Math.round(((current - previous) / previous) * 1000) / 10;
20
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=analytics.types.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.types.spec.d.ts","sourceRoot":"","sources":["../src/analytics.types.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const analytics_types_1 = require("./analytics.types");
4
+ describe('percentChange', () => {
5
+ it('computes a positive change', () => {
6
+ expect((0, analytics_types_1.percentChange)(110, 100)).toBe(10);
7
+ });
8
+ it('computes a negative change', () => {
9
+ expect((0, analytics_types_1.percentChange)(90, 100)).toBe(-10);
10
+ });
11
+ it('rounds to one decimal place', () => {
12
+ expect((0, analytics_types_1.percentChange)(103, 97)).toBe(6.2);
13
+ });
14
+ it('returns 0 when both windows are zero', () => {
15
+ expect((0, analytics_types_1.percentChange)(0, 0)).toBe(0);
16
+ });
17
+ it('returns 100 when the previous window was zero and there is now traffic', () => {
18
+ expect((0, analytics_types_1.percentChange)(5, 0)).toBe(100);
19
+ });
20
+ });
@@ -0,0 +1,30 @@
1
+ export type HomeWidgetType = 'launchpad' | 'clock' | 'webpage';
2
+ export type HomeWidgetColSpan = 1 | 2 | 3;
3
+ export interface LaunchpadWidgetConfig {
4
+ }
5
+ export interface ClockWidgetConfig {
6
+ timeZone: string;
7
+ preset: string;
8
+ }
9
+ export interface WebpageWidgetConfig {
10
+ url: string;
11
+ }
12
+ export type HomeWidgetConfig = LaunchpadWidgetConfig | ClockWidgetConfig | WebpageWidgetConfig;
13
+ export interface HomeDashboardWidget {
14
+ id: string;
15
+ type: HomeWidgetType;
16
+ colSpan: HomeWidgetColSpan;
17
+ order: number;
18
+ config: HomeWidgetConfig;
19
+ }
20
+ export interface HomeDashboard {
21
+ version: 1;
22
+ widgets: HomeDashboardWidget[];
23
+ }
24
+ export declare const HOME_WIDGET_TYPES: readonly HomeWidgetType[];
25
+ export declare const MAX_HOME_WIDGETS = 30;
26
+ export declare const CLOCK_DEFAULT_TIMEZONE = "America/Sao_Paulo";
27
+ export declare const CLOCK_DEFAULT_PRESET = "aurora";
28
+ export declare const CLOCK_PRESETS: readonly ["aurora", "grid"];
29
+ export declare function isHomeWidgetType(value: string): value is HomeWidgetType;
30
+ //# sourceMappingURL=home-dashboard.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-dashboard.types.d.ts","sourceRoot":"","sources":["../src/home-dashboard.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAE/D,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE1C,MAAM,WAAW,qBAAqB;CAErC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,gBAAgB,GACxB,qBAAqB,GACrB,iBAAiB,GACjB,mBAAmB,CAAC;AAExB,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAItD,CAAC;AAEF,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAE1D,eAAO,MAAM,oBAAoB,WAAW,CAAC;AAE7C,eAAO,MAAM,aAAa,6BAA8B,CAAC;AAEzD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,cAAc,CAEvE"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CLOCK_PRESETS = exports.CLOCK_DEFAULT_PRESET = exports.CLOCK_DEFAULT_TIMEZONE = exports.MAX_HOME_WIDGETS = exports.HOME_WIDGET_TYPES = void 0;
4
+ exports.isHomeWidgetType = isHomeWidgetType;
5
+ exports.HOME_WIDGET_TYPES = [
6
+ 'launchpad',
7
+ 'clock',
8
+ 'webpage',
9
+ ];
10
+ exports.MAX_HOME_WIDGETS = 30;
11
+ exports.CLOCK_DEFAULT_TIMEZONE = 'America/Sao_Paulo';
12
+ exports.CLOCK_DEFAULT_PRESET = 'aurora';
13
+ exports.CLOCK_PRESETS = ['aurora', 'grid'];
14
+ function isHomeWidgetType(value) {
15
+ return exports.HOME_WIDGET_TYPES.includes(value);
16
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=home-dashboard.types.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"home-dashboard.types.spec.d.ts","sourceRoot":"","sources":["../src/home-dashboard.types.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const website_firestore_types_1 = require("./website-firestore.types");
4
+ const home_dashboard_types_1 = require("./home-dashboard.types");
5
+ describe('home dashboard types', () => {
6
+ it('registers the Firestore collection', () => {
7
+ expect(website_firestore_types_1.FIRESTORE_COLLECTIONS.HOME_DASHBOARDS).toBe('home-dashboards');
8
+ });
9
+ it('accepts the three shipped types and rejects unknown ones', () => {
10
+ expect(home_dashboard_types_1.HOME_WIDGET_TYPES).toEqual(['launchpad', 'clock', 'webpage']);
11
+ expect((0, home_dashboard_types_1.isHomeWidgetType)('clock')).toBe(true);
12
+ expect((0, home_dashboard_types_1.isHomeWidgetType)('weather')).toBe(false);
13
+ });
14
+ it('caps a board at 30 widgets and defaults the clock', () => {
15
+ expect(home_dashboard_types_1.MAX_HOME_WIDGETS).toBe(30);
16
+ expect(home_dashboard_types_1.CLOCK_DEFAULT_TIMEZONE).toBe('America/Sao_Paulo');
17
+ expect(home_dashboard_types_1.CLOCK_DEFAULT_PRESET).toBe('aurora');
18
+ });
19
+ });
package/dist/index.d.ts CHANGED
@@ -21,6 +21,7 @@ export * from './type-guards';
21
21
  export * from './agent.types';
22
22
  export * from './file.types';
23
23
  export * from './launchpad.types';
24
+ export * from './home-dashboard.types';
24
25
  export * from './email.types';
25
26
  export * from './analytics.types';
26
27
  export type { Security, SecurityChallengeOptions, SecurityChallengeResult } from './security.interface';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,cAAc,CAAC;AAG7B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,cAAc,CAAC;AAG7B,cAAc,4BAA4B,CAAC;AAG3C,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,eAAe,CAAC;AAG9B,cAAc,cAAc,CAAC;AAG7B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,eAAe,CAAC;AAG9B,cAAc,mBAAmB,CAAC;AAGlC,YAAY,EAAE,QAAQ,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxG,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,cAAc,CAAC;AAG7B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,gBAAgB,CAAC;AAG/B,cAAc,iBAAiB,CAAC;AAGhC,cAAc,mBAAmB,CAAC;AAGlC,cAAc,2BAA2B,CAAC;AAG1C,cAAc,cAAc,CAAC;AAG7B,cAAc,4BAA4B,CAAC;AAG3C,cAAc,gBAAgB,CAAC;AAG/B,cAAc,cAAc,CAAC;AAG7B,cAAc,eAAe,CAAC;AAG9B,cAAc,eAAe,CAAC;AAG9B,cAAc,cAAc,CAAC;AAG7B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,eAAe,CAAC;AAG9B,cAAc,mBAAmB,CAAC;AAGlC,YAAY,EAAE,QAAQ,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACxG,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -52,6 +52,8 @@ __exportStar(require("./agent.types"), exports);
52
52
  __exportStar(require("./file.types"), exports);
53
53
  // Launchpad bookmark board types
54
54
  __exportStar(require("./launchpad.types"), exports);
55
+ // Per-user home dashboard widget types
56
+ __exportStar(require("./home-dashboard.types"), exports);
55
57
  // Email module types
56
58
  __exportStar(require("./email.types"), exports);
57
59
  // Google Analytics portal types
@@ -136,6 +136,7 @@ export declare const FIRESTORE_COLLECTIONS: {
136
136
  readonly TOTP_SECRETS: "totp_secrets";
137
137
  readonly LAUNCHPAD_GROUPS: "launchpad-groups";
138
138
  readonly LAUNCHPAD_ITEMS: "launchpad-items";
139
+ readonly HOME_DASHBOARDS: "home-dashboards";
139
140
  };
140
141
  /**
141
142
  * Firestore document IDs for singleton documents
@@ -1 +1 @@
1
- {"version":3,"file":"website-firestore.types.d.ts","sourceRoot":"","sources":["../src/website-firestore.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAMlF;;;;GAIG;AACH,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,iBAAiB;IACjB,KAAK,EAAE,MAAM,CAAC;IAEd,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IAEpB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IAEd,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEnC,mCAAmC;IACnC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEtC,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC,4BAA4B;IAC5B,KAAK,EAAE,YAAY,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,iBAAiB;IACrD,iBAAiB;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAc,SAAQ,iBAAiB,EAAE,KAAK;IAC7D,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IAEd,wBAAwB;IACxB,OAAO,EAAE,OAAO,CAAC;IAEjB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6BAA6B;IAC7B,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,iBAAiB,EAAE,IAAI;IAC9D,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IAEd,2BAA2B;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAElB,0BAA0B;IAC1B,OAAO,EAAE,OAAO,CAAC;IAEjB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAa,SAAQ,iBAAiB,EAAE,IAAI;IAC3D,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IAEd,uBAAuB;IACvB,OAAO,EAAE,OAAO,CAAC;IAEjB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB,EAAE,UAAU;IACvE,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IAEd,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IAEjB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAsB,SAAQ,iBAAiB;IAC9D,wBAAwB;IACxB,GAAG,EAAE,MAAM,CAAC;IAEZ,sEAAsE;IACtE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACxD;AAMD;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;CAWxB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC"}
1
+ {"version":3,"file":"website-firestore.types.d.ts","sourceRoot":"","sources":["../src/website-firestore.types.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ exports.FIRESTORE_COLLECTIONS = {
25
25
  TOTP_SECRETS: 'totp_secrets',
26
26
  LAUNCHPAD_GROUPS: 'launchpad-groups',
27
27
  LAUNCHPAD_ITEMS: 'launchpad-items',
28
+ HOME_DASHBOARDS: 'home-dashboards',
28
29
  };
29
30
  /**
30
31
  * Firestore document IDs for singleton documents
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@guinetik/primitives-ts",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "Shared TypeScript primitives for Guinetik projects",
5
5
  "author": "Guinetik",
6
6
  "license": "MIT",