re-add theme as ptrs broken fixed ipad theme

This commit is contained in:
Mark Gregory
2026-09-07 17:56:58 +01:00
parent ab85c4a575
commit c6b7510f05
12 changed files with 341 additions and 49 deletions
+11
View File
@@ -0,0 +1,11 @@
# iOS 12 build fix
The root build command now installs each module's own locked npm dependencies before Vite runs.
This is required because Modules/Helpdesk/Resources/assets/js/app.js imports jquery, select2 and flatpickr from Modules/Helpdesk/package.json.
Use:
npm install
npm run build
Do not manually install jquery/select2/flatpickr into the root project.
+5
View File
@@ -0,0 +1,5 @@
# iOS 12 compatibility
The backend detects iOS 12 in `resources/themes/backend/views/partials/head.blade.php` and adds an `ios12` class to `<html>`. The compatibility rules are at the end of `resources/themes/backend/assets/css/helpdesk.css`.
The iOS 12 dashboard deliberately uses flexbox instead of CSS Grid and uses inline SVG for critical shell/dashboard icons so it does not depend on modern Font Awesome webfont behaviour. Modern browsers continue to use the normal theme.
+7
View File
@@ -9,6 +9,7 @@
"@laravel/passkeys": "^0.2.0",
"@tailwindcss/vite": "^4.1.11",
"concurrently": "^10.0.3",
"jquery": "^4.0.0",
"laravel-vite-plugin": "^3.1",
"tailwindcss": "^4.0.7",
"vite": "^8.0.0"
@@ -1139,6 +1140,12 @@
"jiti": "lib/jiti-cli.mjs"
}
},
"node_modules/jquery": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jquery/-/jquery-4.0.0.tgz",
"integrity": "sha512-TXCHVR3Lb6TZdtw1l3RTLf8RBWVGexdxL6AC8/e0xZKEpBflBsjh9/8LXw+dkNFuOyW9B7iB3O1sP7hS0Kiacg==",
"license": "MIT"
},
"node_modules/laravel-vite-plugin": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-3.2.0.tgz",
+4 -5
View File
@@ -3,17 +3,16 @@
"private": true,
"type": "module",
"scripts": {
"build": "vite build --config ./vite.config.js",
"dev": "vite --config ./vite.config.js",
"modules:install": "node scripts/install-module-dependencies.mjs",
"prebuild": "npm run modules:install",
"predev": "npm run modules:install"
"build": "npm run modules:install && vite build --config ./vite.config.js",
"dev": "npm run modules:install && vite --config ./vite.config.js",
"modules:install": "node scripts/install-module-dependencies.mjs"
},
"dependencies": {
"@fortawesome/fontawesome-free": "^7.0.0",
"@laravel/passkeys": "^0.2.0",
"@tailwindcss/vite": "^4.1.11",
"concurrently": "^10.0.3",
"jquery": "^4.0.0",
"laravel-vite-plugin": "^3.1",
"tailwindcss": "^4.0.7",
"vite": "^8.0.0"
@@ -2287,3 +2287,155 @@ textarea {
.overflow-x-auto {
-webkit-overflow-scrolling: touch;
}
/* ============================================================
iOS 12 / legacy WebKit compatibility.
The ios12 class is applied in partials/head.blade.php from the UA.
Keep this layer deliberately simple: flexbox + fixed widths rather
than newer Grid/Tailwind layout behaviour on the old WebKit engine.
============================================================ */
.ios12,
.ios12 body,
.ios12 button,
.ios12 input,
.ios12 select,
.ios12 textarea {
font-family: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif !important;
}
/* Do not rely on Font Awesome webfonts for the old iPad. */
.hd-svg-icon {
display: inline-block;
width: 18px;
height: 18px;
vertical-align: middle;
fill: currentColor;
flex: 0 0 18px;
}
.hd-metric-icon .hd-svg-icon { width: 23px; height: 23px; }
/* SVG donut is reliable on Safari 12; conic-gradient is not. */
.hd-donut { background: transparent !important; overflow: hidden; }
.hd-donut-svg { position:absolute; left:0; top:0; width:100%; height:100%; }
.hd-donut-track { stroke:#2f3743; }
.hd-donut:after { display:none !important; }
.hd-donut span { position:relative; z-index:2; }
/* iOS 12 iPad layout. Keep the desktop sidebar, but give the content
enough room by reducing the sidebar and using a two-column metric row. */
.ios12 { --hd-sidebar-width: 250px; --hd-topbar-height: 72px; }
.ios12 .hd-topbar {
display: -webkit-flex;
display: flex;
grid-template-columns: none;
}
.ios12 .hd-topbar-brand {
width: 250px;
min-width: 250px;
box-sizing: border-box;
}
.ios12 .hd-topbar-main {
display: -webkit-flex;
display: flex;
-webkit-flex: 1 1 auto;
flex: 1 1 auto;
}
.ios12 .hd-top-search {
width: 330px;
max-width: 48%;
}
.ios12 .hd-shell-sidebar { width:250px; }
.ios12 .hd-shell-main {
margin-left:250px;
padding-left:24px;
padding-right:24px;
}
.ios12 .hd-dashboard-heading {
display:-webkit-flex;
display:flex;
}
.ios12 .hd-range-select { min-width:190px; }
/* Explicit flex layout replaces CSS Grid on iOS 12. */
.ios12 .hd-metric-grid {
display:-webkit-flex;
display:flex;
-webkit-flex-wrap:wrap;
flex-wrap:wrap;
margin-left:-7px;
margin-right:-7px;
}
.ios12 .hd-metric-card {
box-sizing:border-box;
width:calc(50% - 14px);
margin:7px;
min-height:118px;
padding:16px;
display:-webkit-flex;
display:flex;
}
.ios12 .hd-metric-card > div {
display:block;
min-width:0;
-webkit-flex:1 1 auto;
flex:1 1 auto;
}
.ios12 .hd-metric-card small,
.ios12 .hd-metric-card strong,
.ios12 .hd-metric-card em { display:block; }
.ios12 .hd-metric-card small { white-space:nowrap; font-size:.84rem; }
.ios12 .hd-metric-card strong { margin-top:2px; }
.ios12 .hd-metric-card em { margin-top:4px; font-size:.72rem; }
.ios12 .hd-metric-icon {
width:46px;
height:46px;
min-width:46px;
margin-right:13px;
}
.ios12 .hd-dashboard-grid { display:block; }
.ios12 .hd-dashboard-card { margin-bottom:16px; }
.ios12 .hd-priority-body {
display:-webkit-flex;
display:flex;
-webkit-align-items:center;
align-items:center;
min-height:230px;
}
.ios12 .hd-donut { width:140px; height:140px; min-width:140px; margin:0 30px 0 10px; }
.ios12 .hd-priority-legend { display:block; -webkit-flex:1 1 auto; flex:1 1 auto; }
.ios12 .hd-priority-legend > div {
display:-webkit-flex;
display:flex;
-webkit-justify-content:space-between;
justify-content:space-between;
margin:10px 0;
}
.ios12 .hd-chart-legend { display:-webkit-flex; display:flex; }
.ios12 .hd-chart-legend span { display:-webkit-flex; display:flex; margin-right:18px; }
.ios12 .hd-chart-labels { display:-webkit-flex; display:flex; -webkit-justify-content:space-between; justify-content:space-between; }
/* Complete the light appearance. */
html:not(.dark) .hd-dashboard-heading h1 { color:#111827 !important; }
html:not(.dark) .hd-dashboard-heading p { color:#667085 !important; }
html:not(.dark) .hd-range-select { background:#fff !important; border-color:#d8dee7 !important; color:#475467 !important; }
html:not(.dark) .hd-range-select select { color:#1f2937 !important; }
html:not(.dark) .hd-metric-card,
html:not(.dark) .hd-dashboard-card { background:#fff !important; border-color:#d8dee7 !important; box-shadow:0 5px 16px rgba(15,23,42,.06) !important; }
html:not(.dark) .hd-metric-card small,
html:not(.dark) .hd-metric-card em { color:#667085 !important; }
html:not(.dark) .hd-metric-card strong,
html:not(.dark) .hd-dashboard-card > header h2 { color:#111827 !important; }
html:not(.dark) .hd-dashboard-card > header { border-bottom-color:#e4e7ec !important; }
html:not(.dark) .hd-dashboard-card > header span,
html:not(.dark) .hd-dashboard-card > header a,
html:not(.dark) .hd-chart-legend,
html:not(.dark) .hd-chart-labels { color:#667085 !important; }
html:not(.dark) .hd-chart-grid-lines line { stroke:#e4e7ec !important; }
html:not(.dark) .hd-donut-track { stroke:#e4e7ec; }
html:not(.dark) .hd-donut span,
html:not(.dark) .hd-priority-legend strong { color:#111827 !important; }
html:not(.dark) .hd-priority-legend > div { color:#475467 !important; }
/* Safari 12 does not support inset shorthand. */
.ios12 .hd-sidebar-backdrop { top:72px; right:0; bottom:0; left:0; }
@@ -38,7 +38,7 @@
<div class="hd-topbar-main">
@if(Route::has('helpdesk.tickets.index'))
<form method="GET" action="{{ route('helpdesk.tickets.index') }}" class="hd-top-search">
<i class="fa-solid fa-magnifying-glass"></i><input name="search" placeholder="Search tickets" aria-label="Search tickets">
<svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M10.5 3a7.5 7.5 0 1 0 4.7 13.3L20.9 22l1.1-1.1-5.7-5.7A7.5 7.5 0 0 0 10.5 3zm0 2a5.5 5.5 0 1 1 0 11 5.5 5.5 0 0 1 0-11z"/></svg><input name="search" placeholder="Search tickets" aria-label="Search tickets">
</form>
@endif
<div class="hd-topbar-spacer"></div>
@@ -95,14 +95,14 @@
@if(Route::has('helpdesk.settings'))
<a href="{{ route('helpdesk.settings') }}" wire:navigate role="menuitem">
<i class="fa-solid fa-gear"></i>
<svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M10.7 2h2.6l.6 2.3c.5.2 1 .5 1.5.9l2.3-.7 1.3 2.3-1.7 1.6c.1.5.2 1.1.2 1.6s-.1 1.1-.2 1.6l1.7 1.6-1.3 2.3-2.3-.7c-.5.4-1 .7-1.5.9l-.6 2.3h-2.6l-.6-2.3c-.5-.2-1-.5-1.5-.9l-2.3.7L5 13.2l1.7-1.6A6 6 0 0 1 6.5 10c0-.5.1-1.1.2-1.6L5 6.8l1.3-2.3 2.3.7c.5-.4 1-.7 1.5-.9L10.7 2zM12 7a3 3 0 1 0 0 6 3 3 0 0 0 0-6z"/></svg>
<span>Helpdesk Settings</span>
</a>
@endif
@if($isAdmin)
<a href="{{ url('/admin/users') }}" wire:navigate role="menuitem">
<i class="fa-solid fa-users"></i>
<svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm6-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM2 20c0-4 3-7 7-7s7 3 7 7H2zm13.5-6.3c3.6.3 6.5 2.8 6.5 6.3h-4c0-2.4-.9-4.6-2.5-6.3z"/></svg>
<span>User Management</span>
</a>
@endif
@@ -132,27 +132,27 @@
href="{{ route('dashboard') }}"
wire:navigate
>
<i class="fa-solid fa-house"></i>
<svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3 2.5 11h2.2v9h5.6v-5.5h3.4V20h5.6v-9h2.2L12 3z"/></svg>
<span>Dashboard</span>
</a>
</div>
<div class="hd-nav-section"><div class="hd-nav-heading">Helpdesk</div>
@if(Route::has('helpdesk.tickets.index'))<a class="hd-nav-link hd-nav-link--tickets {{ request()->routeIs('helpdesk.tickets.index', 'helpdesk.tickets.create', 'helpdesk.tickets.show', 'helpdesk.tickets.edit') ? 'is-active' : '' }}" href="{{ route('helpdesk.tickets.index') }}" wire:navigate><i class="fa-solid fa-ticket"></i><span>Tickets</span></a>@endif
@if(Route::has('helpdesk.tickets.archived'))<a class="hd-nav-link {{ request()->routeIs('helpdesk.tickets.archived') ? 'is-active' : '' }}" style="--hd-nav-accent:#f59e0b;--hd-nav-accent-rgb:245,158,11" href="{{ route('helpdesk.tickets.archived') }}" wire:navigate><i class="fa-solid fa-box-archive"></i><span>Archive</span></a>@endif
@if(Route::has('helpdesk.kanban'))<a class="hd-nav-link hd-nav-link--kanban {{ request()->routeIs('helpdesk.kanban') ? 'is-active' : '' }}" href="{{ route('helpdesk.kanban') }}" wire:navigate><i class="fa-solid fa-table-columns"></i><span>Kanban</span></a>@endif
@if(Route::has('helpdesk.settings'))<a class="hd-nav-link hd-nav-link--settings {{ request()->routeIs('helpdesk.settings*') ? 'is-active' : '' }}" href="{{ route('helpdesk.settings') }}" wire:navigate><i class="fa-solid fa-gear"></i><span>Settings</span></a>@endif
@if(Route::has('helpdesk.tickets.index'))<a class="hd-nav-link hd-nav-link--tickets {{ request()->routeIs('helpdesk.tickets.index', 'helpdesk.tickets.create', 'helpdesk.tickets.show', 'helpdesk.tickets.edit') ? 'is-active' : '' }}" href="{{ route('helpdesk.tickets.index') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 6.5h18v4a2 2 0 0 0 0 4v4H3v-4a2 2 0 0 0 0-4v-4zm7 2v8h1.5v-8H10z"/></svg><span>Tickets</span></a>@endif
@if(Route::has('helpdesk.tickets.archived'))<a class="hd-nav-link {{ request()->routeIs('helpdesk.tickets.archived') ? 'is-active' : '' }}" style="--hd-nav-accent:#f59e0b;--hd-nav-accent-rgb:245,158,11" href="{{ route('helpdesk.tickets.archived') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 4h18v4H3V4zm1 5h16v11H4V9zm5 3v2h6v-2H9z"/></svg><span>Archive</span></a>@endif
@if(Route::has('helpdesk.kanban'))<a class="hd-nav-link hd-nav-link--kanban {{ request()->routeIs('helpdesk.kanban') ? 'is-active' : '' }}" href="{{ route('helpdesk.kanban') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 4h18v16H3V4zm2 2v12h6V6H5zm8 0v12h6V6h-6z"/></svg><span>Kanban</span></a>@endif
@if(Route::has('helpdesk.settings'))<a class="hd-nav-link hd-nav-link--settings {{ request()->routeIs('helpdesk.settings*') ? 'is-active' : '' }}" href="{{ route('helpdesk.settings') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M10.7 2h2.6l.6 2.3c.5.2 1 .5 1.5.9l2.3-.7 1.3 2.3-1.7 1.6c.1.5.2 1.1.2 1.6s-.1 1.1-.2 1.6l1.7 1.6-1.3 2.3-2.3-.7c-.5.4-1 .7-1.5.9l-.6 2.3h-2.6l-.6-2.3c-.5-.2-1-.5-1.5-.9l-2.3.7L5 13.2l1.7-1.6A6 6 0 0 1 6.5 10c0-.5.1-1.1.2-1.6L5 6.8l1.3-2.3 2.3.7c.5-.4 1-.7 1.5-.9L10.7 2zM12 7a3 3 0 1 0 0 6 3 3 0 0 0 0-6z"/></svg><span>Settings</span></a>@endif
</div>
@if(Route::has('documentation.index') || Route::has('documentation.documents.index'))
<div class="hd-nav-section"><div class="hd-nav-heading">Documentation</div>
<a class="hd-nav-link hd-nav-link--documents {{ request()->routeIs('documentation.documents.*') || request()->routeIs('documentation.index') ? 'is-active' : '' }}" href="{{ Route::has('documentation.documents.index') ? route('documentation.documents.index') : route('documentation.index') }}" wire:navigate><i class="fa-regular fa-file-lines"></i><span>Documents</span></a>
@if(Route::has('documentation.categories.index'))<a class="hd-nav-link hd-nav-link--categories {{ request()->routeIs('documentation.categories.*') ? 'is-active' : '' }}" href="{{ route('documentation.categories.index') }}" wire:navigate><i class="fa-regular fa-folder"></i><span>Categories</span></a>@endif
<a class="hd-nav-link hd-nav-link--documents {{ request()->routeIs('documentation.documents.*') || request()->routeIs('documentation.index') ? 'is-active' : '' }}" href="{{ Route::has('documentation.documents.index') ? route('documentation.documents.index') : route('documentation.index') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 2h8l4 4v16H6V2zm7 1.8V7h3.2L13 3.8zM9 11v1.5h6V11H9zm0 3.5V16h6v-1.5H9z"/></svg><span>Documents</span></a>
@if(Route::has('documentation.categories.index'))<a class="hd-nav-link hd-nav-link--categories {{ request()->routeIs('documentation.categories.*') ? 'is-active' : '' }}" href="{{ route('documentation.categories.index') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M2.5 5h7l2 2h10v12h-19V5z"/></svg><span>Categories</span></a>@endif
</div>
@endif
@if($isAdmin && Route::has('user-management.index'))
<div class="hd-nav-section"><div class="hd-nav-heading">Users</div>
<a class="hd-nav-link hd-nav-link--users {{ request()->routeIs('user-management.index') || request()->routeIs('user-management.create') || request()->routeIs('user-management.edit') ? 'is-active' : '' }}" href="{{ route('user-management.index') }}" wire:navigate><i class="fa-solid fa-users"></i><span>Users</span></a>
<a class="hd-nav-link hd-nav-link--roles {{ request()->routeIs('user-management.roles') ? 'is-active' : '' }}" href="{{ route('user-management.roles') }}" wire:navigate><i class="fa-solid fa-shield-halved"></i><span>Roles & Permissions</span></a>
<a class="hd-nav-link hd-nav-link--users {{ request()->routeIs('user-management.index') || request()->routeIs('user-management.create') || request()->routeIs('user-management.edit') ? 'is-active' : '' }}" href="{{ route('user-management.index') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm6-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM2 20c0-4 3-7 7-7s7 3 7 7H2zm13.5-6.3c3.6.3 6.5 2.8 6.5 6.3h-4c0-2.4-.9-4.6-2.5-6.3z"/></svg><span>Users</span></a>
<a class="hd-nav-link hd-nav-link--roles {{ request()->routeIs('user-management.roles') ? 'is-active' : '' }}" href="{{ route('user-management.roles') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2 4 5v6c0 5.1 3.4 9.4 8 11 4.6-1.6 8-5.9 8-11V5l-8-3zm0 3v14.8C8.7 18.3 6 14.9 6 11V6.4L12 4.2V5z"/></svg><span>Roles & Permissions</span></a>
</div>
@endif
</nav>
@@ -38,7 +38,7 @@
<div class="hd-topbar-main">
@if(Route::has('helpdesk.tickets.index'))
<form method="GET" action="{{ route('helpdesk.tickets.index') }}" class="hd-top-search">
<i class="fa-solid fa-magnifying-glass"></i><input name="search" placeholder="Search tickets" aria-label="Search tickets">
<svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M10.5 3a7.5 7.5 0 1 0 4.7 13.3L20.9 22l1.1-1.1-5.7-5.7A7.5 7.5 0 0 0 10.5 3zm0 2a5.5 5.5 0 1 1 0 11 5.5 5.5 0 0 1 0-11z"/></svg><input name="search" placeholder="Search tickets" aria-label="Search tickets">
</form>
@endif
<div class="hd-topbar-spacer"></div>
@@ -95,14 +95,14 @@
@if(Route::has('helpdesk.settings'))
<a href="{{ route('helpdesk.settings') }}" wire:navigate role="menuitem">
<i class="fa-solid fa-gear"></i>
<svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M10.7 2h2.6l.6 2.3c.5.2 1 .5 1.5.9l2.3-.7 1.3 2.3-1.7 1.6c.1.5.2 1.1.2 1.6s-.1 1.1-.2 1.6l1.7 1.6-1.3 2.3-2.3-.7c-.5.4-1 .7-1.5.9l-.6 2.3h-2.6l-.6-2.3c-.5-.2-1-.5-1.5-.9l-2.3.7L5 13.2l1.7-1.6A6 6 0 0 1 6.5 10c0-.5.1-1.1.2-1.6L5 6.8l1.3-2.3 2.3.7c.5-.4 1-.7 1.5-.9L10.7 2zM12 7a3 3 0 1 0 0 6 3 3 0 0 0 0-6z"/></svg>
<span>Helpdesk Settings</span>
</a>
@endif
@if($isAdmin)
<a href="{{ url('/admin/users') }}" wire:navigate role="menuitem">
<i class="fa-solid fa-users"></i>
<svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm6-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM2 20c0-4 3-7 7-7s7 3 7 7H2zm13.5-6.3c3.6.3 6.5 2.8 6.5 6.3h-4c0-2.4-.9-4.6-2.5-6.3z"/></svg>
<span>User Management</span>
</a>
@endif
@@ -132,27 +132,27 @@
href="{{ route('dashboard') }}"
wire:navigate
>
<i class="fa-solid fa-house"></i>
<svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3 2.5 11h2.2v9h5.6v-5.5h3.4V20h5.6v-9h2.2L12 3z"/></svg>
<span>Dashboard</span>
</a>
</div>
<div class="hd-nav-section"><div class="hd-nav-heading">Helpdesk</div>
@if(Route::has('helpdesk.tickets.index'))<a class="hd-nav-link hd-nav-link--tickets {{ request()->routeIs('helpdesk.tickets.index', 'helpdesk.tickets.create', 'helpdesk.tickets.show', 'helpdesk.tickets.edit') ? 'is-active' : '' }}" href="{{ route('helpdesk.tickets.index') }}" wire:navigate><i class="fa-solid fa-ticket"></i><span>Tickets</span></a>@endif
@if(Route::has('helpdesk.tickets.archived'))<a class="hd-nav-link {{ request()->routeIs('helpdesk.tickets.archived') ? 'is-active' : '' }}" style="--hd-nav-accent:#f59e0b;--hd-nav-accent-rgb:245,158,11" href="{{ route('helpdesk.tickets.archived') }}" wire:navigate><i class="fa-solid fa-box-archive"></i><span>Archive</span></a>@endif
@if(Route::has('helpdesk.kanban'))<a class="hd-nav-link hd-nav-link--kanban {{ request()->routeIs('helpdesk.kanban') ? 'is-active' : '' }}" href="{{ route('helpdesk.kanban') }}" wire:navigate><i class="fa-solid fa-table-columns"></i><span>Kanban</span></a>@endif
@if(Route::has('helpdesk.settings'))<a class="hd-nav-link hd-nav-link--settings {{ request()->routeIs('helpdesk.settings*') ? 'is-active' : '' }}" href="{{ route('helpdesk.settings') }}" wire:navigate><i class="fa-solid fa-gear"></i><span>Settings</span></a>@endif
@if(Route::has('helpdesk.tickets.index'))<a class="hd-nav-link hd-nav-link--tickets {{ request()->routeIs('helpdesk.tickets.index', 'helpdesk.tickets.create', 'helpdesk.tickets.show', 'helpdesk.tickets.edit') ? 'is-active' : '' }}" href="{{ route('helpdesk.tickets.index') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 6.5h18v4a2 2 0 0 0 0 4v4H3v-4a2 2 0 0 0 0-4v-4zm7 2v8h1.5v-8H10z"/></svg><span>Tickets</span></a>@endif
@if(Route::has('helpdesk.tickets.archived'))<a class="hd-nav-link {{ request()->routeIs('helpdesk.tickets.archived') ? 'is-active' : '' }}" style="--hd-nav-accent:#f59e0b;--hd-nav-accent-rgb:245,158,11" href="{{ route('helpdesk.tickets.archived') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 4h18v4H3V4zm1 5h16v11H4V9zm5 3v2h6v-2H9z"/></svg><span>Archive</span></a>@endif
@if(Route::has('helpdesk.kanban'))<a class="hd-nav-link hd-nav-link--kanban {{ request()->routeIs('helpdesk.kanban') ? 'is-active' : '' }}" href="{{ route('helpdesk.kanban') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 4h18v16H3V4zm2 2v12h6V6H5zm8 0v12h6V6h-6z"/></svg><span>Kanban</span></a>@endif
@if(Route::has('helpdesk.settings'))<a class="hd-nav-link hd-nav-link--settings {{ request()->routeIs('helpdesk.settings*') ? 'is-active' : '' }}" href="{{ route('helpdesk.settings') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M10.7 2h2.6l.6 2.3c.5.2 1 .5 1.5.9l2.3-.7 1.3 2.3-1.7 1.6c.1.5.2 1.1.2 1.6s-.1 1.1-.2 1.6l1.7 1.6-1.3 2.3-2.3-.7c-.5.4-1 .7-1.5.9l-.6 2.3h-2.6l-.6-2.3c-.5-.2-1-.5-1.5-.9l-2.3.7L5 13.2l1.7-1.6A6 6 0 0 1 6.5 10c0-.5.1-1.1.2-1.6L5 6.8l1.3-2.3 2.3.7c.5-.4 1-.7 1.5-.9L10.7 2zM12 7a3 3 0 1 0 0 6 3 3 0 0 0 0-6z"/></svg><span>Settings</span></a>@endif
</div>
@if(Route::has('documentation.index') || Route::has('documentation.documents.index'))
<div class="hd-nav-section"><div class="hd-nav-heading">Documentation</div>
<a class="hd-nav-link hd-nav-link--documents {{ request()->routeIs('documentation.documents.*') || request()->routeIs('documentation.index') ? 'is-active' : '' }}" href="{{ Route::has('documentation.documents.index') ? route('documentation.documents.index') : route('documentation.index') }}" wire:navigate><i class="fa-regular fa-file-lines"></i><span>Documents</span></a>
@if(Route::has('documentation.categories.index'))<a class="hd-nav-link hd-nav-link--categories {{ request()->routeIs('documentation.categories.*') ? 'is-active' : '' }}" href="{{ route('documentation.categories.index') }}" wire:navigate><i class="fa-regular fa-folder"></i><span>Categories</span></a>@endif
<a class="hd-nav-link hd-nav-link--documents {{ request()->routeIs('documentation.documents.*') || request()->routeIs('documentation.index') ? 'is-active' : '' }}" href="{{ Route::has('documentation.documents.index') ? route('documentation.documents.index') : route('documentation.index') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 2h8l4 4v16H6V2zm7 1.8V7h3.2L13 3.8zM9 11v1.5h6V11H9zm0 3.5V16h6v-1.5H9z"/></svg><span>Documents</span></a>
@if(Route::has('documentation.categories.index'))<a class="hd-nav-link hd-nav-link--categories {{ request()->routeIs('documentation.categories.*') ? 'is-active' : '' }}" href="{{ route('documentation.categories.index') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M2.5 5h7l2 2h10v12h-19V5z"/></svg><span>Categories</span></a>@endif
</div>
@endif
@if($isAdmin && Route::has('user-management.index'))
<div class="hd-nav-section"><div class="hd-nav-heading">Users</div>
<a class="hd-nav-link hd-nav-link--users {{ request()->routeIs('user-management.index') || request()->routeIs('user-management.create') || request()->routeIs('user-management.edit') ? 'is-active' : '' }}" href="{{ route('user-management.index') }}" wire:navigate><i class="fa-solid fa-users"></i><span>Users</span></a>
<a class="hd-nav-link hd-nav-link--roles {{ request()->routeIs('user-management.roles') ? 'is-active' : '' }}" href="{{ route('user-management.roles') }}" wire:navigate><i class="fa-solid fa-shield-halved"></i><span>Roles & Permissions</span></a>
<a class="hd-nav-link hd-nav-link--users {{ request()->routeIs('user-management.index') || request()->routeIs('user-management.create') || request()->routeIs('user-management.edit') ? 'is-active' : '' }}" href="{{ route('user-management.index') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm6-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM2 20c0-4 3-7 7-7s7 3 7 7H2zm13.5-6.3c3.6.3 6.5 2.8 6.5 6.3h-4c0-2.4-.9-4.6-2.5-6.3z"/></svg><span>Users</span></a>
<a class="hd-nav-link hd-nav-link--roles {{ request()->routeIs('user-management.roles') ? 'is-active' : '' }}" href="{{ route('user-management.roles') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2 4 5v6c0 5.1 3.4 9.4 8 11 4.6-1.6 8-5.9 8-11V5l-8-3zm0 3v14.8C8.7 18.3 6 14.9 6 11V6.4L12 4.2V5z"/></svg><span>Roles & Permissions</span></a>
</div>
@endif
</nav>
@@ -38,7 +38,7 @@
<div class="hd-topbar-main">
@if(Route::has('helpdesk.tickets.index'))
<form method="GET" action="{{ route('helpdesk.tickets.index') }}" class="hd-top-search">
<i class="fa-solid fa-magnifying-glass"></i><input name="search" placeholder="Search tickets" aria-label="Search tickets">
<svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M10.5 3a7.5 7.5 0 1 0 4.7 13.3L20.9 22l1.1-1.1-5.7-5.7A7.5 7.5 0 0 0 10.5 3zm0 2a5.5 5.5 0 1 1 0 11 5.5 5.5 0 0 1 0-11z"/></svg><input name="search" placeholder="Search tickets" aria-label="Search tickets">
</form>
@endif
<div class="hd-topbar-spacer"></div>
@@ -95,14 +95,14 @@
@if(Route::has('helpdesk.settings'))
<a href="{{ route('helpdesk.settings') }}" wire:navigate role="menuitem">
<i class="fa-solid fa-gear"></i>
<svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M10.7 2h2.6l.6 2.3c.5.2 1 .5 1.5.9l2.3-.7 1.3 2.3-1.7 1.6c.1.5.2 1.1.2 1.6s-.1 1.1-.2 1.6l1.7 1.6-1.3 2.3-2.3-.7c-.5.4-1 .7-1.5.9l-.6 2.3h-2.6l-.6-2.3c-.5-.2-1-.5-1.5-.9l-2.3.7L5 13.2l1.7-1.6A6 6 0 0 1 6.5 10c0-.5.1-1.1.2-1.6L5 6.8l1.3-2.3 2.3.7c.5-.4 1-.7 1.5-.9L10.7 2zM12 7a3 3 0 1 0 0 6 3 3 0 0 0 0-6z"/></svg>
<span>Helpdesk Settings</span>
</a>
@endif
@if($isAdmin)
<a href="{{ url('/admin/users') }}" wire:navigate role="menuitem">
<i class="fa-solid fa-users"></i>
<svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm6-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM2 20c0-4 3-7 7-7s7 3 7 7H2zm13.5-6.3c3.6.3 6.5 2.8 6.5 6.3h-4c0-2.4-.9-4.6-2.5-6.3z"/></svg>
<span>User Management</span>
</a>
@endif
@@ -132,27 +132,27 @@
href="{{ route('dashboard') }}"
wire:navigate
>
<i class="fa-solid fa-house"></i>
<svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 3 2.5 11h2.2v9h5.6v-5.5h3.4V20h5.6v-9h2.2L12 3z"/></svg>
<span>Dashboard</span>
</a>
</div>
<div class="hd-nav-section"><div class="hd-nav-heading">Helpdesk</div>
@if(Route::has('helpdesk.tickets.index'))<a class="hd-nav-link hd-nav-link--tickets {{ request()->routeIs('helpdesk.tickets.index', 'helpdesk.tickets.create', 'helpdesk.tickets.show', 'helpdesk.tickets.edit') ? 'is-active' : '' }}" href="{{ route('helpdesk.tickets.index') }}" wire:navigate><i class="fa-solid fa-ticket"></i><span>Tickets</span></a>@endif
@if(Route::has('helpdesk.tickets.archived'))<a class="hd-nav-link {{ request()->routeIs('helpdesk.tickets.archived') ? 'is-active' : '' }}" style="--hd-nav-accent:#f59e0b;--hd-nav-accent-rgb:245,158,11" href="{{ route('helpdesk.tickets.archived') }}" wire:navigate><i class="fa-solid fa-box-archive"></i><span>Archive</span></a>@endif
@if(Route::has('helpdesk.kanban'))<a class="hd-nav-link hd-nav-link--kanban {{ request()->routeIs('helpdesk.kanban') ? 'is-active' : '' }}" href="{{ route('helpdesk.kanban') }}" wire:navigate><i class="fa-solid fa-table-columns"></i><span>Kanban</span></a>@endif
@if(Route::has('helpdesk.settings'))<a class="hd-nav-link hd-nav-link--settings {{ request()->routeIs('helpdesk.settings*') ? 'is-active' : '' }}" href="{{ route('helpdesk.settings') }}" wire:navigate><i class="fa-solid fa-gear"></i><span>Settings</span></a>@endif
@if(Route::has('helpdesk.tickets.index'))<a class="hd-nav-link hd-nav-link--tickets {{ request()->routeIs('helpdesk.tickets.index', 'helpdesk.tickets.create', 'helpdesk.tickets.show', 'helpdesk.tickets.edit') ? 'is-active' : '' }}" href="{{ route('helpdesk.tickets.index') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 6.5h18v4a2 2 0 0 0 0 4v4H3v-4a2 2 0 0 0 0-4v-4zm7 2v8h1.5v-8H10z"/></svg><span>Tickets</span></a>@endif
@if(Route::has('helpdesk.tickets.archived'))<a class="hd-nav-link {{ request()->routeIs('helpdesk.tickets.archived') ? 'is-active' : '' }}" style="--hd-nav-accent:#f59e0b;--hd-nav-accent-rgb:245,158,11" href="{{ route('helpdesk.tickets.archived') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 4h18v4H3V4zm1 5h16v11H4V9zm5 3v2h6v-2H9z"/></svg><span>Archive</span></a>@endif
@if(Route::has('helpdesk.kanban'))<a class="hd-nav-link hd-nav-link--kanban {{ request()->routeIs('helpdesk.kanban') ? 'is-active' : '' }}" href="{{ route('helpdesk.kanban') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M3 4h18v16H3V4zm2 2v12h6V6H5zm8 0v12h6V6h-6z"/></svg><span>Kanban</span></a>@endif
@if(Route::has('helpdesk.settings'))<a class="hd-nav-link hd-nav-link--settings {{ request()->routeIs('helpdesk.settings*') ? 'is-active' : '' }}" href="{{ route('helpdesk.settings') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M10.7 2h2.6l.6 2.3c.5.2 1 .5 1.5.9l2.3-.7 1.3 2.3-1.7 1.6c.1.5.2 1.1.2 1.6s-.1 1.1-.2 1.6l1.7 1.6-1.3 2.3-2.3-.7c-.5.4-1 .7-1.5.9l-.6 2.3h-2.6l-.6-2.3c-.5-.2-1-.5-1.5-.9l-2.3.7L5 13.2l1.7-1.6A6 6 0 0 1 6.5 10c0-.5.1-1.1.2-1.6L5 6.8l1.3-2.3 2.3.7c.5-.4 1-.7 1.5-.9L10.7 2zM12 7a3 3 0 1 0 0 6 3 3 0 0 0 0-6z"/></svg><span>Settings</span></a>@endif
</div>
@if(Route::has('documentation.index') || Route::has('documentation.documents.index'))
<div class="hd-nav-section"><div class="hd-nav-heading">Documentation</div>
<a class="hd-nav-link hd-nav-link--documents {{ request()->routeIs('documentation.documents.*') || request()->routeIs('documentation.index') ? 'is-active' : '' }}" href="{{ Route::has('documentation.documents.index') ? route('documentation.documents.index') : route('documentation.index') }}" wire:navigate><i class="fa-regular fa-file-lines"></i><span>Documents</span></a>
@if(Route::has('documentation.categories.index'))<a class="hd-nav-link hd-nav-link--categories {{ request()->routeIs('documentation.categories.*') ? 'is-active' : '' }}" href="{{ route('documentation.categories.index') }}" wire:navigate><i class="fa-regular fa-folder"></i><span>Categories</span></a>@endif
<a class="hd-nav-link hd-nav-link--documents {{ request()->routeIs('documentation.documents.*') || request()->routeIs('documentation.index') ? 'is-active' : '' }}" href="{{ Route::has('documentation.documents.index') ? route('documentation.documents.index') : route('documentation.index') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M6 2h8l4 4v16H6V2zm7 1.8V7h3.2L13 3.8zM9 11v1.5h6V11H9zm0 3.5V16h6v-1.5H9z"/></svg><span>Documents</span></a>
@if(Route::has('documentation.categories.index'))<a class="hd-nav-link hd-nav-link--categories {{ request()->routeIs('documentation.categories.*') ? 'is-active' : '' }}" href="{{ route('documentation.categories.index') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M2.5 5h7l2 2h10v12h-19V5z"/></svg><span>Categories</span></a>@endif
</div>
@endif
@if($isAdmin && Route::has('user-management.index'))
<div class="hd-nav-section"><div class="hd-nav-heading">Users</div>
<a class="hd-nav-link hd-nav-link--users {{ request()->routeIs('user-management.index') || request()->routeIs('user-management.create') || request()->routeIs('user-management.edit') ? 'is-active' : '' }}" href="{{ route('user-management.index') }}" wire:navigate><i class="fa-solid fa-users"></i><span>Users</span></a>
<a class="hd-nav-link hd-nav-link--roles {{ request()->routeIs('user-management.roles') ? 'is-active' : '' }}" href="{{ route('user-management.roles') }}" wire:navigate><i class="fa-solid fa-shield-halved"></i><span>Roles & Permissions</span></a>
<a class="hd-nav-link hd-nav-link--users {{ request()->routeIs('user-management.index') || request()->routeIs('user-management.create') || request()->routeIs('user-management.edit') ? 'is-active' : '' }}" href="{{ route('user-management.index') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 11a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm6-1a3 3 0 1 0 0-6 3 3 0 0 0 0 6zM2 20c0-4 3-7 7-7s7 3 7 7H2zm13.5-6.3c3.6.3 6.5 2.8 6.5 6.3h-4c0-2.4-.9-4.6-2.5-6.3z"/></svg><span>Users</span></a>
<a class="hd-nav-link hd-nav-link--roles {{ request()->routeIs('user-management.roles') ? 'is-active' : '' }}" href="{{ route('user-management.roles') }}" wire:navigate><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2 4 5v6c0 5.1 3.4 9.4 8 11 4.6-1.6 8-5.9 8-11V5l-8-3zm0 3v14.8C8.7 18.3 6 14.9 6 11V6.4L12 4.2V5z"/></svg><span>Roles & Permissions</span></a>
</div>
@endif
</nav>
@@ -7,23 +7,29 @@
$priorityTotal = max(1, $priorityBreakdown->sum('count'));
$offset = 0;
$segments = [];
$donutSegments = [];
foreach($priorityBreakdown as $index => $priority) {
$percent = ($priority['count'] / $priorityTotal) * 100;
$segments[] = $palette[$index % count($palette)].' '.$offset.'% '.($offset + $percent).'%';
$donutSegments[] = [
'colour' => $palette[$index % count($palette)],
'length' => $percent,
'offset' => -$offset,
];
$offset += $percent;
}
@endphp
<div class="hd-dashboard space-y-5" dusk="helpdesk-dashboard-widget">
<section class="hd-dashboard-heading">
<div><h1>Dashboard</h1><p>Overview of your helpdesk system</p></div>
<label class="hd-range-select"><i class="fa-regular fa-calendar"></i><select wire:model.live="days"><option value="7">Last 7 days</option><option value="14">Last 14 days</option><option value="30">Last 30 days</option></select></label>
<label class="hd-range-select"><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M5 3h2v2h10V3h2v2h2v16H3V5h2V3zm0 6v10h14V9H5z"/></svg><select wire:model.live="days"><option value="7">Last 7 days</option><option value="14">Last 14 days</option><option value="30">Last 30 days</option></select></label>
</section>
<div class="hd-metric-grid">
<article class="hd-metric-card hd-metric-blue"><span class="hd-metric-icon"><i class="fa-regular fa-clipboard"></i></span><div><small>Total Tickets</small><strong>{{ $totalCount }}</strong><em>All visible tickets</em></div></article>
<article class="hd-metric-card hd-metric-green"><span class="hd-metric-icon"><i class="fa-regular fa-circle-check"></i></span><div><small>Resolved</small><strong>{{ $closedCount }}</strong><em>Completed workload</em></div></article>
<article class="hd-metric-card hd-metric-amber"><span class="hd-metric-icon"><i class="fa-regular fa-clock"></i></span><div><small>In Progress</small><strong>{{ $inProgressCount }}</strong><em>Actively being worked</em></div></article>
<article class="hd-metric-card hd-metric-red"><span class="hd-metric-icon"><i class="fa-solid fa-circle-exclamation"></i></span><div><small>Open</small><strong>{{ $openCount }}</strong><em>Awaiting resolution</em></div></article>
<article class="hd-metric-card hd-metric-blue"><span class="hd-metric-icon"><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M9 2h6l1 2h3v18H5V4h3l1-2zm1 2-.5 1h5L14 4h-4zM8 9v2h8V9H8zm0 4v2h8v-2H8z"/></svg></span><div><small>Total Tickets</small><strong>{{ $totalCount }}</strong><em>All visible tickets</em></div></article>
<article class="hd-metric-card hd-metric-green"><span class="hd-metric-icon"><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-1.2 14.2-4-4 1.4-1.4 2.6 2.6 5-5 1.4 1.4-6.4 6.4z"/></svg></span><div><small>Resolved</small><strong>{{ $closedCount }}</strong><em>Completed workload</em></div></article>
<article class="hd-metric-card hd-metric-amber"><span class="hd-metric-icon"><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm1 5v4.6l3.2 2-1 1.7-4.2-2.6V7h2z"/></svg></span><div><small>In Progress</small><strong>{{ $inProgressCount }}</strong><em>Actively being worked</em></div></article>
<article class="hd-metric-card hd-metric-red"><span class="hd-metric-icon"><svg class="hd-svg-icon" viewBox="0 0 24 24" aria-hidden="true"><path d="M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20zm-1 5h2v7h-2V7zm0 9h2v2h-2v-2z"/></svg></span><div><small>Open</small><strong>{{ $openCount }}</strong><em>Awaiting resolution</em></div></article>
</div>
<div class="hd-dashboard-grid">
@@ -36,7 +42,7 @@
<section class="hd-dashboard-card hd-priority-card">
<header><h2>Tickets by Priority</h2></header>
<div class="hd-priority-body"><div class="hd-donut" style="background: conic-gradient({{ implode(', ', $segments) ?: '#334155 0 100%' }})"><span>{{ $priorityTotal }}</span></div><div class="hd-priority-legend">@foreach($priorityBreakdown as $i => $priority)<div><span><b style="background: {{ $palette[$i % count($palette)] }}"></b>{{ $priority['name'] }}</span><strong>{{ $priority['count'] }} ({{ round(($priority['count']/$priorityTotal)*100, 1) }}%)</strong></div>@endforeach</div></div>
<div class="hd-priority-body"><div class="hd-donut"><svg class="hd-donut-svg" viewBox="0 0 42 42" aria-hidden="true"><circle class="hd-donut-track" cx="21" cy="21" r="15.9155" fill="none" stroke-width="10"></circle>@foreach($donutSegments as $segment)<circle cx="21" cy="21" r="15.9155" fill="none" stroke="{{ $segment['colour'] }}" stroke-width="10" stroke-dasharray="{{ $segment['length'] }} {{ 100 - $segment['length'] }}" stroke-dashoffset="{{ $segment['offset'] }}" transform="rotate(-90 21 21)"></circle>@endforeach</svg><span>{{ $priorityTotal }}</span></div><div class="hd-priority-legend">@foreach($priorityBreakdown as $i => $priority)<div><span><b style="background: {{ $palette[$i % count($palette)] }}"></b>{{ $priority['name'] }}</span><strong>{{ $priority['count'] }} ({{ round(($priority['count']/$priorityTotal)*100, 1) }}%)</strong></div>@endforeach</div></div>
</section>
<section class="hd-dashboard-card hd-latest-card">
@@ -11,6 +11,14 @@
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta name="format-detection" content="telephone=no">
<script>
(function () {
var ua = navigator.userAgent || '';
if (/(iPad|iPhone|iPod)/.test(ua) && /OS 12[_\d]*/.test(ua)) {
document.documentElement.className += (document.documentElement.className ? ' ' : '') + 'ios12';
}
}());
</script>
<title>{{ filled($title ?? null) ? $title.' - '.config('app.name', 'Laravel') : config('app.name', 'Laravel') }}</title>
@fonts
@php
-2
View File
@@ -1,2 +0,0 @@
*
!.gitignore
+106
View File
@@ -0,0 +1,106 @@
[2026-09-07 16:52:18] local.ERROR: TypeError: Module name, 'axios' does not resolve to a valid URL. null 0 0 TypeError Module name, 'axios' does not resolve to a valid URL. {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 27_0_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/152.0.7977.64 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:52:17.758Z"}
[2026-09-07 16:52:18] local.ERROR: TypeError: Module name, 'axios' does not resolve to a valid URL. null 0 0 TypeError Module name, 'axios' does not resolve to a valid URL. {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 27_0_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/152.0.7977.64 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:52:17.758Z"}
[2026-09-07 16:52:42] local.ERROR: TypeError: Module name, 'axios' does not resolve to a valid URL. null 0 0 TypeError Module name, 'axios' does not resolve to a valid URL. {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 27_0_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/152.0.7977.64 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:52:42.335Z"}
[2026-09-07 16:52:42] local.ERROR: TypeError: Module name, 'axios' does not resolve to a valid URL. null 0 0 TypeError Module name, 'axios' does not resolve to a valid URL. {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 27_0_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/152.0.7977.64 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:52:42.335Z"}
[2026-09-07 16:52:52] local.ERROR: TypeError: Module name, 'axios' does not resolve to a valid URL. null 0 0 TypeError Module name, 'axios' does not resolve to a valid URL. {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 27_0_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/152.0.7977.64 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:52:52.668Z"}
[2026-09-07 16:52:52] local.ERROR: TypeError: Module name, 'axios' does not resolve to a valid URL. null 0 0 TypeError Module name, 'axios' does not resolve to a valid URL. {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPhone; CPU iPhone OS 27_0_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/152.0.7977.64 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:52:52.668Z"}
[2026-09-07 16:54:24] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:24.476Z"}
[2026-09-07 16:54:24] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:24.477Z"}
[2026-09-07 16:54:24] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:24.498Z"}
[2026-09-07 16:54:24] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:24.499Z"}
[2026-09-07 16:54:24] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:24.504Z"}
[2026-09-07 16:54:24] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:24.504Z"}
[2026-09-07 16:54:24] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/dashboard 565 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/dashboard:565:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:24.627Z"}
[2026-09-07 16:54:24] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/dashboard 565 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/dashboard:565:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:24.627Z"}
[2026-09-07 16:54:38] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:37.989Z"}
[2026-09-07 16:54:38] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/settings/profile 760 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/settings/profile:760:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:38.186Z"}
[2026-09-07 16:54:38] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:37.990Z"}
[2026-09-07 16:54:38] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/settings/profile 760 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/settings/profile:760:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:38.187Z"}
[2026-09-07 16:54:38] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:38.006Z"}
[2026-09-07 16:54:38] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:38.006Z"}
[2026-09-07 16:54:38] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:38.012Z"}
[2026-09-07 16:54:38] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:38.012Z"}
[2026-09-07 16:54:43] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:43.345Z"}
[2026-09-07 16:54:43] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:43.346Z"}
[2026-09-07 16:54:43] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:43.364Z"}
[2026-09-07 16:54:43] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:43.364Z"}
[2026-09-07 16:54:43] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:43.367Z"}
[2026-09-07 16:54:43] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:43.367Z"}
[2026-09-07 16:54:43] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/settings/appearance 597 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/settings/appearance:597:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:43.438Z"}
[2026-09-07 16:54:43] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/settings/appearance 597 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/settings/appearance:597:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:43.438Z"}
[2026-09-07 16:54:49] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:48.962Z"}
[2026-09-07 16:54:49] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:48.962Z"}
[2026-09-07 16:54:49] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:48.976Z"}
[2026-09-07 16:54:49] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:48.976Z"}
[2026-09-07 16:54:49] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:48.980Z"}
[2026-09-07 16:54:49] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:48.980Z"}
[2026-09-07 16:54:49] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/settings/profile 760 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/settings/profile:760:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:49.109Z"}
[2026-09-07 16:54:49] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/settings/profile 760 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/settings/profile:760:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:49.109Z"}
[2026-09-07 16:54:51] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:50.959Z"}
[2026-09-07 16:54:51] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:50.959Z"}
[2026-09-07 16:54:51] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:50.975Z"}
[2026-09-07 16:54:51] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:50.976Z"}
[2026-09-07 16:54:51] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:50.980Z"}
[2026-09-07 16:54:51] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:50.980Z"}
[2026-09-07 16:54:51] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/dashboard 565 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/dashboard:565:36 {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:50.986Z"}
[2026-09-07 16:54:51] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/dashboard 565 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/dashboard:565:36 {"url":"https://helpdesk.vm/dashboard","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:54:50.986Z"}
[2026-09-07 16:56:16] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:15.695Z"}
[2026-09-07 16:56:16] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:15.696Z"}
[2026-09-07 16:56:16] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:15.712Z"}
[2026-09-07 16:56:16] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:15.712Z"}
[2026-09-07 16:56:16] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:15.716Z"}
[2026-09-07 16:56:16] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:15.716Z"}
[2026-09-07 16:56:16] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/settings/profile 760 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/settings/profile:760:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:15.851Z"}
[2026-09-07 16:56:16] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/settings/profile 760 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/settings/profile:760:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:15.852Z"}
[2026-09-07 16:56:24] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/user/confirm-password","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:23.927Z"}
[2026-09-07 16:56:24] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/user/confirm-password","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:23.928Z"}
[2026-09-07 16:56:24] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/user/confirm-password","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:23.943Z"}
[2026-09-07 16:56:24] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/user/confirm-password","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:23.943Z"}
[2026-09-07 16:56:24] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/user/confirm-password","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:23.947Z"}
[2026-09-07 16:56:24] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/user/confirm-password","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:23.947Z"}
[2026-09-07 16:56:24] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/user/confirm-password 565 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/user/confirm-password:565:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/user/confirm-password","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:23.990Z"}
[2026-09-07 16:56:24] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/user/confirm-password 565 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/user/confirm-password:565:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/user/confirm-password","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:23.990Z"}
[2026-09-07 16:56:35] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:34.769Z"}
[2026-09-07 16:56:35] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:34.769Z"}
[2026-09-07 16:56:35] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:34.783Z"}
[2026-09-07 16:56:35] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:34.783Z"}
[2026-09-07 16:56:35] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:34.787Z"}
[2026-09-07 16:56:35] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:34.787Z"}
[2026-09-07 16:56:35] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/settings/profile 760 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/settings/profile:760:36 {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:34.795Z"}
[2026-09-07 16:56:35] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/settings/profile 760 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/settings/profile:760:36 {"url":"https://helpdesk.vm/settings/profile","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:34.795Z"}
[2026-09-07 16:56:37] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:36.879Z"}
[2026-09-07 16:56:37] local.ERROR: SyntaxError: Unexpected token ';'. Expected an opening '(' before a method's parameter list. https://helpdesk.vm/flux/flux.js?id=6710af97 1 0 SyntaxError Unexpected token ';'. Expected an opening '(' before a method's parameter list. {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:36.879Z"}
[2026-09-07 16:56:37] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:36.897Z"}
[2026-09-07 16:56:37] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/_debugbar/assets?type=js&mtime=1785738196 390 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:36.897Z"}
[2026-09-07 16:56:37] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:36.901Z"}
[2026-09-07 16:56:37] local.ERROR: SyntaxError: Unexpected token '.' https://helpdesk.vm/livewire-b2431d8a/livewire.js?id=26bbdf42 386 0 SyntaxError Unexpected token '.' {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:36.901Z"}
[2026-09-07 16:56:37] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/settings/appearance 597 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/settings/appearance:597:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:37.006Z"}
[2026-09-07 16:56:37] local.ERROR: ReferenceError: Can't find variable: PhpDebugBar https://helpdesk.vm/settings/appearance 597 36 ReferenceError Can't find variable: PhpDebugBar renderDebugbar@https://helpdesk.vm/settings/appearance:597:36
[native code]
promiseReactionJob@[native code] {"url":"https://helpdesk.vm/settings/appearance","user_agent":"Mozilla/5.0 (iPad; CPU OS 12_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/92.0.4515.90 Mobile/15E148 Safari/604.1","timestamp":"2026-09-07T16:56:37.006Z"}