@oneuptime/common 9.2.27 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/Models/DatabaseModels/AIAgent.ts +589 -0
  2. package/Models/DatabaseModels/AIAgentOwnerTeam.ts +434 -0
  3. package/Models/DatabaseModels/AIAgentOwnerUser.ts +433 -0
  4. package/Models/DatabaseModels/AIAgentTask.ts +549 -0
  5. package/Models/DatabaseModels/AIAgentTaskLog.ts +417 -0
  6. package/Models/DatabaseModels/AIAgentTaskPullRequest.ts +731 -0
  7. package/Models/DatabaseModels/AIAgentTaskTelemetryException.ts +388 -0
  8. package/Models/DatabaseModels/Index.ts +15 -0
  9. package/Models/DatabaseModels/Monitor.ts +33 -0
  10. package/Models/DatabaseModels/Project.ts +25 -0
  11. package/Models/DatabaseModels/TelemetryException.ts +1 -1
  12. package/Server/API/AIAgentAPI.ts +200 -0
  13. package/Server/API/AIAgentDataAPI.ts +692 -0
  14. package/Server/API/AIAgentTaskAPI.ts +286 -0
  15. package/Server/API/AIAgentTaskLogAPI.ts +165 -0
  16. package/Server/API/AIAgentTaskPullRequestAPI.ts +14 -0
  17. package/Server/API/GitHubAPI.ts +25 -7
  18. package/Server/API/TelemetryExceptionAPI.ts +169 -0
  19. package/Server/EnvironmentConfig.ts +3 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/1766590916627-MigrationName.ts +195 -0
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/1766600860972-MigrationName.ts +31 -0
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1766606720183-MigrationName.ts +17 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/1766688107858-MigrationName.ts +63 -0
  24. package/Server/Infrastructure/Postgres/SchemaMigrations/1766754182870-MigrationName.ts +75 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1766774689743-MigrationName.ts +157 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1766777986427-MigrationName.ts +33 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/1766918848434-AddAIAgentIsDefault.ts +27 -0
  28. package/Server/Infrastructure/Postgres/SchemaMigrations/1766923324521-MigrationName.ts +37 -0
  29. package/Server/Infrastructure/Postgres/SchemaMigrations/1766958924188-AddGitHubAppInstallationIdToProject.ts +31 -0
  30. package/Server/Infrastructure/Postgres/SchemaMigrations/1767009661768-MigrationName.ts +35 -0
  31. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +22 -0
  32. package/Server/Services/AIAgentOwnerTeamService.ts +10 -0
  33. package/Server/Services/AIAgentOwnerUserService.ts +10 -0
  34. package/Server/Services/AIAgentService.ts +564 -0
  35. package/Server/Services/AIAgentTaskLogService.ts +10 -0
  36. package/Server/Services/AIAgentTaskPullRequestService.ts +10 -0
  37. package/Server/Services/AIAgentTaskService.ts +178 -0
  38. package/Server/Services/AIAgentTaskTelemetryExceptionService.ts +39 -0
  39. package/Server/Services/Index.ts +10 -0
  40. package/Server/Services/TelemetryExceptionService.ts +162 -0
  41. package/Server/Utils/Monitor/MonitorResource.ts +228 -0
  42. package/Server/Utils/PushNotificationUtil.ts +29 -0
  43. package/Server/Utils/WhatsAppTemplateUtil.ts +6 -0
  44. package/Tests/UI/Components/Badge.test.tsx +5 -5
  45. package/Tests/UI/Components/Card.test.tsx +4 -8
  46. package/Tests/UI/Components/HiddenText.test.tsx +2 -5
  47. package/Tests/UI/Components/SideMenuItem.test.tsx +4 -2
  48. package/Types/AI/AIAgentTaskMetadata.ts +25 -0
  49. package/Types/AI/AIAgentTaskStatus.ts +65 -0
  50. package/Types/AI/AIAgentTaskType.ts +40 -0
  51. package/Types/Email/EmailTemplateType.ts +2 -0
  52. package/Types/Monitor/MonitorEvaluationSummary.ts +2 -1
  53. package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
  54. package/Types/Permission.ts +176 -0
  55. package/Types/WhatsApp/WhatsAppTemplates.ts +9 -0
  56. package/UI/Components/AIAgent/AIAgent.tsx +69 -0
  57. package/UI/Components/Badge/Badge.tsx +9 -5
  58. package/UI/Components/Banner/Banner.tsx +1 -1
  59. package/UI/Components/Card/Card.tsx +14 -12
  60. package/UI/Components/CodeBlock/CodeBlock.tsx +47 -4
  61. package/UI/Components/Detail/Detail.tsx +239 -49
  62. package/UI/Components/Detail/FieldLabel.tsx +35 -11
  63. package/UI/Components/Detail/PlaceholderText.tsx +18 -1
  64. package/UI/Components/Footer/Footer.tsx +9 -7
  65. package/UI/Components/Header/Header.tsx +4 -3
  66. package/UI/Components/Header/HeaderIconDropdownButton.tsx +13 -11
  67. package/UI/Components/Header/IconDropdown/IconDropdownItem.tsx +3 -3
  68. package/UI/Components/Header/IconDropdown/IconDropdownMenu.tsx +1 -1
  69. package/UI/Components/Header/ProjectPicker/CreateNewProjectButton.tsx +4 -4
  70. package/UI/Components/Header/ProjectPicker/ProjectPicker.tsx +6 -6
  71. package/UI/Components/Header/ProjectPicker/ProjectPickerFilterBox.tsx +3 -3
  72. package/UI/Components/Header/ProjectPicker/ProjectPickerMenu.tsx +1 -1
  73. package/UI/Components/Header/ProjectPicker/ProjectPickerMenuItem.tsx +4 -4
  74. package/UI/Components/HeaderAlert/HeaderAlert.tsx +32 -32
  75. package/UI/Components/HeaderAlert/HeaderAlertGroup.tsx +1 -7
  76. package/UI/Components/HiddenText/HiddenText.tsx +98 -27
  77. package/UI/Components/Icon/Icon.tsx +12 -9
  78. package/UI/Components/InfoCard/InfoCard.tsx +7 -3
  79. package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
  80. package/UI/Components/ObjectID/ObjectIDView.tsx +73 -0
  81. package/UI/Components/Page/Page.tsx +3 -5
  82. package/UI/Components/SideMenu/SideMenu.tsx +175 -40
  83. package/UI/Components/SideMenu/SideMenuDivider.tsx +17 -0
  84. package/UI/Components/SideMenu/SideMenuItem.tsx +111 -158
  85. package/UI/Components/SideMenu/SideMenuSection.tsx +53 -3
  86. package/UI/Components/Table/Table.tsx +1 -1
  87. package/UI/Components/Types/FieldType.ts +2 -0
  88. package/UI/Config.ts +5 -0
  89. package/build/dist/Models/DatabaseModels/AIAgent.js +614 -0
  90. package/build/dist/Models/DatabaseModels/AIAgent.js.map +1 -0
  91. package/build/dist/Models/DatabaseModels/AIAgentOwnerTeam.js +452 -0
  92. package/build/dist/Models/DatabaseModels/AIAgentOwnerTeam.js.map +1 -0
  93. package/build/dist/Models/DatabaseModels/AIAgentOwnerUser.js +451 -0
  94. package/build/dist/Models/DatabaseModels/AIAgentOwnerUser.js.map +1 -0
  95. package/build/dist/Models/DatabaseModels/AIAgentTask.js +580 -0
  96. package/build/dist/Models/DatabaseModels/AIAgentTask.js.map +1 -0
  97. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js +438 -0
  98. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js.map +1 -0
  99. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +771 -0
  100. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -0
  101. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js +404 -0
  102. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js.map +1 -0
  103. package/build/dist/Models/DatabaseModels/Index.js +14 -0
  104. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  105. package/build/dist/Models/DatabaseModels/Monitor.js +34 -0
  106. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  107. package/build/dist/Models/DatabaseModels/Project.js +26 -0
  108. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  109. package/build/dist/Models/DatabaseModels/TelemetryException.js +1 -1
  110. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
  111. package/build/dist/Server/API/AIAgentAPI.js +141 -0
  112. package/build/dist/Server/API/AIAgentAPI.js.map +1 -0
  113. package/build/dist/Server/API/AIAgentDataAPI.js +415 -0
  114. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -0
  115. package/build/dist/Server/API/AIAgentTaskAPI.js +199 -0
  116. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -0
  117. package/build/dist/Server/API/AIAgentTaskLogAPI.js +106 -0
  118. package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -0
  119. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js +9 -0
  120. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js.map +1 -0
  121. package/build/dist/Server/API/GitHubAPI.js +23 -8
  122. package/build/dist/Server/API/GitHubAPI.js.map +1 -1
  123. package/build/dist/Server/API/TelemetryExceptionAPI.js +120 -0
  124. package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -0
  125. package/build/dist/Server/EnvironmentConfig.js +2 -0
  126. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  127. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766590916627-MigrationName.js +74 -0
  128. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766590916627-MigrationName.js.map +1 -0
  129. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766600860972-MigrationName.js +18 -0
  130. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766600860972-MigrationName.js.map +1 -0
  131. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766606720183-MigrationName.js +12 -0
  132. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766606720183-MigrationName.js.map +1 -0
  133. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766688107858-MigrationName.js +28 -0
  134. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766688107858-MigrationName.js.map +1 -0
  135. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766754182870-MigrationName.js +32 -0
  136. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766754182870-MigrationName.js.map +1 -0
  137. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766774689743-MigrationName.js +60 -0
  138. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766774689743-MigrationName.js.map +1 -0
  139. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766777986427-MigrationName.js +18 -0
  140. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766777986427-MigrationName.js.map +1 -0
  141. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766918848434-AddAIAgentIsDefault.js +16 -0
  142. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766918848434-AddAIAgentIsDefault.js.map +1 -0
  143. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766923324521-MigrationName.js +20 -0
  144. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766923324521-MigrationName.js.map +1 -0
  145. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766958924188-AddGitHubAppInstallationIdToProject.js +16 -0
  146. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766958924188-AddGitHubAppInstallationIdToProject.js.map +1 -0
  147. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767009661768-MigrationName.js +18 -0
  148. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767009661768-MigrationName.js.map +1 -0
  149. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +22 -0
  150. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  151. package/build/dist/Server/Services/AIAgentOwnerTeamService.js +9 -0
  152. package/build/dist/Server/Services/AIAgentOwnerTeamService.js.map +1 -0
  153. package/build/dist/Server/Services/AIAgentOwnerUserService.js +9 -0
  154. package/build/dist/Server/Services/AIAgentOwnerUserService.js.map +1 -0
  155. package/build/dist/Server/Services/AIAgentService.js +471 -0
  156. package/build/dist/Server/Services/AIAgentService.js.map +1 -0
  157. package/build/dist/Server/Services/AIAgentTaskLogService.js +9 -0
  158. package/build/dist/Server/Services/AIAgentTaskLogService.js.map +1 -0
  159. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js +9 -0
  160. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js.map +1 -0
  161. package/build/dist/Server/Services/AIAgentTaskService.js +158 -0
  162. package/build/dist/Server/Services/AIAgentTaskService.js.map +1 -0
  163. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js +36 -0
  164. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js.map +1 -0
  165. package/build/dist/Server/Services/Index.js +10 -0
  166. package/build/dist/Server/Services/Index.js.map +1 -1
  167. package/build/dist/Server/Services/TelemetryExceptionService.js +137 -0
  168. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  169. package/build/dist/Server/Utils/Monitor/MonitorResource.js +168 -0
  170. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  171. package/build/dist/Server/Utils/PushNotificationUtil.js +21 -0
  172. package/build/dist/Server/Utils/PushNotificationUtil.js.map +1 -1
  173. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +4 -0
  174. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
  175. package/build/dist/Tests/UI/Components/Badge.test.js +5 -5
  176. package/build/dist/Tests/UI/Components/Badge.test.js.map +1 -1
  177. package/build/dist/Tests/UI/Components/Card.test.js +4 -8
  178. package/build/dist/Tests/UI/Components/Card.test.js.map +1 -1
  179. package/build/dist/Tests/UI/Components/HiddenText.test.js +2 -3
  180. package/build/dist/Tests/UI/Components/HiddenText.test.js.map +1 -1
  181. package/build/dist/Tests/UI/Components/SideMenuItem.test.js +3 -2
  182. package/build/dist/Tests/UI/Components/SideMenuItem.test.js.map +1 -1
  183. package/build/dist/Types/AI/AIAgentTaskMetadata.js +6 -0
  184. package/build/dist/Types/AI/AIAgentTaskMetadata.js.map +1 -0
  185. package/build/dist/Types/AI/AIAgentTaskStatus.js +51 -0
  186. package/build/dist/Types/AI/AIAgentTaskStatus.js.map +1 -0
  187. package/build/dist/Types/AI/AIAgentTaskType.js +29 -0
  188. package/build/dist/Types/AI/AIAgentTaskType.js.map +1 -0
  189. package/build/dist/Types/Email/EmailTemplateType.js +2 -0
  190. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  191. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
  192. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  193. package/build/dist/Types/Permission.js +160 -0
  194. package/build/dist/Types/Permission.js.map +1 -1
  195. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js +6 -0
  196. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js.map +1 -1
  197. package/build/dist/UI/Components/AIAgent/AIAgent.js +32 -0
  198. package/build/dist/UI/Components/AIAgent/AIAgent.js.map +1 -0
  199. package/build/dist/UI/Components/Badge/Badge.js +9 -5
  200. package/build/dist/UI/Components/Badge/Badge.js.map +1 -1
  201. package/build/dist/UI/Components/Banner/Banner.js +1 -1
  202. package/build/dist/UI/Components/Banner/Banner.js.map +1 -1
  203. package/build/dist/UI/Components/Card/Card.js +12 -12
  204. package/build/dist/UI/Components/Card/Card.js.map +1 -1
  205. package/build/dist/UI/Components/CodeBlock/CodeBlock.js +22 -2
  206. package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
  207. package/build/dist/UI/Components/Detail/Detail.js +117 -37
  208. package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
  209. package/build/dist/UI/Components/Detail/FieldLabel.js +12 -7
  210. package/build/dist/UI/Components/Detail/FieldLabel.js.map +1 -1
  211. package/build/dist/UI/Components/Detail/PlaceholderText.js +4 -1
  212. package/build/dist/UI/Components/Detail/PlaceholderText.js.map +1 -1
  213. package/build/dist/UI/Components/Footer/Footer.js +6 -6
  214. package/build/dist/UI/Components/Footer/Footer.js.map +1 -1
  215. package/build/dist/UI/Components/Header/Header.js +4 -3
  216. package/build/dist/UI/Components/Header/Header.js.map +1 -1
  217. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +7 -7
  218. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  219. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js +3 -3
  220. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js.map +1 -1
  221. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js +1 -1
  222. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js.map +1 -1
  223. package/build/dist/UI/Components/Header/ProjectPicker/CreateNewProjectButton.js +4 -4
  224. package/build/dist/UI/Components/Header/ProjectPicker/CreateNewProjectButton.js.map +1 -1
  225. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js +6 -6
  226. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js.map +1 -1
  227. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerFilterBox.js +2 -2
  228. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerFilterBox.js.map +1 -1
  229. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerMenu.js +1 -1
  230. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerMenu.js.map +1 -1
  231. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerMenuItem.js +4 -4
  232. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerMenuItem.js.map +1 -1
  233. package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js +31 -29
  234. package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js.map +1 -1
  235. package/build/dist/UI/Components/HeaderAlert/HeaderAlertGroup.js +1 -3
  236. package/build/dist/UI/Components/HeaderAlert/HeaderAlertGroup.js.map +1 -1
  237. package/build/dist/UI/Components/HiddenText/HiddenText.js +33 -14
  238. package/build/dist/UI/Components/HiddenText/HiddenText.js.map +1 -1
  239. package/build/dist/UI/Components/Icon/Icon.js +3 -4
  240. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  241. package/build/dist/UI/Components/InfoCard/InfoCard.js +3 -3
  242. package/build/dist/UI/Components/InfoCard/InfoCard.js.map +1 -1
  243. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
  244. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  245. package/build/dist/UI/Components/ObjectID/ObjectIDView.js +30 -0
  246. package/build/dist/UI/Components/ObjectID/ObjectIDView.js.map +1 -0
  247. package/build/dist/UI/Components/Page/Page.js +3 -3
  248. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  249. package/build/dist/UI/Components/SideMenu/SideMenu.js +82 -17
  250. package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
  251. package/build/dist/UI/Components/SideMenu/SideMenuDivider.js +7 -0
  252. package/build/dist/UI/Components/SideMenu/SideMenuDivider.js.map +1 -0
  253. package/build/dist/UI/Components/SideMenu/SideMenuItem.js +68 -97
  254. package/build/dist/UI/Components/SideMenu/SideMenuItem.js.map +1 -1
  255. package/build/dist/UI/Components/SideMenu/SideMenuSection.js +18 -3
  256. package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
  257. package/build/dist/UI/Components/Table/Table.js +1 -1
  258. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  259. package/build/dist/UI/Components/Types/FieldType.js +2 -0
  260. package/build/dist/UI/Components/Types/FieldType.js.map +1 -1
  261. package/build/dist/UI/Config.js +2 -0
  262. package/build/dist/UI/Config.js.map +1 -1
  263. package/package.json +1 -1
