Add business workshop management UI with Jalali scheduling and shared dashboard polish.

Includes workshop list/edit/details, registrations modal, category tree, shared EmptyState/RichTextEditor/toasts, and fixes for the Jalali date picker and thumbnail field layout.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alireza Hassani
2026-08-22 12:22:27 +03:30
co-authored by Cursor
parent 89269dff04
commit d5aca8bea7
76 changed files with 4719 additions and 974 deletions
+11 -7
View File
@@ -1,7 +1,7 @@
import { useEffect, useState } from 'react'
import { Link, useNavigate, useSearchParams } from 'react-router-dom'
import { Package, Plus, RotateCcw, Search, Sparkles } from 'lucide-react'
import { EmptyState } from '../components/EmptyState'
import { EmptyState, ListEmptyState } from '../components/EmptyState'
import { ProductCard } from '../components/ProductCard'
import { AddProductByAiModal } from '../components/AddProductByAiModal'
import { Pagination } from '../components/Pagination'
@@ -258,12 +258,16 @@ export function MyProductsPage() {
{isLoading ? (
<p className={styles.empty}>{t('products.list.loading')}</p>
) : products.length === 0 ? (
<EmptyState
icon={Package}
message={appliedName ? t('products.list.emptyFiltered') : t('products.list.empty')}
actionLabel={appliedName ? undefined : t('products.list.emptyCta')}
actionTo={appliedName ? undefined : '/products/new'}
/>
appliedName ? (
<EmptyState message={t('products.list.emptyFiltered')} />
) : (
<ListEmptyState
entity="products"
icon={Package}
actionLabel={t('products.list.emptyCta')}
actionTo="/products/new"
/>
)
) : (
<>
<div className={styles.grid}>