Browse Source

Task/replace text-muted with text-body-secondary (#8173)

Replace text-muted with text-body-secondary
pull/8176/head
Thomas Kaul 3 days ago
committed by GitHub
parent
commit
a26896f5ac
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 16
      apps/client/src/app/components/admin-market-data/admin-market-data.html
  2. 4
      apps/client/src/app/components/admin-market-data/asset-profile-dialog/asset-profile-dialog.html
  3. 6
      apps/client/src/app/components/admin-settings/admin-settings.component.html
  4. 5
      apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html
  5. 2
      apps/client/src/app/components/footer/footer.component.html
  6. 2
      apps/client/src/app/components/home-overview/home-overview.html
  7. 2
      apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html
  8. 4
      apps/client/src/app/components/markets/markets.html
  9. 2
      apps/client/src/app/components/portfolio-performance/portfolio-performance.component.html
  10. 20
      apps/client/src/app/components/portfolio-summary/portfolio-summary.component.html
  11. 2
      apps/client/src/app/components/rule/rule.component.html
  12. 2
      apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html
  13. 4
      apps/client/src/app/components/user-account-membership/user-account-membership.html
  14. 22
      apps/client/src/app/components/user-account-settings/user-account-settings.html
  15. 2
      apps/client/src/app/pages/about/oss-friends/oss-friends-page.html
  16. 2
      apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html
  17. 2
      apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html
  18. 2
      apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html
  19. 2
      apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html
  20. 2
      apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html
  21. 2
      apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html
  22. 2
      apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html
  23. 2
      apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html
  24. 2
      apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html
  25. 2
      apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html
  26. 2
      apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html
  27. 2
      apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html
  28. 2
      apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html
  29. 2
      apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html
  30. 2
      apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html
  31. 2
      apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html
  32. 2
      apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html
  33. 2
      apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html
  34. 2
      apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html
  35. 2
      apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html
  36. 2
      apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html
  37. 2
      apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html
  38. 2
      apps/client/src/app/pages/blog/2025/11/black-weeks-2025/black-weeks-2025-page.html
  39. 2
      apps/client/src/app/pages/blog/2026/04/ghostfolio-3/ghostfolio-3-page.html
  40. 98
      apps/client/src/app/pages/blog/blog-page.html
  41. 2
      apps/client/src/app/pages/features/features-page.html
  42. 16
      apps/client/src/app/pages/landing/landing-page.html
  43. 32
      apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html
  44. 8
      apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html
  45. 6
      apps/client/src/app/pages/portfolio/analysis/analysis-page.html
  46. 2
      apps/client/src/app/pages/portfolio/fire/fire-page.html
  47. 5
      apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html
  48. 10
      apps/client/src/app/pages/pricing/pricing-page.html
  49. 2
      apps/client/src/app/pages/register/register-page.html
  50. 2
      apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html
  51. 4
      apps/client/src/app/pages/resources/personal-finance-tools/product-page.html
  52. 2
      apps/client/src/app/pages/webauthn/webauthn-page.html
  53. 2
      libs/ui/src/lib/account-balances/account-balances.component.html
  54. 2
      libs/ui/src/lib/account-selector/account-selector.component.html
  55. 4
      libs/ui/src/lib/activities-table/activities-table.component.html
  56. 2
      libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html
  57. 4
      libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.scss
  58. 12
      libs/ui/src/lib/assistant/assistant.html
  59. 4
      libs/ui/src/lib/benchmark/benchmark.component.html
  60. 2
      libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html
  61. 2
      libs/ui/src/lib/fear-and-greed-index/fear-and-greed-index.component.html
  62. 2
      libs/ui/src/lib/fire-calculator/fire-calculator.component.html
  63. 4
      libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html
  64. 4
      libs/ui/src/lib/holdings-table/holdings-table.component.html
  65. 8
      libs/ui/src/lib/membership-card/membership-card.component.html
  66. 2
      libs/ui/src/lib/page-tabs/page-tabs.component.html
  67. 2
      libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.html
  68. 2
      libs/ui/src/lib/premium-indicator/premium-indicator.component.html
  69. 2
      libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html
  70. 4
      libs/ui/src/lib/top-holdings/top-holdings.component.html
  71. 10
      libs/ui/src/lib/trend-indicator/trend-indicator.component.html
  72. 6
      libs/ui/src/lib/value/value.component.html

16
apps/client/src/app/components/admin-market-data/admin-market-data.html

@ -95,7 +95,9 @@
<div class="text-truncate">{{ element.name }}</div> <div class="text-truncate">{{ element.name }}</div>
@if (!isUUID(element.symbol)) { @if (!isUUID(element.symbol)) {
<div> <div>
<small class="text-muted">{{ element.symbol }}</small> <small class="text-body-secondary">{{
element.symbol
}}</small>
</div> </div>
} }
</td> </td>
@ -116,7 +118,9 @@
</div> </div>
@if (element.dataProviderInfo?.name) { @if (element.dataProviderInfo?.name) {
<div> <div>
<small class="text-muted">{{ element.dataSource }}</small> <small class="text-body-secondary">{{
element.dataSource
}}</small>
</div> </div>
} }
</td> </td>
@ -134,7 +138,9 @@
<div>{{ translate(element.assetClass) }}</div> <div>{{ translate(element.assetClass) }}</div>
@if (element.assetClass) { @if (element.assetClass) {
<div> <div>
<small class="text-muted">{{ element.assetClass }}</small> <small class="text-body-secondary">{{
element.assetClass
}}</small>
</div> </div>
} }
</td> </td>
@ -152,7 +158,9 @@
<div>{{ translate(element.assetSubClass) }}</div> <div>{{ translate(element.assetSubClass) }}</div>
@if (element.assetSubClass) { @if (element.assetSubClass) {
<div> <div>
<small class="text-muted">{{ element.assetSubClass }}</small> <small class="text-body-secondary">{{
element.assetSubClass
}}</small>
</div> </div>
} }
</td> </td>

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

@ -164,7 +164,7 @@
</button> </button>
</form> </form>
@if (data.dataSource !== DataSource.MANUAL) { @if (data.dataSource !== DataSource.MANUAL) {
<p class="my-1 px-1 text-muted" i18n>or</p> <p class="my-1 px-1 text-body-secondary" i18n>or</p>
<button <button
color="accent" color="accent"
mat-flat-button mat-flat-button
@ -573,7 +573,7 @@
[for]="dateOfSplit" [for]="dateOfSplit"
> >
<ion-icon <ion-icon
class="text-muted" class="text-body-secondary"
matDatepickerToggleIcon matDatepickerToggleIcon
name="calendar-clear-outline" name="calendar-clear-outline"
/> />

6
apps/client/src/app/components/admin-settings/admin-settings.component.html

@ -30,7 +30,7 @@
> >
<ng-container i18n>Get Access</ng-container> <ng-container i18n>Get Access</ng-container>
</a> </a>
<div class="mx-3 text-muted"> <div class="mx-3 text-body-secondary">
<small i18n>or</small> <small i18n>or</small>
</div> </div>
<a <a
@ -91,7 +91,7 @@
</a> </a>
@if (isGhostfolioApiKeyValid === true) { @if (isGhostfolioApiKeyValid === true) {
<div class="line-height-1"> <div class="line-height-1">
<small class="text-muted"> <small class="text-body-secondary">
<ng-container i18n>Valid until</ng-container> <ng-container i18n>Valid until</ng-container>
{{ {{
ghostfolioApiStatus?.subscription?.expiresAt ghostfolioApiStatus?.subscription?.expiresAt
@ -165,7 +165,7 @@
100 100
" "
/> />
<small class="text-muted"> <small class="text-body-secondary">
{{ ghostfolioApiStatus.dailyRequests }} {{ ghostfolioApiStatus.dailyRequests }}
<ng-container i18n>of</ng-container> <ng-container i18n>of</ng-container>
{{ ghostfolioApiStatus.dailyRequestsMax }} {{ ghostfolioApiStatus.dailyRequestsMax }}

5
apps/client/src/app/components/benchmark-comparator/benchmark-comparator.component.html

@ -31,7 +31,10 @@
@if (hasPermissionToAccessAdminControl) { @if (hasPermissionToAccessAdminControl) {
<mat-option [routerLink]="routerLinkAdminControlMarketData"> <mat-option [routerLink]="routerLinkAdminControlMarketData">
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon class="me-2 text-muted" name="arrow-forward-outline" /> <ion-icon
class="me-2 text-body-secondary"
name="arrow-forward-outline"
/>
<span i18n>Manage Benchmarks</span> <span i18n>Manage Benchmarks</span>
</div> </div>
</mat-option> </mat-option>

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

@ -181,7 +181,7 @@
<a href="https://ghostfol.io">Ghostfolio</a> <a href="https://ghostfol.io">Ghostfolio</a>
</div> </div>
</div> </div>
<div class="row text-center text-muted"> <div class="row text-body-secondary text-center">
<div class="col"> <div class="col">
<small class="d-block" i18n <small class="d-block" i18n
>The risk of loss in trading can be substantial. It is not advisable to >The risk of loss in trading can be substantial. It is not advisable to

2
apps/client/src/app/components/home-overview/home-overview.html

@ -13,7 +13,7 @@
<ol class="fw-bold"> <ol class="fw-bold">
<li <li
class="mb-2" class="mb-2"
[class.text-muted]="(user()?.accounts?.length ?? 0) > 1" [class.text-body-secondary]="(user()?.accounts?.length ?? 0) > 1"
> >
<a class="d-block" [routerLink]="routerLinkAccounts" <a class="d-block" [routerLink]="routerLinkAccounts"
><span i18n>Setup your accounts</span><br /> ><span i18n>Setup your accounts</span><br />

2
apps/client/src/app/components/login-with-access-token-dialog/login-with-access-token-dialog.html

@ -30,7 +30,7 @@
@if ( @if (
data.hasPermissionToUseAuthGoogle && data.hasPermissionToUseAuthToken data.hasPermissionToUseAuthGoogle && data.hasPermissionToUseAuthToken
) { ) {
<div class="my-3 text-center text-muted" i18n>or</div> <div class="my-3 text-body-secondary text-center" i18n>or</div>
} }
@if (data.hasPermissionToUseAuthGoogle) { @if (data.hasPermissionToUseAuthGoogle) {

4
apps/client/src/app/components/markets/markets.html

@ -20,7 +20,7 @@
/> />
</div> </div>
} }
<div class="mb-2 text-center text-muted"> <div class="mb-2 text-body-secondary text-center">
<small i18n>Last {{ numberOfDays }} Days</small> <small i18n>Last {{ numberOfDays }} Days</small>
</div> </div>
<gf-line-chart <gf-line-chart
@ -58,7 +58,7 @@
/> />
@if (benchmarks()?.length) { @if (benchmarks()?.length) {
<div <div
class="gf-text-wrap-balance line-height-1 mt-3 text-center text-muted" class="gf-text-wrap-balance line-height-1 mt-3 text-body-secondary text-center"
> >
<small i18n> <small i18n>
Calculations are based on delayed market data and may not be Calculations are based on delayed market data and may not be

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

@ -1,6 +1,6 @@
<div class="container p-0"> <div class="container p-0">
<div class="d-flex flex-wrap"> <div class="d-flex flex-wrap">
<div class="px-1 status-container text-end text-muted"> <div class="px-1 status-container text-body-secondary text-end">
@if ((errors()?.length ?? 0) > 0 && !isLoading()) { @if ((errors()?.length ?? 0) > 0 && !isLoading()) {
<ion-icon <ion-icon
i18n-title i18n-title

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

@ -98,7 +98,7 @@
/> />
</div> </div>
</div> </div>
<div class="d-flex py-1 text-muted"> <div class="d-flex py-1 text-body-secondary">
<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
@ -154,7 +154,7 @@
PerformanceCalculationType.ROAI PerformanceCalculationType.ROAI
) { ) {
<abbr <abbr
class="d-none d-sm-inline-block initialism ms-2 text-muted" class="d-none d-sm-inline-block initialism ms-2 text-body-secondary"
i18n-title i18n-title
title="Return on Average Investment (total return with dividends)" title="Return on Average Investment (total return with dividends)"
>(ROAI)</abbr >(ROAI)</abbr
@ -173,7 +173,7 @@
/> />
</div> </div>
</div> </div>
<div class="d-flex py-1 text-muted"> <div class="d-flex py-1 text-body-secondary">
<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>
@ -217,7 +217,7 @@
class="align-items-center caret-container d-inline-flex justify-content-center" class="align-items-center caret-container d-inline-flex justify-content-center"
> >
<ion-icon <ion-icon
class="caret text-muted" class="caret text-body-secondary"
name="caret-forward-outline" name="caret-forward-outline"
[class.caret-expanded]="isHoldingsExpanded" [class.caret-expanded]="isHoldingsExpanded"
/> />
@ -230,7 +230,7 @@
user?.settings?.isExperimentalFeatures user?.settings?.isExperimentalFeatures
) { ) {
<gf-value <gf-value
class="d-lg-inline-block d-none ms-2 small text-muted" class="d-lg-inline-block d-none ms-2 small text-body-secondary"
[isLoading]="isLoading" [isLoading]="isLoading"
[isPercent]="true" [isPercent]="true"
[locale]="locale" [locale]="locale"
@ -295,7 +295,7 @@
class="align-items-center caret-container d-inline-flex justify-content-center" class="align-items-center caret-container d-inline-flex justify-content-center"
> >
<ion-icon <ion-icon
class="caret text-muted" class="caret text-body-secondary"
name="caret-forward-outline" name="caret-forward-outline"
[class.caret-expanded]="isCashExpanded" [class.caret-expanded]="isCashExpanded"
/> />
@ -308,7 +308,7 @@
user?.settings?.isExperimentalFeatures user?.settings?.isExperimentalFeatures
) { ) {
<gf-value <gf-value
class="d-lg-inline-block d-none ms-2 small text-muted" class="d-lg-inline-block d-none ms-2 small text-body-secondary"
[isLoading]="isLoading" [isLoading]="isLoading"
[isPercent]="true" [isPercent]="true"
[locale]="locale" [locale]="locale"
@ -371,7 +371,7 @@
user?.settings?.isExperimentalFeatures user?.settings?.isExperimentalFeatures
) { ) {
<gf-value <gf-value
class="d-lg-inline-block d-none ms-2 small text-muted" class="d-lg-inline-block d-none ms-2 small text-body-secondary"
[isLoading]="isLoading" [isLoading]="isLoading"
[isPercent]="true" [isPercent]="true"
[locale]="locale" [locale]="locale"
@ -456,7 +456,7 @@
user?.settings?.isExperimentalFeatures user?.settings?.isExperimentalFeatures
) { ) {
<gf-value <gf-value
class="d-lg-inline-block d-none ms-2 small text-muted" class="d-lg-inline-block d-none ms-2 small text-body-secondary"
[isLoading]="isLoading" [isLoading]="isLoading"
[isPercent]="true" [isPercent]="true"
[locale]="locale" [locale]="locale"
@ -486,7 +486,7 @@
user?.subscription?.type !== 'Basic' user?.subscription?.type !== 'Basic'
) { ) {
<ion-icon <ion-icon
class="me-1 text-muted" class="me-1 text-body-secondary"
name="ellipsis-horizontal-circle-outline" name="ellipsis-horizontal-circle-outline"
/> />
} }

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

@ -24,7 +24,7 @@
} @else if (rule?.isActive === true) { } @else if (rule?.isActive === true) {
<ion-icon name="warning-outline" /> <ion-icon name="warning-outline" />
} @else { } @else {
<ion-icon class="text-muted" name="remove-circle-outline" /> <ion-icon class="text-body-secondary" name="remove-circle-outline" />
} }
</div> </div>
} }

2
apps/client/src/app/components/user-account-access/create-or-update-access-dialog/create-or-update-access-dialog.html

@ -60,7 +60,7 @@
/> />
<mat-datepicker-toggle class="me-2" matSuffix [for]="expiresAt"> <mat-datepicker-toggle class="me-2" matSuffix [for]="expiresAt">
<ion-icon <ion-icon
class="text-muted" class="text-body-secondary"
matDatepickerToggleIcon matDatepickerToggleIcon
name="calendar-clear-outline" name="calendar-clear-outline"
/> />

4
apps/client/src/app/components/user-account-membership/user-account-membership.html

@ -26,7 +26,7 @@
@if (price) { @if (price) {
<div class="mt-1 text-center"> <div class="mt-1 text-center">
@if (coupon) { @if (coupon) {
<del class="text-muted" <del class="text-body-secondary"
>{{ baseCurrency }}&nbsp;{{ price }}</del >{{ baseCurrency }}&nbsp;{{ price }}</del
>&nbsp;{{ baseCurrency }}&nbsp;{{ price - coupon }} >&nbsp;{{ baseCurrency }}&nbsp;{{ price - coupon }}
} @else { } @else {
@ -75,7 +75,7 @@
</div> </div>
</div> </div>
} @else { } @else {
<div class="mt-3 text-muted"> <div class="mt-3 text-body-secondary">
<small i18n>No auto-renewal on membership.</small> <small i18n>No auto-renewal on membership.</small>
</div> </div>
} }

22
apps/client/src/app/components/user-account-settings/user-account-settings.html

@ -23,7 +23,7 @@
[currencies]="currencies" [currencies]="currencies"
/> />
@if (hasImpersonationId) { @if (hasImpersonationId) {
<mat-hint class="mt-1 text-muted text-truncate" i18n <mat-hint class="mt-1 text-body-secondary text-truncate" i18n
>Derived from the portfolio you are viewing</mat-hint >Derived from the portfolio you are viewing</mat-hint
> >
} }
@ -60,7 +60,7 @@
<div class="pe-1 w-50"> <div class="pe-1 w-50">
<div i18n>Language</div> <div i18n>Language</div>
@if (isCommunityLanguage()) { @if (isCommunityLanguage()) {
<div class="hint-text text-muted" i18n> <div class="hint-text text-body-secondary" i18n>
If a translation is missing, kindly support us in extending it If a translation is missing, kindly support us in extending it
<a <a
href="https://github.com/ghostfolio/ghostfolio/blob/main/apps/client/src/locales/messages.{{ href="https://github.com/ghostfolio/ghostfolio/blob/main/apps/client/src/locales/messages.{{
@ -154,7 +154,7 @@
<div class="align-items-center d-flex mb-4"> <div class="align-items-center d-flex mb-4">
<div class="pe-1 w-50"> <div class="pe-1 w-50">
<div i18n>Locale</div> <div i18n>Locale</div>
<div class="hint-text text-muted"> <div class="hint-text text-body-secondary">
<ng-container i18n>Date and number format</ng-container> <ng-container i18n>Date and number format</ng-container>
</div> </div>
</div> </div>
@ -176,7 +176,7 @@
<mat-option [value]="locale">{{ locale }}</mat-option> <mat-option [value]="locale">{{ locale }}</mat-option>
} }
</mat-select> </mat-select>
<mat-hint class="d-flex mt-2 text-muted text-truncate"> <mat-hint class="d-flex mt-2 text-body-secondary text-truncate">
<gf-value <gf-value
[deviceType]="deviceType()" [deviceType]="deviceType()"
[isDate]="true" [isDate]="true"
@ -224,7 +224,7 @@
<div class="align-items-center d-flex mt-4 py-1"> <div class="align-items-center d-flex mt-4 py-1">
<div class="pe-1 w-50"> <div class="pe-1 w-50">
<div i18n>Presenter View</div> <div i18n>Presenter View</div>
<div class="hint-text text-muted" i18n> <div class="hint-text text-body-secondary" i18n>
Protection for sensitive information like absolute performances and Protection for sensitive information like absolute performances and
quantity values quantity values
</div> </div>
@ -242,7 +242,7 @@
<div class="d-flex mt-4 py-1"> <div class="d-flex mt-4 py-1">
<div class="pe-1 w-50"> <div class="pe-1 w-50">
<div i18n>Zen Mode</div> <div i18n>Zen Mode</div>
<div class="hint-text text-muted" i18n> <div class="hint-text text-body-secondary" i18n>
Distraction-free experience for turbulent times Distraction-free experience for turbulent times
</div> </div>
</div> </div>
@ -259,7 +259,9 @@
<div class="align-items-center d-flex mt-4 py-1"> <div class="align-items-center d-flex mt-4 py-1">
<div class="pe-1 w-50"> <div class="pe-1 w-50">
<div i18n>Biometric Authentication</div> <div i18n>Biometric Authentication</div>
<div class="hint-text text-muted" i18n>Sign in with fingerprint</div> <div class="hint-text text-body-secondary" i18n>
Sign in with fingerprint
</div>
</div> </div>
<div class="ps-1 w-50"> <div class="ps-1 w-50">
<mat-slide-toggle <mat-slide-toggle
@ -276,7 +278,7 @@
<div class="align-items-center d-flex mt-4 py-1"> <div class="align-items-center d-flex mt-4 py-1">
<div class="pe-1 w-50"> <div class="pe-1 w-50">
<div i18n>Experimental Features</div> <div i18n>Experimental Features</div>
<div class="hint-text text-muted" i18n> <div class="hint-text text-body-secondary" i18n>
Sneak peek at upcoming functionality Sneak peek at upcoming functionality
</div> </div>
</div> </div>
@ -294,7 +296,7 @@
<div class="align-items-center d-flex mt-4 py-1"> <div class="align-items-center d-flex mt-4 py-1">
<div class="pe-1 w-50"> <div class="pe-1 w-50">
<div>Ghostfolio AI</div> <div>Ghostfolio AI</div>
<div class="hint-text text-muted" i18n> <div class="hint-text text-body-secondary" i18n>
Powered by third-party AI providers Powered by third-party AI providers
</div> </div>
</div> </div>
@ -401,7 +403,7 @@
<button color="warn" i18n mat-flat-button [disabled]="true"> <button color="warn" i18n mat-flat-button [disabled]="true">
Close Account Close Account
</button> </button>
<div class="hint-text mt-2 text-muted" i18n> <div class="hint-text mt-2 text-body-secondary" i18n>
For security reasons, please delete all activities and accounts For security reasons, please delete all activities and accounts
first before your Ghostfolio account can be closed. first before your Ghostfolio account can be closed.
</div> </div>

2
apps/client/src/app/pages/about/oss-friends/oss-friends-page.html

@ -5,7 +5,7 @@
<span class="d-none d-sm-block" <span class="d-none d-sm-block"
><ng-container i18n>Our</ng-container> OSS Friends</span ><ng-container i18n>Our</ng-container> OSS Friends</span
> >
<small class="text-muted" i18n <small class="text-body-secondary" i18n
>Discover other exciting Open Source Software projects</small >Discover other exciting Open Source Software projects</small
> >
</h1> </h1>

2
apps/client/src/app/pages/blog/2021/07/hallo-ghostfolio/hallo-ghostfolio-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Hallo Ghostfolio 👋</h1> <h1 class="mb-1">Hallo Ghostfolio 👋</h1>
<div class="text-muted"><small>2021-07-31</small></div> <div class="text-body-secondary"><small>2021-07-31</small></div>
</div> </div>
<section class="mb-4"> <section class="mb-4">
<p> <p>

2
apps/client/src/app/pages/blog/2021/07/hello-ghostfolio/hello-ghostfolio-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Hello Ghostfolio 👋</h1> <h1 class="mb-1">Hello Ghostfolio 👋</h1>
<div class="text-muted"><small>2021-07-31</small></div> <div class="text-body-secondary"><small>2021-07-31</small></div>
</div> </div>
<section class="mb-4"> <section class="mb-4">
<p> <p>

2
apps/client/src/app/pages/blog/2022/01/first-months-in-open-source/first-months-in-open-source-page.html

@ -7,7 +7,7 @@
👻 Ghostfolio – 👻 Ghostfolio –
<span class="text-nowrap">First months in Open Source</span> <span class="text-nowrap">First months in Open Source</span>
</h1> </h1>
<div class="text-muted"><small>2022-01-05</small></div> <div class="text-body-secondary"><small>2022-01-05</small></div>
</div> </div>
<section class="mb-4"> <section class="mb-4">
<p> <p>

2
apps/client/src/app/pages/blog/2022/07/ghostfolio-meets-internet-identity/ghostfolio-meets-internet-identity-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Ghostfolio meets Internet Identity</h1> <h1 class="mb-1">Ghostfolio meets Internet Identity</h1>
<div class="mb-3 text-muted"><small>2022-07-23</small></div> <div class="mb-3 text-body-secondary"><small>2022-07-23</small></div>
<img <img
alt="Ghostfolio meets Internet Identity Teaser" alt="Ghostfolio meets Internet Identity Teaser"
class="border rounded w-100" class="border rounded w-100"

2
apps/client/src/app/pages/blog/2022/07/how-do-i-get-my-finances-in-order/how-do-i-get-my-finances-in-order-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">How do I get my finances in order?</h1> <h1 class="mb-1">How do I get my finances in order?</h1>
<div class="text-muted"><small>2022-07-14</small></div> <div class="text-body-secondary"><small>2022-07-14</small></div>
</div> </div>
<section class="mb-4"> <section class="mb-4">
<p> <p>

2
apps/client/src/app/pages/blog/2022/08/500-stars-on-github/500-stars-on-github-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">500 Stars</h1> <h1 class="mb-1">500 Stars</h1>
<div class="mb-3 text-muted"><small>2022-08-18</small></div> <div class="mb-3 text-body-secondary"><small>2022-08-18</small></div>
<img <img
alt="500 Stars on GitHub Teaser" alt="500 Stars on GitHub Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2022/10/hacktoberfest-2022/hacktoberfest-2022-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Hacktoberfest 2022</h1> <h1 class="mb-1">Hacktoberfest 2022</h1>
<div class="mb-3 text-muted"><small>2022-10-01</small></div> <div class="mb-3 text-body-secondary"><small>2022-10-01</small></div>
<img <img
alt="Hacktoberfest 2022 with Ghostfolio Teaser" alt="Hacktoberfest 2022 with Ghostfolio Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2022/11/black-friday-2022/black-friday-2022-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Black Friday 2022</h1> <h1 class="mb-1">Black Friday 2022</h1>
<div class="mb-3 text-muted"><small>2022-11-13</small></div> <div class="mb-3 text-body-secondary"><small>2022-11-13</small></div>
<img <img
alt="Black Friday 2022 Teaser" alt="Black Friday 2022 Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2022/12/the-importance-of-tracking-your-personal-finances/the-importance-of-tracking-your-personal-finances-page.html

@ -6,7 +6,7 @@
<h1 class="mb-1"> <h1 class="mb-1">
The importance of tracking your personal finances The importance of tracking your personal finances
</h1> </h1>
<div class="mb-3 text-muted"><small>2022-12-26</small></div> <div class="mb-3 text-body-secondary"><small>2022-12-26</small></div>
<img <img
alt="The importance of tracking your personal finances Teaser" alt="The importance of tracking your personal finances Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2023/01/ghostfolio-auf-sackgeld-vorgestellt/ghostfolio-auf-sackgeld-vorgestellt-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Ghostfolio auf Sackgeld.com vorgestellt</h1> <h1 class="mb-1">Ghostfolio auf Sackgeld.com vorgestellt</h1>
<div class="mb-3 text-muted"><small>2023-01-21</small></div> <div class="mb-3 text-body-secondary"><small>2023-01-21</small></div>
<img <img
alt="Ghostfolio auf Sackgeld.com vorgestellt Teaser" alt="Ghostfolio auf Sackgeld.com vorgestellt Teaser"
class="border rounded w-100" class="border rounded w-100"

2
apps/client/src/app/pages/blog/2023/02/ghostfolio-meets-umbrel/ghostfolio-meets-umbrel-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Ghostfolio meets Umbrel</h1> <h1 class="mb-1">Ghostfolio meets Umbrel</h1>
<div class="mb-3 text-muted"><small>2023-02-25</small></div> <div class="mb-3 text-body-secondary"><small>2023-02-25</small></div>
<img <img
alt="Ghostfolio meets Umbrel Teaser" alt="Ghostfolio meets Umbrel Teaser"
class="border rounded w-100" class="border rounded w-100"

2
apps/client/src/app/pages/blog/2023/03/1000-stars-on-github/1000-stars-on-github-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Ghostfolio reaches 1’000 Stars on GitHub</h1> <h1 class="mb-1">Ghostfolio reaches 1’000 Stars on GitHub</h1>
<div class="mb-3 text-muted"><small>2023-03-25</small></div> <div class="mb-3 text-body-secondary"><small>2023-03-25</small></div>
<img <img
alt="1000 Stars on GitHub Teaser" alt="1000 Stars on GitHub Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2023/05/unlock-your-financial-potential-with-ghostfolio/unlock-your-financial-potential-with-ghostfolio-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Unlock your Financial Potential with Ghostfolio</h1> <h1 class="mb-1">Unlock your Financial Potential with Ghostfolio</h1>
<div class="mb-3 text-muted"><small>2023-05-20</small></div> <div class="mb-3 text-body-secondary"><small>2023-05-20</small></div>
<img <img
alt="Unlock your financial potential with Ghostfolio Teaser" alt="Unlock your financial potential with Ghostfolio Teaser"
class="border rounded w-100" class="border rounded w-100"

2
apps/client/src/app/pages/blog/2023/07/exploring-the-path-to-fire/exploring-the-path-to-fire-page.html

@ -7,7 +7,7 @@
Exploring the Path to Financial Independence and Retiring Early Exploring the Path to Financial Independence and Retiring Early
(FIRE) (FIRE)
</h1> </h1>
<div class="mb-3 text-muted"><small>2023-07-01</small></div> <div class="mb-3 text-body-secondary"><small>2023-07-01</small></div>
<img <img
alt="Exploring the Path to Financial Independence and Retiring Early (FIRE) Teaser" alt="Exploring the Path to Financial Independence and Retiring Early (FIRE) Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2023/08/ghostfolio-joins-oss-friends/ghostfolio-joins-oss-friends-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Ghostfolio joins OSS Friends</h1> <h1 class="mb-1">Ghostfolio joins OSS Friends</h1>
<div class="mb-3 text-muted"><small>2023-08-23</small></div> <div class="mb-3 text-body-secondary"><small>2023-08-23</small></div>
<img <img
alt="Ghostfolio joins OSS Friends Teaser" alt="Ghostfolio joins OSS Friends Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2023/09/ghostfolio-2/ghostfolio-2-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Ghostfolio 2.0</h1> <h1 class="mb-1">Ghostfolio 2.0</h1>
<div class="mb-3 text-muted"><small>2023-09-09</small></div> <div class="mb-3 text-body-secondary"><small>2023-09-09</small></div>
<img <img
alt="Ghostfolio 2.0 Teaser" alt="Ghostfolio 2.0 Teaser"
class="border rounded w-100" class="border rounded w-100"

2
apps/client/src/app/pages/blog/2023/09/hacktoberfest-2023/hacktoberfest-2023-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Hacktoberfest 2023</h1> <h1 class="mb-1">Hacktoberfest 2023</h1>
<div class="mb-3 text-muted"><small>2023-09-26</small></div> <div class="mb-3 text-body-secondary"><small>2023-09-26</small></div>
<img <img
alt="Hacktoberfest 2023 with Ghostfolio Teaser" alt="Hacktoberfest 2023 with Ghostfolio Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2023/11/black-week-2023/black-week-2023-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Black Week 2023</h1> <h1 class="mb-1">Black Week 2023</h1>
<div class="mb-3 text-muted"><small>2023-11-19</small></div> <div class="mb-3 text-body-secondary"><small>2023-11-19</small></div>
<img <img
alt="Black Week 2023 Teaser" alt="Black Week 2023 Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2023/11/hacktoberfest-2023-debriefing/hacktoberfest-2023-debriefing-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Hacktoberfest 2023 Debriefing</h1> <h1 class="mb-1">Hacktoberfest 2023 Debriefing</h1>
<div class="mb-3 text-muted"><small>2023-11-05</small></div> <div class="mb-3 text-body-secondary"><small>2023-11-05</small></div>
<img <img
alt="Hacktoberfest 2023 with Ghostfolio Teaser" alt="Hacktoberfest 2023 with Ghostfolio Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2024/09/hacktoberfest-2024/hacktoberfest-2024-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Hacktoberfest 2024</h1> <h1 class="mb-1">Hacktoberfest 2024</h1>
<div class="mb-3 text-muted"><small>2024-09-24</small></div> <div class="mb-3 text-body-secondary"><small>2024-09-24</small></div>
<img <img
alt="Hacktoberfest 2024 with Ghostfolio Teaser" alt="Hacktoberfest 2024 with Ghostfolio Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2024/11/black-weeks-2024/black-weeks-2024-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Black Weeks 2024</h1> <h1 class="mb-1">Black Weeks 2024</h1>
<div class="mb-3 text-muted"><small>2024-11-16</small></div> <div class="mb-3 text-body-secondary"><small>2024-11-16</small></div>
<img <img
alt="Black Week 2024 Teaser" alt="Black Week 2024 Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2025/09/hacktoberfest-2025/hacktoberfest-2025-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Hacktoberfest 2025</h1> <h1 class="mb-1">Hacktoberfest 2025</h1>
<div class="mb-3 text-muted"><small>2025-09-27</small></div> <div class="mb-3 text-body-secondary"><small>2025-09-27</small></div>
<img <img
alt="Hacktoberfest 2025 with Ghostfolio Teaser" alt="Hacktoberfest 2025 with Ghostfolio Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2025/11/black-weeks-2025/black-weeks-2025-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Black Weeks 2025</h1> <h1 class="mb-1">Black Weeks 2025</h1>
<div class="mb-3 text-muted"><small>2025-11-16</small></div> <div class="mb-3 text-body-secondary"><small>2025-11-16</small></div>
<img <img
alt="Black Week 2025 Teaser" alt="Black Week 2025 Teaser"
class="rounded w-100" class="rounded w-100"

2
apps/client/src/app/pages/blog/2026/04/ghostfolio-3/ghostfolio-3-page.html

@ -4,7 +4,7 @@
<article> <article>
<div class="mb-4 text-center"> <div class="mb-4 text-center">
<h1 class="mb-1">Ghostfolio 3.0</h1> <h1 class="mb-1">Ghostfolio 3.0</h1>
<div class="mb-3 text-muted"><small>2026-04-23</small></div> <div class="mb-3 text-body-secondary"><small>2026-04-23</small></div>
<img <img
alt="Ghostfolio 3.0 Teaser" alt="Ghostfolio 3.0 Teaser"
class="border rounded w-100" class="border rounded w-100"

98
apps/client/src/app/pages/blog/blog-page.html

@ -3,7 +3,7 @@
<div class="col"> <div class="col">
<h1 class="h3 line-height-1 mb-4 text-center"> <h1 class="h3 line-height-1 mb-4 text-center">
<span class="d-none d-sm-block" i18n>Blog</span> <span class="d-none d-sm-block" i18n>Blog</span>
<small class="text-muted" i18n <small class="text-body-secondary" i18n
>Discover the latest Ghostfolio updates and insights on personal >Discover the latest Ghostfolio updates and insights on personal
finance</small finance</small
> >
@ -20,11 +20,11 @@
<div class="h6 m-0 text-truncate"> <div class="h6 m-0 text-truncate">
Announcing Ghostfolio 3.0 Announcing Ghostfolio 3.0
</div> </div>
<div class="d-flex text-muted">2026-04-03</div> <div class="d-flex text-body-secondary">2026-04-03</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -45,11 +45,11 @@
> >
<div class="flex-grow-1 overflow-hidden"> <div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">Black Weeks 2025</div> <div class="h6 m-0 text-truncate">Black Weeks 2025</div>
<div class="d-flex text-muted">2025-11-15</div> <div class="d-flex text-body-secondary">2025-11-15</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -70,11 +70,11 @@
> >
<div class="flex-grow-1 overflow-hidden"> <div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">Hacktoberfest 2025</div> <div class="h6 m-0 text-truncate">Hacktoberfest 2025</div>
<div class="d-flex text-muted">2025-09-27</div> <div class="d-flex text-body-secondary">2025-09-27</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -95,11 +95,11 @@
> >
<div class="flex-grow-1 overflow-hidden"> <div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">Black Weeks 2024</div> <div class="h6 m-0 text-truncate">Black Weeks 2024</div>
<div class="d-flex text-muted">2024-11-16</div> <div class="d-flex text-body-secondary">2024-11-16</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -120,11 +120,11 @@
> >
<div class="flex-grow-1 overflow-hidden"> <div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">Hacktoberfest 2024</div> <div class="h6 m-0 text-truncate">Hacktoberfest 2024</div>
<div class="d-flex text-muted">2024-09-24</div> <div class="d-flex text-body-secondary">2024-09-24</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -145,11 +145,11 @@
> >
<div class="flex-grow-1 overflow-hidden"> <div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">Black Week 2023</div> <div class="h6 m-0 text-truncate">Black Week 2023</div>
<div class="d-flex text-muted">2023-11-19</div> <div class="d-flex text-body-secondary">2023-11-19</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -172,11 +172,11 @@
<div class="h6 m-0 text-truncate"> <div class="h6 m-0 text-truncate">
Hacktoberfest 2023 Debriefing Hacktoberfest 2023 Debriefing
</div> </div>
<div class="d-flex text-muted">2023-11-05</div> <div class="d-flex text-body-secondary">2023-11-05</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -196,11 +196,11 @@
> >
<div class="flex-grow-1 overflow-hidden"> <div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">Hacktoberfest 2023</div> <div class="h6 m-0 text-truncate">Hacktoberfest 2023</div>
<div class="d-flex text-muted">2023-09-26</div> <div class="d-flex text-body-secondary">2023-09-26</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -222,11 +222,11 @@
<div class="h6 m-0 text-truncate"> <div class="h6 m-0 text-truncate">
Announcing Ghostfolio 2.0 Announcing Ghostfolio 2.0
</div> </div>
<div class="d-flex text-muted">2023-09-09</div> <div class="d-flex text-body-secondary">2023-09-09</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -248,11 +248,11 @@
<div class="h6 m-0 text-truncate"> <div class="h6 m-0 text-truncate">
Ghostfolio joins OSS Friends Ghostfolio joins OSS Friends
</div> </div>
<div class="d-flex text-muted">2023-08-23</div> <div class="d-flex text-body-secondary">2023-08-23</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -275,11 +275,11 @@
Exploring the Path to Financial Independence and Retiring Exploring the Path to Financial Independence and Retiring
Early (FIRE) Early (FIRE)
</div> </div>
<div class="d-flex text-muted">2023-07-01</div> <div class="d-flex text-body-secondary">2023-07-01</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -301,11 +301,11 @@
<div class="h6 m-0 text-truncate"> <div class="h6 m-0 text-truncate">
Unlock your Financial Potential with Ghostfolio Unlock your Financial Potential with Ghostfolio
</div> </div>
<div class="d-flex text-muted">2023-05-20</div> <div class="d-flex text-body-secondary">2023-05-20</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -327,11 +327,11 @@
<div class="h6 m-0 text-truncate"> <div class="h6 m-0 text-truncate">
Ghostfolio reaches 1’000 Stars on GitHub Ghostfolio reaches 1’000 Stars on GitHub
</div> </div>
<div class="d-flex text-muted">2023-03-25</div> <div class="d-flex text-body-secondary">2023-03-25</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -353,11 +353,11 @@
<div class="h6 m-0 text-truncate"> <div class="h6 m-0 text-truncate">
Ghostfolio meets Umbrel Ghostfolio meets Umbrel
</div> </div>
<div class="d-flex text-muted">2023-02-25</div> <div class="d-flex text-body-secondary">2023-02-25</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -379,11 +379,11 @@
<div class="h6 m-0 text-truncate"> <div class="h6 m-0 text-truncate">
Ghostfolio auf Sackgeld.com vorgestellt Ghostfolio auf Sackgeld.com vorgestellt
</div> </div>
<div class="d-flex text-muted">2023-01-21</div> <div class="d-flex text-body-secondary">2023-01-21</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -405,11 +405,11 @@
<div class="h6 m-0 text-truncate"> <div class="h6 m-0 text-truncate">
The importance of tracking your personal finances The importance of tracking your personal finances
</div> </div>
<div class="d-flex text-muted">2022-12-26</div> <div class="d-flex text-body-secondary">2022-12-26</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -430,11 +430,11 @@
> >
<div class="flex-grow-1 overflow-hidden"> <div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">Black Friday 2022</div> <div class="h6 m-0 text-truncate">Black Friday 2022</div>
<div class="d-flex text-muted">2022-11-13</div> <div class="d-flex text-body-secondary">2022-11-13</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -455,11 +455,11 @@
> >
<div class="flex-grow-1 overflow-hidden"> <div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">Hacktoberfest 2022</div> <div class="h6 m-0 text-truncate">Hacktoberfest 2022</div>
<div class="d-flex text-muted">2022-10-01</div> <div class="d-flex text-body-secondary">2022-10-01</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -479,11 +479,11 @@
> >
<div class="flex-grow-1 overflow-hidden"> <div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">500 Stars on GitHub</div> <div class="h6 m-0 text-truncate">500 Stars on GitHub</div>
<div class="d-flex text-muted">2022-08-18</div> <div class="d-flex text-body-secondary">2022-08-18</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -505,11 +505,11 @@
<div class="h6 m-0 text-truncate"> <div class="h6 m-0 text-truncate">
Ghostfolio meets Internet Identity Ghostfolio meets Internet Identity
</div> </div>
<div class="d-flex text-muted">2022-07-23</div> <div class="d-flex text-body-secondary">2022-07-23</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -531,11 +531,11 @@
<div class="h6 m-0 text-truncate"> <div class="h6 m-0 text-truncate">
How do I get my finances in order? How do I get my finances in order?
</div> </div>
<div class="d-flex text-muted">2022-07-14</div> <div class="d-flex text-body-secondary">2022-07-14</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -557,11 +557,11 @@
<div class="h6 m-0 text-truncate"> <div class="h6 m-0 text-truncate">
First months in Open Source First months in Open Source
</div> </div>
<div class="d-flex text-muted">2022-01-05</div> <div class="d-flex text-body-secondary">2022-01-05</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -581,11 +581,11 @@
> >
<div class="flex-grow-1 overflow-hidden"> <div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">Hello Ghostfolio</div> <div class="h6 m-0 text-truncate">Hello Ghostfolio</div>
<div class="d-flex text-muted">2021-07-31</div> <div class="d-flex text-body-secondary">2021-07-31</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />
@ -605,11 +605,11 @@
> >
<div class="flex-grow-1 overflow-hidden"> <div class="flex-grow-1 overflow-hidden">
<div class="h6 m-0 text-truncate">Hallo Ghostfolio</div> <div class="h6 m-0 text-truncate">Hallo Ghostfolio</div>
<div class="d-flex text-muted">2021-07-31</div> <div class="d-flex text-body-secondary">2021-07-31</div>
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />

2
apps/client/src/app/pages/features/features-page.html

@ -3,7 +3,7 @@
<div class="col"> <div class="col">
<h1 class="h3 line-height-1 mb-4 text-center"> <h1 class="h3 line-height-1 mb-4 text-center">
<span class="d-none d-sm-block" i18n>Features</span> <span class="d-none d-sm-block" i18n>Features</span>
<small class="text-muted" i18n> <small class="text-body-secondary" i18n>
Check out the numerous features of Ghostfolio to manage your wealth Check out the numerous features of Ghostfolio to manage your wealth
</small> </small>
</h1> </h1>

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

@ -44,7 +44,7 @@
} }
@if (hasPermissionForDemo) { @if (hasPermissionForDemo) {
@if (hasPermissionToCreateUser) { @if (hasPermissionToCreateUser) {
<div class="mx-3 text-muted" i18n>or</div> <div class="mx-3 text-body-secondary" i18n>or</div>
} }
<a i18n mat-stroked-button [routerLink]="routerLinkDemo">Live Demo</a> <a i18n mat-stroked-button [routerLink]="routerLinkDemo">Live Demo</a>
} }
@ -114,7 +114,7 @@
} }
<div class="row mb-5"> <div class="row mb-5">
<div class="col-12 text-center text-muted"> <div class="col-12 text-body-secondary text-center">
<small i18n>As seen in</small> <small i18n>As seen in</small>
</div> </div>
<div class="col-12"> <div class="col-12">
@ -242,7 +242,7 @@
/> />
<div> <div>
<div>{{ testimonial.quote }}</div> <div>{{ testimonial.quote }}</div>
<div class="mt-2 text-muted"> <div class="mt-2 text-body-secondary">
— —
@if (testimonial.url) { @if (testimonial.url) {
<a target="_blank" [href]="testimonial.url">{{ <a target="_blank" [href]="testimonial.url">{{
@ -292,11 +292,11 @@
<mat-card-content class="d-flex flex-row"> <mat-card-content class="d-flex flex-row">
<div class="flex-grow-1"> <div class="flex-grow-1">
<div class="fw-bold" i18n>Sign up anonymously*</div> <div class="fw-bold" i18n>Sign up anonymously*</div>
<div class="text-muted" i18n> <div class="text-body-secondary" i18n>
<small>* no e-mail address nor credit card required</small> <small>* no e-mail address nor credit card required</small>
</div> </div>
</div> </div>
<div class="ps-2 text-end text-muted">1</div> <div class="ps-2 text-body-secondary text-end">1</div>
</mat-card-content> </mat-card-content>
</mat-card> </mat-card>
</div> </div>
@ -308,7 +308,7 @@
Add any of your historical transactions Add any of your historical transactions
</div> </div>
</div> </div>
<div class="ps-2 text-end text-muted">2</div> <div class="ps-2 text-body-secondary text-end">2</div>
</mat-card-content> </mat-card-content>
</mat-card> </mat-card>
</div> </div>
@ -320,7 +320,7 @@
Get valuable insights of your portfolio composition Get valuable insights of your portfolio composition
</div> </div>
</div> </div>
<div class="ps-2 text-end text-muted">3</div> <div class="ps-2 text-body-secondary text-end">3</div>
</mat-card-content> </mat-card-content>
</mat-card> </mat-card>
</div> </div>
@ -348,7 +348,7 @@
>Get Started</a >Get Started</a
> >
@if (hasPermissionForDemo) { @if (hasPermissionForDemo) {
<div class="mx-3 text-muted" i18n>or</div> <div class="mx-3 text-body-secondary" i18n>or</div>
<a i18n mat-stroked-button [routerLink]="routerLinkDemo" <a i18n mat-stroked-button [routerLink]="routerLinkDemo"
>Live Demo</a >Live Demo</a
> >

32
apps/client/src/app/pages/portfolio/activities/create-or-update-activity-dialog/create-or-update-activity-dialog.html

@ -21,7 +21,9 @@
<span <span
><b>{{ typesTranslationMap['BUY'] }}</b></span ><b>{{ typesTranslationMap['BUY'] }}</b></span
> >
<small class="d-block line-height-1 text-muted text-nowrap" i18n <small
class="d-block line-height-1 text-body-secondary text-nowrap"
i18n
>Stocks, ETFs, bonds, cryptocurrencies, commodities</small >Stocks, ETFs, bonds, cryptocurrencies, commodities</small
> >
</mat-option> </mat-option>
@ -29,7 +31,9 @@
<span <span
><b>{{ typesTranslationMap['FEE'] }}</b></span ><b>{{ typesTranslationMap['FEE'] }}</b></span
> >
<small class="d-block line-height-1 text-muted text-nowrap" i18n <small
class="d-block line-height-1 text-body-secondary text-nowrap"
i18n
>One-time fee, annual account fees</small >One-time fee, annual account fees</small
> >
</mat-option> </mat-option>
@ -37,7 +41,9 @@
<span <span
><b>{{ typesTranslationMap['DIVIDEND'] }}</b></span ><b>{{ typesTranslationMap['DIVIDEND'] }}</b></span
> >
<small class="d-block line-height-1 text-muted text-nowrap" i18n <small
class="d-block line-height-1 text-body-secondary text-nowrap"
i18n
>Distribution of corporate earnings</small >Distribution of corporate earnings</small
> >
</mat-option> </mat-option>
@ -45,7 +51,9 @@
<span <span
><b>{{ typesTranslationMap['INTEREST'] }}</b></span ><b>{{ typesTranslationMap['INTEREST'] }}</b></span
> >
<small class="d-block line-height-1 text-muted text-nowrap" i18n <small
class="d-block line-height-1 text-body-secondary text-nowrap"
i18n
>Revenue for lending out money</small >Revenue for lending out money</small
> >
</mat-option> </mat-option>
@ -53,7 +61,9 @@
<span <span
><b>{{ typesTranslationMap['LIABILITY'] }}</b></span ><b>{{ typesTranslationMap['LIABILITY'] }}</b></span
> >
<small class="d-block line-height-1 text-muted text-nowrap" i18n <small
class="d-block line-height-1 text-body-secondary text-nowrap"
i18n
>Mortgages, personal loans, credit cards</small >Mortgages, personal loans, credit cards</small
> >
</mat-option> </mat-option>
@ -61,7 +71,9 @@
<span <span
><b>{{ typesTranslationMap['SELL'] }}</b></span ><b>{{ typesTranslationMap['SELL'] }}</b></span
> >
<small class="d-block line-height-1 text-muted text-nowrap" i18n <small
class="d-block line-height-1 text-body-secondary text-nowrap"
i18n
>Stocks, ETFs, bonds, cryptocurrencies, commodities</small >Stocks, ETFs, bonds, cryptocurrencies, commodities</small
> >
</mat-option> </mat-option>
@ -69,7 +81,9 @@
<span <span
><b>{{ typesTranslationMap['VALUABLE'] }}</b></span ><b>{{ typesTranslationMap['VALUABLE'] }}</b></span
> >
<small class="d-block line-height-1 text-muted text-nowrap" i18n <small
class="d-block line-height-1 text-body-secondary text-nowrap"
i18n
>Luxury items, real estate, private companies</small >Luxury items, real estate, private companies</small
> >
</mat-option> </mat-option>
@ -144,7 +158,7 @@
/> />
<mat-datepicker-toggle class="me-2" matSuffix [for]="date"> <mat-datepicker-toggle class="me-2" matSuffix [for]="date">
<ion-icon <ion-icon
class="text-muted" class="text-body-secondary"
matDatepickerToggleIcon matDatepickerToggleIcon
name="calendar-clear-outline" name="calendar-clear-outline"
/> />
@ -222,7 +236,7 @@
type="button" type="button"
(click)="applyCurrentMarketPrice()" (click)="applyCurrentMarketPrice()"
> >
<ion-icon class="text-muted" name="refresh-outline" /> <ion-icon class="text-body-secondary" name="refresh-outline" />
</button> </button>
} }
</div> </div>

8
apps/client/src/app/pages/portfolio/activities/import-activities-dialog/import-activities-dialog.html

@ -51,7 +51,7 @@
><b>{{ holding.assetProfile.name }}</b></span ><b>{{ holding.assetProfile.name }}</b></span
> >
<br /> <br />
<small class="text-muted" <small class="text-body-secondary"
>{{ holding.assetProfile.symbol }} · >{{ holding.assetProfile.symbol }} ·
{{ holding.assetProfile.currency }}</small {{ holding.assetProfile.currency }}</small
> >
@ -77,14 +77,14 @@
<div class="d-flex flex-column justify-content-center"> <div class="d-flex flex-column justify-content-center">
@if (isLoading) { @if (isLoading) {
<div <div
class="align-items-center d-flex drop-area flex-column justify-content-center p-4 text-center text-muted" class="align-items-center d-flex drop-area flex-column justify-content-center p-4 text-body-secondary text-center"
> >
<mat-spinner [diameter]="20" /> <mat-spinner [diameter]="20" />
<span i18n>Ghostfolio AI is processing the file...</span> <span i18n>Ghostfolio AI is processing the file...</span>
</div> </div>
} @else { } @else {
<button <button
class="drop-area p-4 text-center text-muted" class="drop-area p-4 text-body-secondary text-center"
gfFileDrop gfFileDrop
(click)="onSelectFile(stepper)" (click)="onSelectFile(stepper)"
(filesDropped)="onFilesDropped({ stepper, files: $event })" (filesDropped)="onFilesDropped({ stepper, files: $event })"
@ -139,7 +139,7 @@
<span <span
class="align-items-center d-flex" class="align-items-center d-flex"
matTooltipPosition="above" matTooltipPosition="above"
[class.text-muted]="isLoading" [class.text-body-secondary]="isLoading"
[matTooltip]="ghostfolioAiTooltip" [matTooltip]="ghostfolioAiTooltip"
> >
<ion-icon name="information-circle-outline" /> <ion-icon name="information-circle-outline" />

6
apps/client/src/app/pages/portfolio/analysis/analysis-page.html

@ -259,7 +259,7 @@
PerformanceCalculationType.ROAI PerformanceCalculationType.ROAI
) { ) {
<abbr <abbr
class="d-none d-sm-inline-block initialism ms-2 text-muted" class="d-none d-sm-inline-block initialism ms-2 text-body-secondary"
i18n-title i18n-title
title="Return on Average Investment (total return with dividends)" title="Return on Average Investment (total return with dividends)"
>(ROAI)</abbr >(ROAI)</abbr
@ -280,7 +280,7 @@
/> />
</div> </div>
</div> </div>
<div class="d-flex ms-3 py-1 text-muted"> <div class="d-flex ms-3 py-1 text-body-secondary">
<div <div
class="align-items-center d-flex flex-grow-1 me-2 text-truncate" class="align-items-center d-flex flex-grow-1 me-2 text-truncate"
> >
@ -301,7 +301,7 @@
/> />
</div> </div>
</div> </div>
<div class="d-flex ms-3 py-1 text-muted"> <div class="d-flex ms-3 py-1 text-body-secondary">
<div class="flex-grow-1 me-2 text-truncate"> <div class="flex-grow-1 me-2 text-truncate">
<ng-container i18n>thereof Dividend Performance</ng-container> <ng-container i18n>thereof Dividend Performance</ng-container>
</div> </div>

2
apps/client/src/app/pages/portfolio/fire/fire-page.html

@ -63,7 +63,7 @@
/> />
</div> </div>
} @else { } @else {
<div [class.text-muted]="user?.subscription?.type === 'Basic'"> <div [class.text-body-secondary]="user?.subscription?.type === 'Basic'">
<div class="mb-2"> <div class="mb-2">
<ng-container i18n <ng-container i18n
>If you retire today, you would be able to withdraw >If you retire today, you would be able to withdraw

5
apps/client/src/app/pages/portfolio/x-ray/x-ray-page.component.html

@ -49,7 +49,10 @@
statistics?.rulesActiveCount === 0 || statistics?.rulesActiveCount === 0 ||
statistics?.rulesFulfilledCount === 0 statistics?.rulesFulfilledCount === 0
) { ) {
<ion-icon class="text-muted" name="remove-circle-outline" /> <ion-icon
class="text-body-secondary"
name="remove-circle-outline"
/>
} @else if ( } @else if (
statistics?.rulesFulfilledCount === statistics?.rulesActiveCount statistics?.rulesFulfilledCount === statistics?.rulesActiveCount
) { ) {

10
apps/client/src/app/pages/pricing/pricing-page.html

@ -90,7 +90,7 @@
@if (user?.subscription?.type === 'Basic') { @if (user?.subscription?.type === 'Basic') {
<div class="d-none d-lg-block invisible mt-3 text-center"> <div class="d-none d-lg-block invisible mt-3 text-center">
<a color="primary" mat-flat-button>&nbsp;</a> <a color="primary" mat-flat-button>&nbsp;</a>
<p class="m-0 text-muted"> <p class="m-0 text-body-secondary">
<small>&nbsp;</small> <small>&nbsp;</small>
</p> </p>
</div> </div>
@ -156,7 +156,7 @@
@if (user?.subscription?.type === 'Basic') { @if (user?.subscription?.type === 'Basic') {
<div class="d-none d-lg-block invisible mt-3 text-center"> <div class="d-none d-lg-block invisible mt-3 text-center">
<a color="primary" mat-flat-button>&nbsp;</a> <a color="primary" mat-flat-button>&nbsp;</a>
<p class="m-0 text-muted"> <p class="m-0 text-body-secondary">
<small>&nbsp;</small> <small>&nbsp;</small>
</p> </p>
</div> </div>
@ -264,7 +264,7 @@
<p class="h5 text-end"> <p class="h5 text-end">
<span class="fw-normal"> <span class="fw-normal">
@if (coupon) { @if (coupon) {
<del class="text-muted" <del class="text-body-secondary"
>{{ baseCurrency }}&nbsp;{{ price }}</del >{{ baseCurrency }}&nbsp;{{ price }}</del
>&nbsp;{{ baseCurrency }}&nbsp;<strong>{{ >&nbsp;{{ baseCurrency }}&nbsp;<strong>{{
price - coupon price - coupon
@ -293,7 +293,7 @@
<ng-container i18n>Upgrade Plan</ng-container> <ng-container i18n>Upgrade Plan</ng-container>
} }
</button> </button>
<p class="m-0 text-muted"> <p class="m-0 text-body-secondary">
<small i18n>One-time payment, no auto-renewal.</small> <small i18n>One-time payment, no auto-renewal.</small>
</p> </p>
</div> </div>
@ -371,7 +371,7 @@
[routerLink]="routerLinkRegister" [routerLink]="routerLinkRegister"
>Get Started</a >Get Started</a
> >
<p class="m-0 text-muted"><small i18n>It’s free.</small></p> <p class="m-0 text-body-secondary"><small i18n>It’s free.</small></p>
</div> </div>
</div> </div>
} }

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

@ -27,7 +27,7 @@
</button> </button>
} }
@if (hasPermissionForAuthToken && hasPermissionForAuthGoogle) { @if (hasPermissionForAuthToken && hasPermissionForAuthGoogle) {
<div class="my-3 text-muted" i18n>or</div> <div class="my-3 text-body-secondary" i18n>or</div>
} }
@if (hasPermissionForAuthGoogle) { @if (hasPermissionForAuthGoogle) {
<a <a

2
apps/client/src/app/pages/resources/personal-finance-tools/personal-finance-tools-page.html

@ -45,7 +45,7 @@
</div> </div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<ion-icon <ion-icon
class="chevron text-muted" class="chevron text-body-secondary"
name="chevron-forward-outline" name="chevron-forward-outline"
size="small" size="small"
/> />

4
apps/client/src/app/pages/resources/personal-finance-tools/product-page.html

@ -9,7 +9,9 @@
</h1> </h1>
</div> </div>
@if (product2().isArchived) { @if (product2().isArchived) {
<div class="info-container my-4 p-2 rounded text-center text-muted"> <div
class="info-container my-4 p-2 rounded text-body-secondary text-center"
>
<ng-container i18n>This page has been archived.</ng-container> <ng-container i18n>This page has been archived.</ng-container>
</div> </div>
} }

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

@ -20,7 +20,7 @@
> >
<ng-container i18n>Try again</ng-container> <ng-container i18n>Try again</ng-container>
</button> </button>
<div class="my-2 text-muted"> <div class="my-2 text-body-secondary">
<ng-container i18n>or</ng-container> <ng-container i18n>or</ng-container>
</div> </div>
<button mat-stroked-button (click)="deregisterDevice()"> <button mat-stroked-button (click)="deregisterDevice()">

2
libs/ui/src/lib/account-balances/account-balances.component.html

@ -24,7 +24,7 @@
/> />
<mat-datepicker-toggle class="me-2" matSuffix [for]="date"> <mat-datepicker-toggle class="me-2" matSuffix [for]="date">
<ion-icon <ion-icon
class="text-muted" class="text-body-secondary"
matDatepickerToggleIcon matDatepickerToggleIcon
name="calendar-clear-outline" name="calendar-clear-outline"
/> />

2
libs/ui/src/lib/account-selector/account-selector.component.html

@ -39,7 +39,7 @@
<div class="line-height-1"> <div class="line-height-1">
<span>{{ account.name }}</span> <span>{{ account.name }}</span>
<br /> <br />
<small class="text-muted"> <small class="text-body-secondary">
@if (account.platform?.name) { @if (account.platform?.name) {
{{ account.platform?.name }} · {{ account.platform?.name }} ·
} }

4
libs/ui/src/lib/activities-table/activities-table.component.html

@ -196,7 +196,9 @@
!isUUID(element.assetProfile?.symbol) !isUUID(element.assetProfile?.symbol)
) { ) {
<div> <div>
<small class="text-muted">{{ element.assetProfile?.symbol }}</small> <small class="text-body-secondary">{{
element.assetProfile?.symbol
}}</small>
</div> </div>
} }
</td> </td>

2
libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.html

@ -7,7 +7,7 @@
><span>{{ item?.name }}</span> ><span>{{ item?.name }}</span>
@if (item && isAsset(item)) { @if (item && isAsset(item)) {
<br /> <br />
<small class="text-muted" <small class="text-body-secondary"
>{{ item?.symbol }} >{{ item?.symbol }}
@if (item.currency) { @if (item.currency) {
· {{ item.currency }} · {{ item.currency }}

4
libs/ui/src/lib/assistant/assistant-list-item/assistant-list-item.scss

@ -8,7 +8,7 @@
color: rgba(var(--light-primary-text)); color: rgba(var(--light-primary-text));
font-weight: bold; font-weight: bold;
.text-muted { .text-body-secondary {
color: rgba(var(--light-primary-text)) !important; color: rgba(var(--light-primary-text)) !important;
} }
} }
@ -20,7 +20,7 @@
a { a {
color: rgba(var(--dark-primary-text)); color: rgba(var(--dark-primary-text));
.text-muted { .text-body-secondary {
color: rgba(var(--dark-primary-text)) !important; color: rgba(var(--dark-primary-text)) !important;
} }
} }

12
libs/ui/src/lib/assistant/assistant.html

@ -49,13 +49,15 @@
searchResults.holdings?.length === 0 && searchResults.holdings?.length === 0 &&
searchResults.quickLinks?.length === 0 searchResults.quickLinks?.length === 0
) { ) {
<div class="px-3 py-1 text-muted" i18n>No results found...</div> <div class="px-3 py-1 text-body-secondary" i18n>
No results found...
</div>
} @else { } @else {
@if ( @if (
isLoading.quickLinks || searchResults?.quickLinks?.length !== 0 isLoading.quickLinks || searchResults?.quickLinks?.length !== 0
) { ) {
<div class="mb-2"> <div class="mb-2">
<div class="fw-bold px-3 text-muted title"> <div class="fw-bold px-3 text-body-secondary title">
<ng-container i18n>Quick Links</ng-container> <ng-container i18n>Quick Links</ng-container>
</div> </div>
@for ( @for (
@ -81,7 +83,7 @@
} }
@if (isLoading.accounts || searchResults?.accounts?.length !== 0) { @if (isLoading.accounts || searchResults?.accounts?.length !== 0) {
<div> <div>
<div class="fw-bold px-3 text-muted title"> <div class="fw-bold px-3 text-body-secondary title">
<ng-container i18n>Accounts</ng-container> <ng-container i18n>Accounts</ng-container>
</div> </div>
@for ( @for (
@ -107,7 +109,7 @@
} }
@if (isLoading.holdings || searchResults?.holdings?.length !== 0) { @if (isLoading.holdings || searchResults?.holdings?.length !== 0) {
<div> <div>
<div class="fw-bold px-3 text-muted title"> <div class="fw-bold px-3 text-body-secondary title">
<ng-container i18n>Holdings</ng-container> <ng-container i18n>Holdings</ng-container>
</div> </div>
@for ( @for (
@ -137,7 +139,7 @@
searchResults?.assetProfiles?.length !== 0) searchResults?.assetProfiles?.length !== 0)
) { ) {
<div class="mt-2"> <div class="mt-2">
<div class="fw-bold px-3 text-muted title"> <div class="fw-bold px-3 text-body-secondary title">
<ng-container i18n>Asset Profiles</ng-container> <ng-container i18n>Asset Profiles</ng-container>
</div> </div>
@for ( @for (

4
libs/ui/src/lib/benchmark/benchmark.component.html

@ -32,7 +32,7 @@
</div> </div>
@if (showSymbol()) { @if (showSymbol()) {
<div> <div>
<small class="text-muted">{{ element?.symbol }}</small> <small class="text-body-secondary">{{ element?.symbol }}</small>
</div> </div>
} }
</td> </td>
@ -226,7 +226,7 @@
}" }"
/> />
} @else if (benchmarks()?.length === 0) { } @else if (benchmarks()?.length === 0) {
<div class="p-3 text-center text-muted"> <div class="p-3 text-body-secondary text-center">
<small i18n>No data available</small> <small i18n>No data available</small>
</div> </div>
} }

2
libs/ui/src/lib/data-provider-credits/data-provider-credits.component.html

@ -1,4 +1,4 @@
<small class="text-muted"> <small class="text-body-secondary">
<ng-container i18n>Market data provided by</ng-container>{{ ' ' }} <ng-container i18n>Market data provided by</ng-container>{{ ' ' }}
@for ( @for (
dataProviderInfo of dataProviderInfos; dataProviderInfo of dataProviderInfos;

2
libs/ui/src/lib/fear-and-greed-index/fear-and-greed-index.component.html

@ -13,7 +13,7 @@
<div class="h4 mb-0"> <div class="h4 mb-0">
<span class="me-2">{{ fearAndGreedIndexText() }}</span> <span class="me-2">{{ fearAndGreedIndexText() }}</span>
@let value = fearAndGreedIndex() | number: '1.0-0'; @let value = fearAndGreedIndex() | number: '1.0-0';
<small class="text-muted" <small class="text-body-secondary"
><span [class.fw-bold]="value">{{ value ?? placeholder }}</span ><span [class.fw-bold]="value">{{ value ?? placeholder }}</span
>/100</small >/100</small
> >

2
libs/ui/src/lib/fire-calculator/fire-calculator.component.html

@ -45,7 +45,7 @@
[for]="date" [for]="date"
> >
<ion-icon <ion-icon
class="text-muted" class="text-body-secondary"
matDatepickerToggleIcon matDatepickerToggleIcon
name="calendar-clear-outline" name="calendar-clear-outline"
/> />

4
libs/ui/src/lib/historical-market-data-editor/historical-market-data-editor-dialog/historical-market-data-editor-dialog.html

@ -11,7 +11,7 @@
<input formControlName="date" matInput [matDatepicker]="date" /> <input formControlName="date" matInput [matDatepicker]="date" />
<mat-datepicker-toggle class="me-2" matSuffix [for]="date"> <mat-datepicker-toggle class="me-2" matSuffix [for]="date">
<ion-icon <ion-icon
class="text-muted" class="text-body-secondary"
matDatepickerToggleIcon matDatepickerToggleIcon
name="calendar-clear-outline" name="calendar-clear-outline"
/> />
@ -33,7 +33,7 @@
type="button" type="button"
(click)="onFetchSymbolForDate()" (click)="onFetchSymbolForDate()"
> >
<ion-icon class="text-muted" name="refresh-outline" /> <ion-icon class="text-body-secondary" name="refresh-outline" />
</button> </button>
</div> </div>
</div> </div>

4
libs/ui/src/lib/holdings-table/holdings-table.component.html

@ -53,7 +53,9 @@
</div> </div>
@if (mode() === 'default') { @if (mode() === 'default') {
<div> <div>
<small class="text-muted">{{ element.assetProfile.symbol }}</small> <small class="text-body-secondary">{{
element.assetProfile.symbol
}}</small>
</div> </div>
} }
</td> </td>

8
libs/ui/src/lib/membership-card/membership-card.component.html

@ -16,13 +16,13 @@
<div class="d-flex justify-content-end"> <div class="d-flex justify-content-end">
<gf-logo <gf-logo
size="large" size="large"
[class.text-muted]="name === 'Basic'" [class.text-body-secondary]="name === 'Basic'"
[showLabel]="false" [showLabel]="false"
/> />
</div> </div>
@if (hasPermissionToCreateApiKey) { @if (hasPermissionToCreateApiKey) {
<div class="mt-5"> <div class="mt-5">
<div class="heading text-muted" i18n>API Key</div> <div class="heading text-body-secondary" i18n>API Key</div>
<div class="align-items-center d-flex"> <div class="align-items-center d-flex">
<div class="font-monospace value">* * * * * * * * *</div> <div class="font-monospace value">* * * * * * * * *</div>
<div class="ms-1"> <div class="ms-1">
@ -41,12 +41,12 @@
} }
<div class="d-flex justify-content-between"> <div class="d-flex justify-content-between">
<div> <div>
<div class="heading text-muted" i18n>Membership</div> <div class="heading text-body-secondary" i18n>Membership</div>
<div class="text-truncate value">{{ name }}</div> <div class="text-truncate value">{{ name }}</div>
</div> </div>
@if (expiresAt) { @if (expiresAt) {
<div> <div>
<div class="heading text-muted" i18n>Valid until</div> <div class="heading text-body-secondary" i18n>Valid until</div>
<div class="text-truncate value"> <div class="text-truncate value">
{{ expiresAt }} {{ expiresAt }}
</div> </div>

2
libs/ui/src/lib/page-tabs/page-tabs.component.html

@ -21,7 +21,7 @@
*ngTemplateOutlet="tabContent; context: { $implicit: tab }" *ngTemplateOutlet="tabContent; context: { $implicit: tab }"
/> />
<ion-icon <ion-icon
class="d-none d-sm-block external-link-icon ms-auto text-muted" class="d-none d-sm-block external-link-icon ms-auto text-body-secondary"
name="open-outline" name="open-outline"
/> />
</button> </button>

2
libs/ui/src/lib/portfolio-filter-form/portfolio-filter-form.component.html

@ -24,7 +24,7 @@
<div class="line-height-1 text-truncate"> <div class="line-height-1 text-truncate">
<span>{{ holding.assetProfile.name }}</span> <span>{{ holding.assetProfile.name }}</span>
<br /> <br />
<small class="text-muted" <small class="text-body-secondary"
>{{ holding.assetProfile.symbol }} · >{{ holding.assetProfile.symbol }} ·
{{ holding.assetProfile.currency }}</small {{ holding.assetProfile.currency }}</small
> >

2
libs/ui/src/lib/premium-indicator/premium-indicator.component.html

@ -4,5 +4,5 @@
title="Upgrade to Ghostfolio Premium" title="Upgrade to Ghostfolio Premium"
[routerLink]="routerLinkPricing" [routerLink]="routerLinkPricing"
[style.pointer-events]="enableLink ? 'initial' : 'none'" [style.pointer-events]="enableLink ? 'initial' : 'none'"
><ion-icon class="text-muted" name="diamond-outline" ><ion-icon class="text-body-secondary" name="diamond-outline"
/></a> /></a>

2
libs/ui/src/lib/symbol-autocomplete/symbol-autocomplete.component.html

@ -25,7 +25,7 @@
<gf-premium-indicator class="ms-1" [enableLink]="false" /> <gf-premium-indicator class="ms-1" [enableLink]="false" />
} }
</span> </span>
<small class="text-muted" <small class="text-body-secondary"
>{{ lookupItem.symbol }} >{{ lookupItem.symbol }}
@if (lookupItem.currency) { @if (lookupItem.currency) {
· {{ lookupItem.currency }} · {{ lookupItem.currency }}

4
libs/ui/src/lib/top-holdings/top-holdings.component.html

@ -79,7 +79,7 @@
> >
<div class="text-truncate">{{ parentHolding?.name }}</div> <div class="text-truncate">{{ parentHolding?.name }}</div>
<div> <div>
<small class="text-muted">{{ <small class="text-body-secondary">{{
parentHolding?.symbol parentHolding?.symbol
}}</small> }}</small>
</div> </div>
@ -177,7 +177,7 @@
} }
@if (dataSource.data.length === 0 && !isLoading) { @if (dataSource.data.length === 0 && !isLoading) {
<div class="p-3 text-center text-muted"> <div class="p-3 text-body-secondary text-center">
<small i18n>No data available</small> <small i18n>No data available</small>
</div> </div>
} }

10
libs/ui/src/lib/trend-indicator/trend-indicator.component.html

@ -9,9 +9,13 @@
/> />
} @else { } @else {
@if (marketState === 'closed' && dateRange === '1d') { @if (marketState === 'closed' && dateRange === '1d') {
<ion-icon class="text-muted" name="pause-circle-outline" [size]="size" /> <ion-icon
class="text-body-secondary"
name="pause-circle-outline"
[size]="size"
/>
} @else if (marketState === 'delayed' && dateRange === '1d') { } @else if (marketState === 'delayed' && dateRange === '1d') {
<ion-icon class="text-muted" name="time-outline" [size]="size" /> <ion-icon class="text-body-secondary" name="time-outline" [size]="size" />
} @else if (value <= -0.0005) { } @else if (value <= -0.0005) {
<ion-icon <ion-icon
class="text-danger" class="text-danger"
@ -21,7 +25,7 @@
/> />
} @else if (value > -0.0005 && value < 0.0005) { } @else if (value > -0.0005 && value < 0.0005) {
<ion-icon <ion-icon
class="text-muted" class="text-body-secondary"
name="arrow-forward-circle-outline" name="arrow-forward-circle-outline"
[size]="size" [size]="size"
/> />

6
libs/ui/src/lib/value/value.component.html

@ -20,7 +20,7 @@
(mousedown)="$event.preventDefault()" (mousedown)="$event.preventDefault()"
> >
<ion-icon <ion-icon
class="text-muted" class="text-body-secondary"
[name]="isCopied ? 'checkmark-outline' : 'copy-outline'" [name]="isCopied ? 'checkmark-outline' : 'copy-outline'"
/> />
</button> </button>
@ -57,7 +57,7 @@
[class.h4]="size === 'medium'" [class.h4]="size === 'medium'"
> >
@if (value === null) { @if (value === null) {
<span class="font-monospace text-muted">*****</span> <span class="font-monospace text-body-secondary">*****</span>
} @else { } @else {
{{ formattedValue }} {{ formattedValue }}
} }
@ -91,7 +91,7 @@
<ng-container *ngTemplateOutlet="copyIcon" /> <ng-container *ngTemplateOutlet="copyIcon" />
} }
@if (subLabel) { @if (subLabel) {
<span class="text-muted"> {{ subLabel }}</span> <span class="text-body-secondary"> {{ subLabel }}</span>
} }
</div> </div>
} @else { } @else {

Loading…
Cancel
Save