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:
Alireza Hassani
2026-08-03 00:06:44 +03:30
co-authored by Cursor
parent 66004a0fba
commit 672091d1f5
113 changed files with 4154 additions and 1451 deletions
+33 -18
View File
@@ -1,40 +1,50 @@
import { Briefcase, PlusCircle, FolderTree, Settings } from 'lucide-react'
import { SectionCard } from '../components/SectionCard'
import { Breadcrumbs } from '../components/Breadcrumbs'
import { useT } from '../i18n/useT'
import type { BusinessMessageKey } from '../i18n/messages'
import styles from '../components/PageContent.module.css'
const portfolioSections = [
const portfolioSections: {
icon: typeof Briefcase
titleKey: BusinessMessageKey
descKey: BusinessMessageKey
linkKey: BusinessMessageKey
href: string
}[] = [
{
icon: Briefcase,
title: 'My Portfolios',
description: 'View, edit and manage all your portfolio items.',
linkText: 'View portfolios',
titleKey: 'nav.portfolios.list',
descKey: 'portfolio.card.list.desc',
linkKey: 'portfolio.card.list.link',
href: '/portfolios/list',
},
{
icon: PlusCircle,
title: 'Add New Portfolio',
description: 'Create and publish a new portfolio project.',
linkText: 'Add portfolio',
titleKey: 'nav.portfolios.new',
descKey: 'portfolio.card.new.desc',
linkKey: 'portfolio.card.new.link',
href: '/portfolios/new',
},
{
icon: FolderTree,
title: 'Portfolio Categories',
description: 'Organize portfolio items into categories and subcategories.',
linkText: 'View categories',
titleKey: 'portfolio.card.categories.title',
descKey: 'portfolio.card.categories.desc',
linkKey: 'portfolio.card.categories.link',
href: '/portfolios/categories',
},
{
icon: Settings,
title: 'Settings',
description: 'Configure portfolio comment moderation and display options.',
linkText: 'View settings',
titleKey: 'nav.portfolios.settings',
descKey: 'portfolio.card.settings.desc',
linkKey: 'portfolio.card.settings.link',
href: '/portfolios/settings',
},
]
export function PortfoliosPage() {
const t = useT()
return (
<main className={styles.content}>
<Breadcrumbs
@@ -45,16 +55,21 @@ export function PortfoliosPage() {
/>
<div className={styles.pageHeader}>
<div>
<h2 className={styles.pageTitle}>Portfolios</h2>
<p className={styles.pageSubtitle}>
Manage your portfolio items and showcase projects.
</p>
<h2 className={styles.pageTitle}>{t('title.portfolios')}</h2>
<p className={styles.pageSubtitle}>{t('portfolio.page.subtitle')}</p>
</div>
</div>
<div className={styles.gridHome}>
{portfolioSections.map((section) => (
<SectionCard key={section.title} {...section} />
<SectionCard
key={section.href}
icon={section.icon}
title={t(section.titleKey)}
description={t(section.descKey)}
linkText={t(section.linkKey)}
href={section.href}
/>
))}
</div>
</main>