- Replaced `LIST_PUBLIC_CATEGORIES` with `LIST_ADMIN_CATEGORIES_FLAT` in `ArticleFormModal.tsx`. - Removed the "Add Event" button from the dashboard page. - Simplified the `EventsPage` by removing the button and adjusting the layout. - Cleaned up the `AdminEventEditPage` by removing unnecessary props. - Deleted unused layout and page files related to event creation. - Updated `AdminAuthContent` to use `useAdminCitiesQuery` instead of `useDiscoveryCitiesQuery`. - Refactored `EventGuestListAccessPanel` to remove the `accessMode` prop and adjust API calls accordingly. - Removed several unused components and tests related to event creation, enhancing project maintainability.
93 lines
4.7 KiB
TypeScript
93 lines
4.7 KiB
TypeScript
export const APP_ROUTES = {
|
|
DASHBOARD: '/dashboard',
|
|
USERS: '/users',
|
|
USER_DETAIL: (id: string) => `/users/${id}`,
|
|
MANAGE_EVENTS: '/manage-events',
|
|
MANAGE_EVENT_DETAIL: (id: string) => `/manage-events/${encodeURIComponent(id)}`,
|
|
MANAGE_EVENT_DISCOUNTS: (id: string) => `/manage-events/${encodeURIComponent(id)}?tab=discounts`,
|
|
MANAGE_EVENT_EDIT: (id: string) => `/manage-events/${encodeURIComponent(id)}/edit`,
|
|
EVENT_CATEGORIES: '/event-categories',
|
|
BLOG_ARTICLES: '/blog-articles',
|
|
IDENTITY_VERIFICATIONS: '/identity-verifications',
|
|
USER_REPORTS: '/user-reports',
|
|
CONTACT_MESSAGES: '/contact-messages',
|
|
SUPPORT_TICKETS: '/support-tickets',
|
|
SUPPORT_TICKET_DETAIL: (id: string) => `/support-tickets/${id}`,
|
|
CHAT_OVERSIGHT: '/chat-oversight',
|
|
CHAT_OVERSIGHT_DETAIL: (id: string) => `/chat-oversight/${id}`,
|
|
SETTLEMENTS: '/settlements',
|
|
NOTIFICATIONS: '/notifications',
|
|
NOTIFICATIONS_PUSH: '/notifications?tab=push',
|
|
NOTIFICATIONS_SMS: '/notifications?tab=sms',
|
|
NOTIFICATIONS_SETTINGS: '/notifications?tab=settings',
|
|
SMS_MESSAGES: '/notifications?tab=sms',
|
|
NOTIFICATION_RULES: '/notifications?tab=settings',
|
|
MANUAL_NOTIFICATIONS: '/notifications',
|
|
PUSH_DELIVERIES: '/notifications?tab=push',
|
|
WITHDRAWAL_REQUESTS: '/withdrawal-requests',
|
|
BANK_ACCOUNTS: '/bank-accounts',
|
|
BOOKINGS: '/bookings',
|
|
PAYMENTS: '/payments',
|
|
WALLET_DEPOSITS: '/wallet-deposits',
|
|
GUEST_LISTS: '/guest-lists',
|
|
DISCOUNT_CODES: '/discount-codes',
|
|
} as const
|
|
|
|
export const CONSUMER_ROUTES = {
|
|
HOME: '/',
|
|
CHATS: '/chats',
|
|
CHAT_DETAIL: (id: string) => `/chats/${id}`,
|
|
/** Filter tabs on `/chats` (`?tab=`). Default (`direct`) omits the query. */
|
|
CHATS_TAB: (tab: 'direct' | 'event_group') => (tab === 'direct' ? '/chats' : `/chats?tab=${tab}`),
|
|
MY_EVENTS: '/my-events',
|
|
/** Main tabs on `/my-events` (`?tab=`). Default (`registered`) omits the query. */
|
|
MY_EVENTS_TAB: (tab: 'created' | 'registered') => (tab === 'registered' ? '/my-events' : `/my-events?tab=${tab}`),
|
|
PROFILE: '/profile',
|
|
PROFILE_WALLET: '/profile/wallet',
|
|
IDENTITY: '/identity',
|
|
EVENT_DETAIL: (identifier: string) => `/e/${encodeURIComponent(identifier)}`,
|
|
EVENT_PAYMENT: (eventIdentifier: string, bookingId: string) =>
|
|
`/e/${encodeURIComponent(eventIdentifier)}?payment=checkout&bookingId=${encodeURIComponent(bookingId)}`,
|
|
EVENT_EDIT: (id: string) => `/my-events/${encodeURIComponent(id)}/manage/edit`,
|
|
EVENT_MANAGE: (id: string) => `/my-events/${encodeURIComponent(id)}/manage`,
|
|
EVENT_MANAGE_TAB: (id: string, tab: 'overview' | 'attendance' | 'waitlist' | 'discounts' | 'financial' | 'details') =>
|
|
`/my-events/${encodeURIComponent(id)}/manage?tab=${tab}`,
|
|
EVENT_ATTENDANCE: (id: string) => `/my-events/${encodeURIComponent(id)}/manage?tab=attendance`,
|
|
EVENT_DISCOUNTS: (id: string) => `/my-events/${encodeURIComponent(id)}/manage?tab=discounts`,
|
|
EVENT_FINANCIAL: (id: string) => `/my-events/${encodeURIComponent(id)}/manage?tab=financial`,
|
|
EVENT_DETAILS_TAB: (id: string) => `/my-events/${encodeURIComponent(id)}/manage?tab=details`,
|
|
EVENT_NEW: '/my-events/new',
|
|
/** Create wizard prefilled from an existing hosted event (`?cloneFrom=`). */
|
|
EVENT_NEW_FROM_CLONE: (eventId: string) => `/my-events/new?cloneFrom=${encodeURIComponent(eventId)}`,
|
|
BOOKINGS: '/bookings',
|
|
BOOKING_PAY: (id: string) => `/bookings/${id}/pay`,
|
|
PAYMENT_RETURN: '/payments/return',
|
|
PROFILE_FOLLOWING: '/profile/following',
|
|
PROFILE_NOTIFICATIONS: '/profile/notifications',
|
|
PROFILE_BOOKMARKS: '/profile/bookmarks',
|
|
SUPPORT: '/support',
|
|
SUPPORT_DETAIL: (id: string) => `/support/${id}`,
|
|
} as const
|
|
|
|
/**
|
|
* Public SEO landing routes — Phase 3 (docs/workflows/fa/seo-landing-pages.md).
|
|
* Segment names are plain English (`/category`, `/city`) rather than Finglish
|
|
* (Persian transliterated into Latin, e.g. the earlier `dastebandi`/`shahr`) —
|
|
* the transliteration didn't actually buy Persian-query keyword matching
|
|
* (that only happens on true Persian-script text, which the on-page
|
|
* title/description/h1 already carry) and just added a "neither English nor
|
|
* Persian" URL. `/category`/`/city` keep the public landing routes concise.
|
|
*/
|
|
export const SEO_ROUTES = {
|
|
CITY_HUB: '/city',
|
|
CITY_LANDING: (citySlug: string) => `/city/${citySlug}`,
|
|
CATEGORY_CITY_COMBO: (categorySlug: string, citySlug: string) => `/category/${categorySlug}/city/${citySlug}`,
|
|
CATEGORY_HUB: '/category',
|
|
CATEGORY_LANDING: (categorySlug: string) => `/category/${categorySlug}`,
|
|
EVENT_LANDING: (eventSlug: string) => `/e/${encodeURIComponent(eventSlug)}`,
|
|
ORGANIZER: (organizerId: string) => `/u/${organizerId}`,
|
|
USER: (userId: string) => `/u/${userId}`,
|
|
BLOG: '/blog',
|
|
ARTICLE: (slug: string) => `/blog/${slug}`,
|
|
} as const
|