@oneuptime/common 9.2.26 → 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 (278) 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/Types/Workflow/Components/Index.ts +2 -0
  42. package/Server/Types/Workflow/Components/Telegram/SendMessageToChat.ts +146 -0
  43. package/Server/Utils/Monitor/MonitorResource.ts +228 -0
  44. package/Server/Utils/PushNotificationUtil.ts +29 -0
  45. package/Server/Utils/WhatsAppTemplateUtil.ts +6 -0
  46. package/Tests/UI/Components/Badge.test.tsx +5 -5
  47. package/Tests/UI/Components/Card.test.tsx +4 -8
  48. package/Tests/UI/Components/HiddenText.test.tsx +2 -5
  49. package/Tests/UI/Components/SideMenuItem.test.tsx +4 -2
  50. package/Types/AI/AIAgentTaskMetadata.ts +25 -0
  51. package/Types/AI/AIAgentTaskStatus.ts +65 -0
  52. package/Types/AI/AIAgentTaskType.ts +40 -0
  53. package/Types/Email/EmailTemplateType.ts +2 -0
  54. package/Types/Monitor/MonitorEvaluationSummary.ts +2 -1
  55. package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
  56. package/Types/Permission.ts +176 -0
  57. package/Types/WhatsApp/WhatsAppTemplates.ts +9 -0
  58. package/Types/Workflow/ComponentID.ts +1 -0
  59. package/Types/Workflow/Components/Telegram.ts +76 -0
  60. package/Types/Workflow/Components.ts +7 -0
  61. package/UI/Components/AIAgent/AIAgent.tsx +69 -0
  62. package/UI/Components/Badge/Badge.tsx +9 -5
  63. package/UI/Components/Banner/Banner.tsx +1 -1
  64. package/UI/Components/Card/Card.tsx +14 -12
  65. package/UI/Components/CodeBlock/CodeBlock.tsx +47 -4
  66. package/UI/Components/Detail/Detail.tsx +239 -49
  67. package/UI/Components/Detail/FieldLabel.tsx +35 -11
  68. package/UI/Components/Detail/PlaceholderText.tsx +18 -1
  69. package/UI/Components/Footer/Footer.tsx +9 -7
  70. package/UI/Components/Header/Header.tsx +4 -3
  71. package/UI/Components/Header/HeaderIconDropdownButton.tsx +13 -11
  72. package/UI/Components/Header/IconDropdown/IconDropdownItem.tsx +3 -3
  73. package/UI/Components/Header/IconDropdown/IconDropdownMenu.tsx +1 -1
  74. package/UI/Components/Header/ProjectPicker/CreateNewProjectButton.tsx +4 -4
  75. package/UI/Components/Header/ProjectPicker/ProjectPicker.tsx +6 -6
  76. package/UI/Components/Header/ProjectPicker/ProjectPickerFilterBox.tsx +3 -3
  77. package/UI/Components/Header/ProjectPicker/ProjectPickerMenu.tsx +1 -1
  78. package/UI/Components/Header/ProjectPicker/ProjectPickerMenuItem.tsx +4 -4
  79. package/UI/Components/HeaderAlert/HeaderAlert.tsx +32 -32
  80. package/UI/Components/HeaderAlert/HeaderAlertGroup.tsx +1 -7
  81. package/UI/Components/HiddenText/HiddenText.tsx +98 -27
  82. package/UI/Components/Icon/Icon.tsx +12 -9
  83. package/UI/Components/InfoCard/InfoCard.tsx +7 -3
  84. package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
  85. package/UI/Components/ObjectID/ObjectIDView.tsx +73 -0
  86. package/UI/Components/Page/Page.tsx +3 -5
  87. package/UI/Components/SideMenu/SideMenu.tsx +175 -40
  88. package/UI/Components/SideMenu/SideMenuDivider.tsx +17 -0
  89. package/UI/Components/SideMenu/SideMenuItem.tsx +111 -158
  90. package/UI/Components/SideMenu/SideMenuSection.tsx +53 -3
  91. package/UI/Components/Table/Table.tsx +1 -1
  92. package/UI/Components/Types/FieldType.ts +2 -0
  93. package/UI/Config.ts +5 -0
  94. package/build/dist/Models/DatabaseModels/AIAgent.js +614 -0
  95. package/build/dist/Models/DatabaseModels/AIAgent.js.map +1 -0
  96. package/build/dist/Models/DatabaseModels/AIAgentOwnerTeam.js +452 -0
  97. package/build/dist/Models/DatabaseModels/AIAgentOwnerTeam.js.map +1 -0
  98. package/build/dist/Models/DatabaseModels/AIAgentOwnerUser.js +451 -0
  99. package/build/dist/Models/DatabaseModels/AIAgentOwnerUser.js.map +1 -0
  100. package/build/dist/Models/DatabaseModels/AIAgentTask.js +580 -0
  101. package/build/dist/Models/DatabaseModels/AIAgentTask.js.map +1 -0
  102. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js +438 -0
  103. package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js.map +1 -0
  104. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +771 -0
  105. package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -0
  106. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js +404 -0
  107. package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js.map +1 -0
  108. package/build/dist/Models/DatabaseModels/Index.js +14 -0
  109. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  110. package/build/dist/Models/DatabaseModels/Monitor.js +34 -0
  111. package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
  112. package/build/dist/Models/DatabaseModels/Project.js +26 -0
  113. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  114. package/build/dist/Models/DatabaseModels/TelemetryException.js +1 -1
  115. package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
  116. package/build/dist/Server/API/AIAgentAPI.js +141 -0
  117. package/build/dist/Server/API/AIAgentAPI.js.map +1 -0
  118. package/build/dist/Server/API/AIAgentDataAPI.js +415 -0
  119. package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -0
  120. package/build/dist/Server/API/AIAgentTaskAPI.js +199 -0
  121. package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -0
  122. package/build/dist/Server/API/AIAgentTaskLogAPI.js +106 -0
  123. package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -0
  124. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js +9 -0
  125. package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js.map +1 -0
  126. package/build/dist/Server/API/GitHubAPI.js +23 -8
  127. package/build/dist/Server/API/GitHubAPI.js.map +1 -1
  128. package/build/dist/Server/API/TelemetryExceptionAPI.js +120 -0
  129. package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -0
  130. package/build/dist/Server/EnvironmentConfig.js +2 -0
  131. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  132. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766590916627-MigrationName.js +74 -0
  133. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766590916627-MigrationName.js.map +1 -0
  134. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766600860972-MigrationName.js +18 -0
  135. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766600860972-MigrationName.js.map +1 -0
  136. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766606720183-MigrationName.js +12 -0
  137. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766606720183-MigrationName.js.map +1 -0
  138. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766688107858-MigrationName.js +28 -0
  139. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766688107858-MigrationName.js.map +1 -0
  140. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766754182870-MigrationName.js +32 -0
  141. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766754182870-MigrationName.js.map +1 -0
  142. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766774689743-MigrationName.js +60 -0
  143. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766774689743-MigrationName.js.map +1 -0
  144. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766777986427-MigrationName.js +18 -0
  145. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766777986427-MigrationName.js.map +1 -0
  146. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766918848434-AddAIAgentIsDefault.js +16 -0
  147. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766918848434-AddAIAgentIsDefault.js.map +1 -0
  148. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766923324521-MigrationName.js +20 -0
  149. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766923324521-MigrationName.js.map +1 -0
  150. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766958924188-AddGitHubAppInstallationIdToProject.js +16 -0
  151. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766958924188-AddGitHubAppInstallationIdToProject.js.map +1 -0
  152. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767009661768-MigrationName.js +18 -0
  153. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767009661768-MigrationName.js.map +1 -0
  154. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +22 -0
  155. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  156. package/build/dist/Server/Services/AIAgentOwnerTeamService.js +9 -0
  157. package/build/dist/Server/Services/AIAgentOwnerTeamService.js.map +1 -0
  158. package/build/dist/Server/Services/AIAgentOwnerUserService.js +9 -0
  159. package/build/dist/Server/Services/AIAgentOwnerUserService.js.map +1 -0
  160. package/build/dist/Server/Services/AIAgentService.js +471 -0
  161. package/build/dist/Server/Services/AIAgentService.js.map +1 -0
  162. package/build/dist/Server/Services/AIAgentTaskLogService.js +9 -0
  163. package/build/dist/Server/Services/AIAgentTaskLogService.js.map +1 -0
  164. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js +9 -0
  165. package/build/dist/Server/Services/AIAgentTaskPullRequestService.js.map +1 -0
  166. package/build/dist/Server/Services/AIAgentTaskService.js +158 -0
  167. package/build/dist/Server/Services/AIAgentTaskService.js.map +1 -0
  168. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js +36 -0
  169. package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js.map +1 -0
  170. package/build/dist/Server/Services/Index.js +10 -0
  171. package/build/dist/Server/Services/Index.js.map +1 -1
  172. package/build/dist/Server/Services/TelemetryExceptionService.js +137 -0
  173. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  174. package/build/dist/Server/Types/Workflow/Components/Index.js +2 -0
  175. package/build/dist/Server/Types/Workflow/Components/Index.js.map +1 -1
  176. package/build/dist/Server/Types/Workflow/Components/Telegram/SendMessageToChat.js +119 -0
  177. package/build/dist/Server/Types/Workflow/Components/Telegram/SendMessageToChat.js.map +1 -0
  178. package/build/dist/Server/Utils/Monitor/MonitorResource.js +168 -0
  179. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  180. package/build/dist/Server/Utils/PushNotificationUtil.js +21 -0
  181. package/build/dist/Server/Utils/PushNotificationUtil.js.map +1 -1
  182. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +4 -0
  183. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
  184. package/build/dist/Tests/UI/Components/Badge.test.js +5 -5
  185. package/build/dist/Tests/UI/Components/Badge.test.js.map +1 -1
  186. package/build/dist/Tests/UI/Components/Card.test.js +4 -8
  187. package/build/dist/Tests/UI/Components/Card.test.js.map +1 -1
  188. package/build/dist/Tests/UI/Components/HiddenText.test.js +2 -3
  189. package/build/dist/Tests/UI/Components/HiddenText.test.js.map +1 -1
  190. package/build/dist/Tests/UI/Components/SideMenuItem.test.js +3 -2
  191. package/build/dist/Tests/UI/Components/SideMenuItem.test.js.map +1 -1
  192. package/build/dist/Types/AI/AIAgentTaskMetadata.js +6 -0
  193. package/build/dist/Types/AI/AIAgentTaskMetadata.js.map +1 -0
  194. package/build/dist/Types/AI/AIAgentTaskStatus.js +51 -0
  195. package/build/dist/Types/AI/AIAgentTaskStatus.js.map +1 -0
  196. package/build/dist/Types/AI/AIAgentTaskType.js +29 -0
  197. package/build/dist/Types/AI/AIAgentTaskType.js.map +1 -0
  198. package/build/dist/Types/Email/EmailTemplateType.js +2 -0
  199. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  200. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
  201. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  202. package/build/dist/Types/Permission.js +160 -0
  203. package/build/dist/Types/Permission.js.map +1 -1
  204. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js +6 -0
  205. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js.map +1 -1
  206. package/build/dist/Types/Workflow/ComponentID.js +1 -0
  207. package/build/dist/Types/Workflow/ComponentID.js.map +1 -1
  208. package/build/dist/Types/Workflow/Components/Telegram.js +69 -0
  209. package/build/dist/Types/Workflow/Components/Telegram.js.map +1 -0
  210. package/build/dist/Types/Workflow/Components.js +7 -0
  211. package/build/dist/Types/Workflow/Components.js.map +1 -1
  212. package/build/dist/UI/Components/AIAgent/AIAgent.js +32 -0
  213. package/build/dist/UI/Components/AIAgent/AIAgent.js.map +1 -0
  214. package/build/dist/UI/Components/Badge/Badge.js +9 -5
  215. package/build/dist/UI/Components/Badge/Badge.js.map +1 -1
  216. package/build/dist/UI/Components/Banner/Banner.js +1 -1
  217. package/build/dist/UI/Components/Banner/Banner.js.map +1 -1
  218. package/build/dist/UI/Components/Card/Card.js +12 -12
  219. package/build/dist/UI/Components/Card/Card.js.map +1 -1
  220. package/build/dist/UI/Components/CodeBlock/CodeBlock.js +22 -2
  221. package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
  222. package/build/dist/UI/Components/Detail/Detail.js +117 -37
  223. package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
  224. package/build/dist/UI/Components/Detail/FieldLabel.js +12 -7
  225. package/build/dist/UI/Components/Detail/FieldLabel.js.map +1 -1
  226. package/build/dist/UI/Components/Detail/PlaceholderText.js +4 -1
  227. package/build/dist/UI/Components/Detail/PlaceholderText.js.map +1 -1
  228. package/build/dist/UI/Components/Footer/Footer.js +6 -6
  229. package/build/dist/UI/Components/Footer/Footer.js.map +1 -1
  230. package/build/dist/UI/Components/Header/Header.js +4 -3
  231. package/build/dist/UI/Components/Header/Header.js.map +1 -1
  232. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +7 -7
  233. package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
  234. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js +3 -3
  235. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js.map +1 -1
  236. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js +1 -1
  237. package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js.map +1 -1
  238. package/build/dist/UI/Components/Header/ProjectPicker/CreateNewProjectButton.js +4 -4
  239. package/build/dist/UI/Components/Header/ProjectPicker/CreateNewProjectButton.js.map +1 -1
  240. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js +6 -6
  241. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js.map +1 -1
  242. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerFilterBox.js +2 -2
  243. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerFilterBox.js.map +1 -1
  244. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerMenu.js +1 -1
  245. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerMenu.js.map +1 -1
  246. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerMenuItem.js +4 -4
  247. package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerMenuItem.js.map +1 -1
  248. package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js +31 -29
  249. package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js.map +1 -1
  250. package/build/dist/UI/Components/HeaderAlert/HeaderAlertGroup.js +1 -3
  251. package/build/dist/UI/Components/HeaderAlert/HeaderAlertGroup.js.map +1 -1
  252. package/build/dist/UI/Components/HiddenText/HiddenText.js +33 -14
  253. package/build/dist/UI/Components/HiddenText/HiddenText.js.map +1 -1
  254. package/build/dist/UI/Components/Icon/Icon.js +3 -4
  255. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  256. package/build/dist/UI/Components/InfoCard/InfoCard.js +3 -3
  257. package/build/dist/UI/Components/InfoCard/InfoCard.js.map +1 -1
  258. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
  259. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  260. package/build/dist/UI/Components/ObjectID/ObjectIDView.js +30 -0
  261. package/build/dist/UI/Components/ObjectID/ObjectIDView.js.map +1 -0
  262. package/build/dist/UI/Components/Page/Page.js +3 -3
  263. package/build/dist/UI/Components/Page/Page.js.map +1 -1
  264. package/build/dist/UI/Components/SideMenu/SideMenu.js +82 -17
  265. package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
  266. package/build/dist/UI/Components/SideMenu/SideMenuDivider.js +7 -0
  267. package/build/dist/UI/Components/SideMenu/SideMenuDivider.js.map +1 -0
  268. package/build/dist/UI/Components/SideMenu/SideMenuItem.js +68 -97
  269. package/build/dist/UI/Components/SideMenu/SideMenuItem.js.map +1 -1
  270. package/build/dist/UI/Components/SideMenu/SideMenuSection.js +18 -3
  271. package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
  272. package/build/dist/UI/Components/Table/Table.js +1 -1
  273. package/build/dist/UI/Components/Table/Table.js.map +1 -1
  274. package/build/dist/UI/Components/Types/FieldType.js +2 -0
  275. package/build/dist/UI/Components/Types/FieldType.js.map +1 -1
  276. package/build/dist/UI/Config.js +2 -0
  277. package/build/dist/UI/Config.js.map +1 -1
  278. package/package.json +1 -1
