1// Centralized documentation content and structure
2// Each doc has: slug, title, icon, summary, and sections [{ heading, body?, steps?, list? }]
4export const docGroups = [
6 title: 'Getting Started',
13 summary: 'What the IBG MSP Platform offers and how it fits your workflow.',
17 body: 'The IBG MSP Platform unifies Remote Monitoring & Management (RMM) with Professional Services Automation (PSA) in a multi-tenant architecture designed for MSPs.'
24 icon: 'rocket_launch',
25 summary: 'Create an account, configure your org, and deploy agents.',
31 title: 'Create Your Account',
32 text: 'Sign up or log in to your workspace.'
35 title: 'Set Up Organization',
36 text: 'Configure profile, branding, and default settings.'
39 title: 'Deploy Agents',
40 text: 'Install monitoring agents on endpoints to start reporting metrics.'
48 title: 'Changing Themes',
50 summary: 'Customize your dashboard appearance with light, dark, and accessibility themes.',
51 image: '/images/docs/dashboard-theme.png',
54 heading: 'Available Themes',
55 body: 'The platform offers 7 theme options to match your preferences and accessibility needs:',
57 'System - Automatically matches your operating system preference',
58 'Light - Clean, bright interface ideal for well-lit environments',
59 'Dark - Easy on the eyes in low-light conditions, reduces eye strain',
60 'Blue - Professional blue-accented interface',
61 'Green - Nature-inspired green accents with a calming palette',
62 'High Contrast - Maximum readability with stark black/white contrast and bold text',
63 'Colorblind - Scientifically-tested colors safe for all types of color vision deficiency'
67 heading: 'Changing Theme from Header',
68 body: 'The quickest way to switch themes is using the theme selector in the navigation header.',
71 title: 'Locate the Theme Button',
72 text: 'Look for the theme icon in the top navigation bar (it shows a palette, sun, or moon icon depending on your current theme).'
75 title: 'Open Theme Menu',
76 text: 'Click the theme button to open a dropdown menu showing all available themes.'
79 title: 'Select Your Theme',
80 text: 'Click on any theme name to apply it immediately. The interface will update instantly.'
83 title: 'Automatic Save',
84 text: 'Your selection is saved automatically and will persist across sessions and devices.'
89 heading: 'Changing Theme in Settings',
90 body: 'You can also change your theme from the Settings page for a more detailed configuration experience.',
93 title: 'Navigate to Settings',
94 text: 'Click on "Settings" in the main navigation menu.'
97 title: 'Find Display Section',
98 text: 'Scroll to the "Display Preferences" section where theme options are located.'
101 title: 'Select Theme',
102 text: 'Choose your preferred theme from the dropdown menu.'
105 title: 'Save Changes',
106 text: 'Click "Save Display Settings" to apply your selection.'
111 heading: 'Accessibility Themes',
112 body: 'Two specialized themes are available for enhanced accessibility:',
114 'High Contrast - Features pure black text on white backgrounds with 21:1 contrast ratio (WCAG AAA), thick 2-3px borders, and bold fonts for maximum legibility. Perfect for users with low vision or viewing in bright sunlight.',
115 'Colorblind - Uses a scientifically-tested color palette that works for all types of color blindness. Includes visual symbols (✓, ⚠, ✗) alongside colors to ensure status indicators are always distinguishable.'
119 heading: 'System Theme Behavior',
120 body: 'When you select "System" theme, the platform automatically matches your operating system\'s light or dark mode preference. If you change your OS preference, the platform theme will update automatically without requiring a page refresh.'
123 heading: 'Theme Persistence',
124 body: 'Your theme preference is saved in two places: locally in your browser and in your user profile on the server. This means your theme will be consistent across all your devices and will persist even if you clear your browser data.'
129 'Try the High Contrast theme if you find text difficult to read',
130 'Use the Colorblind theme if you have difficulty distinguishing status colors',
131 'Dark theme is recommended for extended use in low-light environments',
132 'System theme is great if you switch between day and night work schedules'
146 icon: 'space_dashboard',
147 summary: 'Your high-level MSP overview: tickets, alerts, agents, and billing.',
148 image: '/images/docs/dashboard-real.png',
151 heading: 'At a Glance',
153 'Active Tickets: Open or in-progress requests',
154 'Critical Alerts: Unread alerts from agents and systems',
155 'Online Agents: Endpoints reporting in',
156 'Invoiced/Payments This Month: Voided invoices are excluded'
161 body: 'Use the refresh action to fetch the latest metrics.'
168 icon: 'confirmation_number',
169 summary: 'Create, triage, and resolve customer requests with SLAs.',
170 image: '/images/docs/dashboard-tickets.png',
175 { title: 'Create a ticket', text: 'Tickets → New. Enter title, description, priority, and customer.' },
176 { title: 'Update status', text: 'Assign, change priority, and close when resolved.' },
177 { title: 'Search & filter', text: 'Use the search bar and filters for status/priority/date.' }
186 summary: 'Manage customer records and view related tickets and invoices.',
187 image: '/images/docs/dashboard-customers.png',
192 'Add a customer: Customers → New',
193 'Search: Filter by name, email, or tags',
194 'Profile: View associated tickets, invoices, and contracts'
200 slug: 'knowledge-base',
201 title: 'Knowledge Base',
203 summary: 'Create and maintain documentation for internal or customer use.',
204 image: '/images/docs/dashboard-kb.png',
207 heading: 'Authoring',
209 'New article: Knowledge Base → New',
210 'Edit: Open an article and choose Edit',
211 'Search: Find articles by title or content'
220 summary: 'Billable items and stock-managed products for invoicing.',
221 image: '/images/docs/dashboard-products.png',
226 'Add product: price (ex GST), stock tracking, low stock alerts',
227 'Search: Filter by name or supplier',
228 'Use in invoices: Add products to line items for consistent pricing'
236 icon: 'receipt_long',
237 summary: 'Create, edit, void, and delete invoices with stock restocking.',
238 image: '/images/docs/dashboard-invoices.png',
241 heading: 'Lifecycle',
243 { title: 'Create', text: 'Invoices → New. Select customer, add items, save.' },
244 { title: 'Edit', text: 'Update items and dates; totals update automatically.' },
245 { title: 'Void', text: 'Choose Void, enter a reason; stock is restocked, reports exclude voided.' },
246 { title: 'Delete', text: 'Allowed for Draft or Voided (not Paid); deletes items and restocks if needed.' }
251 body: 'Company info (ABN, address) is configured in Settings and appears on printed invoices.'
256 slug: 'purchase-orders',
257 title: 'Purchase Orders',
258 icon: 'shopping_cart',
259 summary: 'Track purchase orders, receiving, and stock updates.',
260 image: '/images/docs/dashboard-po.png',
265 'Create PO: Add supplier, items, expected dates',
266 'Edit/Receive: Update lines as goods arrive',
267 'Search: Filter by PO number, supplier, date'
275 icon: 'contract_edit',
276 summary: 'Define service contracts, SLAs, and entitlements per customer.',
277 image: '/images/docs/dashboard-contracts.png',
282 'Create/Edit: Set start/end, SLA hours, billing terms',
283 'Tenant visibility: Root admins can see tenant context in lists',
284 'Reporting: Contracts integrate with tickets and billing'
292 icon: 'monitor_heart',
293 summary: 'View metrics from deployed agents and set alert thresholds.',
294 image: '/images/docs/dashboard-monitoring.png',
299 'Agents: Deploy to endpoints to report CPU, memory, disk',
300 'Alerts: Configure thresholds in Settings → Notifications',
301 'Incidents: Critical alerts appear on the Dashboard'
310 summary: 'See agent status, last seen, and assigned tickets.',
311 image: '/images/docs/dashboard-agents.png',
316 'Status: Online agents report in within the last 5 minutes',
317 'Assignments: View tickets linked to agents'
326 summary: 'Analyze revenue, customer activity, and invoice aging.',
327 image: '/images/docs/dashboard-reports.png',
330 heading: 'Dashboards',
332 'Revenue: Monthly totals (voided invoices excluded)',
333 'Top Customers: By revenue and ticket count',
334 'Invoice Aging: Overdue breakdown across time buckets'
340 slug: 'integrations',
341 title: 'Integrations',
343 summary: 'Connect Slack, Xero, Mailgun, Splashtop per tenant.',
344 image: '/images/docs/dashboard-integrations.png',
349 'Enable: Choose a provider and configure credentials',
350 'Per-tenant: Root admins can manage integrations for any tenant'
359 summary: 'Customize general, company, tax, notifications, and display.',
360 image: '/images/docs/dashboard-settings.png',
365 'General: Company name, timezone, date format',
366 'Company: ABN, address, phone, email',
367 'Tax: Default GST rate',
368 'Notifications: Email/Slack and alert thresholds',
369 'Display: Theme and items per page',
370 'Tenant control: Root admins select a tenant to load/save tenant-specific settings'
385 summary: 'Common questions and answers.',
390 'Tenants: Unlimited tenants supported'
396 slug: 'troubleshooting',
397 title: 'Troubleshooting',
399 summary: 'Fix common setup and runtime issues.',
402 heading: 'Docker permissions',
403 body: 'If you see permission denied on /var/run/docker.sock, run with sudo or add your user to the docker group.'
406 heading: 'Backend cannot connect to DB',
408 'Verify database container is running',
409 'Check connection string and credentials',
410 'Confirm network and ports are accessible'
416 slug: 'contact-support',
417 title: 'Contact Support',
418 icon: 'support_agent',
419 summary: 'How to get help when you need it.',
423 body: 'Reach out via your support channel or email with logs and steps to reproduce.'
431export function findDoc(slug) {
432 for (const group of docGroups) {
433 const match = group.items.find((i) => i.slug === slug);
434 if (match) return { group, doc: match };