@@ -21,195 +21,148 @@ export interface ComponentProps {
21
21
  const SideMenuItem: FunctionComponent<ComponentProps> = (
22
22
  props: ComponentProps,
23
23
  ) => {
24
- const badgeClasName: string = `p-1 rounded-full pr-3 pl-3 text-white text-sm`;
25
-
26
- let linkClassName: string = `text-gray-500 hover:text-gray-900 hover:bg-gray-100 group rounded-md px-3 py-2 flex items-center text-sm font-medium`;
27
-
28
- if (Navigation.isOnThisPage(props.link.to)) {
29
- linkClassName = `bg-gray-100 text-indigo-600 hover:bg-white group rounded-md px-3 py-2 flex items-center text-sm font-medium`;
30
- }
31
-
32
- let subItemLinkClassName: string = `text-gray-500 hover:text-gray-900 hover:bg-gray-100 group rounded-md px-3 py-2 flex items-center text-sm font-medium`;
33
-
34
- if (props.subItemLink && Navigation.isOnThisPage(props.subItemLink.to)) {
35
- subItemLinkClassName = `bg-gray-100 text-indigo-600 hover:bg-white group rounded-md px-3 py-2 flex items-center text-sm font-medium`;
36
- }
37
-
38
- /*
39
- * if(props.badge && props.badge > 0){
40
- * if(props.badgeType === BadgeType.DANGER){
41
- * linkClassName = `text-red-400 hover:text-red-600 hover:bg-gray-100 group rounded-md px-3 py-2 flex items-center text-sm font-medium`;
42
- */
43
-
44
- /*
45
- * if(Navigation.isOnThisPage(props.link.to)){
46
- * linkClassName = `bg-gray-100 text-red-600 hover:bg-white group rounded-md px-3 py-2 flex items-center text-sm font-medium`;
47
- * }
48
- */
49
-
50
- // }
51
-
52
- /*
53
- * if(props.badgeType === BadgeType.WARNING){
54
- * linkClassName = `text-yellow-400 hover:text-yellow-600 hover:bg-gray-100 group rounded-md px-3 py-2 flex items-center text-sm font-medium`;
55
- */
56
-
57
- /*
58
- * if(Navigation.isOnThisPage(props.link.to)){
59
- * linkClassName = `bg-gray-100 text-yellow-600 hover:bg-white group rounded-md px-3 py-2 flex items-center text-sm font-medium`;
60
- * }
61
- * }
62
- */
63
-
64
- /*
65
- * if(props.badgeType === BadgeType.SUCCESS){
66
- * linkClassName = `text-emerald-400 hover:text-emerald-600 hover:bg-gray-100 group rounded-md px-3 py-2 flex items-center text-sm font-medium`;
67
- */
68
-
69
- /*
70
- * if(Navigation.isOnThisPage(props.link.to)){
71
- * linkClassName = `bg-gray-100 text-emerald-600 hover:bg-white group rounded-md px-3 py-2 flex items-center text-sm font-medium`;
72
- * }
73
- * }
74
- * }
75
- */
76
-
77
- let iconClassName: string =
78
- "text-gray-400 group-hover:text-gray-500 flex-shrink-0 -ml-1 mr-3 h-6 w-6";
79
-
80
- if (Navigation.isOnThisPage(props.link.to)) {
81
- iconClassName = "text-indigo-500 flex-shrink-0 -ml-1 mr-3 h-6 w-6";
82
- }
83
-
84
- let subItemIconClassName: string =
85
- "text-gray-400 group-hover:text-gray-500 flex-shrink-0 -ml-1 mr-3 h-6 w-6";
86
-
87
- if (props.subItemLink && Navigation.isOnThisPage(props.subItemLink.to)) {
88
- subItemIconClassName = "text-indigo-500 flex-shrink-0 -ml-1 mr-3 h-6 w-6";
89
- }
90
-
91
- /*
92
- * if(props.badge && props.badge > 0){
93
- * if(props.badgeType === BadgeType.DANGER){
94
- * iconClassName = `text-red-400 group-hover:text-red-500 flex-shrink-0 -ml-1 mr-3 h-6 w-6`;
95
- */
96
-
97
- /*
98
- * if(Navigation.isOnThisPage(props.link.to)){
99
- * iconClassName = `text-red-500 flex-shrink-0 -ml-1 mr-3 h-6 w-6`;
100
- * }
101
- */
102
-
103
- // }
104
-
105
- /*
106
- * if(props.badgeType === BadgeType.WARNING){
107
- * iconClassName = `text-yellow-400 group-hover:text-yellow-500 flex-shrink-0 -ml-1 mr-3 h-6 w-6`;
108
- */
109
-
110
- /*
111
- * if(Navigation.isOnThisPage(props.link.to)){
112
- * iconClassName = `text-yellow-500 flex-shrink-0 -ml-1 mr-3 h-6 w-6`;
113
- * }
114
- * }
115
- */
116
-
117
- /*
118
- * if(props.badgeType === BadgeType.SUCCESS){
119
- * iconClassName = `text-emerald-400 group-hover:text-emerald-500 flex-shrink-0 -ml-1 mr-3 h-6 w-6`;
120
- */
121
-
122
- /*
123
- * if(Navigation.isOnThisPage(props.link.to)){
124
- * iconClassName = `text-emerald-500 flex-shrink-0 -ml-1 mr-3 h-6 w-6`;
125
- * }
126
- * }
127
- * }
128
- */
24
+ const isActive: boolean = Navigation.isOnThisPage(props.link.to);
25
+ const isSubItemActive: boolean = props.subItemLink
26
+ ? Navigation.isOnThisPage(props.subItemLink.to)
27
+ : false;
129
28
 
130
29
  return (
131
30
  <>
31
+ {/* Main Menu Item */}
132
32
  <UILink
133
- className={`${
134
- props.className ? props.className : ""
135
- } ${linkClassName} flex justify-between`}
33
+ className={`
34
+ ${props.className || ""}
35
+ group relative flex items-center justify-between
36
+ px-2 py-1.5 rounded-lg
37
+ text-sm font-medium
38
+ transition-all duration-200 ease-out
39
+ ${
40
+ isActive
41
+ ? "bg-gradient-to-r from-indigo-50 to-indigo-50/50 text-indigo-700 shadow-sm"
42
+ : "text-gray-600 hover:bg-gray-50 hover:text-gray-900"
43
+ }
44
+ `}
136
45
  to={props.link.to}
137
46
  onClick={() => {
138
47
  window.scrollTo({ top: 0, behavior: "smooth" });
139
48
  }}
140
49
  >
141
- <div className="flex">
142
- {props.icon ? (
143
- <>
144
- <Icon className={iconClassName} icon={props.icon} />
145
- </>
146
- ) : (
147
- <></>
50
+ {/* Active Indicator Bar */}
51
+ <div
52
+ className={`
53
+ absolute left-0 top-1/2 -translate-y-1/2
54
+ w-0.5 rounded-full
55
+ transition-all duration-200 ease-out
56
+ ${isActive ? "h-5 bg-indigo-600" : "h-0 bg-transparent"}
57
+ `}
58
+ />
59
+
60
+ {/* Content Container */}
61
+ <div className="flex items-center min-w-0 gap-2">
62
+ {/* Icon with background on active */}
63
+ {props.icon && (
64
+ <div
65
+ className={`
66
+ flex items-center justify-center
67
+ w-6 h-6 rounded-md
68
+ transition-all duration-200
69
+ ${
70
+ isActive
71
+ ? "bg-indigo-100 text-indigo-600"
72
+ : "bg-gray-100 text-gray-500 group-hover:bg-gray-200 group-hover:text-gray-700"
73
+ }
74
+ `}
75
+ >
76
+ <Icon icon={props.icon} className="h-3.5 w-3.5" />
77
+ </div>
148
78
  )}
149
79
 
150
- <span className="truncate mt-1">{props.link.title}</span>
80
+ {/* Title */}
81
+ <span
82
+ className={`
83
+ truncate transition-colors duration-200
84
+ ${isActive ? "font-semibold" : ""}
85
+ `}
86
+ >
87
+ {props.link.title}
88
+ </span>
151
89
  </div>
152
90
 
153
- {props.badge || props.showAlert || props.showWarning ? (
154
- <div className={badgeClasName}>
155
- {props.badge ? (
91
+ {/* Badge / Alert / Warning Container */}
92
+ {(props.badge !== undefined ||
93
+ props.showAlert ||
94
+ props.showWarning) && (
95
+ <div className="flex items-center gap-1.5 ml-2 flex-shrink-0">
96
+ {props.badge !== undefined && (
156
97
  <Badge badgeCount={props.badge} badgeType={props.badgeType} />
157
- ) : (
158
- <></>
159
98
  )}
160
-
161
- {props.showAlert ? (
162
- <>
163
- <Icon
164
- className="float-end text-red-900"
165
- icon={IconProp.Error}
166
- />
167
- </>
168
- ) : (
169
- <></>
99
+ {props.showAlert && (
100
+ <div className="flex items-center justify-center w-5 h-5 rounded-full bg-gradient-to-br from-red-50 to-red-100 ring-1 ring-inset ring-red-200/60 shadow-sm">
101
+ <Icon icon={IconProp.Error} className="text-red-600 h-3 w-3" />
102
+ </div>
170
103
  )}
171
- {props.showWarning ? (
172
- <>
104
+ {props.showWarning && (
105
+ <div className="flex items-center justify-center w-5 h-5 rounded-full bg-gradient-to-br from-amber-50 to-amber-100 ring-1 ring-inset ring-amber-200/60 shadow-sm">
173
106
  <Icon
174
- className="float-end text-yellow-900"
175
107
  icon={IconProp.Alert}
108
+ className="text-amber-600 h-3 w-3"
176
109
  />
177
- </>
178
- ) : (
179
- <></>
110
+ </div>
180
111
  )}
181
112
  </div>
182
- ) : (
183
- <></>
184
113
  )}
114
+
115
+ {/* Hover indicator */}
116
+ <div
117
+ className={`
118
+ absolute inset-0 rounded-lg
119
+ border-2 border-transparent
120
+ transition-all duration-200
121
+ ${!isActive ? "group-hover:border-gray-200" : ""}
122
+ pointer-events-none
123
+ `}
124
+ />
185
125
  </UILink>
186
- {props.subItemLink ? (
126
+
127
+ {/* Sub Item */}
128
+ {props.subItemLink && (
187
129
  <UILink
188
- className={`${
189
- props.className ? props.className : ""
190
- } ${subItemLinkClassName} flex justify-between`}
130
+ className={`
131
+ ${props.className || ""}
132
+ group relative flex items-center justify-between
133
+ ml-8 px-2 py-1.5 rounded-lg
134
+ text-sm font-medium
135
+ transition-all duration-200 ease-out
136
+ ${
137
+ isSubItemActive
138
+ ? "bg-indigo-50/70 text-indigo-700"
139
+ : "text-gray-500 hover:bg-gray-50 hover:text-gray-700"
140
+ }
141
+ `}
191
142
  to={props.subItemLink.to}
192
143
  onClick={() => {
193
144
  window.scrollTo({ top: 0, behavior: "smooth" });
194
145
  }}
195
146
  >
196
- <div className="ml-8 flex">
197
- {props.icon ? (
198
- <>
199
- <Icon
200
- className={subItemIconClassName}
201
- icon={props.subItemIcon || IconProp.MinusSmall}
202
- />
203
- </>
204
- ) : (
205
- <></>
206
- )}
207
-
208
- <span className="truncate mt-1">{props.subItemLink.title}</span>
147
+ {/* Connector Line */}
148
+ <div className="absolute -left-3 top-1/2 w-2 h-px bg-gray-200" />
149
+
150
+ {/* Sub Item Icon */}
151
+ <div className="flex items-center min-w-0 gap-2">
152
+ <Icon
153
+ icon={props.subItemIcon || IconProp.MinusSmall}
154
+ className={`
155
+ h-4 w-4 transition-colors duration-200
156
+ ${
157
+ isSubItemActive
158
+ ? "text-indigo-500"
159
+ : "text-gray-400 group-hover:text-gray-600"
160
+ }
161
+ `}
162
+ />
163
+ <span className="truncate">{props.subItemLink.title}</span>
209
164
  </div>
210
165
  </UILink>
211
- ) : (
212
- <> </>
213
166
  )}
214
167
  </>
215
168
  );
@@ -1,17 +1,67 @@
1
- import React, { FunctionComponent, ReactElement } from "react";
1
+ import Icon from "../Icon/Icon";
2
+ import IconProp from "../../../Types/Icon/IconProp";
3
+ import React, { FunctionComponent, ReactElement, useState } from "react";
2
4
 
3
5
  export interface ComponentProps {
4
6
  title: string;
5
7
  children: ReactElement | Array<ReactElement>;
8
+ defaultCollapsed?: boolean;
9
+ collapsible?: boolean;
10
+ icon?: IconProp;
6
11
  }
7
12
 
8
13
  const SideMenuSection: FunctionComponent<ComponentProps> = (
9
14
  props: ComponentProps,
10
15
  ) => {
16
+ const [isCollapsed, setIsCollapsed] = useState<boolean>(
17
+ props.defaultCollapsed || false,
18
+ );
19
+
20
+ const isCollapsible: boolean = props.collapsible ?? true;
21
+
22
+ const handleToggle: () => void = (): void => {
23
+ if (isCollapsible) {
24
+ setIsCollapsed(!isCollapsed);
25
+ }
26
+ };
27
+
11
28
  return (
12
29
  <div className="mb-2">
13
- <h6 className="text-sm text-gray-500">{props.title}</h6>
14
- <div>{props.children}</div>
30
+ {/* Section Header */}
31
+ <button
32
+ type="button"
33
+ onClick={handleToggle}
34
+ className={`w-full flex items-center justify-between px-2 py-1.5 rounded-lg transition-colors duration-150 ${
35
+ isCollapsible ? "hover:bg-gray-50 cursor-pointer" : "cursor-default"
36
+ }`}
37
+ aria-expanded={!isCollapsed}
38
+ >
39
+ <div className="flex items-center gap-2">
40
+ {props.icon && (
41
+ <Icon icon={props.icon} className="h-4 w-4 text-gray-400" />
42
+ )}
43
+ <h6 className="text-xs font-semibold uppercase tracking-wider text-gray-500">
44
+ {props.title}
45
+ </h6>
46
+ </div>
47
+ {isCollapsible && (
48
+ <Icon
49
+ icon={IconProp.ChevronDown}
50
+ className={`h-4 w-4 text-gray-400 transition-transform duration-200 ${
51
+ isCollapsed ? "-rotate-90" : "rotate-0"
52
+ }`}
53
+ />
54
+ )}
55
+ </button>
56
+
57
+ {/* Section Content with Animation */}
58
+ <div
59
+ className={`overflow-hidden transition-all duration-200 ease-in-out ${
60
+ isCollapsed ? "max-h-0 opacity-0" : "max-h-[2000px] opacity-100"
61
+ }`}
62
+ >
63
+ <div className="mt-0.5 space-y-0">{props.children}</div>
64
+ </div>
15
65
  </div>
16
66
  );
17
67
  };
@@ -321,7 +321,7 @@ const Table: TableFunction = <T extends GenericObject>(
321
321
  </div>
322
322
  </div>
323
323
  </div>
324
- <div className="bg-gray-50 text-right md:-mx-6 -mb-6">
324
+ <div className="bg-gray-50 text-right md:-mx-6 -mb-6 rounded-b-xl">
325
325
  {!props.disablePagination && (
326
326
  <Pagination
327
327
  singularLabel={props.singularLabel}
@@ -1,5 +1,6 @@
1
1
  enum FieldType {
2
2
  ObjectID = "ObjectID",
3
+ Heading = "Heading",
3
4
  Name = "Name",
4
5
  File = "File",
5
6
  Percent = "Percent",
@@ -35,6 +36,7 @@ enum FieldType {
35
36
  Minutes = "Minutes",
36
37
  ArrayOfText = "ArrayOfText",
37
38
  Code = "Code",
39
+ InlineCode = "InlineCode",
38
40
  }
39
41
 
40
42
  export default FieldType;
package/UI/Config.ts CHANGED
@@ -253,3 +253,8 @@ export const SlackAppClientId: string | null =
253
253
 
254
254
  export const MicrosoftTeamsAppClientId: string | null =
255
255
  env("MICROSOFT_TEAMS_APP_CLIENT_ID") || null;
256
+
257
+ export const GitHubAppClientId: string | null =
258
+ env("GITHUB_APP_CLIENT_ID") || null;
259
+
260
+ export const GitHubAppName: string | null = env("GITHUB_APP_NAME") || null;