Browse Source

Feature/upgrade bootstrap to version 5.3.8 (#8131)

* Update bootstrap to version 5.3.8

* Update changelog
pull/8162/head
Kenrick Tandrian 3 days ago
committed by GitHub
parent
commit
c169311fa3
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 6
      CHANGELOG.md
  2. 2
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
  3. 2
      apps/client/src/app/components/footer/footer.component.html
  4. 2
      apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html
  5. 50
      apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
  6. 2
      apps/client/src/app/components/rule/rule.component.html
  7. 4
      apps/client/src/app/components/rule/rule.component.scss
  8. 16
      apps/client/src/app/pages/landing/landing-page.html
  9. 4
      apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.scss
  10. 6
      apps/client/src/app/pages/register/register-page.html
  11. 4
      apps/client/src/app/pages/webauthn/webauthn-page.html
  12. 181
      apps/client/src/styles/bootstrap.scss
  13. 12
      libs/ui/src/lib/activity-type/activity-type.component.scss
  14. 4
      libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.scss
  15. 42
      package-lock.json
  16. 2
      package.json

6
CHANGELOG.md

@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Changed
- Upgraded `bootstrap` from version `4.6.2` to `5.3.8`
## 3.86.0 - 2026-10-13 ## 3.86.0 - 2026-10-13
### Added ### Added

2
apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html

@ -188,7 +188,7 @@
>Symbol</gf-value >Symbol</gf-value
> >
</div> </div>
<div class="col-6 mb-3"> <div class="col-6 mb-3 position-relative">
<gf-value <gf-value
i18n i18n
size="medium" size="medium"

2
apps/client/src/app/components/footer/footer.component.html

@ -191,7 +191,7 @@
</div> </div>
</div> </div>
<div class="container d-none d-md-block mt-5"> <div class="container d-none d-md-block mt-5">
<div class="row justify-content-center"> <div class="d-flex justify-content-center">
<div class="font-weight-bold line-height-1 logotype">Ghostfolio</div> <div class="font-weight-bold line-height-1 logotype">Ghostfolio</div>
</div> </div>
</div> </div>

2
apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html

@ -1,5 +1,5 @@
<div class="container p-0"> <div class="container p-0">
<div class="no-gutters row"> <div class="d-flex flex-wrap">
<div class="px-1 status-container text-muted text-right"> <div class="px-1 status-container text-muted text-right">
@if ((errors()?.length ?? 0) > 0 && !isLoading()) { @if ((errors()?.length ?? 0) > 0 && !isLoading()) {
<ion-icon <ion-icon

50
apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html

@ -1,5 +1,5 @@
<div class="container p-0"> <div class="container p-0">
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 text-truncate" i18n>Time in Market</div> <div class="flex-grow-1 text-truncate" i18n>Time in Market</div>
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
@ -10,7 +10,7 @@
</div> </div>
</div> </div>
@if (isLoading) { @if (isLoading) {
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="d-flex flex-grow-1 indent-1 text-truncate"> <div class="d-flex flex-grow-1 indent-1 text-truncate">
<ngx-skeleton-loader <ngx-skeleton-loader
animation="pulse" animation="pulse"
@ -19,7 +19,7 @@
</div> </div>
</div> </div>
} @else { } @else {
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="d-flex flex-grow-1 indent-1 text-truncate"> <div class="d-flex flex-grow-1 indent-1 text-truncate">
{{ summary?.activityCount }} {{ summary?.activityCount }}
<ng-container i18n>{summary?.activityCount, plural, <ng-container i18n>{summary?.activityCount, plural,
@ -39,7 +39,7 @@
<div class="row"> <div class="row">
<div class="col"><hr /></div> <div class="col"><hr /></div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 text-truncate" i18n>Buy</div> <div class="flex-grow-1 text-truncate" i18n>Buy</div>
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
@ -53,7 +53,7 @@
/> />
</div> </div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 text-truncate" i18n>Sell</div> <div class="flex-grow-1 text-truncate" i18n>Sell</div>
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
@ -70,7 +70,7 @@
<div class="row"> <div class="row">
<div class="col"><hr /></div> <div class="col"><hr /></div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 text-truncate" i18n>Invested Capital</div> <div class="flex-grow-1 text-truncate" i18n>Invested Capital</div>
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
@ -84,7 +84,7 @@
/> />
</div> </div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 text-truncate" i18n>Absolute Gross Performance</div> <div class="flex-grow-1 text-truncate" i18n>Absolute Gross Performance</div>
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
@ -98,7 +98,7 @@
/> />
</div> </div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row text-muted"> <div class="d-flex py-1 text-muted">
<div class="flex-grow-1 indent-1 text-truncate" i18n>thereof Dividend</div> <div class="flex-grow-1 indent-1 text-truncate" i18n>thereof Dividend</div>
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
@ -112,7 +112,7 @@
/> />
</div> </div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 text-truncate" i18n>Fees</div> <div class="flex-grow-1 text-truncate" i18n>Fees</div>
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
@if (isNumber(summary?.fees)) { @if (isNumber(summary?.fees)) {
@ -132,7 +132,7 @@
<div class="row"> <div class="row">
<div class="col"><hr /></div> <div class="col"><hr /></div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 text-truncate" i18n>Absolute Net Performance</div> <div class="flex-grow-1 text-truncate" i18n>Absolute Net Performance</div>
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
@ -146,7 +146,7 @@
/> />
</div> </div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 indent-1 text-truncate"> <div class="flex-grow-1 indent-1 text-truncate">
<ng-container i18n>Net Performance</ng-container> <ng-container i18n>Net Performance</ng-container>
@if ( @if (
@ -173,7 +173,7 @@
/> />
</div> </div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row text-muted"> <div class="d-flex py-1 text-muted">
<div class="flex-grow-1 indent-2 text-truncate"> <div class="flex-grow-1 indent-2 text-truncate">
<ng-container i18n>thereof Dividend Performance</ng-container> <ng-container i18n>thereof Dividend Performance</ng-container>
</div> </div>
@ -191,7 +191,7 @@
<div class="row"> <div class="row">
<div class="col"><hr /></div> <div class="col"><hr /></div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 text-truncate" i18n>Total Assets</div> <div class="flex-grow-1 text-truncate" i18n>Total Assets</div>
<div class="flex-column flex-wrap justify-content-end"> <div class="flex-column flex-wrap justify-content-end">
<gf-value <gf-value
@ -206,7 +206,7 @@
/> />
</div> </div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div <div
class="align-items-center d-flex flex-grow-1 indent-1" class="align-items-center d-flex flex-grow-1 indent-1"
[class.cursor-pointer]="hasHoldingsBreakdown" [class.cursor-pointer]="hasHoldingsBreakdown"
@ -253,7 +253,7 @@
</div> </div>
</div> </div>
@if (hasHoldingsBreakdown && isHoldingsExpanded) { @if (hasHoldingsBreakdown && isHoldingsExpanded) {
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 indent-2 text-truncate" i18n>Investments</div> <div class="flex-grow-1 indent-2 text-truncate" i18n>Investments</div>
<div class="flex-column flex-wrap justify-content-end"> <div class="flex-column flex-wrap justify-content-end">
<gf-value <gf-value
@ -268,7 +268,7 @@
/> />
</div> </div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 indent-2 text-truncate" i18n>Emergency Fund</div> <div class="flex-grow-1 indent-2 text-truncate" i18n>Emergency Fund</div>
<div class="flex-column flex-wrap justify-content-end"> <div class="flex-column flex-wrap justify-content-end">
<gf-value <gf-value
@ -284,7 +284,7 @@
</div> </div>
</div> </div>
} }
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div <div
class="align-items-center d-flex flex-grow-1 indent-1" class="align-items-center d-flex flex-grow-1 indent-1"
[class.cursor-pointer]="hasCashBreakdown" [class.cursor-pointer]="hasCashBreakdown"
@ -331,7 +331,7 @@
</div> </div>
</div> </div>
@if (hasCashBreakdown && isCashExpanded) { @if (hasCashBreakdown && isCashExpanded) {
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 indent-2 text-truncate" i18n>Buying Power</div> <div class="flex-grow-1 indent-2 text-truncate" i18n>Buying Power</div>
<div class="flex-column flex-wrap justify-content-end"> <div class="flex-column flex-wrap justify-content-end">
<gf-value <gf-value
@ -346,7 +346,7 @@
/> />
</div> </div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 indent-2 text-truncate" i18n>Emergency Fund</div> <div class="flex-grow-1 indent-2 text-truncate" i18n>Emergency Fund</div>
<div class="flex-column flex-wrap justify-content-end"> <div class="flex-column flex-wrap justify-content-end">
<gf-value <gf-value
@ -362,7 +362,7 @@
</div> </div>
</div> </div>
} }
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="align-items-center d-flex flex-grow-1"> <div class="align-items-center d-flex flex-grow-1">
<ng-container i18n>Excluded from Analysis</ng-container> <ng-container i18n>Excluded from Analysis</ng-container>
@if ( @if (
@ -394,7 +394,7 @@
<div class="row"> <div class="row">
<div class="col"><hr /></div> <div class="col"><hr /></div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 text-truncate" i18n>Liabilities</div> <div class="flex-grow-1 text-truncate" i18n>Liabilities</div>
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
@if (isNumber(summary?.liabilitiesInBaseCurrency)) { @if (isNumber(summary?.liabilitiesInBaseCurrency)) {
@ -414,7 +414,7 @@
<div class="row"> <div class="row">
<div class="col"><hr /></div> <div class="col"><hr /></div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 font-weight-bold text-truncate" i18n>Net Worth</div> <div class="flex-grow-1 font-weight-bold text-truncate" i18n>Net Worth</div>
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value
@ -428,7 +428,7 @@
/> />
</div> </div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 indent-1 text-truncate"> <div class="flex-grow-1 indent-1 text-truncate">
<ng-container i18n>Annualized Performance</ng-container> <ng-container i18n>Annualized Performance</ng-container>
</div> </div>
@ -447,7 +447,7 @@
<div class="row"> <div class="row">
<div class="col"><hr /></div> <div class="col"><hr /></div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="align-items-center d-flex flex-grow-1"> <div class="align-items-center d-flex flex-grow-1">
<ng-container i18n>Emergency Fund</ng-container> <ng-container i18n>Emergency Fund</ng-container>
@if ( @if (
@ -503,7 +503,7 @@
/> />
</div> </div>
</div> </div>
<div class="flex-nowrap px-3 py-1 row"> <div class="d-flex py-1">
<div class="flex-grow-1 text-truncate" i18n>Interest</div> <div class="flex-grow-1 text-truncate" i18n>Interest</div>
<div class="justify-content-end"> <div class="justify-content-end">
<gf-value <gf-value

2
apps/client/src/app/components/rule/rule.component.html

@ -1,5 +1,5 @@
<div class="py-3"> <div class="py-3">
<div class="align-items-center flex-nowrap no-gutters row"> <div class="align-items-center d-flex">
@if (isLoading) { @if (isLoading) {
<div> <div>
<ngx-skeleton-loader <ngx-skeleton-loader

4
apps/client/src/app/components/rule/rule.component.scss

@ -7,11 +7,11 @@
height: 2rem; height: 2rem;
&.okay { &.okay {
color: var(--success); color: var(--bs-success);
} }
&.warn { &.warn {
color: var(--danger); color: var(--bs-danger);
} }
} }

16
apps/client/src/app/pages/landing/landing-page.html

@ -360,21 +360,17 @@
</div> </div>
<div class="container"> <div class="container">
<div class="d-block row"> <div class="outro-inner-container mx-auto">
<div class="outro-inner-container mx-auto"> <div class="h-100 w-100"></div>
<div class="h-100 w-100"></div>
</div>
</div> </div>
<div class="row mb-4"> <div class="d-flex justify-content-center mb-4">
<div <div class="align-items-center d-flex flex-column justify-content-center">
class="align-items-center d-flex flex-column justify-content-center w-100"
>
<gf-logo size="medium" /> <gf-logo size="medium" />
<div>Wealth Management Software</div> <div>Wealth Management Software</div>
</div> </div>
</div> </div>
<div class="row"> <div class="d-flex justify-content-center">
<div class="align-items-center d-flex flex-column w-100"> <div class="align-items-center d-flex flex-column">
<a <a
class="logo logo-agplv3 mask" class="logo logo-agplv3 mask"
href="https://www.gnu.org/licenses/agpl-3.0.html" href="https://www.gnu.org/licenses/agpl-3.0.html"

4
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.scss

@ -7,11 +7,11 @@
height: 2rem; height: 2rem;
&.okay { &.okay {
color: var(--success); color: var(--bs-success);
} }
&.warn { &.warn {
color: var(--danger); color: var(--bs-danger);
} }
} }
} }

6
apps/client/src/app/pages/register/register-page.html

@ -5,10 +5,8 @@
</div> </div>
<div class="container"> <div class="container">
<div class="row"> <div class="d-flex justify-content-center">
<div <div class="align-items-center d-flex flex-column justify-content-center">
class="align-items-center d-flex flex-column justify-content-center w-100"
>
<gf-logo size="large" /> <gf-logo size="large" />
<p class="lead m-0">Wealth Management Software</p> <p class="lead m-0">Wealth Management Software</p>
</div> </div>

4
apps/client/src/app/pages/webauthn/webauthn-page.html

@ -2,12 +2,12 @@
<div class="row"> <div class="row">
<div class="col"> <div class="col">
@if (!hasError) { @if (!hasError) {
<div class="col d-flex justify-content-center"> <div class="d-flex justify-content-center">
<mat-spinner [diameter]="20" /> <mat-spinner [diameter]="20" />
</div> </div>
} @else { } @else {
<div <div
class="align-items-center col d-flex flex-column justify-content-center" class="align-items-center d-flex flex-column justify-content-center"
> >
<h1 class="d-flex h5 justify-content-center mb-0 text-center"> <h1 class="d-flex h5 justify-content-center mb-0 text-center">
<ng-container i18n>Oops, authentication has failed.</ng-container> <ng-container i18n>Oops, authentication has failed.</ng-container>

181
apps/client/src/styles/bootstrap.scss

@ -1,18 +1,143 @@
/*! /*!
* Bootstrap v4.6.2 (https://getbootstrap.com/) * Bootstrap v5.3.8 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors * Copyright 2011-2025 The Bootstrap Authors
* Copyright 2011-2022 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/ */
@use 'sass:map';
// Configuration
@import 'bootstrap/scss/functions'; @import 'bootstrap/scss/functions';
// Restore Bootstrap 4 defaults
$badge-padding-x: 0.4em;
$badge-padding-y: 0.25em;
$blue: #007bff;
$body-secondary-color: #6c757d;
$border-radius: 0.25rem;
$code-color: inherit;
$code-color-dark: inherit;
$code-font-size: 1em;
$container-max-widths: (
sm: 540px,
md: 720px,
lg: 960px,
xl: 1140px
);
$cyan: #17a2b8;
$enable-dark-mode: false;
$enable-rfs: false;
$enable-smooth-scroll: false;
$figure-caption-font-size: 90%;
$green: #28a745;
$grid-gutter-width: 30px;
$hr-opacity: 1;
$initialism-font-size: 90%;
$link-decoration: none;
$link-hover-decoration: underline;
$table-cell-padding-y: 0.75rem;
@import 'bootstrap/scss/variables'; @import 'bootstrap/scss/variables';
@import 'bootstrap/scss/variables-dark';
@import 'bootstrap/scss/maps';
@import 'bootstrap/scss/mixins'; @import 'bootstrap/scss/mixins';
@import 'bootstrap/scss/utilities';
// Compatibility mappings for legacy Bootstrap 4 utility classes
$utilities: map.merge(
$utilities,
(
'margin-right-compat': (
responsive: true,
property: margin-right,
class: mr,
values: map.merge(
map.merge(
$spacers,
(
auto: auto
)
),
negativify-map($spacers)
)
),
'margin-left-compat': (
responsive: true,
property: margin-left,
class: ml,
values: map.merge(
map.merge(
$spacers,
(
auto: auto
)
),
negativify-map($spacers)
)
),
'padding-right-compat': (
responsive: true,
property: padding-right,
class: pr,
values: $spacers
),
'padding-left-compat': (
responsive: true,
property: padding-left,
class: pl,
values: $spacers
),
'text-align-compat': (
responsive: true,
property: text-align,
class: text,
values: (
left: left,
right: right
)
),
'font-weight-compat': (
property: font-weight,
class: font-weight,
values: (
bold: $font-weight-bold,
normal: $font-weight-normal,
light: $font-weight-light,
bolder: $font-weight-bolder,
lighter: $font-weight-lighter
)
),
'font-style-compat': (
property: font-style,
class: font,
values: (
italic: italic
)
),
'float-compat': (
responsive: true,
property: float,
values: (
left: left,
right: right
)
),
'font-family-compat': (
property: font-family,
class: text,
values: (
monospace: var(--bs-font-monospace)
)
)
)
);
// Layout & components
@import 'bootstrap/scss/root'; @import 'bootstrap/scss/root';
@import 'bootstrap/scss/reboot'; @import 'bootstrap/scss/reboot';
@import 'bootstrap/scss/type'; @import 'bootstrap/scss/type';
@import 'bootstrap/scss/images'; @import 'bootstrap/scss/images';
// @import 'bootstrap/scss/code'; @import 'bootstrap/scss/containers';
@import 'bootstrap/scss/grid'; @import 'bootstrap/scss/grid';
// @import 'bootstrap/scss/tables'; // @import 'bootstrap/scss/tables';
// @import 'bootstrap/scss/forms'; // @import 'bootstrap/scss/forms';
@ -20,18 +145,15 @@
// @import 'bootstrap/scss/transitions'; // @import 'bootstrap/scss/transitions';
// @import 'bootstrap/scss/dropdown'; // @import 'bootstrap/scss/dropdown';
// @import 'bootstrap/scss/button-group'; // @import 'bootstrap/scss/button-group';
// @import 'bootstrap/scss/input-group';
// @import 'bootstrap/scss/custom-forms';
// @import 'bootstrap/scss/nav'; // @import 'bootstrap/scss/nav';
// @import 'bootstrap/scss/navbar'; // @import 'bootstrap/scss/navbar';
// @import 'bootstrap/scss/card'; // @import 'bootstrap/scss/card';
// @import 'bootstrap/scss/accordion';
@import 'bootstrap/scss/breadcrumb'; @import 'bootstrap/scss/breadcrumb';
// @import 'bootstrap/scss/pagination'; // @import 'bootstrap/scss/pagination';
@import 'bootstrap/scss/badge'; @import 'bootstrap/scss/badge';
// @import 'bootstrap/scss/jumbotron';
// @import 'bootstrap/scss/alert'; // @import 'bootstrap/scss/alert';
// @import 'bootstrap/scss/progress'; // @import 'bootstrap/scss/progress';
// @import 'bootstrap/scss/media';
// @import 'bootstrap/scss/list-group'; // @import 'bootstrap/scss/list-group';
// @import 'bootstrap/scss/close'; // @import 'bootstrap/scss/close';
// @import 'bootstrap/scss/toasts'; // @import 'bootstrap/scss/toasts';
@ -40,5 +162,44 @@
// @import 'bootstrap/scss/popover'; // @import 'bootstrap/scss/popover';
// @import 'bootstrap/scss/carousel'; // @import 'bootstrap/scss/carousel';
// @import 'bootstrap/scss/spinners'; // @import 'bootstrap/scss/spinners';
@import 'bootstrap/scss/utilities'; // @import 'bootstrap/scss/offcanvas';
// @import 'bootstrap/scss/print'; // @import 'bootstrap/scss/placeholders';
// Helpers
@import 'bootstrap/scss/helpers/text-truncation';
// Utilities
@import 'bootstrap/scss/utilities/api';
// Grid & layout compatibility
.no-gutters {
--bs-gutter-x: 0;
--bs-gutter-y: 0;
}
// Badge compatibility
.badge-pill {
border-radius: var(--bs-border-radius-pill, 50rem);
padding-left: 0.6em;
padding-right: 0.6em;
}
.badge-secondary {
background-color: var(--bs-secondary);
}
.badge-light {
background-color: var(--bs-light);
color: var(--bs-dark);
}
.badge-warning {
background-color: var(--bs-warning);
color: var(--bs-dark);
}
// Typography compatibility
small,
.small {
font-weight: $font-weight-normal;
}

12
libs/ui/src/lib/activity-type/activity-type.component.scss

@ -11,27 +11,27 @@
} }
&.buy { &.buy {
color: var(--green); color: var(--bs-green);
} }
&.dividend { &.dividend {
color: var(--blue); color: var(--bs-blue);
} }
&.fee { &.fee {
color: var(--gray); color: var(--bs-gray);
} }
&.interest { &.interest {
color: var(--cyan); color: var(--bs-cyan);
} }
&.liability { &.liability {
color: var(--red); color: var(--bs-red);
} }
&.sell { &.sell {
color: var(--orange); color: var(--bs-orange);
} }
} }
} }

4
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor.component.scss

@ -17,11 +17,11 @@
} }
&.valid { &.valid {
background-color: var(--danger); background-color: var(--bs-danger);
} }
&.available { &.available {
background-color: var(--success); background-color: var(--bs-success);
} }
&.today { &.today {

42
package-lock.json

@ -55,7 +55,7 @@
"ai": "7.0.127", "ai": "7.0.127",
"alphavantage": "2.2.0", "alphavantage": "2.2.0",
"big.js": "7.0.1", "big.js": "7.0.1",
"bootstrap": "4.6.2", "bootstrap": "5.3.8",
"bull": "4.16.5", "bull": "4.16.5",
"chart.js": "4.5.1", "chart.js": "4.5.1",
"chartjs-adapter-date-fns": "3.0.0", "chartjs-adapter-date-fns": "3.0.0",
@ -12345,6 +12345,17 @@
"url": "https://opencollective.com/pkgr" "url": "https://opencollective.com/pkgr"
} }
}, },
"node_modules/@popperjs/core": {
"version": "2.11.8",
"resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
"integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
"license": "MIT",
"peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/@prisma/adapter-pg": { "node_modules/@prisma/adapter-pg": {
"version": "7.10.0", "version": "7.10.0",
"resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.10.0.tgz", "resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.10.0.tgz",
@ -16817,10 +16828,9 @@
"license": "ISC" "license": "ISC"
}, },
"node_modules/bootstrap": { "node_modules/bootstrap": {
"version": "4.6.2", "version": "5.3.8",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz",
"integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==",
"deprecated": "This version of Bootstrap is no longer supported. Please upgrade to the latest version.",
"funding": [ "funding": [
{ {
"type": "github", "type": "github",
@ -16833,8 +16843,7 @@
], ],
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"jquery": "1.9.1 - 3", "@popperjs/core": "^2.11.8"
"popper.js": "^1.16.1"
} }
}, },
"node_modules/brace-expansion": { "node_modules/brace-expansion": {
@ -25149,13 +25158,6 @@
"url": "https://github.com/sponsors/panva" "url": "https://github.com/sponsors/panva"
} }
}, },
"node_modules/jquery": {
"version": "3.7.1",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz",
"integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
"license": "MIT",
"peer": true
},
"node_modules/js-tokens": { "node_modules/js-tokens": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@ -29254,18 +29256,6 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/popper.js": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
"integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
"deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1",
"license": "MIT",
"peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/popperjs"
}
},
"node_modules/portfinder": { "node_modules/portfinder": {
"version": "1.0.38", "version": "1.0.38",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.38.tgz", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.38.tgz",

2
package.json

@ -99,7 +99,7 @@
"ai": "7.0.127", "ai": "7.0.127",
"alphavantage": "2.2.0", "alphavantage": "2.2.0",
"big.js": "7.0.1", "big.js": "7.0.1",
"bootstrap": "4.6.2", "bootstrap": "5.3.8",
"bull": "4.16.5", "bull": "4.16.5",
"chart.js": "4.5.1", "chart.js": "4.5.1",
"chartjs-adapter-date-fns": "3.0.0", "chartjs-adapter-date-fns": "3.0.0",

Loading…
Cancel
Save