2016-03-25 01:18:05 -07:00
<! DOCTYPE html >
2025-11-26 00:34:46 +00:00
< html lang = " { { str_replace('_', '-', app()->getLocale()) }} " dir = " { { Helper::determineLanguageDirection() }} " data - theme = " light " >
2023-04-06 16:19:33 -07:00
< head >
2016-03-25 01:18:05 -07:00
< meta charset = " utf-8 " >
< meta http - equiv = " X-UA-Compatible " content = " IE=edge " >
< title >
2023-04-06 16:19:33 -07:00
@ section ( 'title' )
@ show
:: {{ $snipeSettings -> site_name }}
2016-03-25 01:18:05 -07:00
</ title >
<!-- Tell the browser to be responsive to screen width -->
2020-04-01 06:18:37 -07:00
< meta content = " width=device-width, initial-scale=1 " name = " viewport " >
2016-03-25 01:18:05 -07:00
2023-04-06 16:19:33 -07:00
< meta name = " apple-mobile-web-app-capable " content = " yes " >
2019-07-15 13:49:56 -07:00
2023-04-06 16:19:33 -07:00
< link rel = " apple-touch-icon "
href = " { { ( $snipeSettings ) && ( $snipeSettings->favicon !='') ? Storage::disk('public')->url(e( $snipeSettings->logo )) : config('app.url').'/img/snipe-logo-bug.png' }} " >
< link rel = " apple-touch-startup-image "
href = " { { ( $snipeSettings ) && ( $snipeSettings->favicon !='') ? Storage::disk('public')->url(e( $snipeSettings->logo )) : config('app.url').'/img/snipe-logo-bug.png' }} " >
< link rel = " shortcut icon " type = " image/ico "
2025-06-15 03:51:50 +01:00
href = " { { ( $snipeSettings ) && ( $snipeSettings->favicon !='') ? Storage::disk('public')->url(e( $snipeSettings->favicon )) : config('app.url').'/favicon.ico' }} " >
2016-03-25 01:18:05 -07:00
2023-04-06 16:19:33 -07:00
< meta name = " csrf-token " content = " { { csrf_token() }} " >
2024-07-16 18:40:10 +01:00
< meta name = " language " content = " { { Helper::mapBackToLegacyLocale(app()->getLocale()) }} " >
< meta name = " language-direction " content = " { { Helper::determineLanguageDirection() }} " >
2023-04-06 16:19:33 -07:00
< meta name = " baseUrl " content = " { { config('app.url') }}/ " >
2025-11-28 17:48:08 +00:00
< meta name = " theme-color " content = " { { $snipeSettings->header_color ?? '#5fa4cc' }} " >
2017-01-11 08:44:34 -08:00
2017-10-01 15:59:55 -04:00
< script nonce = " { { csrf_token() }} " >
2023-04-06 16:19:33 -07:00
window . Laravel = { csrfToken : '{{ csrf_token() }}' };
2017-10-01 15:59:55 -04:00
</ script >
2017-01-11 15:21:33 -08:00
2018-09-28 17:09:48 -04:00
{{ -- stylesheets -- }}
2021-04-20 23:49:57 +02:00
< link rel = " stylesheet " href = " { { url(mix('css/dist/all.css')) }} " >
2025-11-26 00:34:46 +00:00
2021-03-29 22:09:23 -04:00
{{ -- page level css -- }}
2018-08-28 16:10:27 -04:00
@ stack ( 'css' )
2018-03-02 17:50:40 -08:00
2020-04-21 11:03:32 -07:00
2025-11-26 00:34:46 +00:00
< style >
2025-11-26 13:50:39 +00:00
: root {
2025-12-02 13:29:12 +00:00
color - scheme : light dark ;
-- btn - theme - hover - text - color : {{ $nav_link_color ? ? 'light-dark(hsl(from var(--main-theme-color) h s calc(l - 10)),hsl(from var(--main-theme-color) h s calc(l - 10)))' }};
-- btn - theme - hover : {{ $nav_link_color ? ? 'light-dark(hsl(from var(--main-theme-color) h s calc(l - 10)),hsl(from var(--main-theme-color) h s calc(l - 10)))' }};
2025-12-07 14:13:17 +00:00
-- btn - theme - text - color : {{ $nav_link_color ? ? 'light-dark(hsl(from var(--main-theme-color) h s calc(l + 10)),hsl(from var(--main-theme-color) h s calc(l - 10)))' }};
-- color - fg : light - dark ( #373636, #ffffff);
-- main - footer - bg - color : light - dark ( #ffffff,#3d4144);
-- main - footer - text - color : light - dark ( #605e5e, #d2d6de);
-- main - footer - top - border - color : light - dark ( #d2d6de,#605e5e);
2025-12-13 13:33:13 +00:00
-- main - theme - color : {{ $snipeSettings -> header_color ? ? '#3c8dbc' }};
-- nav - hover - text - color : {{ $nav_link_color ? ? 'hsl(from var(--main-theme-color) h s calc(l - 10))' }};
-- nav - primary - text - color : {{ $nav_link_color ? ? '#ffffff' }};
2025-12-07 14:13:17 +00:00
-- search - highlight : #e9d15b;
-- sidenav - hover - color - bg : #4c4b4b;
2025-11-26 15:35:43 +00:00
-- sidenav - text - hover - color : #fff;
2025-11-27 14:48:28 +00:00
-- sidenav - text - nohover - color : #b8c7ce;
2025-12-09 16:53:02 +00:00
-- table - border - row - color : light - dark ( #ecf0f5, #656464);
-- table - border - row - top : 1 px solid #ecf0f5;
-- table - border - row : 1 px solid var ( -- table - border - row - color );
-- table - stripe - bg - alt : light - dark ( rgba ( 211 , 211 , 211 , 0.25 ), #323131);
-- table - stripe - bg : light - dark ( #ffffff, #494747);
2025-12-11 20:14:33 +00:00
-- text - danger : light - dark ( #a94442, #fa5b48);
2025-12-13 13:33:13 +00:00
-- text - help : light - dark ( #777676,#a6a4a4);
2025-12-07 14:13:17 +00:00
-- text - info : light - dark ( #31708f,#2baae6);
2025-12-02 13:29:12 +00:00
-- text - success : light - dark ( #039516,#4ced61);
-- text - warning : light - dark ( #da9113,#f3a51f);
2025-11-26 13:50:39 +00:00
}
2025-11-26 00:34:46 +00:00
[ data - theme = " light " ] {
2025-11-28 14:13:19 +00:00
color - scheme : light ;
2025-11-26 00:34:46 +00:00
-- box - bg : #ffffff;
2025-11-26 15:35:43 +00:00
-- box - header - bottom - border - color : #f4f4f4;
-- box - header - bottom - border : 1 px solid var ( -- box - header - bottom - border - color );
-- box - header - top - border - color : #d2d6de;
-- box - header - top - border : 3 px solid var ( -- box - header - top - border - color );
2025-12-02 15:54:18 +00:00
-- btn - theme - base : hsl ( from var ( -- main - theme - color ) h s calc ( l + 5 ));
-- btn - theme - border : hsl ( from var ( -- btn - theme - base ) h s calc ( l + 20 ));
-- btn - theme - hover - text - color : var ( -- nav - primary - text - color );
-- btn - theme - hover : var ( -- main - theme - hover );
2025-11-27 15:56:06 +00:00
-- callout - bg - color : var ( -- box - header - bottom - border - color );
-- callout - left - border : var ( -- box - header - top - border - color );
2025-11-26 00:34:46 +00:00
-- color - bg : #ecf0f5;
-- header - color : #000000;
2025-12-07 14:13:17 +00:00
-- input - group - bg : hsl ( from var ( -- box - bg ) h s calc ( l - 5 ));
-- input - group - fg : hsl ( from var ( -- input - group - bg ) h s calc ( l - 50 ));
2025-12-02 13:29:12 +00:00
-- link - color : {{ $link_light_color ? ? '#296282' }};
2025-11-28 17:33:30 +00:00
-- link - hover : hsl ( from var ( -- link - color ) h s calc ( l - 10 ));
2025-12-02 15:54:18 +00:00
-- main - theme - hover : hsl ( from var ( -- main - theme - color ) h s calc ( l - 10 ));
2025-11-27 14:48:28 +00:00
-- tab - bottom - border : 1 px solid var ( -- box - header - top - border - color );
2025-11-28 14:13:19 +00:00
-- text - legend - help : var ( -- text - help );
2025-11-27 14:48:28 +00:00
2025-11-26 00:34:46 +00:00
}
2018-03-02 17:50:40 -08:00
2025-11-26 00:34:46 +00:00
[ data - theme = " dark " ] {
2025-11-28 14:13:19 +00:00
color - scheme : dark ;
2025-11-26 02:49:40 +00:00
-- box - bg : #3d4144;
2025-11-26 15:35:43 +00:00
-- box - header - bottom - border - color : #605e5e;
-- box - header - bottom - border : 1 px solid var ( -- box - header - bottom - border - color );
-- box - header - top - border - color : #605e5e;
-- box - header - top - border : 3 px solid var ( -- box - header - top - border - color );
2025-12-02 15:54:18 +00:00
-- btn - theme - base : hsl ( from var ( -- main - theme - color ) h s calc ( l + 5 ));
-- btn - theme - border : hsl ( from var ( -- btn - theme - base ) h s calc ( l + 20 ));
-- btn - theme - hover - text - color : var ( -- nav - primary - text - color );
-- btn - theme - hover : var ( -- main - theme - hover );
2025-11-27 15:56:06 +00:00
-- callout - bg - color : var ( -- box - header - top - border - color );
-- callout - left - border : #323131;
2025-11-26 02:49:40 +00:00
-- color - bg : #222222;
2025-11-26 00:34:46 +00:00
-- header - color : #ffffff;
2025-12-07 14:13:17 +00:00
-- input - group - bg : hsl ( from var ( -- box - bg ) h s calc ( l + 10 ));
-- input - group - fg : hsl ( from var ( -- input - group - bg ) h s calc ( l + 50 ));
2025-12-02 13:29:12 +00:00
-- link - color : {{ $link_dark_color ? ? '#5fa4cc' }};
2025-11-28 17:33:30 +00:00
-- link - hover : hsl ( from var ( -- link - color ) h s calc ( l + 15 ));
2025-12-02 15:54:18 +00:00
-- main - theme - hover : hsl ( from var ( -- main - theme - color ) h s calc ( l - 10 ));
2025-11-27 14:48:28 +00:00
-- tab - bottom - border : 1 px solid var ( -- box - header - top - border - color );
2025-11-28 14:13:19 +00:00
-- text - legend - help : #d6d6d6;
2025-12-03 15:55:04 +00:00
2025-11-26 00:34:46 +00:00
}
2016-03-25 01:18:05 -07:00
2025-12-04 17:54:19 +00:00
. label2_fields ,
. l2fd - main ,
. l2fd - listitem
{
background - color : var ( -- box - bg ) ! important ;
color : var ( -- color - fg ) ! important ;
}
2025-11-26 15:35:43 +00:00
2025-12-05 18:06:48 +00:00
footer . main - footer {
color : var ( -- main - footer - text - color ) ! important ;
background - color : var ( -- main - footer - bg - color ) ! important ;
border - top : 1 px solid var ( -- main - footer - top - border - color ) ! important ;
}
2025-11-28 17:48:08 +00:00
a ,
a : link ,
a : visited
{
color : var ( -- link - color );
}
a : hover ,
a : focus
{
2025-11-28 19:04:20 +00:00
color : var ( -- link - hover ) ! important ;
2025-11-28 17:48:08 +00:00
}
2025-12-05 18:35:18 +00:00
. footer - links a {
2025-12-11 20:15:57 +00:00
color : var ( -- link - color ) ! important ;
2025-12-05 18:35:18 +00:00
}
2025-12-02 13:29:12 +00:00
h2 small {
color : var ( -- color - fg ) ! important ;
}
2025-11-28 17:48:08 +00:00
2025-11-28 17:33:30 +00:00
. btn - theme {
background - color : var ( -- btn - theme - base );
2025-12-02 13:29:12 +00:00
/*color: var(--btn-theme-hover-text-color) !important;*/
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-28 17:33:30 +00:00
border : 1 px solid hsl ( from var ( -- btn - theme - base ) h s calc ( l - 15 )) ! important ;
}
. btn - theme : hover {
background - color : var ( -- btn - theme - hover );
2025-12-02 13:29:12 +00:00
/*color: var(--btn-theme-hover-text-color) !important;*/
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-28 17:33:30 +00:00
border : 1 px solid hsl ( from var ( -- btn - theme - base ) h s calc ( l - 15 )) ! important ;
}
2026-01-05 16:05:59 +00:00
. btn - theme : focus {
color : var ( -- nav - primary - text - color ) ! important ;
}
2025-11-29 10:41:58 +00:00
2025-11-28 14:13:19 +00:00
. dropdown - wrapper ,
. js - data - ajax ,
. option ,
. select2 . select2 - container . select2 - container -- default ,
. select2 ,
. select2 - choice ,
. select2 - container ,
. select2 - results__option ,
. select2 - search input ,
. select2 - search -- dropdown ,
. select2 - search__field ,
. select2 - selection . select2 - selection -- single ,
. select2 - selection ,
. select2 - selection -- single ,
2025-11-28 15:16:22 +00:00
. select2 - selection__rendered ,
input [ type = " date " ],
input [ type = " number " ],
2025-11-28 14:13:19 +00:00
input [ type = " text " ],
2025-11-28 15:54:24 +00:00
input [ type = " url " ],
2025-12-03 15:58:50 +00:00
input [ type = " email " ],
2025-12-04 13:21:04 +00:00
input [ type = " password " ],
2026-01-19 16:15:14 +00:00
input [ type = " tel " ],
2025-11-28 15:16:22 +00:00
option : active ,
option [ active ],
2025-11-28 14:13:19 +00:00
option [ selected ],
2025-11-28 15:16:22 +00:00
select option ,
2025-11-28 14:13:19 +00:00
select ,
textarea
{
2025-11-28 19:20:41 +00:00
background - color : var ( -- table - stripe - bg ) ! important ;
2025-11-28 14:13:19 +00:00
color : var ( -- color - fg ) ! important ;
2025-11-28 15:54:24 +00:00
2025-11-28 14:13:19 +00:00
}
2025-11-28 15:16:22 +00:00
. select2 - container -- default . select2 - container -- focus . select2 - selection -- multiple ,
. select2 - container -- default . select2 - search -- dropdown . select2 - search__field {
border - color : hsl ( from var ( -- main - theme - color ) h s calc ( l - 5 )) ! important ;
}
2026-01-05 16:55:53 +00:00
/**
Multiselect maybe ?
*/
. select2 - results__option [ aria - selected = true ]
2025-11-28 14:13:19 +00:00
{
2026-01-05 16:55:53 +00:00
background - color : var ( -- main - theme - color ) ! important ;
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-28 14:13:19 +00:00
}
2026-01-05 16:55:53 +00:00
. select2 - results__option [ aria - selected = false ]
{
background - color : var ( -- table - stripe - bg ) ! important ;
/*background-color: hsl(from var(--main-theme-color) h s calc(l - 15)) !important;*/
/*color: var(--nav-primary-text-color) !important;*/
color : var ( -- color - fg ) ! important ;
}
2025-11-28 15:16:22 +00:00
2025-11-28 14:13:19 +00:00
/**
2026-01-05 16:55:53 +00:00
Highlight the select2 on hover when NOT the selected option
2025-11-28 14:13:19 +00:00
*/
2026-01-05 16:55:53 +00:00
. select2 - results__option -- highlighted [ aria - selected = false ]
{
background - color : hsl ( from var ( -- main - theme - color ) h s calc ( l - 10 )) ! important ;
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-28 14:13:19 +00:00
}
2026-01-05 16:55:53 +00:00
/**
Highlight the select2 on hover when the selected option
*/
. select2 - results__option -- highlighted [ aria - selected = true ],
. select2 - results__option -- highlighted [ aria - selected = true ] : hover ,
. select2 - results__option -- highlighted [ aria - selected = true ] : link ,
. select2 - results__option -- highlighted [ aria - selected = true ] : focus ,
. select2 - results__option -- highlighted [ aria - selected = true ] : visited
{
background - color : hsl ( from var ( -- main - theme - color ) h s calc ( l - 15 )) ! important ;
/*color: var(--color-fg) !important;*/
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-28 15:16:22 +00:00
}
2025-11-28 14:13:19 +00:00
. select2 - selection__choice ,
. select2 - container -- default . select2 - selection -- multiple . select2 - selection__choice
{
background - color : var ( -- main - theme - color ) ! important ;
border - color : hsl ( from var ( -- main - theme - color ) h s calc ( l - 15 )) ! important ;
2026-01-05 16:55:53 +00:00
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-28 14:13:19 +00:00
}
. select2 - selection__choice__remove {
2026-01-05 16:55:53 +00:00
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-28 14:13:19 +00:00
}
. select2 - container -- default . select2 - selection -- multiple . select2 - selection__choice
{
background - color : hsl ( from var ( -- main - theme - color ) h s calc ( l - 5 )) ! important ;
2026-01-05 16:55:53 +00:00
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-28 14:13:19 +00:00
overflow - y : auto ;
}
2026-01-05 16:55:53 +00:00
. input - group - addon {
background - color : var ( -- input - group - bg ) ! important ;
color : var ( -- input - group - fg ) ! important ;
}
2025-11-28 15:54:24 +00:00
input [ type = " text " ] : focus ,
input [ type = " url " ] : focus ,
input [ type = " date " ] : focus ,
2025-12-03 15:58:50 +00:00
input [ type = " email " ] : focus ,
2025-11-28 15:54:24 +00:00
input [ type = " number " ] : focus ,
2025-12-04 13:21:04 +00:00
input [ type = " password " ] : focus ,
2025-11-28 15:54:24 +00:00
textarea : focus
{
border - color : hsl ( from var ( -- main - theme - color ) h s calc ( l - 5 )) ! important ;
}
2025-11-28 14:13:19 +00:00
2026-01-07 15:27:33 +00:00
*: disabled ,
input [ readonly ],
textarea [ readonly ]
{
background - color : light - dark ( rgb ( 234 , 232 , 232 ), rgb ( 117 , 116 , 117 )) ! important ;
border : 1 px solid light - dark ( rgb ( 234 , 232 , 232 ), rgb ( 117 , 116 , 117 )) ! important ;
cursor : not - allowed ! important ;
}
2025-11-28 15:16:22 +00:00
2025-12-02 15:58:34 +00:00
input [ type = " search " ] . search - highlight {
2025-11-27 14:48:28 +00:00
background - color : var ( -- search - highlight );
2025-12-02 15:58:34 +00:00
border : 1 px solid hsl ( from var ( -- search - highlight ) h s calc ( l - 20 )) ! important ;
2025-11-27 14:48:28 +00:00
}
2025-12-02 15:58:34 +00:00
2025-11-26 00:34:46 +00:00
. content - wrapper {
background - color : var ( -- color - bg );
}
2023-04-06 16:19:33 -07:00
2025-11-26 00:34:46 +00:00
. btn - anchor {
outline : none ! important ;
padding : 0 ;
border : 0 ;
padding - left : 20 px ;
vertical - align : baseline ;
cursor : pointer ;
}
2025-12-11 17:45:14 +00:00
h1 ,
h2 ,
h3 ,
h4 ,
p ,
. modal - title ,
. modal - header h2
{
color : var ( -- color - fg ) ! important ;
2025-11-26 00:34:46 +00:00
}
2025-12-03 17:36:39 +00:00
. btn - danger ,
. btn - danger : hover ,
2025-12-04 13:21:04 +00:00
. btn - danger : focus ,
2025-12-03 17:36:39 +00:00
. btn - warning ,
. btn - warning : hover ,
2025-12-04 13:21:04 +00:00
. btn - warning : focus ,
. btn - primary ,
. btn - primary : hover ,
. btn - primary : focus ,
2025-12-03 17:36:39 +00:00
. modal - danger ,
. modal - danger h2 ,
2025-12-12 06:41:06 +00:00
. modal - warning h2 ,
2026-01-16 12:48:28 +00:00
. modal - danger h4 ,
. modal - warning h4 ,
2025-12-06 00:58:32 +00:00
. bg - maroon ,
. bg - maroon : hover ,
. bg - maroon : focus ,
. bg - purple ,
. bg - purple : hover ,
. bg - purple : focus
2025-12-03 17:36:39 +00:00
{
color : white ! important ;
}
2026-01-16 12:48:28 +00:00
2025-12-06 00:58:32 +00:00
. btn - selected ,
. btn - selected a ,
. btn - selected : hover ,
. btn - selected : focus {
2025-12-06 01:08:31 +00:00
color : light - dark ( hsl ( from var ( -- main - theme - color ) h s calc ( l + 30 )), hsl ( from var ( -- main - theme - color ) h s calc ( l + 30 ))) ! important ;
background - color : light - dark ( hsl ( from var ( -- main - theme - color ) h s calc ( l - 20 )), hsl ( from var ( -- main - theme - color ) h s calc ( l - 20 ))) ! important ;
border - color : light - dark ( hsl ( from var ( -- main - theme - color ) h s calc ( l - 25 )), hsl ( from var ( -- main - theme - color ) h s calc ( l - 25 ))) ! important ;
2025-12-06 00:58:32 +00:00
}
2025-12-04 13:21:04 +00:00
. btn - default ,
. btn - default : hover
{
color : #3d4144 !important;
}
2025-12-03 17:36:39 +00:00
2025-12-04 17:54:19 +00:00
body
{
2025-12-04 13:21:04 +00:00
background - color : var ( -- color - bg );
color : var ( -- color - fg );
2025-11-26 15:35:43 +00:00
}
2025-11-26 00:34:46 +00:00
2025-11-28 14:13:19 +00:00
2025-11-26 02:49:40 +00:00
2025-11-26 02:56:05 +00:00
label ,
2025-11-26 04:06:20 +00:00
. icon - med ,
. nav - tabs - custom > . nav - tabs > li > a ,
. nav - tabs - custom > . nav - tabs > li . active > a : link
2025-11-26 02:56:05 +00:00
{
2025-11-26 02:49:40 +00:00
color : var ( -- color - fg );
}
2025-11-26 15:35:43 +00:00
. popover . right . arrow : after
{
2025-11-28 15:54:24 +00:00
border - right - color : var ( -- box - bg ) ! important ;
2025-11-26 15:35:43 +00:00
}
2025-11-27 14:48:28 +00:00
2025-11-26 15:35:43 +00:00
. popover . right . arrow {
2025-11-28 15:54:24 +00:00
border - right - color : var ( -- box - bg ) ! important ;
2025-11-26 02:49:40 +00:00
}
2026-01-05 15:29:50 +00:00
. table - bordered > tbody > tr > td ,
. table - bordered > tbody > tr > th ,
. table - bordered > tfoot > tr > td ,
. table - bordered > tfoot > tr > th ,
. table - bordered > thead > tr > td ,
. table - bordered > thead > tr > td ,
. table - bordered > thead > tr > th ,
. table - bordered > thead > tr > th ,
. table - bordered ,
. well
{
border : 1 px solid var ( -- box - header - top - border - color ) ! important ;
border - left - color : var ( -- box - header - top - border - color ) ! important ;
border - right - color : var ( -- box - header - top - border - color ) ! important ;
}
2025-11-26 02:49:40 +00:00
. box {
border - top : 3 px solid ;
}
. box . box - default {
2025-11-26 15:35:43 +00:00
border - top : var ( -- box - header - top - border );
2025-11-26 02:49:40 +00:00
}
. box - header . with - border {
border - bottom : var ( -- box - header - bottom - border );
2025-11-26 00:34:46 +00:00
}
2025-11-26 15:35:43 +00:00
. box - footer
{
border - top : var ( -- box - header - bottom - border );
}
2025-11-26 04:06:20 +00:00
. nav - tabs - custom > . nav - tabs {
2025-11-27 14:48:28 +00:00
border - bottom : var ( -- tab - bottom - border );
2025-11-26 04:06:20 +00:00
border - top - right - radius : 3 px ;
border - top - left - radius : 3 px ;
2025-11-27 13:30:11 +00:00
padding - bottom : 0 ;
2025-11-26 00:34:46 +00:00
}
2025-11-27 13:30:11 +00:00
. nav - tabs > li > a {
margin - right : 0 ;
border : 0 ;
}
2025-11-26 04:06:20 +00:00
. box ,
. box - footer ,
. tab - content ,
. nav - tabs - custom ,
. nav - tabs - custom > . nav - tabs > li ,
. nav - tabs - custom > . nav - tabs > li : first - of - type ,
. nav - tabs - custom > . nav - tabs > li . active > a : link ,
. nav - tabs - custom > . nav - tabs > li . active > a : visited ,
2025-12-12 05:02:56 +00:00
. nav - tabs - custom > . nav - tabs > li . active > a : hover ,
2026-01-05 15:29:50 +00:00
. bootstrap - table . fullscreen ,
. well
2025-11-26 04:06:20 +00:00
{
2025-11-27 16:15:35 +00:00
2025-11-26 04:06:20 +00:00
color : var ( -- color - fg );
background - color : var ( -- box - bg ) ! important ;
border - left : 1 px solid transparent ;
border - right : 1 px solid transparent ;
}
2025-12-09 16:53:02 +00:00
. panel {
border - color : var ( -- box - header - top - border - color );
}
. panel - body {
background - color : var ( -- box - bg ) ! important ;
}
. panel - heading ,
. panel - default > . panel - heading
{
color : var ( -- color - fg ) ! important ;
background - color : var ( -- table - stripe - bg - alt ) ! important ;
border - color : var ( -- box - header - top - border - color );
}
. panel - footer {
background - color : var ( -- box - bg ) ! important ;
border - color : var ( -- box - header - top - border - color );
}
2025-11-26 04:06:20 +00:00
. nav - tabs - custom > . nav - tabs > li . active
{
2025-11-26 13:50:39 +00:00
border - top - color : var ( -- main - theme - color ) ! important ;
2025-11-27 13:30:11 +00:00
background - color : var ( -- box - header - top - border - color ) ! important ;
2025-11-27 14:48:28 +00:00
border - bottom : 2 px solid var ( -- box - bg ) ! important ;
2025-11-27 13:30:11 +00:00
border - right : 1 px solid var ( -- box - header - top - border - color ) ;
2025-11-26 04:06:20 +00:00
border - top - right - radius : 3 px ;
border - top - left - radius : 3 px ;
}
2025-11-27 13:30:11 +00:00
. nav - tabs - custom > . nav - tabs > li : first - of - type {
border - left : 0 ;
}
2025-11-26 04:06:20 +00:00
2025-11-27 14:48:28 +00:00
/**
This fixes the weird spacing in the nav tabs if there is a badge count on the tab
*/
. badge {
font - size : 11 px ;
}
2025-11-26 00:34:46 +00:00
/**
table rows
*/
2025-11-26 15:35:43 +00:00
. table > thead > tr > th ,
. table > tbody > tr > th ,
. table > tfoot > tr > th ,
. table > thead > tr > td ,
. table > tbody > tr > td ,
. table > tfoot > tr > td
{
2025-12-07 14:10:09 +00:00
border - top : var ( -- table - border - row ) ! important ;
2025-11-26 15:35:43 +00:00
}
2025-11-26 04:06:20 +00:00
. table - striped > tbody > tr : nth - of - type ( even ),
2025-11-27 13:30:11 +00:00
. row - new - striped > . row : nth - of - type ( even ),
. row - new - striped > . div : nth - of - type ( odd ) {
background - color : var ( -- table - stripe - bg ) ! important ;
border - top : var ( -- table - border - row - top ) ! important ;
2025-11-26 00:34:46 +00:00
}
2025-11-26 04:06:20 +00:00
. table - striped > tbody > tr : nth - of - type ( odd ),
2025-11-27 13:30:11 +00:00
. row - new - striped > . row : nth - of - type ( even ),
. row - new - striped > . div : nth - of - type ( odd )
{
background - color : var ( -- table - stripe - bg - alt ) ! important ;
border - top : var ( -- table - border - row - top ) ! important ;
2025-11-26 00:34:46 +00:00
}
2025-12-12 07:14:36 +00:00
2025-11-26 00:34:46 +00:00
/**
main header nav
*/
. dropdown - menu {
2025-11-26 13:50:39 +00:00
background - color : var ( -- main - theme - color );
border - color : var ( -- main - theme - color );
2025-11-26 00:34:46 +00:00
}
. dropdown - menu > li ,
. navbar ,
2025-11-26 02:49:40 +00:00
. navbar - nav ,
2025-12-16 20:02:20 +00:00
. label - default ,
. label - default : hover
2025-11-26 00:34:46 +00:00
{
2025-11-26 13:50:39 +00:00
background - color : var ( -- main - theme - color );
2025-12-02 13:29:12 +00:00
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-26 00:34:46 +00:00
}
2025-12-16 20:02:20 +00:00
2025-11-26 00:34:46 +00:00
. dropdown - menu > li > a : link ,
. dropdown - menu > li > a : visited ,
. dropdown - menu > . active > a : link ,
. dropdown - menu > . active > a : visited ,
. navbar - nav . open > a : link ,
. navbar - nav . open > a : visited ,
. navbar - nav > li > a : link ,
. navbar - nav > li > a : visited
{
2025-11-26 13:50:39 +00:00
background - color : var ( -- main - theme - color );
2025-11-26 00:34:46 +00:00
/*background-color: rgba(0,0,0,.15);*/
2025-12-02 13:29:12 +00:00
color : var ( -- nav - primary - text - color ) ! important ;
/*color: var(--nav-primary-text-color) !important;*/
2025-11-26 00:34:46 +00:00
}
2025-11-28 17:33:30 +00:00
. btn - tableButton . active . focus ,
. btn - tableButton . active : focus ,
. btn - tableButton . active : hover ,
. dropdown - menu > . active > a : focus ,
. dropdown - menu > . active > a : hover ,
2025-11-26 00:34:46 +00:00
. dropdown - menu > . active > a : link ,
. dropdown - menu > . active > a : visited ,
2025-11-28 17:33:30 +00:00
. dropdown - menu > li > a : focus ,
. dropdown - menu > li > a : hover ,
. dropdown - menu > li : focus ,
. dropdown - menu > li : hover ,
2025-11-26 00:34:46 +00:00
. navbar - nav . open li . active > a : focus ,
2025-11-26 02:49:40 +00:00
. navbar - nav . open li . active > a : hover ,
2025-11-28 17:33:30 +00:00
. navbar - nav . open > a : focus ,
. navbar - nav . open > a : hover ,
. navbar - nav > li > a : focus ,
. navbar - nav > li > a : hover ,
. open > . dropdown - toggle . btn - tableButton : focus ,
. open > . dropdown - toggle . btn - tableButton : hover ,
2025-12-02 13:29:12 +00:00
. page - next a ,
. pagination > . active > a : hover ,
. page - item . active ,
2025-12-02 16:44:31 +00:00
. pagination > . active > a ,
2025-12-02 13:29:12 +00:00
. pagination > li > . active > a ,
. pagination > li > . active > a : hover ,
. pagination > li > a : hover
2025-11-26 02:49:40 +00:00
{
2025-12-02 13:29:12 +00:00
background - color : var ( -- main - theme - hover ) ! important ;
border - color : var ( -- btn - theme - hover ) ! important ;
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-28 17:33:30 +00:00
}
2025-12-02 13:29:12 +00:00
. pagination > li > a
{
background - color : var ( -- main - theme - color ) ! important ;
border - color : var ( -- btn - theme - hover ) ! important ;
color : var ( -- nav - primary - text - color ) ! important ;
}
2025-11-28 17:33:30 +00:00
. bootstrap - table . fixed - table - toolbar li . dropdown - item - marker label
{
2025-12-02 13:29:12 +00:00
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-28 17:33:30 +00:00
}
. bootstrap - table . fixed - table - toolbar li . dropdown - item - marker label : hover
{
background - color : var ( -- main - theme - hover ) ! important ;
2025-12-02 13:29:12 +00:00
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-26 00:34:46 +00:00
}
. dropdown - menu ,
. dropdown - menu > li
{
2025-11-28 17:48:08 +00:00
background - color : hsl ( from var ( -- main - theme - color ) h s calc ( l - 5 ));
border - color : hsl ( from var ( -- main - theme - color ) h s calc ( l - 10 ));
2025-12-02 13:29:12 +00:00
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-26 00:34:46 +00:00
}
. main - header . navbar . nav >. active > a {
2025-12-02 14:03:08 +00:00
background - color : hsl ( from var ( -- main - theme - color ) h s calc ( l - 5 )) ! important ;
2025-12-02 13:29:12 +00:00
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-26 00:34:46 +00:00
}
2025-11-26 15:35:43 +00:00
. navbar - nav > . notifications - menu > . dropdown - menu > li . header ,
. navbar - nav > . messages - menu > . dropdown - menu > li . header ,
. navbar - nav > . tasks - menu > . dropdown - menu > li . header ,
. navbar - nav > . notifications - menu > . dropdown - menu > li . menu ,
. navbar - nav > . messages - menu > . dropdown - menu > li . menu , . navbar - nav > . tasks - menu > . dropdown - menu > li . menu ,
. navbar - nav > . messages - menu > . dropdown - menu > li . menu , . navbar - nav > . tasks - menu > . dropdown - menu > li . menu a : hover ,
. navbar - nav > . messages - menu > . dropdown - menu > li . menu , . navbar - nav > . tasks - menu > . dropdown - menu > li : hover ,
. navbar - nav > . tasks - menu > . dropdown - menu > li . menu > li : hover > a ,
. task_menu
{
2025-12-02 14:03:08 +00:00
background - color : hsl ( from var ( -- main - theme - color ) h s calc ( l - 5 )) ! important ;
2025-12-02 13:29:12 +00:00
color : var ( -- nav - primary - text - color ) ! important ;
2025-11-27 14:48:28 +00:00
margin - bottom : 0 ;
2025-11-26 15:35:43 +00:00
}
2025-11-26 00:34:46 +00:00
2025-11-26 15:35:43 +00:00
. navbar - nav > . notifications - menu > . dropdown - menu > li . menu > li > a , . navbar - nav > . messages - menu > . dropdown - menu > li . menu > li > a , . navbar - nav > . tasks - menu > . dropdown - menu > li . menu > li > a {
border - bottom : 1 px solid hsl ( from var ( -- main - theme - color ) h s calc ( l - 10 ));
}
2025-11-26 13:50:39 +00:00
/**
Active and hover for top tier sidenav items
*/
2025-11-26 15:35:43 +00:00
. main - sidebar {
background - color : #1e282c;
}
. sidebar - menu > li . active > a ,
. sidebar - menu > li : hover > a ,
. treeview - menu > li > a
{
color : var ( -- sidenav - text - hover - color ) ! important ;
border - left - color : var ( -- main - theme - color );
}
. sidebar - menu > li : hover > a ,
. sidebar - menu > li . active > a
{
border - left - color : var ( -- main - theme - color );
padding - left : 12 px ;
}
2025-11-26 13:50:39 +00:00
. sidebar - menu > li : hover {
2025-11-26 00:34:46 +00:00
background - color : #2c3b41;
}
2026-01-23 13:49:09 +00:00
. sidebar - menu > li >. treeview - menu
2025-11-26 00:34:46 +00:00
{
background - color : #1e282c;
}
2025-11-26 15:35:43 +00:00
. sidebar - menu > li > a : link ,
. sidebar - menu > li > a : visited ,
. treeview - menu > li > a
{
color : var ( -- sidenav - text - nohover - color ) ! important ;
}
2025-12-04 10:34:58 +00:00
. sidebar - menu > li . active > a ,
. sidebar - menu > li : hover > a
2025-11-26 15:35:43 +00:00
{
2025-11-26 13:50:39 +00:00
background - color : #1e282c;
border - left - color : var ( -- main - theme - color );
2025-11-26 00:34:46 +00:00
border - left - style : solid ;
border - left - width : 3 px ;
2025-11-26 15:35:43 +00:00
color : var ( -- sidenav - text - hover - color ) ! important ;
2025-11-26 00:34:46 +00:00
}
2025-11-26 15:35:43 +00:00
thead ,
tbody ,
. table > thead > tr > th ,
. table > tbody > tr > th ,
. table > tfoot > tr > th ,
. table > thead > tr > td ,
. table > tbody > tr > td ,
2025-12-11 20:14:33 +00:00
. table > tfoot > tr > td
2025-12-03 21:38:53 +00:00
2025-11-27 13:30:11 +00:00
{
2025-11-26 15:35:43 +00:00
border - top - color : var ( -- box - header - bottom - border - color ) ! important ;
border - bottom - color : var ( -- box - header - bottom - border - color ) ! important ;
2025-11-26 02:49:40 +00:00
}
2025-11-27 13:30:11 +00:00
2025-11-26 02:49:40 +00:00
. help - block {
2025-12-13 13:33:13 +00:00
color : var ( -- text - help ) ! important ;
2025-11-26 02:49:40 +00:00
}
2025-11-28 14:13:19 +00:00
. alert - msg ,
. has - error
{
2025-12-04 10:34:58 +00:00
color : var ( -- text - danger ) ! important ;
}
2025-12-11 20:14:33 +00:00
. has - error . form - control {
border - color : var ( -- text - danger );
}
2025-12-04 10:34:58 +00:00
. alert a {
color : white ! important ;
2025-11-26 02:49:40 +00:00
}
2025-11-26 00:34:46 +00:00
2025-11-26 13:50:39 +00:00
. text - dark - gray a : link ,
. text - dark - gray a : hover ,
. text - dark - gray a : visited ,
. text - dark - gray a : focus
{
color : hsl ( from var ( -- main - theme - color ) h s calc ( l - 5 ));
}
2025-11-27 14:48:28 +00:00
. text - warning {
2026-01-07 15:27:33 +00:00
color : var ( -- text - warning ) ! important ;
2025-11-27 14:48:28 +00:00
}
. text - info {
2026-01-07 15:27:33 +00:00
color : var ( -- text - info ) ! important ;
2025-11-27 14:48:28 +00:00
}
. text - primary {
2026-01-07 15:27:33 +00:00
color : var ( -- main - theme - color ) ! important ;
2025-11-27 14:48:28 +00:00
}
. text - danger {
2026-01-07 15:27:33 +00:00
color : var ( -- text - danger ) ! important ;
2025-11-27 14:48:28 +00:00
}
. text - success {
2026-01-07 15:27:33 +00:00
color : var ( -- text - success ) ! important ;
2025-11-27 14:48:28 +00:00
}
2025-11-27 13:30:11 +00:00
. dropdown - menu > . divider {
background - color : hsl ( from var ( -- main - theme - color ) h s calc ( l - 10 ));
margin - top : 0 ;
margin - bottom : 0 ;
padding - top : 1 px ;
}
2025-11-27 14:48:28 +00:00
input [ type = " radio " ] :: before {
2025-11-28 15:54:24 +00:00
box - shadow : inset 1 em 1 em hsl ( from var ( -- main - theme - color ) h s calc ( l - 20 )) ! important ;
2025-11-27 14:48:28 +00:00
}
input [ type = " checkbox " ] :: before {
2025-11-28 15:54:24 +00:00
box - shadow : inset 1 em 1 em hsl ( from var ( -- main - theme - color ) h s calc ( l - 20 )) ! important ;
2025-11-27 14:48:28 +00:00
}
2025-12-12 03:51:20 +00:00
2025-11-27 15:56:06 +00:00
. callout . callout - legend {
background - color : var ( -- callout - bg - color );
border - left : 5 px solid var ( -- callout - left - border );
}
2025-11-28 14:13:19 +00:00
. callout - legend h4 a ,
. callout - legend h4 a : hover
{
2025-11-28 15:16:22 +00:00
color : var ( -- color - fg ) ! important ;
2025-11-27 15:56:06 +00:00
}
2025-11-28 14:13:19 +00:00
p . callout - subtext , p . callout - subtext a : hover , p . callout - subtext a : visited , p . callout - subtext a : link {
color : var ( -- text - legend - help ) ! important ;
text - decoration : none ;
}
2025-11-27 15:56:06 +00:00
legend {
border - bottom : 1 px solid var ( -- callout - left - border );
}
2025-11-26 13:50:39 +00:00
2025-12-02 15:54:18 +00:00
th ,
. fix - sticky table thead {
background - color : var ( -- box - bg );
color : var ( -- color - fg ) ! important ;
}
2025-11-26 00:34:46 +00:00
2025-12-03 19:27:44 +00:00
. datepicker . dropdown - menu th , . datepicker . datepicker - inline th ,
. datepicker . dropdown - menu td ,
. datepicker . datepicker - inline td
{
color : var ( -- color - fg );
border - color : var ( -- color - fg );
background - color : var ( -- box - bg ) ! important ;
}
. datepicker . dropdown - menu th : hover ,
. datepicker . datepicker - inline th : hover ,
. datepicker . dropdown - menu td : hover ,
. datepicker . datepicker - inline td : hover ,
. datepicker table tr td span : hover ,
2025-12-23 13:33:53 +00:00
. datepicker table tr td span . focused ,
. logo : hover
2025-12-03 19:27:44 +00:00
{
background - color : var ( -- main - theme - color ) ! important ;
color : var ( -- nav - primary - text - color ) ! important ;
}
. datepicker . dropdown - menu ,
. modal - content ,
. popover . help - popover ,
. popover . help - popover . popover - content ,
. popover . help - popover . popover - body ,
. popover . help - popover . popover - title ,
. popover . help - popover . popover - header
{
background - color : var ( -- box - bg ) ! important ;
/*color: var(--color-fg) !important;*/
color : contrast - color ( var ( -- box - bg )) ! important ;
}
. treeview - menu > li {
background - color : #2c3b41;
color : var ( -- sidenav - text - nohover - color ) ! important ;
}
. treeview - menu > li > a : hover ,
. treeview - menu > li : hover ,
. treeview - menu > li . active > a
{
color : white ! important ;
background - color : var ( -- sidenav - hover - color - bg ) ! important ;
/*color: var(--sidenav-text-hover-color) !important;*/
}
2025-12-03 21:38:53 +00:00
. sidebar - toggle . btn ,
. sidebar - toggle . btn : hover
{
color : white ! important ;
}
. chart - responsive {
color : var ( -- color - fg ) ! important ;
}
2025-12-07 14:31:47 +00:00
. table > tbody + tbody {
border - top : 0 px ! important ;
}
2025-12-09 23:45:58 +00:00
h4 #progress-text {
color : white ! important ;
}
2025-12-12 07:14:36 +00:00
. small - box h3 , . small - box p {
color : white ! important ;
}
2025-11-26 00:34:46 +00:00
</ style >
2016-03-25 01:18:05 -07:00
2018-09-28 17:09:48 -04:00
{{ -- Custom CSS -- }}
@ if (( $snipeSettings ) && ( $snipeSettings -> custom_css ))
2023-04-06 16:19:33 -07:00
< style >
{ !! $snipeSettings -> show_custom_css () !! }
</ style >
2018-09-28 17:09:48 -04:00
@ endif
2016-03-25 01:18:05 -07:00
2020-04-27 22:41:33 -07:00
2017-09-28 19:45:15 -07:00
< script nonce = " { { csrf_token() }} " >
2023-04-06 16:19:33 -07:00
window . snipeit = {
settings : {
" per_page " : {{ $snipeSettings -> per_page }}
}
};
2017-10-01 15:59:55 -04:00
</ script >
2016-08-30 12:58:08 -07:00
2018-09-28 17:09:48 -04:00
<!-- HTML5 Shim and Respond . js IE8 support of HTML5 elements and media queries -->
2023-04-06 16:19:33 -07:00
< script src = " { { url(asset('js/html5shiv.js')) }} " nonce = " { { csrf_token() }} " ></ script >
< script src = " { { url(asset('js/respond.js')) }} " nonce = " { { csrf_token() }} " ></ script >
2020-04-21 03:30:21 -07:00
2024-05-29 16:04:05 -07:00
2023-04-06 16:19:33 -07:00
</ head >
2021-04-26 17:25:39 -07:00
2025-11-26 00:34:46 +00:00
< body class = " sidebar-mini { { (session('menu_state')!='open') ? ' sidebar-mini sidebar-collapse' : '' }} " >
2018-05-08 00:50:13 -07:00
2023-04-06 16:19:33 -07:00
< a class = " skip-main " href = " #main " > {{ trans ( 'general.skip_to_main_content' ) }} </ a >
< div class = " wrapper " >
2018-05-08 00:50:13 -07:00
2023-04-06 16:19:33 -07:00
< header class = " main-header " >
<!-- Logo -->
<!-- Header Navbar : style can be found in header . less -->
< nav class = " navbar navbar-static-top " role = " navigation " >
<!-- Sidebar toggle button above the compact sidenav -->
< a href = " # " style = " color: white " class = " sidebar-toggle btn btn-white " data - toggle = " push-menu "
role = " button " >
< span class = " sr-only " > {{ trans ( 'general.toggle_navigation' ) }} </ span >
</ a >
< div class = " nav navbar-nav navbar-left " >
< div class = " left-navblock " >
@ if ( $snipeSettings -> brand == '3' )
< a class = " logo navbar-brand no-hover " href = " { { config('app.url') }} " >
@ if ( $snipeSettings -> logo != '' )
< img class = " navbar-brand-img "
src = " { { Storage::disk('public')->url( $snipeSettings->logo ) }} "
alt = " { { $snipeSettings->site_name }} logo " >
@ endif
{{ $snipeSettings -> site_name }}
</ a >
@ elseif ( $snipeSettings -> brand == '2' )
< a class = " logo navbar-brand no-hover " href = " { { config('app.url') }} " >
@ if ( $snipeSettings -> logo != '' )
< img class = " navbar-brand-img "
src = " { { Storage::disk('public')->url( $snipeSettings->logo ) }} "
alt = " { { $snipeSettings->site_name }} logo " >
@ endif
< span class = " sr-only " > {{ $snipeSettings -> site_name }} </ span >
</ a >
@ else
< a class = " logo navbar-brand no-hover " href = " { { config('app.url') }} " >
{{ $snipeSettings -> site_name }}
</ a >
@ endif
</ div >
</ div >
<!-- Navbar Right Menu -->
< div class = " navbar-custom-menu " >
< ul class = " nav navbar-nav " >
@ can ( 'index' , \App\Models\Asset :: class )
2025-08-04 22:25:23 +01:00
< li aria - hidden = " true " { !! ( request () -> is ( 'hardware*' ) ? ' class="active"' : '' ) !! } >
2024-08-13 13:49:13 +01:00
< a href = " { { url('hardware') }} " {{ $snipeSettings -> shortcuts_enabled == 1 ? " accesskey=1 " : '' }} tabindex = " -1 " data - tooltip = " true " data - placement = " bottom " data - title = " { { trans('general.assets') }} " >
2024-08-20 10:01:49 +01:00
< x - icon type = " assets " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span class = " sr-only " > {{ trans ( 'general.assets' ) }} </ span >
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\License :: class )
2025-08-04 22:25:23 +01:00
< li aria - hidden = " true " { !! ( request () -> is ( 'licenses*' ) ? ' class="active"' : '' ) !! } >
2024-08-13 13:49:13 +01:00
< a href = " { { route('licenses.index') }} " {{ $snipeSettings -> shortcuts_enabled == 1 ? " accesskey=2 " : '' }} tabindex = " -1 " data - tooltip = " true " data - placement = " bottom " data - title = " { { trans('general.licenses') }} " >
2024-08-20 10:01:49 +01:00
< x - icon type = " licenses " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span class = " sr-only " > {{ trans ( 'general.licenses' ) }} </ span >
</ a >
</ li >
@ endcan
@ can ( 'index' , \App\Models\Accessory :: class )
2025-08-04 22:25:23 +01:00
< li aria - hidden = " true " { !! ( request () -> is ( 'accessories*' ) ? ' class="active"' : '' ) !! } >
2024-08-13 13:49:13 +01:00
< a href = " { { route('accessories.index') }} " {{ $snipeSettings -> shortcuts_enabled == 1 ? " accesskey=3 " : '' }} tabindex = " -1 " data - tooltip = " true " data - placement = " bottom " data - title = " { { trans('general.accessories') }} " >
2024-08-20 10:01:49 +01:00
< x - icon type = " accessories " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span class = " sr-only " > {{ trans ( 'general.accessories' ) }} </ span >
</ a >
</ li >
@ endcan
@ can ( 'index' , \App\Models\Consumable :: class )
2025-08-04 22:25:23 +01:00
< li aria - hidden = " true " { !! ( request () -> is ( 'consumables*' ) ? ' class="active"' : '' ) !! } >
2024-08-13 13:49:13 +01:00
< a href = " { { url('consumables') }} " {{ $snipeSettings -> shortcuts_enabled == 1 ? " accesskey=4 " : '' }} tabindex = " -1 " data - tooltip = " true " data - placement = " bottom " data - title = " { { trans('general.consumables') }} " >
2024-08-20 10:01:49 +01:00
< x - icon type = " consumables " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span class = " sr-only " > {{ trans ( 'general.consumables' ) }} </ span >
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\Component :: class )
2025-08-04 22:25:23 +01:00
< li aria - hidden = " true " { !! ( request () -> is ( 'components*' ) ? ' class="active"' : '' ) !! } >
2024-08-13 13:49:13 +01:00
< a href = " { { route('components.index') }} " {{ $snipeSettings -> shortcuts_enabled == 1 ? " accesskey=5 " : '' }} tabindex = " -1 " data - tooltip = " true " data - placement = " bottom " data - title = " { { trans('general.components') }} " >
2024-08-20 10:01:49 +01:00
< x - icon type = " components " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span class = " sr-only " > {{ trans ( 'general.components' ) }} </ span >
</ a >
</ li >
@ endcan
@ can ( 'index' , \App\Models\Asset :: class )
< li >
< form class = " navbar-form navbar-left form-horizontal " role = " search "
action = " { { route('findbytag/hardware') }} " method = " get " >
< div class = " col-xs-12 col-md-12 " >
< div class = " col-xs-12 form-group " >
2024-10-09 23:51:20 +01:00
< label class = " sr-only " for = " tagSearch " >
{{ trans ( 'general.lookup_by_tag' ) }}
</ label >
< input type = " text " class = " form-control " id = " tagSearch " name = " assetTag " placeholder = " { { trans('general.lookup_by_tag') }} " >
2023-04-06 16:19:33 -07:00
< input type = " hidden " name = " topsearch " value = " true " id = " search " >
</ div >
< div class = " col-xs-1 " >
2025-11-28 17:33:30 +00:00
< button type = " submit " id = " topSearchButton " class = " btn btn-theme pull-right " >
2024-08-18 17:26:44 +01:00
< x - icon type = " search " />
2023-04-06 16:19:33 -07:00
< span class = " sr-only " > {{ trans ( 'general.search' ) }} </ span >
</ button >
</ div >
</ div >
</ form >
</ li >
@ endcan
@ can ( 'admin' )
2025-11-26 00:34:46 +00:00
< li class = " dropdown user-menu " aria - hidden = " true " >
2023-04-06 16:19:33 -07:00
< a href = " # " class = " dropdown-toggle " data - toggle = " dropdown " tabindex = " -1 " >
{{ trans ( 'general.create' ) }}
< strong class = " caret " ></ strong >
</ a >
< ul class = " dropdown-menu " >
@ can ( 'create' , \App\Models\Asset :: class )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'hardware/create' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('hardware.create') }} " tabindex = " -1 " >
2025-10-01 21:32:28 +01:00
< x - icon type = " assets " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.asset' ) }}
</ a >
</ li >
@ endcan
@ can ( 'create' , \App\Models\License :: class )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'licenses/create' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('licenses.create') }} " tabindex = " -1 " >
2025-10-01 21:32:28 +01:00
< x - icon type = " licenses " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.license' ) }}
</ a >
</ li >
@ endcan
@ can ( 'create' , \App\Models\Accessory :: class )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'accessories/create' ) ? 'class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('accessories.create') }} " tabindex = " -1 " >
2025-10-01 21:32:28 +01:00
< x - icon type = " accessories " class = " fa-fw " />
2024-02-11 18:45:37 +01:00
{{ trans ( 'general.accessory' ) }}
</ a >
2023-04-06 16:19:33 -07:00
</ li >
@ endcan
@ can ( 'create' , \App\Models\Consumable :: class )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'consunmables/create' ) ? 'class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('consumables.create') }} " tabindex = " -1 " >
2025-10-01 21:32:28 +01:00
< x - icon type = " consumables " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.consumable' ) }}
</ a >
</ li >
@ endcan
@ can ( 'create' , \App\Models\Component :: class )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'components/create' ) ? 'class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('components.create') }} " tabindex = " -1 " >
2025-10-01 21:32:28 +01:00
< x - icon type = " components " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.component' ) }}
</ a >
</ li >
@ endcan
@ can ( 'create' , \App\Models\User :: class )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'users/create' ) ? 'class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('users.create') }} " tabindex = " -1 " >
2025-10-01 21:32:28 +01:00
< x - icon type = " users " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.user' ) }}
</ a >
</ li >
@ endcan
</ ul >
</ li >
@ endcan
@ can ( 'admin' )
2025-04-01 11:53:32 -07:00
<!-- Tasks : style can be found in dropdown . less -->
< ? php $alert_items = ( $snipeSettings -> show_alerts_in_menu == '1' ) ? Helper :: checkLowInventory () : [];
2025-05-05 10:28:08 -07:00
$deprecations = Helper :: deprecationCheck ()
?>
2023-04-06 16:19:33 -07:00
2025-04-01 11:53:32 -07:00
< li class = " dropdown tasks-menu " >
< a href = " # " class = " dropdown-toggle " data - toggle = " dropdown " >
< x - icon type = " alerts " />
< span class = " sr-only " > {{ trans ( 'general.alerts' ) }} </ span >
2025-05-05 10:28:08 -07:00
@ if ( count ( $alert_items ) + count ( $deprecations ))
< span class = " label label-danger " > {{ count ( $alert_items ) + count ( $deprecations )}} </ span >
@ endif
2025-04-01 11:53:32 -07:00
</ a >
< ul class = " dropdown-menu " >
2023-04-06 16:19:33 -07:00
2025-07-28 17:50:26 +01:00
@ if (( count ( $alert_items ) + count ( $deprecations )) > 0 )
@ can ( 'superadmin' )
@ if ( $deprecations )
@ foreach ( $deprecations as $key => $deprecation )
@ if ( $deprecation [ 'check' ])
< li class = " header alert-warning " > { !! $deprecation [ 'message' ] !! } </ li >
@ endif
@ endforeach
@ endif
@ endcan
@ if ( $alert_items )
< li class = " header " >
{{ trans_choice ( 'general.quantity_minimum' , count ( $alert_items )) }}
</ li >
< li >
<!-- inner menu : contains the actual data -->
< ul class = " menu " >
@ for ( $i = 0 ; count ( $alert_items ) > $i ; $i ++ )
<!-- Task item -->
< li >
< a href = " { { route( $alert_items[$i] ['type'].'.show', $alert_items[$i] ['id'])}} " >
< h2 class = " task_menu " > {{ $alert_items [ $i ][ 'name' ] }}
< small class = " pull-right " >
{{ $alert_items [ $i ][ 'remaining' ] }} {{ trans ( 'general.remaining' ) }}
</ small >
</ h2 >
< div class = " progress xs " >
< div class = " progress-bar progress-bar-yellow "
style = " width: { { $alert_items[$i] ['percent'] }}% "
role = " progressbar "
aria - valuenow = " { { $alert_items[$i] ['percent'] }} "
2025-11-26 15:35:43 +00:00
aria - valuemin = " 0 "
aria - valuemax = " 100 " >
2025-07-28 17:50:26 +01:00
< span class = " sr-only " >
{{ $alert_items [ $i ][ 'percent' ] }} %
</ span >
</ div >
2023-04-06 16:19:33 -07:00
</ div >
2025-07-28 17:50:26 +01:00
</ a >
</ li >
<!-- end task item -->
@ endfor
</ ul >
</ li >
@ endif
@ else
< li class = " header " >
{{ trans_choice ( 'general.quantity_minimum' , 0 ) }}
2023-04-06 16:19:33 -07:00
</ li >
2025-07-28 17:50:26 +01:00
2025-04-01 11:53:32 -07:00
@ endif
2025-07-28 17:50:26 +01:00
{{ -- < li class = " footer " >-- }}
{{ -- < a href = " # " > {{ trans ( 'general.tasks_view_all' ) }} </ a >-- }}
{{ -- </ li >-- }}
2025-04-01 11:53:32 -07:00
</ ul >
</ li >
@ endcan
2016-03-25 01:18:05 -07:00
2023-04-06 16:19:33 -07:00
<!-- User Account : style can be found in dropdown . less -->
@ if ( Auth :: check ())
< li class = " dropdown user user-menu " >
< a href = " # " class = " dropdown-toggle " data - toggle = " dropdown " >
@ if ( Auth :: user () -> present () -> gravatar ())
< img src = " { { Auth::user()->present()->gravatar() }} " class = " user-image "
alt = " " >
@ else
2024-08-18 17:26:44 +01:00
< x - icon type = " user " />
2023-04-06 16:19:33 -07:00
@ endif
2024-08-18 17:26:44 +01:00
< span class = " hidden-xs " >
2025-08-25 14:57:34 +01:00
{{ Auth :: user () -> display_name }}
2024-08-18 17:26:44 +01:00
< strong class = " caret " ></ strong >
</ span >
2023-04-06 16:19:33 -07:00
</ a >
< ul class = " dropdown-menu " >
<!-- User image -->
2025-12-04 13:21:04 +00:00
@ can ( 'self.profile' )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'account/profile' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('view-assets') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " checkmark " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.viewassets' ) }}
2025-12-04 13:21:04 +00:00
</ a >
</ li >
2023-04-06 16:19:33 -07:00
@ can ( 'viewRequestable' , \App\Models\Asset :: class )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'account/requested' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('account.requested') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " checkmark " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.requested_assets_menu' ) }}
</ a ></ li >
@ endcan
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'account/accept' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('account.accept') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " checkmark " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.accept_assets_menu' ) }}
2025-12-04 13:21:04 +00:00
</ a >
</ li >
2016-03-25 01:18:05 -07:00
2025-12-04 13:21:04 +00:00
@ endcan
2023-04-06 16:19:33 -07:00
< li >
< a href = " { { route('profile') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " user " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.editprofile' ) }}
</ a >
</ li >
2024-06-24 14:01:56 +01:00
2025-12-04 13:21:04 +00:00
@ can ( 'self.profile' )
2025-01-17 18:51:08 +00:00
@ if ( Auth :: user () -> ldap_import != '1' )
2023-04-06 16:19:33 -07:00
< li >
< a href = " { { route('account.password.index') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " password " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.changepassword' ) }}
</ a >
</ li >
2025-01-17 18:51:08 +00:00
@ endif
2025-12-04 13:21:04 +00:00
@ endcan
2023-04-06 16:19:33 -07:00
2025-11-27 13:30:11 +00:00
< li >
2025-12-04 13:21:04 +00:00
< a type = " button " data - theme - toggle aria - label = " Dark mode " class = " btn-link btn-anchor " href = " " onclick = " event.preventDefault(); " >
2025-11-27 13:30:11 +00:00
{{ trans ( 'general.dark_mode' ) }}
</ a >
</ li >
2023-04-06 16:19:33 -07:00
@ can ( 'self.api' )
< li >
< a href = " { { route('user.api') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " api-key " class = " fa-fw " />
{{ trans ( 'general.manage_api_keys' ) }}
2023-04-06 16:19:33 -07:00
</ a >
</ li >
@ endcan
2025-11-27 13:30:11 +00:00
< li class = " divider " ></ li >
2023-04-06 16:19:33 -07:00
< li >
< a href = " { { route('logout.get') }} "
onclick = " event.preventDefault(); document.getElementById('logout-form').submit(); " >
2024-08-18 17:26:44 +01:00
< x - icon type = " logout " class = " fa-fw " />
{{ trans ( 'general.logout' ) }}
2023-04-06 16:19:33 -07:00
</ a >
2025-04-23 04:48:47 +01:00
< form id = " logout-form " action = " { { route('logout.post') }} " method = " POST " style = " display: none; " >
< button type = " submit " style = " display: none; " title = " logout " ></ button >
2023-04-06 16:19:33 -07:00
{{ csrf_field () }}
</ form >
</ li >
</ ul >
</ li >
@ endif
@ can ( 'superadmin' )
< li >
< a href = " { { route('settings.index') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " admin-settings " />
2023-04-06 16:19:33 -07:00
< span class = " sr-only " > {{ trans ( 'general.admin' ) }} </ span >
</ a >
</ li >
@ endcan
</ ul >
</ div >
</ nav >
< a href = " # " style = " float:left " class = " sidebar-toggle-mobile visible-xs btn " data - toggle = " push-menu "
role = " button " >
< span class = " sr-only " > {{ trans ( 'general.toggle_navigation' ) }} </ span >
2024-08-18 17:26:44 +01:00
< x - icon type = " nav-toggle " />
2023-04-06 16:19:33 -07:00
</ a >
<!-- Sidebar toggle button -->
</ header >
<!-- Left side column . contains the logo and sidebar -->
< aside class = " main-sidebar " >
<!-- sidebar : style can be found in sidebar . less -->
< section class = " sidebar " >
<!-- sidebar menu : : style can be found in sidebar . less -->
2024-09-10 11:05:03 -07:00
< ul class = " sidebar-menu " data - widget = " tree " {{ \App\Helpers\Helper :: determineLanguageDirection () == 'rtl' ? 'style="margin-right:12px' : '' }} >
2023-04-06 16:19:33 -07:00
@ can ( 'admin' )
< li { !! ( \Request :: route () -> getName () == 'home' ? ' class="active"' : '' ) !! } class = " firstnav " >
< a href = " { { route('home') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " dashboard " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span > {{ trans ( 'general.dashboard' ) }} </ span >
</ a >
</ li >
@ endcan
@ can ( 'index' , \App\Models\Asset :: class )
2026-01-16 12:48:28 +00:00
< li class = " treeview { { ((request()->is('statuslabels/*') || request()->is(['hardware*', 'maintenances*'])) ? ' active' : '') }} " >
2024-08-18 17:26:44 +01:00
< a href = " # " >
< x - icon type = " assets " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span > {{ trans ( 'general.assets' ) }} </ span >
2024-08-20 10:11:27 +01:00
< x - icon type = " angle-left " class = " pull-right fa-fw " />
2023-04-06 16:19:33 -07:00
</ a >
< ul class = " treeview-menu " >
< li >
< a href = " { { url('hardware') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " circle " class = " text-grey fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.list_all' ) }}
2024-05-02 12:35:41 +01:00
< span class = " badge " >
2024-04-26 14:01:22 +01:00
{{ ( isset ( $total_assets )) ? $total_assets : '' }}
2024-05-02 12:35:41 +01:00
</ span >
2023-04-06 16:19:33 -07:00
</ a >
</ li >
< ? php $status_navs = \App\Models\Statuslabel :: where ( 'show_in_nav' , '=' , 1 ) -> withCount ( 'assets as asset_count' ) -> get (); ?>
@ if ( count ( $status_navs ) > 0 )
@ foreach ( $status_navs as $status_nav )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'statuslabels/' . $status_nav -> id ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('statuslabels.show', ['statuslabel' => $status_nav->id ]) }} " >
< i class = " fas fa-circle text-grey fa-fw "
aria - hidden = " true " { !! ( $status_nav -> color != '' ? ' style="color: ' . e ( $status_nav -> color ) . '"' : '' ) !! } ></ i >
2024-04-26 14:01:22 +01:00
{{ $status_nav -> name }}
2024-05-06 20:34:36 +01:00
< span class = " badge badge-secondary " > {{ $status_nav -> asset_count }} </ span ></ a ></ li >
2023-04-06 16:19:33 -07:00
@ endforeach
@ endif
2025-05-09 17:09:59 +01:00
< li id = " deployed-sidenav-option " { !! ( Request :: query ( 'status' ) == 'Deployed' ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { url('hardware?status=Deployed') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " circle " class = " text-blue fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.deployed' ) }}
2024-05-02 12:35:41 +01:00
< span class = " badge " > {{ ( isset ( $total_deployed_sidebar )) ? $total_deployed_sidebar : '' }} </ span >
2023-04-06 16:19:33 -07:00
</ a >
</ li >
2025-05-09 17:09:59 +01:00
< li id = " rtd-sidenav-option " { !! ( Request :: query ( 'status' ) == 'RTD' ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { url('hardware?status=RTD') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " circle " class = " text-green fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.ready_to_deploy' ) }}
2024-05-02 12:35:41 +01:00
< span class = " badge " > {{ ( isset ( $total_rtd_sidebar )) ? $total_rtd_sidebar : '' }} </ span >
2023-04-06 16:19:33 -07:00
</ a >
</ li >
2025-05-09 17:09:59 +01:00
< li id = " pending-sidenav-option " { !! ( Request :: query ( 'status' ) == 'Pending' ? ' class="active"' : '' ) !! } >< a href = " { { url('hardware?status=Pending') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " circle " class = " text-orange fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.pending' ) }}
2024-05-02 12:35:41 +01:00
< span class = " badge " > {{ ( isset ( $total_pending_sidebar )) ? $total_pending_sidebar : '' }} </ span >
2023-04-06 16:19:33 -07:00
</ a >
</ li >
2025-05-09 17:09:59 +01:00
< li id = " undeployable-sidenav-option " { !! ( Request :: query ( 'status' ) == 'Undeployable' ? ' class="active"' : '' ) !! } >< a
2024-08-18 17:26:44 +01:00
href = " { { url('hardware?status=Undeployable') }} " >
< x - icon type = " x " class = " text-red fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.undeployable' ) }}
2024-05-02 12:35:41 +01:00
< span class = " badge " > {{ ( isset ( $total_undeployable_sidebar )) ? $total_undeployable_sidebar : '' }} </ span >
2023-04-06 16:19:33 -07:00
</ a >
</ li >
2025-05-09 17:09:59 +01:00
< li id = " byod-sidenav-option " { !! ( Request :: query ( 'status' ) == 'byod' ? ' class="active"' : '' ) !! } >< a
2024-08-18 17:26:44 +01:00
href = " { { url('hardware?status=byod') }} " >
< x - icon type = " x " class = " text-red fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.byod' ) }}
2024-05-02 12:35:41 +01:00
< span class = " badge " > {{ ( isset ( $total_byod_sidebar )) ? $total_byod_sidebar : '' }} </ span >
2023-04-06 16:19:33 -07:00
</ a >
</ li >
2025-05-09 17:09:59 +01:00
< li id = " archived-sidenav-option " { !! ( Request :: query ( 'status' ) == 'Archived' ? ' class="active"' : '' ) !! } >< a
2024-08-18 17:26:44 +01:00
href = " { { url('hardware?status=Archived') }} " >
< x - icon type = " x " class = " text-red fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'admin/hardware/general.archived' ) }}
2024-05-02 12:35:41 +01:00
< span class = " badge " > {{ ( isset ( $total_archived_sidebar )) ? $total_archived_sidebar : '' }} </ span >
2023-04-06 16:19:33 -07:00
</ a >
</ li >
2025-05-09 17:09:59 +01:00
< li id = " requestable-sidenav-option " { !! ( Request :: query ( 'status' ) == 'Requestable' ? ' class="active"' : '' ) !! } >< a
2024-08-18 17:26:44 +01:00
href = " { { url('hardware?status=Requestable') }} " >
< x - icon type = " checkmark " class = " text-blue fa-fw " />
2023-04-06 16:19:33 -07:00
{{ trans ( 'admin/hardware/general.requestable' ) }}
</ a >
</ li >
@ can ( 'audit' , \App\Models\Asset :: class )
2025-08-04 22:25:23 +01:00
< li id = " audit-due-sidenav-option " { !! ( request () -> is ( 'hardware/audit/due' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('assets.audit.due') }} " >
2025-04-08 04:15:59 +01:00
< x - icon type = " audit " class = " text-yellow fa-fw " />
2024-08-18 17:26:44 +01:00
{{ trans ( 'general.audit_due' ) }}
2024-05-02 12:35:41 +01:00
< span class = " badge " > {{ ( isset ( $total_due_and_overdue_for_audit )) ? $total_due_and_overdue_for_audit : '' }} </ span >
2023-04-06 16:19:33 -07:00
</ a >
</ li >
2024-04-26 18:58:44 +01:00
@ endcan
@ can ( 'checkin' , \App\Models\Asset :: class )
2025-08-04 22:25:23 +01:00
< li id = " checkin-due-sidenav-option " { !! ( request () -> is ( 'hardware/checkins/due' ) ? ' class="active"' : '' ) !! } >
2024-04-26 18:58:44 +01:00
< a href = " { { route('assets.checkins.due') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " due " class = " text-orange fa-fw " />
{{ trans ( 'general.checkin_due' ) }}
2024-05-02 12:35:41 +01:00
< span class = " badge " > {{ ( isset ( $total_due_and_overdue_for_checkin )) ? $total_due_and_overdue_for_checkin : '' }} </ span >
2024-04-26 18:58:44 +01:00
</ a >
</ li >
2023-04-06 16:19:33 -07:00
@ endcan
< li class = " divider " >& nbsp ; </ li >
@ can ( 'checkin' , \App\Models\Asset :: class )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'hardware/quickscancheckin' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('hardware/quickscancheckin') }} " >
{{ trans ( 'general.quickscan_checkin' ) }}
</ a >
</ li >
@ endcan
@ can ( 'checkout' , \App\Models\Asset :: class )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'hardware/bulkcheckout' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('hardware.bulkcheckout.show') }} " >
{{ trans ( 'general.bulk_checkout' ) }}
</ a >
</ li >
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'hardware/requested' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('assets.requested') }} " >
{{ trans ( 'general.requested' ) }} </ a >
</ li >
@ endcan
@ can ( 'create' , \App\Models\Asset :: class )
2026-01-16 12:48:28 +00:00
< li { !! ( request () -> query ( 'status' ) == 'Deleted' ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { url('hardware?status=Deleted') }} " >
{{ trans ( 'general.deleted' ) }}
</ a >
</ li >
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'maintenances' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('maintenances.index') }} " >
2025-08-11 05:05:00 +01:00
{{ trans ( 'general.maintenances' ) }}
2023-04-06 16:19:33 -07:00
</ a >
</ li >
@ endcan
@ can ( 'admin' )
2025-08-04 22:25:23 +01:00
< li id = " import-history-sidenav-option " { !! ( request () -> is ( 'hardware/history' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { url('hardware/history') }} " >
{{ trans ( 'general.import-history' ) }}
</ a >
</ li >
@ endcan
@ can ( 'audit' , \App\Models\Asset :: class )
2025-08-04 22:25:23 +01:00
< li id = " bulk-audit-sidenav-option " { !! ( request () -> is ( 'hardware/bulkaudit' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('assets.bulkaudit') }} " >
{{ trans ( 'general.bulkaudit' ) }}
</ a >
</ li >
@ endcan
</ ul >
</ li >
@ endcan
@ can ( 'view' , \App\Models\License :: class )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'licenses*' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('licenses.index') }} " >
2024-08-20 10:11:27 +01:00
< x - icon type = " licenses " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span > {{ trans ( 'general.licenses' ) }} </ span >
</ a >
</ li >
@ endcan
@ can ( 'index' , \App\Models\Accessory :: class )
2025-08-04 22:25:23 +01:00
< li id = " accessories-sidenav-option " { !! ( request () -> is ( 'accessories*' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('accessories.index') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " accessories " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span > {{ trans ( 'general.accessories' ) }} </ span >
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\Consumable :: class )
2025-08-04 22:25:23 +01:00
< li id = " consumables-sidenav-option " { !! ( request () -> is ( 'consumables*' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { url('consumables') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " consumables " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span > {{ trans ( 'general.consumables' ) }} </ span >
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\Component :: class )
2025-08-04 22:25:23 +01:00
< li id = " components-sidenav-option " { !! ( request () -> is ( 'components*' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('components.index') }} " >
2024-08-18 17:26:44 +01:00
< x - icon type = " components " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span > {{ trans ( 'general.components' ) }} </ span >
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\PredefinedKit :: class )
2025-08-04 22:25:23 +01:00
< li id = " kits-sidenav-option " { !! ( request () -> is ( 'kits' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('kits.index') }} " >
2024-08-20 10:11:27 +01:00
< x - icon type = " kits " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span > {{ trans ( 'general.kits' ) }} </ span >
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\User :: class )
2025-08-10 17:20:49 +01:00
< li class = " treeview { { (request()->is('users*') ? ' active' : '') }} " id = " users-sidenav-option " >
2025-08-04 22:25:23 +01:00
< a href = " # " {{ $snipeSettings -> shortcuts_enabled == 1 ? " accesskey=6 " : '' }} >
< x - icon type = " users " class = " fa-fw " />
< span > {{ trans ( 'general.people' ) }} </ span >
< x - icon type = " angle-left " class = " pull-right fa-fw " />
</ a >
< ul class = " treeview-menu " >
2025-08-11 20:41:55 +01:00
< li { !! (( request () -> is ( 'users' ) && ( request () -> input () == null )) ? ' class="active"' : '' ) !! } id = " users-sidenav-list-all " >
2025-08-04 22:25:23 +01:00
< a href = " { { route('users.index') }} " >
2025-08-11 20:41:55 +01:00
< x - icon type = " circle " class = " text-grey fa-fw fa-fw " />
2025-08-04 22:25:23 +01:00
{{ trans ( 'general.list_all' ) }}
</ a >
</ li >
2025-08-11 20:41:55 +01:00
< li class = " { { (request()->is('users') && request()->input('superadmins') == " true " ) ? 'active' : '' }} " id = " users-sidenav-superadmins " >
2025-08-04 22:25:23 +01:00
< a href = " { { route('users.index', ['superadmins' => 'true']) }} " >
2025-08-11 20:41:55 +01:00
< x - icon type = " superadmin " class = " text-danger fa-fw " />
2025-08-04 22:25:23 +01:00
{{ trans ( 'general.show_superadmins' ) }}
</ a >
</ li >
2025-08-11 20:41:55 +01:00
< li class = " { { (request()->is('users') && request()->input('admins') == " true " ) ? 'active' : '' }} " id = " users-sidenav-list-admins " >
2025-08-04 22:25:23 +01:00
< a href = " { { route('users.index', ['admins' => 'true']) }} " >
2025-08-11 20:41:55 +01:00
< x - icon type = " admin " class = " text-warning fa-fw " />
2025-08-04 22:25:23 +01:00
{{ trans ( 'general.show_admins' ) }}
</ a >
</ li >
2025-08-11 20:41:55 +01:00
< li class = " { { (request()->is('users') && request()->input('status') == " deleted " ) ? 'active' : '' }} " id = " users-sidenav-deleted " >
2025-08-04 22:25:23 +01:00
< a href = " { { route('users.index', ['status' => 'deleted']) }} " >
2025-08-11 20:41:55 +01:00
< x - icon type = " x " class = " text-danger fa-fw " />
2025-08-04 22:25:23 +01:00
{{ trans ( 'general.deleted_users' ) }}
</ a >
</ li >
2025-08-11 20:41:55 +01:00
< li class = " { { (request()->is('users') && request()->input('activated') == " 1 " ) ? 'active' : '' }} " id = " users-sidenav-activated " >
< a href = " { { route('users.index', ['activated' => true]) }} " >
< i class = " fa-solid fa-person-circle-check text-success fa-fw " ></ i >
{{ trans ( 'general.login_enabled' ) }}
</ a >
</ li >
< li class = " { { (request()->is('users') && request()->input('activated') == " 0 " ) ? 'active' : '' }} " id = " users-sidenav-not-activated " >
< a href = " { { route('users.index', ['activated' => false]) }} " >
< i class = " fa-solid fa-person-circle-xmark text-danger fa-fw " ></ i >
{{ trans ( 'general.login_disabled' ) }}
</ a >
</ li >
2025-08-04 22:25:23 +01:00
</ ul >
</ li >
2023-04-06 16:19:33 -07:00
@ endcan
@ can ( 'import' )
2025-08-04 22:25:23 +01:00
< li id = " import-sidenav-option " { !! ( request () -> is ( 'import*' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('imports.index') }} " >
2024-08-20 10:11:27 +01:00
< x - icon type = " import " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span > {{ trans ( 'general.import' ) }} </ span >
</ a >
</ li >
@ endcan
@ can ( 'backend.interact' )
2026-01-16 12:48:28 +00:00
< li id = " settings-sidenav-option " class = " treeview { !! (request()->is(App \ Helpers \ Helper::SettingUrls()) ? ' active' : '') !!} " >
2023-04-06 16:19:33 -07:00
< a href = " # " id = " settings " >
2024-08-23 15:17:25 +01:00
< x - icon type = " settings " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span > {{ trans ( 'general.settings' ) }} </ span >
2024-08-23 07:27:39 +01:00
< x - icon type = " angle-left " class = " pull-right fa-fw " />
2023-04-06 16:19:33 -07:00
</ a >
< ul class = " treeview-menu " >
@ if ( Gate :: allows ( 'view' , App\Models\CustomField :: class ) || Gate :: allows ( 'view' , App\Models\CustomFieldset :: class ))
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'fields*' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('fields.index') }} " >
{{ trans ( 'admin/custom_fields/general.custom_fields' ) }}
</ a >
</ li >
@ endif
@ can ( 'view' , \App\Models\Statuslabel :: class )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'statuslabels*' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('statuslabels.index') }} " >
{{ trans ( 'general.status_labels' ) }}
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\AssetModel :: class )
2026-01-16 12:48:28 +00:00
< li {{ !! ( request () -> is ( 'models*' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { route('models.index') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.asset_models' ) }}
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\Category :: class )
2026-01-16 12:48:28 +00:00
< li {{ !! ( request () -> is ( 'categories*' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { route('categories.index') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.categories' ) }}
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\Manufacturer :: class )
2026-01-16 12:48:28 +00:00
< li {{ !! ( request () -> is ( 'manufacturers*' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { route('manufacturers.index') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.manufacturers' ) }}
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\Supplier :: class )
2026-01-16 12:48:28 +00:00
< li {{ !! ( request () -> is ( 'suppliers*' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { route('suppliers.index') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.suppliers' ) }}
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\Department :: class )
2026-01-16 12:48:28 +00:00
< li {{ !! ( request () -> is ( 'departments*' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { route('departments.index') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.departments' ) }}
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\Location :: class )
2026-01-16 12:48:28 +00:00
< li {{ !! ( request () -> is ( 'locations*' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { route('locations.index') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.locations' ) }}
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\Company :: class )
2026-01-16 12:48:28 +00:00
< li {{ !! ( request () -> is ( 'companies*' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { route('companies.index') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.companies' ) }}
</ a >
</ li >
@ endcan
@ can ( 'view' , \App\Models\Depreciation :: class )
2026-01-16 12:48:28 +00:00
< li {{ !! ( request () -> is ( 'depreciations*' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { route('depreciations.index') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.depreciation' ) }}
</ a >
</ li >
@ endcan
</ ul >
</ li >
@ endcan
@ can ( 'reports.view' )
2025-08-04 22:25:23 +01:00
< li class = " treeview { { (request()->is('reports*') ? ' active' : '') }} " >
2023-04-06 16:19:33 -07:00
< a href = " # " class = " dropdown-toggle " >
2024-08-20 10:11:27 +01:00
< x - icon type = " reports " class = " fa-fw " />
2023-04-06 16:19:33 -07:00
< span > {{ trans ( 'general.reports' ) }} </ span >
2024-08-18 17:26:44 +01:00
< x - icon type = " angle-left " class = " pull-right " />
2023-04-06 16:19:33 -07:00
</ a >
< ul class = " treeview-menu " >
2025-08-04 22:25:23 +01:00
< li {{ !! ( request () -> is ( 'reports/activity' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { route('reports.activity') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.activity_report' ) }}
</ a >
</ li >
2025-08-04 22:25:23 +01:00
< li {{ !! ( request () -> is ( 'reports/custom' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { url('reports/custom') }} " >
2024-05-25 10:39:47 +01:00
{{ trans ( 'general.custom_report' ) }}
</ a >
</ li >
2025-08-04 22:25:23 +01:00
< li {{ !! ( request () -> is ( 'reports/audit' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { route('reports.audit') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.audit_report' ) }} </ a >
</ li >
2025-08-04 22:25:23 +01:00
< li {{ !! ( request () -> is ( 'reports/depreciation' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { url('reports/depreciation') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.depreciation_report' ) }}
</ a >
</ li >
2025-08-04 22:25:23 +01:00
< li {{ !! ( request () -> is ( 'reports/licenses' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { url('reports/licenses') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.license_report' ) }}
</ a >
</ li >
2025-08-11 05:05:00 +01:00
< li {{ !! ( request () -> is ( 'ui.reports.maintenances' ) ? ' class="active"' : '' ) !! }} >
2025-08-11 06:26:15 +01:00
< a href = " { { route('ui.reports.maintenances') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.asset_maintenance_report' ) }}
</ a >
</ li >
2025-08-04 22:25:23 +01:00
< li {{ !! ( request () -> is ( 'reports/unaccepted_assets' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { url('reports/unaccepted_assets') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.unaccepted_asset_report' ) }}
</ a >
</ li >
2025-08-04 22:25:23 +01:00
< li {{ !! ( request () -> is ( 'reports/accessories' ) ? ' class="active"' : '' ) !! }} >
2025-06-05 18:46:33 -04:00
< a href = " { { url('reports/accessories') }} " >
2023-04-06 16:19:33 -07:00
{{ trans ( 'general.accessory_report' ) }}
</ a >
</ li >
</ ul >
</ li >
@ endcan
@ can ( 'viewRequestable' , \App\Models\Asset :: class )
2025-08-04 22:25:23 +01:00
< li { !! ( request () -> is ( 'account/requestable-assets' ) ? ' class="active"' : '' ) !! } >
2023-04-06 16:19:33 -07:00
< a href = " { { route('requestable-assets') }} " >
2024-08-20 10:11:27 +01:00
< x - icon type = " requestable " class = " fa-fw " />
2024-06-20 15:26:45 +01:00
< span > {{ trans ( 'general.requestable_items' ) }} </ span >
2023-04-06 16:19:33 -07:00
</ a >
</ li >
@ endcan
</ ul >
</ section >
<!-- /. sidebar -->
</ aside >
<!-- Content Wrapper . Contains page content -->
< div class = " content-wrapper " role = " main " id = " setting-list " >
@ if ( $debug_in_production )
< div class = " row " style = " margin-bottom: 0px; background-color: red; color: white; font-size: 15px; " >
< div class = " col-md-12 "
style = " margin-bottom: 0px; background-color: #b50408 ; color: white; padding: 10px 20px 10px 30px; font-size: 16px; " >
2024-08-18 17:26:44 +01:00
< x - icon type = " warning " class = " fa-3x pull-left " />
2023-04-06 16:19:33 -07:00
< strong > {{ strtoupper ( trans ( 'general.debug_warning' )) }} :</ strong >
{ !! trans ( 'general.debug_warning_text' ) !! }
</ div >
</ div >
@ endif
<!-- Content Header ( Page header ) -->
2025-02-19 03:29:31 +00:00
< section class = " content-header " >
2025-02-19 00:37:09 +00:00
< div class = " row " >
2025-02-22 18:19:09 +00:00
< div class = " col-md-12 " style = " margin-bottom: 0px; " >
2025-02-19 00:37:09 +00:00
< style >
. breadcrumb - item {
display : inline ;
list - style : none ;
}
</ style >
2025-02-22 18:19:09 +00:00
< h1 class = " pull-left pagetitle " style = " font-size: 22px; margin-top: 5px; " >
2025-02-19 03:29:31 +00:00
@ if ( Breadcrumbs :: has () && ( Breadcrumbs :: current () -> count () > 1 ))
2025-02-19 14:04:34 +00:00
< ul style = " padding-left: 0; " >
2025-02-19 03:29:31 +00:00
@ foreach ( Breadcrumbs :: current () as $crumbs )
@ if ( $crumbs -> url () && ! $loop -> last )
< li class = " breadcrumb-item " >
< a href = " { { $crumbs->url () }} " >
2025-02-19 14:04:34 +00:00
@ if ( $loop -> first )
2025-05-28 15:12:14 +01:00
< x - icon type = " home " />
2025-02-19 14:04:34 +00:00
@ else
2025-05-28 15:21:23 +01:00
{{ $crumbs -> title () }}
2025-02-19 14:04:34 +00:00
@ endif
</ a >
< x - icon type = " angle-right " />
2025-02-19 03:29:31 +00:00
</ li >
2025-02-19 14:04:34 +00:00
@ elseif ( is_null ( $crumbs -> url ()) && ! $loop -> last )
< li class = " breadcrumb-item active " >
{{ $crumbs -> title () }}
< x - icon type = " angle-right " />
</ li >
@ else
2025-02-19 03:29:31 +00:00
< li class = " breadcrumb-item active " >
2025-02-19 00:37:09 +00:00
{{ $crumbs -> title () }}
2025-02-19 03:29:31 +00:00
</ li >
@ endif
@ endforeach
2025-02-19 14:04:34 +00:00
</ ul >
2025-02-19 03:29:31 +00:00
@ else
2025-02-19 14:04:34 +00:00
@ yield ( 'title' )
2025-02-19 03:29:31 +00:00
@ endif
</ h1 >
@ if ( isset ( $helpText ))
@ include ( 'partials.more-info' ,
[
'helpText' => $helpText ,
'helpPosition' => ( isset ( $helpPosition )) ? $helpPosition : 'left'
])
@ endif
< div class = " pull-right " >
@ yield ( 'header_right' )
</ div >
2025-02-19 00:37:09 +00:00
</ div >
</ div >
2023-04-06 16:19:33 -07:00
</ section >
2025-02-22 18:19:09 +00:00
< section class = " content " id = " main " tabindex = " -1 " style = " padding-top: 0px; " >
2023-04-06 16:19:33 -07:00
<!-- Notifications -->
< div class = " row " >
@ if ( config ( 'app.lock_passwords' ))
< div class = " col-md-12 " >
< div class = " callout callout-info " >
{{ trans ( 'general.some_features_disabled' ) }}
</ div >
</ div >
@ endif
@ include ( 'notifications' )
</ div >
<!-- Content -->
2025-08-04 22:25:23 +01:00
< div id = " { !! (request()->is('*api*') ? 'app' : 'webui') !!} " >
2023-04-06 16:19:33 -07:00
@ yield ( 'content' )
</ div >
</ section >
</ div ><!-- /. content - wrapper -->
2023-04-18 15:20:38 -07:00
< footer class = " main-footer hidden-print " style = " display:grid;flex-direction:column; " >
2023-04-17 21:04:47 -07:00
2025-12-05 18:06:48 +00:00
< div class = " hidden-xs pull-left " >
2025-11-26 02:49:40 +00:00
< div class = " pull-left footer-links " >
2025-06-04 10:37:04 +01:00
{ !! trans ( 'general.footer_credit' ) !! }
2025-12-05 18:35:18 +00:00
< a target = " _blank " href = " https://bsky.app/profile/snipeitapp.com " rel = " noopener " data - tooltip = " true " data - title = " Join us on Bluesky " >
2026-01-16 11:37:57 +00:00
< i class = " fa-brands fa-square-bluesky fa-fw " ></ i >
2025-12-05 18:35:18 +00:00
</ a >
< a target = " _blank " href = " https://hachyderm.io/@grokability " rel = " noopener " data - tooltip = " true " data - title = " Join us on Github " >
2026-01-16 11:37:57 +00:00
< i class = " fa-brands fa-square-github fa-fw " ></ i >
2025-12-05 18:35:18 +00:00
</ a >
< a target = " _blank " href = " https://hachyderm.io/@grokability " rel = " noopener " data - tooltip = " true " data - title = " Join us on Mastodon " >
2026-01-16 11:37:57 +00:00
< i class = " fa-brands fa-mastodon fa-fw " ></ i >
2025-12-05 18:35:18 +00:00
</ a >
< a target = " _blank " href = " https://discord.gg/yZFtShAcKk " rel = " noopener " data - tooltip = " true " data - title = " Join us on Discord " >
2026-01-16 11:37:57 +00:00
< i class = " fa-brands fa-discord fa-fw " ></ i >
2025-12-05 18:35:18 +00:00
</ a >
2023-04-25 11:03:05 -07:00
</ div >
< div class = " pull-right " >
2023-04-06 16:19:33 -07:00
@ if ( $snipeSettings -> version_footer != 'off' )
@ if (( $snipeSettings -> version_footer == 'on' ) || (( $snipeSettings -> version_footer == 'admin' ) && ( Auth :: user () -> isSuperUser () == '1' )))
2025-12-05 18:35:18 +00:00
& nbsp ; {{ trans ( 'general.version' ) }} {{ config ( 'version.app_version' ) }} -
2025-06-04 10:37:04 +01:00
{{ trans ( 'general.build' ) }} {{ config ( 'version.build_version' ) }} ({{ config ( 'version.branch' ) }})
2023-04-06 16:19:33 -07:00
@ endif
@ endif
2025-08-20 14:47:58 +01:00
@ if ( isset ( $user ) && ( $user -> isSuperUser ()) && ( app () -> environment ( 'local' )))
2025-11-26 02:49:40 +00:00
< a href = " { { url('telescope') }} " class = " label label-default " rel = " noopener " > Open Telescope </ a >
2025-08-20 14:43:52 +01:00
@ endif
2023-04-06 16:19:33 -07:00
@ if ( $snipeSettings -> support_footer != 'off' )
@ if (( $snipeSettings -> support_footer == 'on' ) || (( $snipeSettings -> support_footer == 'admin' ) && ( Auth :: user () -> isSuperUser () == '1' )))
2025-11-26 02:49:40 +00:00
< a target = " _blank " class = " label label-default "
2023-04-06 16:19:33 -07:00
href = " https://snipe-it.readme.io/docs/overview "
rel = " noopener " > {{ trans ( 'general.user_manual' ) }} </ a >
2025-11-26 02:49:40 +00:00
< a target = " _blank " class = " label label-default " href = " https://snipeitapp.com/support/ "
2023-04-06 16:19:33 -07:00
rel = " noopener " > {{ trans ( 'general.bug_report' ) }} </ a >
@ endif
@ endif
@ if ( $snipeSettings -> privacy_policy_link != '' )
2025-11-26 02:49:40 +00:00
< a target = " _blank " class = " label label-default " rel = " noopener "
2023-04-06 16:19:33 -07:00
href = " { { $snipeSettings->privacy_policy_link }} "
2023-04-17 21:04:47 -07:00
target = " _new " > {{ trans ( 'admin/settings/general.privacy_policy' ) }} </ a >
2023-04-06 16:19:33 -07:00
@ endif
</ div >
2023-04-18 15:20:38 -07:00
< br >
@ if ( $snipeSettings -> footer_text != '' )
2023-04-25 11:03:05 -07:00
< div class = " pull-left " >
2023-04-18 15:20:38 -07:00
{ !! Helper :: parseEscapedMarkedown ( $snipeSettings -> footer_text ) !! }
</ div >
@ endif
</ div >
2023-04-06 16:19:33 -07:00
</ footer >
</ div ><!-- ./ wrapper -->
<!-- end main container -->
2025-07-30 15:11:12 +01:00
< div class = " modal modal-danger fade " id = " dataConfirmModal " tabindex = " -1 " role = " dialog " aria - labelledby = " dataConfirmModalLabel " aria - hidden = " true " >
2023-04-06 16:19:33 -07:00
< div class = " modal-dialog " >
< div class = " modal-content " >
< div class = " modal-header " >
< button type = " button " class = " close " data - dismiss = " modal " aria - hidden = " true " >& times ; </ button >
2025-12-11 17:45:14 +00:00
< h4 class = " modal-title " id = " dataConfirmModalLabel " >
2025-07-30 15:11:12 +01:00
< span class = " modal-header-icon " ></ span >& nbsp ;
2025-12-11 17:45:14 +00:00
</ h4 >
2023-04-06 16:19:33 -07:00
</ div >
< div class = " modal-body " ></ div >
< div class = " modal-footer " >
2025-07-30 15:11:12 +01:00
< form method = " post " id = " deleteForm " role = " form " action = " " >
2023-04-06 16:19:33 -07:00
{{ csrf_field () }}
{{ method_field ( 'DELETE' ) }}
< button type = " button " class = " btn btn-default pull-left "
data - dismiss = " modal " > {{ trans ( 'general.cancel' ) }} </ button >
< button type = " submit " class = " btn btn-outline "
id = " dataConfirmOK " > {{ trans ( 'general.yes' ) }} </ button >
</ form >
</ div >
2016-03-25 01:18:05 -07:00
</ div >
</ div >
</ div >
2021-11-09 19:38:40 -08:00
2023-04-06 16:19:33 -07:00
< div class = " modal modal-warning fade " id = " restoreConfirmModal " tabindex = " -1 " role = " dialog "
aria - labelledby = " confirmModalLabel " aria - hidden = " true " >
< div class = " modal-dialog " >
< div class = " modal-content " >
< div class = " modal-header " >
< button type = " button " class = " close " data - dismiss = " modal " aria - hidden = " true " >& times ; </ button >
< h4 class = " modal-title " id = " confirmModalLabel " >& nbsp ; </ h4 >
</ div >
< div class = " modal-body " ></ div >
< div class = " modal-footer " >
< form method = " post " id = " restoreForm " role = " form " >
{{ csrf_field () }}
{{ method_field ( 'POST' ) }}
2021-11-09 19:38:40 -08:00
2023-04-06 16:19:33 -07:00
< button type = " button " class = " btn btn-default pull-left "
data - dismiss = " modal " > {{ trans ( 'general.cancel' ) }} </ button >
< button type = " submit " class = " btn btn-outline "
id = " dataConfirmOK " > {{ trans ( 'general.yes' ) }} </ button >
</ form >
</ div >
2021-11-09 19:38:40 -08:00
</ div >
</ div >
</ div >
2024-07-16 18:40:10 +01:00
2023-04-06 16:19:33 -07:00
{{ -- Javascript files -- }}
< script src = " { { url(mix('js/dist/all.js')) }} " nonce = " { { csrf_token() }} " ></ script >
2024-07-16 18:40:10 +01:00
< script src = " { { url('js/select2/i18n/'.Helper::mapBackToLegacyLocale(app()->getLocale()).'.js') }} " ></ script >
2020-08-31 17:17:51 -07:00
2023-04-06 16:19:33 -07:00
{{ -- Page level javascript -- }}
@ stack ( 'js' )
2017-07-08 13:21:13 -07:00
2023-04-06 16:19:33 -07:00
@ section ( 'moar_scripts' )
@ show
2017-01-11 05:51:13 -08:00
2019-02-13 03:56:18 -08:00
2023-04-06 16:19:33 -07:00
< script nonce = " { { csrf_token() }} " >
2020-09-03 16:59:42 -07:00
2025-11-14 17:58:27 +00:00
//color picker with addon
2025-11-28 19:04:20 +00:00
$ ( " .color " ) . colorpicker ();
2025-11-14 17:58:27 +00:00
2025-11-26 00:34:46 +00:00
/**
* Utility function to calculate the current theme setting .
* Look for a local storage value .
* Fall back to system setting .
* Fall back to light mode .
*/
function calculateSettingAsThemeString ({ localStorageTheme , systemSettingDark }) {
if ( localStorageTheme !== null ) {
return localStorageTheme ;
}
if ( systemSettingDark . matches ) {
return " dark " ;
}
return " light " ;
}
/**
* Utility function to update the button text and aria - label .
*/
function updateButton ({ buttonEl , isDark }) {
2025-11-27 13:30:11 +00:00
const newCta = isDark ? '<i class="fa-regular fa-sun fa-fw"></i> {{ trans(' general . light_mode ') }}' : '<i class="fa-solid fa-moon fa-fw"></i> {{ trans(' general . dark_mode ') }}' ;
2025-12-04 13:21:04 +00:00
// use an aria-label if omitting text on the button
2025-11-26 00:34:46 +00:00
// and using a sun/moon icon, for example
buttonEl . setAttribute ( " aria-label " , newCta );
buttonEl . innerHTML = newCta ;
}
/**
* Utility function to update the theme setting on the html tag
*/
function updateThemeOnHtmlEl ({ theme }) {
document . querySelector ( " html " ) . setAttribute ( " data-theme " , theme );
}
/**
* On page load :
*/
/**
* 1. Grab what we need from the DOM and system settings on page load
*/
2025-12-04 13:21:04 +00:00
2025-11-26 00:34:46 +00:00
const button = document . querySelector ( " [data-theme-toggle] " );
const localStorageTheme = localStorage . getItem ( " theme " );
const systemSettingDark = window . matchMedia ( " (prefers-color-scheme: dark) " );
2025-12-04 13:21:04 +00:00
const clearButton = document . querySelector ( " [data-theme-toggle-clear] " );
2025-11-26 00:34:46 +00:00
/**
* 2. Work out the current site settings
*/
let currentThemeSetting = calculateSettingAsThemeString ({ localStorageTheme , systemSettingDark });
/**
2025-12-04 13:21:04 +00:00
* 3. Update the theme setting and button text according to current settings
2025-11-26 00:34:46 +00:00
*/
updateButton ({ buttonEl : button , isDark : currentThemeSetting === " dark " });
updateThemeOnHtmlEl ({ theme : currentThemeSetting });
/**
* 4. Add an event listener to toggle the theme
*/
button . addEventListener ( " click " , ( event ) => {
const newTheme = currentThemeSetting === " dark " ? " light " : " dark " ;
localStorage . setItem ( " theme " , newTheme );
updateButton ({ buttonEl : button , isDark : newTheme === " dark " });
updateThemeOnHtmlEl ({ theme : newTheme });
currentThemeSetting = newTheme ;
});
2025-12-04 13:21:04 +00:00
2025-06-06 11:33:17 +01:00
$ . fn . datepicker . dates [ '{{ app()->getLocale() }}' ] = {
days : [
" { { trans('datepicker.days.sunday') }} " ,
" { { trans('datepicker.days.monday') }} " ,
" { { trans('datepicker.days.tuesday') }} " ,
" { { trans('datepicker.days.wednesday') }} " ,
" { { trans('datepicker.days.thursday') }} " ,
" { { trans('datepicker.days.friday') }} " ,
" { { trans('datepicker.days.saturday') }} "
],
daysShort : [
" { { trans('datepicker.short_days.sunday') }} " ,
" { { trans('datepicker.short_days.monday') }} " ,
" { { trans('datepicker.short_days.tuesday') }} " ,
" { { trans('datepicker.short_days.wednesday') }} " ,
" { { trans('datepicker.short_days.thursday') }} " ,
" { { trans('datepicker.short_days.friday') }} " ,
" { { trans('datepicker.short_days.saturday') }} "
],
daysMin : [
" { { trans('datepicker.min_days.sunday') }} " ,
" { { trans('datepicker.min_days.monday') }} " ,
" { { trans('datepicker.min_days.tuesday') }} " ,
" { { trans('datepicker.min_days.wednesday') }} " ,
" { { trans('datepicker.min_days.thursday') }} " ,
" { { trans('datepicker.min_days.friday') }} " ,
" { { trans('datepicker.min_days.saturday') }} "
],
months : [
" { { trans('datepicker.months.january') }} " ,
" { { trans('datepicker.months.february') }} " ,
" { { trans('datepicker.months.march') }} " ,
" { { trans('datepicker.months.april') }} " ,
" { { trans('datepicker.months.may') }} " ,
" { { trans('datepicker.months.june') }} " ,
" { { trans('datepicker.months.july') }} " ,
" { { trans('datepicker.months.august') }} " ,
" { { trans('datepicker.months.september') }} " ,
" { { trans('datepicker.months.october') }} " ,
" { { trans('datepicker.months.november') }} " ,
" { { trans('datepicker.months.december') }} " ,
],
monthsShort : [
" { { trans('datepicker.months_short.january') }} " ,
" { { trans('datepicker.months_short.february') }} " ,
" { { trans('datepicker.months_short.march') }} " ,
" { { trans('datepicker.months_short.april') }} " ,
" { { trans('datepicker.months_short.may') }} " ,
" { { trans('datepicker.months_short.june') }} " ,
" { { trans('datepicker.months_short.july') }} " ,
" { { trans('datepicker.months_short.august') }} " ,
" { { trans('datepicker.months_short.september') }} " ,
" { { trans('datepicker.months_short.october') }} " ,
" { { trans('datepicker.months_short.november') }} " ,
" { { trans('datepicker.months_short.december') }} " ,
],
today : " { { trans('datepicker.today') }} " ,
clear : " { { trans('datepicker.clear') }} " ,
format : " yyyy-mm-dd " ,
2025-11-13 16:33:08 +00:00
weekStart : {{ $snipeSettings -> week_start ? ? 0 }},
2025-06-06 11:33:17 +01:00
};
2023-09-28 15:06:55 +01:00
var clipboard = new ClipboardJS ( '.js-copy-link' );
clipboard . on ( 'success' , function ( e ) {
2025-11-17 12:15:38 +00:00
e . text = e . text . replace ( /^ \s / , '' ) . trim ();
2024-02-25 14:48:05 +01:00
var clickedElement = $ ( e . trigger );
clickedElement . tooltip ( 'hide' ) . attr ( 'data-original-title' , '{{ trans(' general . copied ') }}' ) . tooltip ( 'show' );
2023-09-28 15:06:55 +01:00
});
2020-09-03 16:59:42 -07:00
2025-11-17 12:15:38 +00:00
2023-11-14 16:30:29 -08:00
// Reference: https://jqueryvalidation.org/validate/
2024-07-16 20:54:48 +01:00
var validator = $ ( '#create-form' ) . validate ({
2023-11-13 18:54:51 -08:00
ignore : 'input[type=hidden]' ,
2024-07-11 16:23:05 +01:00
errorClass : 'alert-msg' ,
2025-10-29 16:11:37 +00:00
errorElement : 'div' ,
2023-11-13 18:54:51 -08:00
errorPlacement : function ( error , element ) {
2025-10-29 16:11:37 +00:00
if ( $ ( element ) . hasClass ( 'select2' ) || $ ( element ) . hasClass ( 'js-data-ajax' )) {
2024-12-11 16:26:23 -08:00
// If the element is a select2 then append the error to the parent div
2025-10-29 16:11:37 +00:00
element . parent ( 'div' ) . append ( error );
} else if ( $ ( element ) . parent () . hasClass ( 'input-group' )) {
var end_input_group = $ ( element ) . next ( '.input-group-addon' ) . parent ();
error . insertAfter ( end_input_group );
} else {
error . insertAfter ( element );
}
2023-11-13 18:54:51 -08:00
},
highlight : function ( inputElement ) {
2025-10-29 16:11:37 +00:00
// We have to go two levels up if it's an input group
if ( $ ( inputElement ) . parent () . hasClass ( 'input-group' )) {
$ ( inputElement ) . parent () . parent () . parent () . addClass ( 'has-error' );
} else {
$ ( inputElement ) . parent () . addClass ( 'has-error' );
$ ( inputElement ) . closest ( '.help-block' ) . remove ();
}
2023-11-13 18:54:51 -08:00
},
2023-11-14 16:30:29 -08:00
onfocusout : function ( element ) {
2025-10-29 16:11:37 +00:00
// We have to go two levels up if it's an input group
if ( $ ( element ) . parent () . hasClass ( 'input-group' )) {
$ ( element ) . parent () . parent () . parent () . removeClass ( 'has-error' );
return $ ( element ) . valid ();
} else {
$ ( element ) . parent () . removeClass ( 'has-error' );
return $ ( element ) . valid ();
}
2023-11-14 16:30:29 -08:00
},
2024-07-16 20:54:48 +01:00
});
$ . extend ( $ . validator . messages , {
required : " { { trans('validation.generic.required') }} " ,
email : " { { trans('validation.generic.email') }} "
2023-04-06 16:19:33 -07:00
});
2018-10-05 00:45:45 -07:00
2020-09-03 16:59:42 -07:00
2024-03-10 15:18:54 +01:00
function showHideEncValue ( e ) {
// Use element id to find the text element to hide / show
var targetElement = e . id + " -to-show " ;
var hiddenElement = e . id + " -to-hide " ;
2024-08-18 20:30:53 +01:00
var audio = new Audio ( '{{ config(' app . url ') }}/sounds/lock.mp3' );
2024-03-10 15:18:54 +01:00
if ( $ ( e ) . hasClass ( 'fa-lock' )) {
2024-08-18 22:39:14 +01:00
@ if (( isset ( $user )) && ( $user -> enable_sounds ))
2024-08-18 20:30:53 +01:00
audio . play ()
@ endif
2024-03-10 15:18:54 +01:00
$ ( e ) . removeClass ( 'fa-lock' ) . addClass ( 'fa-unlock' );
// Show the encrypted custom value and hide the element with asterisks
document . getElementById ( targetElement ) . style . fontSize = " 100% " ;
document . getElementById ( hiddenElement ) . style . display = " none " ;
2024-08-18 20:30:53 +01:00
2024-03-10 15:18:54 +01:00
} else {
2024-08-18 22:39:14 +01:00
@ if (( isset ( $user )) && ( $user -> enable_sounds ))
2024-08-18 20:30:53 +01:00
audio . play ()
@ endif
2024-03-10 15:18:54 +01:00
$ ( e ) . removeClass ( 'fa-unlock' ) . addClass ( 'fa-lock' );
// ClipboardJS can't copy display:none elements so use a trick to hide the value
document . getElementById ( targetElement ) . style . fontSize = " 0px " ;
document . getElementById ( hiddenElement ) . style . display = " " ;
2024-08-18 20:30:53 +01:00
2024-03-10 15:18:54 +01:00
}
}
2023-04-06 16:19:33 -07:00
$ ( function () {
2020-09-03 16:59:42 -07:00
2025-08-04 18:47:26 +01:00
// This handles the show/hide for cloned items
$ ( '#use_cloned_image' ) . click ( function () {
if ( $ ( '#use_cloned_image' ) . is ( ':checked' )) {
$ ( '#image_delete' ) . prop ( 'checked' , false );
$ ( '#image-upload' ) . hide ();
$ ( '#existing-image' ) . show ();
} else {
$ ( '#image-upload' ) . show ();
$ ( '#existing-image' ) . hide ();
}
//$('#image-upload').hide();
});
2023-08-08 18:52:26 +01:00
// Invoke Bootstrap 3's tooltip
$ ( '[data-tooltip="true"]' ) . tooltip ({
container : 'body' ,
animation : true ,
});
2024-02-11 18:45:37 +01:00
2023-04-06 16:19:33 -07:00
$ ( '[data-toggle="popover"]' ) . popover ();
$ ( '.select2 span' ) . addClass ( 'needsclick' );
$ ( '.select2 span' ) . removeAttr ( 'title' );
2020-09-03 16:59:42 -07:00
2023-04-06 16:19:33 -07:00
// This javascript handles saving the state of the menu (expanded or not)
$ ( 'body' ) . bind ( 'expanded.pushMenu' , function () {
$ . ajax ({
type : 'GET' ,
url : " { { route('account.menuprefs', ['state'=>'open']) }} " ,
_token : " { { csrf_token() }} "
});
2020-09-03 16:59:42 -07:00
2023-04-06 16:19:33 -07:00
});
2017-10-25 20:10:41 -07:00
2023-04-06 16:19:33 -07:00
$ ( 'body' ) . bind ( 'collapsed.pushMenu' , function () {
$ . ajax ({
type : 'GET' ,
url : " { { route('account.menuprefs', ['state'=>'close']) }} " ,
_token : " { { csrf_token() }} "
});
2017-10-25 20:10:41 -07:00
});
});
2023-04-06 16:19:33 -07:00
// Initiate the ekko lightbox
$ ( document ) . on ( 'click' , '[data-toggle="lightbox"]' , function ( event ) {
event . preventDefault ();
$ ( this ) . ekkoLightbox ();
2017-10-25 20:10:41 -07:00
});
2024-01-10 11:35:32 -08:00
//This prevents multi-click checkouts for accessories, components, consumables
$ ( document ) . ready ( function () {
$ ( '#checkout_form' ) . submit ( function ( event ) {
event . preventDefault ();
$ ( '#submit_button' ) . prop ( 'disabled' , true );
this . submit ();
});
});
2017-10-25 20:10:41 -07:00
2024-03-31 18:55:58 +02:00
// Select encrypted custom fields to hide them in the asset list
$ ( document ) . ready ( function () {
// Selector for elements with css-padlock class
var selector = 'td.css-padlock' ;
// Function to add original value to elements
function addValue ( $element ) {
// Get original value of the element
var originalValue = $element . text () . trim ();
// Show asterisks only for not empty values
if ( originalValue !== '' ) {
// This is necessary to avoid loop because value is generated dynamically
if ( originalValue !== '' && originalValue !== asterisks ) $element . attr ( 'value' , originalValue );
// Hide the original value and show asterisks of the same length
var asterisks = '*' . repeat ( originalValue . length );
$element . text ( asterisks );
// Add click event to show original text
$element . click ( function () {
var $this = $ ( this );
if ( $this . text () . trim () === asterisks ) {
$this . text ( $this . attr ( 'value' ));
} else {
$this . text ( asterisks );
}
});
}
}
// Add value to existing elements
$ ( selector ) . each ( function () {
addValue ( $ ( this ));
});
// Function to handle mutations in the DOM because content is generated dynamically
var observer = new MutationObserver ( function ( mutations ) {
mutations . forEach ( function ( mutation ) {
// Check if new nodes have been inserted
if ( mutation . type === 'childList' ) {
mutation . addedNodes . forEach ( function ( node ) {
if ( $ ( node ) . is ( selector )) {
addValue ( $ ( node ));
} else {
$ ( node ) . find ( selector ) . each ( function () {
addValue ( $ ( this ));
});
}
});
}
});
});
// Configure the observer to observe changes in the DOM
var config = { childList : true , subtree : true };
observer . observe ( document . body , config );
});
2017-10-25 20:10:41 -07:00
2023-04-06 16:19:33 -07:00
</ script >
2025-10-17 18:25:50 +01:00
@ if (( session () -> get ( 'topsearch' ) == 'true' ) || ( request () -> is ( '/' )))
2023-04-06 16:19:33 -07:00
< script nonce = " { { csrf_token() }} " >
$ ( " #tagSearch " ) . focus ();
</ script >
@ endif
</ body >
2016-03-25 01:18:05 -07:00
</ html >