Polish business FA layout and wire special-group keys plus SSL sync.
RTL carousels/FABs, special key+title fields, slider gallery fixes, and dashboard SSL sync agent for super-admin. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
co-authored by
Cursor
parent
66004a0fba
commit
672091d1f5
@@ -1,5 +1,7 @@
|
||||
import { FolderPlus, Layers, ListTree, Trash2, ChevronRight, ClipboardList } from 'lucide-react'
|
||||
import { useLocale } from '@meshkee/dashboard-ui'
|
||||
import type { Category } from '../types/category'
|
||||
import { useT } from '../i18n/useT'
|
||||
import { Tooltip } from './Tooltip'
|
||||
import styles from './CategoryRow.module.css'
|
||||
|
||||
@@ -32,6 +34,16 @@ export function CategoryRow({
|
||||
onOptions,
|
||||
onRemove,
|
||||
}: CategoryRowProps) {
|
||||
const t = useT()
|
||||
const { locale } = useLocale()
|
||||
const isFa = locale === 'fa'
|
||||
const primaryName = isFa ? category.nameFa || category.nameEn : category.nameEn
|
||||
const secondaryName = isFa
|
||||
? category.nameFa
|
||||
? category.nameEn
|
||||
: ''
|
||||
: category.nameFa
|
||||
|
||||
return (
|
||||
<div
|
||||
className={styles.row}
|
||||
@@ -56,9 +68,13 @@ export function CategoryRow({
|
||||
>
|
||||
<div className={styles.textBlock}>
|
||||
<div className={styles.names}>
|
||||
<span className={styles.nameEn}>{category.nameEn}</span>
|
||||
<span className={styles.separator}>·</span>
|
||||
<span className={styles.nameFa}>{category.nameFa}</span>
|
||||
<span className={isFa ? styles.nameFa : styles.nameEn}>{primaryName}</span>
|
||||
{secondaryName ? (
|
||||
<>
|
||||
<span className={styles.separator}>·</span>
|
||||
<span className={isFa ? styles.nameEn : styles.nameFa}>{secondaryName}</span>
|
||||
</>
|
||||
) : null}
|
||||
{hasChildren && (
|
||||
<span className={`${styles.chevron} ${expanded ? styles.chevronOpen : ''}`}>
|
||||
<ChevronRight size={18} />
|
||||
@@ -72,20 +88,20 @@ export function CategoryRow({
|
||||
</div>
|
||||
|
||||
<div className={styles.controls}>
|
||||
<Tooltip label="Add sub category">
|
||||
<Tooltip label={t('categories.tooltip.addSub')}>
|
||||
<button
|
||||
className={styles.controlBtn}
|
||||
onClick={() => onAddSub(category.id)}
|
||||
aria-label="Add sub category"
|
||||
aria-label={t('categories.tooltip.addSub')}
|
||||
>
|
||||
<FolderPlus size={17} />
|
||||
</button>
|
||||
</Tooltip>
|
||||
<Tooltip label="Manage variations">
|
||||
<Tooltip label={t('categories.tooltip.variations')}>
|
||||
<button
|
||||
className={`${styles.controlBtn} ${styles.iconBtn}`}
|
||||
onClick={() => onVariations(category.id)}
|
||||
aria-label={`Variations (${variationCount})`}
|
||||
aria-label={`${t('categories.tooltip.variations')} (${variationCount})`}
|
||||
>
|
||||
<Layers size={17} />
|
||||
{variationCount > 0 && (
|
||||
@@ -93,11 +109,11 @@ export function CategoryRow({
|
||||
)}
|
||||
</button>
|
||||
</Tooltip>
|
||||
<Tooltip label="Technical data form">
|
||||
<Tooltip label={t('categories.tooltip.technical')}>
|
||||
<button
|
||||
className={`${styles.controlBtn} ${styles.iconBtn}`}
|
||||
onClick={() => onTechnicalForm(category.id)}
|
||||
aria-label={`Technical data form (${technicalFieldCount})`}
|
||||
aria-label={`${t('categories.tooltip.technical')} (${technicalFieldCount})`}
|
||||
>
|
||||
<ClipboardList size={17} />
|
||||
{technicalFieldCount > 0 && (
|
||||
@@ -105,20 +121,20 @@ export function CategoryRow({
|
||||
)}
|
||||
</button>
|
||||
</Tooltip>
|
||||
<Tooltip label="Category options">
|
||||
<Tooltip label={t('categories.tooltip.options')}>
|
||||
<button
|
||||
className={styles.controlBtn}
|
||||
onClick={() => onOptions(category.id)}
|
||||
aria-label="Options"
|
||||
aria-label={t('categories.tooltip.options')}
|
||||
>
|
||||
<ListTree size={17} />
|
||||
</button>
|
||||
</Tooltip>
|
||||
<Tooltip label="Remove category">
|
||||
<Tooltip label={t('categories.tooltip.remove')}>
|
||||
<button
|
||||
className={`${styles.controlBtn} ${styles.danger}`}
|
||||
onClick={() => onRemove(category.id)}
|
||||
aria-label="Remove"
|
||||
aria-label={t('categories.tooltip.remove')}
|
||||
>
|
||||
<Trash2 size={17} />
|
||||
</button>
|
||||
|
||||
Reference in New Issue
Block a user