mirror of
https://github.com/InvoiceShelf/InvoiceShelf.git
synced 2026-04-15 17:24:10 +00:00
invoices, members, reports, settings, customer portal, modules, installation 82 files, 14293 lines. Completes all feature modules: - payments: CRUD with send/preview, payment modes - expenses: CRUD with receipt upload, categories - recurring-invoices: full frequency logic, limit by date/count - members: list with roles, invite modal, pending invitations - reports: sales, profit/loss, expenses, tax with date ranges - settings: 14 settings views, number customizer, mail config - customer-portal: consolidated store, 8 views, portal layout - modules: marketplace index, detail/install, module cards - installation: 8-step wizard with requirements/db/mail/account Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
94 lines
2.3 KiB
TypeScript
94 lines
2.3 KiB
TypeScript
import type { RouteRecordRaw } from 'vue-router'
|
|
|
|
/**
|
|
* The installation wizard is a multi-step flow rendered inside a single
|
|
* parent view. Individual step views are not routed independently -- they
|
|
* are controlled by the parent Installation component via dynamic
|
|
* components. This route simply mounts the wizard entry point.
|
|
*
|
|
* The individual step views are:
|
|
* 1. RequirementsView
|
|
* 2. PermissionsView
|
|
* 3. DatabaseView
|
|
* 4. DomainView
|
|
* 5. MailView
|
|
* 6. AccountView
|
|
* 7. CompanyView
|
|
* 8. PreferencesView
|
|
*/
|
|
|
|
export const installationRoutes: RouteRecordRaw[] = [
|
|
{
|
|
path: '/installation',
|
|
name: 'installation',
|
|
component: () => import('./views/RequirementsView.vue'),
|
|
meta: {
|
|
title: 'wizard.req.system_req',
|
|
isInstallation: true,
|
|
},
|
|
},
|
|
{
|
|
path: '/installation/permissions',
|
|
name: 'installation.permissions',
|
|
component: () => import('./views/PermissionsView.vue'),
|
|
meta: {
|
|
title: 'wizard.permissions.permissions',
|
|
isInstallation: true,
|
|
},
|
|
},
|
|
{
|
|
path: '/installation/database',
|
|
name: 'installation.database',
|
|
component: () => import('./views/DatabaseView.vue'),
|
|
meta: {
|
|
title: 'wizard.database.database',
|
|
isInstallation: true,
|
|
},
|
|
},
|
|
{
|
|
path: '/installation/domain',
|
|
name: 'installation.domain',
|
|
component: () => import('./views/DomainView.vue'),
|
|
meta: {
|
|
title: 'wizard.verify_domain.title',
|
|
isInstallation: true,
|
|
},
|
|
},
|
|
{
|
|
path: '/installation/mail',
|
|
name: 'installation.mail',
|
|
component: () => import('./views/MailView.vue'),
|
|
meta: {
|
|
title: 'wizard.mail.mail_config',
|
|
isInstallation: true,
|
|
},
|
|
},
|
|
{
|
|
path: '/installation/account',
|
|
name: 'installation.account',
|
|
component: () => import('./views/AccountView.vue'),
|
|
meta: {
|
|
title: 'wizard.account_info',
|
|
isInstallation: true,
|
|
},
|
|
},
|
|
{
|
|
path: '/installation/company',
|
|
name: 'installation.company',
|
|
component: () => import('./views/CompanyView.vue'),
|
|
meta: {
|
|
title: 'wizard.company_info',
|
|
isInstallation: true,
|
|
},
|
|
},
|
|
{
|
|
path: '/installation/preferences',
|
|
name: 'installation.preferences',
|
|
component: () => import('./views/PreferencesView.vue'),
|
|
meta: {
|
|
title: 'wizard.preferences',
|
|
isInstallation: true,
|
|
},
|
|
},
|
|
]
|