diff --git a/public/locales/en/account.json b/public/locales/en/account.json index 6ce0c6c52..b7768f780 100644 --- a/public/locales/en/account.json +++ b/public/locales/en/account.json @@ -7,6 +7,10 @@ "apiToken": "API token" }, "apiToken": { - "helperText": "Your API Token is valid for a year. Check out our API Guide for more information on using your API Token with the Dataverse APIs." + "helperText": "Your API Token is valid for a year. Check out our API Guide for more information on using your API Token with the Dataverse APIs.", + "expirationDate": "Expiration date", + "copyToClipboard": "Copy to Clipboard", + "recreateToken": "Recreate Token", + "revokeToken": "Revoke Token" } } diff --git a/src/sections/account/Account.tsx b/src/sections/account/Account.tsx index 05a0281e3..5a472dd3b 100644 --- a/src/sections/account/Account.tsx +++ b/src/sections/account/Account.tsx @@ -2,7 +2,7 @@ import { useTranslation } from 'react-i18next' import { useSearchParams } from 'react-router-dom' import { Tabs } from '@iqss/dataverse-design-system' import { AccountHelper } from './AccountHelper' -import { ApiTokenSection } from './ApiTokenSection/ApiTokenSection' +import { ApiTokenSection } from './api-token-section/ApiTokenSection' import { BreadcrumbsGenerator } from '../shared/hierarchy/BreadcrumbsGenerator' import { UpwardHierarchyNodeMother } from '../../../tests/component/shared/hierarchy/domain/models/UpwardHierarchyNodeMother' import styles from './Account.module.scss' diff --git a/src/sections/account/ApiTokenSection/ApiTokenSection.module.scss b/src/sections/account/ApiTokenSection/ApiTokenSection.module.scss deleted file mode 100644 index 09b71bea3..000000000 --- a/src/sections/account/ApiTokenSection/ApiTokenSection.module.scss +++ /dev/null @@ -1,15 +0,0 @@ -.exp-date { - display: flex; - gap: 1.5rem; - align-items: center; - padding-left: 0.5rem; - font-weight: bold; - - time { - font-weight: normal; - } - - @media (min-width: 768px) { - gap: 3rem; - } -} diff --git a/src/sections/account/ApiTokenSection/ApiTokenSection.tsx b/src/sections/account/ApiTokenSection/ApiTokenSection.tsx deleted file mode 100644 index 12009927b..000000000 --- a/src/sections/account/ApiTokenSection/ApiTokenSection.tsx +++ /dev/null @@ -1,30 +0,0 @@ -import { Trans, useTranslation } from 'react-i18next' -import accountStyles from '../Account.module.scss' -import styles from './ApiTokenSection.module.scss' - -export const ApiTokenSection = () => { - const { t } = useTranslation('account', { keyPrefix: 'apiToken' }) - - return ( - <> -

- - ) - }} - /> -

-

- Expiration Date -

- - ) -} diff --git a/src/sections/account/api-token-section/ApiTokenSection.module.scss b/src/sections/account/api-token-section/ApiTokenSection.module.scss new file mode 100644 index 000000000..b6927fe53 --- /dev/null +++ b/src/sections/account/api-token-section/ApiTokenSection.module.scss @@ -0,0 +1,31 @@ +@import 'node_modules/@iqss/dataverse-design-system/src/lib/assets/styles/design-tokens/colors.module'; + +.exp-date { + display: flex; + gap: 1.5rem; + align-items: center; + padding-left: 0.5rem; + font-weight: bold; + + time { + font-weight: normal; + } + + @media (min-width: 768px) { + gap: 3rem; + } +} + +.api-token { + padding: 0.5rem 1rem; + background-color: #f7f7f9; + border: solid 1px $dv-border-color; + border-radius: 4px; +} + +.btns-wrapper { + display: flex; + gap: 0.5rem; + align-items: center; + padding-top: 1rem; +} diff --git a/src/sections/account/api-token-section/ApiTokenSection.tsx b/src/sections/account/api-token-section/ApiTokenSection.tsx new file mode 100644 index 000000000..66fcdce0a --- /dev/null +++ b/src/sections/account/api-token-section/ApiTokenSection.tsx @@ -0,0 +1,50 @@ +import { Trans, useTranslation } from 'react-i18next' +import accountStyles from '../Account.module.scss' +import styles from './ApiTokenSection.module.scss' +import { Button } from '@iqss/dataverse-design-system' + +export const ApiTokenSection = () => { + const { t } = useTranslation('account', { keyPrefix: 'apiToken' }) + + const apiToken = '999fff-666rrr-12kfd54-123123' + const expirationDate = '2025-09-04' + + const copyToClipboard = () => { + navigator.clipboard.writeText(apiToken).catch((error) => { + console.error('Failed to copy text:', error) + }) + } + + return ( + <> +

+ + ) + }} + /> +

+

+ {t('expirationDate')} +

+
+ {apiToken} +
+
+ + + +
+ + ) +}