@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.
- package/Models/DatabaseModels/AIAgent.ts +589 -0
- package/Models/DatabaseModels/AIAgentOwnerTeam.ts +434 -0
- package/Models/DatabaseModels/AIAgentOwnerUser.ts +433 -0
- package/Models/DatabaseModels/AIAgentTask.ts +549 -0
- package/Models/DatabaseModels/AIAgentTaskLog.ts +417 -0
- package/Models/DatabaseModels/AIAgentTaskPullRequest.ts +731 -0
- package/Models/DatabaseModels/AIAgentTaskTelemetryException.ts +388 -0
- package/Models/DatabaseModels/Index.ts +15 -0
- package/Models/DatabaseModels/Monitor.ts +33 -0
- package/Models/DatabaseModels/Project.ts +25 -0
- package/Models/DatabaseModels/TelemetryException.ts +1 -1
- package/Server/API/AIAgentAPI.ts +200 -0
- package/Server/API/AIAgentDataAPI.ts +692 -0
- package/Server/API/AIAgentTaskAPI.ts +286 -0
- package/Server/API/AIAgentTaskLogAPI.ts +165 -0
- package/Server/API/AIAgentTaskPullRequestAPI.ts +14 -0
- package/Server/API/GitHubAPI.ts +25 -7
- package/Server/API/TelemetryExceptionAPI.ts +169 -0
- package/Server/EnvironmentConfig.ts +3 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1766590916627-MigrationName.ts +195 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1766600860972-MigrationName.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1766606720183-MigrationName.ts +17 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1766688107858-MigrationName.ts +63 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1766754182870-MigrationName.ts +75 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1766774689743-MigrationName.ts +157 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1766777986427-MigrationName.ts +33 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1766918848434-AddAIAgentIsDefault.ts +27 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1766923324521-MigrationName.ts +37 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1766958924188-AddGitHubAppInstallationIdToProject.ts +31 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1767009661768-MigrationName.ts +35 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +22 -0
- package/Server/Services/AIAgentOwnerTeamService.ts +10 -0
- package/Server/Services/AIAgentOwnerUserService.ts +10 -0
- package/Server/Services/AIAgentService.ts +564 -0
- package/Server/Services/AIAgentTaskLogService.ts +10 -0
- package/Server/Services/AIAgentTaskPullRequestService.ts +10 -0
- package/Server/Services/AIAgentTaskService.ts +178 -0
- package/Server/Services/AIAgentTaskTelemetryExceptionService.ts +39 -0
- package/Server/Services/Index.ts +10 -0
- package/Server/Services/TelemetryExceptionService.ts +162 -0
- package/Server/Utils/Monitor/MonitorResource.ts +228 -0
- package/Server/Utils/PushNotificationUtil.ts +29 -0
- package/Server/Utils/WhatsAppTemplateUtil.ts +6 -0
- package/Tests/UI/Components/Badge.test.tsx +5 -5
- package/Tests/UI/Components/Card.test.tsx +4 -8
- package/Tests/UI/Components/HiddenText.test.tsx +2 -5
- package/Tests/UI/Components/SideMenuItem.test.tsx +4 -2
- package/Types/AI/AIAgentTaskMetadata.ts +25 -0
- package/Types/AI/AIAgentTaskStatus.ts +65 -0
- package/Types/AI/AIAgentTaskType.ts +40 -0
- package/Types/Email/EmailTemplateType.ts +2 -0
- package/Types/Monitor/MonitorEvaluationSummary.ts +2 -1
- package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
- package/Types/Permission.ts +176 -0
- package/Types/WhatsApp/WhatsAppTemplates.ts +9 -0
- package/UI/Components/AIAgent/AIAgent.tsx +69 -0
- package/UI/Components/Badge/Badge.tsx +9 -5
- package/UI/Components/Banner/Banner.tsx +1 -1
- package/UI/Components/Card/Card.tsx +14 -12
- package/UI/Components/CodeBlock/CodeBlock.tsx +47 -4
- package/UI/Components/Detail/Detail.tsx +239 -49
- package/UI/Components/Detail/FieldLabel.tsx +35 -11
- package/UI/Components/Detail/PlaceholderText.tsx +18 -1
- package/UI/Components/Footer/Footer.tsx +9 -7
- package/UI/Components/Header/Header.tsx +4 -3
- package/UI/Components/Header/HeaderIconDropdownButton.tsx +13 -11
- package/UI/Components/Header/IconDropdown/IconDropdownItem.tsx +3 -3
- package/UI/Components/Header/IconDropdown/IconDropdownMenu.tsx +1 -1
- package/UI/Components/Header/ProjectPicker/CreateNewProjectButton.tsx +4 -4
- package/UI/Components/Header/ProjectPicker/ProjectPicker.tsx +6 -6
- package/UI/Components/Header/ProjectPicker/ProjectPickerFilterBox.tsx +3 -3
- package/UI/Components/Header/ProjectPicker/ProjectPickerMenu.tsx +1 -1
- package/UI/Components/Header/ProjectPicker/ProjectPickerMenuItem.tsx +4 -4
- package/UI/Components/HeaderAlert/HeaderAlert.tsx +32 -32
- package/UI/Components/HeaderAlert/HeaderAlertGroup.tsx +1 -7
- package/UI/Components/HiddenText/HiddenText.tsx +98 -27
- package/UI/Components/Icon/Icon.tsx +12 -9
- package/UI/Components/InfoCard/InfoCard.tsx +7 -3
- package/UI/Components/ModelTable/BaseModelTable.tsx +1 -1
- package/UI/Components/ObjectID/ObjectIDView.tsx +73 -0
- package/UI/Components/Page/Page.tsx +3 -5
- package/UI/Components/SideMenu/SideMenu.tsx +175 -40
- package/UI/Components/SideMenu/SideMenuDivider.tsx +17 -0
- package/UI/Components/SideMenu/SideMenuItem.tsx +111 -158
- package/UI/Components/SideMenu/SideMenuSection.tsx +53 -3
- package/UI/Components/Table/Table.tsx +1 -1
- package/UI/Components/Types/FieldType.ts +2 -0
- package/UI/Config.ts +5 -0
- package/build/dist/Models/DatabaseModels/AIAgent.js +614 -0
- package/build/dist/Models/DatabaseModels/AIAgent.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AIAgentOwnerTeam.js +452 -0
- package/build/dist/Models/DatabaseModels/AIAgentOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AIAgentOwnerUser.js +451 -0
- package/build/dist/Models/DatabaseModels/AIAgentOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AIAgentTask.js +580 -0
- package/build/dist/Models/DatabaseModels/AIAgentTask.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js +438 -0
- package/build/dist/Models/DatabaseModels/AIAgentTaskLog.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js +771 -0
- package/build/dist/Models/DatabaseModels/AIAgentTaskPullRequest.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js +404 -0
- package/build/dist/Models/DatabaseModels/AIAgentTaskTelemetryException.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Index.js +14 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Monitor.js +34 -0
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +26 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js +1 -1
- package/build/dist/Models/DatabaseModels/TelemetryException.js.map +1 -1
- package/build/dist/Server/API/AIAgentAPI.js +141 -0
- package/build/dist/Server/API/AIAgentAPI.js.map +1 -0
- package/build/dist/Server/API/AIAgentDataAPI.js +415 -0
- package/build/dist/Server/API/AIAgentDataAPI.js.map +1 -0
- package/build/dist/Server/API/AIAgentTaskAPI.js +199 -0
- package/build/dist/Server/API/AIAgentTaskAPI.js.map +1 -0
- package/build/dist/Server/API/AIAgentTaskLogAPI.js +106 -0
- package/build/dist/Server/API/AIAgentTaskLogAPI.js.map +1 -0
- package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js +9 -0
- package/build/dist/Server/API/AIAgentTaskPullRequestAPI.js.map +1 -0
- package/build/dist/Server/API/GitHubAPI.js +23 -8
- package/build/dist/Server/API/GitHubAPI.js.map +1 -1
- package/build/dist/Server/API/TelemetryExceptionAPI.js +120 -0
- package/build/dist/Server/API/TelemetryExceptionAPI.js.map +1 -0
- package/build/dist/Server/EnvironmentConfig.js +2 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766590916627-MigrationName.js +74 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766590916627-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766600860972-MigrationName.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766600860972-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766606720183-MigrationName.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766606720183-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766688107858-MigrationName.js +28 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766688107858-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766754182870-MigrationName.js +32 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766754182870-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766774689743-MigrationName.js +60 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766774689743-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766777986427-MigrationName.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766777986427-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766918848434-AddAIAgentIsDefault.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766918848434-AddAIAgentIsDefault.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766923324521-MigrationName.js +20 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766923324521-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766958924188-AddGitHubAppInstallationIdToProject.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1766958924188-AddGitHubAppInstallationIdToProject.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767009661768-MigrationName.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1767009661768-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AIAgentOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/AIAgentOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/AIAgentOwnerUserService.js +9 -0
- package/build/dist/Server/Services/AIAgentOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/AIAgentService.js +471 -0
- package/build/dist/Server/Services/AIAgentService.js.map +1 -0
- package/build/dist/Server/Services/AIAgentTaskLogService.js +9 -0
- package/build/dist/Server/Services/AIAgentTaskLogService.js.map +1 -0
- package/build/dist/Server/Services/AIAgentTaskPullRequestService.js +9 -0
- package/build/dist/Server/Services/AIAgentTaskPullRequestService.js.map +1 -0
- package/build/dist/Server/Services/AIAgentTaskService.js +158 -0
- package/build/dist/Server/Services/AIAgentTaskService.js.map +1 -0
- package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js +36 -0
- package/build/dist/Server/Services/AIAgentTaskTelemetryExceptionService.js.map +1 -0
- package/build/dist/Server/Services/Index.js +10 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/TelemetryExceptionService.js +137 -0
- package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorResource.js +168 -0
- package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
- package/build/dist/Server/Utils/PushNotificationUtil.js +21 -0
- package/build/dist/Server/Utils/PushNotificationUtil.js.map +1 -1
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +4 -0
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
- package/build/dist/Tests/UI/Components/Badge.test.js +5 -5
- package/build/dist/Tests/UI/Components/Badge.test.js.map +1 -1
- package/build/dist/Tests/UI/Components/Card.test.js +4 -8
- package/build/dist/Tests/UI/Components/Card.test.js.map +1 -1
- package/build/dist/Tests/UI/Components/HiddenText.test.js +2 -3
- package/build/dist/Tests/UI/Components/HiddenText.test.js.map +1 -1
- package/build/dist/Tests/UI/Components/SideMenuItem.test.js +3 -2
- package/build/dist/Tests/UI/Components/SideMenuItem.test.js.map +1 -1
- package/build/dist/Types/AI/AIAgentTaskMetadata.js +6 -0
- package/build/dist/Types/AI/AIAgentTaskMetadata.js.map +1 -0
- package/build/dist/Types/AI/AIAgentTaskStatus.js +51 -0
- package/build/dist/Types/AI/AIAgentTaskStatus.js.map +1 -0
- package/build/dist/Types/AI/AIAgentTaskType.js +29 -0
- package/build/dist/Types/AI/AIAgentTaskType.js.map +1 -0
- package/build/dist/Types/Email/EmailTemplateType.js +2 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
- package/build/dist/Types/Permission.js +160 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/WhatsApp/WhatsAppTemplates.js +6 -0
- package/build/dist/Types/WhatsApp/WhatsAppTemplates.js.map +1 -1
- package/build/dist/UI/Components/AIAgent/AIAgent.js +32 -0
- package/build/dist/UI/Components/AIAgent/AIAgent.js.map +1 -0
- package/build/dist/UI/Components/Badge/Badge.js +9 -5
- package/build/dist/UI/Components/Badge/Badge.js.map +1 -1
- package/build/dist/UI/Components/Banner/Banner.js +1 -1
- package/build/dist/UI/Components/Banner/Banner.js.map +1 -1
- package/build/dist/UI/Components/Card/Card.js +12 -12
- package/build/dist/UI/Components/Card/Card.js.map +1 -1
- package/build/dist/UI/Components/CodeBlock/CodeBlock.js +22 -2
- package/build/dist/UI/Components/CodeBlock/CodeBlock.js.map +1 -1
- package/build/dist/UI/Components/Detail/Detail.js +117 -37
- package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
- package/build/dist/UI/Components/Detail/FieldLabel.js +12 -7
- package/build/dist/UI/Components/Detail/FieldLabel.js.map +1 -1
- package/build/dist/UI/Components/Detail/PlaceholderText.js +4 -1
- package/build/dist/UI/Components/Detail/PlaceholderText.js.map +1 -1
- package/build/dist/UI/Components/Footer/Footer.js +6 -6
- package/build/dist/UI/Components/Footer/Footer.js.map +1 -1
- package/build/dist/UI/Components/Header/Header.js +4 -3
- package/build/dist/UI/Components/Header/Header.js.map +1 -1
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js +7 -7
- package/build/dist/UI/Components/Header/HeaderIconDropdownButton.js.map +1 -1
- package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js +3 -3
- package/build/dist/UI/Components/Header/IconDropdown/IconDropdownItem.js.map +1 -1
- package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js +1 -1
- package/build/dist/UI/Components/Header/IconDropdown/IconDropdownMenu.js.map +1 -1
- package/build/dist/UI/Components/Header/ProjectPicker/CreateNewProjectButton.js +4 -4
- package/build/dist/UI/Components/Header/ProjectPicker/CreateNewProjectButton.js.map +1 -1
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js +6 -6
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPicker.js.map +1 -1
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerFilterBox.js +2 -2
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerFilterBox.js.map +1 -1
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerMenu.js +1 -1
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerMenu.js.map +1 -1
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerMenuItem.js +4 -4
- package/build/dist/UI/Components/Header/ProjectPicker/ProjectPickerMenuItem.js.map +1 -1
- package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js +31 -29
- package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js.map +1 -1
- package/build/dist/UI/Components/HeaderAlert/HeaderAlertGroup.js +1 -3
- package/build/dist/UI/Components/HeaderAlert/HeaderAlertGroup.js.map +1 -1
- package/build/dist/UI/Components/HiddenText/HiddenText.js +33 -14
- package/build/dist/UI/Components/HiddenText/HiddenText.js.map +1 -1
- package/build/dist/UI/Components/Icon/Icon.js +3 -4
- package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
- package/build/dist/UI/Components/InfoCard/InfoCard.js +3 -3
- package/build/dist/UI/Components/InfoCard/InfoCard.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ObjectID/ObjectIDView.js +30 -0
- package/build/dist/UI/Components/ObjectID/ObjectIDView.js.map +1 -0
- package/build/dist/UI/Components/Page/Page.js +3 -3
- package/build/dist/UI/Components/Page/Page.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenu.js +82 -17
- package/build/dist/UI/Components/SideMenu/SideMenu.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuDivider.js +7 -0
- package/build/dist/UI/Components/SideMenu/SideMenuDivider.js.map +1 -0
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js +68 -97
- package/build/dist/UI/Components/SideMenu/SideMenuItem.js.map +1 -1
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js +18 -3
- package/build/dist/UI/Components/SideMenu/SideMenuSection.js.map +1 -1
- package/build/dist/UI/Components/Table/Table.js +1 -1
- package/build/dist/UI/Components/Table/Table.js.map +1 -1
- package/build/dist/UI/Components/Types/FieldType.js +2 -0
- package/build/dist/UI/Components/Types/FieldType.js.map +1 -1
- package/build/dist/UI/Config.js +2 -0
- package/build/dist/UI/Config.js.map +1 -1
- package/package.json +1 -1
|
@@ -24,12 +24,14 @@ const Footer: FunctionComponent<ComponentProps> = (
|
|
|
24
24
|
return (
|
|
25
25
|
<React.Fragment>
|
|
26
26
|
<footer
|
|
27
|
-
className={
|
|
27
|
+
className={
|
|
28
|
+
props.className || "bg-gray-50/50 border-t border-gray-100 min-h-16"
|
|
29
|
+
}
|
|
28
30
|
style={props.style}
|
|
29
31
|
>
|
|
30
|
-
<div className="mx-auto w-full py-
|
|
32
|
+
<div className="mx-auto w-full py-6 px-6 md:flex md:items-center md:justify-between lg:px-8">
|
|
31
33
|
{/* Mobile: Stack links vertically, Desktop: Horizontal layout */}
|
|
32
|
-
<div className="flex flex-col space-y-3 md:flex-row md:justify-center md:space-y-0 md:space-x-
|
|
34
|
+
<div className="flex flex-col space-y-3 md:flex-row md:justify-center md:items-center md:space-y-0 md:space-x-8 md:order-2">
|
|
33
35
|
{props.links &&
|
|
34
36
|
props.links.length > 0 &&
|
|
35
37
|
props.links.map((link: FooterLink, i: number) => {
|
|
@@ -37,7 +39,7 @@ const Footer: FunctionComponent<ComponentProps> = (
|
|
|
37
39
|
return (
|
|
38
40
|
<div
|
|
39
41
|
key={i}
|
|
40
|
-
className="text-gray-
|
|
42
|
+
className="text-gray-500 text-sm text-center md:text-left transition-colors duration-200"
|
|
41
43
|
>
|
|
42
44
|
{link.content}
|
|
43
45
|
</div>
|
|
@@ -51,7 +53,7 @@ const Footer: FunctionComponent<ComponentProps> = (
|
|
|
51
53
|
return (
|
|
52
54
|
<UILink
|
|
53
55
|
key={i}
|
|
54
|
-
className="text-gray-
|
|
56
|
+
className="text-gray-500 hover:text-gray-700 text-sm font-medium text-center md:text-left transition-colors duration-200"
|
|
55
57
|
to={link.to}
|
|
56
58
|
openInNewTab={link.openInNewTab}
|
|
57
59
|
onClick={link.onClick}
|
|
@@ -62,9 +64,9 @@ const Footer: FunctionComponent<ComponentProps> = (
|
|
|
62
64
|
})}
|
|
63
65
|
</div>
|
|
64
66
|
{/* Copyright: Show on mobile, hide on larger screens unless specified */}
|
|
65
|
-
<div className="mt-
|
|
67
|
+
<div className="mt-5 md:order-1 md:mt-0 block md:hidden lg:block">
|
|
66
68
|
{props.copyright && (
|
|
67
|
-
<p className="text-center text-
|
|
69
|
+
<p className="text-center text-sm text-gray-400">
|
|
68
70
|
© {props.copyright}
|
|
69
71
|
</p>
|
|
70
72
|
)}
|
|
@@ -14,10 +14,11 @@ const Header: FunctionComponent<ComponentProps> = (
|
|
|
14
14
|
<React.Fragment>
|
|
15
15
|
<div
|
|
16
16
|
className={
|
|
17
|
-
props.className ||
|
|
17
|
+
props.className ||
|
|
18
|
+
"relative flex h-16 justify-between bg-white shadow-sm px-4"
|
|
18
19
|
}
|
|
19
20
|
>
|
|
20
|
-
<div className="relative z-20 flex
|
|
21
|
+
<div className="relative z-20 flex items-center">
|
|
21
22
|
{props.leftComponents}
|
|
22
23
|
</div>
|
|
23
24
|
|
|
@@ -27,7 +28,7 @@ const Header: FunctionComponent<ComponentProps> = (
|
|
|
27
28
|
</div>
|
|
28
29
|
)}
|
|
29
30
|
|
|
30
|
-
<div className="hidden lg:relative lg:z-10 lg:ml-4 lg:flex lg:items-center">
|
|
31
|
+
<div className="hidden lg:relative lg:z-10 lg:ml-4 lg:flex lg:items-center lg:gap-2">
|
|
31
32
|
{props.rightComponents}
|
|
32
33
|
</div>
|
|
33
34
|
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import useComponentOutsideClick from "../../Types/UseComponentOutsideClick";
|
|
2
|
-
import Icon
|
|
2
|
+
import Icon from "../Icon/Icon";
|
|
3
3
|
import Image from "../Image/Image";
|
|
4
4
|
import Route from "../../../Types/API/Route";
|
|
5
5
|
import IconProp from "../../../Types/Icon/IconProp";
|
|
@@ -38,11 +38,11 @@ const HeaderIconDropdownButton: FunctionComponent<ComponentProps> = (
|
|
|
38
38
|
}, [props.showDropdown]);
|
|
39
39
|
|
|
40
40
|
return (
|
|
41
|
-
<div className="relative ml-
|
|
41
|
+
<div className="relative ml-1 flex-shrink-0">
|
|
42
42
|
<div>
|
|
43
43
|
<button
|
|
44
44
|
type="button"
|
|
45
|
-
className="flex rounded-
|
|
45
|
+
className="flex items-center justify-center h-9 w-9 rounded-lg bg-gray-50 border border-gray-200 hover:bg-gray-100 hover:border-gray-300 focus:outline-none focus:ring-2 focus:ring-indigo-500 focus:ring-offset-1 transition-all duration-150"
|
|
46
46
|
id="user-menu-button"
|
|
47
47
|
aria-expanded="false"
|
|
48
48
|
aria-haspopup="true"
|
|
@@ -54,7 +54,7 @@ const HeaderIconDropdownButton: FunctionComponent<ComponentProps> = (
|
|
|
54
54
|
<span className="sr-only">{props.name}</span>
|
|
55
55
|
{props.iconImageUrl && (
|
|
56
56
|
<Image
|
|
57
|
-
className="h-
|
|
57
|
+
className="h-7 w-7 rounded-md object-cover"
|
|
58
58
|
onClick={() => {
|
|
59
59
|
props.onClick?.();
|
|
60
60
|
}}
|
|
@@ -63,16 +63,18 @@ const HeaderIconDropdownButton: FunctionComponent<ComponentProps> = (
|
|
|
63
63
|
/>
|
|
64
64
|
)}
|
|
65
65
|
{props.icon && (
|
|
66
|
-
<Icon
|
|
67
|
-
className="text-gray-400 hover:text-indigo-500"
|
|
68
|
-
icon={props.icon}
|
|
69
|
-
size={SizeProp.Large}
|
|
70
|
-
/>
|
|
66
|
+
<Icon className="h-5 w-5 text-gray-500" icon={props.icon} />
|
|
71
67
|
)}
|
|
72
68
|
</button>
|
|
73
|
-
{props.title
|
|
69
|
+
{props.title && (
|
|
70
|
+
<span className="ml-2 text-sm font-medium text-gray-700">
|
|
71
|
+
{props.title}
|
|
72
|
+
</span>
|
|
73
|
+
)}
|
|
74
74
|
{props.badge && props.badge > 0 && (
|
|
75
|
-
<span className="
|
|
75
|
+
<span className="absolute -top-1 -right-1 flex h-5 w-5 items-center justify-center rounded-full bg-red-500 text-xs font-semibold text-white ring-2 ring-white">
|
|
76
|
+
{props.badge}
|
|
77
|
+
</span>
|
|
76
78
|
)}
|
|
77
79
|
</div>
|
|
78
80
|
|
|
@@ -18,15 +18,15 @@ const IconDropdown: FunctionComponent<ComponentProps> = (
|
|
|
18
18
|
): ReactElement => {
|
|
19
19
|
return (
|
|
20
20
|
<Link
|
|
21
|
-
className="
|
|
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="
|
|
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-
|
|
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="
|
|
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-
|
|
24
|
+
className="h-5 w-5 flex-shrink-0 text-indigo-500"
|
|
25
25
|
/>
|
|
26
|
-
<span className="
|
|
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
|
|
40
|
-
<div className="relative
|
|
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-
|
|
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-
|
|
54
|
+
className="h-5 w-5 flex-shrink-0 text-gray-500"
|
|
55
55
|
/>
|
|
56
56
|
|
|
57
|
-
<span className="ml-
|
|
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-
|
|
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="
|
|
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-
|
|
20
|
-
placeholder="Search
|
|
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-
|
|
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-
|
|
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-
|
|
33
|
+
className="h-5 w-5 flex-shrink-0 text-gray-400"
|
|
34
34
|
/>
|
|
35
|
-
<span className="
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
43
|
-
|
|
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}-
|
|
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}
|
|
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
|
|
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-[
|
|
82
|
+
className={`h-4 w-4 stroke-[2.5px] ${textColor}`}
|
|
83
83
|
/>
|
|
84
84
|
</div>
|
|
85
|
-
<div className="
|
|
86
|
-
<
|
|
85
|
+
<div className="flex items-center gap-1">
|
|
86
|
+
<span className={`text-sm font-semibold ${textColor}`}>
|
|
87
87
|
{props.title}
|
|
88
|
-
</
|
|
88
|
+
</span>
|
|
89
89
|
{props.suffix && (
|
|
90
90
|
<span
|
|
91
|
-
className={
|
|
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
|
-
|
|
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
|
|
2
|
-
import
|
|
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
|
-
<
|
|
27
|
+
<div
|
|
19
28
|
role="hidden-text"
|
|
20
|
-
className="cursor-pointer
|
|
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
|
-
|
|
26
|
-
|
|
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
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
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
|
|
16
|
-
|
|
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 || ""}>
|
|
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="
|
|
1959
|
+
<div className="">{getCardComponent()}</div>
|
|
1960
1960
|
|
|
1961
1961
|
{showModel ? (
|
|
1962
1962
|
props.callbacks.showCreateEditModal({
|