From 0a0762b1cf338affd0565184ce1e28fb70470eda Mon Sep 17 00:00:00 2001 From: Anderson Shindy Oki Date: Sun, 9 Jun 2024 10:36:42 +0900 Subject: [PATCH] Fixed minor style and colors broken on Mantine v7 update * Fixed action icon styles * small fixes * fix brand color * more small fixes * fix disabled color for dark * feat: customize highlight and warning badge * chore: Remove hardcoded variables * feat: add text wrap pretty to pop over * fix: pagination position * chore: small adjustments --- frontend/src/App/Header.tsx | 2 +- frontend/src/App/ThemeProvider.tsx | 5 +++ frontend/src/assets/_bazarr.scss | 36 ++++++++++++++++ frontend/src/assets/action_icon.module.scss | 11 +++++ frontend/src/assets/app_shell.module.scss | 8 ++-- frontend/src/assets/badge.module.scss | 42 ++++++++++++++++--- frontend/src/assets/button.module.scss | 6 +++ frontend/src/assets/pagination.module.scss | 3 ++ frontend/src/components/TextPopover.tsx | 7 +++- .../src/components/tables/PageControl.tsx | 3 +- .../components/toolbox/Toolbox.module.scss | 4 +- frontend/src/components/toolbox/Toolbox.tsx | 2 +- frontend/src/pages/Episodes/components.tsx | 10 ++--- frontend/src/pages/Episodes/table.tsx | 4 +- frontend/src/pages/Movies/Details/index.tsx | 1 - frontend/src/pages/Movies/Details/table.tsx | 2 +- frontend/src/pages/views/ItemOverview.tsx | 2 +- 17 files changed, 124 insertions(+), 24 deletions(-) create mode 100644 frontend/src/assets/pagination.module.scss diff --git a/frontend/src/App/Header.tsx b/frontend/src/App/Header.tsx index 9919da9d6..cfc3f3319 100644 --- a/frontend/src/App/Header.tsx +++ b/frontend/src/App/Header.tsx @@ -52,7 +52,7 @@ const AppHeader: FunctionComponent = () => { size="sm" hiddenFrom="sm" > - + Bazarr diff --git a/frontend/src/App/ThemeProvider.tsx b/frontend/src/App/ThemeProvider.tsx index c67046ce9..224791843 100644 --- a/frontend/src/App/ThemeProvider.tsx +++ b/frontend/src/App/ThemeProvider.tsx @@ -6,6 +6,7 @@ import { Button, createTheme, MantineProvider, + Pagination, } from "@mantine/core"; import ThemeLoader from "@/App/ThemeLoader"; import "@mantine/core/styles.layer.css"; @@ -15,6 +16,7 @@ import actionIconClasses from "@/assets/action_icon.module.scss"; import appShellClasses from "@/assets/app_shell.module.scss"; import badgeClasses from "@/assets/badge.module.scss"; import buttonClasses from "@/assets/button.module.scss"; +import paginationClasses from "@/assets/pagination.module.scss"; const themeProvider = createTheme({ fontFamily: "Roboto, open sans, Helvetica Neue, Helvetica, Arial, sans-serif", @@ -46,6 +48,9 @@ const themeProvider = createTheme({ Button: Button.extend({ classNames: buttonClasses, }), + Pagination: Pagination.extend({ + classNames: paginationClasses, + }), }, }); diff --git a/frontend/src/assets/_bazarr.scss b/frontend/src/assets/_bazarr.scss index 6c23aac1a..a2476ed12 100644 --- a/frontend/src/assets/_bazarr.scss +++ b/frontend/src/assets/_bazarr.scss @@ -9,6 +9,42 @@ $color-brand-7: #ae3ec9; $color-brand-8: #9c36b5; $color-brand-9: #862e9c; +// Based on Mantine Cyan +$color-highlight-0: #e3fafc; +$color-highlight-1: #c5f6fa; +$color-highlight-2: #99e9f2; +$color-highlight-3: #66d9e8; +$color-highlight-4: #3bc9db; +$color-highlight-5: #22b8cf; +$color-highlight-6: #15aabf; +$color-highlight-7: #1098ad; +$color-highlight-8: #0c8599; +$color-highlight-9: #0b7285; + +// Based on Mantine Yellow +$color-warning-0: #fff9db; +$color-warning-1: #fff3bf; +$color-warning-2: #ffec99; +$color-warning-3: #ffe066; +$color-warning-4: #ffd43b; +$color-warning-5: #fcc419; +$color-warning-6: #fab005; +$color-warning-7: #f59f00; +$color-warning-8: #f08c00; +$color-warning-9: #e67700; + +// Based on Mantine Gray +$color-disabled-0: #f8f9fa; +$color-disabled-1: #f1f3f5; +$color-disabled-2: #e9ecef; +$color-disabled-3: #dee2e6; +$color-disabled-4: #ced4da; +$color-disabled-5: #adb5bd; +$color-disabled-6: #868e96; +$color-disabled-7: #495057; +$color-disabled-8: #343a40; +$color-disabled-9: #212529; + $header-height: 64px; :global { diff --git a/frontend/src/assets/action_icon.module.scss b/frontend/src/assets/action_icon.module.scss index c4bf2eefa..3bdf0c417 100644 --- a/frontend/src/assets/action_icon.module.scss +++ b/frontend/src/assets/action_icon.module.scss @@ -1,14 +1,25 @@ @layer mantine { .root { + background-color: transparent; + &[data-variant="light"] { color: var(--mantine-color-dark-0); } + &[data-variant="dark"] { + --ai-bg: transparent; + --ai-hover: darken(var(--mantine-color-grape-light), 0.2); + } + @include light { &[data-variant="light"] { background-color: var(--mantine-color-gray-1); color: var(--mantine-color-dark-2); } + + &[data-variant="dark"] { + --ai-color: var(--mantine-color-dark-filled); + } } } } diff --git a/frontend/src/assets/app_shell.module.scss b/frontend/src/assets/app_shell.module.scss index b027c771a..49c3f1947 100644 --- a/frontend/src/assets/app_shell.module.scss +++ b/frontend/src/assets/app_shell.module.scss @@ -1,5 +1,7 @@ -.main { - @include dark { - background-color: rgb(26, 27, 30); +@layer mantine { + .main { + @include dark { + background-color: var(--mantine-color-dark-8); + } } } diff --git a/frontend/src/assets/badge.module.scss b/frontend/src/assets/badge.module.scss index 830da2927..a570ecc45 100644 --- a/frontend/src/assets/badge.module.scss +++ b/frontend/src/assets/badge.module.scss @@ -1,8 +1,40 @@ -.root { - background-color: var(--mantine-color-grape-light); +@layer mantine { + .root { + background-color: transparentize($color-brand-6, 0.8); - @include light { - color: var(--mantine-color-dark-filled); - background-color: var(--mantine-color-grape-light); + &[data-variant="warning"] { + color: lighten($color-warning-2, 1); + background-color: transparentize($color-warning-6, 0.8); + } + + &[data-variant="highlight"] { + color: lighten($color-highlight-2, 1); + background-color: transparentize($color-highlight-5, 0.8); + } + + &[data-variant="disabled"] { + color: lighten($color-disabled-0, 1); + background-color: transparentize($color-disabled-7, 0.8); + } + + @include light { + color: $color-brand-6; + background-color: transparentize($color-brand-3, 0.8); + + &[data-variant="warning"] { + color: darken($color-warning-7, 1); + background-color: transparentize($color-warning-6, 0.8); + } + + &[data-variant="disabled"] { + color: darken($color-disabled-6, 1); + background-color: transparentize($color-disabled-4, 0.8); + } + + &[data-variant="highlight"] { + color: darken($color-highlight-6, 1); + background-color: transparentize($color-highlight-5, 0.8); + } + } } } diff --git a/frontend/src/assets/button.module.scss b/frontend/src/assets/button.module.scss index 4ef306883..0c466a4c4 100644 --- a/frontend/src/assets/button.module.scss +++ b/frontend/src/assets/button.module.scss @@ -9,4 +9,10 @@ color: var(--mantine-color-red-0); } } + + .root:disabled { + @include dark { + color: var(--mantine-color-dark-9); + } + } } diff --git a/frontend/src/assets/pagination.module.scss b/frontend/src/assets/pagination.module.scss new file mode 100644 index 000000000..2b66d7510 --- /dev/null +++ b/frontend/src/assets/pagination.module.scss @@ -0,0 +1,3 @@ +.control { + --pagination-active-bg: var(--mantine-color-brand-filled); +} diff --git a/frontend/src/components/TextPopover.tsx b/frontend/src/components/TextPopover.tsx index b72654109..974c0d0c0 100644 --- a/frontend/src/components/TextPopover.tsx +++ b/frontend/src/components/TextPopover.tsx @@ -21,7 +21,12 @@ const TextPopover: FunctionComponent = ({ } return ( - +
{children}
); diff --git a/frontend/src/components/tables/PageControl.tsx b/frontend/src/components/tables/PageControl.tsx index 8b7fd938f..bcdf290e3 100644 --- a/frontend/src/components/tables/PageControl.tsx +++ b/frontend/src/components/tables/PageControl.tsx @@ -1,6 +1,7 @@ import { FunctionComponent, useEffect } from "react"; import { Group, Pagination, Text } from "@mantine/core"; import { useIsLoading } from "@/contexts"; + interface Props { count: number; index: number; @@ -28,7 +29,7 @@ const PageControl: FunctionComponent = ({ }, [total, goto]); return ( - + Show {start} to {end} of {total} entries diff --git a/frontend/src/components/toolbox/Toolbox.module.scss b/frontend/src/components/toolbox/Toolbox.module.scss index 76d90ae47..10529fd27 100644 --- a/frontend/src/components/toolbox/Toolbox.module.scss +++ b/frontend/src/components/toolbox/Toolbox.module.scss @@ -1,9 +1,9 @@ .group { @include light { - color: var(--mantine-color-gray-3); + background-color: var(--mantine-color-gray-3); } @include dark { - color: var(--mantine-color-dark-5); + background-color: var(--mantine-color-dark-5); } } diff --git a/frontend/src/components/toolbox/Toolbox.tsx b/frontend/src/components/toolbox/Toolbox.tsx index 8e600acda..f67ac60b1 100644 --- a/frontend/src/components/toolbox/Toolbox.tsx +++ b/frontend/src/components/toolbox/Toolbox.tsx @@ -10,7 +10,7 @@ declare type ToolboxComp = FunctionComponent & { const Toolbox: ToolboxComp = ({ children }) => { return ( - + {children} ); diff --git a/frontend/src/pages/Episodes/components.tsx b/frontend/src/pages/Episodes/components.tsx index 29ce2e0fa..98bf15ecd 100644 --- a/frontend/src/pages/Episodes/components.tsx +++ b/frontend/src/pages/Episodes/components.tsx @@ -24,13 +24,13 @@ export const Subtitle: FunctionComponent = ({ const disabled = subtitle.path === null; - const color: MantineColor | undefined = useMemo(() => { + const variant: MantineColor | undefined = useMemo(() => { if (opened && !disabled) { - return "cyan"; + return "highlight"; } else if (missing) { - return "yellow"; + return "warning"; } else if (disabled) { - return "gray"; + return "disabled"; } }, [disabled, missing, opened]); @@ -50,7 +50,7 @@ export const Subtitle: FunctionComponent = ({ }, [episodeId, subtitle.code2, subtitle.path]); const ctx = ( - + ); diff --git a/frontend/src/pages/Episodes/table.tsx b/frontend/src/pages/Episodes/table.tsx index d7eb0a0e1..c68e7b7fc 100644 --- a/frontend/src/pages/Episodes/table.tsx +++ b/frontend/src/pages/Episodes/table.tsx @@ -169,7 +169,7 @@ const Table: FunctionComponent = ({ { modals.openContextModal(EpisodeSearchModal, { item: row.original, @@ -182,7 +182,7 @@ const Table: FunctionComponent = ({ { modals.openContextModal( EpisodeHistoryModal, diff --git a/frontend/src/pages/Movies/Details/index.tsx b/frontend/src/pages/Movies/Details/index.tsx index 1c971d641..709f03905 100644 --- a/frontend/src/pages/Movies/Details/index.tsx +++ b/frontend/src/pages/Movies/Details/index.tsx @@ -198,7 +198,6 @@ const MovieDetailView: FunctionComponent = () => { diff --git a/frontend/src/pages/Movies/Details/table.tsx b/frontend/src/pages/Movies/Details/table.tsx index 61a5c14c9..0a1b4e722 100644 --- a/frontend/src/pages/Movies/Details/table.tsx +++ b/frontend/src/pages/Movies/Details/table.tsx @@ -161,7 +161,7 @@ const Table: FunctionComponent = ({ movie, profile, disabled }) => { diff --git a/frontend/src/pages/views/ItemOverview.tsx b/frontend/src/pages/views/ItemOverview.tsx index e89100f2e..4877e24e4 100644 --- a/frontend/src/pages/views/ItemOverview.tsx +++ b/frontend/src/pages/views/ItemOverview.tsx @@ -132,7 +132,7 @@ const ItemOverview: FunctionComponent = (props) => { flexWrap: "nowrap", }} > - +