diff --git a/packages/twenty-front/public/images/integrations/airtable-logo.png b/packages/twenty-front/public/images/integrations/airtable-logo.png new file mode 100644 index 000000000..f63243b36 Binary files /dev/null and b/packages/twenty-front/public/images/integrations/airtable-logo.png differ diff --git a/packages/twenty-front/public/images/integrations/postgresql-logo.png b/packages/twenty-front/public/images/integrations/postgresql-logo.png new file mode 100644 index 000000000..08e86c06b Binary files /dev/null and b/packages/twenty-front/public/images/integrations/postgresql-logo.png differ diff --git a/packages/twenty-front/src/App.tsx b/packages/twenty-front/src/App.tsx index 38b93730a..9dc41e7f7 100644 --- a/packages/twenty-front/src/App.tsx +++ b/packages/twenty-front/src/App.tsx @@ -38,6 +38,7 @@ import { SettingsDevelopersApiKeysNew } from '~/pages/settings/developers/api-ke import { SettingsDevelopers } from '~/pages/settings/developers/SettingsDevelopers'; import { SettingsDevelopersWebhooksDetail } from '~/pages/settings/developers/webhooks/SettingsDevelopersWebhookDetail'; import { SettingsDevelopersWebhooksNew } from '~/pages/settings/developers/webhooks/SettingsDevelopersWebhooksNew'; +import { SettingsIntegrationDetail } from '~/pages/settings/integrations/SettingsIntegrationDetail'; import { SettingsIntegrations } from '~/pages/settings/integrations/SettingsIntegrations'; import { SettingsAppearance } from '~/pages/settings/SettingsAppearance'; import { SettingsBilling } from '~/pages/settings/SettingsBilling.tsx'; @@ -170,6 +171,10 @@ export const App = () => { path={SettingsPath.Integrations} element={} /> + } + /> } diff --git a/packages/twenty-front/src/pages/settings/accounts/SettingsAccountLoader.tsx b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountLoader.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/accounts/SettingsAccountLoader.tsx rename to packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountLoader.tsx diff --git a/packages/twenty-front/src/modules/settings/developers/components/SettingsApiKeysTable.tsx b/packages/twenty-front/src/modules/settings/developers/components/SettingsApiKeysTable.tsx new file mode 100644 index 000000000..de55bab79 --- /dev/null +++ b/packages/twenty-front/src/modules/settings/developers/components/SettingsApiKeysTable.tsx @@ -0,0 +1,53 @@ +import { useNavigate } from 'react-router-dom'; +import styled from '@emotion/styled'; + +import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; +import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; +import { SettingsApiKeysFieldItemTableRow } from '@/settings/developers/components/SettingsApiKeysFieldItemTableRow'; +import { ApiFieldItem } from '@/settings/developers/types/api-key/ApiFieldItem'; +import { ApiKey } from '@/settings/developers/types/api-key/ApiKey'; +import { formatExpirations } from '@/settings/developers/utils/format-expiration'; +import { Table } from '@/spreadsheet-import/components/Table'; +import { TableBody } from '@/ui/layout/table/components/TableBody'; +import { TableHeader } from '@/ui/layout/table/components/TableHeader'; +import { TableRow } from '@/ui/layout/table/components/TableRow'; + +const StyledTableBody = styled(TableBody)` + border-bottom: 1px solid ${({ theme }) => theme.border.color.light}; +`; + +const StyledTableRow = styled(TableRow)` + grid-template-columns: 312px 132px 68px; +`; + +export const SettingsApiKeysTable = () => { + const navigate = useNavigate(); + + const { records: apiKeys } = useFindManyRecords({ + objectNameSingular: CoreObjectNameSingular.ApiKey, + filter: { revokedAt: { is: 'NULL' } }, + }); + + return ( + + + Name + Expiration + + + {!!apiKeys.length && ( + + {formatExpirations(apiKeys).map((fieldItem) => ( + { + navigate(`/settings/developers/api-keys/${fieldItem.id}`); + }} + /> + ))} + + )} +
+ ); +}; diff --git a/packages/twenty-front/src/pages/settings/developers/components/ReadDocumentationButton.tsx b/packages/twenty-front/src/modules/settings/developers/components/SettingsReadDocumentationButton.tsx similarity index 86% rename from packages/twenty-front/src/pages/settings/developers/components/ReadDocumentationButton.tsx rename to packages/twenty-front/src/modules/settings/developers/components/SettingsReadDocumentationButton.tsx index 9edacf9cd..5f92acbef 100644 --- a/packages/twenty-front/src/pages/settings/developers/components/ReadDocumentationButton.tsx +++ b/packages/twenty-front/src/modules/settings/developers/components/SettingsReadDocumentationButton.tsx @@ -1,7 +1,7 @@ import { IconBook2 } from '@/ui/display/icon'; import { Button } from '@/ui/input/button/components/Button'; -export const ReadDocumentationButton = () => { +export const SettingsReadDocumentationButton = () => { return (