Files
dashboards/apps/business/src/App.tsx
T
Alireza HassaniandCursor 0eb19bbebd Add SMS templates UI, prepaid balance settings, and list filter layout.
Business settings manage templates and balance; Super Admin verifies templates and tops up via SMS settings; filters use a separate panel with even field gaps.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-08 16:24:26 +03:30

185 lines
11 KiB
TypeScript

import { BrowserRouter, Navigate, Routes, Route } from 'react-router-dom'
import { BusinessDomainGuard } from './components/BusinessDomainGuard'
import { DashboardDocumentTitle } from './components/DashboardDocumentTitle'
import { AuthProvider } from './context/AuthContext'
import { BusinessThemeProvider } from './context/BusinessThemeContext'
import { TenantBrandingProvider } from './context/TenantBrandingContext'
import { LocaleProvider } from '@meshkee/dashboard-ui'
import { ToastProvider } from './context/ToastContext'
import { ProtectedRoute } from './components/ProtectedRoute'
import { GuestRoute } from './components/GuestRoute'
import { PageLayout } from './components/PageLayout'
import { HomePage } from './pages/HomePage'
import { StatisticsPage } from './pages/StatisticsPage'
import { ProductsPage } from './pages/ProductsPage'
import { CategoriesPage } from './pages/CategoriesPage'
import { BrandsPage } from './pages/BrandsPage'
import { AddNewProductPage } from './pages/AddNewProductPage'
import { MyProductsPage } from './pages/MyProductsPage'
import { ProductDetailsPage } from './pages/ProductDetailsPage'
import { ProductSettingsPage } from './pages/ProductSettingsPage'
import { BusinessProfilePage } from './pages/BusinessProfilePage'
import { ProfilePage } from './pages/ProfilePage'
import { StorePage } from './pages/StorePage'
import { StoreItemsPage } from './pages/StoreItemsPage'
import { StoreSpecialsPage } from './pages/StoreSpecialsPage'
import { CustomersPage } from './pages/CustomersPage'
import { InvoicesPage } from './pages/InvoicesPage'
import { IssueInvoicePage } from './pages/IssueInvoicePage'
import { InvoiceTemplatesPage } from './pages/InvoiceTemplatesPage'
import { InvoiceTemplateEditorPage } from './pages/InvoiceTemplateEditorPage'
import { TransactionsPage } from './pages/TransactionsPage'
import { FinancePage } from './pages/FinancePage'
import { CustomerProductsPage } from './pages/CustomerProductsPage'
import { CustomerProductDetailsPage } from './pages/CustomerProductDetailsPage'
import { AddCustomerProductPage } from './pages/AddCustomerProductPage'
import { OrdersPage } from './pages/OrdersPage'
import { LoginPage } from './pages/LoginPage'
import { ShoppingCardsPage } from './pages/ShoppingCardsPage'
import { StoreSettingsPage } from './pages/StoreSettingsPage'
import { BlogPage } from './pages/BlogPage'
import { BlogListPage } from './pages/BlogListPage'
import { AddNewBlogPage } from './pages/AddNewBlogPage'
import { BlogCategoriesPage } from './pages/BlogCategoriesPage'
import { BlogSettingsPage } from './pages/BlogSettingsPage'
import { BlogDetailsPage } from './pages/BlogDetailsPage'
import { PortfoliosPage } from './pages/PortfoliosPage'
import { PortfolioListPage } from './pages/PortfolioListPage'
import { AddNewPortfolioPage } from './pages/AddNewPortfolioPage'
import { PortfolioCategoriesPage } from './pages/PortfolioCategoriesPage'
import { PortfolioSettingsPage } from './pages/PortfolioSettingsPage'
import { PortfolioDetailsPage } from './pages/PortfolioDetailsPage'
import { VideoPage } from './pages/VideoPage'
import { VideoListPage } from './pages/VideoListPage'
import { AddNewVideoPage } from './pages/AddNewVideoPage'
import { VideoCategoriesPage } from './pages/VideoCategoriesPage'
import { VideoSettingsPage } from './pages/VideoSettingsPage'
import { VideoDetailsPage } from './pages/VideoDetailsPage'
import { InstructionPage } from './pages/InstructionPage'
import { InstructionListPage } from './pages/InstructionListPage'
import { AddNewInstructionPage } from './pages/AddNewInstructionPage'
import { InstructionCategoriesPage } from './pages/InstructionCategoriesPage'
import { InstructionSettingsPage } from './pages/InstructionSettingsPage'
import { InstructionDetailsPage } from './pages/InstructionDetailsPage'
import { WorkshopPage } from './pages/WorkshopPage'
import { WorkshopListPage } from './pages/WorkshopListPage'
import { AddNewWorkshopPage } from './pages/AddNewWorkshopPage'
import { WorkshopCategoriesPage } from './pages/WorkshopCategoriesPage'
import { WorkshopDetailsPage } from './pages/WorkshopDetailsPage'
import { ContentPage } from './pages/ContentPage'
import { WebsitePage } from './pages/WebsitePage'
import { WebsiteContactPage } from './pages/WebsiteContactPage'
import { WebsiteSubscriptionsPage } from './pages/WebsiteSubscriptionsPage'
import { WebsiteFaqPage } from './pages/WebsiteFaqPage'
import { WebsiteBadgesPage } from './pages/WebsiteBadgesPage'
import { SettingsPage } from './pages/SettingsPage'
import { WebsiteStaticImagesPage } from './pages/WebsiteStaticImagesPage'
import { WebsiteSettingsPage } from './pages/WebsiteSettingsPage'
function App() {
return (
<BusinessDomainGuard>
<LocaleProvider>
<BusinessThemeProvider>
<BrowserRouter>
<TenantBrandingProvider>
<DashboardDocumentTitle />
<AuthProvider>
<ToastProvider>
<Routes>
<Route element={<GuestRoute />}>
<Route path="login" element={<LoginPage />} />
</Route>
<Route element={<ProtectedRoute />}>
<Route element={<PageLayout />}>
<Route index element={<HomePage />} />
<Route path="statistics" element={<StatisticsPage />} />
<Route path="profile" element={<ProfilePage />} />
<Route path="business-profile" element={<BusinessProfilePage />} />
<Route path="settings" element={<SettingsPage />} />
<Route path="products" element={<ProductsPage />} />
<Route path="products/categories" element={<CategoriesPage />} />
<Route path="products/brands" element={<BrandsPage />} />
<Route path="products/new" element={<AddNewProductPage />} />
<Route path="products/edit/:id" element={<AddNewProductPage />} />
<Route path="products/list" element={<MyProductsPage />} />
<Route path="products/detail/:id" element={<ProductDetailsPage />} />
<Route path="products/settings" element={<ProductSettingsPage />} />
<Route path="store" element={<StorePage />} />
<Route path="store/items" element={<StoreItemsPage />} />
<Route path="store/orders" element={<OrdersPage />} />
<Route path="store/cards" element={<ShoppingCardsPage />} />
<Route path="store/settings" element={<StoreSettingsPage />} />
<Route path="customers" element={<CustomersPage />} />
<Route path="finance" element={<FinancePage />} />
<Route path="invoices" element={<InvoicesPage />} />
<Route path="invoices/new" element={<IssueInvoicePage />} />
<Route path="invoices/templates" element={<InvoiceTemplatesPage />} />
<Route path="invoices/templates/new" element={<InvoiceTemplateEditorPage />} />
<Route path="invoices/templates/:templateId" element={<InvoiceTemplateEditorPage />} />
<Route path="invoices/:invoiceId/edit" element={<IssueInvoicePage />} />
<Route path="transactions" element={<TransactionsPage />} />
<Route path="customer-products" element={<CustomerProductsPage />} />
<Route path="customer-products/new" element={<AddCustomerProductPage />} />
<Route path="customer-products/:id/edit" element={<AddCustomerProductPage />} />
<Route path="customer-products/:id" element={<CustomerProductDetailsPage />} />
<Route path="content" element={<ContentPage />} />
<Route path="blog" element={<BlogPage />} />
<Route path="blog/list" element={<BlogListPage />} />
<Route path="blog/detail/:id" element={<BlogDetailsPage />} />
<Route path="blog/new" element={<AddNewBlogPage />} />
<Route path="blog/edit/:id" element={<AddNewBlogPage />} />
<Route path="blog/categories" element={<BlogCategoriesPage />} />
<Route path="blog/settings" element={<BlogSettingsPage />} />
<Route path="portfolios" element={<PortfoliosPage />} />
<Route path="portfolios/list" element={<PortfolioListPage />} />
<Route path="portfolios/detail/:id" element={<PortfolioDetailsPage />} />
<Route path="portfolios/new" element={<AddNewPortfolioPage />} />
<Route path="portfolios/edit/:id" element={<AddNewPortfolioPage />} />
<Route path="portfolios/categories" element={<PortfolioCategoriesPage />} />
<Route path="portfolios/settings" element={<PortfolioSettingsPage />} />
<Route path="videos" element={<VideoPage />} />
<Route path="videos/list" element={<VideoListPage />} />
<Route path="videos/detail/:id" element={<VideoDetailsPage />} />
<Route path="videos/new" element={<AddNewVideoPage />} />
<Route path="videos/edit/:id" element={<AddNewVideoPage />} />
<Route path="videos/categories" element={<VideoCategoriesPage />} />
<Route path="videos/settings" element={<VideoSettingsPage />} />
<Route path="instructions" element={<InstructionPage />} />
<Route path="instructions/list" element={<InstructionListPage />} />
<Route path="instructions/detail/:id" element={<InstructionDetailsPage />} />
<Route path="instructions/new" element={<AddNewInstructionPage />} />
<Route path="instructions/edit/:id" element={<AddNewInstructionPage />} />
<Route path="instructions/categories" element={<InstructionCategoriesPage />} />
<Route path="instructions/settings" element={<InstructionSettingsPage />} />
<Route path="workshops" element={<WorkshopPage />} />
<Route path="workshops/list" element={<WorkshopListPage />} />
<Route path="workshops/detail/:id" element={<WorkshopDetailsPage />} />
<Route path="workshops/new" element={<AddNewWorkshopPage />} />
<Route path="workshops/edit/:id" element={<AddNewWorkshopPage />} />
<Route path="workshops/categories" element={<WorkshopCategoriesPage />} />
<Route path="website" element={<WebsitePage />} />
<Route path="website/static-images" element={<WebsiteStaticImagesPage />} />
<Route path="website/special-items" element={<StoreSpecialsPage />} />
<Route path="website/contact" element={<WebsiteContactPage />} />
<Route path="website/subscriptions" element={<WebsiteSubscriptionsPage />} />
<Route path="website/faq" element={<WebsiteFaqPage />} />
<Route path="website/badges" element={<WebsiteBadgesPage />} />
<Route path="website/settings" element={<WebsiteSettingsPage />} />
<Route path="website/e-payment" element={<Navigate to="/website/settings" replace />} />
</Route>
</Route>
</Routes>
</ToastProvider>
</AuthProvider>
</TenantBrandingProvider>
</BrowserRouter>
</BusinessThemeProvider>
</LocaleProvider>
</BusinessDomainGuard>
)
}
export default App