From cbd99449131760f21cd99d7645d0d35e189318a7 Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Wed, 26 Mar 2025 16:15:44 +0100 Subject: [PATCH 1/5] =?UTF-8?q?=F0=9F=94=A7(backend)=20add=20FRONTEND=5FCS?= =?UTF-8?q?S=5FURL=20env=20var?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We added the `FRONTEND_CSS_URL` environment variable. It will give the possibility to add a css layer at runtime. --- src/backend/core/api/viewsets.py | 1 + src/backend/core/tests/test_api_config.py | 2 ++ src/backend/impress/settings.py | 4 ++++ src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts | 1 + 4 files changed, 8 insertions(+) diff --git a/src/backend/core/api/viewsets.py b/src/backend/core/api/viewsets.py index cdd6db84f..c416c2247 100644 --- a/src/backend/core/api/viewsets.py +++ b/src/backend/core/api/viewsets.py @@ -1689,6 +1689,7 @@ def get(self, request): "CRISP_WEBSITE_ID", "ENVIRONMENT", "FRONTEND_THEME", + "FRONTEND_CSS_URL", "MEDIA_BASE_URL", "POSTHOG_KEY", "LANGUAGES", diff --git a/src/backend/core/tests/test_api_config.py b/src/backend/core/tests/test_api_config.py index cf2ad341c..1dd7f1540 100644 --- a/src/backend/core/tests/test_api_config.py +++ b/src/backend/core/tests/test_api_config.py @@ -19,6 +19,7 @@ COLLABORATION_WS_URL="http://testcollab/", CRISP_WEBSITE_ID="123", FRONTEND_THEME="test-theme", + FRONTEND_CSS_URL="http://testcss/", MEDIA_BASE_URL="http://testserver/", POSTHOG_KEY={"id": "132456", "host": "https://eu.i.posthog-test.com"}, SENTRY_DSN="https://sentry.test/123", @@ -39,6 +40,7 @@ def test_api_config(is_authenticated): "CRISP_WEBSITE_ID": "123", "ENVIRONMENT": "test", "FRONTEND_THEME": "test-theme", + "FRONTEND_CSS_URL": "http://testcss/", "LANGUAGES": [ ["en-us", "English"], ["fr-fr", "Français"], diff --git a/src/backend/impress/settings.py b/src/backend/impress/settings.py index 8b73fccaa..2756ee4d1 100755 --- a/src/backend/impress/settings.py +++ b/src/backend/impress/settings.py @@ -411,6 +411,10 @@ class Base(Configuration): None, environ_name="FRONTEND_THEME", environ_prefix=None ) + FRONTEND_CSS_URL = values.Value( + None, environ_name="FRONTEND_CSS_URL", environ_prefix=None + ) + # Posthog POSTHOG_KEY = values.DictValue( None, environ_name="POSTHOG_KEY", environ_prefix=None diff --git a/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts index dde84fdd4..ffe8ccfa8 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts @@ -9,6 +9,7 @@ const config = { CRISP_WEBSITE_ID: null, COLLABORATION_WS_URL: 'ws://localhost:4444/collaboration/ws/', ENVIRONMENT: 'development', + FRONTEND_CSS_URL: null, FRONTEND_THEME: 'default', MEDIA_BASE_URL: 'http://localhost:8083', LANGUAGES: [ From 40327d539e1810dfe23be3686174ce612042cb5f Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Wed, 26 Mar 2025 16:42:22 +0100 Subject: [PATCH 2/5] =?UTF-8?q?=E2=9C=A8(frontend)=20add=20custom=20css=20?= =?UTF-8?q?style?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit From the config, we can add custom css style to the app. --- CHANGELOG.md | 1 + .../e2e/__tests__/app-impress/config.spec.ts | 24 +++++++++++++++++++ .../src/core/config/ConfigProvider.tsx | 18 ++++++++++---- .../impress/src/core/config/api/useConfig.tsx | 1 + 4 files changed, 39 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c1f1f5ab5..4d928e5c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ and this project adheres to ## Added - 📄(legal) Require contributors to sign a DCO #779 +- ✨(frontend) add custom css style #771 ## Changed diff --git a/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts b/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts index ffe8ccfa8..6f8bfa524 100644 --- a/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts +++ b/src/frontend/apps/e2e/__tests__/app-impress/config.spec.ts @@ -174,6 +174,30 @@ test.describe('Config', () => { page.locator('#crisp-chatbox').getByText('Invalid website'), ).toBeVisible(); }); + + test('it checks FRONTEND_CSS_URL config', async ({ page }) => { + await page.route('**/api/v1.0/config/', async (route) => { + const request = route.request(); + if (request.method().includes('GET')) { + await route.fulfill({ + json: { + ...config, + FRONTEND_CSS_URL: 'http://localhost:123465/css/style.css', + }, + }); + } else { + await route.continue(); + } + }); + + await page.goto('/'); + + await expect( + page + .locator('head link[href="http://localhost:123465/css/style.css"]') + .first(), + ).toBeAttached(); + }); }); test.describe('Config: Not loggued', () => { diff --git a/src/frontend/apps/impress/src/core/config/ConfigProvider.tsx b/src/frontend/apps/impress/src/core/config/ConfigProvider.tsx index 2e1868f53..371e7c356 100644 --- a/src/frontend/apps/impress/src/core/config/ConfigProvider.tsx +++ b/src/frontend/apps/impress/src/core/config/ConfigProvider.tsx @@ -1,4 +1,5 @@ import { Loader } from '@openfun/cunningham-react'; +import Head from 'next/head'; import { PropsWithChildren, useEffect } from 'react'; import { Box } from '@/components'; @@ -54,10 +55,17 @@ export const ConfigProvider = ({ children }: PropsWithChildren) => { } return ( - - - {children} - - + <> + {conf?.FRONTEND_CSS_URL && ( + + + + )} + + + {children} + + + ); }; diff --git a/src/frontend/apps/impress/src/core/config/api/useConfig.tsx b/src/frontend/apps/impress/src/core/config/api/useConfig.tsx index 5c105c7a2..65187ce0e 100644 --- a/src/frontend/apps/impress/src/core/config/api/useConfig.tsx +++ b/src/frontend/apps/impress/src/core/config/api/useConfig.tsx @@ -11,6 +11,7 @@ interface ConfigResponse { COLLABORATION_WS_URL?: string; CRISP_WEBSITE_ID?: string; FRONTEND_THEME?: Theme; + FRONTEND_CSS_URL?: string; MEDIA_BASE_URL?: string; POSTHOG_KEY?: PostHogConf; SENTRY_DSN?: string; From 93757c1c74835c5d10d80ad2861c90cb4af61e0f Mon Sep 17 00:00:00 2001 From: Anthony LC Date: Wed, 26 Mar 2025 18:53:19 +0100 Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=92=84(frontend)=20add=20classname=20?= =?UTF-8?q?to=20components?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To be easily customized, we added a classname to most of the components. --- .../apps/impress/src/components/BoxButton.tsx | 1 + src/frontend/apps/impress/src/components/Card.tsx | 1 + .../apps/impress/src/components/DropButton.tsx | 2 ++ src/frontend/apps/impress/src/components/Icon.tsx | 1 + .../impress/src/components/InfiniteScroll.tsx | 5 ++++- .../apps/impress/src/components/LoadMoreText.tsx | 1 + .../apps/impress/src/components/TextErrors.tsx | 7 ++++++- .../components/quick-search/QuickSearchStyle.tsx | 4 ---- .../components/separators/HorizontalSeparator.tsx | 1 + .../src/features/auth/components/ButtonLogin.tsx | 9 ++++++++- .../doc-editor/components/BlockNoteEditor.tsx | 3 ++- .../components/BlockNoteToolBar/AIButton.tsx | 8 ++++---- .../BlockNoteToolBar/FileDownloadButton.tsx | 2 +- .../BlockNoteToolBar/MarkdownButton.tsx | 1 + .../ModalConfirmDownloadUnsafe.tsx | 5 ++++- .../docs/doc-editor/components/DocEditor.tsx | 15 ++++++++++++--- .../docs/doc-export/components/ModalExport.tsx | 1 + .../docs/doc-header/components/DocHeader.tsx | 1 + .../docs/doc-header/components/DocTitle.tsx | 1 + .../docs/doc-header/components/DocToolBox.tsx | 1 + .../doc-header/components/DocVersionHeader.tsx | 1 + .../doc-management/components/ModalRemoveDoc.tsx | 5 ++++- .../docs/doc-search/components/DocSearchItem.tsx | 6 +++++- .../docs/doc-search/components/DocSearchModal.tsx | 1 + .../components/DocShareAddMemberList.tsx | 1 + .../components/DocShareAddMemberListItem.tsx | 1 + .../components/DocShareInvitationItem.tsx | 1 + .../doc-share/components/DocShareMemberItem.tsx | 1 + .../docs/doc-share/components/DocShareModal.tsx | 2 +- .../doc-share/components/DocShareModalFooter.tsx | 1 + .../components/DocShareModalInviteUserByEmail.tsx | 6 +++++- .../docs/doc-share/components/DocVisibility.tsx | 1 + .../docs/doc-share/components/SearchUserRow.tsx | 7 ++++++- .../docs/doc-share/components/UserAvatar.tsx | 1 + .../docs/doc-table-content/components/Heading.tsx | 1 + .../doc-table-content/components/TableContent.tsx | 1 + .../components/ModalConfirmationVersion.tsx | 5 ++++- .../components/ModalSelectVersion.tsx | 2 +- .../doc-versioning/components/VersionItem.tsx | 1 + .../doc-versioning/components/VersionList.tsx | 5 ++++- .../docs/docs-grid/components/DocsGrid.tsx | 1 + .../docs/docs-grid/components/DocsGridItem.tsx | 1 + .../components/DocsGridItemSharedButton.tsx | 1 + .../docs/docs-grid/components/DocsGridLoader.tsx | 1 + .../docs/docs-grid/components/SimpleDocItem.tsx | 7 ++++++- .../apps/impress/src/features/footer/Footer.tsx | 7 +++++-- .../header/components/ButtonTogglePanel.tsx | 1 + .../src/features/header/components/Header.tsx | 1 + .../src/features/header/components/Title.tsx | 7 ++++++- .../src/features/home/components/HomeBanner.tsx | 1 + .../src/features/home/components/HomeBottom.tsx | 1 + .../src/features/home/components/HomeContent.tsx | 4 ++-- .../src/features/home/components/HomeHeader.tsx | 1 + .../src/features/home/components/HomeSection.tsx | 1 + .../src/features/language/LanguagePicker.tsx | 1 + .../components/LefPanelTargetFilters.tsx | 1 + .../features/left-panel/components/LeftPanel.tsx | 4 +++- .../left-panel/components/LeftPanelContent.tsx | 1 + .../left-panel/components/LeftPanelDocContent.tsx | 1 + .../components/LeftPanelFavoriteItem.tsx | 1 + .../left-panel/components/LeftPanelFavorites.tsx | 2 +- .../left-panel/components/LeftPanelHeader.tsx | 2 +- .../apps/impress/src/layouts/MainLayout.tsx | 4 ++-- .../apps/impress/src/layouts/PageLayout.tsx | 1 + 64 files changed, 137 insertions(+), 36 deletions(-) diff --git a/src/frontend/apps/impress/src/components/BoxButton.tsx b/src/frontend/apps/impress/src/components/BoxButton.tsx index c40d57411..3b8d77511 100644 --- a/src/frontend/apps/impress/src/components/BoxButton.tsx +++ b/src/frontend/apps/impress/src/components/BoxButton.tsx @@ -44,6 +44,7 @@ const BoxButton = forwardRef( ${$css || ''} `} {...props} + className={`--docs--box-button ${props.className || ''}`} onClick={(event: React.MouseEvent) => { if (props.disabled) { return; diff --git a/src/frontend/apps/impress/src/components/Card.tsx b/src/frontend/apps/impress/src/components/Card.tsx index 5e3d5ed7d..08aec9388 100644 --- a/src/frontend/apps/impress/src/components/Card.tsx +++ b/src/frontend/apps/impress/src/components/Card.tsx @@ -14,6 +14,7 @@ export const Card = ({ return ( onOpenChangeHandler(true)} aria-label={label} $css={buttonCss} + className="--docs--drop-button" > {button} @@ -79,6 +80,7 @@ export const DropButton = ({ triggerRef={triggerRef} isOpen={isLocalOpen} onOpenChange={onOpenChangeHandler} + className="--docs--drop-button-popover" > {children} diff --git a/src/frontend/apps/impress/src/components/Icon.tsx b/src/frontend/apps/impress/src/components/Icon.tsx index 224f87b6b..0b602f7b8 100644 --- a/src/frontend/apps/impress/src/components/Icon.tsx +++ b/src/frontend/apps/impress/src/components/Icon.tsx @@ -36,6 +36,7 @@ export const IconBG = ({ iconName, ...textProps }: IconBGProps) => { $padding="4px" $margin="auto" {...textProps} + className={`--docs--icon-bg ${textProps.className || ''}`} > {iconName} diff --git a/src/frontend/apps/impress/src/components/InfiniteScroll.tsx b/src/frontend/apps/impress/src/components/InfiniteScroll.tsx index 5ad4ffd04..5a0ee14b1 100644 --- a/src/frontend/apps/impress/src/components/InfiniteScroll.tsx +++ b/src/frontend/apps/impress/src/components/InfiniteScroll.tsx @@ -30,7 +30,10 @@ export const InfiniteScroll = ({ }; return ( - + {children} {!isLoading && hasMore && ( diff --git a/src/frontend/apps/impress/src/components/LoadMoreText.tsx b/src/frontend/apps/impress/src/components/LoadMoreText.tsx index 2b715b5b3..4caa811ad 100644 --- a/src/frontend/apps/impress/src/components/LoadMoreText.tsx +++ b/src/frontend/apps/impress/src/components/LoadMoreText.tsx @@ -20,6 +20,7 @@ export const LoadMoreText = ({ $align="center" $gap="0.4rem" $padding={{ horizontal: '2xs', vertical: 'sm' }} + className="--docs--load-more" > + {causes && causes.map((cause, i) => ( diff --git a/src/frontend/apps/impress/src/components/quick-search/QuickSearchStyle.tsx b/src/frontend/apps/impress/src/components/quick-search/QuickSearchStyle.tsx index 27967b2f8..b6fa0ad6a 100644 --- a/src/frontend/apps/impress/src/components/quick-search/QuickSearchStyle.tsx +++ b/src/frontend/apps/impress/src/components/quick-search/QuickSearchStyle.tsx @@ -119,8 +119,6 @@ export const QuickSearchStyle = createGlobalStyle` } } - - .c__modal__scroller:has(.quick-search-container), .c__modal__scroller:has(.noPadding) { padding: 0 !important; @@ -138,6 +136,4 @@ export const QuickSearchStyle = createGlobalStyle` margin-bottom: 0; } } - - `; diff --git a/src/frontend/apps/impress/src/components/separators/HorizontalSeparator.tsx b/src/frontend/apps/impress/src/components/separators/HorizontalSeparator.tsx index cd617985d..4b98621a9 100644 --- a/src/frontend/apps/impress/src/components/separators/HorizontalSeparator.tsx +++ b/src/frontend/apps/impress/src/components/separators/HorizontalSeparator.tsx @@ -28,6 +28,7 @@ export const HorizontalSeparator = ({ ? '#e5e5e533' : colorsTokens()['greyscale-100'] } + className="--docs--horizontal-separator" /> ); }; diff --git a/src/frontend/apps/impress/src/features/auth/components/ButtonLogin.tsx b/src/frontend/apps/impress/src/features/auth/components/ButtonLogin.tsx index c03fbcc15..e3c123da9 100644 --- a/src/frontend/apps/impress/src/features/auth/components/ButtonLogin.tsx +++ b/src/frontend/apps/impress/src/features/auth/components/ButtonLogin.tsx @@ -18,6 +18,7 @@ export const ButtonLogin = () => { onClick={() => gotoLogin()} color="primary-text" aria-label={t('Login')} + className="--docs--button-login" > {t('Login')} @@ -25,7 +26,12 @@ export const ButtonLogin = () => { } return ( - ); @@ -45,6 +51,7 @@ export const ProConnectButton = () => { } `} $radius="4px" + className="--docs--proconnect-button" > diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx index 8f104c13c..e39bbf6fe 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteEditor.tsx @@ -133,6 +133,7 @@ export const BlockNoteEditor = ({ doc, provider }: BlockNoteEditorProps) => { $padding={{ top: 'md' }} $background="white" $css={cssEditor(readOnly)} + className="--docs--editor-container" > {errorAttachment && ( @@ -192,7 +193,7 @@ export const BlockNoteEditorVersion = ({ }, [setEditor, editor]); return ( - + ); diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteToolBar/AIButton.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteToolBar/AIButton.tsx index 485f7a09b..a008372e6 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteToolBar/AIButton.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteToolBar/AIButton.tsx @@ -104,7 +104,7 @@ export function AIGroupButton() { {canAITransform && ( @@ -193,7 +193,7 @@ export function AIGroupButton() { @@ -206,7 +206,7 @@ export function AIGroupButton() { {languages.map((language) => ( M diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteToolBar/ModalConfirmDownloadUnsafe.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteToolBar/ModalConfirmDownloadUnsafe.tsx index da4d5e433..19d9fa313 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteToolBar/ModalConfirmDownloadUnsafe.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/BlockNoteToolBar/ModalConfirmDownloadUnsafe.tsx @@ -59,7 +59,10 @@ export const ModalConfirmDownloadUnsafe = ({ } > - + {t('This file is flagged as unsafe.')} diff --git a/src/frontend/apps/impress/src/features/docs/doc-editor/components/DocEditor.tsx b/src/frontend/apps/impress/src/features/docs/doc-editor/components/DocEditor.tsx index d8a3533a7..41a2467dd 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-editor/components/DocEditor.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-editor/components/DocEditor.tsx @@ -49,8 +49,16 @@ export const DocEditor = ({ doc, versionId }: DocEditorProps) => { )} - - + + {isVersion ? ( ) : ( @@ -64,6 +72,7 @@ export const DocEditor = ({ doc, versionId }: DocEditorProps) => { $width="100%" $css="overflow-x: clip; flex: 1;" $position="relative" + className="--docs--doc-editor-content" > {isVersion ? ( @@ -115,7 +124,7 @@ export const DocVersionEditor = ({ } return ( - + { $margin={{ bottom: 'xl' }} aria-label={t('Content modal to export the document')} $gap="1rem" + className="--docs--modal-export-content" > {t('Download your document in a .docx or .pdf format.')} diff --git a/src/frontend/apps/impress/src/features/docs/doc-header/components/DocHeader.tsx b/src/frontend/apps/impress/src/features/docs/doc-header/components/DocHeader.tsx index 2f58b2718..87656a790 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-header/components/DocHeader.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-header/components/DocHeader.tsx @@ -38,6 +38,7 @@ export const DocHeader = ({ doc }: DocHeaderProps) => { $padding={{ top: isDesktop ? '4xl' : 'md' }} $gap={spacings['base']} aria-label={t('It is the card information about the document.')} + className="--docs--doc-header" > {(docIsPublic || docIsAuth) && ( { { $align="center" $gap="0.5rem 1.5rem" $wrap={isSmallMobile ? 'wrap' : 'nowrap'} + className="--docs--doc-toolbox" > { $padding={{ vertical: 'base' }} $gap={spacings['base']} aria-label={t('It is the document title')} + className="--docs--doc-version-header" > diff --git a/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalRemoveDoc.tsx b/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalRemoveDoc.tsx index 38e6a2f39..c3ff4b5b7 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalRemoveDoc.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-management/components/ModalRemoveDoc.tsx @@ -84,7 +84,10 @@ export const ModalRemoveDoc = ({ onClose, doc }: ModalRemoveDocProps) => { } > - + {!isError && ( {t('Are you sure you want to delete this document ?')} diff --git a/src/frontend/apps/impress/src/features/docs/doc-search/components/DocSearchItem.tsx b/src/frontend/apps/impress/src/features/docs/doc-search/components/DocSearchItem.tsx index ea966c2e2..7d7414076 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-search/components/DocSearchItem.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-search/components/DocSearchItem.tsx @@ -11,7 +11,11 @@ type DocSearchItemProps = { export const DocSearchItem = ({ doc }: DocSearchItemProps) => { const { isDesktop } = useResponsiveStore(); return ( - + diff --git a/src/frontend/apps/impress/src/features/docs/doc-search/components/DocSearchModal.tsx b/src/frontend/apps/impress/src/features/docs/doc-search/components/DocSearchModal.tsx index 2f7db61dc..48fbbf48c 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-search/components/DocSearchModal.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-search/components/DocSearchModal.tsx @@ -71,6 +71,7 @@ export const DocSearchModal = ({ ...modalProps }: DocSearchModalProps) => { aria-label={t('Search modal')} $direction="column" $justify="space-between" + className="--docs--doc-search-modal" > { color: ${color['greyscale-1000']}; font-size: ${fontSize['xs']}; `} + className="--docs--doc-share-add-member-list-item" > {user.full_name || user.email} diff --git a/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareInvitationItem.tsx b/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareInvitationItem.tsx index 1a6151e16..6a186e432 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareInvitationItem.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareInvitationItem.tsx @@ -84,6 +84,7 @@ export const DocShareInvitationItem = ({ doc, invitation }: Props) => { { { aria-label={t('Share modal')} $height={canViewAccesses ? modalContentHeight : 'auto'} $overflow="hidden" - className="noPadding" + className="--docs--doc-share-modal noPadding " $justify="space-between" > { $css={css` flex-shrink: 0; `} + className="--docs--doc-share-modal-footer" > diff --git a/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModalInviteUserByEmail.tsx b/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModalInviteUserByEmail.tsx index 0727b92c7..35f741fae 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModalInviteUserByEmail.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-share/components/DocShareModalInviteUserByEmail.tsx @@ -12,7 +12,11 @@ type Props = { export const DocShareModalInviteUserRow = ({ user }: Props) => { const { t } = useTranslation(); return ( - + { $padding={{ horizontal: 'base' }} aria-label={t('Doc visibility card')} $gap={spacing['base']} + className="--docs--doc-visibility" > {t('Link parameters')} diff --git a/src/frontend/apps/impress/src/features/docs/doc-share/components/SearchUserRow.tsx b/src/frontend/apps/impress/src/features/docs/doc-share/components/SearchUserRow.tsx index f967a3bc9..b7c14aa61 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-share/components/SearchUserRow.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-share/components/SearchUserRow.tsx @@ -31,7 +31,12 @@ export const SearchUserRow = ({ right={right} alwaysShowRight={alwaysShowRight} left={ - + { color: rgba(255, 255, 255, 0.9); border: 1px solid rgba(255, 255, 255, 0.5); `} + className="--docs--user-avatar" > { gap: var(--c--theme--spacings--2xs); `} `} + className="--docs--table-content" > {!isHover && ( diff --git a/src/frontend/apps/impress/src/features/docs/doc-versioning/components/ModalConfirmationVersion.tsx b/src/frontend/apps/impress/src/features/docs/doc-versioning/components/ModalConfirmationVersion.tsx index 7959ed35e..b2431b5eb 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-versioning/components/ModalConfirmationVersion.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-versioning/components/ModalConfirmationVersion.tsx @@ -107,7 +107,10 @@ export const ModalConfirmationVersion = ({ } > - + {t('Your current document will revert to this version.')} diff --git a/src/frontend/apps/impress/src/features/docs/doc-versioning/components/ModalSelectVersion.tsx b/src/frontend/apps/impress/src/features/docs/doc-versioning/components/ModalSelectVersion.tsx index 92d945988..c6c5562de 100644 --- a/src/frontend/apps/impress/src/features/docs/doc-versioning/components/ModalSelectVersion.tsx +++ b/src/frontend/apps/impress/src/features/docs/doc-versioning/components/ModalSelectVersion.tsx @@ -51,7 +51,7 @@ export const ModalSelectVersion = ({ + { background-color: var(--c--theme--colors--greyscale-100); } `} + className="--docs--doc-grid-item" > { } placement="top" + className="--docs--doc-tooltip-grid-item-shared-button" >