Dashboard fix, expense system, currency settings, visual upgrade
- Fix Dashboard stat card: show "Budget Remaining" instead of "Budget Spent" with correct remaining value accounting for campaign allocations - Add expense system: budget entries now have income/expense type with server-side split, per-campaign and per-project expense tracking, colored amounts, type filters, and summary bar in Budgets page - Add configurable currency in Settings (SAR default, supports 10 currencies) replacing all hardcoded SAR references across the app - Replace PiggyBank icon with Landmark (culturally appropriate for KSA) - Visual upgrade: mesh background, gradient text, premium stat cards with accent bars, section-card containers, sidebar active glow - UX polish: consistent text-2xl headers, skeleton loaders for Finance and Budgets pages - Finance page: expenses column in campaign/project breakdown tables, ROI accounts for expenses, expense stat card Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,11 +4,13 @@
|
||||
"nav.dashboard": "Dashboard",
|
||||
"nav.campaigns": "Campaigns",
|
||||
"nav.finance": "Finance & ROI",
|
||||
"nav.financeDashboard": "Dashboard",
|
||||
"nav.budgets": "Budgets",
|
||||
"nav.posts": "Post Production",
|
||||
"nav.assets": "Assets",
|
||||
"nav.projects": "Projects",
|
||||
"nav.tasks": "Tasks",
|
||||
"nav.team": "Team",
|
||||
"nav.team": "Teams",
|
||||
"nav.settings": "Settings",
|
||||
"nav.users": "Users",
|
||||
"nav.logout": "Logout",
|
||||
@@ -46,6 +48,7 @@
|
||||
"dashboard.activeCampaigns": "Active Campaigns",
|
||||
"dashboard.total": "total",
|
||||
"dashboard.budgetSpent": "Budget Spent",
|
||||
"dashboard.budgetRemaining": "Budget Remaining",
|
||||
"dashboard.of": "of",
|
||||
"dashboard.noBudget": "No budget yet",
|
||||
"dashboard.overdueTasks": "Overdue Tasks",
|
||||
@@ -170,7 +173,45 @@
|
||||
"tasks.deleted": "Task deleted successfully!",
|
||||
"tasks.statusUpdated": "Task status updated!",
|
||||
"tasks.canOnlyEditOwn": "You can only edit your own tasks.",
|
||||
|
||||
"tasks.search": "Search tasks...",
|
||||
"tasks.board": "Board",
|
||||
"tasks.list": "List",
|
||||
"tasks.calendar": "Calendar",
|
||||
"tasks.filters": "Filters",
|
||||
"tasks.allProjects": "All Projects",
|
||||
"tasks.allBrands": "All Brands",
|
||||
"tasks.allPriorities": "All Priorities",
|
||||
"tasks.allStatuses": "All Statuses",
|
||||
"tasks.allAssignees": "All Assignees",
|
||||
"tasks.allCreators": "All Creators",
|
||||
"tasks.overdue": "Overdue",
|
||||
"tasks.clearFilters": "Clear Filters",
|
||||
"tasks.details": "Details",
|
||||
"tasks.discussion": "Discussion",
|
||||
"tasks.unscheduled": "Unscheduled",
|
||||
"tasks.today": "Today",
|
||||
"tasks.project": "Project",
|
||||
"tasks.brand": "Brand",
|
||||
"tasks.status": "Status",
|
||||
"tasks.creator": "Creator",
|
||||
"tasks.assignee": "Assignee",
|
||||
"tasks.commentCount": "{n} comments",
|
||||
"tasks.dueDateRange": "Due Date",
|
||||
"tasks.noProject": "No project",
|
||||
"tasks.createdBy": "Created by",
|
||||
"tasks.startDate": "Start Date",
|
||||
"tasks.attachments": "Attachments",
|
||||
"tasks.uploadFile": "Upload file",
|
||||
"tasks.setAsThumbnail": "Set as thumbnail",
|
||||
"tasks.removeThumbnail": "Remove thumbnail",
|
||||
"tasks.thumbnail": "Thumbnail",
|
||||
"tasks.dropOrClick": "Drop file or click to upload",
|
||||
|
||||
"projects.thumbnail": "Thumbnail",
|
||||
"projects.uploadThumbnail": "Upload Thumbnail",
|
||||
"projects.changeThumbnail": "Change Thumbnail",
|
||||
"projects.removeThumbnail": "Remove Thumbnail",
|
||||
|
||||
"team.title": "Team",
|
||||
"team.members": "Team Members",
|
||||
"team.addMember": "Add Member",
|
||||
@@ -250,6 +291,8 @@
|
||||
"settings.noBrands": "No brands yet. Add your first brand.",
|
||||
"settings.moreComingSoon": "More Settings Coming Soon",
|
||||
"settings.additionalSettings": "Additional settings for notifications, display preferences, and more will be added here.",
|
||||
"settings.currency": "Currency",
|
||||
"settings.currencyHint": "This currency will be used across all financial pages.",
|
||||
"settings.preferences": "Manage your preferences and app settings",
|
||||
|
||||
"tutorial.skip": "Skip Tutorial",
|
||||
@@ -303,5 +346,148 @@
|
||||
"timeline.noItems": "No items to display",
|
||||
"timeline.addItems": "Add items with dates to see the timeline",
|
||||
"timeline.tracks": "Tracks",
|
||||
"timeline.timeline": "Timeline"
|
||||
"timeline.timeline": "Timeline",
|
||||
|
||||
"posts.details": "Details",
|
||||
"posts.platformsLinks": "Platforms & Links",
|
||||
"posts.discussion": "Discussion",
|
||||
|
||||
"campaigns.details": "Details",
|
||||
"campaigns.performance": "Performance",
|
||||
"campaigns.discussion": "Discussion",
|
||||
"campaigns.name": "Name",
|
||||
"campaigns.description": "Description",
|
||||
"campaigns.brand": "Brand",
|
||||
"campaigns.status": "Status",
|
||||
"campaigns.platforms": "Platforms",
|
||||
"campaigns.startDate": "Start Date",
|
||||
"campaigns.endDate": "End Date",
|
||||
"campaigns.budget": "Budget",
|
||||
"campaigns.goals": "Goals",
|
||||
"campaigns.notes": "Notes",
|
||||
"campaigns.budgetSpent": "Budget Spent",
|
||||
"campaigns.revenue": "Revenue",
|
||||
"campaigns.impressions": "Impressions",
|
||||
"campaigns.clicks": "Clicks",
|
||||
"campaigns.conversions": "Conversions",
|
||||
"campaigns.createCampaign": "Create Campaign",
|
||||
"campaigns.editCampaign": "Edit Campaign",
|
||||
"campaigns.deleteCampaign": "Delete Campaign?",
|
||||
"campaigns.deleteConfirm": "Are you sure you want to delete this campaign? All associated data will be removed. This action cannot be undone.",
|
||||
|
||||
"tracks.details": "Details",
|
||||
"tracks.metrics": "Metrics",
|
||||
"tracks.trackName": "Track Name",
|
||||
"tracks.type": "Type",
|
||||
"tracks.platform": "Platform",
|
||||
"tracks.budgetAllocated": "Budget Allocated",
|
||||
"tracks.status": "Status",
|
||||
"tracks.notes": "Notes",
|
||||
"tracks.budgetSpent": "Budget Spent",
|
||||
"tracks.revenue": "Revenue",
|
||||
"tracks.addTrack": "Add Track",
|
||||
"tracks.editTrack": "Edit Track",
|
||||
"tracks.deleteTrack": "Delete Track?",
|
||||
"tracks.deleteConfirm": "Are you sure you want to delete this track? This action cannot be undone.",
|
||||
|
||||
"projects.details": "Details",
|
||||
"projects.discussion": "Discussion",
|
||||
"projects.name": "Name",
|
||||
"projects.description": "Description",
|
||||
"projects.brand": "Brand",
|
||||
"projects.owner": "Owner",
|
||||
"projects.status": "Status",
|
||||
"projects.startDate": "Start Date",
|
||||
"projects.dueDate": "Due Date",
|
||||
"projects.editProject": "Edit Project",
|
||||
"projects.deleteProject": "Delete Project?",
|
||||
"projects.deleteConfirm": "Are you sure you want to delete this project? This action cannot be undone.",
|
||||
|
||||
"team.details": "Details",
|
||||
"team.workload": "Workload",
|
||||
"team.recentTasks": "Recent Tasks",
|
||||
"team.recentPosts": "Recent Posts",
|
||||
"team.modules": "Modules",
|
||||
"team.selectBrands": "Select brands...",
|
||||
"team.gridView": "Grid View",
|
||||
"team.teamsView": "Teams View",
|
||||
"team.unassigned": "Unassigned",
|
||||
|
||||
"modules.marketing": "Marketing",
|
||||
"modules.projects": "Projects",
|
||||
"modules.finance": "Finance",
|
||||
|
||||
"teams.title": "Teams",
|
||||
"teams.teams": "Teams",
|
||||
"teams.createTeam": "Create Team",
|
||||
"teams.editTeam": "Edit Team",
|
||||
"teams.deleteTeam": "Delete Team?",
|
||||
"teams.deleteConfirm": "Are you sure you want to delete this team? This action cannot be undone.",
|
||||
"teams.name": "Team Name",
|
||||
"teams.description": "Description",
|
||||
"teams.members": "members",
|
||||
"teams.details": "Details",
|
||||
"teams.noTeams": "No teams yet",
|
||||
"teams.selectMembers": "Search members...",
|
||||
|
||||
"dates.today": "Today",
|
||||
"dates.yesterday": "Yesterday",
|
||||
"dates.thisWeek": "This Week",
|
||||
"dates.lastWeek": "Last Week",
|
||||
"dates.thisMonth": "This Month",
|
||||
"dates.lastMonth": "Last Month",
|
||||
"dates.thisQuarter": "This Quarter",
|
||||
"dates.thisYear": "This Year",
|
||||
"dates.customRange": "Custom Range",
|
||||
"dates.clearDates": "Clear Dates",
|
||||
|
||||
"dashboard.myTasks": "My Tasks",
|
||||
"dashboard.projectProgress": "Project Progress",
|
||||
"dashboard.noProjectsYet": "No projects yet",
|
||||
|
||||
"finance.project": "Project",
|
||||
"finance.projectBudget": "Project Budget",
|
||||
"finance.projectBreakdown": "Project Breakdown",
|
||||
"finance.budgetFor": "Budget for",
|
||||
|
||||
"budgets.title": "Budgets",
|
||||
"budgets.subtitle": "Add and manage budget entries — track source, destination, and allocation",
|
||||
"budgets.addEntry": "Add Entry",
|
||||
"budgets.editEntry": "Edit Entry",
|
||||
"budgets.deleteEntry": "Delete Entry?",
|
||||
"budgets.deleteConfirm": "Are you sure you want to delete this budget entry? This action cannot be undone.",
|
||||
"budgets.searchEntries": "Search entries...",
|
||||
"budgets.allCategories": "All Categories",
|
||||
"budgets.allDestinations": "All Destinations",
|
||||
"budgets.noEntries": "No budget entries yet. Add your first entry.",
|
||||
"budgets.noMatch": "No entries match your filters.",
|
||||
"budgets.label": "Label",
|
||||
"budgets.labelPlaceholder": "e.g., Q1 Marketing Budget, Equipment Purchase...",
|
||||
"budgets.amount": "Amount",
|
||||
"budgets.dateReceived": "Date Received",
|
||||
"budgets.source": "Source",
|
||||
"budgets.sourcePlaceholder": "e.g., CEO Approval, Annual Budget...",
|
||||
"budgets.destination": "Destination",
|
||||
"budgets.selectDestination": "Select destination...",
|
||||
"budgets.companyCard": "Company Card",
|
||||
"budgets.personalAccount": "Personal Account",
|
||||
"budgets.corporateAccount": "Corporate Account",
|
||||
"budgets.otherDest": "Other",
|
||||
"budgets.category": "Category",
|
||||
"budgets.linkedTo": "Linked To",
|
||||
"budgets.noCampaign": "No campaign",
|
||||
"budgets.noProject": "No project",
|
||||
"budgets.general": "General",
|
||||
"budgets.notes": "Notes",
|
||||
"budgets.notesPlaceholder": "Any details about this budget entry...",
|
||||
"budgets.date": "Date",
|
||||
"budgets.type": "Type",
|
||||
"budgets.income": "Income",
|
||||
"budgets.expense": "Expense",
|
||||
"budgets.allTypes": "All Types",
|
||||
"budgets.net": "Net",
|
||||
"budgets.dateExpensed": "Date",
|
||||
|
||||
"dashboard.expenses": "Expenses",
|
||||
"finance.expenses": "Total Expenses"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user