From ed325c1b58cd831ecc5f0ae271724f9bce2e570a Mon Sep 17 00:00:00 2001 From: Antoine Dewez <44063631+Zewed@users.noreply.github.com> Date: Thu, 23 May 2024 17:26:23 +0200 Subject: [PATCH] fix(frontend): important buttons (#2613) # Description Please include a summary of the changes and the related issue. Please also include relevant motivation and context. ## Checklist before requesting a review Please delete options that are not relevant. - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my code - [ ] I have commented hard-to-understand areas - [ ] I have ideally added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged ## Screenshots (if appropriate): --- .../BrainMainInfosStep/BrainMainInfosStep.tsx | 1 + .../CreateBrainStep/CreateBrainStep.tsx | 2 + .../UploadDocumentModal.tsx | 1 + .../ui/QuivrButton/QuivrButton.module.scss | 82 ++++++++++--------- .../components/ui/QuivrButton/QuivrButton.tsx | 39 +++++++-- frontend/lib/types/QuivrButton.ts | 1 + 6 files changed, 80 insertions(+), 46 deletions(-) diff --git a/frontend/lib/components/AddBrainModal/components/BrainMainInfosStep/BrainMainInfosStep.tsx b/frontend/lib/components/AddBrainModal/components/BrainMainInfosStep/BrainMainInfosStep.tsx index 093b3443a..d78edf49f 100644 --- a/frontend/lib/components/AddBrainModal/components/BrainMainInfosStep/BrainMainInfosStep.tsx +++ b/frontend/lib/components/AddBrainModal/components/BrainMainInfosStep/BrainMainInfosStep.tsx @@ -80,6 +80,7 @@ export const BrainMainInfosStep = (): JSX.Element => { onClick={() => next()} iconName="chevronRight" disabled={isDisabled} + important={true} /> diff --git a/frontend/lib/components/AddBrainModal/components/CreateBrainStep/CreateBrainStep.tsx b/frontend/lib/components/AddBrainModal/components/CreateBrainStep/CreateBrainStep.tsx index 1bc6102f2..de0e5aaf0 100644 --- a/frontend/lib/components/AddBrainModal/components/CreateBrainStep/CreateBrainStep.tsx +++ b/frontend/lib/components/AddBrainModal/components/CreateBrainStep/CreateBrainStep.tsx @@ -134,6 +134,7 @@ export const CreateBrainStep = (): JSX.Element => { knowledgeToFeed.length === 0 && !userIdentityData?.onboarded } isLoading={creating} + important={true} /> ) : ( { iconName="add" onClick={() => setCreateBrainStepIndex(1)} isLoading={creating} + important={true} /> )} diff --git a/frontend/lib/components/UploadDocumentModal/UploadDocumentModal.tsx b/frontend/lib/components/UploadDocumentModal/UploadDocumentModal.tsx index b7fc8848a..61e5ba73c 100644 --- a/frontend/lib/components/UploadDocumentModal/UploadDocumentModal.tsx +++ b/frontend/lib/components/UploadDocumentModal/UploadDocumentModal.tsx @@ -51,6 +51,7 @@ export const UploadDocumentModal = (): JSX.Element => { onClick={handleFeedBrain} disabled={knowledgeToFeed.length === 0 || !currentBrain} isLoading={feeding} + important={true} /> diff --git a/frontend/lib/components/ui/QuivrButton/QuivrButton.module.scss b/frontend/lib/components/ui/QuivrButton/QuivrButton.module.scss index 97aa2cf85..3e93df05e 100644 --- a/frontend/lib/components/ui/QuivrButton/QuivrButton.module.scss +++ b/frontend/lib/components/ui/QuivrButton/QuivrButton.module.scss @@ -19,56 +19,60 @@ display: none; } - &.primary { - border-color: var(--primary-0); - color: var(--primary-0); - - &:hover { - background-color: var(--primary-0); - color: var(--text-0); - } - } - - &.dangerous { - border-color: var(--dangerous); - color: var(--dangerous); - - &:hover { - background-color: var(--dangerous); - color: var(--text-0); - } - } - - &.gold { - border-color: var(--gold); - color: var(--gold); - - &:hover { - background-color: var(--gold); - color: var(--text-0); - } - } - &.disabled { border-color: var(--border-2); pointer-events: none; color: var(--text-1); + background-color: var(--background-0); &.dark { opacity: 0.2; } } -} -.icon_label { - display: flex; - flex-direction: row; - gap: Spacings.$spacing02; - align-items: center; + &.primary:not(.disabled) { + border-color: var(--primary-0); + color: var(--primary-0); - @media (max-width: ScreenSizes.$small) { - .label { - display: none; + &:hover, + &.important { + background-color: var(--primary-0); + color: var(--text-0); + } + } + + &.dangerous:not(.disabled) { + border-color: var(--dangerous); + color: var(--dangerous); + + &:hover, + &.important { + background-color: var(--dangerous); + color: var(--text-0); + } + } + + &.gold:not(.disabled) { + border-color: var(--gold); + color: var(--gold); + + &:hover, + &.important { + background-color: var(--gold); + color: var(--text-0); + } + } + + .icon_label { + display: flex; + flex-direction: row; + gap: Spacings.$spacing02; + align-items: center; + + @media (max-width: ScreenSizes.$small) { + .label { + display: none; + } } } } diff --git a/frontend/lib/components/ui/QuivrButton/QuivrButton.tsx b/frontend/lib/components/ui/QuivrButton/QuivrButton.tsx index 54088b487..2db991cd0 100644 --- a/frontend/lib/components/ui/QuivrButton/QuivrButton.tsx +++ b/frontend/lib/components/ui/QuivrButton/QuivrButton.tsx @@ -16,35 +16,60 @@ export const QuivrButton = ({ iconName, disabled, hidden, + important, }: ButtonType): JSX.Element => { const [hovered, setHovered] = useState(false); const { isDarkMode } = useUserSettingsContext(); + const handleClick = () => { + if (onClick) { + void onClick(); + } + }; + + const handleMouseEnter = () => { + setHovered(true); + }; + + const handleMouseLeave = () => { + setHovered(false); + }; + + const getIconColor = () => { + if (hovered || (important && !disabled)) { + return "white"; + } else if (disabled) { + return "grey"; + } else { + return color; + } + }; + return (
onClick?.()} - onMouseEnter={() => setHovered(true)} - onMouseLeave={() => setHovered(false)} + onClick={handleClick} + onMouseEnter={handleMouseEnter} + onMouseLeave={handleMouseLeave} >
{!isLoading ? ( ) : ( )} diff --git a/frontend/lib/types/QuivrButton.ts b/frontend/lib/types/QuivrButton.ts index 131a22e4f..7180e080c 100644 --- a/frontend/lib/types/QuivrButton.ts +++ b/frontend/lib/types/QuivrButton.ts @@ -10,4 +10,5 @@ export interface ButtonType { onClick?: () => void | Promise; disabled?: boolean; hidden?: boolean; + important?: boolean; }