-
- @if (currentProduct.currency.inMultiplesOf !== undefined && currentProduct.currency.inMultiplesOf !== null) {
-
-
{{ 'labels.inputs.Currency in multiples of' | translate }}:
-
{{ currentProduct.currency.inMultiplesOf }}
+
+ Enable Lock-in Period
+
+
+ {{ currentProduct.enableLockinPeriod | yesNo }}
+
+
- }
-
- @if (currentProduct.dormancyAlert !== undefined) {
-
- Dormancy Alert:
- {{ currentProduct.dormancyAlert | yesNo }}
-
- }
-
- @if (currentProduct.nominationFacility !== undefined) {
-
- Nomination Facility:
- {{ currentProduct.nominationFacility | yesNo }}
-
- }
-
- @if (currentProduct.balanceSwapOption !== undefined) {
-
- Balance Swap Option:
- {{ currentProduct.balanceSwapOption | yesNo }}
-
- }
-
- @if (currentProduct.msme !== undefined) {
-
- MSME:
- {{ currentProduct.msme | yesNo }}
-
- }
-
- @if (currentProduct.autoDebitFacility !== undefined) {
-
- Auto Debit Facility:
- {{ currentProduct.autoDebitFacility | yesNo }}
-
- }
-
-
Interest On OD
-
-
-
- @if (currentProduct.interestPostingPeriodType?.value) {
-
- {{ 'labels.inputs.Interest Posting Period' | translate }}:
- {{ currentProduct.interestPostingPeriodType.value | translateKey: 'catalogs' }}
-
- }
-
- @if (currentProduct.interestCalculateSelector) {
-
- Interest Calculate:
- {{ currentProduct.interestCalculateSelector }}
-
- }
-
- @if (currentProduct.averagePeriod) {
-
- Average Period:
- {{ currentProduct.averagePeriod }}
-
- }
-
- @if (currentProduct.autoPost !== undefined) {
-
- Auto Post:
- {{ currentProduct.autoPost | yesNo }}
-
- }
-
- @if (currentProduct.frequencyFixDay) {
-
- Frequency Fix Day:
- {{ currentProduct.frequencyFixDay }}
-
- }
-
- @if (currentProduct.lastInterestDate) {
-
- Last Interest Date:
- {{ currentProduct.lastInterestDate | dateFormat }}
-
- }
-
-
{{ 'labels.inputs.Settings' | translate }}
-
-
-
- @if (currentProduct.minRequiredOpeningBalance) {
-
- {{ 'labels.inputs.Minimum Opening Balance' | translate }}:
- {{ currentProduct.minRequiredOpeningBalance | formatNumber }}
-
- }
-
- @if (currentProduct.lockinPeriodFrequency) {
-
- {{ 'labels.inputs.Lock-in Period' | translate }}:
- {{
- currentProduct.lockinPeriodFrequency +
- ' ' +
- (currentProduct.lockinPeriodFrequencyType?.value || currentProduct.lockinPeriodFrequencyType?.code || '')
- }}
-
- }
-
-
- {{ 'labels.inputs.Apply Withdrawal Fee for Transfers' | translate }}:
- {{ currentProduct.withdrawalFeeForTransfers | yesNo }}
-
-
- @if (currentProduct.balanceFrequency) {
-
- Balance Frequency:
- {{ currentProduct.balanceFrequency }}
-
- }
-
-
- Enable Lock-in Period:
- {{ currentProduct.enableLockinPeriod | yesNo }}
-
-
- @if (currentProduct.minBalanceForInterestCalculation) {
-
- {{ 'labels.inputs.Balance Required for Interest Calculation' | translate }}:
- {{ currentProduct.minBalanceForInterestCalculation | formatNumber }}
-
- }
-
-
- {{ 'labels.inputs.Enforce Minimum Balance' | translate }}:
- {{ currentProduct.enforceMinRequiredBalance | yesNo }}
-
-
- @if (currentProduct.minRequiredBalance) {
-
- {{ 'labels.inputs.Minimum Balance' | translate }}:
- {{ currentProduct.minRequiredBalance | formatNumber }}
-
- }
-
-
- {{ 'labels.inputs.Withhold Tax is Applicable' | translate }}:
- {{ currentProduct.withHoldTax | yesNo }}
-
-
- @if (currentProduct.withHoldTax) {
-
- {{ 'labels.inputs.Tax Group' | translate }}:
- {{ currentProduct.taxGroup.name }}
-
- }
-
-
- {{ 'labels.inputs.Is Overdraft Allowed' | translate }}:
- {{ currentProduct.allowOverdraft | yesNo }}
-
-
-
- Account Closed Zero Balance in Day Closing:
- {{ currentProduct.accountClosedZeroBalanceInDayClosing | yesNo }}
-
-
- @if (currentProduct.minOverdraftForInterestCalculation) {
-
- {{ 'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate }}:
- {{ currentProduct.minOverdraftForInterestCalculation | formatNumber }}
-
- }
-
- @if (currentProduct.nominalAnnualInterestRateOverdraft) {
-
- {{ 'labels.inputs.Nominal Annual Interest for Overdraft' | translate }}:
- {{ currentProduct.nominalAnnualInterestRateOverdraft | formatNumber }} %
-
- }
-
- @if (currentProduct.overdraftLimit) {
-
- {{ 'labels.inputs.Maximum Overdraft Amount Limit' | translate }}:
- {{ currentProduct.overdraftLimit | formatNumber }}
-
- }
-
- @if (currentProduct.allowOverdraft) {
- @if (currentProduct.avgBalanceCalcPeriod) {
-
-
Average Balance Calculation Period:
-
{{ currentProduct.avgBalanceCalcPeriod }}
+ @if (currentProduct.minBalanceForInterestCalculation) {
+
+ {{ 'labels.inputs.Balance Required for Interest Calculation' | translate }}
+ {{ currentProduct.minBalanceForInterestCalculation | formatNumber }}
}
-
- @if (currentProduct.validForPeriod) {
-
- Valid for Period:
- {{ currentProduct.validForPeriod }}
-
- }
-
- @if (currentProduct.odAccountClosedZeroBalanceInDayClosing !== undefined) {
-
- OD Account Closed with Zero Balance in Day Closing:
- {{ currentProduct.odAccountClosedZeroBalanceInDayClosing | yesNo }}
-
- }
- }
-
-
- {{ 'labels.inputs.Enable Dormancy Tracking' | translate }}:
- {{ currentProduct.isDormancyTrackingActive | yesNo }}
-
-
- @if (currentProduct.isDormancyTrackingActive) {
-
-
{{ 'labels.inputs.Number of Days to Inactive sub-status' | translate }}:
-
{{ currentProduct.daysToInactive }}
-
{{ 'labels.inputs.Number of Days to Dormant sub-status' | translate }}:
-
{{ currentProduct.daysToDormancy }}
-
{{ 'labels.inputs.Number of Days to Escheat' | translate }}:
-
{{ currentProduct.daysToEscheat }}
+
+ {{ 'labels.inputs.Enforce Minimum Balance' | translate }}
+
+
+ {{ currentProduct.enforceMinRequiredBalance | yesNo }}
+
+
- }
-
-
Account Facilities
-
-
- @if (currentProduct.accountFacilityConfig) {
-
- @for (feature of accountFacilityFeatureItems; track feature.key) {
- @if (currentProduct.accountFacilityConfig[feature.key] !== undefined) {
-
- {{ feature.label }}:
- {{ currentProduct.accountFacilityConfig[feature.key] | yesNo }}
-
- }
+ @if (currentProduct.minRequiredBalance) {
+
+ {{ 'labels.inputs.Minimum Balance' | translate }}
+ {{ currentProduct.minRequiredBalance | formatNumber }}
+
+ }
+
+ {{ 'labels.inputs.Withhold Tax is Applicable' | translate }}
+
+
+ {{ currentProduct.withHoldTax | yesNo }}
+
+
+
+ @if (currentProduct.withHoldTax) {
+
+ {{ 'labels.inputs.Tax Group' | translate }}
+ {{ currentProduct.taxGroup.name }}
+
+ }
+
+ {{ 'labels.inputs.Is Overdraft Allowed' | translate }}
+
+
+ {{ currentProduct.allowOverdraft | yesNo }}
+
+
+
+
+ Account Closed Zero Balance in Day Closing
+
+
+ {{ currentProduct.accountClosedZeroBalanceInDayClosing | yesNo }}
+
+
+
+ @if (currentProduct.minOverdraftForInterestCalculation) {
+
+ {{
+ 'labels.inputs.Minimum Overdraft Required for Interest Calculation' | translate
+ }}
+ {{ currentProduct.minOverdraftForInterestCalculation | formatNumber }}
+
+ }
+ @if (currentProduct.nominalAnnualInterestRateOverdraft) {
+
+ {{ 'labels.inputs.Nominal Annual Interest for Overdraft' | translate }}
+ {{ currentProduct.nominalAnnualInterestRateOverdraft | formatNumber }} %
+
+ }
+ @if (currentProduct.overdraftLimit) {
+
+ {{ 'labels.inputs.Maximum Overdraft Amount Limit' | translate }}
+ {{ currentProduct.overdraftLimit | formatNumber }}
+
+ }
+ @if (currentProduct.allowOverdraft) {
+ @if (currentProduct.avgBalanceCalcPeriod) {
+
+ Average Balance Calculation Period
+ {{ currentProduct.avgBalanceCalcPeriod }}
+
}
-
- }
-
- @if (currentProduct.accountFacilityLimits?.length) {
-
-
Account Facility Limits
-
-
-
- | Limit Type |
- {{ row.limitType }} |
-
-
- General Limit |
- {{ row.generalLimit }} |
-
-
- Minor Account Limit |
- {{ row.minorAccountLimit }} |
-
-
- Small Saving Limit |
- {{ row.smallSavingLimit }} |
-
-
-
-
-
- }
-
- @if (currentProduct.depositLimitKyc) {
-
-
Deposit Limit (KYC)
-
- General:
- {{ currentProduct.depositLimitKyc.general.kycType }} -
- {{ currentProduct.depositLimitKyc.general.limit }}
+ Valid for Period
+ {{ currentProduct.validForPeriod }}
+
+ }
+ @if (currentProduct.odAccountClosedZeroBalanceInDayClosing !== undefined) {
+
+ OD Account Closed with Zero Balance in Day Closing
+ {{ currentProduct.odAccountClosedZeroBalanceInDayClosing | yesNo }}
+
+ }
+ }
+
+ {{ 'labels.inputs.Enable Dormancy Tracking' | translate }}
+
+
-
-
- Minor:
- {{ currentProduct.depositLimitKyc.minor.kycType }} - {{ currentProduct.depositLimitKyc.minor.limit }}
-
-
- Small Saving:
- {{ currentProduct.depositLimitKyc.smallSaving.kycType }} -
- {{ currentProduct.depositLimitKyc.smallSaving.limit }}
-
+ {{ currentProduct.isDormancyTrackingActive | yesNo }}
+
+
- }
+ @if (currentProduct.isDormancyTrackingActive) {
+
+ {{ 'labels.inputs.Number of Days to Inactive sub-status' | translate }}
+ {{ currentProduct.daysToInactive }}
+
+
+ {{ 'labels.inputs.Number of Days to Dormant sub-status' | translate }}
+ {{ currentProduct.daysToDormancy }}
+
+
+ {{ 'labels.inputs.Number of Days to Escheat' | translate }}
+ {{ currentProduct.daysToEscheat }}
+
+ }
+
+
- @if (currentProduct.charges.length) {
-
-
{{ 'labels.heading.Charges' | translate }}
-
-
+
+ @if (
+ currentProduct.accountFacilityConfig ||
+ currentProduct.accountFacilityLimits?.length ||
+ currentProduct.depositLimitKyc
+ ) {
+
+
+
+ @if (currentProduct.accountFacilityConfig) {
+
+ @for (feature of accountFacilityFeatureItems; track feature.key) {
+ @if (currentProduct.accountFacilityConfig[feature.key] !== undefined) {
+
+
+ {{ feature.label }}
+
+ }
+ }
+
+ }
+
+ @if (currentProduct.accountFacilityLimits?.length) {
+ Account Facility Limits
+
+
+
+ | Limit Type |
+ {{ row.limitType }} |
+
+
+ General Limit |
+ {{ row.generalLimit }} |
+
+
+ Minor Account Limit |
+ {{ row.minorAccountLimit }} |
+
+
+ Small Saving Limit |
+ {{ row.smallSavingLimit }} |
+
+
+
+
+
+ }
+
+ @if (currentProduct.depositLimitKyc) {
+ Deposit Limit (KYC)
+
+
+ General
+ {{ currentProduct.depositLimitKyc.general.kycType }} ·
+ {{ currentProduct.depositLimitKyc.general.limit }}
+
+
+ Minor
+ {{ currentProduct.depositLimitKyc.minor.kycType }} ·
+ {{ currentProduct.depositLimitKyc.minor.limit }}
+
+
+ Small Saving
+ {{ currentProduct.depositLimitKyc.smallSaving.kycType }} ·
+ {{ currentProduct.depositLimitKyc.smallSaving.limit }}
+
+
+ }
+
+ }
+
+
+ @if (currentProduct.charges.length) {
+
+
+
+
{{ 'labels.heading.Charges' | translate }}
+
+
+
| {{ 'labels.inputs.Name' | translate }} |
-
- {{ charge.name + ', ' + charge.currency.displaySymbol }}
- |
+ {{ charge.name + ', ' + charge.currency.displaySymbol }} |
{{ 'labels.inputs.Type' | translate }} |
@@ -457,186 +569,173 @@
{{ 'labels.inputs.Amount' | translate }} |
-
- {{ charge.amount | formatNumber }}
- |
+ {{ charge.amount | formatNumber }} |
{{ 'labels.inputs.Collected On' | translate }} |
-
- {{ charge.chargeTimeType.value | translateKey: 'catalogs' }}
- |
+ {{ charge.chargeTimeType.value | translateKey: 'catalogs' }} |
- }
-
- {{ 'labels.heading.Accounting' | translate }}
-
-
+
+ }
+
+
+
+
+
{{ 'labels.heading.Accounting' | translate }}
+
-
+ >
+
- @if (currentProduct.otherGlMappingsMap) {
-
-
Other GL Mappings
-
-
- @if (currentProduct.otherGlMappingsMap.assets?.length) {
-
Assets
-
-
- | Account Name |
- {{ row.accountName }} |
-
-
- GL Account |
- {{ row.glCode || row.glAccountId }} |
-
-
-
-
- }
-
- @if (currentProduct.otherGlMappingsMap.liabilities?.length) {
-
Liabilities
-
-
- | Account Name |
- {{ row.accountName }} |
-
-
- GL Account |
- {{ row.glCode || row.glAccountId }} |
-
-
-
-
- }
-
- @if (currentProduct.otherGlMappingsMap.expenses?.length) {
-
Expenses
-
-
- | Account Name |
- {{ row.accountName }} |
-
-
- GL Account |
- {{ row.glCode || row.glAccountId }} |
-
-
-
-
- }
-
- @if (currentProduct.otherGlMappingsMap.income?.length) {
-
Income
-
-
- | Account Name |
- {{ row.accountName }} |
-
-
- GL Account |
- {{ row.glCode || row.glAccountId }} |
-
-
-
-
- }
+
+ @if (currentProduct.otherGlMappingsMap) {
+
+
- }
- @if (
- currentProduct.paymentChannelToFundSourceMappings?.length ||
- currentProduct.feeToIncomeAccountMappings?.length ||
- currentProduct.penaltyToIncomeAccountMappings?.length
- ) {
-
-
{{ 'labels.inputs.Advanced Accounting Rules' | translate }}
-
- @if (currentProduct.paymentChannelToFundSourceMappings?.length) {
-
-
{{ 'labels.inputs.Fund Sources for Payment Channels' | translate }}
-
-
- | {{ 'labels.inputs.Payment Type' | translate }} |
-
- {{ paymentFundSource.paymentType.name }}
- |
-
-
- {{ 'labels.inputs.Fund Source' | translate }} |
-
- ({{ paymentFundSource.fundSourceAccount.glCode }}) {{ paymentFundSource.fundSourceAccount.name }}
- |
-
-
-
-
-
- }
- @if (currentProduct.feeToIncomeAccountMappings?.length) {
-
-
{{ 'labels.inputs.Fees to Specific Income Accounts' | translate }}
-
-
- | {{ 'labels.inputs.Fee/Charge' | translate }} |
-
- {{ fee.charge.name }}
- |
-
-
- {{ 'labels.inputs.Income Account' | translate }} |
- ({{ fee.incomeAccount.glCode }}) {{ fee.incomeAccount.name }} |
-
-
-
-
-
- }
- @if (currentProduct.penaltyToIncomeAccountMappings?.length) {
-
-
{{ 'labels.inputs.Penalties to Specific Income Accounts' | translate }}
-
-
- | {{ 'labels.inputs.Penalty' | translate }} |
-
- {{ penalty.charge.name }}
- |
-
-
- {{ 'labels.inputs.Income Account' | translate }} |
-
- ({{ penalty.incomeAccount.glCode }}) {{ penalty.incomeAccount.name }}
- |
-
-
-
-
-
- }
+ @if (currentProduct.otherGlMappingsMap.assets?.length) {
+
Assets
+
+
+
+ | Account Name |
+ {{ row.accountName }} |
+
+
+ GL Account |
+ {{ row.glCode || row.glAccountId }} |
+
+
+
+
+
+ }
+ @if (currentProduct.otherGlMappingsMap.liabilities?.length) {
+
Liabilities
+
+
+
+ | Account Name |
+ {{ row.accountName }} |
+
+
+ GL Account |
+ {{ row.glCode || row.glAccountId }} |
+
+
+
+
+
+ }
+ @if (currentProduct.otherGlMappingsMap.expenses?.length) {
+
Expenses
+
+
+
+ | Account Name |
+ {{ row.accountName }} |
+
+
+ GL Account |
+ {{ row.glCode || row.glAccountId }} |
+
+
+
+
+
+ }
+ @if (currentProduct.otherGlMappingsMap.income?.length) {
+
Income
+
+
+
+ | Account Name |
+ {{ row.accountName }} |
+
+
+ GL Account |
+ {{ row.glCode || row.glAccountId }} |
+
+
+
+
+
+ }
+
+ }
+
+
+ @if (
+ currentProduct.paymentChannelToFundSourceMappings?.length ||
+ currentProduct.feeToIncomeAccountMappings?.length ||
+ currentProduct.penaltyToIncomeAccountMappings?.length
+ ) {
+
+
+
+
{{ 'labels.inputs.Advanced Accounting Rules' | translate }}
- }
-
+
+ @if (currentProduct.paymentChannelToFundSourceMappings?.length) {
+ {{ 'labels.inputs.Fund Sources for Payment Channels' | translate }}
+
+
+
+ | {{ 'labels.inputs.Payment Type' | translate }} |
+ {{ p.paymentType.name }} |
+
+
+ {{ 'labels.inputs.Fund Source' | translate }} |
+ ({{ p.fundSourceAccount.glCode }}) {{ p.fundSourceAccount.name }} |
+
+
+
+
+
+ }
+ @if (currentProduct.feeToIncomeAccountMappings?.length) {
+ {{ 'labels.inputs.Fees to Specific Income Accounts' | translate }}
+
+
+
+ | {{ 'labels.inputs.Fee/Charge' | translate }} |
+ {{ f.charge.name }} |
+
+
+ {{ 'labels.inputs.Income Account' | translate }} |
+ ({{ f.incomeAccount.glCode }}) {{ f.incomeAccount.name }} |
+
+
+
+
+
+ }
+ @if (currentProduct.penaltyToIncomeAccountMappings?.length) {
+ {{ 'labels.inputs.Penalties to Specific Income Accounts' | translate }}
+
+
+
+ | {{ 'labels.inputs.Penalty' | translate }} |
+ {{ p.charge.name }} |
+
+
+ {{ 'labels.inputs.Income Account' | translate }} |
+ ({{ p.incomeAccount.glCode }}) {{ p.incomeAccount.name }} |
+
+
+
+
+
+ }
+
+ }
diff --git a/src/app/products/current-products/view-current-product/current-product-general-tab/current-product-general-tab.component.scss b/src/app/products/current-products/view-current-product/current-product-general-tab/current-product-general-tab.component.scss
index 367f0cc1d..cf3013549 100644
--- a/src/app/products/current-products/view-current-product/current-product-general-tab/current-product-general-tab.component.scss
+++ b/src/app/products/current-products/view-current-product/current-product-general-tab/current-product-general-tab.component.scss
@@ -6,48 +6,429 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
-@use 'assets/styles/helper';
-@use 'assets/styles/colours' as *;
-@use 'assets/styles/product-view' as pv;
-
-@include pv.product-view-styles;
-
-/* Current-account-specific green accent */
:host {
- --pv-accent: #15803d;
- --pv-accent-l: #dcfce7;
+ --vsp-navy: #0b1e3d;
+ --vsp-blue: #1d4ed8;
+ --vsp-blue-l: #eff6ff;
+ --vsp-teal: #0e7e6b;
+ --vsp-teal-l: #ccfbf1;
+ --vsp-purple: #6d28d9;
+ --vsp-purple-l: #ede9fe;
+ --vsp-indigo: #3730a3;
+ --vsp-indigo-l: #e0e7ff;
+ --vsp-amber: #b45309;
+ --vsp-amber-l: #fef3c7;
+ --vsp-green: #15803d;
+ --vsp-green-l: #dcfce7;
+ --vsp-red: #c0392b;
+ --vsp-red-l: #fee2e2;
+ --vsp-pink: #be185d;
+ --vsp-pink-l: #fce7f3;
+ --vsp-g50: #f8fafc;
+ --vsp-g100: #f1f5f9;
+ --vsp-g200: #e2e8f0;
+ --vsp-g500: #64748b;
+ --vsp-g700: #334155;
+ --vsp-g900: #0f172a;
+
+ display: block;
+ font-family:
+ 'DM Sans',
+ system-ui,
+ -apple-system,
+ sans-serif;
+ color: var(--vsp-g900);
+ font-size: 13.5px;
}
-.tab-container {
- padding: 1%;
- margin: 1%;
+.vsp-root {
+ padding: 4px 4px 24px;
+ display: flex;
+ flex-direction: column;
+ gap: 14px;
}
-.mat-h3 {
- margin-top: 10px !important;
- font-weight: 300;
- color: $status-approved;
+/* ───────── HERO ───────── */
+.vsp-hero {
+ background: linear-gradient(135deg, var(--vsp-navy) 0%, var(--vsp-blue) 100%);
+ border-radius: 14px;
+ padding: 22px 22px 22px 18px;
+ display: flex;
+ align-items: flex-start;
+ gap: 18px;
+ box-shadow:
+ 0 10px 24px rgb(11 30 61 / 18%),
+ 0 4px 10px rgb(11 30 61 / 12%);
+ color: #fff;
+ position: relative;
+ overflow: hidden;
}
-h2,
-h3,
-h4 {
- margin: 0;
+.vsp-hero::before {
+ content: '';
+ position: absolute;
+ top: -60px;
+ right: -60px;
+ width: 240px;
+ height: 240px;
+ border-radius: 50%;
+ background: radial-gradient(circle, rgb(255 255 255 / 8%) 0%, transparent 70%);
+ pointer-events: none;
+}
+
+.vsp-hero-left {
+ display: flex;
+ align-items: flex-start;
+ gap: 16px;
+ flex: 1;
+ min-width: 0;
+}
+
+.vsp-hero-icon {
+ width: 56px;
+ height: 56px;
+ border-radius: 14px;
+ background: rgb(255 255 255 / 16%);
+ border: 1px solid rgb(255 255 255 / 22%);
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 24px;
+ flex-shrink: 0;
+}
+
+.vsp-hero-text {
+ flex: 1;
+ min-width: 0;
+}
+
+.vsp-hero-eyebrow {
+ font-size: 10.5px;
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.12em;
+ color: rgb(255 255 255 / 70%);
+ margin-bottom: 4px;
+}
+
+.vsp-hero-title {
+ margin: 0 0 10px;
+ font-size: 22px;
+ font-weight: 700;
+ letter-spacing: 0.01em;
+ color: #fff;
+ line-height: 1.2;
+}
+
+.vsp-hero-meta {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ flex-wrap: wrap;
+}
+
+.vsp-hero-desc {
+ margin: 12px 0 0;
+ font-size: 13px;
+ color: rgb(255 255 255 / 82%);
+ line-height: 1.5;
+ max-width: 720px;
+}
+
+.vsp-edit-btn {
+ display: inline-flex;
+ align-items: center;
+ gap: 8px;
+ height: 38px;
+ padding: 0 16px;
+ border-radius: 10px;
+ background: rgb(255 255 255 / 14%);
+ color: #fff;
+ border: 1px solid rgb(255 255 255 / 28%);
+ font-size: 13px;
+ font-weight: 700;
+ letter-spacing: 0.02em;
+ cursor: pointer;
+ text-decoration: none;
+ white-space: nowrap;
+ font-family: inherit;
+ flex-shrink: 0;
+ transition: all 0.16s ease;
+
+ fa-icon {
+ font-size: 12px;
+ }
+
+ &:hover {
+ background: rgb(255 255 255 / 24%);
+ border-color: rgb(255 255 255 / 50%);
+ }
+}
+
+/* ───────── PILLS ───────── */
+.vsp-pill {
+ display: inline-flex;
+ align-items: center;
+ gap: 5px;
+ font-size: 11px;
+ font-weight: 700;
+ letter-spacing: 0.04em;
+ text-transform: uppercase;
+ padding: 4px 10px;
+ border-radius: 999px;
+ font-family: inherit;
+
+ fa-icon {
+ font-size: 9.5px;
+ }
+
+ &--code {
+ background: rgb(255 255 255 / 18%);
+ color: #fff;
+ border: 1px solid rgb(255 255 255 / 24%);
+ font-family: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace;
+ }
+
+ &--teal {
+ background: var(--vsp-teal-l);
+ color: var(--vsp-teal);
+ border: 1px solid #99f6e4;
+ }
+
+ &--blue {
+ background: var(--vsp-blue-l);
+ color: var(--vsp-blue);
+ border: 1px solid #dbeafe;
+ }
+
+ &--green {
+ background: var(--vsp-green-l);
+ color: var(--vsp-green);
+ border: 1px solid #bbf7d0;
+ }
+
+ &--amber {
+ background: var(--vsp-amber-l);
+ color: var(--vsp-amber);
+ border: 1px solid #fde68a;
+ }
+
+ &--red {
+ background: var(--vsp-red-l);
+ color: var(--vsp-red);
+ border: 1px solid #fecaca;
+ }
+
+ &--gray {
+ background: var(--vsp-g100);
+ color: var(--vsp-g700);
+ border: 1px solid var(--vsp-g200);
+ }
+}
+
+/* ───────── SECTION ───────── */
+.vsp-section {
+ background: #fff;
+ border: 1px solid var(--vsp-g200);
+ border-radius: 12px;
+ padding: 16px 20px;
+ box-shadow: 0 1px 2px rgb(15 23 42 / 4%);
+}
+
+.vsp-section-h {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+ margin-bottom: 14px;
+ padding-bottom: 12px;
+ border-bottom: 1px dashed var(--vsp-g200);
+
+ h3 {
+ margin: 0;
+ font-size: 14px;
+ font-weight: 700;
+ color: var(--vsp-g900);
+ letter-spacing: 0.02em;
+ }
+}
+
+.vsp-section-ic {
+ width: 36px;
+ height: 36px;
+ border-radius: 10px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 14px;
+ flex-shrink: 0;
+
+ &--blue {
+ background: var(--vsp-blue-l);
+ color: var(--vsp-blue);
+ }
+
+ &--teal {
+ background: var(--vsp-teal-l);
+ color: var(--vsp-teal);
+ }
+
+ &--purple {
+ background: var(--vsp-purple-l);
+ color: var(--vsp-purple);
+ }
+
+ &--indigo {
+ background: var(--vsp-indigo-l);
+ color: var(--vsp-indigo);
+ }
+
+ &--amber {
+ background: var(--vsp-amber-l);
+ color: var(--vsp-amber);
+ }
+
+ &--green {
+ background: var(--vsp-green-l);
+ color: var(--vsp-green);
+ }
+
+ &--red {
+ background: var(--vsp-red-l);
+ color: var(--vsp-red);
+ }
+
+ &--pink {
+ background: var(--vsp-pink-l);
+ color: var(--vsp-pink);
+ }
+}
+
+.vsp-sub-h {
+ margin: 16px 0 10px;
+ font-size: 12px;
+ font-weight: 700;
+ color: var(--vsp-g700);
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+}
+
+/* ───────── KEY/VALUE GRID ───────── */
+.vsp-grid {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 10px 24px;
+}
+
+.vsp-grid--3 {
+ grid-template-columns: repeat(3, 1fr);
+}
+
+@media (width <= 900px) {
+ .vsp-grid,
+ .vsp-grid--3 {
+ grid-template-columns: 1fr 1fr;
+ }
+}
+
+@media (width <= 600px) {
+ .vsp-grid,
+ .vsp-grid--3 {
+ grid-template-columns: 1fr;
+ }
+}
+
+.vsp-kv {
+ display: flex;
+ flex-direction: column;
+ gap: 3px;
+ padding: 8px 0;
+ border-bottom: 1px dashed var(--vsp-g100);
+
+ &--span {
+ grid-column: 1 / -1;
+ }
+}
+
+.vsp-k {
+ font-size: 10.5px;
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ color: var(--vsp-g500);
+}
+
+.vsp-v {
+ font-size: 13.5px;
+ color: var(--vsp-g900);
font-weight: 500;
+ word-break: break-word;
+
+ strong {
+ font-weight: 700;
+ }
}
-table {
+/* ───────── FEATURE GRID (account facilities) ───────── */
+.vsp-feature {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ padding: 8px 12px;
+ border-radius: 8px;
+ background: var(--vsp-g50);
+ border: 1px solid var(--vsp-g200);
+ font-size: 12.5px;
+ font-weight: 600;
+ color: var(--vsp-g700);
+
+ fa-icon {
+ font-size: 12px;
+ color: var(--vsp-g500);
+ }
+
+ &.is-on {
+ background: var(--vsp-green-l);
+ border-color: #bbf7d0;
+ color: var(--vsp-green);
+
+ fa-icon {
+ color: var(--vsp-green);
+ }
+ }
+}
+
+/* ───────── TABLES ───────── */
+.vsp-table-wrap {
+ overflow-x: auto;
+ border: 1px solid var(--vsp-g200);
+ border-radius: 10px;
+ margin-top: 4px;
+}
+
+.vsp-table {
width: 100%;
-}
+ background: #fff;
-.mat-elevation-z1 {
- margin: 1em 0 1.5em;
-}
+ th.mat-mdc-header-cell {
+ background: var(--vsp-g50);
+ color: var(--vsp-g700);
+ font-size: 11px;
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ padding: 11px 14px;
+ border-bottom: 1px solid var(--vsp-g200);
+ white-space: nowrap;
+ }
-span {
- margin: 0.5em 0;
-}
+ td.mat-mdc-cell {
+ padding: 10px 14px;
+ border-bottom: 1px solid var(--vsp-g100);
+ font-size: 12.5px;
+ color: var(--vsp-g900);
+ }
-mat-divider {
- margin: 0 0 0.5em;
+ tbody tr:last-child td.mat-mdc-cell {
+ border-bottom: 0;
+ }
}
diff --git a/src/app/products/current-products/view-current-product/current-product-general-tab/current-product-general-tab.component.ts b/src/app/products/current-products/view-current-product/current-product-general-tab/current-product-general-tab.component.ts
index ecc8e2eb5..64299416c 100644
--- a/src/app/products/current-products/view-current-product/current-product-general-tab/current-product-general-tab.component.ts
+++ b/src/app/products/current-products/view-current-product/current-product-general-tab/current-product-general-tab.component.ts
@@ -34,6 +34,7 @@ import { STANDALONE_SHARED_IMPORTS } from 'app/standalone-shared.module';
styleUrls: ['./current-product-general-tab.component.scss'],
imports: [
...STANDALONE_SHARED_IMPORTS,
+ RouterLink,
FaIconComponent,
MatDivider,
MatTable,
diff --git a/src/app/products/fixed-deposit-products/view-fixed-deposit-product/fixed-deposit-general-tab/fixed-deposit-general-tab.component.html b/src/app/products/fixed-deposit-products/view-fixed-deposit-product/fixed-deposit-general-tab/fixed-deposit-general-tab.component.html
index 85726f0f4..cb3324ea9 100644
--- a/src/app/products/fixed-deposit-products/view-fixed-deposit-product/fixed-deposit-general-tab/fixed-deposit-general-tab.component.html
+++ b/src/app/products/fixed-deposit-products/view-fixed-deposit-product/fixed-deposit-general-tab/fixed-deposit-general-tab.component.html
@@ -6,524 +6,608 @@
file, You can obtain one at http://mozilla.org/MPL/2.0/.
-->
-
+
-
-
-
-
-
Fixed Deposit Product
-
{{ fixedDepositProductData.name }}
-