feat: Implement price info card component and product categories with grid view

- Added `price-info-card.component` to display total amount, tax, and payable amount.
- Integrated price masking directive for formatted price display.
- Created `categories.component` to list product categories with loading skeletons.
- Implemented `grid-view.component` for displaying products in a grid layout.
- Enhanced `products.component` to manage category selection and product display.
- Introduced new models for product categories and stock responses.
- Updated `main.service.ts` to fetch product categories and stock data.
- Refactored `POSStore` to manage state for products, categories, and order items.
- Added utility functions for price formatting and number normalization.
- Included placeholder images for product and logo.
This commit is contained in:
2025-12-14 20:34:15 +03:30
parent 35be7e0298
commit 17fa65407c
43 changed files with 894 additions and 132 deletions
@@ -1,10 +1,10 @@
<p-card class="w-full border border-primary-700">
<div class="flex gap-5 text-primary-400">
<div class="flex gap-3 text-primary-400">
<div class="shrink-0 pt-1">
<i [class]="'pi ' + icon + ' text-2xl'"></i>
</div>
<div class="grow flex flex-col gap-1">
<span class="text-sm">{{ label }}</span>
<span class="text-sm font-bold">{{ label }}</span>
<span class="text-xl font-bold text-primary">{{ value }}</span>
</div>
</div>
@@ -1,5 +1,5 @@
import { PaginatorComponent, UikitCopyComponent, UikitEmptyStateComponent } from '@/uikit';
import { formatJalali } from '@/utils';
import { formatJalali, formatWithCurrency } from '@/utils';
import { CommonModule } from '@angular/common';
import {
Component,
@@ -129,7 +129,7 @@ export class PageDataListComponent<I> {
case 'boolean':
return data ? 'بله' : 'خیر';
case 'price':
return typeof data === 'number' ? data.toLocaleString() : '-';
return formatWithCurrency(data, false, 'ریال');
default:
break;
}