From f66edf8de04bcda892ab83b9b458e1d5256853d4 Mon Sep 17 00:00:00 2001
From: Basim Mohammed <107759928+Basimohd@users.noreply.github.com>
Date: Fri, 20 Oct 2023 11:48:34 +0530
Subject: [PATCH] Add membership card component (#2507)
* Add membership card component
* Update changelog
---------
Co-authored-by: Thomas <4159106+dtslvr@users.noreply.github.com>
---
CHANGELOG.md | 1 +
.../user-account-membership.html | 18 ++++---------
.../user-account-membership.module.ts | 2 ++
libs/ui/src/lib/logo/logo.component.html | 6 ++++-
libs/ui/src/lib/logo/logo.component.ts | 1 +
libs/ui/src/lib/membership-card/index.ts | 1 +
.../membership-card.component.html | 25 +++++++++++++++++++
.../membership-card.component.scss | 24 ++++++++++++++++++
.../membership-card.component.ts | 14 +++++++++++
.../membership-card/membership-card.module.ts | 14 +++++++++++
10 files changed, 92 insertions(+), 14 deletions(-)
create mode 100644 libs/ui/src/lib/membership-card/index.ts
create mode 100644 libs/ui/src/lib/membership-card/membership-card.component.html
create mode 100644 libs/ui/src/lib/membership-card/membership-card.component.scss
create mode 100644 libs/ui/src/lib/membership-card/membership-card.component.ts
create mode 100644 libs/ui/src/lib/membership-card/membership-card.module.ts
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e3c00bdc..2c7cf1b2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Changed the users table in the admin control panel to an `@angular/material` data table
+- Improved the styling of the membership status
## 2.12.0 - 2023-10-17
diff --git a/apps/client/src/app/components/user-account-membership/user-account-membership.html b/apps/client/src/app/components/user-account-membership/user-account-membership.html
index 1681e3e1..191c6318 100644
--- a/apps/client/src/app/components/user-account-membership/user-account-membership.html
+++ b/apps/client/src/app/components/user-account-membership/user-account-membership.html
@@ -2,21 +2,13 @@
Membership
+
-
-
- Valid until {{
- user?.subscription?.expiresAt | date: defaultDateFormat }}
-
+ >
{{ label ?? 'Ghostfolio' }}
diff --git a/libs/ui/src/lib/logo/logo.component.ts b/libs/ui/src/lib/logo/logo.component.ts
index ecb3885d..648e771d 100644
--- a/libs/ui/src/lib/logo/logo.component.ts
+++ b/libs/ui/src/lib/logo/logo.component.ts
@@ -13,6 +13,7 @@ import {
})
export class LogoComponent {
@HostBinding('class') @Input() size: 'large' | 'medium' = 'medium';
+ @Input() color: string;
@Input() label: string;
@Input() showLabel = true;
diff --git a/libs/ui/src/lib/membership-card/index.ts b/libs/ui/src/lib/membership-card/index.ts
new file mode 100644
index 00000000..eccd8c4f
--- /dev/null
+++ b/libs/ui/src/lib/membership-card/index.ts
@@ -0,0 +1 @@
+export * from './membership-card.module';
diff --git a/libs/ui/src/lib/membership-card/membership-card.component.html b/libs/ui/src/lib/membership-card/membership-card.component.html
new file mode 100644
index 00000000..048a6b79
--- /dev/null
+++ b/libs/ui/src/lib/membership-card/membership-card.component.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
Membership
+
{{ name }}
+
+
+
Valid until
+
+ {{ expiresAt }}
+
+
+
+
diff --git a/libs/ui/src/lib/membership-card/membership-card.component.scss b/libs/ui/src/lib/membership-card/membership-card.component.scss
new file mode 100644
index 00000000..e9a83a67
--- /dev/null
+++ b/libs/ui/src/lib/membership-card/membership-card.component.scss
@@ -0,0 +1,24 @@
+:host {
+ display: block;
+ max-width: 25rem;
+
+ .card-item {
+ aspect-ratio: 1.586;
+ background-color: #343a40 !important;
+ border-radius: 1rem;
+ box-shadow: 0 1px 6px rgba(0, 0, 0, 0.3);
+
+ &.premium {
+ background-color: #1d2124 !important;
+ }
+
+ .card-item-heading {
+ font-size: 13px;
+ }
+
+ .card-item-name {
+ color: rgba(var(--light-primary-text));
+ font-size: 18px;
+ }
+ }
+}
diff --git a/libs/ui/src/lib/membership-card/membership-card.component.ts b/libs/ui/src/lib/membership-card/membership-card.component.ts
new file mode 100644
index 00000000..0ae760ab
--- /dev/null
+++ b/libs/ui/src/lib/membership-card/membership-card.component.ts
@@ -0,0 +1,14 @@
+import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
+
+@Component({
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ selector: 'gf-membership-card',
+ styleUrls: ['./membership-card.component.scss'],
+ templateUrl: './membership-card.component.html'
+})
+export class MembershipCardComponent {
+ @Input() public expiresAt: string;
+ @Input() public name: string;
+
+ public routerLinkPricing = ['/' + $localize`pricing`];
+}
diff --git a/libs/ui/src/lib/membership-card/membership-card.module.ts b/libs/ui/src/lib/membership-card/membership-card.module.ts
new file mode 100644
index 00000000..4f51cc75
--- /dev/null
+++ b/libs/ui/src/lib/membership-card/membership-card.module.ts
@@ -0,0 +1,14 @@
+import { CommonModule } from '@angular/common';
+import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
+import { RouterModule } from '@angular/router';
+import { GfLogoModule } from '@ghostfolio/ui/logo';
+
+import { MembershipCardComponent } from './membership-card.component';
+
+@NgModule({
+ declarations: [MembershipCardComponent],
+ exports: [MembershipCardComponent],
+ imports: [CommonModule, GfLogoModule, RouterModule],
+ schemas: [CUSTOM_ELEMENTS_SCHEMA]
+})
+export class GfMembershipCardModule {}