From d9a716a46febae24a75d78ec08368a5c449cb1ea Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Mon, 4 Aug 2025 12:25:27 +0200 Subject: [PATCH] wip darkmode --- .../server/src/modules/App/App.controller.ts | 3 +- .../modules/CreditNotes/models/CreditNote.ts | 3 +- packages/webapp/public/index.html | 4 +- .../AdvancedFilterCompatatorField.tsx | 8 +- .../AdvancedFilter/AdvancedFilterDropdown.tsx | 111 ++-- .../webapp/src/components/Alert/index.tsx | 21 +- .../AppContentShell.module.scss | 2 +- .../src/components/Aside/Aside.module.scss | 6 +- .../webapp/src/components/Aside/Aside.tsx | 5 +- .../src/components/BankAccounts/index.tsx | 21 +- .../src/components/Button/ButtonLink.tsx | 2 +- packages/webapp/src/components/Card/index.tsx | 9 +- .../src/components/CommercialDoc/index.tsx | 6 +- .../components/ContentTabs/ContentTabs.tsx | 15 +- .../Dashboard/BigcapitalLoading.tsx | 15 +- .../components/Dashboard/GlobalHotkeys.tsx | 14 + .../Datatable/DatatableEditable.tsx | 43 +- .../Drawer/DrawerActionBar.module.scss | 22 + .../components/Drawer/DrawerActionsBar.tsx | 13 +- .../components/Drawer/DrawerHeaderContent.tsx | 5 +- .../src/components/Drawer/DrawerMainTabs.tsx | 22 +- .../src/components/DrawersContainer.tsx | 1 - .../components/Dropzone/Dropzone.module.css | 13 +- .../src/components/Dropzone/Dropzone.tsx | 12 +- .../FinancialSheet/StyledFinancialSheet.tsx | 13 +- .../src/components/Forms/BlueprintFormik.tsx | 2 + .../webapp/src/components/Forms/Select.tsx | 16 +- .../src/components/Icons/BigcapitalAlt.tsx | 23 + .../NumberFormatFields.tsx | 164 ++---- .../src/components/PageForm/FormTopbar.tsx | 15 +- .../src/components/PageForm/PageForm.tsx | 10 +- .../src/components/Paper/Paper.module.scss | 14 + .../webapp/src/components/Paper/Paper.tsx | 6 +- .../webapp/src/components/Stepper/Stepper.tsx | 6 +- .../src/components/Stepper/StepperStep.tsx | 14 +- .../TagsControl/TagsControl.module.scss | 7 +- .../src/components/TotalLines/index.tsx | 28 +- .../MakeJournalEntriesHeaderFields.tsx | 50 +- .../MakeJournalFormFooterRight.tsx | 5 +- .../UploadAttachmentButton.module.scss | 7 +- .../Authentication/Authentication.tsx | 10 +- .../containers/Authentication/_components.tsx | 19 +- .../BrandingTemplatesActionsBar.tsx | 6 +- .../AccountTransactionsDataTable.tsx | 2 +- .../AccountTransactionsDetailsBar.tsx | 9 +- .../AccountsTransactionsAll.tsx | 4 +- .../AccountTransactionsCard.tsx | 4 +- .../TagButton.module.scss | 23 +- .../BankAccountDataTable.module.scss | 4 +- .../CategorizeTransactionFormFooter.tsx | 2 +- .../CategorizeTransactionAside.module.scss | 16 +- .../CategorizeTransactionTabs.module.scss | 4 +- .../MatchTransactionCheckbox.module.scss | 52 +- ...tchingReconcileTransactionForm.module.scss | 2 +- .../Dashboard/Sidebar/SidebarMenu.tsx | 11 +- .../InviteUserFormContent.tsx | 46 +- .../AccountDrawer/AccountDrawerActionBar.tsx | 6 +- .../CustomerDetailsActionsBar.tsx | 5 +- .../InvoiceGLEntriesTable.tsx | 4 +- .../ItemDetailDrawer/ItemDetailActionsBar.tsx | 6 +- .../PaymentMadeDetailActionsBar.tsx | 7 +- .../VendorDetailsActionsBar.tsx | 6 +- .../ElementCustomize.module.scss | 4 +- .../ElementCustomizeHeader.module.scss | 6 +- .../ElementCustomizeHeader.tsx | 5 +- .../ElementCustomizePreview.tsx | 6 +- .../ElementCustomizePreviewContent.tsx | 7 +- .../ElementCustomizeTabs.module.scss | 2 +- .../components/CompanyLogoUpload.module.scss | 12 +- .../ExpenseForm/ExpenseFormFooterRight.tsx | 10 +- .../ExpenseForm/ExpenseFormHeaderFields.tsx | 50 +- .../APAgingSummary/APAgingSummaryTable.tsx | 14 +- .../ARAgingSummary/ARAgingSummaryTable.tsx | 15 +- .../BalanceSheet/BalanceSheetTable.tsx | 20 +- .../CashFlowStatementTable.tsx | 19 +- .../CustomersBalanceSummaryTable.tsx | 25 +- .../CustomersTransactionsTable.tsx | 15 +- .../FinancialReportPage.tsx | 2 +- .../FinancialStatementsFilter.tsx | 49 +- .../GeneralLedger/GeneralLedgerTable.tsx | 16 +- .../InventoryItemDetailsTable.tsx | 20 +- .../Journal/JournalTable.tsx | 13 +- .../ProfitLossSheet/ProfitLossSheetTable.tsx | 15 +- .../PurchasesByItemsTable.tsx | 19 +- .../SalesByItems/SalesByItemsTable.tsx | 20 +- .../SelectDisplayColumnsBy.tsx | 49 +- .../TrialBalanceSheetTable.tsx | 16 +- .../VendorsBalanceSummaryTable.tsx | 25 +- .../VendorsTransactionsTable.tsx | 18 +- .../Import/ImportDropzone.module.css | 17 +- .../src/containers/Import/ImportDropzone.tsx | 2 +- .../Import/ImportFileFooterActions.tsx | 2 +- .../Import/ImportSampleDownload.module.scss | 28 +- .../Import/ImportStepper.module.scss | 5 +- .../ItemsCategories/ItemCategoriesImport.tsx | 2 +- .../PaymentMethods/PaymentMethodSelect.tsx | 2 +- .../PreferencesBrandingFormContent.tsx | 10 +- .../PreferencesCreditNotesForm.tsx | 5 +- .../Estimates/PreferencesEstimatesForm.tsx | 5 +- .../Preferences/General/GeneralForm.tsx | 5 +- .../Invoices/PreferencesInvoicesForm.tsx | 5 +- .../PaymentMethods/StripePaymentMethod.tsx | 7 +- .../StripePreSetupDialogContent.tsx | 2 +- .../Preferences/PreferencesPageLoader.tsx | 7 +- .../Receipts/PreferencesReceiptsForm.tsx | 5 +- .../Bills/BillForm/BillFormFooterRight.tsx | 5 +- .../VendorCreditNoteFormFooterRight.tsx | 5 +- .../PaymentMadeFormFooterRight.tsx | 5 +- .../CreditNoteFormFooterRight.tsx | 5 +- .../CreditNoteForm/CreditNoteFormHeader.tsx | 15 +- .../Estimates/EstimateForm/EstimateForm.tsx | 24 +- .../EstimateForm/EstimateFormFooterRight.tsx | 5 +- .../EstimateForm/EstimateFormHeader.tsx | 15 +- .../EstimateSnedMailFields.tsx | 6 +- .../SendMailViewDrawer/SendMailViewHeader.tsx | 15 +- .../SendMailViewDrawer/SendMailViewLayout.tsx | 16 +- .../SendMailViewMessageField.tsx | 4 +- .../SendMailViewPreviewHeader.tsx | 8 +- .../SendMailViewPreviewTabs.tsx | 15 +- .../CompanyLogoUpload.module.scss | 4 +- .../InvoiceCustomizeGeneralFields.module.scss | 17 +- .../InvoiceCustomizeGeneralFields.tsx | 14 +- .../InvoiceCustomize/InvoiceCustomizeTabs.tsx | 8 +- .../InvoiceCustomize/Overlay.module.scss | 10 +- .../InvoiceForm/AdjustmentTotalLine.tsx | 17 +- .../InvoiceForm/DiscountTotalLine.tsx | 19 +- .../InvoiceForm/InvoiceFloatingActions.tsx | 4 +- .../InvoiceForm/InvoiceFormFooterRight.tsx | 5 +- .../InvoiceForm/InvoiceFormHeader.module.scss | 10 + .../InvoiceForm/InvoiceFormHeader.tsx | 4 +- .../InvoiceSendMailFields.tsx | 6 +- .../InvoiceSendMailHeaderPreview.tsx | 10 +- .../PaymentReceiveFormFootetRight.tsx | 5 +- .../PaymentReceiveFormHeader.tsx | 15 +- .../PaymentReceivePaymentNoField.tsx | 135 +++-- .../PaymentReceivedMailFields.tsx | 6 +- .../ReceiptForm/ReceiptFormFooterRight.tsx | 5 +- .../ReceiptForm/ReceiptFormHeader.tsx | 15 +- .../ReceiptSendMailFormFields.tsx | 6 +- .../TransactionsLockingHeader.tsx | 2 +- .../TransactionsLocking/components.tsx | 10 +- packages/webapp/src/hooks/useDarkMode.ts | 3 + packages/webapp/src/icons/More.tsx | 6 +- packages/webapp/src/icons/StripeLogo.tsx | 2 +- packages/webapp/src/style/App.scss | 4 +- packages/webapp/src/style/_variables.scss | 473 +++++++++++++++++- .../src/style/components/BigAmount.scss | 10 +- .../style/components/BigcapitalLoading.scss | 2 +- .../style/components/DataTable/DataTable.scss | 71 +-- .../DataTableEmptyStatus.module.scss | 4 +- .../webapp/src/style/components/Details.scss | 4 +- .../webapp/src/style/components/Drawer.scss | 79 +-- .../style/components/Drawers/ItemDrawer.scss | 5 +- .../style/components/MaterialProgressBar.scss | 2 +- .../webapp/src/style/components/Menu.scss | 4 +- .../webapp/src/style/components/Overlay.scss | 2 +- .../webapp/src/style/components/PageForm.scss | 27 +- .../src/style/components/SidebarOverlay.scss | 18 +- .../src/style/components/UniversalSearch.scss | 20 +- .../style/containers/Dashboard/Sidebar.scss | 21 +- .../FinancialStatements/DrawerHeader.scss | 30 +- .../webapp/src/style/objects/buttons.scss | 5 +- packages/webapp/src/style/objects/form.scss | 28 +- .../src/style/pages/Dashboard/Dashboard.scss | 103 ++-- .../FinancialStatements/FinancialSheets.scss | 10 +- .../style/pages/Preferences/GeneralForm.scss | 3 +- .../src/style/pages/Preferences/Page.scss | 2 +- .../src/style/pages/Preferences/Sidebar.scss | 21 +- .../src/style/pages/Preferences/Topbar.scss | 6 +- .../src/style/views/filter-dropdown.scss | 4 +- 170 files changed, 2006 insertions(+), 1018 deletions(-) create mode 100644 packages/webapp/src/components/Drawer/DrawerActionBar.module.scss create mode 100644 packages/webapp/src/components/Icons/BigcapitalAlt.tsx create mode 100644 packages/webapp/src/components/Paper/Paper.module.scss create mode 100644 packages/webapp/src/containers/Sales/Invoices/InvoiceForm/InvoiceFormHeader.module.scss create mode 100644 packages/webapp/src/hooks/useDarkMode.ts diff --git a/packages/server/src/modules/App/App.controller.ts b/packages/server/src/modules/App/App.controller.ts index 27fd20110..24fa19368 100644 --- a/packages/server/src/modules/App/App.controller.ts +++ b/packages/server/src/modules/App/App.controller.ts @@ -1,5 +1,4 @@ -import { Controller, Get } from '@nestjs/common'; -import { AppService } from './App.service'; +import { Controller } from '@nestjs/common'; @Controller() export class AppController {} diff --git a/packages/server/src/modules/CreditNotes/models/CreditNote.ts b/packages/server/src/modules/CreditNotes/models/CreditNote.ts index 15ad3a78a..cf969a5b1 100644 --- a/packages/server/src/modules/CreditNotes/models/CreditNote.ts +++ b/packages/server/src/modules/CreditNotes/models/CreditNote.ts @@ -1,5 +1,5 @@ +import { Model, raw } from 'objection'; import { DiscountType } from '@/common/types/Discount'; -import { BaseModel } from '@/models/Model'; import { Branch } from '@/modules/Branches/models/Branch.model'; import { Customer } from '@/modules/Customers/models/Customer'; import { ExportableModel } from '@/modules/Export/decorators/ExportableModel.decorator'; @@ -8,7 +8,6 @@ import { TenantBaseModel } from '@/modules/System/models/TenantBaseModel'; import { InjectModelMeta } from '@/modules/Tenancy/TenancyModels/decorators/InjectModelMeta.decorator'; import { ItemEntry } from '@/modules/TransactionItemEntry/models/ItemEntry'; import { Warehouse } from '@/modules/Warehouses/models/Warehouse.model'; -import { mixin, Model, raw } from 'objection'; import { CreditNoteMeta } from './CreditNote.meta'; import { InjectModelDefaultViews } from '@/modules/Views/decorators/InjectModelDefaultViews.decorator'; import { CreditNoteDefaultViews } from '../constants'; diff --git a/packages/webapp/public/index.html b/packages/webapp/public/index.html index 1af330a07..e177a81a6 100644 --- a/packages/webapp/public/index.html +++ b/packages/webapp/public/index.html @@ -1,4 +1,4 @@ - + @@ -31,7 +31,7 @@ --> Bigcapital - +
diff --git a/packages/webapp/src/components/AdvancedFilter/AdvancedFilterCompatatorField.tsx b/packages/webapp/src/components/AdvancedFilter/AdvancedFilterCompatatorField.tsx index 7f15db95f..4ea11e8e5 100644 --- a/packages/webapp/src/components/AdvancedFilter/AdvancedFilterCompatatorField.tsx +++ b/packages/webapp/src/components/AdvancedFilter/AdvancedFilterCompatatorField.tsx @@ -1,7 +1,7 @@ // @ts-nocheck import React from 'react'; import { Classes } from '@blueprintjs/core'; -import { ListSelect } from '../Select'; +import { FSelect } from '../Forms'; import { getConditionTypeCompatators } from './utils'; export default function DynamicFilterCompatatorField({ @@ -11,9 +11,9 @@ export default function DynamicFilterCompatatorField({ const options = getConditionTypeCompatators(dataType); return ( - - {({ form, field }) => ( - - - - - + + + + + - - { - form.setFieldValue(conditionFieldPath, option.value); - }} - popoverProps={{ - inline: true, - minimal: true, - captureDismiss: true, - }} - itemRenderer={ConditionItemRenderer} - /> - - - - )} - + + + + + ); } @@ -103,20 +96,18 @@ function FilterCompatatorFilter() { const fieldType = get(fieldMeta, 'fieldType'); return ( - - {({ form, field }) => ( - - { - form.setFieldValue(comparatorFieldPath, option.value); - }} - /> - - )} - + + + ); } @@ -169,11 +160,11 @@ function FilterFieldsField() { return ( {({ field, form }) => ( - - + { @@ -188,7 +179,7 @@ function FilterFieldsField() { captureDismiss: true, }} /> - + )} ); @@ -219,7 +210,7 @@ function FilterValueField() { shouldUpdate={shouldFilterValueFieldUpdate} > {({ form: { setFieldValue }, field }) => ( - + - + )} ); diff --git a/packages/webapp/src/components/Alert/index.tsx b/packages/webapp/src/components/Alert/index.tsx index 0bde33523..f63efb99d 100644 --- a/packages/webapp/src/components/Alert/index.tsx +++ b/packages/webapp/src/components/Alert/index.tsx @@ -15,6 +15,7 @@ export function Alert({ title, description, children, intent, className }) { const AlertRoot = styled.div` border: 1px solid rgb(223, 227, 230); + background: var(--color-alert-default-background); padding: 12px; border-radius: 6px; margin-bottom: 20px; @@ -22,40 +23,40 @@ const AlertRoot = styled.div` ${(props) => props.intent === 'danger' && ` - border-color: rgb(249, 198, 198); - background: rgb(255, 248, 248); + border-color: var(--color-alert-danger-border); + background: var(--color-alert-danger-background); ${AlertDesc} { - color: #d95759; + color: var(--color-alert-danger-description-text); } ${AlertTitle} { - color: rgb(205, 43, 49); + color: var(--color-alert-danger-title-text); } `} ${(props) => props.intent === 'primary' && ` - background: #fff; - border-color: #98a8ee; + background: var(--color-alert-primary-background); + border-color: var(--color-alert-primary-border); ${AlertTitle} { - color: #1a3bd4; + color: var(--color-alert-primary-title-text); } ${AlertDesc} { - color: #455883; + color: var(--color-alert-primary-description-text); } `} `; export const AlertTitle = styled.h3` - color: rgb(17, 24, 28); + color: var(--color-alert-default-title-text); margin-bottom: 4px; font-size: 14px; font-weight: 600; `; export const AlertDesc = styled.p` - color: rgb(104, 112, 118); + color: var(--color-alert-default-description-text); margin: 0; `; diff --git a/packages/webapp/src/components/AppShell/AppContentShell/AppContentShell.module.scss b/packages/webapp/src/components/AppShell/AppContentShell/AppContentShell.module.scss index 7d3364303..7f8960ace 100644 --- a/packages/webapp/src/components/AppShell/AppContentShell/AppContentShell.module.scss +++ b/packages/webapp/src/components/AppShell/AppContentShell/AppContentShell.module.scss @@ -14,7 +14,7 @@ width: var(--aside-width); min-width: var(--aside-min-width); height: 100dvh; - border-left: 1px solid rgba(17, 20, 24, 0.15); + border-left: 1px solid var(--color-app-shell-divider); height: inherit; overflow: auto; display: flex; diff --git a/packages/webapp/src/components/Aside/Aside.module.scss b/packages/webapp/src/components/Aside/Aside.module.scss index 73ee0e299..ffeceb60a 100644 --- a/packages/webapp/src/components/Aside/Aside.module.scss +++ b/packages/webapp/src/components/Aside/Aside.module.scss @@ -6,8 +6,8 @@ .title{ align-items: center; - background: #fff; - border-bottom: 1px solid #E1E2E9; + background: var(--color-aside-background); + border-bottom: 1px solid var(--color-aside-divider); display: flex; flex: 0 0 auto; min-height: 40px; @@ -20,6 +20,6 @@ display: flex; flex-direction: column; flex: 1 1 auto; - background-color: #fff; + background-color: var(--color-aside-title-background); overflow-y: auto; } \ No newline at end of file diff --git a/packages/webapp/src/components/Aside/Aside.tsx b/packages/webapp/src/components/Aside/Aside.tsx index a9f8e25e9..20ebc24f6 100644 --- a/packages/webapp/src/components/Aside/Aside.tsx +++ b/packages/webapp/src/components/Aside/Aside.tsx @@ -28,7 +28,6 @@ export function Aside({ {title} - {hideCloseButton !== true && ( diff --git a/packages/webapp/src/containers/Preferences/CreditNotes/PreferencesCreditNotesForm.tsx b/packages/webapp/src/containers/Preferences/CreditNotes/PreferencesCreditNotesForm.tsx index 649ffa557..315d4ab9d 100644 --- a/packages/webapp/src/containers/Preferences/CreditNotes/PreferencesCreditNotesForm.tsx +++ b/packages/webapp/src/containers/Preferences/CreditNotes/PreferencesCreditNotesForm.tsx @@ -60,8 +60,11 @@ export function PreferencesCreditNotesForm({ isSubmitting }) { } const CardFooterActions = styled.div` + --x-color-border: #e0e7ea; + --x-color-border: rgba(255, 255, 255, 0.25); + padding-top: 16px; - border-top: 1px solid #e0e7ea; + border-top: 1px solid var(--x-color-border); margin-top: 30px; .bp4-button { diff --git a/packages/webapp/src/containers/Preferences/Estimates/PreferencesEstimatesForm.tsx b/packages/webapp/src/containers/Preferences/Estimates/PreferencesEstimatesForm.tsx index 7e17acc10..678627ddf 100644 --- a/packages/webapp/src/containers/Preferences/Estimates/PreferencesEstimatesForm.tsx +++ b/packages/webapp/src/containers/Preferences/Estimates/PreferencesEstimatesForm.tsx @@ -60,8 +60,11 @@ export function PreferencesEstimatesForm({ isSubmitting }) { } const CardFooterActions = styled.div` + --x-color-border: #e0e7ea; + --x-color-border: rgba(255, 255, 255, 0.25); + padding-top: 16px; - border-top: 1px solid #e0e7ea; + border-top: 1px solid var(--x-color-border); margin-top: 30px; .bp4-button { diff --git a/packages/webapp/src/containers/Preferences/General/GeneralForm.tsx b/packages/webapp/src/containers/Preferences/General/GeneralForm.tsx index a1949d5f0..3f8cee7c2 100644 --- a/packages/webapp/src/containers/Preferences/General/GeneralForm.tsx +++ b/packages/webapp/src/containers/Preferences/General/GeneralForm.tsx @@ -271,8 +271,11 @@ export default function PreferencesGeneralForm({ isSubmitting }) { } const CardFooterActions = styled.div` + --x-color-border: #e0e7ea; + --x-color-border: rgba(255, 255, 255, 0.15); + padding-top: 16px; - border-top: 1px solid #e0e7ea; + border-top: 1px solid var(--x-color-border); margin-top: 30px; .bp4-button { diff --git a/packages/webapp/src/containers/Preferences/Invoices/PreferencesInvoicesForm.tsx b/packages/webapp/src/containers/Preferences/Invoices/PreferencesInvoicesForm.tsx index 9237c58e8..c4e861e91 100644 --- a/packages/webapp/src/containers/Preferences/Invoices/PreferencesInvoicesForm.tsx +++ b/packages/webapp/src/containers/Preferences/Invoices/PreferencesInvoicesForm.tsx @@ -60,8 +60,11 @@ export function PreferencesInvoicesForm({ isSubmitting }) { } const CardFooterActions = styled.div` + --x-color-border: #e0e7ea; + --x-color-border: rgba(255, 255, 255, 0.25); + padding-top: 16px; - border-top: 1px solid #e0e7ea; + border-top: 1px solid var(--x-color-border); margin-top: 30px; .bp4-button { diff --git a/packages/webapp/src/containers/Preferences/PaymentMethods/StripePaymentMethod.tsx b/packages/webapp/src/containers/Preferences/PaymentMethods/StripePaymentMethod.tsx index 6f44ba44d..2b380aa15 100644 --- a/packages/webapp/src/containers/Preferences/PaymentMethods/StripePaymentMethod.tsx +++ b/packages/webapp/src/containers/Preferences/PaymentMethods/StripePaymentMethod.tsx @@ -24,11 +24,13 @@ import { import { DRAWERS } from '@/constants/drawers'; import { MoreIcon } from '@/icons/More'; import { STRIPE_PRICING_LINK } from './constants'; +import { useIsDarkMode } from '@/hooks/useDarkMode'; export function StripePaymentMethod() { const { openDialog } = useDialogActions(); const { openDrawer } = useDrawerActions(); const { openAlert } = useAlertActions(); + const isDarkMode = useIsDarkMode(); const { paymentMethodsState } = usePaymentMethodsBoot(); const stripeState = paymentMethodsState?.stripe; @@ -63,8 +65,9 @@ export function StripePaymentMethod() { - - + {isStripeEnabled && ( diff --git a/packages/webapp/src/containers/Preferences/PaymentMethods/dialogs/StripePreSetupDialog/StripePreSetupDialogContent.tsx b/packages/webapp/src/containers/Preferences/PaymentMethods/dialogs/StripePreSetupDialog/StripePreSetupDialogContent.tsx index 0fa2d7511..b1bc38352 100644 --- a/packages/webapp/src/containers/Preferences/PaymentMethods/dialogs/StripePreSetupDialog/StripePreSetupDialogContent.tsx +++ b/packages/webapp/src/containers/Preferences/PaymentMethods/dialogs/StripePreSetupDialog/StripePreSetupDialogContent.tsx @@ -92,5 +92,5 @@ const PaymentFeatureIcon = styled('span')` position: absolute; left: 12px; top: 2px; - color: #0052cc; + color: var(--color-primary); `; diff --git a/packages/webapp/src/containers/Preferences/PreferencesPageLoader.tsx b/packages/webapp/src/containers/Preferences/PreferencesPageLoader.tsx index 25e8b5eb1..34304aa83 100644 --- a/packages/webapp/src/containers/Preferences/PreferencesPageLoader.tsx +++ b/packages/webapp/src/containers/Preferences/PreferencesPageLoader.tsx @@ -1,15 +1,18 @@ // @ts-nocheck +import { useIsDarkMode } from '@/hooks/useDarkMode'; import ContentLoader from 'react-content-loader'; export default function PreferencesPageLoader(props) { + const isDarkmode = useIsDarkMode(); + return ( diff --git a/packages/webapp/src/containers/Preferences/Receipts/PreferencesReceiptsForm.tsx b/packages/webapp/src/containers/Preferences/Receipts/PreferencesReceiptsForm.tsx index 42836de51..b72673a5d 100644 --- a/packages/webapp/src/containers/Preferences/Receipts/PreferencesReceiptsForm.tsx +++ b/packages/webapp/src/containers/Preferences/Receipts/PreferencesReceiptsForm.tsx @@ -60,8 +60,11 @@ export function PreferencesReceiptsForm({ isSubmitting }) { } const CardFooterActions = styled.div` + --x-color-border: #e0e7ea; + --x-color-border: rgba(255, 255, 255, 0.25); + padding-top: 16px; - border-top: 1px solid #e0e7ea; + border-top: 1px solid var(--x-color-border); margin-top: 30px; .bp4-button { diff --git a/packages/webapp/src/containers/Purchases/Bills/BillForm/BillFormFooterRight.tsx b/packages/webapp/src/containers/Purchases/Bills/BillForm/BillFormFooterRight.tsx index 293e63818..caf5e611c 100644 --- a/packages/webapp/src/containers/Purchases/Bills/BillForm/BillFormFooterRight.tsx +++ b/packages/webapp/src/containers/Purchases/Bills/BillForm/BillFormFooterRight.tsx @@ -79,6 +79,9 @@ export function BillFormFooterRight() { } const BillTotalLines = styled(TotalLines)` + --x-color-text: #555; + --x-color-text: var(--color-light-gray4); + width: 100%; - color: #555555; + color: var(--x-color-text); `; diff --git a/packages/webapp/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormFooterRight.tsx b/packages/webapp/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormFooterRight.tsx index 5448139b3..33b1da575 100644 --- a/packages/webapp/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormFooterRight.tsx +++ b/packages/webapp/src/containers/Purchases/CreditNotes/CreditNoteForm/VendorCreditNoteFormFooterRight.tsx @@ -46,6 +46,9 @@ export function VendorCreditNoteFormFooterRight() { } const VendorCreditNoteTotalLines = styled(TotalLines)` + --x-color-text: #555; + --x-color-text: var(--color-light-gray4); + width: 100%; - color: #555555; + color: var(--x-color-text); `; diff --git a/packages/webapp/src/containers/Purchases/PaymentsMade/PaymentForm/PaymentMadeFormFooterRight.tsx b/packages/webapp/src/containers/Purchases/PaymentsMade/PaymentForm/PaymentMadeFormFooterRight.tsx index 5f1de27df..a903889c5 100644 --- a/packages/webapp/src/containers/Purchases/PaymentsMade/PaymentForm/PaymentMadeFormFooterRight.tsx +++ b/packages/webapp/src/containers/Purchases/PaymentsMade/PaymentForm/PaymentMadeFormFooterRight.tsx @@ -41,6 +41,9 @@ export function PaymentMadeFormFooterRight() { } const PaymentMadeTotalLines = styled(TotalLines)` + --x-color-text: #555; + --x-color-text: var(--color-light-gray4); + width: 100%; - color: #555555; + color: var(--x-color-text); `; diff --git a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormFooterRight.tsx b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormFooterRight.tsx index e6b381283..faffbcb04 100644 --- a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormFooterRight.tsx +++ b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormFooterRight.tsx @@ -50,6 +50,9 @@ export function CreditNoteFormFooterRight() { } const CreditNoteTotalLines = styled(TotalLines)` + --x-color-text: #555555; + --x-color-text: var(--color-light-gray4); + width: 100%; - color: #555555; + color: var(--x-color-text); `; diff --git a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeader.tsx b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeader.tsx index 9a3f450e1..115417b0d 100644 --- a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeader.tsx +++ b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteForm/CreditNoteFormHeader.tsx @@ -4,19 +4,30 @@ import intl from 'react-intl-universal'; import CreditNoteFormHeaderFields from './CreditNoteFormHeaderFields'; import { Group, PageFormBigNumber } from '@/components'; import { useCreditNoteTotalFormatted } from './utils'; +import { useIsDarkMode } from '@/hooks/useDarkMode'; /** * Credit note header. */ function CreditNoteFormHeader() { + const isDarkMode = useIsDarkMode(); + return ( diff --git a/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateForm.tsx b/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateForm.tsx index dcc117900..6652ce3ae 100644 --- a/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateForm.tsx +++ b/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateForm.tsx @@ -37,7 +37,7 @@ import { } from './utils'; import { PageForm } from '@/components/PageForm'; -/**6 +/** * Estimate form. */ function EstimateForm({ @@ -70,18 +70,18 @@ function EstimateForm({ ...(!isEmpty(estimate) ? { ...transformToEditForm(estimate) } : { - ...defaultEstimate, - // If the auto-increment mode is enabled, take the next estimate - // number from the settings. - ...(estimateAutoIncrementMode && { - estimate_number: estimateNumber, - }), - entries: orderingLinesIndexes(defaultEstimate.entries), - currency_code: base_currency, - terms_conditions: defaultTo(estimateTermsConditions, ''), - note: defaultTo(estimateCustomerNotes, ''), - pdf_template_id: saleEstimateState?.defaultTemplateId, + ...defaultEstimate, + // If the auto-increment mode is enabled, take the next estimate + // number from the settings. + ...(estimateAutoIncrementMode && { + estimate_number: estimateNumber, }), + entries: orderingLinesIndexes(defaultEstimate.entries), + currency_code: base_currency, + terms_conditions: defaultTo(estimateTermsConditions, ''), + note: defaultTo(estimateCustomerNotes, ''), + pdf_template_id: saleEstimateState?.defaultTemplateId, + }), }; // Handles form submit. diff --git a/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooterRight.tsx b/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooterRight.tsx index c3ff4d13d..0ea997f55 100644 --- a/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooterRight.tsx +++ b/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateFormFooterRight.tsx @@ -42,6 +42,9 @@ export function EstimateFormFooterRight() { } const EstimateTotalLines = styled(TotalLines)` + --x-color-text: #555; + --x-color-text: var(--color-light-gray4); + width: 100%; - color: #555555; + color: var(--x-color-text); `; diff --git a/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.tsx b/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.tsx index a8d924784..1a622a2c7 100644 --- a/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.tsx +++ b/packages/webapp/src/containers/Sales/Estimates/EstimateForm/EstimateFormHeader.tsx @@ -5,16 +5,27 @@ import intl from 'react-intl-universal'; import EstimateFormHeaderFields from './EstimateFormHeaderFields'; import { Group, PageFormBigNumber } from '@/components'; import { useEstimateTotalFormatted } from './utils'; +import { useIsDarkMode } from '@/hooks/useDarkMode'; // Estimate form top header. function EstimateFormHeader() { + const isDarkMode = useIsDarkMode(); + return ( diff --git a/packages/webapp/src/containers/Sales/Estimates/EstimateSendMailDrawer/EstimateSnedMailFields.tsx b/packages/webapp/src/containers/Sales/Estimates/EstimateSendMailDrawer/EstimateSnedMailFields.tsx index 6cd0672b8..fffa42e10 100644 --- a/packages/webapp/src/containers/Sales/Estimates/EstimateSendMailDrawer/EstimateSnedMailFields.tsx +++ b/packages/webapp/src/containers/Sales/Estimates/EstimateSendMailDrawer/EstimateSnedMailFields.tsx @@ -7,6 +7,7 @@ import { useDrawerContext } from '@/components/Drawer/DrawerProvider'; import { useDrawerActions } from '@/hooks/state'; import { useSendEstimateFormatArgsOptions } from './hooks'; import { useSendMailItems } from '../SendMailViewDrawer/hooks'; +import { useIsDarkMode } from '@/hooks/useDarkMode'; export function EstimateSendMailFields() { @@ -41,6 +42,7 @@ function EstimateSendMailFooter() { const { isSubmitting } = useFormikContext(); const { name } = useDrawerContext(); const { closeDrawer } = useDrawerActions(); + const isDarkmode = useIsDarkMode(); const handleClose = () => { closeDrawer(name); @@ -50,7 +52,9 @@ function EstimateSendMailFooter() { diff --git a/packages/webapp/src/containers/Sales/Estimates/SendMailViewDrawer/SendMailViewHeader.tsx b/packages/webapp/src/containers/Sales/Estimates/SendMailViewDrawer/SendMailViewHeader.tsx index 98a9c6584..cf701411a 100644 --- a/packages/webapp/src/containers/Sales/Estimates/SendMailViewDrawer/SendMailViewHeader.tsx +++ b/packages/webapp/src/containers/Sales/Estimates/SendMailViewDrawer/SendMailViewHeader.tsx @@ -3,6 +3,7 @@ import { x } from '@xstyled/emotion'; import { Group, Icon } from '@/components'; import { useDrawerContext } from '@/components/Drawer/DrawerProvider'; import { useDrawerActions } from '@/hooks/state'; +import { useIsDarkMode } from '@/hooks/useDarkMode'; interface SendMailViewHeaderProps { label?: string; @@ -16,6 +17,7 @@ export function SendMailViewHeader({ }: SendMailViewHeaderProps) { const { name } = useDrawerContext(); const { closeDrawer } = useDrawerActions(); + const isDarkmode = useIsDarkMode(); const handleClose = () => { closeDrawer(name); @@ -24,14 +26,19 @@ export function SendMailViewHeader({ {label && ( - + {label} )} @@ -39,7 +46,7 @@ export function SendMailViewHeader({