@happyvertical/smrt-projects 0.37.2 → 0.37.3

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.
@@ -1,129 +1,103 @@
1
1
  import { PROJECTS_MODULE_META } from "./ui.js";
2
- const noop = () => {
3
- };
4
- const sampleTimeEntries = [
5
- {
6
- id: "time-entry-1",
7
- date: "2026-03-18T16:00:00.000Z",
8
- hours: 6.5,
9
- description: "Editorial governance review and fact-linking pass",
10
- status: "submitted",
11
- amount: 780,
12
- workerName: "Taylor Rowan",
13
- hourlyRate: 120,
14
- mileage: 18
15
- },
16
- {
17
- id: "time-entry-2",
18
- date: "2026-03-19T16:00:00.000Z",
19
- hours: 4.25,
20
- description: "Content workflow instrumentation and approval QA",
21
- status: "approved",
22
- amount: 510,
23
- workerName: "Jordan Lee",
24
- hourlyRate: 120
25
- },
26
- {
27
- id: "time-entry-3",
28
- date: "2026-03-20T16:00:00.000Z",
29
- hours: 2,
30
- description: "Follow-up revisions for contributor feedback",
31
- status: "draft",
32
- amount: 240,
33
- workerName: "Casey Tran",
34
- hourlyRate: 120
35
- }
2
+ //#region src/svelte/playground.ts
3
+ var noop = () => {};
4
+ var sampleTimeEntries = [
5
+ {
6
+ id: "time-entry-1",
7
+ date: "2026-03-18T16:00:00.000Z",
8
+ hours: 6.5,
9
+ description: "Editorial governance review and fact-linking pass",
10
+ status: "submitted",
11
+ amount: 780,
12
+ workerName: "Taylor Rowan",
13
+ hourlyRate: 120,
14
+ mileage: 18
15
+ },
16
+ {
17
+ id: "time-entry-2",
18
+ date: "2026-03-19T16:00:00.000Z",
19
+ hours: 4.25,
20
+ description: "Content workflow instrumentation and approval QA",
21
+ status: "approved",
22
+ amount: 510,
23
+ workerName: "Jordan Lee",
24
+ hourlyRate: 120
25
+ },
26
+ {
27
+ id: "time-entry-3",
28
+ date: "2026-03-20T16:00:00.000Z",
29
+ hours: 2,
30
+ description: "Follow-up revisions for contributor feedback",
31
+ status: "draft",
32
+ amount: 240,
33
+ workerName: "Casey Tran",
34
+ hourlyRate: 120
35
+ }
36
36
  ];
37
- const totalHours = sampleTimeEntries.reduce(
38
- (sum, entry) => sum + entry.hours,
39
- 0
40
- );
41
- const totalAmount = sampleTimeEntries.reduce(
42
- (sum, entry) => sum + (entry.amount ?? 0),
43
- 0
44
- );
45
- const pendingEntries = sampleTimeEntries.filter(
46
- (entry) => entry.status === "submitted"
47
- );
48
- const loadApprovalActions = () => import("./svelte/components/ApprovalActions.svelte");
49
- const loadTimeEntryList = () => import("./svelte/components/TimeEntryList.svelte");
50
- const loadTimeSummary = () => import("./svelte/components/TimeSummary.svelte");
51
- const playground = {
52
- packageName: "@happyvertical/smrt-projects",
53
- displayName: PROJECTS_MODULE_META.displayName,
54
- description: PROJECTS_MODULE_META.description,
55
- moduleMeta: PROJECTS_MODULE_META,
56
- entries: [
57
- {
58
- id: "time-entry-list",
59
- title: "Time Entry List",
60
- description: "Selectable list view for recent time entries with billing context.",
61
- loadComponent: loadTimeEntryList,
62
- order: 1,
63
- props: {
64
- entries: sampleTimeEntries,
65
- selectable: true,
66
- selectedIds: ["time-entry-1"],
67
- currency: "CAD",
68
- onselectionchange: noop,
69
- baseHref: "/projects/time-entries"
70
- },
71
- modes: {
72
- mock: {
73
- label: "Mock"
74
- }
75
- }
76
- },
77
- {
78
- id: "time-summary",
79
- title: "Time Summary",
80
- description: "Hours and value summary cards for a project review period.",
81
- loadComponent: loadTimeSummary,
82
- order: 2,
83
- props: {
84
- totalHours,
85
- totalAmount,
86
- pendingHours: pendingEntries.reduce(
87
- (sum, entry) => sum + entry.hours,
88
- 0
89
- ),
90
- pendingAmount: pendingEntries.reduce(
91
- (sum, entry) => sum + (entry.amount ?? 0),
92
- 0
93
- ),
94
- approvedHours: sampleTimeEntries.filter((entry) => entry.status === "approved").reduce((sum, entry) => sum + entry.hours, 0),
95
- approvedAmount: sampleTimeEntries.filter((entry) => entry.status === "approved").reduce((sum, entry) => sum + (entry.amount ?? 0), 0),
96
- entryCount: sampleTimeEntries.length,
97
- currency: "CAD",
98
- showApproved: true
99
- },
100
- modes: {
101
- mock: {
102
- label: "Mock"
103
- }
104
- }
105
- },
106
- {
107
- id: "approval-actions",
108
- title: "Approval Actions",
109
- description: "Status-sensitive action row for approving or returning submitted work.",
110
- loadComponent: loadApprovalActions,
111
- order: 3,
112
- props: {
113
- status: "submitted",
114
- onapprove: noop,
115
- onreject: noop,
116
- onedit: noop
117
- },
118
- modes: {
119
- mock: {
120
- label: "Mock"
121
- }
122
- }
123
- }
124
- ]
125
- };
126
- export {
127
- playground as default
37
+ var totalHours = sampleTimeEntries.reduce((sum, entry) => sum + entry.hours, 0);
38
+ var totalAmount = sampleTimeEntries.reduce((sum, entry) => sum + (entry.amount ?? 0), 0);
39
+ var pendingEntries = sampleTimeEntries.filter((entry) => entry.status === "submitted");
40
+ var loadApprovalActions = () => import("./svelte/components/ApprovalActions.svelte");
41
+ var loadTimeEntryList = () => import("./svelte/components/TimeEntryList.svelte");
42
+ var loadTimeSummary = () => import("./svelte/components/TimeSummary.svelte");
43
+ var playground_default = {
44
+ packageName: "@happyvertical/smrt-projects",
45
+ displayName: PROJECTS_MODULE_META.displayName,
46
+ description: PROJECTS_MODULE_META.description,
47
+ moduleMeta: PROJECTS_MODULE_META,
48
+ entries: [
49
+ {
50
+ id: "time-entry-list",
51
+ title: "Time Entry List",
52
+ description: "Selectable list view for recent time entries with billing context.",
53
+ loadComponent: loadTimeEntryList,
54
+ order: 1,
55
+ props: {
56
+ entries: sampleTimeEntries,
57
+ selectable: true,
58
+ selectedIds: ["time-entry-1"],
59
+ currency: "CAD",
60
+ onselectionchange: noop,
61
+ baseHref: "/projects/time-entries"
62
+ },
63
+ modes: { mock: { label: "Mock" } }
64
+ },
65
+ {
66
+ id: "time-summary",
67
+ title: "Time Summary",
68
+ description: "Hours and value summary cards for a project review period.",
69
+ loadComponent: loadTimeSummary,
70
+ order: 2,
71
+ props: {
72
+ totalHours,
73
+ totalAmount,
74
+ pendingHours: pendingEntries.reduce((sum, entry) => sum + entry.hours, 0),
75
+ pendingAmount: pendingEntries.reduce((sum, entry) => sum + (entry.amount ?? 0), 0),
76
+ approvedHours: sampleTimeEntries.filter((entry) => entry.status === "approved").reduce((sum, entry) => sum + entry.hours, 0),
77
+ approvedAmount: sampleTimeEntries.filter((entry) => entry.status === "approved").reduce((sum, entry) => sum + (entry.amount ?? 0), 0),
78
+ entryCount: sampleTimeEntries.length,
79
+ currency: "CAD",
80
+ showApproved: true
81
+ },
82
+ modes: { mock: { label: "Mock" } }
83
+ },
84
+ {
85
+ id: "approval-actions",
86
+ title: "Approval Actions",
87
+ description: "Status-sensitive action row for approving or returning submitted work.",
88
+ loadComponent: loadApprovalActions,
89
+ order: 3,
90
+ props: {
91
+ status: "submitted",
92
+ onapprove: noop,
93
+ onreject: noop,
94
+ onedit: noop
95
+ },
96
+ modes: { mock: { label: "Mock" } }
97
+ }
98
+ ]
128
99
  };
129
- //# sourceMappingURL=playground.js.map
100
+ //#endregion
101
+ export { playground_default as default };
102
+
103
+ //# sourceMappingURL=playground.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"playground.js","sources":["../src/svelte/playground.ts"],"sourcesContent":["import { PROJECTS_MODULE_META } from '../ui.js';\n\nconst noop = () => {};\n\nconst sampleTimeEntries = [\n {\n id: 'time-entry-1',\n date: '2026-03-18T16:00:00.000Z',\n hours: 6.5,\n description: 'Editorial governance review and fact-linking pass',\n status: 'submitted',\n amount: 780,\n workerName: 'Taylor Rowan',\n hourlyRate: 120,\n mileage: 18,\n },\n {\n id: 'time-entry-2',\n date: '2026-03-19T16:00:00.000Z',\n hours: 4.25,\n description: 'Content workflow instrumentation and approval QA',\n status: 'approved',\n amount: 510,\n workerName: 'Jordan Lee',\n hourlyRate: 120,\n },\n {\n id: 'time-entry-3',\n date: '2026-03-20T16:00:00.000Z',\n hours: 2,\n description: 'Follow-up revisions for contributor feedback',\n status: 'draft',\n amount: 240,\n workerName: 'Casey Tran',\n hourlyRate: 120,\n },\n];\n\nconst totalHours = sampleTimeEntries.reduce(\n (sum, entry) => sum + entry.hours,\n 0,\n);\nconst totalAmount = sampleTimeEntries.reduce(\n (sum, entry) => sum + (entry.amount ?? 0),\n 0,\n);\nconst pendingEntries = sampleTimeEntries.filter(\n (entry) => entry.status === 'submitted',\n);\n\nconst loadApprovalActions = () => import('./components/ApprovalActions.svelte');\nconst loadTimeEntryList = () => import('./components/TimeEntryList.svelte');\nconst loadTimeSummary = () => import('./components/TimeSummary.svelte');\n\nexport default {\n packageName: '@happyvertical/smrt-projects',\n displayName: PROJECTS_MODULE_META.displayName,\n description: PROJECTS_MODULE_META.description,\n moduleMeta: PROJECTS_MODULE_META,\n entries: [\n {\n id: 'time-entry-list',\n title: 'Time Entry List',\n description:\n 'Selectable list view for recent time entries with billing context.',\n loadComponent: loadTimeEntryList,\n order: 1,\n props: {\n entries: sampleTimeEntries,\n selectable: true,\n selectedIds: ['time-entry-1'],\n currency: 'CAD',\n onselectionchange: noop,\n baseHref: '/projects/time-entries',\n },\n modes: {\n mock: {\n label: 'Mock',\n },\n },\n },\n {\n id: 'time-summary',\n title: 'Time Summary',\n description: 'Hours and value summary cards for a project review period.',\n loadComponent: loadTimeSummary,\n order: 2,\n props: {\n totalHours,\n totalAmount,\n pendingHours: pendingEntries.reduce(\n (sum, entry) => sum + entry.hours,\n 0,\n ),\n pendingAmount: pendingEntries.reduce(\n (sum, entry) => sum + (entry.amount ?? 0),\n 0,\n ),\n approvedHours: sampleTimeEntries\n .filter((entry) => entry.status === 'approved')\n .reduce((sum, entry) => sum + entry.hours, 0),\n approvedAmount: sampleTimeEntries\n .filter((entry) => entry.status === 'approved')\n .reduce((sum, entry) => sum + (entry.amount ?? 0), 0),\n entryCount: sampleTimeEntries.length,\n currency: 'CAD',\n showApproved: true,\n },\n modes: {\n mock: {\n label: 'Mock',\n },\n },\n },\n {\n id: 'approval-actions',\n title: 'Approval Actions',\n description:\n 'Status-sensitive action row for approving or returning submitted work.',\n loadComponent: loadApprovalActions,\n order: 3,\n props: {\n status: 'submitted',\n onapprove: noop,\n onreject: noop,\n onedit: noop,\n },\n modes: {\n mock: {\n label: 'Mock',\n },\n },\n },\n ],\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"playground.js","names":[],"sources":["../src/svelte/playground.ts"],"sourcesContent":["import { PROJECTS_MODULE_META } from '../ui.js';\n\nconst noop = () => {};\n\nconst sampleTimeEntries = [\n {\n id: 'time-entry-1',\n date: '2026-03-18T16:00:00.000Z',\n hours: 6.5,\n description: 'Editorial governance review and fact-linking pass',\n status: 'submitted',\n amount: 780,\n workerName: 'Taylor Rowan',\n hourlyRate: 120,\n mileage: 18,\n },\n {\n id: 'time-entry-2',\n date: '2026-03-19T16:00:00.000Z',\n hours: 4.25,\n description: 'Content workflow instrumentation and approval QA',\n status: 'approved',\n amount: 510,\n workerName: 'Jordan Lee',\n hourlyRate: 120,\n },\n {\n id: 'time-entry-3',\n date: '2026-03-20T16:00:00.000Z',\n hours: 2,\n description: 'Follow-up revisions for contributor feedback',\n status: 'draft',\n amount: 240,\n workerName: 'Casey Tran',\n hourlyRate: 120,\n },\n];\n\nconst totalHours = sampleTimeEntries.reduce(\n (sum, entry) => sum + entry.hours,\n 0,\n);\nconst totalAmount = sampleTimeEntries.reduce(\n (sum, entry) => sum + (entry.amount ?? 0),\n 0,\n);\nconst pendingEntries = sampleTimeEntries.filter(\n (entry) => entry.status === 'submitted',\n);\n\nconst loadApprovalActions = () => import('./components/ApprovalActions.svelte');\nconst loadTimeEntryList = () => import('./components/TimeEntryList.svelte');\nconst loadTimeSummary = () => import('./components/TimeSummary.svelte');\n\nexport default {\n packageName: '@happyvertical/smrt-projects',\n displayName: PROJECTS_MODULE_META.displayName,\n description: PROJECTS_MODULE_META.description,\n moduleMeta: PROJECTS_MODULE_META,\n entries: [\n {\n id: 'time-entry-list',\n title: 'Time Entry List',\n description:\n 'Selectable list view for recent time entries with billing context.',\n loadComponent: loadTimeEntryList,\n order: 1,\n props: {\n entries: sampleTimeEntries,\n selectable: true,\n selectedIds: ['time-entry-1'],\n currency: 'CAD',\n onselectionchange: noop,\n baseHref: '/projects/time-entries',\n },\n modes: {\n mock: {\n label: 'Mock',\n },\n },\n },\n {\n id: 'time-summary',\n title: 'Time Summary',\n description: 'Hours and value summary cards for a project review period.',\n loadComponent: loadTimeSummary,\n order: 2,\n props: {\n totalHours,\n totalAmount,\n pendingHours: pendingEntries.reduce(\n (sum, entry) => sum + entry.hours,\n 0,\n ),\n pendingAmount: pendingEntries.reduce(\n (sum, entry) => sum + (entry.amount ?? 0),\n 0,\n ),\n approvedHours: sampleTimeEntries\n .filter((entry) => entry.status === 'approved')\n .reduce((sum, entry) => sum + entry.hours, 0),\n approvedAmount: sampleTimeEntries\n .filter((entry) => entry.status === 'approved')\n .reduce((sum, entry) => sum + (entry.amount ?? 0), 0),\n entryCount: sampleTimeEntries.length,\n currency: 'CAD',\n showApproved: true,\n },\n modes: {\n mock: {\n label: 'Mock',\n },\n },\n },\n {\n id: 'approval-actions',\n title: 'Approval Actions',\n description:\n 'Status-sensitive action row for approving or returning submitted work.',\n loadComponent: loadApprovalActions,\n order: 3,\n props: {\n status: 'submitted',\n onapprove: noop,\n onreject: noop,\n onedit: noop,\n },\n modes: {\n mock: {\n label: 'Mock',\n },\n },\n },\n ],\n};\n"],"mappings":";;AAEA,IAAM,aAAa,CAAC;AAEpB,IAAM,oBAAoB;CACxB;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ;EACR,YAAY;EACZ,YAAY;EACZ,SAAS;CACX;CACA;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ;EACR,YAAY;EACZ,YAAY;CACd;CACA;EACE,IAAI;EACJ,MAAM;EACN,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ;EACR,YAAY;EACZ,YAAY;CACd;AACF;AAEA,IAAM,aAAa,kBAAkB,QAClC,KAAK,UAAU,MAAM,MAAM,OAC5B,CACF;AACA,IAAM,cAAc,kBAAkB,QACnC,KAAK,UAAU,OAAO,MAAM,UAAU,IACvC,CACF;AACA,IAAM,iBAAiB,kBAAkB,QACtC,UAAU,MAAM,WAAW,WAC9B;AAEA,IAAM,4BAA4B,OAAO;AACzC,IAAM,0BAA0B,OAAO;AACvC,IAAM,wBAAwB,OAAO;AAErC,IAAA,qBAAe;CACb,aAAa;CACb,aAAa,qBAAqB;CAClC,aAAa,qBAAqB;CAClC,YAAY;CACZ,SAAS;EACP;GACE,IAAI;GACJ,OAAO;GACP,aACE;GACF,eAAe;GACf,OAAO;GACP,OAAO;IACL,SAAS;IACT,YAAY;IACZ,aAAa,CAAC,cAAc;IAC5B,UAAU;IACV,mBAAmB;IACnB,UAAU;GACZ;GACA,OAAO,EACL,MAAM,EACJ,OAAO,OACT,EACF;EACF;EACA;GACE,IAAI;GACJ,OAAO;GACP,aAAa;GACb,eAAe;GACf,OAAO;GACP,OAAO;IACL;IACA;IACA,cAAc,eAAe,QAC1B,KAAK,UAAU,MAAM,MAAM,OAC5B,CACF;IACA,eAAe,eAAe,QAC3B,KAAK,UAAU,OAAO,MAAM,UAAU,IACvC,CACF;IACA,eAAe,kBACZ,QAAQ,UAAU,MAAM,WAAW,UAAU,CAAA,CAC7C,QAAQ,KAAK,UAAU,MAAM,MAAM,OAAO,CAAC;IAC9C,gBAAgB,kBACb,QAAQ,UAAU,MAAM,WAAW,UAAU,CAAA,CAC7C,QAAQ,KAAK,UAAU,OAAO,MAAM,UAAU,IAAI,CAAC;IACtD,YAAY,kBAAkB;IAC9B,UAAU;IACV,cAAc;GAChB;GACA,OAAO,EACL,MAAM,EACJ,OAAO,OACT,EACF;EACF;EACA;GACE,IAAI;GACJ,OAAO;GACP,aACE;GACF,eAAe;GACf,OAAO;GACP,OAAO;IACL,QAAQ;IACR,WAAW;IACX,UAAU;IACV,QAAQ;GACV;GACA,OAAO,EACL,MAAM,EACJ,OAAO,OACT,EACF;EACF;CACF;AACF"}
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "generatedAt": "2026-07-01T02:36:30.911Z",
3
+ "generatedAt": "2026-07-01T20:05:07.971Z",
4
4
  "packageName": "@happyvertical/smrt-projects",
5
- "packageVersion": "0.37.2",
5
+ "packageVersion": "0.37.3",
6
6
  "sourceManifestPath": "dist/manifest.json",
7
7
  "agentDocPath": "AGENTS.md",
8
8
  "sourceHashes": {
9
- "manifest": "86bae79f6cdef312ee46a317b75ccfc542bafa38171e9f93bc4cc0743be0b958",
10
- "packageJson": "b1874ae102d1002983076b132a29d8bfabbea820763100c0c619fa5c84263570",
9
+ "manifest": "8ba5e45aea971245cc8be03b75876ad8480c305f9a15e2c1e88867a16e1af421",
10
+ "packageJson": "00a1b66cf31e4a2dfb87c0fa59884b9fd44fca9c11be3e61cd72683806a4b705",
11
11
  "agents": "31de38c962634d69c728bab8dff270448a49718fc36ee20b9cd12216cdbed95c"
12
12
  },
13
13
  "exports": [
@@ -33,15 +33,15 @@
33
33
  "@happyvertical/utils": "catalog:",
34
34
  "@happyvertical/smrt-cli": "workspace:*",
35
35
  "@happyvertical/smrt-vitest": "workspace:*",
36
- "@sveltejs/package": "^2.5.7",
37
- "@sveltejs/vite-plugin-svelte": "^6.2.4",
38
- "@types/node": "25.0.9",
36
+ "@sveltejs/package": "^2.5.8",
37
+ "@sveltejs/vite-plugin-svelte": "^7.1.2",
38
+ "@types/node": "24.13.2",
39
39
  "fast-glob": "3.3.3",
40
- "svelte": "^5.18.0",
41
- "svelte-check": "^4.3.5",
40
+ "svelte": "^5.56.4",
41
+ "svelte-check": "^4.7.1",
42
42
  "typescript": "^5.9.3",
43
- "vite": "^7.3.6",
44
- "vitest": "^4.0.17"
43
+ "vite": "^8.1.2",
44
+ "vitest": "^4.1.9"
45
45
  },
46
46
  "smrtDependencies": [
47
47
  "@happyvertical/smrt-cli",
package/dist/types.js CHANGED
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=types.js.map
package/dist/ui.js CHANGED
@@ -1,85 +1,92 @@
1
- const PROJECTS_UI_SLOTS = {
2
- "time-entry-card": {
3
- id: "time-entry-card",
4
- label: "Time Entry Card",
5
- description: "Card component for displaying time entries",
6
- icon: "clock",
7
- category: "display",
8
- order: 1,
9
- propsInterface: "TimeEntryCardProps"
10
- },
11
- "time-entry-list": {
12
- id: "time-entry-list",
13
- label: "Time Entry List",
14
- description: "List of time entries with optional selection",
15
- icon: "list",
16
- category: "list",
17
- order: 2,
18
- propsInterface: "TimeEntryListProps"
19
- },
20
- "time-summary": {
21
- id: "time-summary",
22
- label: "Time Summary",
23
- description: "Summary statistics for time entries",
24
- icon: "chart",
25
- category: "display",
26
- order: 3,
27
- propsInterface: "TimeSummaryProps"
28
- },
29
- "duration-display": {
30
- id: "duration-display",
31
- label: "Duration Display",
32
- description: "Formats hours for display in decimal or HH:MM format",
33
- icon: "timer",
34
- category: "display",
35
- order: 4,
36
- propsInterface: "DurationDisplayProps"
37
- },
38
- "approval-actions": {
39
- id: "approval-actions",
40
- label: "Approval Actions",
41
- description: "Status-based action buttons for approval workflow",
42
- icon: "check",
43
- category: "action",
44
- order: 5,
45
- propsInterface: "ApprovalActionsProps"
46
- },
47
- "bulk-actions": {
48
- id: "bulk-actions",
49
- label: "Bulk Actions",
50
- description: "Action bar for bulk operations on selected items",
51
- icon: "select-all",
52
- category: "action",
53
- order: 6,
54
- propsInterface: "BulkActionsProps"
55
- },
56
- "reject-dialog": {
57
- id: "reject-dialog",
58
- label: "Reject Dialog",
59
- description: "Modal dialog for rejecting with a reason",
60
- icon: "x-circle",
61
- category: "form",
62
- order: 7,
63
- propsInterface: "RejectDialogProps"
64
- }
1
+ //#region src/ui.ts
2
+ var PROJECTS_UI_SLOTS = {
3
+ "time-entry-card": {
4
+ id: "time-entry-card",
5
+ label: "Time Entry Card",
6
+ description: "Card component for displaying time entries",
7
+ icon: "clock",
8
+ category: "display",
9
+ order: 1,
10
+ propsInterface: "TimeEntryCardProps"
11
+ },
12
+ "time-entry-list": {
13
+ id: "time-entry-list",
14
+ label: "Time Entry List",
15
+ description: "List of time entries with optional selection",
16
+ icon: "list",
17
+ category: "list",
18
+ order: 2,
19
+ propsInterface: "TimeEntryListProps"
20
+ },
21
+ "time-summary": {
22
+ id: "time-summary",
23
+ label: "Time Summary",
24
+ description: "Summary statistics for time entries",
25
+ icon: "chart",
26
+ category: "display",
27
+ order: 3,
28
+ propsInterface: "TimeSummaryProps"
29
+ },
30
+ "duration-display": {
31
+ id: "duration-display",
32
+ label: "Duration Display",
33
+ description: "Formats hours for display in decimal or HH:MM format",
34
+ icon: "timer",
35
+ category: "display",
36
+ order: 4,
37
+ propsInterface: "DurationDisplayProps"
38
+ },
39
+ "approval-actions": {
40
+ id: "approval-actions",
41
+ label: "Approval Actions",
42
+ description: "Status-based action buttons for approval workflow",
43
+ icon: "check",
44
+ category: "action",
45
+ order: 5,
46
+ propsInterface: "ApprovalActionsProps"
47
+ },
48
+ "bulk-actions": {
49
+ id: "bulk-actions",
50
+ label: "Bulk Actions",
51
+ description: "Action bar for bulk operations on selected items",
52
+ icon: "select-all",
53
+ category: "action",
54
+ order: 6,
55
+ propsInterface: "BulkActionsProps"
56
+ },
57
+ "reject-dialog": {
58
+ id: "reject-dialog",
59
+ label: "Reject Dialog",
60
+ description: "Modal dialog for rejecting with a reason",
61
+ icon: "x-circle",
62
+ category: "form",
63
+ order: 7,
64
+ propsInterface: "RejectDialogProps"
65
+ }
65
66
  };
66
- const PROJECTS_MODULE_META = {
67
- name: "@happyvertical/smrt-projects",
68
- displayName: "Projects",
69
- description: "Provider-agnostic project management with time tracking",
70
- uiSlots: PROJECTS_UI_SLOTS,
71
- models: ["Repository", "Issue", "PullRequest", "Project", "Comment", "Label"],
72
- collections: [
73
- "RepositoryCollection",
74
- "IssueCollection",
75
- "PullRequestCollection",
76
- "ProjectCollection",
77
- "CommentCollection",
78
- "LabelCollection"
79
- ]
67
+ var PROJECTS_MODULE_META = {
68
+ name: "@happyvertical/smrt-projects",
69
+ displayName: "Projects",
70
+ description: "Provider-agnostic project management with time tracking",
71
+ uiSlots: PROJECTS_UI_SLOTS,
72
+ models: [
73
+ "Repository",
74
+ "Issue",
75
+ "PullRequest",
76
+ "Project",
77
+ "Comment",
78
+ "Label"
79
+ ],
80
+ collections: [
81
+ "RepositoryCollection",
82
+ "IssueCollection",
83
+ "PullRequestCollection",
84
+ "ProjectCollection",
85
+ "CommentCollection",
86
+ "LabelCollection"
87
+ ]
80
88
  };
81
- export {
82
- PROJECTS_MODULE_META,
83
- PROJECTS_UI_SLOTS
84
- };
85
- //# sourceMappingURL=ui.js.map
89
+ //#endregion
90
+ export { PROJECTS_MODULE_META, PROJECTS_UI_SLOTS };
91
+
92
+ //# sourceMappingURL=ui.js.map
package/dist/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sources":["../src/ui.ts"],"sourcesContent":["/**\n * Projects Module UI Slot Declarations\n *\n * This file defines the UI extension points for the projects module.\n * UI components are implemented in the ./svelte subpath.\n */\n\nimport type { ModuleUISlot, SmrtModuleMeta } from '@happyvertical/smrt-types';\n\n/**\n * Projects module UI slots\n */\nexport const PROJECTS_UI_SLOTS: Record<string, ModuleUISlot> = {\n 'time-entry-card': {\n id: 'time-entry-card',\n label: 'Time Entry Card',\n description: 'Card component for displaying time entries',\n icon: 'clock',\n category: 'display',\n order: 1,\n propsInterface: 'TimeEntryCardProps',\n },\n 'time-entry-list': {\n id: 'time-entry-list',\n label: 'Time Entry List',\n description: 'List of time entries with optional selection',\n icon: 'list',\n category: 'list',\n order: 2,\n propsInterface: 'TimeEntryListProps',\n },\n 'time-summary': {\n id: 'time-summary',\n label: 'Time Summary',\n description: 'Summary statistics for time entries',\n icon: 'chart',\n category: 'display',\n order: 3,\n propsInterface: 'TimeSummaryProps',\n },\n 'duration-display': {\n id: 'duration-display',\n label: 'Duration Display',\n description: 'Formats hours for display in decimal or HH:MM format',\n icon: 'timer',\n category: 'display',\n order: 4,\n propsInterface: 'DurationDisplayProps',\n },\n 'approval-actions': {\n id: 'approval-actions',\n label: 'Approval Actions',\n description: 'Status-based action buttons for approval workflow',\n icon: 'check',\n category: 'action',\n order: 5,\n propsInterface: 'ApprovalActionsProps',\n },\n 'bulk-actions': {\n id: 'bulk-actions',\n label: 'Bulk Actions',\n description: 'Action bar for bulk operations on selected items',\n icon: 'select-all',\n category: 'action',\n order: 6,\n propsInterface: 'BulkActionsProps',\n },\n 'reject-dialog': {\n id: 'reject-dialog',\n label: 'Reject Dialog',\n description: 'Modal dialog for rejecting with a reason',\n icon: 'x-circle',\n category: 'form',\n order: 7,\n propsInterface: 'RejectDialogProps',\n },\n};\n\n/**\n * Projects module metadata\n */\nexport const PROJECTS_MODULE_META: SmrtModuleMeta = {\n name: '@happyvertical/smrt-projects',\n displayName: 'Projects',\n description: 'Provider-agnostic project management with time tracking',\n uiSlots: PROJECTS_UI_SLOTS,\n models: ['Repository', 'Issue', 'PullRequest', 'Project', 'Comment', 'Label'],\n collections: [\n 'RepositoryCollection',\n 'IssueCollection',\n 'PullRequestCollection',\n 'ProjectCollection',\n 'CommentCollection',\n 'LabelCollection',\n ],\n};\n"],"names":[],"mappings":"AAYO,MAAM,oBAAkD;AAAA,EAC7D,mBAAmB;AAAA,IACjB,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,gBAAgB;AAAA,EAAA;AAAA,EAElB,mBAAmB;AAAA,IACjB,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,gBAAgB;AAAA,EAAA;AAAA,EAElB,gBAAgB;AAAA,IACd,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,gBAAgB;AAAA,EAAA;AAAA,EAElB,oBAAoB;AAAA,IAClB,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,gBAAgB;AAAA,EAAA;AAAA,EAElB,oBAAoB;AAAA,IAClB,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,gBAAgB;AAAA,EAAA;AAAA,EAElB,gBAAgB;AAAA,IACd,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,gBAAgB;AAAA,EAAA;AAAA,EAElB,iBAAiB;AAAA,IACf,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,aAAa;AAAA,IACb,MAAM;AAAA,IACN,UAAU;AAAA,IACV,OAAO;AAAA,IACP,gBAAgB;AAAA,EAAA;AAEpB;AAKO,MAAM,uBAAuC;AAAA,EAClD,MAAM;AAAA,EACN,aAAa;AAAA,EACb,aAAa;AAAA,EACb,SAAS;AAAA,EACT,QAAQ,CAAC,cAAc,SAAS,eAAe,WAAW,WAAW,OAAO;AAAA,EAC5E,aAAa;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}
1
+ {"version":3,"file":"ui.js","names":[],"sources":["../src/ui.ts"],"sourcesContent":["/**\n * Projects Module UI Slot Declarations\n *\n * This file defines the UI extension points for the projects module.\n * UI components are implemented in the ./svelte subpath.\n */\n\nimport type { ModuleUISlot, SmrtModuleMeta } from '@happyvertical/smrt-types';\n\n/**\n * Projects module UI slots\n */\nexport const PROJECTS_UI_SLOTS: Record<string, ModuleUISlot> = {\n 'time-entry-card': {\n id: 'time-entry-card',\n label: 'Time Entry Card',\n description: 'Card component for displaying time entries',\n icon: 'clock',\n category: 'display',\n order: 1,\n propsInterface: 'TimeEntryCardProps',\n },\n 'time-entry-list': {\n id: 'time-entry-list',\n label: 'Time Entry List',\n description: 'List of time entries with optional selection',\n icon: 'list',\n category: 'list',\n order: 2,\n propsInterface: 'TimeEntryListProps',\n },\n 'time-summary': {\n id: 'time-summary',\n label: 'Time Summary',\n description: 'Summary statistics for time entries',\n icon: 'chart',\n category: 'display',\n order: 3,\n propsInterface: 'TimeSummaryProps',\n },\n 'duration-display': {\n id: 'duration-display',\n label: 'Duration Display',\n description: 'Formats hours for display in decimal or HH:MM format',\n icon: 'timer',\n category: 'display',\n order: 4,\n propsInterface: 'DurationDisplayProps',\n },\n 'approval-actions': {\n id: 'approval-actions',\n label: 'Approval Actions',\n description: 'Status-based action buttons for approval workflow',\n icon: 'check',\n category: 'action',\n order: 5,\n propsInterface: 'ApprovalActionsProps',\n },\n 'bulk-actions': {\n id: 'bulk-actions',\n label: 'Bulk Actions',\n description: 'Action bar for bulk operations on selected items',\n icon: 'select-all',\n category: 'action',\n order: 6,\n propsInterface: 'BulkActionsProps',\n },\n 'reject-dialog': {\n id: 'reject-dialog',\n label: 'Reject Dialog',\n description: 'Modal dialog for rejecting with a reason',\n icon: 'x-circle',\n category: 'form',\n order: 7,\n propsInterface: 'RejectDialogProps',\n },\n};\n\n/**\n * Projects module metadata\n */\nexport const PROJECTS_MODULE_META: SmrtModuleMeta = {\n name: '@happyvertical/smrt-projects',\n displayName: 'Projects',\n description: 'Provider-agnostic project management with time tracking',\n uiSlots: PROJECTS_UI_SLOTS,\n models: ['Repository', 'Issue', 'PullRequest', 'Project', 'Comment', 'Label'],\n collections: [\n 'RepositoryCollection',\n 'IssueCollection',\n 'PullRequestCollection',\n 'ProjectCollection',\n 'CommentCollection',\n 'LabelCollection',\n ],\n};\n"],"mappings":";AAYO,IAAM,oBAAkD;CAC7D,mBAAmB;EACjB,IAAI;EACJ,OAAO;EACP,aAAa;EACb,MAAM;EACN,UAAU;EACV,OAAO;EACP,gBAAgB;CAClB;CACA,mBAAmB;EACjB,IAAI;EACJ,OAAO;EACP,aAAa;EACb,MAAM;EACN,UAAU;EACV,OAAO;EACP,gBAAgB;CAClB;CACA,gBAAgB;EACd,IAAI;EACJ,OAAO;EACP,aAAa;EACb,MAAM;EACN,UAAU;EACV,OAAO;EACP,gBAAgB;CAClB;CACA,oBAAoB;EAClB,IAAI;EACJ,OAAO;EACP,aAAa;EACb,MAAM;EACN,UAAU;EACV,OAAO;EACP,gBAAgB;CAClB;CACA,oBAAoB;EAClB,IAAI;EACJ,OAAO;EACP,aAAa;EACb,MAAM;EACN,UAAU;EACV,OAAO;EACP,gBAAgB;CAClB;CACA,gBAAgB;EACd,IAAI;EACJ,OAAO;EACP,aAAa;EACb,MAAM;EACN,UAAU;EACV,OAAO;EACP,gBAAgB;CAClB;CACA,iBAAiB;EACf,IAAI;EACJ,OAAO;EACP,aAAa;EACb,MAAM;EACN,UAAU;EACV,OAAO;EACP,gBAAgB;CAClB;AACF;AAKO,IAAM,uBAAuC;CAClD,MAAM;CACN,aAAa;CACb,aAAa;CACb,SAAS;CACT,QAAQ;EAAC;EAAc;EAAS;EAAe;EAAW;EAAW;CAAO;CAC5E,aAAa;EACX;EACA;EACA;EACA;EACA;EACA;CACF;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@happyvertical/smrt-projects",
3
- "version": "0.37.2",
3
+ "version": "0.37.3",
4
4
  "description": "Provider-agnostic project management models (Issues, PRs, Repositories, Projects) for SMRT framework",
5
5
  "type": "module",
6
6
  "smrtRawPrimitives": "strict",
@@ -33,21 +33,21 @@
33
33
  }
34
34
  },
35
35
  "dependencies": {
36
- "@happyvertical/ai": "^0.74.10",
37
- "@happyvertical/logger": "^0.74.10",
38
- "@happyvertical/projects": "^0.74.10",
39
- "@happyvertical/repos": "^0.74.10",
40
- "@happyvertical/sql": "^0.74.10",
41
- "@happyvertical/utils": "^0.74.10",
42
- "@happyvertical/smrt-prompts": "0.37.2",
43
- "@happyvertical/smrt-config": "0.37.2",
44
- "@happyvertical/smrt-core": "0.37.2",
45
- "@happyvertical/smrt-tenancy": "0.37.2",
46
- "@happyvertical/smrt-types": "0.37.2",
47
- "@happyvertical/smrt-ui": "0.37.2"
36
+ "@happyvertical/ai": "^0.74.11",
37
+ "@happyvertical/logger": "^0.74.11",
38
+ "@happyvertical/projects": "^0.74.11",
39
+ "@happyvertical/repos": "^0.74.11",
40
+ "@happyvertical/sql": "^0.74.11",
41
+ "@happyvertical/utils": "^0.74.11",
42
+ "@happyvertical/smrt-config": "0.37.3",
43
+ "@happyvertical/smrt-tenancy": "0.37.3",
44
+ "@happyvertical/smrt-core": "0.37.3",
45
+ "@happyvertical/smrt-prompts": "0.37.3",
46
+ "@happyvertical/smrt-types": "0.37.3",
47
+ "@happyvertical/smrt-ui": "0.37.3"
48
48
  },
49
49
  "peerDependencies": {
50
- "svelte": "^5.18.0"
50
+ "svelte": "^5.56.4"
51
51
  },
52
52
  "peerDependenciesMeta": {
53
53
  "svelte": {
@@ -55,17 +55,17 @@
55
55
  }
56
56
  },
57
57
  "devDependencies": {
58
- "@sveltejs/package": "^2.5.7",
59
- "@sveltejs/vite-plugin-svelte": "^6.2.4",
60
- "@types/node": "25.0.9",
58
+ "@sveltejs/package": "^2.5.8",
59
+ "@sveltejs/vite-plugin-svelte": "^7.1.2",
60
+ "@types/node": "24.13.2",
61
61
  "fast-glob": "3.3.3",
62
- "svelte": "^5.46.4",
63
- "svelte-check": "^4.3.5",
62
+ "svelte": "^5.56.4",
63
+ "svelte-check": "^4.7.1",
64
64
  "typescript": "^5.9.3",
65
- "vite": "^7.3.6",
66
- "vitest": "^4.0.17",
67
- "@happyvertical/smrt-cli": "0.37.2",
68
- "@happyvertical/smrt-vitest": "0.37.2"
65
+ "vite": "^8.1.2",
66
+ "vitest": "^4.1.9",
67
+ "@happyvertical/smrt-cli": "0.37.3",
68
+ "@happyvertical/smrt-vitest": "0.37.3"
69
69
  },
70
70
  "keywords": [
71
71
  "ai",
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}