@@ -18,15 +18,15 @@ const IconDropdown: FunctionComponent<ComponentProps> = (
18
18
  ): ReactElement => {
19
19
  return (
20
20
  <Link
21
- className="block py-2 px-4 text-sm text-gray-700 flex hover:bg-gray-100"
21
+ className="flex items-center gap-3 py-2.5 px-4 text-sm text-gray-700 hover:bg-gray-50 hover:text-gray-900 transition-colors duration-150 mx-2 rounded-lg"
22
22
  to={props.url}
23
23
  openInNewTab={props.openInNewTab}
24
24
  onClick={props.onClick}
25
25
  >
26
- <div className="mr-1 h-5 w-5">
26
+ <div className="flex-shrink-0 h-5 w-5 text-gray-400">
27
27
  {props.icon ? <Icon icon={props.icon} /> : <></>}
28
28
  </div>
29
- <span className="">{props.title}</span>
29
+ <span className="font-medium">{props.title}</span>
30
30
  </Link>
31
31
  );
32
32
  };
@@ -9,7 +9,7 @@ const IconDropdown: FunctionComponent<ComponentProps> = (
9
9
  ): ReactElement => {
10
10
  return (
11
11
  <div
12
- className="absolute right-0 z-10 mt-2 w-48 origin-top-right rounded-md bg-white py-1 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none transform opacity-100 scale-100"
12
+ className="absolute right-0 z-10 mt-2 w-56 origin-top-right rounded-xl bg-white py-2 shadow-lg ring-1 ring-gray-200 focus:outline-none transform opacity-100 scale-100 animate-in fade-in slide-in-from-top-1 duration-150"
13
13
  role="menu"
14
14
  aria-orientation="vertical"
15
15
  aria-labelledby="user-menu-button"
@@ -11,19 +11,19 @@ const CreateNewProjectButton: FunctionComponent<ComponentProps> = (
11
11
  ): ReactElement => {
12
12
  return (
13
13
  <li
14
- className="text-gray-900 relative cursor-default select-none py-2 pl-3 pr-9 bg-gray-100 cursor-pointer hover:bg-gray-200 hover:text-gray-900 text-gray-500 -mb-1"
14
+ className="relative select-none py-2.5 px-3 mx-2 mt-2 cursor-pointer bg-indigo-50 hover:bg-indigo-100 rounded-lg transition-colors duration-150 border border-indigo-200"
15
15
  id="listbox-option-0"
16
16
  role="option"
17
17
  onClick={() => {
18
18
  props.onCreateButtonClicked();
19
19
  }}
20
20
  >
21
- <div className="flex items-center">
21
+ <div className="flex items-center gap-3">
22
22
  <Icon
23
23
  icon={IconProp.Add}
24
- className="h-6 w-6 flex-shrink-0 rounded-full"
24
+ className="h-5 w-5 flex-shrink-0 text-indigo-500"
25
25
  />
26
- <span className="cursor-pointer rounded-md py-2 px-3 inline-flex items-center text-sm font-medium block truncate">
26
+ <span className="text-sm font-medium text-indigo-600">
27
27
  Create New Project
28
28
  </span>
29
29
  </div>
@@ -36,14 +36,14 @@ const ProjectPicker: FunctionComponent<ComponentProps> = (
36
36
  }, [isComponentVisible]);
37
37
 
38
38
  return (
39
- <div className="w-64 mr-3">
40
- <div className="relative mt-3 w-full">
39
+ <div className="w-64">
40
+ <div className="relative w-full">
41
41
  <button
42
42
  onClick={() => {
43
43
  setIsComponentVisible(!isDropdownVisible);
44
44
  }}
45
45
  type="button"
46
- className="relative w-full cursor-default rounded-md border border-gray-300 bg-white py-2 pl-3 pr-10 text-left shadow-sm focus:border-indigo-500 focus:outline-none focus:ring-1 focus:ring-indigo-500 sm:text-sm"
46
+ className="relative w-full cursor-pointer rounded-lg border border-gray-200 bg-gray-50 py-2.5 pl-3 pr-10 text-left hover:bg-gray-100 hover:border-gray-300 focus:border-indigo-500 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-1 transition-all duration-150 sm:text-sm"
47
47
  aria-haspopup="listbox"
48
48
  aria-expanded="true"
49
49
  aria-labelledby="listbox-label"
@@ -51,17 +51,17 @@ const ProjectPicker: FunctionComponent<ComponentProps> = (
51
51
  <span className="flex items-center">
52
52
  <Icon
53
53
  icon={props.selectedProjectIcon}
54
- className="h-6 w-6 flex-shrink-0 rounded-full"
54
+ className="h-5 w-5 flex-shrink-0 text-gray-500"
55
55
  />
56
56
 
57
- <span className="ml-3 block truncate">
57
+ <span className="ml-2.5 block truncate font-medium text-gray-700">
58
58
  {props.selectedProjectName}
59
59
  </span>
60
60
  </span>
61
61
  <span className="pointer-events-none absolute inset-y-0 right-0 ml-3 flex items-center pr-2">
62
62
  <Icon
63
63
  icon={IconProp.UpDownArrow}
64
- className="h-5 w-5 text-gray-400"
64
+ className="h-4 w-4 text-gray-400"
65
65
  />
66
66
  </span>
67
67
  </button>
@@ -9,15 +9,15 @@ const ProjectPickerFilterBox: FunctionComponent<ComponentProps> = (
9
9
  props: ComponentProps,
10
10
  ): ReactElement => {
11
11
  return (
12
- <div className="sm:max-w-xs m-2">
12
+ <div className="px-2 pb-2 mb-1 border-b border-gray-100">
13
13
  <label className="sr-only">Search Projects</label>
14
14
  <div className="relative">
15
15
  <Input
16
16
  onChange={(value: string) => {
17
17
  props.onChange(value);
18
18
  }}
19
- className="block w-full rounded-md border border-gray-300 bg-white py-2 pl-5 pr-3 text-sm placeholder-gray-500 focus:border-indigo-500 focus:text-gray-900 focus:placeholder-gray-400 focus:outline-none focus:ring-1 focus:ring-indigo-500 sm:text-sm"
20
- placeholder="Search Projects"
19
+ className="block w-full rounded-lg border border-gray-200 bg-gray-50 py-2 pl-4 pr-3 text-sm placeholder-gray-400 focus:border-indigo-500 focus:bg-white focus:text-gray-900 focus:placeholder-gray-400 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-1 transition-all duration-150 sm:text-sm"
20
+ placeholder="Search projects..."
21
21
  />
22
22
  </div>
23
23
  </div>
@@ -11,7 +11,7 @@ const ProjectPickerMenu: FunctionComponent<ComponentProps> = (
11
11
  ): ReactElement => {
12
12
  return (
13
13
  <ul
14
- className="absolute z-10 mt-1 max-h-56 w-full overflow-auto rounded-md bg-white py-1 text-base shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none sm:text-sm"
14
+ className="absolute z-10 mt-2 max-h-72 w-full overflow-auto rounded-xl bg-white py-2 text-base shadow-lg ring-1 ring-gray-200 focus:outline-none sm:text-sm"
15
15
  role="listbox"
16
16
  aria-labelledby="listbox-label"
17
17
  aria-activedescendant="listbox-option-3"
@@ -19,7 +19,7 @@ const ProjectPickerMenuItem: FunctionComponent<ComponentProps> = (
19
19
 
20
20
  return (
21
21
  <li
22
- className="text-gray-900 relative cursor-default select-none py-2 pl-3 pr-9 cursor-pointer hover:bg-gray-50"
22
+ className="text-gray-700 relative select-none py-2.5 px-3 mx-2 cursor-pointer hover:bg-gray-50 rounded-lg transition-colors duration-150"
23
23
  id="listbox-option-0"
24
24
  role="option"
25
25
  onClick={() => {
@@ -27,12 +27,12 @@ const ProjectPickerMenuItem: FunctionComponent<ComponentProps> = (
27
27
  Navigation.navigate(route);
28
28
  }}
29
29
  >
30
- <div className="flex items-center">
30
+ <div className="flex items-center gap-3">
31
31
  <Icon
32
32
  icon={props.icon}
33
- className="h-6 w-6 flex-shrink-0 rounded-full"
33
+ className="h-5 w-5 flex-shrink-0 text-gray-400"
34
34
  />
35
- <span className="cursor-pointer text-gray-500 hover:bg-gray-50 hover:text-gray-900 rounded-md py-2 px-3 inline-flex items-center text-sm font-medium block truncate">
35
+ <span className="text-sm font-medium text-gray-700 truncate">
36
36
  {title}
37
37
  </span>
38
38
  </div>
@@ -26,69 +26,69 @@ export interface ComponentProps {
26
26
  const HeaderAlert: (props: ComponentProps) => ReactElement = (
27
27
  props: ComponentProps,
28
28
  ): ReactElement => {
29
- let textColor: string = "text-indigo-500"; // default color info.
29
+ let textColor: string = "text-indigo-600";
30
+ let bgColor: string = "bg-indigo-50";
31
+ let hoverBgColor: string = "hover:bg-indigo-100";
32
+ let borderColor: string = "border-indigo-200";
30
33
 
31
34
  switch (props.alertType) {
32
35
  case HeaderAlertType.SUCCESS:
33
- textColor = "text-emerald-500 hover:text-emerald-600";
36
+ textColor = "text-emerald-600";
37
+ bgColor = "bg-emerald-50";
38
+ hoverBgColor = "hover:bg-emerald-100";
39
+ borderColor = "border-emerald-200";
34
40
  break;
35
41
  case HeaderAlertType.ERROR:
36
- textColor = "text-red-500 hover:text-red-600";
42
+ textColor = "text-red-600";
43
+ bgColor = "bg-red-50";
44
+ hoverBgColor = "hover:bg-red-100";
45
+ borderColor = "border-red-200";
37
46
  break;
38
47
  case HeaderAlertType.WARNING:
39
- textColor = "text-yellow-500 hover:text-yellow-600";
48
+ textColor = "text-amber-600";
49
+ bgColor = "bg-amber-50";
50
+ hoverBgColor = "hover:bg-amber-100";
51
+ borderColor = "border-amber-200";
40
52
  break;
41
53
  case HeaderAlertType.INFO:
42
- textColor = "text-indigo-500 hover:text-indigo-600";
43
- break;
44
- }
45
-
46
- let bgColor: string = "bg-gray";
47
-
48
- switch (props.alertType) {
49
- case HeaderAlertType.SUCCESS:
50
- bgColor = "bg-emerald";
51
- break;
52
- case HeaderAlertType.ERROR:
53
- bgColor = "bg-red";
54
- break;
55
- case HeaderAlertType.WARNING:
56
- bgColor = "bg-yellow";
57
- break;
58
- case HeaderAlertType.INFO:
59
- bgColor = "bg-indigo";
54
+ textColor = "text-indigo-600";
55
+ bgColor = "bg-indigo-50";
56
+ hoverBgColor = "hover:bg-indigo-100";
57
+ borderColor = "border-indigo-200";
60
58
  break;
61
59
  }
62
60
 
63
61
  // color swatch overrides the color.
64
62
  if (props.colorSwatch) {
65
- textColor = `text-${props.colorSwatch}-500 hover:text-${props.colorSwatch}-600`;
66
- bgColor = `bg-${props.colorSwatch}`;
63
+ textColor = `text-${props.colorSwatch}-600`;
64
+ bgColor = `bg-${props.colorSwatch}-50`;
65
+ hoverBgColor = `hover:bg-${props.colorSwatch}-100`;
66
+ borderColor = `border-${props.colorSwatch}-200`;
67
67
  }
68
68
 
69
69
  const getElement: GetReactElementFunction = (): ReactElement => {
70
70
  return (
71
71
  <div
72
- className={`cursor-pointer ${bgColor}-50 hover:${bgColor}-200 mr-2 ml-2 p-1 h-7 pl-2 pr-2 rounded-full ${props.className}`}
72
+ className={`cursor-pointer ${bgColor} ${hoverBgColor} border ${borderColor} mx-1 py-1.5 px-3 rounded-lg transition-all duration-150 ${props.className}`}
73
73
  onClick={() => {
74
74
  props.onClick?.();
75
75
  }}
76
76
  >
77
- <div className="flex">
78
- <div className={`flex-shrink-0 mt-0.5 ${textColor}`}>
77
+ <div className="flex items-center gap-1.5">
78
+ <div className={`flex-shrink-0 ${textColor}`}>
79
79
  <Icon
80
80
  icon={props.icon}
81
81
  thick={ThickProp.Thick}
82
- className={`h-4 w-4 stroke-[3px] font-bold ${textColor}`}
82
+ className={`h-4 w-4 stroke-[2.5px] ${textColor}`}
83
83
  />
84
84
  </div>
85
- <div className="ml-1 flex-1 md:flex md:justify-between">
86
- <p className={`text-sm font-semibold ${textColor}`}>
85
+ <div className="flex items-center gap-1">
86
+ <span className={`text-sm font-semibold ${textColor}`}>
87
87
  {props.title}
88
- </p>
88
+ </span>
89
89
  {props.suffix && (
90
90
  <span
91
- className={`ml-1 ${textColor} text-sm font-semibold hidden md:block`}
91
+ className={`${textColor} text-sm font-medium opacity-80 hidden md:block`}
92
92
  >
93
93
  {props.suffix}
94
94
  </span>
@@ -26,20 +26,14 @@ const HeaderAlertGroup: (props: ComponentProps) => ReactElement = (
26
26
  return <></>;
27
27
  }
28
28
 
29
- // const className: string = "rounded-lg m-3 h-10 pr-0 pl-0 flex border-2 border-gray-200";
30
- const className: string = "rounded-lg m-3 mt-5 h-10 pr-0 pl-0 flex";
29
+ const className: string = "flex items-center gap-1 ml-4";
31
30
 
32
31
  return (
33
32
  <div className={className}>
34
33
  {children.map((child: ReactElement | false, index: number) => {
35
- // const isLastElement: boolean = index === props.children.length - 1;
36
-
37
34
  return (
38
35
  <div key={index} className="flex">
39
36
  {child}
40
- {/* {!isLastElement && (
41
- <div className="border-r-2 border-gray-200"></div>
42
- )} */}
43
37
  </div>
44
38
  );
45
39
  })}
@@ -1,5 +1,5 @@
1
- import CopyableButton from "../CopyableButton/CopyableButton";
2
- import Icon from "../Icon/Icon";
1
+ import Icon, { SizeProp, ThickProp } from "../Icon/Icon";
2
+ import Tooltip from "../Tooltip/Tooltip";
3
3
  import IconProp from "../../../Types/Icon/IconProp";
4
4
  import React, { FunctionComponent, ReactElement, useState } from "react";
5
5
 
@@ -12,44 +12,115 @@ const HiddenText: FunctionComponent<ComponentProps> = (
12
12
  props: ComponentProps,
13
13
  ): ReactElement => {
14
14
  const [showText, setShowText] = useState<boolean>(false);
15
+ const [copied, setCopied] = useState<boolean>(false);
16
+
17
+ const handleCopy: () => Promise<void> = async (): Promise<void> => {
18
+ await navigator.clipboard?.writeText(props.text);
19
+ setCopied(true);
20
+ setTimeout(() => {
21
+ setCopied(false);
22
+ }, 2000);
23
+ };
15
24
 
16
25
  if (!showText) {
17
26
  return (
18
- <p
27
+ <div
19
28
  role="hidden-text"
20
- className="cursor-pointer underline"
29
+ className="inline-flex items-center gap-2 px-3 py-1.5 rounded-md cursor-pointer transition-all duration-200 bg-gray-50 border border-gray-200 hover:bg-gray-100 hover:border-gray-300 group"
21
30
  onClick={() => {
22
31
  setShowText(true);
23
32
  }}
24
33
  >
25
- Click here to reveal
26
- </p>
34
+ <Icon
35
+ icon={IconProp.Lock}
36
+ size={SizeProp.Small}
37
+ thick={ThickProp.Thick}
38
+ className="h-3.5 w-3.5 text-gray-400 group-hover:text-gray-500"
39
+ />
40
+ <span className="text-sm text-gray-500 group-hover:text-gray-600">
41
+ Click to reveal
42
+ </span>
43
+ <Icon
44
+ icon={IconProp.ChevronRight}
45
+ size={SizeProp.Small}
46
+ thick={ThickProp.Thick}
47
+ className="h-3 w-3 text-gray-400 group-hover:text-gray-500 transition-transform duration-200 group-hover:translate-x-0.5"
48
+ />
49
+ </div>
27
50
  );
28
51
  }
29
52
 
30
53
  return (
31
- <div className="flex">
32
- <div className="flex">
33
- <div
34
- style={{
35
- marginRight: "5px",
36
- }}
37
- role="revealed-text"
38
- >
39
- {props.text}
40
- </div>{" "}
41
- <Icon
42
- icon={IconProp.Hide}
43
- className="cursor-pointer text-gray-400 h-4 w-4"
44
- data-testid="hide-text-icon"
45
- onClick={() => {
46
- setShowText(false);
47
- }}
48
- />
54
+ <div
55
+ className={`inline-flex items-center gap-2 px-3 py-1.5 rounded-md transition-all duration-200 ${
56
+ copied
57
+ ? "bg-green-50 border border-green-200"
58
+ : "bg-amber-50 border border-amber-200"
59
+ }`}
60
+ >
61
+ <Icon
62
+ icon={IconProp.Lock}
63
+ size={SizeProp.Small}
64
+ thick={ThickProp.Thick}
65
+ className={`h-3.5 w-3.5 flex-shrink-0 ${copied ? "text-green-500" : "text-amber-500"}`}
66
+ />
67
+ <code
68
+ role="revealed-text"
69
+ className={`font-mono text-sm break-all ${copied ? "text-green-700" : "text-amber-800"}`}
70
+ >
71
+ {props.text}
72
+ </code>
73
+ <div className="flex items-center gap-1 ml-1 flex-shrink-0">
74
+ {props.isCopyable && (
75
+ <Tooltip text={copied ? "Copied!" : "Copy"}>
76
+ <div
77
+ className={`p-1 rounded cursor-pointer transition-all duration-200 ${
78
+ copied
79
+ ? "text-green-500"
80
+ : "text-amber-400 hover:text-amber-600 hover:bg-amber-100"
81
+ }`}
82
+ data-testid="copy-to-clipboard-icon"
83
+ onClick={handleCopy}
84
+ >
85
+ {copied ? (
86
+ <Icon
87
+ icon={IconProp.CheckCircle}
88
+ size={SizeProp.Small}
89
+ thick={ThickProp.Thick}
90
+ className="h-3.5 w-3.5"
91
+ />
92
+ ) : (
93
+ <Icon
94
+ icon={IconProp.Copy}
95
+ size={SizeProp.Small}
96
+ thick={ThickProp.Thick}
97
+ className="h-3.5 w-3.5"
98
+ />
99
+ )}
100
+ </div>
101
+ </Tooltip>
102
+ )}
103
+ <Tooltip text="Hide">
104
+ <div
105
+ className={`p-1 rounded cursor-pointer transition-all duration-200 ${
106
+ copied
107
+ ? "text-green-400 hover:text-green-600 hover:bg-green-100"
108
+ : "text-amber-400 hover:text-amber-600 hover:bg-amber-100"
109
+ }`}
110
+ data-testid="hide-text-icon"
111
+ onClick={() => {
112
+ setShowText(false);
113
+ }}
114
+ >
115
+ <Icon
116
+ icon={IconProp.Hide}
117
+ size={SizeProp.Small}
118
+ thick={ThickProp.Thick}
119
+ className="h-3.5 w-3.5"
120
+ />
121
+ </div>
122
+ </Tooltip>
49
123
  </div>
50
- {props.isCopyable && showText && (
51
- <CopyableButton textToBeCopied={props.text} />
52
- )}
53
124
  </div>
54
125
  );
55
126
  };
@@ -1044,15 +1044,18 @@ const Icon: FunctionComponent<ComponentProps> = ({
1044
1044
  );
1045
1045
  } else if (icon === IconProp.WhatsApp) {
1046
1046
  return getSvgWrapper(
1047
- <path
1048
- strokeLinecap="round"
1049
- strokeLinejoin="round"
1050
- d="M26.576 5.363c-2.69-2.69-6.406-4.354-10.511-4.354-8.209 0-14.865 6.655-14.865 14.865 0 2.732 0.737 5.291 2.022 7.491l-0.038-0.070-2.109 7.702 7.879-2.067c2.051 1.139 4.498 1.809 7.102 1.809h0.006c8.209-0.003 14.862-6.659 14.862-14.868 0-4.103-1.662-7.817-4.349-10.507l0 0zM16.062 28.228h-0.005c-0 0-0.001 0-0.001 0-2.319 0-4.489-0.64-6.342-1.753l0.056 0.031-0.451-0.267-4.675 1.227 1.247-4.559-0.294-0.467c-1.185-1.862-1.889-4.131-1.889-6.565 0-6.822 5.531-12.353 12.353-12.353s12.353 5.531 12.353 12.353c0 6.822-5.53 12.353-12.353 12.353h-0zM22.838 18.977c-0.371-0.186-2.197-1.083-2.537-1.208-0.341-0.124-0.589-0.185-0.837 0.187-0.246 0.371-0.958 1.207-1.175 1.455-0.216 0.249-0.434 0.279-0.805 0.094-1.15-0.466-2.138-1.087-2.997-1.852l0.010 0.009c-0.799-0.74-1.484-1.587-2.037-2.521l-0.028-0.052c-0.216-0.371-0.023-0.572 0.162-0.757 0.167-0.166 0.372-0.434 0.557-0.65 0.146-0.179 0.271-0.384 0.366-0.604l0.006-0.017c0.043-0.087 0.068-0.188 0.068-0.296 0-0.131-0.037-0.253-0.101-0.357l0.002 0.003c-0.094-0.186-0.836-2.014-1.145-2.758-0.302-0.724-0.609-0.625-0.836-0.637-0.216-0.010-0.464-0.012-0.712-0.012-0.395 0.010-0.746 0.188-0.988 0.463l-0.001 0.002c-0.802 0.761-1.3 1.834-1.3 3.023 0 0.026 0 0.053 0.001 0.079l-0-0.004c0.131 1.467 0.681 2.784 1.527 3.857l-0.012-0.015c1.604 2.379 3.742 4.282 6.251 5.564l0.094 0.043c0.548 0.248 1.25 0.513 1.968 0.74l0.149 0.041c0.442 0.14 0.951 0.221 1.479 0.221 0.303 0 0.601-0.027 0.889-0.078l-0.031 0.004c1.069-0.223 1.956-0.868 2.497-1.749l0.009-0.017c0.165-0.366 0.261-0.793 0.261-1.242 0-0.185-0.016-0.366-0.047-0.542l0.003 0.019c-0.092-0.155-0.34-0.247-0.712-0.434z"
1051
- />,
1052
- {
1053
- viewBox: "0 0 32 32",
1054
- strokeWidth: "1.2",
1055
- },
1047
+ <>
1048
+ <path
1049
+ strokeLinecap="round"
1050
+ strokeLinejoin="round"
1051
+ d="M12 2C6.48 2 2 6.48 2 12c0 1.77.46 3.43 1.27 4.88L2 22l5.12-1.27C8.57 21.54 10.23 22 12 22c5.52 0 10-4.48 10-10S17.52 2 12 2z"
1052
+ />
1053
+ <path
1054
+ strokeLinecap="round"
1055
+ strokeLinejoin="round"
1056
+ d="M16.5 14.38c-.25-.13-1.47-.73-1.7-.81-.23-.08-.4-.13-.56.12-.16.25-.64.81-.79.98-.14.17-.29.19-.54.06-.25-.13-1.05-.39-2-1.23-.74-.66-1.24-1.47-1.38-1.72-.14-.25-.02-.38.11-.51.11-.11.25-.29.37-.43.12-.15.16-.25.25-.42.08-.17.04-.31-.02-.43-.06-.13-.56-1.35-.77-1.85-.2-.48-.41-.42-.56-.43-.14-.01-.31-.01-.48-.01-.17 0-.44.06-.67.31-.23.25-.87.85-.87 2.08 0 1.22.89 2.4 1.02 2.57.12.17 1.75 2.67 4.25 3.74.59.26 1.06.41 1.42.52.6.19 1.14.16 1.57.1.48-.07 1.47-.6 1.68-1.18.21-.58.21-1.08.14-1.18-.06-.1-.23-.16-.48-.29z"
1057
+ />
1058
+ </>,
1056
1059
  );
1057
1060
  } else if (icon === IconProp.Hide) {
1058
1061
  return getSvgWrapper(
@@ -12,11 +12,15 @@ const InfoCard: FunctionComponent<ComponentProps> = (
12
12
  props: ComponentProps,
13
13
  ): ReactElement => {
14
14
  return (
15
- <div className={`rounded-md bg-white shadow p-5 ${props.className || ""}`}>
16
- <div>
15
+ <div
16
+ className={`rounded-xl bg-white border border-gray-200 shadow-sm hover:shadow-md transition-shadow duration-200 p-5 ${props.className || ""}`}
17
+ >
18
+ <div className="mb-2">
17
19
  <FieldLabelElement title={props.title} />
18
20
  </div>
19
- <div className={props.textClassName || ""}>{props.value}</div>
21
+ <div className={props.textClassName || "text-gray-900"}>
22
+ {props.value}
23
+ </div>
20
24
  </div>
21
25
  );
22
26
  };
@@ -1956,7 +1956,7 @@ const BaseModelTable: <TBaseModel extends BaseModel | AnalyticsBaseModel>(
1956
1956
 
1957
1957
  return (
1958
1958
  <>
1959
- <div className="mb-5 mt-5">{getCardComponent()}</div>
1959
+ <div className="">{getCardComponent()}</div>
1960
1960
 
1961
1961
  {showModel ? (
1962
1962
  props.callbacks.showCreateEditModal({
@@ -0,0 +1,73 @@
1
+ import Icon, { SizeProp, ThickProp } from "../Icon/Icon";
2
+ import Tooltip from "../Tooltip/Tooltip";
3
+ import IconProp from "../../../Types/Icon/IconProp";
4
+ import React, { FunctionComponent, ReactElement, useState } from "react";
5
+
6
+ export interface ComponentProps {
7
+ objectId: string;
8
+ }
9
+
10
+ const ObjectIDView: FunctionComponent<ComponentProps> = (
11
+ props: ComponentProps,
12
+ ): ReactElement => {
13
+ const [copied, setCopied] = useState<boolean>(false);
14
+
15
+ const handleCopy: () => Promise<void> = async (): Promise<void> => {
16
+ await navigator.clipboard?.writeText(props.objectId);
17
+ setCopied(true);
18
+ setTimeout(() => {
19
+ setCopied(false);
20
+ }, 2000);
21
+ };
22
+
23
+ return (
24
+ <div
25
+ className="inline-flex items-center gap-2 group/objectid cursor-pointer"
26
+ onClick={handleCopy}
27
+ role="button"
28
+ tabIndex={0}
29
+ onKeyDown={async (e: React.KeyboardEvent) => {
30
+ if (e.key === "Enter" || e.key === " ") {
31
+ await handleCopy();
32
+ }
33
+ }}
34
+ >
35
+ <Tooltip text={copied ? "Copied!" : "Click to copy"}>
36
+ <div
37
+ className={`inline-flex items-center gap-2 px-2.5 py-1.5 rounded-md font-mono text-sm transition-all duration-200 ${
38
+ copied
39
+ ? "bg-green-50 border border-green-200 text-green-700"
40
+ : "bg-gray-50 border border-gray-200 text-gray-700 hover:bg-gray-100 hover:border-gray-300"
41
+ }`}
42
+ >
43
+ <code className="break-all">{props.objectId}</code>
44
+ <div
45
+ className={`flex-shrink-0 transition-all duration-200 ${
46
+ copied
47
+ ? "text-green-500"
48
+ : "text-gray-400 group-hover/objectid:text-gray-600"
49
+ }`}
50
+ >
51
+ {copied ? (
52
+ <Icon
53
+ icon={IconProp.CheckCircle}
54
+ size={SizeProp.Small}
55
+ thick={ThickProp.Thick}
56
+ className="h-3.5 w-3.5"
57
+ />
58
+ ) : (
59
+ <Icon
60
+ icon={IconProp.Copy}
61
+ size={SizeProp.Small}
62
+ thick={ThickProp.Thick}
63
+ className="h-3.5 w-3.5"
64
+ />
65
+ )}
66
+ </div>
67
+ </div>
68
+ </Tooltip>
69
+ </div>
70
+ );
71
+ };
72
+
73
+ export default ObjectIDView;
@@ -96,16 +96,14 @@ const Page: FunctionComponent<ComponentProps> = (
96
96
 
97
97
  {props.sideMenu && (
98
98
  <main className="mx-auto max-w-full pb-10">
99
- <div className="lg:grid lg:grid-cols-12 lg:gap-x-5">
99
+ <div className="flex flex-col md:flex-row md:gap-4 lg:gap-5">
100
100
  {props.sideMenu}
101
101
 
102
102
  {!props.isLoading && (
103
- <div className="space-y-6 md:px-6 lg:col-span-10 md:col-span-9 lg:px-0">
104
- {props.children}
105
- </div>
103
+ <div className="space-y-6 flex-1 min-w-0">{props.children}</div>
106
104
  )}
107
105
  {props.isLoading && (
108
- <div className="lg:col-span-10 md:col-span-9">
106
+ <div className="flex-1 min-w-0">
109
107
  <PageLoader isVisible={true} />
110
108
  </div>
111
109
  )}