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,202 @@
1
+ /**
2
+ * Dashboard module — Settings modal humble object (SPEC-179).
3
+ *
4
+ * Pure functions, no global state, no DOM access. Builds a viewmodel from a
5
+ * ProjectConfig payload, renders the dialog form HTML, validates the
6
+ * externalLink field client-side, and extracts a whitelisted patch payload
7
+ * from a FormData-like object.
8
+ *
9
+ * Visual DNA: "Agentic OS" — see project_agentic_os_design_dna.md.
10
+ */
11
+
12
+ import { escapeHtml } from './html.js';
13
+ import { t } from './i18n.js';
14
+
15
+ const EDITABLE_KEYS = [
16
+ 'language',
17
+ 'defaultModel',
18
+ 'reviewSkill',
19
+ 'reviewFollowupSkill',
20
+ 'externalLink',
21
+ ];
22
+
23
+ const SUPPORTED_LANGUAGES = ['fr', 'en'];
24
+ const SUPPORTED_MODELS = ['haiku', 'sonnet', 'opus'];
25
+
26
+ /**
27
+ * @typedef {Object} SettingsModalConfigInput
28
+ * @property {'haiku' | 'sonnet' | 'opus'} defaultModel
29
+ * @property {string} reviewSkill
30
+ * @property {string} reviewFollowupSkill
31
+ * @property {'en' | 'fr'} language
32
+ * @property {string} [externalLink]
33
+ * @property {boolean} [github]
34
+ * @property {boolean} [gitlab]
35
+ * @property {number} [retentionDays]
36
+ */
37
+
38
+ /**
39
+ * @typedef {Object} SettingsModalBuildInput
40
+ * @property {SettingsModalConfigInput} config
41
+ * @property {string} [projectName]
42
+ */
43
+
44
+ /**
45
+ * @typedef {Object} SettingsModalViewModel
46
+ * @property {'en' | 'fr'} language
47
+ * @property {'haiku' | 'sonnet' | 'opus'} defaultModel
48
+ * @property {string} reviewSkill
49
+ * @property {string} reviewFollowupSkill
50
+ * @property {string} externalLink
51
+ * @property {string} projectName
52
+ */
53
+
54
+ /**
55
+ * @param {SettingsModalBuildInput} input
56
+ * @returns {SettingsModalViewModel}
57
+ */
58
+ export function buildSettingsViewModel(input) {
59
+ const config = input.config;
60
+ return {
61
+ language: config.language,
62
+ defaultModel: config.defaultModel,
63
+ reviewSkill: config.reviewSkill,
64
+ reviewFollowupSkill: config.reviewFollowupSkill,
65
+ externalLink: typeof config.externalLink === 'string' ? config.externalLink : '',
66
+ projectName: typeof input.projectName === 'string' && input.projectName.length > 0
67
+ ? input.projectName
68
+ : '—',
69
+ };
70
+ }
71
+
72
+ /**
73
+ * @param {SettingsModalViewModel} viewModel
74
+ * @returns {string}
75
+ */
76
+ function renderLanguageRadios(viewModel) {
77
+ return SUPPORTED_LANGUAGES
78
+ .map((value) => {
79
+ const checked = viewModel.language === value ? ' checked' : '';
80
+ const label = value === 'fr' ? 'Français' : 'English';
81
+ return `
82
+ <label class="settings-modal__radio">
83
+ <input type="radio" name="language" value="${escapeHtml(value)}"${checked} />
84
+ <span>${escapeHtml(label)}</span>
85
+ </label>
86
+ `.trim();
87
+ })
88
+ .join('');
89
+ }
90
+
91
+ /**
92
+ * @param {SettingsModalViewModel} viewModel
93
+ * @returns {string}
94
+ */
95
+ function renderModelOptions(viewModel) {
96
+ return SUPPORTED_MODELS
97
+ .map((value) => {
98
+ const selected = viewModel.defaultModel === value ? ' selected' : '';
99
+ return `<option value="${escapeHtml(value)}"${selected}>${escapeHtml(value)}</option>`;
100
+ })
101
+ .join('');
102
+ }
103
+
104
+ /**
105
+ * Renders the UI language selector (changes the dashboard interface language,
106
+ * distinct from the project language used for Claude prompts).
107
+ * @returns {string}
108
+ */
109
+ function renderUiLanguageSelect() {
110
+ return `
111
+ <label class="settings-modal__field">
112
+ <span class="settings-modal__label">${escapeHtml(t('settings.uiLanguage'))}</span>
113
+ <select id="settings-modal-ui-language" class="settings-modal__select" onchange="changeLanguage(this.value)">
114
+ <option value="en">English</option>
115
+ <option value="fr">Français</option>
116
+ </select>
117
+ </label>
118
+ `.trim();
119
+ }
120
+
121
+ /**
122
+ * @param {SettingsModalViewModel} viewModel
123
+ * @returns {string}
124
+ */
125
+ export function renderSettingsModalHtml(viewModel) {
126
+ return `
127
+ <form class="settings-modal__form" method="dialog">
128
+ <h2 class="settings-modal__title" id="settings-modal-title">// SETTINGS — ${escapeHtml(viewModel.projectName)}</h2>
129
+
130
+ ${renderUiLanguageSelect()}
131
+
132
+ <fieldset class="settings-modal__field">
133
+ <legend class="settings-modal__legend">${escapeHtml(t('settings.claudePromptsLanguage'))}</legend>
134
+ ${renderLanguageRadios(viewModel)}
135
+ </fieldset>
136
+
137
+ <label class="settings-modal__field">
138
+ <span class="settings-modal__label">${escapeHtml(t('settings.defaultModel'))}</span>
139
+ <select name="defaultModel" class="settings-modal__select">
140
+ ${renderModelOptions(viewModel)}
141
+ </select>
142
+ </label>
143
+
144
+ <label class="settings-modal__field">
145
+ <span class="settings-modal__label">${escapeHtml(t('settings.reviewSkill'))}</span>
146
+ <input type="text" name="reviewSkill" value="${escapeHtml(viewModel.reviewSkill)}" class="settings-modal__input" />
147
+ </label>
148
+
149
+ <label class="settings-modal__field">
150
+ <span class="settings-modal__label">${escapeHtml(t('settings.reviewFollowupSkill'))}</span>
151
+ <input type="text" name="reviewFollowupSkill" value="${escapeHtml(viewModel.reviewFollowupSkill)}" class="settings-modal__input" />
152
+ </label>
153
+
154
+ <label class="settings-modal__field">
155
+ <span class="settings-modal__label">${escapeHtml(t('settings.externalLink'))}</span>
156
+ <input type="url" name="externalLink" value="${escapeHtml(viewModel.externalLink)}" placeholder="${escapeHtml(t('settings.externalLinkPlaceholder'))}" class="settings-modal__input" />
157
+ </label>
158
+
159
+ <p class="settings-modal__error" aria-live="polite"></p>
160
+
161
+ <div class="settings-modal__actions">
162
+ <button type="button" class="settings-modal__cancel">${escapeHtml(t('settings.cancel'))}</button>
163
+ <button type="submit" class="settings-modal__submit">${escapeHtml(t('settings.save'))}</button>
164
+ </div>
165
+ </form>
166
+ `.trim();
167
+ }
168
+
169
+ /**
170
+ * Mirrors the server-side regex from updateProjectConfig.usecase.ts.
171
+ *
172
+ * @param {string} value
173
+ * @returns {{ ok: true } | { ok: false; message: string }}
174
+ */
175
+ export function validateExternalLink(value) {
176
+ if (value === '') return { ok: true };
177
+ if (value.startsWith('http://')) {
178
+ return { ok: false, message: 'Le lien doit être en HTTPS' };
179
+ }
180
+ if (!/^https:\/\/.+/.test(value)) {
181
+ return { ok: false, message: 'URL invalide' };
182
+ }
183
+ return { ok: true };
184
+ }
185
+
186
+ /**
187
+ * Extracts a whitelisted payload from a FormData-like object (FormData or Map).
188
+ *
189
+ * @param {FormData | Map<string, string>} form
190
+ * @returns {Record<string, string>}
191
+ */
192
+ export function extractFormPayload(form) {
193
+ /** @type {Record<string, string>} */
194
+ const payload = {};
195
+ for (const key of EDITABLE_KEYS) {
196
+ const value = typeof form.get === 'function' ? form.get(key) : undefined;
197
+ if (typeof value === 'string') {
198
+ payload[key] = value;
199
+ }
200
+ }
201
+ return payload;
202
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settingsModal.js","sourceRoot":"","sources":["../../../src/dashboard/modules/settingsModal.js"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAC;AAE9B,MAAM,aAAa,GAAG;IACpB,UAAU;IACV,cAAc;IACd,aAAa;IACb,qBAAqB;IACrB,cAAc;CACf,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACzC,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAErD;;;;;;;;;;GAUG;AAEH;;;;GAIG;AAEH;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAK;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;QAC/C,YAAY,EAAE,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;QAChF,WAAW,EAAE,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YAChF,CAAC,CAAC,KAAK,CAAC,WAAW;YACnB,CAAC,CAAC,GAAG;KACR,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,SAAS;IACrC,OAAO,mBAAmB;SACvB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACtD,OAAO;;uDAE0C,UAAU,CAAC,KAAK,CAAC,IAAI,OAAO;kBACjE,UAAU,CAAC,KAAK,CAAC;;OAE5B,CAAC,IAAI,EAAE,CAAC;IACX,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,SAAS;IACnC,OAAO,gBAAgB;SACpB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,SAAS,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,kBAAkB,UAAU,CAAC,KAAK,CAAC,IAAI,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;IACzF,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB;IAC7B,OAAO;;4CAEmC,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;;;;;;GAM7E,CAAC,IAAI,EAAE,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAS;IAC/C,OAAO;;kFAEyE,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC;;QAE3G,sBAAsB,EAAE;;;iDAGiB,UAAU,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;UACtF,oBAAoB,CAAC,SAAS,CAAC;;;;8CAIK,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;;YAExE,kBAAkB,CAAC,SAAS,CAAC;;;;;8CAKK,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC;uDAC5B,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC;;;;8CAI1C,UAAU,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC;+DAC5B,UAAU,CAAC,SAAS,CAAC,mBAAmB,CAAC;;;;8CAI1D,UAAU,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC;uDAC7B,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,kBAAkB,UAAU,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC;;;;;;+DAM7F,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;+DAChC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;;;GAG1F,CAAC,IAAI,EAAE,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAK;IACxC,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtC,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAI;IACrC,qCAAqC;IACrC,MAAM,OAAO,GAAG,EAAE,CAAC;IACnB,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -2,6 +2,7 @@
2
2
  * @typedef {Object} TabBarRepositoryInput
3
3
  * @property {string} name
4
4
  * @property {string} localPath
5
+ * @property {boolean} enabled
5
6
  */
6
7
  /**
7
8
  * @typedef {Object} TabBarBuildInput
@@ -13,6 +14,7 @@
13
14
  * @property {string} id
14
15
  * @property {string} label
15
16
  * @property {boolean} isActive
17
+ * @property {boolean} enabled
16
18
  */
17
19
  /**
18
20
  * @typedef {Object} TabBarViewModel
@@ -40,6 +42,7 @@ export function writeActiveTab(tabId: string): void;
40
42
  export type TabBarRepositoryInput = {
41
43
  name: string;
42
44
  localPath: string;
45
+ enabled: boolean;
43
46
  };
44
47
  export type TabBarBuildInput = {
45
48
  repositories: TabBarRepositoryInput[];
@@ -49,6 +52,7 @@ export type TabBarTabViewModel = {
49
52
  id: string;
50
53
  label: string;
51
54
  isActive: boolean;
55
+ enabled: boolean;
52
56
  };
53
57
  export type TabBarViewModel = {
54
58
  tabs: TabBarTabViewModel[];
@@ -1 +1 @@
1
- {"version":3,"file":"tabBar.d.ts","sourceRoot":"","sources":["../../../src/dashboard/modules/tabBar.js"],"names":[],"mappings":"AAcA;;;;GAIG;AAEH;;;;GAIG;AAEH;;;;;GAKG;AAEH;;;GAGG;AAEH;;;GAGG;AACH,wCAHW,gBAAgB,GACd,eAAe,CAoB3B;AAED;;;GAGG;AACH,4CAHW,eAAe,GACb,MAAM,CAUlB;AAED;;GAEG;AACH,iCAFa,MAAM,GAAG,IAAI,CAQzB;AAED;;;GAGG;AACH,sCAHW,MAAM,GACJ,IAAI,CAQhB;;UAjFa,MAAM;eACN,MAAM;;;kBAKN,qBAAqB,EAAE;iBACvB,MAAM,GAAG,IAAI;;;QAKb,MAAM;WACN,MAAM;cACN,OAAO;;;UAKP,kBAAkB,EAAE"}
1
+ {"version":3,"file":"tabBar.d.ts","sourceRoot":"","sources":["../../../src/dashboard/modules/tabBar.js"],"names":[],"mappings":"AAcA;;;;;GAKG;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AAEH;;;GAGG;AAEH;;;GAGG;AACH,wCAHW,gBAAgB,GACd,eAAe,CAsB3B;AAED;;;GAGG;AACH,4CAHW,eAAe,GACb,MAAM,CAWlB;AAED;;GAEG;AACH,iCAFa,MAAM,GAAG,IAAI,CAQzB;AAED;;;GAGG;AACH,sCAHW,MAAM,GACJ,IAAI,CAQhB;;UAtFa,MAAM;eACN,MAAM;aACN,OAAO;;;kBAKP,qBAAqB,EAAE;iBACvB,MAAM,GAAG,IAAI;;;QAKb,MAAM;WACN,MAAM;cACN,OAAO;aACP,OAAO;;;UAKP,kBAAkB,EAAE"}
@@ -16,6 +16,7 @@ const OVERVIEW_TAB_LABEL = 'Overview';
16
16
  * @typedef {Object} TabBarRepositoryInput
17
17
  * @property {string} name
18
18
  * @property {string} localPath
19
+ * @property {boolean} enabled
19
20
  */
20
21
 
21
22
  /**
@@ -29,6 +30,7 @@ const OVERVIEW_TAB_LABEL = 'Overview';
29
30
  * @property {string} id
30
31
  * @property {string} label
31
32
  * @property {boolean} isActive
33
+ * @property {boolean} enabled
32
34
  */
33
35
 
34
36
  /**
@@ -50,11 +52,13 @@ export function buildTabBarModel(input) {
50
52
  id: OVERVIEW_TAB_ID,
51
53
  label: OVERVIEW_TAB_LABEL,
52
54
  isActive: effectiveActiveId === OVERVIEW_TAB_ID,
55
+ enabled: true,
53
56
  };
54
57
  const projectTabs = repositories.map((repository) => ({
55
58
  id: repository.localPath,
56
59
  label: repository.name,
57
60
  isActive: effectiveActiveId === repository.localPath,
61
+ enabled: repository.enabled !== false,
58
62
  }));
59
63
 
60
64
  return { tabs: [overviewTab, ...projectTabs] };
@@ -68,7 +72,8 @@ export function renderTabBarHtml(viewModel) {
68
72
  const buttons = viewModel.tabs
69
73
  .map((tab) => {
70
74
  const activeClass = tab.isActive ? ' is-active' : '';
71
- return `<button type="button" class="dashboard-tab${activeClass}" data-tab-id="${escapeHtml(tab.id)}" role="tab" aria-selected="${tab.isActive ? 'true' : 'false'}">${escapeHtml(tab.label)}</button>`;
75
+ const enabledAttribute = tab.enabled ? 'true' : 'false';
76
+ return `<button type="button" class="dashboard-tab${activeClass}" data-tab-id="${escapeHtml(tab.id)}" data-enabled="${enabledAttribute}" role="tab" aria-selected="${tab.isActive ? 'true' : 'false'}">${escapeHtml(tab.label)}</button>`;
72
77
  })
73
78
  .join('');
74
79
  return `<nav class="dashboard-tab-bar" role="tablist">${buttons}</nav>`;
@@ -1 +1 @@
1
- {"version":3,"file":"tabBar.js","sourceRoot":"","sources":["../../../src/dashboard/modules/tabBar.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,eAAe,GAAG,UAAU,CAAC;AACnC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAEtC;;;;GAIG;AAEH;;;;GAIG;AAEH;;;;;GAKG;AAEH;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAK;IACpC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACtF,MAAM,yBAAyB,GAAG,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrG,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC;IAE1F,MAAM,WAAW,GAAG;QAClB,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,iBAAiB,KAAK,eAAe;KAChD,CAAC;IACF,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACpD,EAAE,EAAE,UAAU,CAAC,SAAS;QACxB,KAAK,EAAE,UAAU,CAAC,IAAI;QACtB,QAAQ,EAAE,iBAAiB,KAAK,UAAU,CAAC,SAAS;KACrD,CAAC,CAAC,CAAC;IAEJ,OAAO,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAS;IACxC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI;SAC3B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,OAAO,6CAA6C,WAAW,kBAAkB,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,+BAA+B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;IACzM,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,iDAAiD,OAAO,QAAQ,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAK;IAClC,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,iFAAiF;IACnF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"tabBar.js","sourceRoot":"","sources":["../../../src/dashboard/modules/tabBar.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,eAAe,GAAG,UAAU,CAAC;AACnC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AAEtC;;;;;GAKG;AAEH;;;;GAIG;AAEH;;;;;;GAMG;AAEH;;;GAGG;AAEH;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAK;IACpC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IACtF,MAAM,yBAAyB,GAAG,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACrG,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC;IAE1F,MAAM,WAAW,GAAG;QAClB,EAAE,EAAE,eAAe;QACnB,KAAK,EAAE,kBAAkB;QACzB,QAAQ,EAAE,iBAAiB,KAAK,eAAe;QAC/C,OAAO,EAAE,IAAI;KACd,CAAC;IACF,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACpD,EAAE,EAAE,UAAU,CAAC,SAAS;QACxB,KAAK,EAAE,UAAU,CAAC,IAAI;QACtB,QAAQ,EAAE,iBAAiB,KAAK,UAAU,CAAC,SAAS;QACpD,OAAO,EAAE,UAAU,CAAC,OAAO,KAAK,KAAK;KACtC,CAAC,CAAC,CAAC;IAEJ,OAAO,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,WAAW,CAAC,EAAE,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAS;IACxC,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI;SAC3B,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACxD,OAAO,6CAA6C,WAAW,kBAAkB,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,mBAAmB,gBAAgB,+BAA+B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;IAC5O,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,iDAAiD,OAAO,QAAQ,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAK;IAClC,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,iFAAiF;IACnF,CAAC;AACH,CAAC"}