Feature/Restructure resources page (#3978)
* Restructure resources page * Update changelog --------- Co-authored-by: Thomas Kaul <4159106+dtslvr@users.noreply.github.com>
This commit is contained in:
parent
e05f481344
commit
c790d0df21
@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
- Restructured the resources page
|
||||||
- Switched the `consistent-generic-constructors` rule from `warn` to `error` in the `eslint` configuration
|
- Switched the `consistent-generic-constructors` rule from `warn` to `error` in the `eslint` configuration
|
||||||
- Switched the `consistent-type-assertions` rule from `warn` to `error` in the `eslint` configuration
|
- Switched the `consistent-type-assertions` rule from `warn` to `error` in the `eslint` configuration
|
||||||
- Switched the `prefer-optional-chain` rule from `warn` to `error` in the `eslint` configuration
|
- Switched the `prefer-optional-chain` rule from `warn` to `error` in the `eslint` configuration
|
||||||
|
@ -214,6 +214,18 @@
|
|||||||
<loc>https://ghostfol.io/en/resources</loc>
|
<loc>https://ghostfol.io/en/resources</loc>
|
||||||
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
|
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
|
||||||
</url>
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://ghostfol.io/en/resources/glossary</loc>
|
||||||
|
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://ghostfol.io/en/resources/guides</loc>
|
||||||
|
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://ghostfol.io/en/resources/markets</loc>
|
||||||
|
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
|
||||||
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://ghostfol.io/en/resources/personal-finance-tools</loc>
|
<loc>https://ghostfol.io/en/resources/personal-finance-tools</loc>
|
||||||
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
|
<lastmod>${currentDate}T00:00:00+00:00</lastmod>
|
||||||
|
@ -183,6 +183,7 @@ export class AppComponent implements OnDestroy, OnInit {
|
|||||||
this.hasTabs =
|
this.hasTabs =
|
||||||
(this.currentRoute === this.routerLinkAbout[0].slice(1) ||
|
(this.currentRoute === this.routerLinkAbout[0].slice(1) ||
|
||||||
this.currentRoute === this.routerLinkFaq[0].slice(1) ||
|
this.currentRoute === this.routerLinkFaq[0].slice(1) ||
|
||||||
|
this.currentRoute === this.routerLinkResources[0].slice(1) ||
|
||||||
this.currentRoute === 'account' ||
|
this.currentRoute === 'account' ||
|
||||||
this.currentRoute === 'admin' ||
|
this.currentRoute === 'admin' ||
|
||||||
this.currentRoute === 'home' ||
|
this.currentRoute === 'home' ||
|
||||||
@ -198,7 +199,6 @@ export class AppComponent implements OnDestroy, OnInit {
|
|||||||
this.currentRoute === 'p' ||
|
this.currentRoute === 'p' ||
|
||||||
this.currentRoute === this.routerLinkPricing[0].slice(1) ||
|
this.currentRoute === this.routerLinkPricing[0].slice(1) ||
|
||||||
this.currentRoute === this.routerLinkRegister[0].slice(1) ||
|
this.currentRoute === this.routerLinkRegister[0].slice(1) ||
|
||||||
this.currentRoute === this.routerLinkResources[0].slice(1) ||
|
|
||||||
this.currentRoute === 'start') &&
|
this.currentRoute === 'start') &&
|
||||||
this.deviceType !== 'mobile';
|
this.deviceType !== 'mobile';
|
||||||
|
|
||||||
|
@ -0,0 +1,18 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { RouterModule, Routes } from '@angular/router';
|
||||||
|
|
||||||
|
import { ResourcesGlossaryPageComponent } from './resources-glossary.component';
|
||||||
|
|
||||||
|
const routes: Routes = [
|
||||||
|
{
|
||||||
|
component: ResourcesGlossaryPageComponent,
|
||||||
|
path: '',
|
||||||
|
title: $localize`Glossary`
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [RouterModule.forChild(routes)],
|
||||||
|
exports: [RouterModule]
|
||||||
|
})
|
||||||
|
export class ResourcesGlossaryRoutingModule {}
|
@ -0,0 +1,138 @@
|
|||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h1 class="h3 mb-4 text-center" i18n>Glossary</h1>
|
||||||
|
<div>
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">Buy and Hold</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
Buy and hold is a passive investment strategy where you buy assets
|
||||||
|
and hold them for a long period regardless of fluctuations in the
|
||||||
|
market.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a
|
||||||
|
href="https://www.investopedia.com/terms/b/buyandhold.asp"
|
||||||
|
target="_blank"
|
||||||
|
>Buy and Hold →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">Deflation</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
Deflation is a decrease of the general price level for goods and
|
||||||
|
services in an economy over a period of time.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a
|
||||||
|
href="https://www.investopedia.com/terms/d/deflation.asp"
|
||||||
|
target="_blank"
|
||||||
|
>Deflation →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">Dollar-Cost Averaging (DCA)</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
Dollar-cost averaging is an investment strategy where you split
|
||||||
|
the total amount to be invested across periodic purchases of a
|
||||||
|
target asset to reduce the impact of volatility on the overall
|
||||||
|
purchase.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a
|
||||||
|
href="https://www.investopedia.com/terms/d/dollarcostaveraging.asp"
|
||||||
|
target="_blank"
|
||||||
|
>Dollar-Cost Averaging →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">Financial Independence</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
Financial independence is the status of having enough income, for
|
||||||
|
example with a passive income like dividends, to cover your living
|
||||||
|
expenses for the rest of your life.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a
|
||||||
|
href="https://en.wikipedia.org/wiki/Financial_independence"
|
||||||
|
target="_blank"
|
||||||
|
>Financial Independence →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">FIRE</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
FIRE is a movement that promotes saving and investing to achieve
|
||||||
|
financial independence and early retirement.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="../en/blog/2023/07/exploring-the-path-to-fire">FIRE →</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">Inflation</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
Inflation is an increase of the general price level for goods and
|
||||||
|
services in an economy over a period of time.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a
|
||||||
|
href="https://www.investopedia.com/terms/i/inflation.asp"
|
||||||
|
target="_blank"
|
||||||
|
>Inflation →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@if (hasPermissionForSubscription) {
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">Personal Finance Tools</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
Personal finance tools are software applications that help
|
||||||
|
individuals manage their money, track expenses, set budgets,
|
||||||
|
monitor investments, and make informed financial decisions.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a [routerLink]="routerLinkResourcesPersonalFinanceTools"
|
||||||
|
>Personal Finance Tools →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">Stagflation</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
Stagflation describes a situation in which there is a stagnant
|
||||||
|
economy with high unemployment and high inflation.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a
|
||||||
|
href="https://www.investopedia.com/terms/s/stagflation.asp"
|
||||||
|
target="_blank"
|
||||||
|
>Stagflation →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,17 @@
|
|||||||
|
:host {
|
||||||
|
color: rgb(var(--dark-primary-text));
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: rgba(var(--palette-primary-500), 1);
|
||||||
|
font-weight: 500;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: rgba(var(--palette-primary-300), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:host-context(.theme-dark) {
|
||||||
|
color: rgb(var(--light-primary-text));
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
import { DataService } from '@ghostfolio/client/services/data.service';
|
||||||
|
import { InfoItem } from '@ghostfolio/common/interfaces';
|
||||||
|
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
|
||||||
|
|
||||||
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'gf-resources-glossary',
|
||||||
|
styleUrls: ['./resources-glossary.component.scss'],
|
||||||
|
templateUrl: './resources-glossary.component.html'
|
||||||
|
})
|
||||||
|
export class ResourcesGlossaryPageComponent implements OnInit {
|
||||||
|
public hasPermissionForSubscription: boolean;
|
||||||
|
public info: InfoItem;
|
||||||
|
public routerLinkResourcesPersonalFinanceTools = [
|
||||||
|
'/' + $localize`:snake-case:resources`,
|
||||||
|
'personal-finance-tools'
|
||||||
|
];
|
||||||
|
|
||||||
|
public constructor(private dataService: DataService) {
|
||||||
|
this.info = this.dataService.fetchInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ngOnInit() {
|
||||||
|
this.hasPermissionForSubscription = hasPermission(
|
||||||
|
this.info?.globalPermissions,
|
||||||
|
permissions.enableSubscription
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
|
import { ResourcesGlossaryRoutingModule } from './resources-glossary-routing.module';
|
||||||
|
import { ResourcesGlossaryPageComponent } from './resources-glossary.component';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [ResourcesGlossaryPageComponent],
|
||||||
|
imports: [CommonModule, ResourcesGlossaryRoutingModule, RouterModule]
|
||||||
|
})
|
||||||
|
export class ResourcesGlossaryPageModule {}
|
@ -0,0 +1,18 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { RouterModule, Routes } from '@angular/router';
|
||||||
|
|
||||||
|
import { ResourcesGuidesComponent } from './resources-guides.component';
|
||||||
|
|
||||||
|
const routes: Routes = [
|
||||||
|
{
|
||||||
|
component: ResourcesGuidesComponent,
|
||||||
|
path: '',
|
||||||
|
title: $localize`Guides`
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [RouterModule.forChild(routes)],
|
||||||
|
exports: [RouterModule]
|
||||||
|
})
|
||||||
|
export class ResourcesGuidesRoutingModule {}
|
@ -0,0 +1,40 @@
|
|||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h1 class="h3 mb-4 text-center" i18n>Guides</h1>
|
||||||
|
<div class="mb-5">
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">Boringly Getting Rich</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
The <i>Boringly Getting Rich</i> guide supports you to get started
|
||||||
|
with investing. It introduces a strategy utilizing a broadly
|
||||||
|
diversified, low-cost portfolio excluding the risks of individual
|
||||||
|
stocks.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="https://herget.me/investing-guide" target="_blank"
|
||||||
|
>Boringly Getting Rich →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">How do I get my finances in order?</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
Before you can think of long-term investing, you have to get your
|
||||||
|
finances in order. Learn how you can reach your financial goals
|
||||||
|
easier and faster in this guide.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="../en/blog/2022/07/how-do-i-get-my-finances-in-order"
|
||||||
|
>How do I get my finances in order? →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,17 @@
|
|||||||
|
:host {
|
||||||
|
color: rgb(var(--dark-primary-text));
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: rgba(var(--palette-primary-500), 1);
|
||||||
|
font-weight: 500;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: rgba(var(--palette-primary-300), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:host-context(.theme-dark) {
|
||||||
|
color: rgb(var(--light-primary-text));
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'gf-resources-guides',
|
||||||
|
styleUrls: ['./resources-guides.component.scss'],
|
||||||
|
templateUrl: './resources-guides.component.html'
|
||||||
|
})
|
||||||
|
export class ResourcesGuidesComponent {}
|
@ -0,0 +1,12 @@
|
|||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
|
import { ResourcesGuidesRoutingModule } from './resources-guides-routing.module';
|
||||||
|
import { ResourcesGuidesComponent } from './resources-guides.component';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [ResourcesGuidesComponent],
|
||||||
|
imports: [CommonModule, ResourcesGuidesRoutingModule, RouterModule]
|
||||||
|
})
|
||||||
|
export class ResourcesGuidesModule {}
|
@ -0,0 +1,18 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { RouterModule, Routes } from '@angular/router';
|
||||||
|
|
||||||
|
import { ResourcesMarketsComponent } from './resources-markets.component';
|
||||||
|
|
||||||
|
const routes: Routes = [
|
||||||
|
{
|
||||||
|
component: ResourcesMarketsComponent,
|
||||||
|
path: '',
|
||||||
|
title: $localize`Markets`
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [RouterModule.forChild(routes)],
|
||||||
|
exports: [RouterModule]
|
||||||
|
})
|
||||||
|
export class ResourcesMarketsRoutingModule {}
|
@ -0,0 +1,64 @@
|
|||||||
|
<div class="container">
|
||||||
|
<h1 class="h3 mb-4 text-center" i18n>Markets</h1>
|
||||||
|
<div class="mb-5">
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">Crypto Coins Heatmap</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
With the <i>Crypto Coins Heatmap</i> you can track the daily market
|
||||||
|
movements of cryptocurrencies as a visual snapshot.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="https://www.tradingview.com/heatmap/crypto" target="_blank"
|
||||||
|
>Crypto Coins Heatmap →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">Fear & Greed Index</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
The fear and greed index was developed by <i>CNNMoney</i> to measure
|
||||||
|
the primary emotions (fear and greed) that influence how much
|
||||||
|
investors are willing to pay for stocks.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="https://money.cnn.com/data/fear-and-greed/" target="_blank"
|
||||||
|
>Fear & Greed Index →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="media">
|
||||||
|
<div class="mb-4 media">
|
||||||
|
<h3 class="h5 mt-0">Inflation Chart</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
<i>Inflation Chart</i> helps you find the intrinsic value of stock
|
||||||
|
markets, stock prices, goods and services by adjusting them to the
|
||||||
|
amount of the money supply (M0, M1, M2) or price of other goods (food
|
||||||
|
or oil).
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="https://inflationchart.com" target="_blank"
|
||||||
|
>Inflation Chart →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="media">
|
||||||
|
<div class="media-body">
|
||||||
|
<h3 class="h5 mt-0">Stock Heatmap</h3>
|
||||||
|
<div class="mb-1">
|
||||||
|
With the <i>Stock Heatmap</i> you can track the daily market movements
|
||||||
|
of stocks as a visual snapshot.
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a href="https://www.tradingview.com/heatmap/stock" target="_blank"
|
||||||
|
>Stock Heatmap →</a
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,17 @@
|
|||||||
|
:host {
|
||||||
|
color: rgb(var(--dark-primary-text));
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: rgba(var(--palette-primary-500), 1);
|
||||||
|
font-weight: 500;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: rgba(var(--palette-primary-300), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:host-context(.theme-dark) {
|
||||||
|
color: rgb(var(--light-primary-text));
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'gf-resources-markets',
|
||||||
|
styleUrls: ['./resources-markets.component.scss'],
|
||||||
|
templateUrl: './resources-markets.component.html'
|
||||||
|
})
|
||||||
|
export class ResourcesMarketsComponent {}
|
@ -0,0 +1,11 @@
|
|||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
|
||||||
|
import { ResourcesMarketsRoutingModule } from './resources-markets-routing.module';
|
||||||
|
import { ResourcesMarketsComponent } from './resources-markets.component';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [ResourcesMarketsComponent],
|
||||||
|
imports: [CommonModule, ResourcesMarketsRoutingModule]
|
||||||
|
})
|
||||||
|
export class ResourcesMarketsModule {}
|
@ -0,0 +1,17 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { RouterModule, Routes } from '@angular/router';
|
||||||
|
|
||||||
|
import { ResourcesOverviewComponent } from './resources-overview.component';
|
||||||
|
|
||||||
|
const routes: Routes = [
|
||||||
|
{
|
||||||
|
component: ResourcesOverviewComponent,
|
||||||
|
path: ''
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [RouterModule.forChild(routes)],
|
||||||
|
exports: [RouterModule]
|
||||||
|
})
|
||||||
|
export class ResourcesOverviewRoutingModule {}
|
@ -0,0 +1,16 @@
|
|||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col">
|
||||||
|
<h1 class="h3 mb-4 text-center" i18n>Resources</h1>
|
||||||
|
<div class="overview-list">
|
||||||
|
@for (item of overviewItems; track item) {
|
||||||
|
<div class="mb-4">
|
||||||
|
<h3 class="h5 mt-0">{{ item.title }}</h3>
|
||||||
|
<p class="mb-1">{{ item.description }}</p>
|
||||||
|
<a [routerLink]="item.link">Explore {{ item.title }} →</a>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -0,0 +1,17 @@
|
|||||||
|
:host {
|
||||||
|
color: rgb(var(--dark-primary-text));
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: rgba(var(--palette-primary-500), 1);
|
||||||
|
font-weight: 500;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: rgba(var(--palette-primary-300), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:host-context(.theme-dark) {
|
||||||
|
color: rgb(var(--light-primary-text));
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'gf-resources-overview',
|
||||||
|
styleUrls: ['./resources-overview.component.scss'],
|
||||||
|
templateUrl: './resources-overview.component.html'
|
||||||
|
})
|
||||||
|
export class ResourcesOverviewComponent {
|
||||||
|
public overviewItems = [
|
||||||
|
{
|
||||||
|
title: 'Frequently Asked Questions (FAQ)',
|
||||||
|
description:
|
||||||
|
'Find quick answers to commonly asked questions about Ghostfolio in our Frequently Asked Questions (FAQ) section.',
|
||||||
|
link: ['/' + $localize`:snake-case:faq`]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Guides',
|
||||||
|
description:
|
||||||
|
'Explore our guides to help you get started with investing and managing your finances.',
|
||||||
|
link: [
|
||||||
|
'/' + $localize`:snake-case:resources`,
|
||||||
|
$localize`:snake-case:guides`
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Markets',
|
||||||
|
description:
|
||||||
|
'Access various market resources and tools to stay informed about financial markets.',
|
||||||
|
link: [
|
||||||
|
'/' + $localize`:snake-case:resources`,
|
||||||
|
$localize`:snake-case:markets`
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Glossary',
|
||||||
|
description:
|
||||||
|
'Learn key financial terms and concepts in our comprehensive glossary.',
|
||||||
|
link: [
|
||||||
|
'/' + $localize`:snake-case:resources`,
|
||||||
|
$localize`:snake-case:glossary`
|
||||||
|
]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
import { CommonModule } from '@angular/common';
|
||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
|
import { ResourcesOverviewRoutingModule } from './resources-overview-routing.module';
|
||||||
|
import { ResourcesOverviewComponent } from './resources-overview.component';
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
declarations: [ResourcesOverviewComponent],
|
||||||
|
imports: [CommonModule, ResourcesOverviewRoutingModule, RouterModule]
|
||||||
|
})
|
||||||
|
export class ResourcesOverviewModule {}
|
@ -9,16 +9,46 @@ const routes: Routes = [
|
|||||||
{
|
{
|
||||||
canActivate: [AuthGuard],
|
canActivate: [AuthGuard],
|
||||||
component: ResourcesPageComponent,
|
component: ResourcesPageComponent,
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: '',
|
||||||
|
loadChildren: () =>
|
||||||
|
import('./overview/resources-overview.module').then(
|
||||||
|
(m) => m.ResourcesOverviewModule
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: $localize`:snake-case:glossary`,
|
||||||
|
loadChildren: () =>
|
||||||
|
import('./glossary/resources-glossary.module').then(
|
||||||
|
(m) => m.ResourcesGlossaryPageModule
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: $localize`:snake-case:guides`,
|
||||||
|
loadChildren: () =>
|
||||||
|
import('./guides/resources-guides.module').then(
|
||||||
|
(m) => m.ResourcesGuidesModule
|
||||||
|
)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: $localize`:snake-case:markets`,
|
||||||
|
loadChildren: () =>
|
||||||
|
import('./markets/resources-markets.module').then(
|
||||||
|
(m) => m.ResourcesMarketsModule
|
||||||
|
)
|
||||||
|
},
|
||||||
|
...['personal-finance-tools'].map((path) => ({
|
||||||
|
path,
|
||||||
|
loadChildren: () =>
|
||||||
|
import(
|
||||||
|
'./personal-finance-tools/personal-finance-tools-page.module'
|
||||||
|
).then((m) => m.PersonalFinanceToolsPageModule)
|
||||||
|
}))
|
||||||
|
],
|
||||||
path: '',
|
path: '',
|
||||||
title: $localize`Resources`
|
title: $localize`Resources`
|
||||||
},
|
}
|
||||||
...['personal-finance-tools'].map((path) => ({
|
|
||||||
path,
|
|
||||||
loadChildren: () =>
|
|
||||||
import(
|
|
||||||
'./personal-finance-tools/personal-finance-tools-page.module'
|
|
||||||
).then((m) => m.PersonalFinanceToolsPageModule)
|
|
||||||
}))
|
|
||||||
];
|
];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
@ -1,36 +1,44 @@
|
|||||||
import { DataService } from '@ghostfolio/client/services/data.service';
|
|
||||||
import { InfoItem } from '@ghostfolio/common/interfaces';
|
|
||||||
import { hasPermission, permissions } from '@ghostfolio/common/permissions';
|
|
||||||
|
|
||||||
import { Component, OnInit } from '@angular/core';
|
import { Component, OnInit } from '@angular/core';
|
||||||
|
import { DeviceDetectorService } from 'ngx-device-detector';
|
||||||
import { Subject } from 'rxjs';
|
import { Subject } from 'rxjs';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
host: { class: 'page' },
|
host: { class: 'page has-tabs' },
|
||||||
selector: 'gf-resources-page',
|
selector: 'gf-resources-page',
|
||||||
styleUrls: ['./resources-page.scss'],
|
styleUrls: ['./resources-page.scss'],
|
||||||
templateUrl: './resources-page.html'
|
templateUrl: './resources-page.html'
|
||||||
})
|
})
|
||||||
export class ResourcesPageComponent implements OnInit {
|
export class ResourcesPageComponent implements OnInit {
|
||||||
public hasPermissionForSubscription: boolean;
|
public deviceType: string;
|
||||||
public info: InfoItem;
|
public tabs = [
|
||||||
public routerLinkFaq = ['/' + $localize`:snake-case:faq`];
|
{
|
||||||
public routerLinkResourcesPersonalFinanceTools = [
|
path: '.',
|
||||||
'/' + $localize`:snake-case:resources`,
|
label: $localize`Overview`,
|
||||||
'personal-finance-tools'
|
iconName: 'reader-outline'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'guides',
|
||||||
|
label: $localize`Guides`,
|
||||||
|
iconName: 'book-outline'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'markets',
|
||||||
|
label: $localize`Markets`,
|
||||||
|
iconName: 'newspaper-outline'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'glossary',
|
||||||
|
label: $localize`Glossary`,
|
||||||
|
iconName: 'library-outline'
|
||||||
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
private unsubscribeSubject = new Subject<void>();
|
private unsubscribeSubject = new Subject<void>();
|
||||||
|
|
||||||
public constructor(private dataService: DataService) {
|
public constructor(private deviceService: DeviceDetectorService) {}
|
||||||
this.info = this.dataService.fetchInfo();
|
|
||||||
}
|
|
||||||
|
|
||||||
public ngOnInit() {
|
public ngOnInit() {
|
||||||
this.hasPermissionForSubscription = hasPermission(
|
this.deviceType = this.deviceService.getDeviceInfo().deviceType;
|
||||||
this.info?.globalPermissions,
|
|
||||||
permissions.enableSubscription
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ngOnDestroy() {
|
public ngOnDestroy() {
|
||||||
|
@ -1,258 +1,30 @@
|
|||||||
<div class="container">
|
<mat-tab-nav-panel #tabPanel class="flex-grow-1 overflow-auto">
|
||||||
<div class="row">
|
<router-outlet></router-outlet>
|
||||||
<div class="col">
|
</mat-tab-nav-panel>
|
||||||
<h1 class="d-none d-sm-block h3 mb-4 text-center" i18n>Resources</h1>
|
|
||||||
<h2 class="h4 mb-3">Ghostfolio</h2>
|
<nav
|
||||||
<div class="mb-5">
|
mat-align-tabs="center"
|
||||||
<div class="mb-4 media">
|
mat-tab-nav-bar
|
||||||
<div class="media-body">
|
[disablePagination]="true"
|
||||||
<h3 class="h5 mt-0">Frequently Asked Questions (FAQ)</h3>
|
[tabPanel]="tabPanel"
|
||||||
<div class="mb-1">
|
>
|
||||||
Find quick answers to commonly asked questions about Ghostfolio in
|
@for (tab of tabs; track tab) {
|
||||||
our Frequently Asked Questions (FAQ) section.
|
@if (tab.showCondition !== false) {
|
||||||
</div>
|
<a
|
||||||
<div>
|
#rla="routerLinkActive"
|
||||||
<a [routerLink]="routerLinkFaq"
|
class="no-min-width px-3"
|
||||||
>Frequently Asked Questions (FAQ) →</a
|
mat-tab-link
|
||||||
>
|
routerLinkActive
|
||||||
</div>
|
[active]="rla.isActive"
|
||||||
</div>
|
[routerLink]="tab.path"
|
||||||
</div>
|
[routerLinkActiveOptions]="{ exact: true }"
|
||||||
</div>
|
>
|
||||||
<h2 class="h4 mb-3" i18n>Guides</h2>
|
<ion-icon
|
||||||
<div class="mb-5">
|
[name]="tab.iconName"
|
||||||
<div class="mb-4 media">
|
[size]="deviceType === 'mobile' ? 'large' : 'small'"
|
||||||
<div class="media-body">
|
/>
|
||||||
<h3 class="h5 mt-0">Boringly Getting Rich</h3>
|
<div class="d-none d-sm-block ml-2">{{ tab.label }}</div>
|
||||||
<div class="mb-1">
|
</a>
|
||||||
The <i>Boringly Getting Rich</i> guide supports you to get started
|
}
|
||||||
with investing. It introduces a strategy utilizing a broadly
|
}
|
||||||
diversified, low-cost portfolio excluding the risks of individual
|
</nav>
|
||||||
stocks.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href="https://herget.me/investing-guide" target="_blank"
|
|
||||||
>Boringly Getting Rich →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-4 media">
|
|
||||||
<div class="media-body">
|
|
||||||
<h3 class="h5 mt-0">How do I get my finances in order?</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
Before you can think of long-term investing, you have to get your
|
|
||||||
finances in order. Learn how you can reach your financial goals
|
|
||||||
easier and faster in this guide.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href="../en/blog/2022/07/how-do-i-get-my-finances-in-order"
|
|
||||||
>How do I get my finances in order? →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h2 class="h4 mb-3" i18n>Markets</h2>
|
|
||||||
<div class="mb-5">
|
|
||||||
<div class="mb-4 media">
|
|
||||||
<div class="media-body">
|
|
||||||
<h3 class="h5 mt-0">Crypto Coins Heatmap</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
With the <i>Crypto Coins Heatmap</i> you can track the daily
|
|
||||||
market movements of cryptocurrencies as a visual snapshot.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://www.tradingview.com/heatmap/crypto"
|
|
||||||
target="_blank"
|
|
||||||
>Crypto Coins Heatmap →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-4 media">
|
|
||||||
<div class="media-body">
|
|
||||||
<h3 class="h5 mt-0">Fear & Greed Index</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
The fear and greed index was developed by <i>CNNMoney</i> to
|
|
||||||
measure the primary emotions (fear and greed) that influence how
|
|
||||||
much investors are willing to pay for stocks.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://money.cnn.com/data/fear-and-greed/"
|
|
||||||
target="_blank"
|
|
||||||
>Fear & Greed Index →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="media">
|
|
||||||
<div class="mb-4 media">
|
|
||||||
<h3 class="h5 mt-0">Inflation Chart</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
<i>Inflation Chart</i> helps you find the intrinsic value of stock
|
|
||||||
markets, stock prices, goods and services by adjusting them to the
|
|
||||||
amount of the money supply (M0, M1, M2) or price of other goods
|
|
||||||
(food or oil).
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href="https://inflationchart.com" target="_blank"
|
|
||||||
>Inflation Chart →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="media">
|
|
||||||
<div class="media-body">
|
|
||||||
<h3 class="h5 mt-0">Stock Heatmap</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
With the <i>Stock Heatmap</i> you can track the daily market
|
|
||||||
movements of stocks as a visual snapshot.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://www.tradingview.com/heatmap/stock"
|
|
||||||
target="_blank"
|
|
||||||
>Stock Heatmap →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<h2 class="h4 mb-3" i18n>Glossary</h2>
|
|
||||||
<div>
|
|
||||||
<div class="mb-4 media">
|
|
||||||
<div class="media-body">
|
|
||||||
<h3 class="h5 mt-0">Buy and Hold</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
Buy and hold is a passive investment strategy where you buy assets
|
|
||||||
and hold them for a long period regardless of fluctuations in the
|
|
||||||
market.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://www.investopedia.com/terms/b/buyandhold.asp"
|
|
||||||
target="_blank"
|
|
||||||
>Buy and Hold →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-4 media">
|
|
||||||
<div class="media-body">
|
|
||||||
<h3 class="h5 mt-0">Deflation</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
Deflation is a decrease of the general price level for goods and
|
|
||||||
services in an economy over a period of time.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://www.investopedia.com/terms/d/deflation.asp"
|
|
||||||
target="_blank"
|
|
||||||
>Deflation →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-4 media">
|
|
||||||
<div class="media-body">
|
|
||||||
<h3 class="h5 mt-0">Dollar-Cost Averaging (DCA)</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
Dollar-cost averaging is an investment strategy where you split
|
|
||||||
the total amount to be invested across periodic purchases of a
|
|
||||||
target asset to reduce the impact of volatility on the overall
|
|
||||||
purchase.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://www.investopedia.com/terms/d/dollarcostaveraging.asp"
|
|
||||||
target="_blank"
|
|
||||||
>Dollar-Cost Averaging →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-4 media">
|
|
||||||
<div class="media-body">
|
|
||||||
<h3 class="h5 mt-0">Financial Independence</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
Financial independence is the status of having enough income, for
|
|
||||||
example with a passive income like dividends, to cover your living
|
|
||||||
expenses for the rest of your life.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://en.wikipedia.org/wiki/Financial_independence"
|
|
||||||
target="_blank"
|
|
||||||
>Financial Independence →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-4 media">
|
|
||||||
<div class="media-body">
|
|
||||||
<h3 class="h5 mt-0">FIRE</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
FIRE is a movement that promotes saving and investing to achieve
|
|
||||||
financial independence and early retirement.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a href="../en/blog/2023/07/exploring-the-path-to-fire">FIRE →</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="mb-4 media">
|
|
||||||
<div class="media-body">
|
|
||||||
<h3 class="h5 mt-0">Inflation</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
Inflation is an increase of the general price level for goods and
|
|
||||||
services in an economy over a period of time.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://www.investopedia.com/terms/i/inflation.asp"
|
|
||||||
target="_blank"
|
|
||||||
>Inflation →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
@if (hasPermissionForSubscription) {
|
|
||||||
<div class="mb-4 media">
|
|
||||||
<div class="media-body">
|
|
||||||
<h3 class="h5 mt-0">Personal Finance Tools</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
Personal finance tools are software applications that help
|
|
||||||
individuals manage their money, track expenses, set budgets,
|
|
||||||
monitor investments, and make informed financial decisions.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a [routerLink]="routerLinkResourcesPersonalFinanceTools"
|
|
||||||
>Personal Finance Tools →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
}
|
|
||||||
<div class="mb-4 media">
|
|
||||||
<div class="media-body">
|
|
||||||
<h3 class="h5 mt-0">Stagflation</h3>
|
|
||||||
<div class="mb-1">
|
|
||||||
Stagflation describes a situation in which there is a stagnant
|
|
||||||
economy with high unemployment and high inflation.
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<a
|
|
||||||
href="https://www.investopedia.com/terms/s/stagflation.asp"
|
|
||||||
target="_blank"
|
|
||||||
>Stagflation →</a
|
|
||||||
>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
@ -1,12 +1,19 @@
|
|||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
||||||
|
import { MatTabsModule } from '@angular/material/tabs';
|
||||||
|
import { RouterModule } from '@angular/router';
|
||||||
|
|
||||||
import { ResourcesPageRoutingModule } from './resources-page-routing.module';
|
import { ResourcesPageRoutingModule } from './resources-page-routing.module';
|
||||||
import { ResourcesPageComponent } from './resources-page.component';
|
import { ResourcesPageComponent } from './resources-page.component';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [ResourcesPageComponent],
|
declarations: [ResourcesPageComponent],
|
||||||
imports: [CommonModule, ResourcesPageRoutingModule],
|
imports: [
|
||||||
|
CommonModule,
|
||||||
|
MatTabsModule,
|
||||||
|
ResourcesPageRoutingModule,
|
||||||
|
RouterModule
|
||||||
|
],
|
||||||
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
||||||
})
|
})
|
||||||
export class ResourcesPageModule {}
|
export class ResourcesPageModule {}
|
||||||
|
@ -1,15 +1,5 @@
|
|||||||
:host {
|
:host {
|
||||||
color: rgb(var(--dark-primary-text));
|
color: rgb(var(--dark-primary-text));
|
||||||
display: block;
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: rgba(var(--palette-primary-500), 1);
|
|
||||||
font-weight: 500;
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: rgba(var(--palette-primary-300), 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
:host-context(.theme-dark) {
|
:host-context(.theme-dark) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user