reviewflow 3.20.0 → 3.22.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.
Files changed (231) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/config/projectConfig.d.ts +7 -0
  3. package/dist/config/projectConfig.d.ts.map +1 -1
  4. package/dist/config/projectConfig.js +18 -0
  5. package/dist/config/projectConfig.js.map +1 -1
  6. package/dist/dashboard/index.html +626 -175
  7. package/dist/dashboard/modules/animations.d.ts +164 -0
  8. package/dist/dashboard/modules/animations.d.ts.map +1 -0
  9. package/dist/dashboard/modules/animations.js +405 -0
  10. package/dist/dashboard/modules/animations.js.map +1 -0
  11. package/dist/dashboard/modules/cardCounters.d.ts +47 -0
  12. package/dist/dashboard/modules/cardCounters.d.ts.map +1 -0
  13. package/dist/dashboard/modules/cardCounters.js +74 -0
  14. package/dist/dashboard/modules/cardCounters.js.map +1 -0
  15. package/dist/dashboard/modules/i18n.d.ts.map +1 -1
  16. package/dist/dashboard/modules/i18n.js +20 -2
  17. package/dist/dashboard/modules/i18n.js.map +1 -1
  18. package/dist/dashboard/modules/managePanel.d.ts +49 -0
  19. package/dist/dashboard/modules/managePanel.d.ts.map +1 -0
  20. package/dist/dashboard/modules/managePanel.js +123 -0
  21. package/dist/dashboard/modules/managePanel.js.map +1 -0
  22. package/dist/dashboard/modules/overview.d.ts +1 -0
  23. package/dist/dashboard/modules/overview.d.ts.map +1 -1
  24. package/dist/dashboard/modules/overview.js +14 -0
  25. package/dist/dashboard/modules/overview.js.map +1 -1
  26. package/dist/dashboard/modules/settingsModal.d.ts +77 -0
  27. package/dist/dashboard/modules/settingsModal.d.ts.map +1 -0
  28. package/dist/dashboard/modules/settingsModal.js +202 -0
  29. package/dist/dashboard/modules/settingsModal.js.map +1 -0
  30. package/dist/dashboard/modules/tabBar.d.ts +4 -0
  31. package/dist/dashboard/modules/tabBar.d.ts.map +1 -1
  32. package/dist/dashboard/modules/tabBar.js +6 -1
  33. package/dist/dashboard/modules/tabBar.js.map +1 -1
  34. package/dist/dashboard/styles.css +1373 -402
  35. package/dist/frameworks/config/configLoader.d.ts +8 -0
  36. package/dist/frameworks/config/configLoader.d.ts.map +1 -1
  37. package/dist/frameworks/config/configLoader.js +18 -0
  38. package/dist/frameworks/config/configLoader.js.map +1 -1
  39. package/dist/main/routes.d.ts.map +1 -1
  40. package/dist/main/routes.js +47 -2
  41. package/dist/main/routes.js.map +1 -1
  42. package/dist/main/server.d.ts.map +1 -1
  43. package/dist/main/server.js +22 -0
  44. package/dist/main/server.js.map +1 -1
  45. package/dist/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.d.ts +1 -0
  46. package/dist/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.d.ts.map +1 -1
  47. package/dist/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.js +26 -5
  48. package/dist/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.js.map +1 -1
  49. package/dist/modules/cli-configuration/entities/projectConfig/projectConfig.gateway.d.ts +20 -0
  50. package/dist/modules/cli-configuration/entities/projectConfig/projectConfig.gateway.d.ts.map +1 -0
  51. package/dist/modules/cli-configuration/entities/projectConfig/projectConfig.gateway.js +2 -0
  52. package/dist/modules/cli-configuration/entities/projectConfig/projectConfig.gateway.js.map +1 -0
  53. package/dist/modules/cli-configuration/entities/repositoryEntry/repositoryEntry.d.ts +13 -0
  54. package/dist/modules/cli-configuration/entities/repositoryEntry/repositoryEntry.d.ts.map +1 -0
  55. package/dist/modules/cli-configuration/entities/repositoryEntry/repositoryEntry.js +2 -0
  56. package/dist/modules/cli-configuration/entities/repositoryEntry/repositoryEntry.js.map +1 -0
  57. package/dist/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.d.ts +6 -1
  58. package/dist/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.d.ts.map +1 -1
  59. package/dist/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.js +116 -13
  60. package/dist/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.js.map +1 -1
  61. package/dist/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.d.ts +36 -0
  62. package/dist/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.d.ts.map +1 -1
  63. package/dist/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.js +78 -8
  64. package/dist/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.js.map +1 -1
  65. package/dist/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.d.ts +7 -0
  66. package/dist/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.d.ts.map +1 -0
  67. package/dist/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.js +48 -0
  68. package/dist/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.js.map +1 -0
  69. package/dist/modules/cli-configuration/usecases/cli/addRepositoriesToConfig.usecase.d.ts +1 -6
  70. package/dist/modules/cli-configuration/usecases/cli/addRepositoriesToConfig.usecase.d.ts.map +1 -1
  71. package/dist/modules/cli-configuration/usecases/cli/addRepositoriesToConfig.usecase.js.map +1 -1
  72. package/dist/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.d.ts +21 -0
  73. package/dist/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.d.ts.map +1 -0
  74. package/dist/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.js +27 -0
  75. package/dist/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.js.map +1 -0
  76. package/dist/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.d.ts +22 -0
  77. package/dist/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.d.ts.map +1 -0
  78. package/dist/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.js +27 -0
  79. package/dist/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.js.map +1 -0
  80. package/dist/modules/cli-configuration/usecases/cli/writeInitConfig.usecase.d.ts +1 -6
  81. package/dist/modules/cli-configuration/usecases/cli/writeInitConfig.usecase.d.ts.map +1 -1
  82. package/dist/modules/cli-configuration/usecases/cli/writeInitConfig.usecase.js.map +1 -1
  83. package/dist/modules/cli-configuration/usecases/dashboardRepositories/addRepositoryFromDashboard.usecase.d.ts +19 -0
  84. package/dist/modules/cli-configuration/usecases/dashboardRepositories/addRepositoryFromDashboard.usecase.d.ts.map +1 -0
  85. package/dist/modules/cli-configuration/usecases/dashboardRepositories/addRepositoryFromDashboard.usecase.js +30 -0
  86. package/dist/modules/cli-configuration/usecases/dashboardRepositories/addRepositoryFromDashboard.usecase.js.map +1 -0
  87. package/dist/modules/cli-configuration/usecases/dashboardRepositories/removeRepositoryFromDashboard.usecase.d.ts +16 -0
  88. package/dist/modules/cli-configuration/usecases/dashboardRepositories/removeRepositoryFromDashboard.usecase.d.ts.map +1 -0
  89. package/dist/modules/cli-configuration/usecases/dashboardRepositories/removeRepositoryFromDashboard.usecase.js +27 -0
  90. package/dist/modules/cli-configuration/usecases/dashboardRepositories/removeRepositoryFromDashboard.usecase.js.map +1 -0
  91. package/dist/modules/cli-configuration/usecases/dashboardRepositories/updateRepositoryEnabledFromDashboard.usecase.d.ts +17 -0
  92. package/dist/modules/cli-configuration/usecases/dashboardRepositories/updateRepositoryEnabledFromDashboard.usecase.d.ts.map +1 -0
  93. package/dist/modules/cli-configuration/usecases/dashboardRepositories/updateRepositoryEnabledFromDashboard.usecase.js +28 -0
  94. package/dist/modules/cli-configuration/usecases/dashboardRepositories/updateRepositoryEnabledFromDashboard.usecase.js.map +1 -0
  95. package/dist/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.d.ts +31 -0
  96. package/dist/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.d.ts.map +1 -0
  97. package/dist/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.js +102 -0
  98. package/dist/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.js.map +1 -0
  99. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.d.ts.map +1 -1
  100. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.js +3 -0
  101. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/github.controller.js.map +1 -1
  102. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/gitlab.controller.d.ts.map +1 -1
  103. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/gitlab.controller.js +3 -0
  104. package/dist/modules/platform-integration/interface-adapters/controllers/webhook/gitlab.controller.js.map +1 -1
  105. package/dist/modules/review-execution/entities/reviewContext/reviewContext.gateway.d.ts +1 -0
  106. package/dist/modules/review-execution/entities/reviewContext/reviewContext.gateway.d.ts.map +1 -1
  107. package/dist/modules/review-execution/entities/reviewContext/reviewContext.schema.d.ts +10 -2
  108. package/dist/modules/review-execution/entities/reviewContext/reviewContext.schema.d.ts.map +1 -1
  109. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.factory.d.ts +11 -0
  110. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.factory.d.ts.map +1 -0
  111. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.factory.js +22 -0
  112. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.factory.js.map +1 -0
  113. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.guard.d.ts +10 -0
  114. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.guard.d.ts.map +1 -1
  115. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.schema.d.ts +31 -1
  116. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.schema.d.ts.map +1 -1
  117. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.schema.js +11 -1
  118. package/dist/modules/review-execution/entities/reviewContext/reviewContextResult.schema.js.map +1 -1
  119. package/dist/modules/review-execution/interface-adapters/gateways/reviewContext.fileSystem.gateway.d.ts +1 -0
  120. package/dist/modules/review-execution/interface-adapters/gateways/reviewContext.fileSystem.gateway.d.ts.map +1 -1
  121. package/dist/modules/review-execution/interface-adapters/gateways/reviewContext.fileSystem.gateway.js +27 -1
  122. package/dist/modules/review-execution/interface-adapters/gateways/reviewContext.fileSystem.gateway.js.map +1 -1
  123. package/dist/modules/review-execution/services/reviewRecovery.service.d.ts +33 -0
  124. package/dist/modules/review-execution/services/reviewRecovery.service.d.ts.map +1 -0
  125. package/dist/modules/review-execution/services/reviewRecovery.service.js +80 -0
  126. package/dist/modules/review-execution/services/reviewRecovery.service.js.map +1 -0
  127. package/dist/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.d.ts +2 -0
  128. package/dist/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.d.ts.map +1 -1
  129. package/dist/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.js +14 -0
  130. package/dist/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.js.map +1 -1
  131. package/dist/modules/statistics-insights/interface-adapters/presenters/overview.presenter.d.ts +5 -0
  132. package/dist/modules/statistics-insights/interface-adapters/presenters/overview.presenter.d.ts.map +1 -1
  133. package/dist/modules/statistics-insights/interface-adapters/presenters/overview.presenter.js +20 -4
  134. package/dist/modules/statistics-insights/interface-adapters/presenters/overview.presenter.js.map +1 -1
  135. package/dist/tests/acceptance/177-dashboard-add-project-ui.acceptance.test.d.ts +12 -0
  136. package/dist/tests/acceptance/177-dashboard-add-project-ui.acceptance.test.d.ts.map +1 -0
  137. package/dist/tests/acceptance/177-dashboard-add-project-ui.acceptance.test.js +304 -0
  138. package/dist/tests/acceptance/177-dashboard-add-project-ui.acceptance.test.js.map +1 -0
  139. package/dist/tests/acceptance/178-dashboard-tabs-reposition.acceptance.test.d.ts +12 -0
  140. package/dist/tests/acceptance/178-dashboard-tabs-reposition.acceptance.test.d.ts.map +1 -0
  141. package/dist/tests/acceptance/178-dashboard-tabs-reposition.acceptance.test.js +131 -0
  142. package/dist/tests/acceptance/178-dashboard-tabs-reposition.acceptance.test.js.map +1 -0
  143. package/dist/tests/acceptance/179-dashboard-project-settings-modal.acceptance.test.d.ts +12 -0
  144. package/dist/tests/acceptance/179-dashboard-project-settings-modal.acceptance.test.d.ts.map +1 -0
  145. package/dist/tests/acceptance/179-dashboard-project-settings-modal.acceptance.test.js +312 -0
  146. package/dist/tests/acceptance/179-dashboard-project-settings-modal.acceptance.test.js.map +1 -0
  147. package/dist/tests/acceptance/91-dashboard-multi-project-overview.acceptance.test.js +5 -0
  148. package/dist/tests/acceptance/91-dashboard-multi-project-overview.acceptance.test.js.map +1 -1
  149. package/dist/tests/stubs/projectConfigGateway.stub.d.ts +15 -0
  150. package/dist/tests/stubs/projectConfigGateway.stub.d.ts.map +1 -0
  151. package/dist/tests/stubs/projectConfigGateway.stub.js +40 -0
  152. package/dist/tests/stubs/projectConfigGateway.stub.js.map +1 -0
  153. package/dist/tests/stubs/reviewContextGateway.stub.d.ts +1 -0
  154. package/dist/tests/stubs/reviewContextGateway.stub.d.ts.map +1 -1
  155. package/dist/tests/stubs/reviewContextGateway.stub.js +3 -0
  156. package/dist/tests/stubs/reviewContextGateway.stub.js.map +1 -1
  157. package/dist/tests/units/config/projectConfig.test.js +43 -0
  158. package/dist/tests/units/config/projectConfig.test.js.map +1 -1
  159. package/dist/tests/units/dashboard/modules/animations.test.d.ts +10 -0
  160. package/dist/tests/units/dashboard/modules/animations.test.d.ts.map +1 -0
  161. package/dist/tests/units/dashboard/modules/animations.test.js +223 -0
  162. package/dist/tests/units/dashboard/modules/animations.test.js.map +1 -0
  163. package/dist/tests/units/dashboard/modules/cardCounters.test.d.ts +2 -0
  164. package/dist/tests/units/dashboard/modules/cardCounters.test.d.ts.map +1 -0
  165. package/dist/tests/units/dashboard/modules/cardCounters.test.js +162 -0
  166. package/dist/tests/units/dashboard/modules/cardCounters.test.js.map +1 -0
  167. package/dist/tests/units/dashboard/modules/managePanel.test.d.ts +2 -0
  168. package/dist/tests/units/dashboard/modules/managePanel.test.d.ts.map +1 -0
  169. package/dist/tests/units/dashboard/modules/managePanel.test.js +112 -0
  170. package/dist/tests/units/dashboard/modules/managePanel.test.js.map +1 -0
  171. package/dist/tests/units/dashboard/modules/overview.test.js +92 -0
  172. package/dist/tests/units/dashboard/modules/overview.test.js.map +1 -1
  173. package/dist/tests/units/dashboard/modules/settingsModal.test.d.ts +2 -0
  174. package/dist/tests/units/dashboard/modules/settingsModal.test.d.ts.map +1 -0
  175. package/dist/tests/units/dashboard/modules/settingsModal.test.js +166 -0
  176. package/dist/tests/units/dashboard/modules/settingsModal.test.js.map +1 -0
  177. package/dist/tests/units/dashboard/modules/tabBar.test.js +40 -11
  178. package/dist/tests/units/dashboard/modules/tabBar.test.js.map +1 -1
  179. package/dist/tests/units/entities/reviewContext/reviewContext.schema.test.js +1 -0
  180. package/dist/tests/units/entities/reviewContext/reviewContext.schema.test.js.map +1 -1
  181. package/dist/tests/units/entities/reviewContext/reviewContextResult.factory.test.d.ts +2 -0
  182. package/dist/tests/units/entities/reviewContext/reviewContextResult.factory.test.d.ts.map +1 -0
  183. package/dist/tests/units/entities/reviewContext/reviewContextResult.factory.test.js +43 -0
  184. package/dist/tests/units/entities/reviewContext/reviewContextResult.factory.test.js.map +1 -0
  185. package/dist/tests/units/entities/reviewContext/reviewContextResult.guard.test.js +7 -3
  186. package/dist/tests/units/entities/reviewContext/reviewContextResult.guard.test.js.map +1 -1
  187. package/dist/tests/units/entities/reviewContext/reviewContextResult.schema.test.js +12 -1
  188. package/dist/tests/units/entities/reviewContext/reviewContextResult.schema.test.js.map +1 -1
  189. package/dist/tests/units/frameworks/config/configLoader.test.js +35 -1
  190. package/dist/tests/units/frameworks/config/configLoader.test.js.map +1 -1
  191. package/dist/tests/units/interface-adapters/controllers/webhook/github.controller.test.js +57 -0
  192. package/dist/tests/units/interface-adapters/controllers/webhook/github.controller.test.js.map +1 -1
  193. package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js +1 -0
  194. package/dist/tests/units/interface-adapters/controllers/webhook/gitlab.controller.test.js.map +1 -1
  195. package/dist/tests/units/interface-adapters/gateways/reviewContext.fileSystem.gateway.test.js +64 -4
  196. package/dist/tests/units/interface-adapters/gateways/reviewContext.fileSystem.gateway.test.js.map +1 -1
  197. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.test.js +56 -0
  198. package/dist/tests/units/modules/claude-invocation/interface-adapters/gateways/reviewReport.fileSystem.gateway.test.js.map +1 -1
  199. package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.test.js +111 -0
  200. package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/projectConfig.routes.test.js.map +1 -1
  201. package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.test.js +244 -3
  202. package/dist/tests/units/modules/cli-configuration/interface-adapters/controllers/http/repositories.routes.test.js.map +1 -1
  203. package/dist/tests/units/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.test.d.ts +2 -0
  204. package/dist/tests/units/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.test.d.ts.map +1 -0
  205. package/dist/tests/units/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.test.js +72 -0
  206. package/dist/tests/units/modules/cli-configuration/interface-adapters/gateways/projectConfig.fileSystem.gateway.test.js.map +1 -0
  207. package/dist/tests/units/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.test.d.ts +2 -0
  208. package/dist/tests/units/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.test.d.ts.map +1 -0
  209. package/dist/tests/units/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.test.js +76 -0
  210. package/dist/tests/units/modules/cli-configuration/usecases/cli/removeRepositoryFromConfig.usecase.test.js.map +1 -0
  211. package/dist/tests/units/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.test.d.ts +2 -0
  212. package/dist/tests/units/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.test.d.ts.map +1 -0
  213. package/dist/tests/units/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.test.js +84 -0
  214. package/dist/tests/units/modules/cli-configuration/usecases/cli/toggleRepositoryEnabled.usecase.test.js.map +1 -0
  215. package/dist/tests/units/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.test.d.ts +2 -0
  216. package/dist/tests/units/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.test.d.ts.map +1 -0
  217. package/dist/tests/units/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.test.js +141 -0
  218. package/dist/tests/units/modules/cli-configuration/usecases/projectConfig/updateProjectConfig.usecase.test.js.map +1 -0
  219. package/dist/tests/units/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.test.js +44 -0
  220. package/dist/tests/units/modules/statistics-insights/interface-adapters/controllers/http/overview.routes.test.js.map +1 -1
  221. package/dist/tests/units/modules/statistics-insights/interface-adapters/presenters/overview.presenter.test.js +42 -0
  222. package/dist/tests/units/modules/statistics-insights/interface-adapters/presenters/overview.presenter.test.js.map +1 -1
  223. package/dist/tests/units/services/reviewRecovery.service.test.d.ts +2 -0
  224. package/dist/tests/units/services/reviewRecovery.service.test.d.ts.map +1 -0
  225. package/dist/tests/units/services/reviewRecovery.service.test.js +49 -0
  226. package/dist/tests/units/services/reviewRecovery.service.test.js.map +1 -0
  227. package/dist/tests/units/services/runReviewRecovery.service.test.d.ts +2 -0
  228. package/dist/tests/units/services/runReviewRecovery.service.test.d.ts.map +1 -0
  229. package/dist/tests/units/services/runReviewRecovery.service.test.js +199 -0
  230. package/dist/tests/units/services/runReviewRecovery.service.test.js.map +1 -0
  231. package/package.json +1 -1
@@ -0,0 +1,164 @@
1
+ /**
2
+ * animations.js — Anime.js v4 animation helpers for the Operator's Console dashboard.
3
+ *
4
+ * Pure functions: take DOM elements + options, delegate to anime.js, return nothing
5
+ * (or a stop handle for loops). No DOM access at module level, no global state.
6
+ *
7
+ * Every function guards on reducedMotion() and returns immediately (or applies end-state)
8
+ * when the user prefers reduced motion.
9
+ *
10
+ * @module animations
11
+ */
12
+ /**
13
+ * Returns true when the user has opted-in to reduced motion.
14
+ * @returns {boolean}
15
+ */
16
+ export function reducedMotion(): boolean;
17
+ /**
18
+ * Fade-up stagger mount animation for a NodeList or Array of elements.
19
+ * @param {Element[]|NodeList} elements
20
+ * @param {{ staggerMs?: number, durationMs?: number, yOffset?: number, animeApi: object }} options
21
+ */
22
+ export function animateMount(elements: Element[] | NodeList, options: {
23
+ staggerMs?: number;
24
+ durationMs?: number;
25
+ yOffset?: number;
26
+ animeApi: object;
27
+ }): void;
28
+ /**
29
+ * Animated number counter — morphs text content from oldValue to newValue.
30
+ * Adds a brief scale pulse on the element.
31
+ * @param {Element} element
32
+ * @param {number} from
33
+ * @param {number} to
34
+ * @param {{ animeApi: object, durationMs?: number, onComplete?: () => void }} options
35
+ */
36
+ export function animateCounter(element: Element, from: number, to: number, options: {
37
+ animeApi: object;
38
+ durationMs?: number;
39
+ onComplete?: () => void;
40
+ }): void;
41
+ /**
42
+ * Slide the shared tab underline element to match the target tab's
43
+ * position and width. Pass the underline element and the active tab element.
44
+ * @param {Element} underline
45
+ * @param {Element} targetTab
46
+ * @param {{ animeApi: object }} options
47
+ */
48
+ export function slideTabUnderline(underline: Element, targetTab: Element, options: {
49
+ animeApi: object;
50
+ }): void;
51
+ /**
52
+ * Heartbeat — a 1px amber line traversing left-to-right infinitely
53
+ * inside the given container element.
54
+ * @param {Element} container - The 240px-wide container element.
55
+ * @param {{ animeApi: object }} options
56
+ * @returns {{ stop: () => void }}
57
+ */
58
+ export function heartbeat(container: Element, options: {
59
+ animeApi: object;
60
+ }): {
61
+ stop: () => void;
62
+ };
63
+ /**
64
+ * Breathing amber glow pulse on a live/active review card.
65
+ * @param {Element} element
66
+ * @param {{ animeApi: object }} options
67
+ * @returns {{ stop: () => void }}
68
+ */
69
+ export function pulseLive(element: Element, options: {
70
+ animeApi: object;
71
+ }): {
72
+ stop: () => void;
73
+ };
74
+ /**
75
+ * Spring-in entry for the settings modal (scale + opacity).
76
+ * @param {Element} modal
77
+ * @param {{ animeApi: object }} options
78
+ */
79
+ export function springIn(modal: Element, options: {
80
+ animeApi: object;
81
+ }): void;
82
+ /**
83
+ * Card lift on hover — translateY -2px + scale 1.005.
84
+ * @param {Element} card
85
+ * @param {{ animeApi: object }} options
86
+ */
87
+ export function liftCard(card: Element, options: {
88
+ animeApi: object;
89
+ }): void;
90
+ /**
91
+ * Return card to resting position.
92
+ * @param {Element} card
93
+ * @param {{ animeApi: object }} options
94
+ */
95
+ export function unliftCard(card: Element, options: {
96
+ animeApi: object;
97
+ }): void;
98
+ /**
99
+ * Subtle breathing pulse for the online status dot.
100
+ * @param {Element} dot
101
+ * @param {{ animeApi: object }} options
102
+ * @returns {{ stop: () => void }}
103
+ */
104
+ export function pulseStatusDot(dot: Element, options: {
105
+ animeApi: object;
106
+ }): {
107
+ stop: () => void;
108
+ };
109
+ /**
110
+ * Very subtle logo breathing pulse (daemon-alive signal).
111
+ * @param {Element} logo
112
+ * @param {{ animeApi: object }} options
113
+ * @returns {{ stop: () => void }}
114
+ */
115
+ export function breatheLogo(logo: Element, options: {
116
+ animeApi: object;
117
+ }): {
118
+ stop: () => void;
119
+ };
120
+ /**
121
+ * Cross-fade between tab content panels (fade out old, fade in new).
122
+ * @param {Element} outgoing - Element being hidden.
123
+ * @param {Element} incoming - Element being shown.
124
+ * @param {{ animeApi: object }} options
125
+ */
126
+ export function crossFadeTab(outgoing: Element, incoming: Element, options: {
127
+ animeApi: object;
128
+ }): void;
129
+ /**
130
+ * Expand an element from height 0 to its natural height using anime.js.
131
+ * Uses a snapshot of the natural height before collapsing to 0.
132
+ * @param {Element} element
133
+ * @param {{ animeApi: object }} options
134
+ */
135
+ export function expandHeight(element: Element, options: {
136
+ animeApi: object;
137
+ }): void;
138
+ /**
139
+ * Collapse an element from its natural height to 0 using anime.js.
140
+ * @param {Element} element
141
+ * @param {{ animeApi: object }} options
142
+ */
143
+ export function collapseHeight(element: Element, options: {
144
+ animeApi: object;
145
+ }): void;
146
+ /**
147
+ * Toggle expand/collapse of an element and stagger-animate its children on open.
148
+ * @param {Element} element
149
+ * @param {boolean} isOpen - true to expand, false to collapse
150
+ * @param {{ animeApi: object, childSelector?: string }} options
151
+ */
152
+ export function toggleHeight(element: Element, isOpen: boolean, options: {
153
+ animeApi: object;
154
+ childSelector?: string;
155
+ }): void;
156
+ /**
157
+ * Review status change: amber border fades → green glow pulse → green border.
158
+ * @param {Element} element
159
+ * @param {{ animeApi: object }} options
160
+ */
161
+ export function reviewCompleted(element: Element, options: {
162
+ animeApi: object;
163
+ }): void;
164
+ //# sourceMappingURL=animations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animations.d.ts","sourceRoot":"","sources":["../../../src/dashboard/modules/animations.js"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;GAGG;AACH,iCAFa,OAAO,CAInB;AAED;;;;GAIG;AACH,uCAHW,OAAO,EAAE,GAAC,QAAQ,WAClB;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,QAkBzF;AAED;;;;;;;GAOG;AACH,wCALW,OAAO,QACP,MAAM,MACN,MAAM,WACN;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,QA0B5E;AAED;;;;;;GAMG;AACH,6CAJW,OAAO,aACP,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,QAsB9B;AAED;;;;;;GAMG;AACH,qCAJW,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CA6ChC;AAED;;;;;GAKG;AACH,mCAJW,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAiBhC;AAED;;;;GAIG;AACH,gCAHW,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,QAe9B;AAED;;;;GAIG;AACH,+BAHW,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,QAW9B;AAED;;;;GAIG;AACH,iCAHW,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,QAW9B;AAED;;;;;GAKG;AACH,oCAJW,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAYhC;AAED;;;;;GAKG;AACH,kCAJW,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAYhC;AAED;;;;;GAKG;AACH,uCAJW,OAAO,YACP,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,QAwB9B;AAED;;;;;GAKG;AACH,sCAHW,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,QA0B9B;AAED;;;;GAIG;AACH,wCAHW,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,QAoB9B;AAED;;;;;GAKG;AACH,sCAJW,OAAO,UACP,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,QAqBtD;AAED;;;;GAIG;AACH,yCAHW,OAAO,WACP;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,QAkB9B"}
@@ -0,0 +1,405 @@
1
+ /**
2
+ * animations.js — Anime.js v4 animation helpers for the Operator's Console dashboard.
3
+ *
4
+ * Pure functions: take DOM elements + options, delegate to anime.js, return nothing
5
+ * (or a stop handle for loops). No DOM access at module level, no global state.
6
+ *
7
+ * Every function guards on reducedMotion() and returns immediately (or applies end-state)
8
+ * when the user prefers reduced motion.
9
+ *
10
+ * @module animations
11
+ */
12
+
13
+ /**
14
+ * Returns true when the user has opted-in to reduced motion.
15
+ * @returns {boolean}
16
+ */
17
+ export function reducedMotion() {
18
+ return window.matchMedia('(prefers-reduced-motion: reduce)').matches;
19
+ }
20
+
21
+ /**
22
+ * Fade-up stagger mount animation for a NodeList or Array of elements.
23
+ * @param {Element[]|NodeList} elements
24
+ * @param {{ staggerMs?: number, durationMs?: number, yOffset?: number, animeApi: object }} options
25
+ */
26
+ export function animateMount(elements, options) {
27
+ if (reducedMotion()) {
28
+ for (const el of elements) {
29
+ el.style.opacity = '1';
30
+ el.style.transform = 'none';
31
+ }
32
+ return;
33
+ }
34
+ const { animeApi, staggerMs = 60, durationMs = 280, yOffset = 12 } = options;
35
+ animeApi.animate(elements, {
36
+ opacity: [{ from: 0, to: 1 }],
37
+ translateY: [{ from: yOffset, to: 0 }],
38
+ duration: durationMs,
39
+ delay: animeApi.stagger(staggerMs),
40
+ easing: 'easeOutCubic',
41
+ });
42
+ }
43
+
44
+ /**
45
+ * Animated number counter — morphs text content from oldValue to newValue.
46
+ * Adds a brief scale pulse on the element.
47
+ * @param {Element} element
48
+ * @param {number} from
49
+ * @param {number} to
50
+ * @param {{ animeApi: object, durationMs?: number, onComplete?: () => void }} options
51
+ */
52
+ export function animateCounter(element, from, to, options) {
53
+ if (reducedMotion()) {
54
+ element.textContent = String(to);
55
+ return;
56
+ }
57
+ const { animeApi, durationMs = 360, onComplete } = options;
58
+ const proxy = { value: from };
59
+ animeApi.animate(proxy, {
60
+ value: [{ from, to }],
61
+ duration: durationMs,
62
+ easing: 'easeOutCubic',
63
+ onUpdate: () => {
64
+ element.textContent = String(Math.round(proxy.value));
65
+ },
66
+ onComplete: () => {
67
+ element.textContent = String(to);
68
+ if (typeof onComplete === 'function') onComplete();
69
+ },
70
+ });
71
+ animeApi.animate(element, {
72
+ scale: [{ from: 1, to: 1.06 }, { from: 1.06, to: 1 }],
73
+ duration: durationMs,
74
+ easing: 'easeOutBack',
75
+ });
76
+ }
77
+
78
+ /**
79
+ * Slide the shared tab underline element to match the target tab's
80
+ * position and width. Pass the underline element and the active tab element.
81
+ * @param {Element} underline
82
+ * @param {Element} targetTab
83
+ * @param {{ animeApi: object }} options
84
+ */
85
+ export function slideTabUnderline(underline, targetTab, options) {
86
+ const rect = targetTab.getBoundingClientRect();
87
+ const parentRect = targetTab.parentElement.getBoundingClientRect();
88
+ const left = rect.left - parentRect.left;
89
+ const width = rect.width;
90
+
91
+ if (reducedMotion()) {
92
+ underline.style.transform = `translateX(${left}px)`;
93
+ underline.style.width = `${width}px`;
94
+ underline.style.opacity = '1';
95
+ return;
96
+ }
97
+ const { animeApi } = options;
98
+ animeApi.animate(underline, {
99
+ translateX: [{ to: left }],
100
+ width: [{ to: width }],
101
+ opacity: [{ to: 1 }],
102
+ duration: 350,
103
+ easing: 'easeOutQuint',
104
+ });
105
+ }
106
+
107
+ /**
108
+ * Heartbeat — a 1px amber line traversing left-to-right infinitely
109
+ * inside the given container element.
110
+ * @param {Element} container - The 240px-wide container element.
111
+ * @param {{ animeApi: object }} options
112
+ * @returns {{ stop: () => void }}
113
+ */
114
+ export function heartbeat(container, options) {
115
+ if (reducedMotion()) {
116
+ container.style.background = 'linear-gradient(90deg, transparent 0%, var(--accent) 50%, transparent 100%)';
117
+ container.style.height = '1px';
118
+ container.style.opacity = '0.4';
119
+ return { stop: () => {} };
120
+ }
121
+ const { animeApi } = options;
122
+ container.style.position = 'relative';
123
+ container.style.height = '1px';
124
+ container.style.overflow = 'hidden';
125
+
126
+ const line = document.createElement('div');
127
+ line.style.cssText = `
128
+ position: absolute;
129
+ top: 0;
130
+ left: 0;
131
+ width: 60%;
132
+ height: 100%;
133
+ background: linear-gradient(90deg, transparent 0%, var(--accent) 40%, var(--accent) 70%, transparent 100%);
134
+ opacity: 0;
135
+ transform: translateX(-100%);
136
+ `;
137
+ container.appendChild(line);
138
+
139
+ const animation = animeApi.animate(line, {
140
+ translateX: [{ from: '-100%', to: '200%' }],
141
+ opacity: [
142
+ { to: 0.8, duration: 300 },
143
+ { to: 0.8, duration: 1800 },
144
+ { to: 0, duration: 900 },
145
+ ],
146
+ duration: 3000,
147
+ easing: 'linear',
148
+ loop: true,
149
+ });
150
+
151
+ return {
152
+ stop: () => {
153
+ animation.pause();
154
+ container.removeChild(line);
155
+ },
156
+ };
157
+ }
158
+
159
+ /**
160
+ * Breathing amber glow pulse on a live/active review card.
161
+ * @param {Element} element
162
+ * @param {{ animeApi: object }} options
163
+ * @returns {{ stop: () => void }}
164
+ */
165
+ export function pulseLive(element, options) {
166
+ if (reducedMotion()) return { stop: () => {} };
167
+ const { animeApi } = options;
168
+ const animation = animeApi.animate(element, {
169
+ boxShadow: [
170
+ { from: 'inset 0 0 0 0 rgba(244, 169, 61, 0)', to: 'inset 0 0 20px 4px rgba(244, 169, 61, 0.15)' },
171
+ { from: 'inset 0 0 20px 4px rgba(244, 169, 61, 0.15)', to: 'inset 0 0 0 0 rgba(244, 169, 61, 0)' },
172
+ ],
173
+ duration: 2400,
174
+ easing: 'easeInOutSine',
175
+ loop: true,
176
+ });
177
+ return {
178
+ stop: () => animation.pause(),
179
+ };
180
+ }
181
+
182
+ /**
183
+ * Spring-in entry for the settings modal (scale + opacity).
184
+ * @param {Element} modal
185
+ * @param {{ animeApi: object }} options
186
+ */
187
+ export function springIn(modal, options) {
188
+ if (reducedMotion()) {
189
+ modal.style.opacity = '1';
190
+ modal.style.transform = 'scale(1)';
191
+ return;
192
+ }
193
+ const { animeApi } = options;
194
+ animeApi.animate(modal, {
195
+ scale: [{ from: 0.96, to: 1 }],
196
+ opacity: [{ from: 0, to: 1 }],
197
+ duration: 240,
198
+ easing: 'easeOutBack',
199
+ });
200
+ }
201
+
202
+ /**
203
+ * Card lift on hover — translateY -2px + scale 1.005.
204
+ * @param {Element} card
205
+ * @param {{ animeApi: object }} options
206
+ */
207
+ export function liftCard(card, options) {
208
+ if (reducedMotion()) return;
209
+ const { animeApi } = options;
210
+ animeApi.animate(card, {
211
+ translateY: [{ to: -2 }],
212
+ scale: [{ to: 1.005 }],
213
+ duration: 120,
214
+ easing: 'easeOutCubic',
215
+ });
216
+ }
217
+
218
+ /**
219
+ * Return card to resting position.
220
+ * @param {Element} card
221
+ * @param {{ animeApi: object }} options
222
+ */
223
+ export function unliftCard(card, options) {
224
+ if (reducedMotion()) return;
225
+ const { animeApi } = options;
226
+ animeApi.animate(card, {
227
+ translateY: [{ to: 0 }],
228
+ scale: [{ to: 1 }],
229
+ duration: 120,
230
+ easing: 'easeOutCubic',
231
+ });
232
+ }
233
+
234
+ /**
235
+ * Subtle breathing pulse for the online status dot.
236
+ * @param {Element} dot
237
+ * @param {{ animeApi: object }} options
238
+ * @returns {{ stop: () => void }}
239
+ */
240
+ export function pulseStatusDot(dot, options) {
241
+ if (reducedMotion()) return { stop: () => {} };
242
+ const { animeApi } = options;
243
+ const animation = animeApi.animate(dot, {
244
+ opacity: [{ from: 0.7, to: 1 }, { from: 1, to: 0.7 }],
245
+ duration: 2000,
246
+ easing: 'easeInOutSine',
247
+ loop: true,
248
+ });
249
+ return { stop: () => animation.pause() };
250
+ }
251
+
252
+ /**
253
+ * Very subtle logo breathing pulse (daemon-alive signal).
254
+ * @param {Element} logo
255
+ * @param {{ animeApi: object }} options
256
+ * @returns {{ stop: () => void }}
257
+ */
258
+ export function breatheLogo(logo, options) {
259
+ if (reducedMotion()) return { stop: () => {} };
260
+ const { animeApi } = options;
261
+ const animation = animeApi.animate(logo, {
262
+ scale: [{ from: 1, to: 1.015 }, { from: 1.015, to: 1 }],
263
+ duration: 6000,
264
+ easing: 'easeInOutSine',
265
+ loop: true,
266
+ });
267
+ return { stop: () => animation.pause() };
268
+ }
269
+
270
+ /**
271
+ * Cross-fade between tab content panels (fade out old, fade in new).
272
+ * @param {Element} outgoing - Element being hidden.
273
+ * @param {Element} incoming - Element being shown.
274
+ * @param {{ animeApi: object }} options
275
+ */
276
+ export function crossFadeTab(outgoing, incoming, options) {
277
+ if (reducedMotion()) {
278
+ if (outgoing) outgoing.style.opacity = '1';
279
+ if (incoming) incoming.style.opacity = '1';
280
+ return;
281
+ }
282
+ const { animeApi } = options;
283
+ if (outgoing) {
284
+ animeApi.animate(outgoing, {
285
+ opacity: [{ from: 1, to: 0 }],
286
+ duration: 180,
287
+ easing: 'easeOutCubic',
288
+ });
289
+ }
290
+ if (incoming) {
291
+ incoming.style.opacity = '0';
292
+ animeApi.animate(incoming, {
293
+ opacity: [{ from: 0, to: 1 }],
294
+ duration: 180,
295
+ easing: 'easeOutCubic',
296
+ });
297
+ }
298
+ }
299
+
300
+ /**
301
+ * Expand an element from height 0 to its natural height using anime.js.
302
+ * Uses a snapshot of the natural height before collapsing to 0.
303
+ * @param {Element} element
304
+ * @param {{ animeApi: object }} options
305
+ */
306
+ export function expandHeight(element, options) {
307
+ const { animeApi } = options;
308
+ element.style.height = 'auto';
309
+ const targetHeight = element.getBoundingClientRect().height;
310
+ element.style.height = '0px';
311
+ element.style.overflow = 'hidden';
312
+ void element.offsetHeight;
313
+
314
+ if (reducedMotion()) {
315
+ element.style.height = 'auto';
316
+ element.style.overflow = '';
317
+ return;
318
+ }
319
+
320
+ animeApi.animate(element, {
321
+ height: [{ from: 0, to: targetHeight }],
322
+ opacity: [{ from: 0, to: 1 }],
323
+ duration: 280,
324
+ easing: 'easeOutCubic',
325
+ onComplete: () => {
326
+ element.style.height = 'auto';
327
+ element.style.overflow = '';
328
+ },
329
+ });
330
+ }
331
+
332
+ /**
333
+ * Collapse an element from its natural height to 0 using anime.js.
334
+ * @param {Element} element
335
+ * @param {{ animeApi: object }} options
336
+ */
337
+ export function collapseHeight(element, options) {
338
+ const { animeApi } = options;
339
+ const currentHeight = element.getBoundingClientRect().height;
340
+ element.style.height = `${currentHeight}px`;
341
+ element.style.overflow = 'hidden';
342
+ void element.offsetHeight;
343
+
344
+ if (reducedMotion()) {
345
+ element.style.height = '0px';
346
+ return;
347
+ }
348
+
349
+ animeApi.animate(element, {
350
+ height: [{ from: currentHeight, to: 0 }],
351
+ opacity: [{ from: 1, to: 0 }],
352
+ duration: 220,
353
+ easing: 'easeOutCubic',
354
+ });
355
+ }
356
+
357
+ /**
358
+ * Toggle expand/collapse of an element and stagger-animate its children on open.
359
+ * @param {Element} element
360
+ * @param {boolean} isOpen - true to expand, false to collapse
361
+ * @param {{ animeApi: object, childSelector?: string }} options
362
+ */
363
+ export function toggleHeight(element, isOpen, options) {
364
+ const { animeApi, childSelector = '.manage-row' } = options;
365
+ if (isOpen) {
366
+ expandHeight(element, { animeApi });
367
+ if (!reducedMotion()) {
368
+ const children = element.querySelectorAll(childSelector);
369
+ if (children.length > 0) {
370
+ animeApi.animate(children, {
371
+ opacity: [{ from: 0, to: 1 }],
372
+ translateY: [{ from: 8, to: 0 }],
373
+ duration: 200,
374
+ delay: animeApi.stagger(18),
375
+ easing: 'easeOutCubic',
376
+ });
377
+ }
378
+ }
379
+ } else {
380
+ collapseHeight(element, { animeApi });
381
+ }
382
+ }
383
+
384
+ /**
385
+ * Review status change: amber border fades → green glow pulse → green border.
386
+ * @param {Element} element
387
+ * @param {{ animeApi: object }} options
388
+ */
389
+ export function reviewCompleted(element, options) {
390
+ if (reducedMotion()) {
391
+ element.style.borderColor = 'var(--success)';
392
+ return;
393
+ }
394
+ const { animeApi } = options;
395
+ const timeline = animeApi.createTimeline({ easing: 'easeOutCubic' });
396
+ timeline
397
+ .add(element, {
398
+ boxShadow: [{ from: '0 0 0 0 rgba(123, 196, 127, 0)', to: '0 0 16px 4px rgba(123, 196, 127, 0.4)' }],
399
+ duration: 300,
400
+ })
401
+ .add(element, {
402
+ boxShadow: [{ from: '0 0 16px 4px rgba(123, 196, 127, 0.4)', to: '0 0 0 0 rgba(123, 196, 127, 0)' }],
403
+ duration: 300,
404
+ });
405
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"animations.js","sourceRoot":"","sources":["../../../src/dashboard/modules/animations.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @typedef {{ kind: 'overview' } | { kind: 'project', localPath: string, projectName: string, aliases?: string[] }} CardScope
3
+ */
4
+ /**
5
+ * @param {object} input
6
+ * @param {Array<{ project: string, status: string }>} input.activeReviews
7
+ * @param {Array<unknown>} input.reviewFiles
8
+ * @param {CardScope} input.scope
9
+ * @returns {{ running: number, queued: number, completed: number, markerLabel: string, markerKind: 'overview'|'project' }}
10
+ */
11
+ export function computeCardCounters(input: {
12
+ activeReviews: Array<{
13
+ project: string;
14
+ status: string;
15
+ }>;
16
+ reviewFiles: Array<unknown>;
17
+ scope: CardScope;
18
+ }): {
19
+ running: number;
20
+ queued: number;
21
+ completed: number;
22
+ markerLabel: string;
23
+ markerKind: "overview" | "project";
24
+ };
25
+ /**
26
+ * Extracts a GitHub-style `owner/repo` slug from a git remote URL.
27
+ * Returns null when the URL does not look like a GitHub remote.
28
+ *
29
+ * Accepts:
30
+ * - https://github.com/owner/repo.git
31
+ * - https://github.com/owner/repo
32
+ * - git@github.com:owner/repo.git
33
+ * - ssh://git@github.com/owner/repo.git
34
+ *
35
+ * @param {string | undefined | null} remoteUrl
36
+ * @returns {string | null}
37
+ */
38
+ export function extractGithubSlug(remoteUrl: string | undefined | null): string | null;
39
+ export type CardScope = {
40
+ kind: "overview";
41
+ } | {
42
+ kind: "project";
43
+ localPath: string;
44
+ projectName: string;
45
+ aliases?: string[];
46
+ };
47
+ //# sourceMappingURL=cardCounters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cardCounters.d.ts","sourceRoot":"","sources":["../../../src/dashboard/modules/cardCounters.js"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;GAMG;AACH,2CALG;IAA0D,aAAa,EAA/D,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACpB,WAAW,EAAjC,KAAK,CAAC,OAAO,CAAC;IACG,KAAK,EAAtB,SAAS;CACjB,GAAU;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,GAAC,SAAS,CAAA;CAAE,CA8BzH;AAaD;;;;;;;;;;;;GAYG;AACH,6CAHW,MAAM,GAAG,SAAS,GAAG,IAAI,GACvB,MAAM,GAAG,IAAI,CAUzB;wBAxEY;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE"}