akaunting 3.0 (the last dance)
This commit is contained in:
89
resources/views/components/layouts/admin.blade.php
Normal file
89
resources/views/components/layouts/admin.blade.php
Normal file
@ -0,0 +1,89 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{{ language()->direction() }}" lang="{{ app()->getLocale() }}">
|
||||
<x-layouts.admin.head>
|
||||
@if (! empty($metaTitle))
|
||||
<x-slot name="metaTitle">
|
||||
{!! !empty($metaTitle->attributes->has('title')) ? $metaTitle->attributes->get('title') : $metaTitle !!}
|
||||
</x-slot>
|
||||
@endif
|
||||
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
</x-layouts.admin.head>
|
||||
|
||||
@mobile
|
||||
<body class="g-sidenav-hidden bg-body overflow-overlay">
|
||||
@elsemobile
|
||||
<body class="g-sidenav-show bg-body overflow-overlay">
|
||||
@endmobile
|
||||
|
||||
@stack('body_start')
|
||||
|
||||
<x-layouts.admin.menu />
|
||||
|
||||
<div class="main-content xl:ltr:ml-64 xl:rtl:mr-64 transition-all ease-in-out" id="panel">
|
||||
<div id="main-body">
|
||||
<div class="container">
|
||||
<x-layouts.admin.header>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
|
||||
@if (!empty($status))
|
||||
<x-slot name="status">
|
||||
{!! $status ?? '' !!}
|
||||
</x-slot>
|
||||
@endif
|
||||
|
||||
@if (!empty($favorite) || (!empty($favorite) && $favorite->attributes->has('title')))
|
||||
@if (! $favorite->attributes->has('title'))
|
||||
<x-slot name="favorite">
|
||||
{!! $favorite ?? '' !!}
|
||||
</x-slot>
|
||||
@else
|
||||
@php
|
||||
$favorite = [
|
||||
'title' => $favorite->attributes->get('title'),
|
||||
'icon' => $favorite->attributes->get('icon'),
|
||||
'route' => !empty($favorite->attributes->has('route')) ? $favorite->attributes->get('route') : '',
|
||||
'url' => !empty($favorite->attributes->has('url')) ? $favorite->attributes->get('url') : '',
|
||||
];
|
||||
@endphp
|
||||
|
||||
<x-slot name="favorite">
|
||||
<x-menu.favorite
|
||||
:title="$favorite['title']"
|
||||
:icon="$favorite['icon']"
|
||||
:route="$favorite['route']"
|
||||
:url="$favorite['url']"
|
||||
/>
|
||||
</x-slot>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<x-slot name="buttons">
|
||||
{!! $buttons ?? '' !!}
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="moreButtons">
|
||||
{!! $moreButtons ?? '' !!}
|
||||
</x-slot>
|
||||
</x-layouts.admin.header>
|
||||
|
||||
<x-layouts.admin.content>
|
||||
<x-layouts.admin.notifications />
|
||||
|
||||
{!! $content !!}
|
||||
</x-layouts.admin.content>
|
||||
|
||||
<x-layouts.admin.footer />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stack('body_end')
|
||||
|
||||
<x-layouts.admin.scripts />
|
||||
</body>
|
||||
</html>
|
15
resources/views/components/layouts/admin/content.blade.php
Normal file
15
resources/views/components/layouts/admin/content.blade.php
Normal file
@ -0,0 +1,15 @@
|
||||
@stack('content_start')
|
||||
<div id="app">
|
||||
@stack('content_content_start')
|
||||
|
||||
{!! $slot !!}
|
||||
|
||||
@stack('content_content_end')
|
||||
|
||||
<notifications></notifications>
|
||||
|
||||
<form id="form-dynamic-component" method="POST" action="#"></form>
|
||||
|
||||
<component v-bind:is="component"></component>
|
||||
</div>
|
||||
@stack('content_end')
|
12
resources/views/components/layouts/admin/footer.blade.php
Normal file
12
resources/views/components/layouts/admin/footer.blade.php
Normal file
@ -0,0 +1,12 @@
|
||||
@stack('footer_start')
|
||||
<footer class="footer">
|
||||
<div class="flex flex-col sm:flex-row items-center justify-between mt-10 lg:mt-20 py-7 text-sm font-light">
|
||||
<div>
|
||||
{{ trans('footer.powered') }}:
|
||||
<a href="{{ trans('footer.link') }}" target="_blank">{{ trans('footer.software') }}</a>
|
||||
<span class="material-icons align-middle text-black-300">code</span>
|
||||
{{ trans('footer.version') }} {{ version('short') }}
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
@stack('footer_end')
|
61
resources/views/components/layouts/admin/head.blade.php
Normal file
61
resources/views/components/layouts/admin/head.blade.php
Normal file
@ -0,0 +1,61 @@
|
||||
@props([
|
||||
'metaTitle', 'title',
|
||||
])
|
||||
|
||||
<head>
|
||||
@stack('head_start')
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; charset=ISO-8859-1"/>
|
||||
|
||||
<title>{!! ! empty($metaTitle) ? $metaTitle : $title !!} - @setting('company.name')</title>
|
||||
|
||||
<base href="{{ config('app.url') . '/' }}">
|
||||
|
||||
<x-layouts.pwa.head />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ asset('public/img/favicon.ico') }}" type="image/png">
|
||||
|
||||
<!--Icons-->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/fonts/material-icons/style.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Font -->
|
||||
<link rel="stylesheet" href="{{ asset('public/vendor/quicksand/css/quicksand.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Css -->
|
||||
<link rel="stylesheet" href="{{ asset('public/css//third_party/swiper-bundle.min.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css//third_party/vue-html-editor.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/element.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/app.css') }}" type="text/css">
|
||||
|
||||
@stack('css')
|
||||
|
||||
@stack('stylesheet')
|
||||
|
||||
@livewireStyles
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
var url = '{{ url("/" . company_id()) }}';
|
||||
var app_url = '{{ config("app.url") }}';
|
||||
var aka_currency = {!! !empty($currency) ? $currency : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
@stack('js')
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
window.Laravel = <?php echo json_encode([
|
||||
'csrfToken' => csrf_token(),
|
||||
]); ?>;
|
||||
|
||||
var flash_notification = {!! (session()->has('flash_notification')) ? json_encode(session()->get('flash_notification')) : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
{{ session()->forget('flash_notification') }}
|
||||
|
||||
@stack('scripts')
|
||||
|
||||
@stack('head_end')
|
||||
</head>
|
37
resources/views/components/layouts/admin/header.blade.php
Normal file
37
resources/views/components/layouts/admin/header.blade.php
Normal file
@ -0,0 +1,37 @@
|
||||
@stack('header_start')
|
||||
|
||||
<div id="header" class="xl:pt-6">
|
||||
<div class="flex flex-col sm:flex-row flex-wrap items-start justify-between hide-empty-page">
|
||||
<div class="w-full sm:w-6/12 items-center mb-3 sm:mb-0">
|
||||
<div class="flex items-center">
|
||||
<h1 class="flex items-center text-2xl xl:text-5xl text-black font-light -ml-0.5">
|
||||
{!! $title !!}
|
||||
|
||||
@yield('dashboard_action')
|
||||
</h1>
|
||||
|
||||
{!! $status ?? '' !!}
|
||||
|
||||
{!! $favorite ?? '' !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-full sm:w-6/12">
|
||||
<div class="flex flex-wrap flex-col sm:flex-row sm:items-center justify-end sm:space-x-2 sm:rtl:space-x-reverse">
|
||||
@stack('header_button_start')
|
||||
|
||||
{!! $buttons !!}
|
||||
|
||||
@stack('header_button_end')
|
||||
|
||||
<x-suggestions />
|
||||
|
||||
@stack('header_suggestion_end')
|
||||
|
||||
{!! $moreButtons !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stack('header_end')
|
231
resources/views/components/layouts/admin/menu.blade.php
Normal file
231
resources/views/components/layouts/admin/menu.blade.php
Normal file
@ -0,0 +1,231 @@
|
||||
@props(['companies'])
|
||||
|
||||
<div class="container flex items-center py-3 mb-4 border-b-2 xl:hidden">
|
||||
<span class="material-icons text-black js-hamburger-menu">menu</span>
|
||||
|
||||
<div class="flex items-center m-auto">
|
||||
<img src="{{ asset('public/img/akaunting-logo-green.svg') }}" class="w-8 m-auto" alt="Akaunting" />
|
||||
<span class="ltr:ml-2 rtl:mr-2">{{ Str::limit(setting('company.name'), 22) }}</span>
|
||||
</div>
|
||||
|
||||
@can('create-banking-transactions')
|
||||
<x-dropdown id="dropdown-mobile-actions">
|
||||
<x-slot name="trigger">
|
||||
<span class="material-icons">more_horiz</span>
|
||||
</x-slot>
|
||||
|
||||
<x-dropdown.link href="{{ route('transactions.create', ['type' => 'income']) }}">
|
||||
{{ trans('general.title.new', ['type' => trans_choice('general.incomes', 1)]) }}
|
||||
</x-dropdown.link>
|
||||
|
||||
<x-dropdown.link href="{{ route('transactions.create', ['type' => 'expense']) }}" kind="primary">
|
||||
{{ trans('general.title.new', ['type' => trans_choice('general.expenses', 1)]) }}
|
||||
</x-dropdown.link>
|
||||
</x-dropdown>
|
||||
@endcan
|
||||
</div>
|
||||
|
||||
@stack('menu_start')
|
||||
|
||||
<div data-real-menu class="w-70 h-screen flex hidden fixed top-0 js-menu z-20 xl:z-10 transition-all ltr:-left-80 rtl:-right-80 xl:ltr:left-0 xl:rtl:right-0">
|
||||
<div class="w-14 py-7 px-1 bg-lilac-900 z-10 menu-scroll overflow-y-auto overflow-x-hidden">
|
||||
<div
|
||||
data-tooltip-target="tooltip-profile"
|
||||
data-tooltip-placement="right"
|
||||
class="flex flex-col items-center justify-center mb-5 cursor-pointer menu-button"
|
||||
data-menu="profile-menu"
|
||||
>
|
||||
<span id="menu-profile-icon-cancel" name="account_circle" class="material-icons-outlined w-8 h-8 flex items-center justify-center text-purple text-2xl hidden">
|
||||
account_circle
|
||||
</span>
|
||||
|
||||
@if (setting('default.use_gravatar', '0') == '1')
|
||||
<img src="{{ user()->picture }}" alt="{{ user()->name }}" class="w-8 h-8 m-auto rounded-full" alt="{{ user()->name }}" title="{{ user()->name }}">
|
||||
@elseif (is_object(user()->picture))
|
||||
<img src="{{ Storage::url(user()->picture->id) }}" class="w-8 h-8 m-auto rounded-full" alt="{{ user()->name }}" title="{{ user()->name }}">
|
||||
@else
|
||||
<span id="menu-profile-icon" name="account_circle" class="material-icons-outlined text-purple w-8 h-8 flex items-center justify-center text-center text-2xl" alt="{{ user()->name }}" title="{{ user()->name }}">
|
||||
account_circle
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div id="tooltip-profile" class="inline-block absolute z-20 py-1 px-2 text-sm font-medium rounded-lg bg-white text-gray-900 w-auto border border-gray-200 shadow-sm whitespace-nowrap tooltip-content opacity-0 invisible">
|
||||
{{ trans('auth.profile') }}
|
||||
<div class="absolute w-2 h-2 before:absolute before:w-2 before:h-2 before:bg-white before:border-gray-200 before:transform before:rotate-45 before:border -left-1 before:border-t-0 before:border-r-0 border-gray-200" data-popper-arrow></div>
|
||||
</div>
|
||||
|
||||
<div class="group flex flex-col items-center justify-center menu-toggle-buttons">
|
||||
@can('read-notifications')
|
||||
<x-tooltip id="tooltip-notifications" placement="right" message="{{ trans_choice('general.notifications', 2) }}">
|
||||
<button type="button"
|
||||
@class([
|
||||
'flex items-center menu-button justify-center w-8 h-8 mb-2.5 relative cursor-pointer js-menu-toggles',
|
||||
'animate-vibrate' => $notification_count,
|
||||
])
|
||||
data-menu="notifications-menu">
|
||||
<span id="menu-notification-icon" name="notifications" class="material-icons-outlined text-purple text-2xl">notifications</span>
|
||||
|
||||
@if ($notification_count)
|
||||
<span data-notification-count class="w-2 h-2 absolute top-2 right-2 inline-flex items-center justify-center p-2.5 text-xs text-white font-bold leading-none transform translate-x-1/2 -translate-y-1/2 bg-orange rounded-full">
|
||||
{{ $notification_count }}
|
||||
</span>
|
||||
@endif
|
||||
</button>
|
||||
</x-tooltip>
|
||||
@endcan
|
||||
|
||||
<x-tooltip id="tooltip-search" placement="right" message="{{ trans('general.search') }}">
|
||||
<button type="button" class="flex items-center menu-button justify-center w-8 h-8 mb-2.5 relative cursor-pointer">
|
||||
<span id="menu-search-icon" name="search" class="material-icons-outlined text-purple text-2xl">search</span>
|
||||
</button>
|
||||
</x-tooltip>
|
||||
|
||||
<x-tooltip id="tooltip-new" placement="right" message="{{ trans('general.new') }}">
|
||||
<button type="button" class="add-item menu-button flex items-center justify-center w-8 h-8 mb-2.5 cursor-pointer js-menu-toggles" data-menu="add-new-menu">
|
||||
<span id="menu-neww-icon" name="add_circle_outline" class="material-icons-outlined text-purple text-2xl">add_circle_outline</span>
|
||||
</button>
|
||||
</x-tooltip>
|
||||
|
||||
<x-tooltip id="tooltip-settings" placement="right" message="{{ trans_choice('general.settings', 2) }}">
|
||||
<button type="button" class="settings-item menu-button flex items-center justify-center w-8 h-8 mb-2.5 cursor-pointer js-menu-toggles" data-menu="settings-menu">
|
||||
<span id="menu-settings-icon" name="settings" class="material-icons-outlined text-purple text-2xl">settings</span>
|
||||
</button>
|
||||
</x-tooltip>
|
||||
|
||||
<x-tooltip id="tooltip-support" placement="right" message="{{ trans('general.help') }}">
|
||||
<a href="{{ url(trans('header.support_link')) }}" target="_blank" class="flex items-center justify-center w-8 h-8 mb-2.5 cursor-pointer js-menu-toggles">
|
||||
<span id="menu-support-icon" class="material-icons-outlined text-purple text-2xl">support</span>
|
||||
</a>
|
||||
</x-tooltip>
|
||||
</div>
|
||||
|
||||
<livewire:menu.favorites />
|
||||
</div>
|
||||
|
||||
<nav class="menu-list js-main-menu" id="sidenav-main">
|
||||
<div class="relative mb-5 cursor-pointer">
|
||||
<button type="button" class="flex items-center" data-dropdown-toggle="dropdown-menu-company">
|
||||
<div class="w-8 h-8 flex items-center justify-center">
|
||||
<img src="{{ asset('public/img/akaunting-logo-green.svg') }}" class="w-6 h-6" alt="Akaunting" />
|
||||
</div>
|
||||
|
||||
<div class="flex ltr:ml-2 rtl:mr-2">
|
||||
<span class="w-28 text-left block text-base truncate">
|
||||
<span class="border-b border-transparent transition-all hover:border-black">
|
||||
{{ Str::limit(setting('company.name'), 22) }}
|
||||
</span>
|
||||
</span>
|
||||
|
||||
@can('read-common-companies')
|
||||
<div class="absolute top-2 ltr:-right-1 rtl:-left-1">
|
||||
<svg class="h-5 w-5 text-gray-400" x-description="Heroicon name: solid/selector" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
||||
<path fill-rule="evenodd" d="M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z" clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</button>
|
||||
|
||||
@can('read-common-companies')
|
||||
<div id="dropdown-menu-company" class="absolute right-0 mt-3 pt-2 bg-white rounded-md shadow-xl z-20 hidden" style="left: auto; min-width: 10rem;">
|
||||
@foreach($companies as $com)
|
||||
<a href="{{ route('companies.switch', $com->id) }}" id="$com->id" class="h-9 leading-9 flex items-center text-sm px-2" role="menuitem" tabindex="-1">
|
||||
<div class="w-full h-full flex items-center rounded-md px-2 hover:bg-lilac-100">
|
||||
<span class="material-icons-outlined text-purple text-xl">business</span>
|
||||
<span class="ltr:pl-2 rtl:pr-2 text-purple text-xs truncate">{{ Str::limit($com->name, 18) }}</span>
|
||||
</div>
|
||||
</a>
|
||||
@endforeach
|
||||
|
||||
@can('update-common-companies')
|
||||
<a href="{{ route('companies.index') }}" class="h-9 leading-9 flex items-center text-sm px-2 mt-2 border-t rounded-bl rounded-br group hover:bg-purple">
|
||||
<div class="w-full h-full flex items-center rounded-md px-2">
|
||||
<span class="material-icons-outlined text-purple text-xl group-hover:text-white">settings</span>
|
||||
<span class="ltr:pl-2 rtl:pr-2 text-purple text-xs truncate group-hover:text-white">
|
||||
{{ trans('general.title.manage', ['type' => trans_choice('general.companies', 2)]) }}
|
||||
</span>
|
||||
</div>
|
||||
</a>
|
||||
@endcan
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
|
||||
<div class="main-menu transform">
|
||||
{!! menu('admin') !!}
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="profile-menu user-menu menu-list fixed h-full ltr:-left-80 rtl:-right-80">
|
||||
<div class="flex h-12.5">
|
||||
@if (setting('default.use_gravatar', '0') == '1')
|
||||
<img src="{{ user()->picture }}" alt="{{ user()->name }}" class="w-8 h-8 rounded-full" alt="{{ user()->name }}" title="{{ user()->name }}">
|
||||
@elseif (is_object(user()->picture))
|
||||
<img src="{{ Storage::url(user()->picture->id) }}" class="w-8 h-8 rounded-full" alt="{{ user()->name }}" title="{{ user()->name }}">
|
||||
@else
|
||||
<span name="account_circle" class="material-icons-outlined w-8 h-8 flex items-center justify-center text-purple text-2xl" alt="{{ user()->name }}" title="{{ user()->name }}">account_circle</span>
|
||||
@endif
|
||||
|
||||
@stack('navbar_profile_welcome')
|
||||
|
||||
<div class="flex flex-col text-black ml-2">
|
||||
<span class="text-xs">{{ trans('general.welcome') }}</span>
|
||||
|
||||
{{ user()->name }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<livewire:menu.profile />
|
||||
</div>
|
||||
|
||||
@can('read-notifications')
|
||||
<div class="notifications-menu user-menu menu-list fixed h-full ltr:-left-80 rtl:-right-80">
|
||||
<div class="flex items-center mb-3">
|
||||
<span name="notifications" class="material-icons-outlined w-8 h-8 flex items-center justify-center text-purple text-2xl">notifications</span>
|
||||
|
||||
<div class="text-black ltr:ml-1 rtl:mr-1">
|
||||
{{ trans_choice('general.your_notifications', 2) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<livewire:menu.notifications />
|
||||
</div>
|
||||
@endcan
|
||||
|
||||
<div class="settings-menu user-menu menu-list fixed h-full overflow-y-unset ltr:-left-80 rtl:-right-80">
|
||||
<div class="flex items-center mb-3">
|
||||
<span name="settings" class="material-icons-outlined w-8 h-8 flex items-center justify-center text-purple text-2xl">settings</span>
|
||||
|
||||
<div class="text-black ltr:ml-1 rtl:mr-1">
|
||||
{{ trans_choice('general.settings', 2) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<livewire:menu.settings />
|
||||
</div>
|
||||
|
||||
<div class="add-new-menu user-menu menu-list fixed h-full ltr:-left-80 rtl:-right-80">
|
||||
<div class="flex items-center mb-3">
|
||||
<span name="add_circle_outline" class="material-icons-outlined w-8 h-8 flex items-center justify-center text-purple text-2xl">add_circle_outline</span>
|
||||
|
||||
<div class="text-black ltr:ml-1 rtl:mr-1">
|
||||
{{ trans('general.new_more') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<livewire:menu.neww />
|
||||
</div>
|
||||
|
||||
<button type="button" class="toggle-button absolute ltr:-right-2 rtl:-left-2 top-8 cursor-pointer transition-opacity ease-in-out z-50">
|
||||
<span class="material-icons text-lg text-purple transform ltr:rotate-90 rtl:-rotate-90">expand_circle_down</span>
|
||||
</button>
|
||||
|
||||
<span data-menu-close id="menu-cancel" class="material-icons absolute ltr:-right-2 rtl:right-12 top-8 text-lg text-purple cursor-pointer z-10 hidden">cancel</span>
|
||||
|
||||
<div class="fixed w-full h-full invisible lg:hidden js-menu-background" style="background-color: rgba(0, 0, 0, 0.5); z-index: -1;"></div>
|
||||
</div>
|
||||
|
||||
<x-loading.menu />
|
||||
|
||||
@stack('menu_end')
|
@ -0,0 +1,3 @@
|
||||
@foreach ($notifications as $notification)
|
||||
{!! $notification !!}
|
||||
@endforeach
|
256
resources/views/components/layouts/admin/scripts.blade.php
Normal file
256
resources/views/components/layouts/admin/scripts.blade.php
Normal file
@ -0,0 +1,256 @@
|
||||
<!-- Core -->
|
||||
<script src="{{ asset('public/vendor/js-cookie/js.cookie.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var company_currency_code = '{{ setting("default.currency") }}';
|
||||
</script>
|
||||
|
||||
@stack('scripts_start')
|
||||
|
||||
@apexchartsScripts
|
||||
|
||||
@stack('charts')
|
||||
|
||||
<!-- <script type="text/javascript" src="{{ asset('public/akaunting-js/hotkeys.js') }}" defer></script> -->
|
||||
<script type="text/javascript" src="{{ asset('public/akaunting-js/generalAction.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('public/akaunting-js/popper.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
"use strict";
|
||||
|
||||
var Layout = (function() {
|
||||
|
||||
const toggleButton = document.querySelector(".toggle-button");
|
||||
const sideBar = document.querySelector(".js-main-menu");
|
||||
const navbarMenu = document.querySelector(".js-menu");
|
||||
const mainContent = document.querySelector(".main-menu");
|
||||
const menus = document.querySelectorAll(".user-menu");
|
||||
const menuButtons = document.querySelectorAll(".menu-button");
|
||||
const detailsEL = mainContent.getElementsByTagName("details");
|
||||
const sectionContent = document.querySelector(".main-content");
|
||||
const menuBackground = document.querySelector(".js-menu-background");
|
||||
const menuClose = document.querySelector("[data-menu-close]");
|
||||
|
||||
if (document.querySelector('[data-menu="notifications-menu"]')) {
|
||||
setTimeout(function() {
|
||||
document.querySelector('[data-menu="notifications-menu"]').classList.remove("animate-vibrate");
|
||||
}, 6000);
|
||||
}
|
||||
|
||||
Array.from(detailsEL).forEach((el) => {
|
||||
el.addEventListener("toggle", function(e) {
|
||||
if (e.target.querySelector(".material-icons-outlined")) {
|
||||
e.target.querySelector(".material-icons").classList.toggle("rotate-180");
|
||||
} else {
|
||||
if (e.target.querySelectorAll(".material-icons")[1]) {
|
||||
e.target.querySelectorAll(".material-icons")[1].classList.toggle("rotate-180");
|
||||
} else {
|
||||
e.target.querySelectorAll(".material-icons")[0].classList.toggle("rotate-180");
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
);
|
||||
|
||||
function contentTransitionLeft() {
|
||||
sectionContent.classList.add("xl:ltr:ml-0", "xl:rtl:mr-0");
|
||||
sectionContent.classList.remove("xl:ltr:ml-64", "xl:rtl:mr-64");
|
||||
toggleButton.querySelector("span").classList.add("ltr:-rotate-90", "rtl:rotate-90");
|
||||
}
|
||||
|
||||
function contentTransitionRight() {
|
||||
sectionContent.classList.remove("xl:ltr:ml-0", "xl:rtl:mr-0");
|
||||
sectionContent.classList.add("xl:ltr:ml-64", "xl:rtl:mr-64");
|
||||
toggleButton.querySelector("span").classList.remove("ltr:-rotate-90", "rtl:rotate-90");
|
||||
}
|
||||
|
||||
function notificationCount(action) {
|
||||
let notification_count = document.querySelector('[data-notification-count]');
|
||||
|
||||
if (notification_count) {
|
||||
notification_count.style = `display: ${action}`
|
||||
}
|
||||
}
|
||||
|
||||
function slideMenu() {
|
||||
if (document.body.clientWidth <= 1280) {
|
||||
mobileMenuHidden();
|
||||
} else {
|
||||
if (sideBar.classList.contains("menu-list-hidden")) {
|
||||
toggleButton.classList.remove("ltr:left-12", "rtl:right-12");
|
||||
sideBar.classList.remove("menu-list-hidden");
|
||||
|
||||
if (document.body.clientWidth > "991") {
|
||||
contentTransitionRight();
|
||||
}
|
||||
} else {
|
||||
sideBar.classList.add("menu-list-hidden");
|
||||
toggleButton.classList.add("ltr:left-12", "rtl:right-12");
|
||||
|
||||
if (document.body.clientWidth > "991") {
|
||||
contentTransitionLeft();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
toggleButton.addEventListener("click", function() {
|
||||
slideMenu();
|
||||
});
|
||||
|
||||
function toggleMenu(iconButton, event) {
|
||||
const menuRef = iconButton.getAttribute("data-menu");
|
||||
const icon = iconButton.children[0].getAttribute("name");
|
||||
|
||||
if (iconButton.getAttribute("data-menu") === "profile-menu") {
|
||||
if (iconButton.children[0].textContent != "cancel") {
|
||||
iconButton.children[0].classList.remove("hidden");
|
||||
iconButton.children[1].classList.add("hidden");
|
||||
} else {
|
||||
iconButton.children[0].classList.add("hidden");
|
||||
iconButton.children[1].classList.remove("hidden");
|
||||
}
|
||||
}
|
||||
|
||||
menuButtons.forEach((button) => {
|
||||
if (icon) {
|
||||
if (button.getAttribute("data-menu") !== menuRef && iconButton.children[0].textContent != "cancel") {
|
||||
button.children[0].textContent = button.children[0].getAttribute("name");
|
||||
button.children[0].classList.remove("active"); // inactive icon
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
menus.forEach((menu) => {
|
||||
if (menu.classList.contains(menuRef) && iconButton.children[0].textContent != "cancel") {
|
||||
iconButton.children[0].textContent = "cancel";
|
||||
iconButton.children[0].classList.add("active");
|
||||
|
||||
menu.classList.remove("ltr:-left-80", "rtl:-right-80");
|
||||
menu.classList.add("ltr:left-14", "rtl:right-14");
|
||||
mainContent.classList.add("hidden");
|
||||
toggleButton.classList.add("invisible");
|
||||
menuClose.classList.remove("hidden");
|
||||
|
||||
notificationCount("none");
|
||||
|
||||
} else if (menu.classList.contains(menuRef) && iconButton.children[0].textContent == "cancel") {
|
||||
iconButton.children[0].textContent = icon;
|
||||
iconButton.children[0].classList.remove("active");
|
||||
|
||||
menu.classList.add("ltr:-left-80", "rtl:-right-80");
|
||||
menu.classList.remove("ltr:left-14", "rtl:right-14");
|
||||
mainContent.classList.remove("hidden");
|
||||
toggleButton.classList.remove("invisible");
|
||||
menuClose.classList.add("hidden");
|
||||
|
||||
notificationCount("flex");
|
||||
|
||||
} else {
|
||||
menu.classList.add("ltr:-left-80", "rtl:-right-80");
|
||||
menu.classList.remove("ltr:left-14", "rtl:right-14");
|
||||
}
|
||||
|
||||
menuClose.addEventListener("click", function() {
|
||||
menu.classList.add("ltr:-left-80", "rtl:-right-80");
|
||||
menu.classList.remove("ltr:left-14", "rtl:right-14");
|
||||
iconButton.children[0].textContent = icon;
|
||||
iconButton.children[0].classList.remove("active");
|
||||
mainContent.classList.remove("hidden");
|
||||
this.classList.add("hidden");
|
||||
toggleButton.classList.remove("invisible");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if (document.body.clientWidth >= 1280) {
|
||||
if (is_profile_menu == 1) {
|
||||
let profile_menu_html = document.querySelector(".profile-menu");
|
||||
let profile_icon_html = document.querySelector("[data-menu='profile-menu']");
|
||||
|
||||
profile_menu_html.classList.add("ltr:left-14", "rtl:right-14");
|
||||
profile_menu_html.classList.remove("ltr:-left-80", "rtl:-right-80");
|
||||
|
||||
profile_icon_html.children[0].textContent = "cancel";
|
||||
profile_icon_html.children[0].classList.add("active");
|
||||
|
||||
profile_icon_html.children[0].classList.remove("hidden");
|
||||
profile_icon_html.children[1].classList.add("hidden");
|
||||
toggleButton.classList.add("invisible");
|
||||
}
|
||||
|
||||
if (is_settings_menu == 1) {
|
||||
let settings_menu_html = document.querySelector(".settings-menu");
|
||||
let settings_icon_html = document.querySelector("[data-menu='settings-menu']");
|
||||
|
||||
settings_menu_html.classList.add("ltr:left-14", "rtl:right-14");
|
||||
settings_menu_html.classList.remove("ltr:-left-80", "rtl:-right-80");
|
||||
|
||||
settings_icon_html.children[0].textContent = "cancel";
|
||||
settings_icon_html.children[0].classList.add("active");
|
||||
toggleButton.classList.add("invisible");
|
||||
}
|
||||
}
|
||||
|
||||
function mobileMenuActive() {
|
||||
navbarMenu.classList.add("ltr:left-0", "rtl:right-0");
|
||||
navbarMenu.classList.remove("ltr:-left-80", "rtl:-right-80");
|
||||
|
||||
menuBackground.classList.add("visible");
|
||||
menuBackground.classList.remove("invisible");
|
||||
}
|
||||
|
||||
function mobileMenuHidden() {
|
||||
navbarMenu.classList.remove("ltr:left-0", "rtl:right-0");
|
||||
navbarMenu.classList.add("ltr:-left-80", "rtl:-right:80");
|
||||
mainContent.classList.remove("hidden");
|
||||
|
||||
menus.forEach((menu) => {
|
||||
menu.classList.remove("ltr:left-14", "rtl:right-14");
|
||||
menu.classList.add("ltr:-left-80", "rtl:-right-80");
|
||||
});
|
||||
|
||||
menuButtons.forEach((iconButton) => {
|
||||
iconButton.children[0].classList.remove("active");
|
||||
iconButton.children[0].textContent = iconButton.children[0].getAttribute("name");
|
||||
});
|
||||
|
||||
menuBackground.classList.remove("visible");
|
||||
menuBackground.classList.add("invisible");
|
||||
}
|
||||
|
||||
document.querySelector(".js-hamburger-menu").addEventListener("click", function() {
|
||||
mobileMenuActive();
|
||||
});
|
||||
|
||||
menuBackground.addEventListener("click", function() {
|
||||
mobileMenuHidden();
|
||||
});
|
||||
|
||||
menuButtons.forEach((iconButton) =>
|
||||
iconButton.addEventListener("click", function() {
|
||||
toggleMenu(iconButton, event);
|
||||
})
|
||||
);
|
||||
})(500);
|
||||
</script>
|
||||
|
||||
@stack('body_css')
|
||||
|
||||
@stack('body_stylesheet')
|
||||
|
||||
@stack('body_js')
|
||||
|
||||
@stack('body_scripts')
|
||||
|
||||
@livewireScripts
|
||||
|
||||
<script src="{{ asset('public/vendor/alpinejs/alpine.min.js') }}"></script>
|
||||
|
||||
<!-- Livewire -->
|
||||
<script type="text/javascript">
|
||||
window.livewire_app_url = {{ company_id() }};
|
||||
</script>
|
||||
|
||||
@stack('scripts_end')
|
35
resources/views/components/layouts/auth.blade.php
Normal file
35
resources/views/components/layouts/auth.blade.php
Normal file
@ -0,0 +1,35 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{{ language()->direction() }}" lang="{{ app()->getLocale() }}">
|
||||
<x-layouts.auth.head>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
</x-layouts.auth.head>
|
||||
|
||||
@mobile
|
||||
<body class="g-sidenav-hidden bg-body overflow-overlay">
|
||||
@elsemobile
|
||||
<body class="g-sidenav-show bg-body overflow-overlay">
|
||||
@endmobile
|
||||
|
||||
@stack('body_start')
|
||||
|
||||
<div id="app" class="bg-no-repeat bg-cover bg-center" style="background-image: url({{ asset('public/img/auth/login-bg.png') }});">
|
||||
<div class="relative w-full lg:max-w-7xl flex items-center m-auto">
|
||||
<x-layouts.auth.slider>
|
||||
{!! $slider ?? '' !!}
|
||||
</x-layouts.auth.slider>
|
||||
|
||||
<x-layouts.auth.content>
|
||||
{!! $content !!}
|
||||
|
||||
<x-layouts.auth.footer />
|
||||
</x-layouts.auth.content>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stack('body_end')
|
||||
|
||||
<x-layouts.auth.scripts />
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,7 @@
|
||||
@stack('content_start')
|
||||
<div class="w-full lg:w-46 h-31 flex flex-col justify-center gap-12 px-6 lg:px-24 py-24 mt-12 lg:mt-0">
|
||||
<div class="flex flex-col gap-4">
|
||||
{!! $slot !!}
|
||||
</div>
|
||||
</div>
|
||||
@stack('content_end')
|
7
resources/views/components/layouts/auth/footer.blade.php
Normal file
7
resources/views/components/layouts/auth/footer.blade.php
Normal file
@ -0,0 +1,7 @@
|
||||
@stack('footer_start')
|
||||
<footer class="footer">
|
||||
<div class="lg:absolute bottom-10 right-6 lg:right-24 flex flex-col sm:flex-row items-center justify-end text-sm font-light">
|
||||
{{ trans('footer.powered') }}: <a href="{{ trans('footer.link') }}" target="_blank">{{ trans('footer.software') }}</a>
|
||||
</div>
|
||||
</footer>
|
||||
@stack('footer_end')
|
58
resources/views/components/layouts/auth/head.blade.php
Normal file
58
resources/views/components/layouts/auth/head.blade.php
Normal file
@ -0,0 +1,58 @@
|
||||
@props([
|
||||
'title',
|
||||
])
|
||||
|
||||
<head>
|
||||
@stack('head_start')
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; charset=ISO-8859-1"/>
|
||||
|
||||
<title>{!! $title !!}</title>
|
||||
|
||||
<base href="{{ config('app.url') . '/' }}">
|
||||
|
||||
<x-layouts.pwa.head />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ asset('public/img/favicon.ico') }}" type="image/png">
|
||||
|
||||
<!--Icons-->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/fonts/material-icons/style.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Font -->
|
||||
<link rel="stylesheet" href="{{ asset('public/vendor/quicksand/css/quicksand.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Css -->
|
||||
<link rel="stylesheet" href="{{ asset('public/css//third_party/swiper-bundle.min.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/app.css') }}" type="text/css">
|
||||
|
||||
@stack('css')
|
||||
|
||||
@stack('stylesheet')
|
||||
|
||||
@livewireStyles
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
var url = '{{ url("/" . company_id()) }}';
|
||||
var app_url = '{{ config("app.url") }}';
|
||||
//--></script>
|
||||
|
||||
@stack('js')
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
window.Laravel = <?php echo json_encode([
|
||||
'csrfToken' => csrf_token(),
|
||||
]); ?>;
|
||||
|
||||
var flash_notification = {!! (session()->has('flash_notification')) ? json_encode(session()->get('flash_notification')) : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
{{ session()->forget('flash_notification') }}
|
||||
|
||||
@stack('scripts')
|
||||
|
||||
@stack('head_end')
|
||||
</head>
|
17
resources/views/components/layouts/auth/scripts.blade.php
Normal file
17
resources/views/components/layouts/auth/scripts.blade.php
Normal file
@ -0,0 +1,17 @@
|
||||
@stack('scripts_start')
|
||||
|
||||
<!-- <script type="text/javascript" src="{{ asset('public/akaunting-js/hotkeys.js') }}" defer></script> -->
|
||||
|
||||
@stack('body_css')
|
||||
|
||||
@stack('body_stylesheet')
|
||||
|
||||
@stack('body_js')
|
||||
|
||||
@stack('body_scripts')
|
||||
|
||||
@livewireScripts
|
||||
|
||||
<script src="{{ asset('public/vendor/alpinejs/alpine.min.js') }}"></script>
|
||||
|
||||
@stack('scripts_end')
|
51
resources/views/components/layouts/auth/slider.blade.php
Normal file
51
resources/views/components/layouts/auth/slider.blade.php
Normal file
@ -0,0 +1,51 @@
|
||||
@stack('slider_start')
|
||||
<div class="hidden lg:block md:w-6/12 h-full flex-col h-fit">
|
||||
<div class="swiper bg-cover bg-bottom bg-no-repeat h-screen py-24">
|
||||
<div class="swiper-container h-full">
|
||||
<div class="swiper-wrapper">
|
||||
<div class="swiper-slide flex justify-center flex-col items-center">
|
||||
<div style="width:450px; height:450px;">
|
||||
<img src="{{ asset('public/img/auth/folder.png') }}" />
|
||||
</div>
|
||||
|
||||
<h1 class="text-3xl text-black-400 font-bold">
|
||||
{{ trans('auth.information.invoice') }}
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="swiper-slide flex justify-center flex-col items-center">
|
||||
<div style="width:450px; height:450px;">
|
||||
<img src="{{ asset('public/img/auth/chart.png') }}" />
|
||||
</div>
|
||||
|
||||
<h1 class="text-3xl text-black-400 font-bold">
|
||||
{{ trans('auth.information.reports') }}
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="swiper-slide flex justify-center flex-col items-center">
|
||||
<div style="width:450px; height:450px;">
|
||||
<img src="{{ asset('public/img/auth/client.png') }}" />
|
||||
</div>
|
||||
|
||||
<h1 class="text-3xl text-black-400 font-bold">
|
||||
{{ trans('auth.information.expense') }}
|
||||
</h1>
|
||||
</div>
|
||||
|
||||
<div class="swiper-slide flex justify-center flex-col items-center">
|
||||
<div style="width:450px; height:450px;">
|
||||
<img src="{{ asset('public/img/auth/layout.png') }}" />
|
||||
</div>
|
||||
|
||||
<h1 class="text-3xl text-black-400 font-bold">
|
||||
{{ trans('auth.information.customize') }}
|
||||
</h1>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="swiper-pagination w-full flex justify-center pb-12 gap-1"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@stack('slider_end')
|
32
resources/views/components/layouts/error.blade.php
Normal file
32
resources/views/components/layouts/error.blade.php
Normal file
@ -0,0 +1,32 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{{ language()->direction() }}" lang="{{ app()->getLocale() }}">
|
||||
<x-layouts.admin.head>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
</x-layouts.admin.head>
|
||||
|
||||
@mobile
|
||||
<body class="g-sidenav-hidden bg-body overflow-overlay">
|
||||
@elsemobile
|
||||
<body class="g-sidenav-show bg-body overflow-overlay">
|
||||
@endmobile
|
||||
|
||||
@stack('body_start')
|
||||
|
||||
<div class="main-content xl:ltr:ml-64 xl:rtl:mr-64 transition-all ease-in-out" id="panel">
|
||||
<div id="main-body">
|
||||
<div class="container">
|
||||
<x-layouts.admin.content>
|
||||
{!! $content !!}
|
||||
</x-layouts.admin.content>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stack('body_end')
|
||||
|
||||
<x-layouts.admin.scripts />
|
||||
</body>
|
||||
</html>
|
34
resources/views/components/layouts/install.blade.php
Normal file
34
resources/views/components/layouts/install.blade.php
Normal file
@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{{ language()->direction() }}" lang="{{ app()->getLocale() }}">
|
||||
<x-layouts.install.head>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
</x-layouts.install.head>
|
||||
|
||||
<body>
|
||||
@stack('body_start')
|
||||
|
||||
<div class="bg-no-repeat bg-cover bg-center" style="background-image: url({{ asset('public/img/auth/login-bg.png') }});">
|
||||
<div class="relative w-full lg:max-w-7xl flex items-center m-auto">
|
||||
<x-layouts.auth.slider>
|
||||
{!! $slider ?? '' !!}
|
||||
</x-layouts.auth.slider>
|
||||
|
||||
<div class="w-full lg:w-46 h-31 flex flex-col justify-center gap-12 px-6 lg:px-24 py-24 mt-12 lg:mt-0">
|
||||
<div class="flex flex-col gap-4">
|
||||
<img src="{{ asset('public/img/akaunting-logo-green.svg') }}" class="w-16 my-3" alt="Akaunting" />
|
||||
|
||||
<x-layouts.install.content :title="$title">
|
||||
{!! $content !!}
|
||||
</x-layouts.install.content>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stack('body_end')
|
||||
|
||||
<x-layouts.install.scripts />
|
||||
</body>
|
||||
</html>
|
50
resources/views/components/layouts/install/content.blade.php
Normal file
50
resources/views/components/layouts/install/content.blade.php
Normal file
@ -0,0 +1,50 @@
|
||||
@stack('content_start')
|
||||
<div id="app">
|
||||
@stack('content_content_start')
|
||||
<x-form id="form-install" :url="url()->current()">
|
||||
|
||||
<div class="card-body">
|
||||
<div class="text-center text-muted mt-2 mb-4">
|
||||
<small>
|
||||
{!! $attributes->get('title') !!}
|
||||
</small>
|
||||
</div>
|
||||
|
||||
@include('flash::message')
|
||||
|
||||
{!! $slot !!}
|
||||
</div>
|
||||
|
||||
<div class="card-footer">
|
||||
<div class="float-right">
|
||||
@if (Request::is('install/requirements'))
|
||||
<a href="{{ route('install.requirements') }}" class="btn btn-success">
|
||||
{{ trans('install.refresh') }}
|
||||
</a>
|
||||
@else
|
||||
<x-button
|
||||
type="submit"
|
||||
id="next-button"
|
||||
::disabled="loading"
|
||||
class="relative flex items-center justify-center bg-green hover:bg-green-700 text-white px-6 py-1.5 text-base rounded-lg disabled:bg-green-100 sm:col-span-6"
|
||||
override="class"
|
||||
data-loading-text="{{ trans('general.loading') }}"
|
||||
>
|
||||
<i v-if="loading" class="submit-spin absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto"></i>
|
||||
<span :class="[{'opacity-0': loading}]">
|
||||
{{ trans('install.next') }}
|
||||
</span>
|
||||
</x-button>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</x-form>
|
||||
@stack('content_content_end')
|
||||
|
||||
<notifications></notifications>
|
||||
|
||||
<form id="form-dynamic-component" method="POST" action="#"></form>
|
||||
|
||||
<component v-bind:is="component"></component>
|
||||
</div>
|
||||
@stack('content_end')
|
59
resources/views/components/layouts/install/head.blade.php
Normal file
59
resources/views/components/layouts/install/head.blade.php
Normal file
@ -0,0 +1,59 @@
|
||||
@props([
|
||||
'title',
|
||||
])
|
||||
|
||||
<head>
|
||||
@stack('head_start')
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; charset=ISO-8859-1"/>
|
||||
|
||||
<title>{!! $title !!} - {{ config('app.name') }}</title>
|
||||
|
||||
<base href="{{ config('app.url') . '/' }}">
|
||||
|
||||
<x-layouts.pwa.head />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ asset('public/img/favicon.ico') }}" type="image/png">
|
||||
|
||||
<!--Icons-->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/fonts/material-icons/style.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Font -->
|
||||
<link rel="stylesheet" href="{{ asset('public/vendor/quicksand/css/quicksand.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Css -->
|
||||
<link rel="stylesheet" href="{{ asset('public/css//third_party/swiper-bundle.min.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/element.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/app.css') }}" type="text/css">
|
||||
|
||||
@stack('css')
|
||||
|
||||
@stack('stylesheet')
|
||||
|
||||
@livewireStyles
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
var url = '{{ url("/") }}';
|
||||
var app_url = '{{ config("app.url") }}';
|
||||
//--></script>
|
||||
|
||||
@stack('js')
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
window.Laravel = <?php echo json_encode([
|
||||
'csrfToken' => csrf_token(),
|
||||
]); ?>;
|
||||
|
||||
var flash_notification = {!! (session()->has('flash_notification')) ? json_encode(session()->get('flash_notification')) : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
{{ session()->forget('flash_notification') }}
|
||||
|
||||
@stack('scripts')
|
||||
|
||||
@stack('head_end')
|
||||
</head>
|
13
resources/views/components/layouts/install/scripts.blade.php
Normal file
13
resources/views/components/layouts/install/scripts.blade.php
Normal file
@ -0,0 +1,13 @@
|
||||
@stack('scripts_start')
|
||||
|
||||
<script src="{{ asset('public/js/install.min.js?v=' . version('short')) }}"></script>
|
||||
|
||||
@stack('body_css')
|
||||
|
||||
@stack('body_stylesheet')
|
||||
|
||||
@stack('body_js')
|
||||
|
||||
@stack('body_scripts')
|
||||
|
||||
@stack('scripts_end')
|
6
resources/views/components/layouts/maintenance.blade.php
Normal file
6
resources/views/components/layouts/maintenance.blade.php
Normal file
@ -0,0 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{{ language()->direction() }}" lang="{{ app()->getLocale() }}">
|
||||
<x-layouts.maintenance.head></x-layouts.maintenance.head>
|
||||
|
||||
<x-layouts.maintenance.body></x-layouts.maintenance.body>
|
||||
</html>
|
@ -0,0 +1,9 @@
|
||||
<div class="max-w-7xl m-auto h-screen flex flex-col sm:flex-row items-center justify-center sm:justify-between">
|
||||
<div class="flex flex-col items-start gap-y-4 mb-10 sm:mb-0 sm:-mt-24">
|
||||
<span class="text-lg">
|
||||
{{ trans('maintenance.message') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<img src="{{ asset('public/img/empty_pages/transactions.png') }}" alt="{{ trans('maintenance.message') }}" />
|
||||
</div>
|
@ -0,0 +1,30 @@
|
||||
<head>
|
||||
@stack('head_start')
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; charset=ISO-8859-1"/>
|
||||
<meta name="robots" content="noindex,nofollow">
|
||||
|
||||
<title>{{ trans('maintenance.title') }}</title>
|
||||
|
||||
<base href="{{ config('app.url') . '/' }}">
|
||||
|
||||
<link rel="stylesheet" href="{{ asset('public/css/fonts/material-icons/style.css') }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/vendor/quicksand/css/quicksand.css') }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/apps.css') }}" type="text/css">
|
||||
|
||||
@stack('css')
|
||||
|
||||
@stack('stylesheet')
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
var url = '{{ url("/" . company_id()) }}';
|
||||
var app_url = '{{ config("app.url") }}';
|
||||
//--></script>
|
||||
|
||||
@stack('js')
|
||||
|
||||
@stack('head_end')
|
||||
</head>
|
76
resources/views/components/layouts/modules.blade.php
Normal file
76
resources/views/components/layouts/modules.blade.php
Normal file
@ -0,0 +1,76 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{{ language()->direction() }}" lang="{{ app()->getLocale() }}">
|
||||
<x-layouts.modules.head>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
</x-layouts.modules.head>
|
||||
|
||||
@mobile
|
||||
<body class="g-sidenav-hidden bg-body overflow-overlay">
|
||||
@elsemobile
|
||||
<body class="g-sidenav-show bg-body overflow-overlay">
|
||||
@endmobile
|
||||
|
||||
@stack('body_start')
|
||||
|
||||
<x-layouts.admin.menu />
|
||||
|
||||
<div class="main-content xl:ltr:ml-64 xl:rtl:mr-64 transition-all ease-in-out" id="panel">
|
||||
<div id="main-body">
|
||||
<div class="container">
|
||||
<x-layouts.admin.header>
|
||||
<div class="flex flex-row justify-items-center align-baseline">
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
|
||||
@if (!empty($favorite) || (!empty($favorite) && $favorite->attributes->has('title')))
|
||||
@if (! $favorite->attributes->has('title'))
|
||||
<x-slot name="favorite">
|
||||
{!! $favorite ?? '' !!}
|
||||
</x-slot>
|
||||
@else
|
||||
<x-menu.favorite
|
||||
title="{!! $favorite->attributes->get('title') !!}"
|
||||
icon="{{ $favorite->attributes->get('icon') }}"
|
||||
|
||||
@if (!empty($favorite->attributes->has('route')))
|
||||
route="{{ $favorite->attributes->get('route') }}"
|
||||
@endif
|
||||
|
||||
@if (!empty($favorite->attributes->has('url')))
|
||||
url="{{ $favorite->attributes->get('url') }}"
|
||||
@endif
|
||||
/>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<x-slot name="buttons">
|
||||
{!! $buttons ?? '' !!}
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="moreButtons">
|
||||
{!! $moreButtons ?? '' !!}
|
||||
</x-slot>
|
||||
</div>
|
||||
</x-layouts.admin.header>
|
||||
|
||||
<x-layouts.admin.content>
|
||||
@if (! $content->attributes->has('withoutBar'))
|
||||
<x-layouts.modules.bar />
|
||||
@endif
|
||||
|
||||
{!! $content !!}
|
||||
</x-layouts.admin.content>
|
||||
|
||||
<x-layouts.admin.footer />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stack('body_end')
|
||||
|
||||
<x-layouts.admin.scripts />
|
||||
</body>
|
||||
</html>
|
107
resources/views/components/layouts/modules/bar.blade.php
Normal file
107
resources/views/components/layouts/modules/bar.blade.php
Normal file
@ -0,0 +1,107 @@
|
||||
<div class="relative w-full flex border-b pt-8 mb-4">
|
||||
<div class="flex flex-row items-center place-center border-r">
|
||||
<button class="flex items-center" id="dropdownButton" data-dropdown-toggle="dropdown">
|
||||
<i class="material-icons w-10 flex items-center aspect-square text-light-gray ltr:pl-2 rtl:pr-2 hover:text-gray-700"> apps_outlined </i>
|
||||
</button>
|
||||
|
||||
<div id="dropdown" data-click-outside-none class="w-full px-0 hidden z-10">
|
||||
<div class="flex flex-col md:flex-row">
|
||||
<div class="w-full lg:w-6/12 flex flex-col shadow-md bg-white px-4 lg:pl-8 py-8 gap-2 rounded-l-xl">
|
||||
<h4 class="capitalize font-thin">
|
||||
{{ trans_choice('general.categories', 1) }}
|
||||
</h4>
|
||||
|
||||
<div class="grid grid-cols-2 gap-2">
|
||||
@foreach ($categories as $slug => $category)
|
||||
<x-link href="{{ $categoryUrl($slug) }}" class="font-semibold text-sm ltr:pr-4 rtl:pl-4 lg:pr-0 truncate bg-transparent" override="class">
|
||||
<span class="border-b border-transparent transition-all hover:border-black">
|
||||
{{ $category }}
|
||||
</span>
|
||||
</x-link>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-full lg:w-6/12 flex flex-col shadow-md bg-purple-lighter px-4 lg:px-12 py-8 gap-2 rounded-r-xl">
|
||||
<h4 class="capitalize font-thin mb-2">
|
||||
{{ trans('modules.popular_this_week') }}
|
||||
</h4>
|
||||
|
||||
@if ($popular)
|
||||
<div class="flex flex-col gap-4">
|
||||
@foreach ($popular->data as $item)
|
||||
<div class="hover:shadow-2xl rounded-lg">
|
||||
<a href="{{ route('apps.app.show', $item->slug) }}" class="flex items-center p-2">
|
||||
@foreach ($item->files as $file)
|
||||
@if (($file->media_type == 'image') && ($file->pivot->zone == 'thumbnail'))
|
||||
<img src="{{ $file->path_string }}" alt="{{ $item->name }}" class="w-28 h-20 rounded-md object-cover ltr:mr-3 rtl:ml-3" />
|
||||
@endif
|
||||
@endforeach
|
||||
|
||||
<div class="flex flex-col py-1 gap-0">
|
||||
<h6 class="text-sm font-bold capitalize">
|
||||
{!! $item->name !!}
|
||||
</h6>
|
||||
|
||||
<div class="line-clamp-2">
|
||||
<p class="font-thin text-xs text-left">
|
||||
{!! $item->description !!}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@else
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col lg:flex-row w-full justify-between">
|
||||
<div class="h-full relative">
|
||||
<form method="GET" action="{{ url("/" . company_id()) }}/apps/search">
|
||||
<div class="h-full flex items-center pl-2 gap-2">
|
||||
<i class="material-icons text-light-gray">search</i>
|
||||
|
||||
<input
|
||||
type="text"
|
||||
name="keyword"
|
||||
class="w-full bg-transparent text-black text-sm border-0 pr-10 pl-0 pb-2 focus:outline-none focus:ring-transparent focus:border-purple"
|
||||
value="{{ isset($keyword) ? $keyword : '' }}"
|
||||
placeholder="{{ trans('general.search_placeholder') }}"
|
||||
autocomplete="off"
|
||||
/>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-row items-end lg:items-center mb-1 divide-x divide-black-400">
|
||||
<x-link href="{{ route('apps.home.index') }}" class="text-sm font-semibold px-2 sm:mt-0 sm:mb-0 leading-4" override="class">
|
||||
<span class="border-b border-transparent transition-all hover:border-black-400">
|
||||
{{ trans('modules.home') }}
|
||||
</span>
|
||||
</x-link>
|
||||
|
||||
<x-link href="{{ route('apps.new') }}" class="text-sm font-semibold px-2 sm:mt-0 sm:mb-0 leading-4" override="class">
|
||||
<span class="border-b border-transparent transition-all hover:border-black-400">
|
||||
{{ trans('modules.new') }}
|
||||
</span>
|
||||
</x-link>
|
||||
|
||||
<x-link href="{{ route('apps.paid') }}" class="text-sm font-semibold px-2 sm:mt-0 sm:mb-0 leading-4" override="class">
|
||||
<span class="border-b border-transparent transition-all hover:border-black-400">
|
||||
{{ trans('modules.top_paid') }}
|
||||
</span>
|
||||
</x-link>
|
||||
|
||||
<x-link href="{{ route('apps.free') }}" class="text-sm font-semibold px-2 sm:mt-0 sm:mb-0 leading-4" override="class">
|
||||
<span class="border-b border-transparent transition-all hover:border-black-400">
|
||||
{{ trans('modules.top_free') }}
|
||||
</span>
|
||||
</x-link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
81
resources/views/components/layouts/modules/head.blade.php
Normal file
81
resources/views/components/layouts/modules/head.blade.php
Normal file
@ -0,0 +1,81 @@
|
||||
@props([
|
||||
'title',
|
||||
])
|
||||
|
||||
<head>
|
||||
@stack('head_start')
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; charset=ISO-8859-1"/>
|
||||
|
||||
<title>{!! $title !!} - @setting('company.name')</title>
|
||||
|
||||
<base href="{{ config('app.url') . '/' }}">
|
||||
|
||||
<x-layouts.pwa.head />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ asset('public/img/favicon.ico') }}" type="image/png">
|
||||
|
||||
<!--Icons-->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/fonts/material-icons/style.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Font -->
|
||||
<link rel="stylesheet" href="{{ asset('public/vendor/quicksand/css/quicksand.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Css -->
|
||||
<link rel="stylesheet" href="{{ asset('public/css//third_party/swiper-bundle.min.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css//third_party/vue-html-editor.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/element.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/app.css') }}" type="text/css">
|
||||
|
||||
@stack('css')
|
||||
|
||||
@stack('stylesheet')
|
||||
|
||||
<style type="text/css">
|
||||
.app-documentation > h1 {
|
||||
text-align: center;
|
||||
font-size: 1.75rem;
|
||||
line-height: 2rem;
|
||||
}
|
||||
|
||||
.app-documentation > p,
|
||||
.app-documentation > li {
|
||||
font-size: 1rem;
|
||||
line-height: 1.5rem;
|
||||
}
|
||||
|
||||
.app-documentation > ul {
|
||||
list-style-type: disc;
|
||||
list-style-position: inside;
|
||||
}
|
||||
</style>
|
||||
|
||||
@livewireStyles
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
var url = '{{ url("/" . company_id()) }}';
|
||||
var app_home = '{{ route("apps.home.index") }}';
|
||||
var app_url = '{{ config("app.url") }}';
|
||||
var aka_currency = {!! !empty($currency) ? $currency : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
@stack('js')
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
window.Laravel = <?php echo json_encode([
|
||||
'csrfToken' => csrf_token(),
|
||||
]); ?>;
|
||||
|
||||
var flash_notification = {!! (session()->has('flash_notification')) ? json_encode(session()->get('flash_notification')) : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
{{ session()->forget('flash_notification') }}
|
||||
|
||||
@stack('scripts')
|
||||
|
||||
@stack('head_end')
|
||||
</head>
|
63
resources/views/components/layouts/modules/item.blade.php
Normal file
63
resources/views/components/layouts/modules/item.blade.php
Normal file
@ -0,0 +1,63 @@
|
||||
<div>
|
||||
<div>
|
||||
@foreach ($module->files as $file)
|
||||
<a href="{{ route('apps.app.show', $module->slug) }}">
|
||||
@if (($file->media_type == 'image') && ($file->pivot->zone == 'thumbnail'))
|
||||
<img src="{{ $file->path_string }}" alt="{{ $module->name }}" class="rounded-md" />
|
||||
@endif
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col py-2 justify-between align-bottom">
|
||||
<div class="flex items-baseline justify-between">
|
||||
<h4 class="w-36 truncate">
|
||||
<a href="{{ route('apps.app.show', $module->slug) }}">
|
||||
{{ $module->name }}
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
<div class="text-xs">
|
||||
@if ($module->price == '0.0000')
|
||||
<span class="font-bold text-purple">
|
||||
{{ trans('modules.free') }}
|
||||
</span>
|
||||
@else
|
||||
{!! $module->price_prefix !!}
|
||||
|
||||
@if (isset($module->special_price))
|
||||
<del class="text-danger">
|
||||
{{ $module->price }}
|
||||
</del>
|
||||
|
||||
{{ $module->special_price }}
|
||||
@else
|
||||
{{ $module->price }}
|
||||
@endif
|
||||
|
||||
{!! $module->price_suffix !!}
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex items-baseline justify-between">
|
||||
<div class="flex">
|
||||
@if($module->vote > 0)
|
||||
@for ($i = 1; $i <= $module->vote; $i++)
|
||||
<i class="material-icons text-xs text-orange">star</i>
|
||||
@endfor
|
||||
|
||||
@for ($i = $module->vote; $i < 5; $i++)
|
||||
<i class="material-icons text-xs">star_border</i>
|
||||
@endfor
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<small class="text-xs">
|
||||
@if ($module->total_review)
|
||||
{{ $module->total_review }} {{ trans('modules.tab.reviews') }}
|
||||
@endif
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,59 @@
|
||||
<div>
|
||||
<div class="flex justify-end py-2">
|
||||
@if ($module->payment_type)
|
||||
@if ($module->payment_type == 'yearly')
|
||||
@php
|
||||
$color = 'bg-purple-100';
|
||||
$text = trans('general.yearly');
|
||||
@endphp
|
||||
@else
|
||||
@php
|
||||
$color = 'bg-purple-100';
|
||||
$text = trans('general.monthly');
|
||||
@endphp
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<span class="inline-flex items-center justify-center text-xs px-4 py-1 font-semibold leading-none rounded-md {{ $color }}">
|
||||
{{ $text }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
@foreach ($module->files as $file)
|
||||
<a href="{{ route('apps.app.show', $module->slug) }}">
|
||||
@if (($file->media_type == 'image') && ($file->pivot->zone == 'thumbnail'))
|
||||
<img src="{{ $file->path_string }}" alt="{{ $module->name }}" class="rounded-md" />
|
||||
@endif
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
|
||||
<div class="flex py-2 justify-between items-center">
|
||||
<div class="py-2">
|
||||
<h4 class="truncate font-bold text-sm">
|
||||
<a href="{{ route('apps.app.show', $module->slug) }}">
|
||||
{{ $module->name }}
|
||||
</a>
|
||||
</h4>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
@if ($module->status_type == 'active')
|
||||
@php
|
||||
$color = 'bg-green-300';
|
||||
$text = trans('general.enabled');
|
||||
@endphp
|
||||
@else
|
||||
@php
|
||||
$color = 'bg-red';
|
||||
$text = trans('general.disabled');
|
||||
@endphp
|
||||
@endif
|
||||
|
||||
<span class="inline-flex items-center justify-center text-xs px-4 py-1 font-semibold leading-none rounded-md {{ $color }} text-white">
|
||||
{{ $text }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,9 @@
|
||||
<div id="releases-items">
|
||||
@if (! empty($releases))
|
||||
@foreach ($releases->data as $release)
|
||||
<p>{{ $release->version }} - <x-date :date="$release->released_at" /></p>
|
||||
|
||||
{!! $release->changelog !!}
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
41
resources/views/components/layouts/modules/reviews.blade.php
Normal file
41
resources/views/components/layouts/modules/reviews.blade.php
Normal file
@ -0,0 +1,41 @@
|
||||
<div id="review-items" class="divide-y">
|
||||
@if (! empty($reviews))
|
||||
@foreach ($reviews->data as $review)
|
||||
<div class="flex flex-col lg:flex-row gap-2 py-4 px-2 justify-between items-start">
|
||||
<div class="flex flex-col">
|
||||
<h5 class="text-sm mb-0">
|
||||
{{ $review->author }}
|
||||
</h5>
|
||||
|
||||
<p class="text-xs">
|
||||
<x-date date="{{ $review->created_at }}" />
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<span class="flex gap-0">
|
||||
@if ($review->rating)
|
||||
@for ($i = 1; $i <= $review->rating; $i++)
|
||||
<i class="material-icons text-xs text-orange">star</i>
|
||||
@endfor
|
||||
|
||||
@if ($review->rating < 5)
|
||||
@for ($i = 1; $i <= 5 - $review->rating; $i++)
|
||||
<i class="material-icons text-xs">star_border</i>
|
||||
@endfor
|
||||
@endif
|
||||
@else
|
||||
@for ($i = 1; $i <= 5; $i++)
|
||||
<i class="material-icons text-xs">star_border</i>
|
||||
@endfor
|
||||
@endif
|
||||
</span>
|
||||
|
||||
<div class="w-full lg:w-1/2">
|
||||
<p class="text-sm lh-160">
|
||||
{!! nl2br($review->text) !!}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
@endif
|
||||
</div>
|
@ -0,0 +1,45 @@
|
||||
@props(['module', 'installed', 'enable'])
|
||||
|
||||
@if ($installed)
|
||||
@can('delete-modules-item')
|
||||
<a href="{{ route('apps.app.uninstall', $module->slug) }}" class="bg-red text-white rounded-md text-sm text-center w-1/2 py-2 truncate">
|
||||
{{ trans('modules.button.uninstall') }}
|
||||
</a>
|
||||
@endcan
|
||||
|
||||
@can('update-modules-item')
|
||||
@if ($enable)
|
||||
<a href="{{ route('apps.app.disable', $module->slug) }}" class="bg-orange rounded-md text-white w-1/2 text-center text-sm py-2 truncate">
|
||||
{{ trans('modules.button.disable') }}
|
||||
</a>
|
||||
@else
|
||||
<a href="{{ route('apps.app.enable', $module->slug) }}" class="bg-green rounded-md text-white text-sm text-center w-1/2 py-2 truncate">
|
||||
{{ trans('modules.button.enable') }}
|
||||
</a>
|
||||
@endif
|
||||
@endcan
|
||||
@else
|
||||
@can('create-modules-item')
|
||||
@if ($module->install)
|
||||
@if (! empty($module->isPurchase) && (! empty($module->purchase_type) && $module->purchase_type == 'monthly'))
|
||||
<x-tooltip message="{!! trans('modules.can_not_install', ['app' => $module->name]) !!}" placement="right">
|
||||
<x-button disabled="disabled">
|
||||
{{ trans('modules.install') }}
|
||||
</x-button>
|
||||
</x-tooltip>
|
||||
@else
|
||||
<button type="button"
|
||||
@click="onInstall('{{ $module->action_url }}', '{{ $module->slug }}', '{!! str_replace("'", "\'", $module->name) !!}', '{{ $module->version }}')"
|
||||
class="bg-green hover:bg-green-700 rounded-md text-white text-sm text-center w-full py-2 truncate"
|
||||
id="install-module"
|
||||
>
|
||||
{{ trans('modules.install') }}
|
||||
</button>
|
||||
@endif
|
||||
@else
|
||||
<a href="{{ $module->action_url }}" class="bg-green hover:bg-green-700 rounded-md text-white text-sm text-center w-full py-2 truncate" target="_blank">
|
||||
{{ trans('modules.use_app') }}
|
||||
</a>
|
||||
@endif
|
||||
@endcan
|
||||
@endif
|
@ -0,0 +1,5 @@
|
||||
@props(['module'])
|
||||
|
||||
<div class="font-thin text-sm">
|
||||
{!! $module->changelog !!}
|
||||
</div>
|
@ -0,0 +1,7 @@
|
||||
@props(['module'])
|
||||
|
||||
<div class="font-thin text-sm">
|
||||
<div class="app-documentation flex flex-col gap-4 py-4">
|
||||
{!! $module->description !!}
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,7 @@
|
||||
@props(['module'])
|
||||
|
||||
<div class="font-thin text-sm">
|
||||
<div class="app-documentation flex flex-col gap-4 py-4">
|
||||
{!! $module->documentation->body !!}
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,29 @@
|
||||
@props(['module'])
|
||||
|
||||
<div class="flex flex-col gap-20">
|
||||
@foreach ($module->call_to_actions as $cta)
|
||||
<div @class([
|
||||
'flex flex-col',
|
||||
'lg:flex-row-reverse' => $cta->position == 'left',
|
||||
'lg:flex-row' => $cta->position != 'left',
|
||||
'justify-between gap-12'
|
||||
])
|
||||
>
|
||||
<div class="w-full lg:w-1/2 flex flex-col gap-6 justify-center">
|
||||
<h2 class="font-bold text-3xl">
|
||||
{{ $cta->title }}
|
||||
</h2>
|
||||
|
||||
<div class="flex flex-col gap-4 divide-y">
|
||||
<div class="font-thin text-sm leading-6 tracking-widest">
|
||||
{{ $cta->description }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-full lg:w-1/2">
|
||||
<img src="{{ $cta->thumb->path_string }}" alt="{{ $cta->thumb->alt_attribute }}" />
|
||||
</div>
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
@ -0,0 +1,5 @@
|
||||
@props(['module'])
|
||||
|
||||
<div class="font-thin text-sm">
|
||||
{!! $module->installation !!}
|
||||
</div>
|
@ -0,0 +1,59 @@
|
||||
@props(['module'])
|
||||
|
||||
@if ($module->price != '0.0000')
|
||||
<div class="flex gap-2 items-baseline">
|
||||
{!! $module->price_prefix !!}
|
||||
|
||||
<div x-show="price_type == true">
|
||||
@if (! empty($module->is_discount))
|
||||
<del class="text-red">
|
||||
{!! $module->yearly_per_monthly_price !!}
|
||||
</del>
|
||||
|
||||
<span class="text-5xl font-bold text-purple">
|
||||
{!! $module->yearly_per_monthly_special_price !!}
|
||||
</span>
|
||||
@else
|
||||
<span class="text-5xl font-bold text-purple">
|
||||
{!! $module->yearly_per_monthly_price !!}
|
||||
</span>
|
||||
@endif
|
||||
|
||||
<div class="text-center text-sm mt-3 mb--2">
|
||||
<span style="height: 18px;display: block;"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div x-show="price_type == false">
|
||||
@if (! empty($module->is_discount))
|
||||
<del class="text-red">
|
||||
{!! $module->monthly_price !!}
|
||||
</del>
|
||||
|
||||
<span class="text-5xl font-bold text-purple">
|
||||
{!! $module->monthly_special_price !!}
|
||||
</span>
|
||||
@else
|
||||
<span class="text-5xl font-bold text-purple">
|
||||
{!! $module->monthly_price !!}
|
||||
</span>
|
||||
@endif
|
||||
|
||||
<div class="text-center text-sm mt-3 mb--2">
|
||||
<span style="font-size: 12px;">
|
||||
<span class="text-danger">*</span> {!! trans('modules.information_monthly') !!}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{!! $module->price_suffix !!}
|
||||
|
||||
<span class="font-thin">
|
||||
{{ trans('modules.per_month') }}
|
||||
</span>
|
||||
</div>
|
||||
@else
|
||||
<span class="text-4xl font-bold text-purple">
|
||||
{{ trans('modules.free') }}
|
||||
</span>
|
||||
@endif
|
@ -0,0 +1,36 @@
|
||||
@props(['module'])
|
||||
|
||||
@php
|
||||
$releases = $module->app_releases;
|
||||
@endphp
|
||||
|
||||
<div id="releases" class="clearfix js-releases-content" v-if="releases.status" v-html="releases.html"></div>
|
||||
|
||||
<div id="releases" class="clearfix js-releases-content" v-else>
|
||||
<x-layouts.modules.releases :releases="$releases" />
|
||||
</div>
|
||||
|
||||
@if (! empty($releases->current_page != $releases->last_page))
|
||||
@stack('pagination_start')
|
||||
|
||||
<div class="w-full flex flex-row justify-evenly my-2" v-if="releases.pagination.last_page != releases.pagination.current_page">
|
||||
<button
|
||||
type="button"
|
||||
id="releases-load-more"
|
||||
:disabled="loadMoreLoading"
|
||||
@click="onModuleLoadMore('releases')"
|
||||
class="w-48 bg-green m-auto block whitespace-nowrap px-4 py-2 border border-transparent rounded-md shadow-sm text-base font-medium text-white text-center js-learn-more js-button-modal-submit hover:bg-green-700 disabled:bg-green-300"
|
||||
>
|
||||
<i v-if="loadMoreLoading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:rounded-full after:animate-submit before:-left-3.5 after:-right-3.5 after:delay-[0.42s]"></i>
|
||||
<span :class="[{'opacity-0': loadMoreLoading}]">
|
||||
{{ trans('modules.see_more') }}
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@stack('pagination_end')
|
||||
@else
|
||||
<div class="flex">
|
||||
<small>{{ trans('general.no_records') }}</small>
|
||||
</div>
|
||||
@endif
|
@ -0,0 +1,36 @@
|
||||
@props(['module'])
|
||||
|
||||
@php
|
||||
$reviews = $module->app_reviews;
|
||||
@endphp
|
||||
|
||||
<div id="review" class="clearfix js-reviews-content" v-if="reviews.status" v-html="reviews.html"></div>
|
||||
|
||||
<div id="review" class="clearfix js-reviews-content" v-else>
|
||||
<x-layouts.modules.reviews :reviews="$reviews" />
|
||||
</div>
|
||||
|
||||
@if (! empty($reviews->current_page != $reviews->last_page))
|
||||
@stack('pagination_start')
|
||||
|
||||
<div class="w-full flex flex-row justify-evenly my-2" v-if="reviews.pagination.last_page != reviews.pagination.current_page">
|
||||
<button
|
||||
type="button"
|
||||
id="review-load-more"
|
||||
:disabled="loadMoreLoading"
|
||||
@click="onModuleLoadMore('reviews')"
|
||||
class="w-48 bg-green m-auto block whitespace-nowrap px-4 py-2 border border-transparent rounded-md shadow-sm text-base font-medium text-white text-center js-learn-more js-button-modal-submit hover:bg-green-700 disabled:bg-green-300"
|
||||
>
|
||||
<i v-if="loadMoreLoading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:rounded-full after:animate-submit before:-left-3.5 after:-right-3.5 after:delay-[0.42s]"></i>
|
||||
<span :class="[{'opacity-0': loadMoreLoading}]">
|
||||
{{ trans('modules.see_more') }}
|
||||
</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@stack('pagination_end')
|
||||
@else
|
||||
<div class="flex">
|
||||
<small>{{ trans('general.no_records') }}</small>
|
||||
</div>
|
||||
@endif
|
@ -0,0 +1,5 @@
|
||||
@props(['module'])
|
||||
|
||||
<div class="relative">
|
||||
<akaunting-slider :screenshots="{{ json_encode($module->screenshots) }}" :arrow="true" :slider-view="5"></akaunting-slider>
|
||||
</div>
|
@ -0,0 +1,23 @@
|
||||
<x-form>
|
||||
<div class="lg:absolute lg:ltr:right-0 lg:rtl:left-0 top-4">
|
||||
<label for="priceToggle" class="flex items-center cursor-pointer" x-on:click="price_type = ! price_type">
|
||||
<div class="relative">
|
||||
<input type="checkbox" id="priceToggle" class="sr-only" x-model="price_type">
|
||||
|
||||
<div class="bg-purple-300 w-24 h-7 rounded-full">
|
||||
<span id="apps-toggle-monthly" class="monthly-badge text-xs text-white float-left ml-3 mt-1.5" x-show="price_type == true">
|
||||
{{ trans('general.monthly') }}
|
||||
</span>
|
||||
|
||||
<span id="apps-toggle-yearly" class="yearly-badge text-xs text-white float-right mr-3 mt-1.5" x-show="price_type == false">
|
||||
{{ trans('general.yearly') }}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="dot absolute left-1 top-1 bg-white w-5 h-5 rounded-full transition"
|
||||
x-bind:style="price_type == true ? 'transform: translateX(333%)' : ' transform: translateX(0) '"
|
||||
></div>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
</x-form>
|
81
resources/views/components/layouts/portal.blade.php
Normal file
81
resources/views/components/layouts/portal.blade.php
Normal file
@ -0,0 +1,81 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{{ language()->direction() }}" lang="{{ app()->getLocale() }}">
|
||||
<x-layouts.portal.head>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
</x-layouts.portal.head>
|
||||
|
||||
@mobile
|
||||
<body class="g-sidenav-hidden bg-body overflow-overlay">
|
||||
@elsemobile
|
||||
<body class="g-sidenav-show bg-body overflow-overlay">
|
||||
@endmobile
|
||||
|
||||
@stack('body_start')
|
||||
|
||||
<x-layouts.portal.menu />
|
||||
|
||||
<div class="main-content xl:ltr:ml-64 xl:rtl:mr-64 transition-all ease-in-out" id="panel">
|
||||
<div id="main-body">
|
||||
<div class="container">
|
||||
<x-layouts.portal.header>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
|
||||
@if (!empty($status))
|
||||
<x-slot name="status">
|
||||
{!! $status ?? '' !!}
|
||||
</x-slot>
|
||||
@endif
|
||||
|
||||
@if (!empty($favorite) || (!empty($favorite) && $favorite->attributes->has('title')))
|
||||
@if (! $favorite->attributes->has('title'))
|
||||
<x-slot name="favorite">
|
||||
{!! $favorite ?? '' !!}
|
||||
</x-slot>
|
||||
@else
|
||||
@php
|
||||
$favorite = [
|
||||
'title' => $favorite->attributes->get('title'),
|
||||
'icon' => $favorite->attributes->get('icon'),
|
||||
'route' => !empty($favorite->attributes->has('route')) ? $favorite->attributes->get('route') : '',
|
||||
'url' => !empty($favorite->attributes->has('url')) ? $favorite->attributes->get('url') : '',
|
||||
];
|
||||
@endphp
|
||||
|
||||
<x-slot name="favorite">
|
||||
<x-menu.favorite
|
||||
:title="$favorite['title']"
|
||||
:icon="$favorite['icon']"
|
||||
:route="$favorite['route']"
|
||||
:url="$favorite['url']"
|
||||
/>
|
||||
</x-slot>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<x-slot name="buttons">
|
||||
{!! $buttons ?? '' !!}
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="moreButtons">
|
||||
{!! $moreButtons ?? '' !!}
|
||||
</x-slot>
|
||||
</x-layouts.portal.header>
|
||||
|
||||
<x-layouts.portal.content>
|
||||
{!! $content !!}
|
||||
</x-layouts.portal.content>
|
||||
|
||||
<x-layouts.portal.footer />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stack('body_end')
|
||||
|
||||
<x-layouts.portal.scripts />
|
||||
</body>
|
||||
</html>
|
15
resources/views/components/layouts/portal/content.blade.php
Normal file
15
resources/views/components/layouts/portal/content.blade.php
Normal file
@ -0,0 +1,15 @@
|
||||
@stack('content_start')
|
||||
<div id="app">
|
||||
@stack('content_content_start')
|
||||
|
||||
{!! $slot !!}
|
||||
|
||||
@stack('content_content_end')
|
||||
|
||||
<notifications></notifications>
|
||||
|
||||
<form id="form-dynamic-component" method="POST" action="#"></form>
|
||||
|
||||
<component v-bind:is="component"></component>
|
||||
</div>
|
||||
@stack('content_end')
|
@ -0,0 +1,19 @@
|
||||
@props(['invoice'])
|
||||
|
||||
@stack('button_pdf_start')
|
||||
<x-link href="{{ route('portal.invoices.pdf', $invoice->id) }}" class="bg-green text-white px-3 py-1.5 mb-3 sm:mb-0 rounded-lg text-sm font-medium leading-6 hover:bg-green-700">
|
||||
{{ trans('general.download_pdf') }}
|
||||
</x-link>
|
||||
@stack('button_pdf_end')
|
||||
|
||||
@stack('button_show_start')
|
||||
<x-link href="{{ route('portal.invoices.show', $invoice->id) }}" class="px-3 py-1.5 mb-3 sm:mb-0 bg-gray-100 hover:bg-gray-200 rounded-lg text-sm font-medium leading-6">
|
||||
{{ trans('general.show') }}
|
||||
</x-link>
|
||||
@stack('button_show_end')
|
||||
|
||||
@stack('button_print_start')
|
||||
<x-link href="{{ route('portal.invoices.print', $invoice->id) }}" target="_blank" class="px-3 py-1.5 mb-3 sm:mb-0 bg-gray-100 hover:bg-gray-200 rounded-lg text-sm font-medium leading-6">
|
||||
{{ trans('general.print') }}
|
||||
</x-link>
|
||||
@stack('button_print_end')
|
@ -0,0 +1,19 @@
|
||||
@props(['invoice'])
|
||||
|
||||
<div class="flex">
|
||||
<div class="w-full text-center">
|
||||
<div class="my-10">
|
||||
<img src="https://assets.akaunting.com/software/portal/finish.gif" alt="Get Started" />
|
||||
</div>
|
||||
|
||||
<div class="my-10">
|
||||
{{ trans('portal.create_your_invoice') }}
|
||||
</div>
|
||||
|
||||
<div class="my-10">
|
||||
<a href="https://akaunting.com/lp/accounting-software?utm_source=invoice_payment&utm_medium=software&utm_campaign=plg" class="bg-purple text-white px-3 py-1.5 mb-3 sm:mb-0 rounded-xl text-sm font-medium leading-6 hover:bg-purple-700">
|
||||
{{ trans('portal.get_started') }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
11
resources/views/components/layouts/portal/footer.blade.php
Normal file
11
resources/views/components/layouts/portal/footer.blade.php
Normal file
@ -0,0 +1,11 @@
|
||||
@stack('footer_start')
|
||||
<footer class="footer">
|
||||
<div class="flex flex-col sm:flex-row items-center justify-between mt-10 lg:mt-20 py-7 text-sm font-light">
|
||||
<div>
|
||||
{{ trans('footer.powered') }}:
|
||||
<a href="{{ trans('footer.link') }}" target="_blank">{{ trans('footer.software') }}</a> |
|
||||
{{ trans('footer.version') }} {{ version('short') }}
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
@stack('footer_end')
|
59
resources/views/components/layouts/portal/head.blade.php
Normal file
59
resources/views/components/layouts/portal/head.blade.php
Normal file
@ -0,0 +1,59 @@
|
||||
@props([
|
||||
'title',
|
||||
])
|
||||
|
||||
<head>
|
||||
@stack('head_start')
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; charset=ISO-8859-1"/>
|
||||
|
||||
<title>{!! $title !!} - @setting('company.name')</title>
|
||||
|
||||
<base href="{{ config('app.url') . '/' }}">
|
||||
|
||||
<x-layouts.pwa.head />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ asset('public/img/favicon.ico') }}" type="image/png">
|
||||
|
||||
<!--Icons-->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/fonts/material-icons/style.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Font -->
|
||||
<link rel="stylesheet" href="{{ asset('public/vendor/quicksand/css/quicksand.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Css -->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/element.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/app.css') }}" type="text/css">
|
||||
|
||||
@stack('css')
|
||||
|
||||
@stack('stylesheet')
|
||||
|
||||
@livewireStyles
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
var url = '{{ url("/" . company_id()) }}';
|
||||
var app_url = '{{ config("app.url") }}';
|
||||
var aka_currency = {!! !empty($currency) ? $currency : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
@stack('js')
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
window.Laravel = <?php echo json_encode([
|
||||
'csrfToken' => csrf_token(),
|
||||
]); ?>;
|
||||
|
||||
var flash_notification = {!! (session()->has('flash_notification')) ? json_encode(session()->get('flash_notification')) : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
{{ session()->forget('flash_notification') }}
|
||||
|
||||
@stack('scripts')
|
||||
|
||||
@stack('head_end')
|
||||
</head>
|
33
resources/views/components/layouts/portal/header.blade.php
Normal file
33
resources/views/components/layouts/portal/header.blade.php
Normal file
@ -0,0 +1,33 @@
|
||||
@stack('header_start')
|
||||
|
||||
<div id="header" class="xl:pt-6">
|
||||
<div class="flex flex-col sm:flex-row flex-wrap items-start justify-between hide-empty-page">
|
||||
<div class="w-full sm:w-6/12 items-center mb-3 sm:mb-0">
|
||||
<div class="flex items-center">
|
||||
<h1 class="flex items-center text-2xl xl:text-5xl text-black font-light -ml-0.5">
|
||||
{!! $title !!}
|
||||
|
||||
@yield('dashboard_action')
|
||||
</h1>
|
||||
|
||||
{!! $status ?? '' !!}
|
||||
|
||||
{!! $favorite ?? '' !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-full sm:w-6/12">
|
||||
<div class="flex flex-wrap flex-col sm:flex-row sm:items-center justify-end sm:space-x-2 sm:rtl:space-x-reverse">
|
||||
@stack('header_button_start')
|
||||
|
||||
{!! $buttons !!}
|
||||
|
||||
@stack('header_button_end')
|
||||
|
||||
{!! $moreButtons !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stack('header_end')
|
179
resources/views/components/layouts/portal/menu.blade.php
Normal file
179
resources/views/components/layouts/portal/menu.blade.php
Normal file
@ -0,0 +1,179 @@
|
||||
@props(['companies'])
|
||||
|
||||
<div class="container flex items-center py-3 mb-4 border-b-2 xl:hidden">
|
||||
<span class="material-icons text-black js-hamburger-menu">menu</span>
|
||||
|
||||
<div class="flex items-center m-auto">
|
||||
<img src="{{ asset('public/img/akaunting-logo-green.svg') }}" class="w-8 m-auto" alt="Akaunting" />
|
||||
<span class="ltr:ml-2 rtl:mr-2">{{ Str::limit(setting('company.name'), 22) }}</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stack('menu_start')
|
||||
|
||||
<div data-real-menu class="w-70 h-screen flex hidden fixed top-0 js-menu z-20 xl:z-10 transition-all ltr:-left-80 rtl:-right-80 xl:ltr:left-0 xl:rtl:right-0">
|
||||
<div class="w-14 py-7 px-1 bg-lilac-900 z-10 menu-scroll overflow-y-auto overflow-x-hidden">
|
||||
<div
|
||||
data-tooltip-target="tooltip-profile"
|
||||
data-tooltip-placement="right"
|
||||
class="flex flex-col items-center justify-center mb-5 cursor-pointer menu-button"
|
||||
data-menu="profile-menu"
|
||||
>
|
||||
<span name="account_circle" class="material-icons-outlined w-8 h-8 flex items-center justify-center text-purple text-2xl hidden">
|
||||
account_circle
|
||||
</span>
|
||||
|
||||
@if (setting('default.use_gravatar', '0') == '1')
|
||||
<img src="{{ user()->picture }}" alt="{{ user()->name }}" class="w-8 h-8 m-auto rounded-full" alt="{{ user()->name }}" title="{{ user()->name }}">
|
||||
@elseif (is_object(user()->picture))
|
||||
<img src="{{ Storage::url(user()->picture->id) }}" class="w-8 h-8 m-auto rounded-full" alt="{{ user()->name }}" title="{{ user()->name }}">
|
||||
@else
|
||||
<span name="account_circle" class="material-icons-outlined text-purple w-8 h-8 flex items-center justify-center text-center text-2xl" alt="{{ user()->name }}" title="{{ user()->name }}">
|
||||
account_circle
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div id="tooltip-profile" class="inline-block absolute z-20 py-1 px-2 text-sm font-medium rounded-lg bg-white text-gray-900 w-auto border border-gray-200 shadow-sm whitespace-nowrap tooltip-content opacity-0 invisible">
|
||||
{{ trans('auth.profile') }}
|
||||
<div class="absolute w-2 h-2 before:absolute before:w-2 before:h-2 before:bg-white before:border-gray-200 before:transform before:rotate-45 before:border -left-1 before:border-t-0 before:border-r-0 border-gray-200" data-popper-arrow></div>
|
||||
</div>
|
||||
|
||||
<div class="group flex flex-col items-center justify-center menu-toggle-buttons">
|
||||
@can('read-notifications')
|
||||
<x-tooltip id="tooltip-notifications" placement="right" message="{{ trans_choice('general.notifications', 2) }}">
|
||||
<button type="button"
|
||||
@class([
|
||||
'flex items-center menu-button justify-center w-8 h-8 mb-2.5 relative cursor-pointer js-menu-toggles',
|
||||
'animate-vibrate' => user()->unreadNotifications->count(),
|
||||
])
|
||||
data-menu="notifications-menu">
|
||||
<span name="notifications" class="material-icons-outlined text-purple text-2xl">notifications</span>
|
||||
|
||||
@if (user()->unreadNotifications->count())
|
||||
<span data-notification-count class="w-2 h-2 absolute top-2 right-2 inline-flex items-center justify-center p-2.5 text-xs text-white font-bold leading-none transform translate-x-1/2 -translate-y-1/2 bg-orange rounded-full">
|
||||
{{ user()->unreadNotifications->count() }}
|
||||
</span>
|
||||
@endif
|
||||
</button>
|
||||
</x-tooltip>
|
||||
@endcan
|
||||
|
||||
<x-tooltip id="tooltip-search" placement="right" message="{{ trans('general.search') }}">
|
||||
<button type="button" class="flex items-center menu-button justify-center w-8 h-8 mb-2.5 relative cursor-pointer">
|
||||
<span name="search" class="material-icons-outlined text-purple text-2xl">search</span>
|
||||
</button>
|
||||
</x-tooltip>
|
||||
|
||||
<x-tooltip id="tooltip-support" placement="right" message="{{ trans('general.help') }}">
|
||||
<a href="{{ url(trans('header.support_link')) }}" target="_blank" class="flex items-center justify-center w-8 h-8 mb-2.5 cursor-pointer js-menu-toggles">
|
||||
<span class="material-icons-outlined text-purple text-2xl">support</span>
|
||||
</a>
|
||||
</x-tooltip>
|
||||
</div>
|
||||
|
||||
<livewire:menu.favorites />
|
||||
</div>
|
||||
|
||||
<nav class="menu-list js-main-menu" id="sidenav-main">
|
||||
<div class="relative mb-5 cursor-pointer">
|
||||
<button type="button" class="flex items-center" data-dropdown-toggle="dropdown-menu-company">
|
||||
<div class="w-8 h-8 flex items-center justify-center">
|
||||
<img src="{{ asset('public/img/akaunting-logo-green.svg') }}" class="w-6 h-6" alt="Akaunting" />
|
||||
</div>
|
||||
|
||||
<div class="flex ltr:ml-2 rtl:mr-2">
|
||||
<span class="w-28 text-left block text-base truncate">
|
||||
<span class="border-b border-transparent transition-all hover:border-black">
|
||||
{{ Str::limit(setting('company.name'), 22) }}
|
||||
</span>
|
||||
</span>
|
||||
|
||||
@can('read-common-companies')
|
||||
<div class="absolute top-2 ltr:-right-1 rtl:-left-1">
|
||||
<svg class="h-5 w-5 text-gray-400" x-description="Heroicon name: solid/selector" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true">
|
||||
<path fill-rule="evenodd" d="M10 3a1 1 0 01.707.293l3 3a1 1 0 01-1.414 1.414L10 5.414 7.707 7.707a1 1 0 01-1.414-1.414l3-3A1 1 0 0110 3zm-3.707 9.293a1 1 0 011.414 0L10 14.586l2.293-2.293a1 1 0 011.414 1.414l-3 3a1 1 0 01-1.414 0l-3-3a1 1 0 010-1.414z" clip-rule="evenodd"></path>
|
||||
</svg>
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
</button>
|
||||
|
||||
@can('read-common-companies')
|
||||
<div id="dropdown-menu-company" class="absolute right-0 mt-3 py-2 bg-white rounded-md shadow-xl z-20 hidden" style="left: auto; min-width: 10rem;">
|
||||
@foreach($companies as $com)
|
||||
<a href="{{ route('companies.switch', $com->id) }}" id="$com->id" class="h-9 leading-9 flex items-center text-sm px-2" role="menuitem" tabindex="-1">
|
||||
<div class="w-full h-full flex items-center rounded-md px-2 hover:bg-lilac-100">
|
||||
<span class="material-icons-outlined text-purple text-xl">business</span>
|
||||
<span class="ltr:pl-2 rtl:pr-2 text-purple text-xs truncate">{{ Str::limit($com->name, 18) }}</span>
|
||||
</div>
|
||||
</a>
|
||||
@endforeach
|
||||
|
||||
@can('update-common-companies')
|
||||
<a href="{{ route('companies.index') }}" class="h-9 leading-9 flex items-center text-sm px-2 border-t rounded-bl rounded-br group hover:bg-purple">
|
||||
<div class="w-full h-full flex items-center rounded-md px-2 ">
|
||||
<span class="material-icons-outlined text-purple text-xl group-hover:text-white">settings</span>
|
||||
<span class="ltr:pl-2 rtl:pr-2 text-purple text-xs truncate group-hover:text-white">
|
||||
{{ trans('general.title.manage', ['type' => trans_choice('general.companies', 2)]) }}
|
||||
</span>
|
||||
</div>
|
||||
</a>
|
||||
@endcan
|
||||
</div>
|
||||
@endcan
|
||||
</div>
|
||||
|
||||
<div class="main-menu transform">
|
||||
{!! menu('portal') !!}
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<div class="profile-menu user-menu menu-list fixed h-full ltr:-left-80 rtl:-right-80">
|
||||
<div class="flex h-12.5">
|
||||
@if (setting('default.use_gravatar', '0') == '1')
|
||||
<img src="{{ user()->picture }}" alt="{{ user()->name }}" class="w-8 h-8 rounded-full" alt="{{ user()->name }}" title="{{ user()->name }}">
|
||||
@elseif (is_object(user()->picture))
|
||||
<img src="{{ Storage::url(user()->picture->id) }}" class="w-8 h-8 rounded-full" alt="{{ user()->name }}" title="{{ user()->name }}">
|
||||
@else
|
||||
<span name="account_circle" class="material-icons-outlined w-8 h-8 flex items-center justify-center text-purple text-2xl" alt="{{ user()->name }}" title="{{ user()->name }}">account_circle</span>
|
||||
@endif
|
||||
|
||||
@stack('navbar_profile_welcome')
|
||||
|
||||
<div class="flex flex-col text-black ml-2">
|
||||
<span class="text-xs">{{ trans('general.welcome') }}</span>
|
||||
|
||||
{{ user()->name }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<livewire:menu.profile />
|
||||
</div>
|
||||
|
||||
@can('read-notifications')
|
||||
<div class="notifications-menu user-menu menu-list fixed h-full ltr:-left-80 rtl:-right-80">
|
||||
<div class="flex items-center mb-3">
|
||||
<span name="notifications" class="material-icons-outlined w-8 h-8 flex items-center justify-center text-purple text-2xl">notifications</span>
|
||||
|
||||
<div class="text-black ltr:ml-1 rtl:mr-1">
|
||||
{{ trans_choice('general.your_notifications', 2) }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<livewire:menu.notifications />
|
||||
</div>
|
||||
@endcan
|
||||
|
||||
<button type="button" class="toggle-button absolute ltr:-right-2 rtl:-left-2 top-8 cursor-pointer transition-opacity ease-in-out z-50">
|
||||
<span class="material-icons text-lg text-purple transform ltr:rotate-90 rtl:-rotate-90">expand_circle_down</span>
|
||||
</button>
|
||||
|
||||
<span data-menu-close class="material-icons absolute ltr:-right-2 rtl:right-12 top-8 text-lg text-purple cursor-pointer z-10 hidden">cancel</span>
|
||||
|
||||
<div class="fixed w-full h-full invisible lg:hidden js-menu-background" style="background-color: rgba(0, 0, 0, 0.5); z-index: -1;"></div>
|
||||
</div>
|
||||
|
||||
<x-loading.menu />
|
||||
|
||||
@stack('menu_end')
|
227
resources/views/components/layouts/portal/scripts.blade.php
Normal file
227
resources/views/components/layouts/portal/scripts.blade.php
Normal file
@ -0,0 +1,227 @@
|
||||
<!-- Core -->
|
||||
<script src="{{ asset('public/vendor/js-cookie/js.cookie.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var company_currency_code = '{{ setting("default.currency") }}';
|
||||
</script>
|
||||
|
||||
@stack('scripts_start')
|
||||
|
||||
@apexchartsScripts
|
||||
|
||||
@stack('charts')
|
||||
|
||||
<!-- <script type="text/javascript" src="{{ asset('public/akaunting-js/hotkeys.js') }}" defer></script> -->
|
||||
<script type="text/javascript" src="{{ asset('public/akaunting-js/generalAction.js') }}"></script>
|
||||
<script type="text/javascript" src="{{ asset('public/akaunting-js/popper.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
"use strict";
|
||||
|
||||
var Layout = (function() {
|
||||
|
||||
const toggleButton = document.querySelector(".toggle-button");
|
||||
const sideBar = document.querySelector(".js-main-menu");
|
||||
const navbarMenu = document.querySelector(".js-menu");
|
||||
const mainContent = document.querySelector(".main-menu");
|
||||
const menus = document.querySelectorAll(".user-menu");
|
||||
const menuButtons = document.querySelectorAll(".menu-button");
|
||||
const detailsEL = mainContent.getElementsByTagName("details");
|
||||
const sectionContent = document.querySelector(".main-content");
|
||||
const menuBackground = document.querySelector(".js-menu-background");
|
||||
const menuClose = document.querySelector("[data-menu-close]");
|
||||
|
||||
if (document.querySelector('[data-menu="notifications-menu"]')) {
|
||||
setTimeout(function() {
|
||||
document.querySelector('[data-menu="notifications-menu"]').classList.remove("animate-vibrate");
|
||||
}, 6000);
|
||||
}
|
||||
|
||||
Array.from(detailsEL).forEach((el) => {
|
||||
el.addEventListener("toggle", function(e) {
|
||||
if(e.target.querySelector(".material-icons-outlined")) {
|
||||
e.target.querySelector(".material-icons").classList.toggle("rotate-180");
|
||||
} else {
|
||||
e.target.querySelectorAll(".material-icons")[1].classList.toggle("rotate-180");
|
||||
}
|
||||
})
|
||||
}
|
||||
);
|
||||
|
||||
function contentTransitionLeft() {
|
||||
sectionContent.classList.add("xl:ltr:ml-0", "xl:rtl:mr-0");
|
||||
sectionContent.classList.remove("xl:ltr:ml-64", "xl:rtl:mr-64");
|
||||
toggleButton.querySelector("span").classList.add("ltr:-rotate-90", "rtl:rotate-90");
|
||||
}
|
||||
|
||||
function contentTransitionRight() {
|
||||
sectionContent.classList.remove("xl:ltr:ml-0", "xl:rtl:mr-0");
|
||||
sectionContent.classList.add("xl:ltr:ml-64", "xl:rtl:mr-64");
|
||||
toggleButton.querySelector("span").classList.remove("ltr:-rotate-90", "rtl:rotate-90");
|
||||
}
|
||||
|
||||
function slideMenu() {
|
||||
if (document.body.clientWidth <= 1280) {
|
||||
mobileMenuHidden();
|
||||
} else {
|
||||
if (sideBar.classList.contains("menu-list-hidden")) {
|
||||
toggleButton.classList.remove("ltr:left-12", "rtl:right-12");
|
||||
sideBar.classList.remove("menu-list-hidden");
|
||||
|
||||
if (document.body.clientWidth > "991") {
|
||||
contentTransitionRight();
|
||||
}
|
||||
} else {
|
||||
sideBar.classList.add("menu-list-hidden");
|
||||
toggleButton.classList.add("ltr:left-12", "rtl:right-12");
|
||||
|
||||
if (document.body.clientWidth > "991") {
|
||||
contentTransitionLeft();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
toggleButton.addEventListener("click", function() {
|
||||
slideMenu();
|
||||
});
|
||||
|
||||
function toggleMenu(iconButton, event) {
|
||||
const menuRef = iconButton.getAttribute("data-menu");
|
||||
const icon = iconButton.children[0].getAttribute("name");
|
||||
|
||||
if (iconButton.getAttribute("data-menu") === "profile-menu") {
|
||||
if (iconButton.children[0].textContent != "cancel") {
|
||||
iconButton.children[0].classList.remove("hidden");
|
||||
iconButton.children[1].classList.add("hidden");
|
||||
} else {
|
||||
iconButton.children[0].classList.add("hidden");
|
||||
iconButton.children[1].classList.remove("hidden");
|
||||
}
|
||||
}
|
||||
|
||||
menuButtons.forEach((button) => {
|
||||
if (icon) {
|
||||
if (button.getAttribute("data-menu") !== menuRef && iconButton.children[0].textContent != "cancel") {
|
||||
button.children[0].textContent = button.children[0].getAttribute("name");
|
||||
button.children[0].classList.remove("active"); // inactive icon
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
menus.forEach((menu) => {
|
||||
if (menu.classList.contains(menuRef) && iconButton.children[0].textContent != "cancel") {
|
||||
iconButton.children[0].textContent = "cancel";
|
||||
iconButton.children[0].classList.add("active");
|
||||
|
||||
menu.classList.remove("ltr:-left-80", "rtl:-right-80");
|
||||
menu.classList.add("ltr:left-14", "rtl:right-14");
|
||||
mainContent.classList.add("hidden");
|
||||
toggleButton.classList.add("invisible");
|
||||
menuClose.classList.remove("hidden");
|
||||
|
||||
} else if (menu.classList.contains(menuRef) && iconButton.children[0].textContent == "cancel") {
|
||||
iconButton.children[0].textContent = icon;
|
||||
iconButton.children[0].classList.remove("active");
|
||||
|
||||
menu.classList.add("ltr:-left-80", "rtl:-right-80");
|
||||
menu.classList.remove("ltr:left-14", "rtl:right-14");
|
||||
mainContent.classList.remove("hidden");
|
||||
toggleButton.classList.remove("invisible");
|
||||
menuClose.classList.add("hidden");
|
||||
} else {
|
||||
menu.classList.add("ltr:-left-80", "rtl:-right-80");
|
||||
menu.classList.remove("ltr:left-14", "rtl:right-14");
|
||||
}
|
||||
|
||||
menuClose.addEventListener("click", function() {
|
||||
menu.classList.add("ltr:-left-80", "rtl:-right-80");
|
||||
iconButton.children[0].textContent = icon;
|
||||
iconButton.children[0].classList.remove("active");
|
||||
mainContent.classList.remove("hidden");
|
||||
this.classList.add("hidden");
|
||||
toggleButton.classList.remove("invisible");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if (document.body.clientWidth >= 1280) {
|
||||
if (is_profile_menu == 1) {
|
||||
let profile_menu_html = document.querySelector(".profile-menu");
|
||||
let profile_icon_html = document.querySelector("[data-menu='profile-menu']");
|
||||
|
||||
profile_menu_html.classList.add("ltr:left-14", "rtl:right-14");
|
||||
profile_menu_html.classList.remove("ltr:-left-80", "rtl:-right-80");
|
||||
|
||||
profile_icon_html.children[0].textContent = "cancel";
|
||||
profile_icon_html.children[0].classList.add("active");
|
||||
|
||||
profile_icon_html.children[0].classList.remove("hidden");
|
||||
profile_icon_html.children[1].classList.add("hidden");
|
||||
toggleButton.classList.add("invisible");
|
||||
menuClose.classList.remove("hidden");
|
||||
}
|
||||
}
|
||||
|
||||
function mobileMenuActive() {
|
||||
navbarMenu.classList.add("ltr:left-0", "rtl:right-0");
|
||||
navbarMenu.classList.remove("ltr:-left-80", "rtl:-right-80");
|
||||
|
||||
menuBackground.classList.add("visible");
|
||||
menuBackground.classList.remove("invisible");
|
||||
}
|
||||
|
||||
function mobileMenuHidden() {
|
||||
navbarMenu.classList.remove("ltr:left-0", "rtl:right-0");
|
||||
navbarMenu.classList.add("ltr:-left-80", "rtl:-right:80");
|
||||
mainContent.classList.remove("hidden");
|
||||
|
||||
menus.forEach((menu) => {
|
||||
menu.classList.remove("ltr:left-14", "rtl:right-14");
|
||||
menu.classList.add("ltr:-left-80", "rtl:-right-80");
|
||||
});
|
||||
|
||||
menuButtons.forEach((iconButton) => {
|
||||
iconButton.children[0].classList.remove("active");
|
||||
iconButton.children[0].textContent = iconButton.children[0].getAttribute("name");
|
||||
});
|
||||
|
||||
menuBackground.classList.remove("visible");
|
||||
menuBackground.classList.add("invisible");
|
||||
}
|
||||
|
||||
document.querySelector(".js-hamburger-menu").addEventListener("click", function() {
|
||||
mobileMenuActive();
|
||||
});
|
||||
|
||||
menuBackground.addEventListener("click", function() {
|
||||
mobileMenuHidden();
|
||||
});
|
||||
|
||||
menuButtons.forEach((iconButton) =>
|
||||
iconButton.addEventListener("click", function() {
|
||||
toggleMenu(iconButton, event);
|
||||
})
|
||||
);
|
||||
})(500);
|
||||
</script>
|
||||
|
||||
@stack('body_css')
|
||||
|
||||
@stack('body_stylesheet')
|
||||
|
||||
@stack('body_js')
|
||||
|
||||
@stack('body_scripts')
|
||||
|
||||
@livewireScripts
|
||||
|
||||
<script src="{{ asset('public/vendor/alpinejs/alpine.min.js') }}"></script>
|
||||
|
||||
<!-- Livewire -->
|
||||
<script type="text/javascript">
|
||||
window.livewire_app_url = {{ company_id() }};
|
||||
</script>
|
||||
|
||||
@stack('scripts_end')
|
92
resources/views/components/layouts/preview.blade.php
Normal file
92
resources/views/components/layouts/preview.blade.php
Normal file
@ -0,0 +1,92 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{{ language()->direction() }}" lang="{{ app()->getLocale() }}">
|
||||
<x-layouts.preview.head>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
</x-layouts.preview.head>
|
||||
|
||||
<body>
|
||||
@stack('body_start')
|
||||
|
||||
<div class="flex flex-col h-screen">
|
||||
<header class="py-5 bg-purple-lighter text-purple text-center">
|
||||
<div class="w-full lg:max-w-6xl m-auto flex flex-col lg:flex-row items-center justify-between">
|
||||
<div class="flex flex-col items-start">
|
||||
<span class="font-medium uppercase">
|
||||
{{ trans('general.preview_mode') }}
|
||||
</span>
|
||||
|
||||
<span>
|
||||
{!! !empty($sticky->attributes->has('description')) ? $sticky->attributes->get('description') : trans('invoices.sticky.description') !!}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<a href="{!! !empty($sticky->attributes->has('url')) ? $sticky->attributes->get('url') : route('dashboard') !!}" class="px-3 py-1.5 rounded-xl text-sm font-medium leading-6 bg-purple hover:bg-purple-700 text-white disabled:bg-purple-100">
|
||||
{{ trans('general.go_back', ['type' => company()->name]) }}
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="flex-1 overflow-y-auto p-5">
|
||||
<div class="w-full lg:max-w-6xl m-auto">
|
||||
<x-layouts.preview.header>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
|
||||
@if (!empty($status))
|
||||
<x-slot name="status">
|
||||
{!! $status ?? '' !!}
|
||||
</x-slot>
|
||||
@endif
|
||||
|
||||
@if (!empty($favorite) || (!empty($favorite) && $favorite->attributes->has('title')))
|
||||
@if (! $favorite->attributes->has('title'))
|
||||
<x-slot name="favorite">
|
||||
{!! $favorite ?? '' !!}
|
||||
</x-slot>
|
||||
@else
|
||||
@php
|
||||
$favorite = [
|
||||
'title' => $favorite->attributes->get('title'),
|
||||
'icon' => $favorite->attributes->get('icon'),
|
||||
'route' => !empty($favorite->attributes->has('route')) ? $favorite->attributes->get('route') : '',
|
||||
'url' => !empty($favorite->attributes->has('url')) ? $favorite->attributes->get('url') : '',
|
||||
];
|
||||
@endphp
|
||||
|
||||
<x-slot name="favorite">
|
||||
<x-menu.favorite
|
||||
:title="$favorite['title']"
|
||||
:icon="$favorite['icon']"
|
||||
:route="$favorite['route']"
|
||||
:url="$favorite['url']"
|
||||
/>
|
||||
</x-slot>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<x-slot name="buttons">
|
||||
{!! $buttons ?? '' !!}
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="moreButtons">
|
||||
{!! $moreButtons ?? '' !!}
|
||||
</x-slot>
|
||||
</x-layouts.preview.header>
|
||||
|
||||
<x-layouts.preview.content>
|
||||
{!! $content !!}
|
||||
</x-layouts.preview.content>
|
||||
|
||||
<x-layouts.preview.footer />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stack('body_end')
|
||||
|
||||
<x-layouts.preview.scripts />
|
||||
</body>
|
||||
</html>
|
15
resources/views/components/layouts/preview/content.blade.php
Normal file
15
resources/views/components/layouts/preview/content.blade.php
Normal file
@ -0,0 +1,15 @@
|
||||
@stack('content_start')
|
||||
<div id="app">
|
||||
@stack('content_content_start')
|
||||
|
||||
{!! $slot !!}
|
||||
|
||||
@stack('content_content_end')
|
||||
|
||||
<notifications></notifications>
|
||||
|
||||
<form id="form-dynamic-component" method="POST" action="#"></form>
|
||||
|
||||
<component v-bind:is="component"></component>
|
||||
</div>
|
||||
@stack('content_end')
|
14
resources/views/components/layouts/preview/footer.blade.php
Normal file
14
resources/views/components/layouts/preview/footer.blade.php
Normal file
@ -0,0 +1,14 @@
|
||||
@stack('footer_start')
|
||||
|
||||
<footer class="footer">
|
||||
<div class="flex flex-col sm:flex-row items-center justify-between mt-10 lg:mt-20 py-7 text-sm font-light">
|
||||
<div>
|
||||
{{ trans('footer.powered') }}:
|
||||
<a href="{{ trans('footer.link') }}" target="_blank">{{ trans('footer.software') }}</a>
|
||||
<span class="material-icons align-middle text-black-300">code</span>
|
||||
{{ trans('footer.version') }} {{ version('short') }}
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@stack('footer_end')
|
60
resources/views/components/layouts/preview/head.blade.php
Normal file
60
resources/views/components/layouts/preview/head.blade.php
Normal file
@ -0,0 +1,60 @@
|
||||
@props([
|
||||
'title',
|
||||
])
|
||||
|
||||
<head>
|
||||
@stack('head_start')
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; charset=ISO-8859-1"/>
|
||||
|
||||
<title>{!! $title !!} - @setting('company.name')</title>
|
||||
|
||||
<base href="{{ config('app.url') . '/' }}">
|
||||
|
||||
<x-layouts.pwa.head />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ asset('public/img/favicon.ico') }}" type="image/png">
|
||||
|
||||
<!--Icons-->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/fonts/material-icons/style.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Font -->
|
||||
<link rel="stylesheet" href="{{ asset('public/vendor/quicksand/css/quicksand.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Css -->
|
||||
<link rel="stylesheet" href="{{ asset('public/css//third_party/swiper-bundle.min.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/element.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/app.css') }}" type="text/css">
|
||||
|
||||
@stack('css')
|
||||
|
||||
@stack('stylesheet')
|
||||
|
||||
@livewireStyles
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
var url = '{{ url("/" . company_id()) }}';
|
||||
var app_url = '{{ config("app.url") }}';
|
||||
var aka_currency = {!! !empty($currency) ? $currency : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
@stack('js')
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
window.Laravel = <?php echo json_encode([
|
||||
'csrfToken' => csrf_token(),
|
||||
]); ?>;
|
||||
|
||||
var flash_notification = {!! (session()->has('flash_notification')) ? json_encode(session()->get('flash_notification')) : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
{{ session()->forget('flash_notification') }}
|
||||
|
||||
@stack('scripts')
|
||||
|
||||
@stack('head_end')
|
||||
</head>
|
33
resources/views/components/layouts/preview/header.blade.php
Normal file
33
resources/views/components/layouts/preview/header.blade.php
Normal file
@ -0,0 +1,33 @@
|
||||
@stack('header_start')
|
||||
|
||||
<div id="header" class="xl:pt-6">
|
||||
<div class="flex flex-col sm:flex-row flex-wrap items-start justify-between hide-empty-page">
|
||||
<div class="w-full sm:w-6/12 items-center mb-3 sm:mb-0">
|
||||
<div class="flex items-center">
|
||||
<h1 class="flex items-center text-2xl xl:text-5xl text-black font-light -ml-0.5">
|
||||
{!! $title !!}
|
||||
|
||||
@yield('dashboard_action')
|
||||
</h1>
|
||||
|
||||
{!! $status ?? '' !!}
|
||||
|
||||
{!! $favorite ?? '' !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-full sm:w-6/12">
|
||||
<div class="flex flex-wrap flex-col sm:flex-row sm:items-center justify-end sm:space-x-2 sm:rtl:space-x-reverse">
|
||||
@stack('header_button_start')
|
||||
|
||||
{!! $buttons !!}
|
||||
|
||||
@stack('header_button_end')
|
||||
|
||||
{!! $moreButtons !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stack('header_end')
|
13
resources/views/components/layouts/preview/scripts.blade.php
Normal file
13
resources/views/components/layouts/preview/scripts.blade.php
Normal file
@ -0,0 +1,13 @@
|
||||
@stack('scripts_start')
|
||||
@stack('body_css')
|
||||
|
||||
@stack('body_stylesheet')
|
||||
|
||||
@stack('body_js')
|
||||
|
||||
@stack('body_scripts')
|
||||
|
||||
@livewireScripts
|
||||
|
||||
<script src="{{ asset('public/vendor/alpinejs/alpine.min.js') }}"></script>
|
||||
@stack('scripts_end')
|
20
resources/views/components/layouts/print.blade.php
Normal file
20
resources/views/components/layouts/print.blade.php
Normal file
@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{{ language()->direction() }}" lang="{{ app()->getLocale() }}">
|
||||
<x-layouts.print.head>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
</x-layouts.print.head>
|
||||
|
||||
<body onload="window.print();">
|
||||
@stack('body_start')
|
||||
|
||||
<x-layouts.print.content>
|
||||
{!! $content !!}
|
||||
</x-layouts.print.content>
|
||||
|
||||
@stack('body_end')
|
||||
|
||||
<x-layouts.print.scripts />
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,3 @@
|
||||
@stack('content_start')
|
||||
{!! $slot !!}
|
||||
@stack('content_end')
|
54
resources/views/components/layouts/print/head.blade.php
Normal file
54
resources/views/components/layouts/print/head.blade.php
Normal file
@ -0,0 +1,54 @@
|
||||
@props([
|
||||
'title',
|
||||
])
|
||||
|
||||
<head>
|
||||
@stack('head_start')
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; charset=ISO-8859-1"/>
|
||||
|
||||
<title>{!! $title !!} - @setting('company.name')</title>
|
||||
|
||||
<base href="{{ config('app.url') . '/' }}">
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ asset('public/img/favicon.ico') }}" type="image/png">
|
||||
|
||||
<!-- Css -->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/print.css') }}" type="text/css">
|
||||
|
||||
@if (isset($currency_style) && $currency_style && in_array(app()->getLocale(), ['zh-CN', 'ja-JP', 'zh-TW']))
|
||||
<style type="text/css">
|
||||
@font-face {
|
||||
font-family: 'Firefly Sung';
|
||||
font-weight: 'normal';
|
||||
src: url('{{ asset("/public/css/fonts/firefly_sung_normal.ttf") }}') format("truetype");
|
||||
}
|
||||
|
||||
* {
|
||||
font-family: 'Firefly Sung', sans-serif !important;
|
||||
}
|
||||
</style>
|
||||
@else
|
||||
<style type="text/css">
|
||||
* {
|
||||
font-family: DejaVu Sans, sans-serif !important;
|
||||
}
|
||||
</style>
|
||||
@endif
|
||||
|
||||
@stack('css')
|
||||
|
||||
@stack('stylesheet')
|
||||
|
||||
@livewireStyles
|
||||
|
||||
@stack('js')
|
||||
|
||||
@stack('scripts')
|
||||
|
||||
@stack('head_end')
|
||||
</head>
|
29
resources/views/components/layouts/print/scripts.blade.php
Normal file
29
resources/views/components/layouts/print/scripts.blade.php
Normal file
@ -0,0 +1,29 @@
|
||||
<!-- Core -->
|
||||
<script src="{{ asset('public/vendor/js-cookie/js.cookie.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var company_currency_code = '{{ setting("default.currency") }}';
|
||||
</script>
|
||||
|
||||
@stack('scripts_start')
|
||||
|
||||
@apexchartsScripts
|
||||
|
||||
@stack('charts')
|
||||
|
||||
@stack('body_css')
|
||||
|
||||
@stack('body_stylesheet')
|
||||
|
||||
@stack('body_js')
|
||||
|
||||
@stack('body_scripts')
|
||||
|
||||
@livewireScripts
|
||||
|
||||
<!-- Livewire -->
|
||||
<script type="text/javascript">
|
||||
window.livewire_app_url = {{ company_id() }};
|
||||
</script>
|
||||
|
||||
@stack('scripts_end')
|
38
resources/views/components/layouts/pwa/head.blade.php
Normal file
38
resources/views/components/layouts/pwa/head.blade.php
Normal file
@ -0,0 +1,38 @@
|
||||
<!-- Web Application Manifest -->
|
||||
<link rel="manifest" href="{{ asset('manifest.json') }}">
|
||||
|
||||
<!-- Chrome for Android theme color -->
|
||||
<meta name="theme-color" content="#FFFFFF">
|
||||
|
||||
<!-- Add to homescreen for Chrome on Android -->
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="application-name" content="Akaunting">
|
||||
<link rel="icon" sizes="512x512" href="{{ asset('public/img/icons/icon-512x512.png') }}">
|
||||
|
||||
<!-- Add to homescreen for Safari on iOS -->
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="#FFFFFF">
|
||||
<meta name="apple-mobile-web-app-title" content="Akaunting">
|
||||
<link rel="apple-touch-icon" href="{{ asset('public/img/icons/icon-512x512.png') }}">
|
||||
|
||||
<link href="{{ asset('public/img/icons/splash-640x1136.png') }}" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />
|
||||
<link href="{{ asset('public/img/icons/splash-750x1334.png') }}" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />
|
||||
<link href="{{ asset('public/img/icons/splash-828x1792.png') }}" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />
|
||||
<link href="{{ asset('public/img/icons/splash-1242x2208.png') }}" media="(device-width: 621px) and (device-height: 1104px) and (-webkit-device-pixel-ratio: 3)" rel="apple-touch-startup-image" />
|
||||
<link href="{{ asset('public/img/icons/splash-1242x2688.png') }}" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3)" rel="apple-touch-startup-image" />
|
||||
<link href="{{ asset('public/img/icons/splash-1536x2048.png') }}" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />
|
||||
<link href="{{ asset('public/img/icons/splash-1668x2224.png') }}" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />
|
||||
<link href="{{ asset('public/img/icons/splash-1668x2388.png') }}" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />
|
||||
<link href="{{ asset('public/img/icons/splash-2048x2732.png') }}" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2)" rel="apple-touch-startup-image" />
|
||||
|
||||
<!-- Tile for Win8 -->
|
||||
<meta name="msapplication-TileColor" content="#FFFFFF">
|
||||
<meta name="msapplication-TileImage" content="{{ asset('public/img/icons/icon-512x512.png') }}">
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
if ('serviceWorker' in navigator) {
|
||||
navigator.serviceWorker.register("{{ asset('serviceworker.js') }}");
|
||||
}
|
||||
|
||||
</script>
|
70
resources/views/components/layouts/signed.blade.php
Normal file
70
resources/views/components/layouts/signed.blade.php
Normal file
@ -0,0 +1,70 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{{ language()->direction() }}" lang="{{ app()->getLocale() }}">
|
||||
<x-layouts.signed.head>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
</x-layouts.signed.head>
|
||||
|
||||
<body>
|
||||
@stack('body_start')
|
||||
|
||||
<div class="container-fluid content-layout mt-4">
|
||||
<x-layouts.signed.header>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
|
||||
@if (!empty($status))
|
||||
<x-slot name="status">
|
||||
{!! $status ?? '' !!}
|
||||
</x-slot>
|
||||
@endif
|
||||
|
||||
@if (!empty($favorite) || (!empty($favorite) && $favorite->attributes->has('title')))
|
||||
@if (! $favorite->attributes->has('title'))
|
||||
<x-slot name="favorite">
|
||||
{!! $favorite ?? '' !!}
|
||||
</x-slot>
|
||||
@else
|
||||
@php
|
||||
$favorite = [
|
||||
'title' => $favorite->attributes->get('title'),
|
||||
'icon' => $favorite->attributes->get('icon'),
|
||||
'route' => !empty($favorite->attributes->has('route')) ? $favorite->attributes->get('route') : '',
|
||||
'url' => !empty($favorite->attributes->has('url')) ? $favorite->attributes->get('url') : '',
|
||||
];
|
||||
@endphp
|
||||
|
||||
<x-slot name="favorite">
|
||||
<x-menu.favorite
|
||||
:title="$favorite['title']"
|
||||
:icon="$favorite['icon']"
|
||||
:route="$favorite['route']"
|
||||
:url="$favorite['url']"
|
||||
/>
|
||||
</x-slot>
|
||||
@endif
|
||||
@endif
|
||||
|
||||
<x-slot name="buttons">
|
||||
{!! $buttons ?? '' !!}
|
||||
</x-slot>
|
||||
|
||||
<x-slot name="moreButtons">
|
||||
{!! $moreButtons ?? '' !!}
|
||||
</x-slot>
|
||||
</x-layouts.signed.header>
|
||||
|
||||
<x-layouts.signed.content>
|
||||
{!! $content !!}
|
||||
</x-layouts.signed.content>
|
||||
|
||||
<x-layouts.signed.footer />
|
||||
</div>
|
||||
|
||||
@stack('body_end')
|
||||
|
||||
<x-layouts.signed.scripts />
|
||||
</body>
|
||||
</html>
|
15
resources/views/components/layouts/signed/content.blade.php
Normal file
15
resources/views/components/layouts/signed/content.blade.php
Normal file
@ -0,0 +1,15 @@
|
||||
@stack('content_start')
|
||||
<div id="app">
|
||||
@stack('content_content_start')
|
||||
|
||||
{!! $slot !!}
|
||||
|
||||
@stack('content_content_end')
|
||||
|
||||
<notifications></notifications>
|
||||
|
||||
<form id="form-dynamic-component" method="POST" action="#"></form>
|
||||
|
||||
<component v-bind:is="component"></component>
|
||||
</div>
|
||||
@stack('content_end')
|
14
resources/views/components/layouts/signed/footer.blade.php
Normal file
14
resources/views/components/layouts/signed/footer.blade.php
Normal file
@ -0,0 +1,14 @@
|
||||
@stack('footer_start')
|
||||
|
||||
<footer class="footer">
|
||||
<div class="flex flex-col sm:flex-row items-center justify-between mt-10 lg:mt-20 py-7 text-sm font-light">
|
||||
<div>
|
||||
{{ trans('footer.powered') }}:
|
||||
<a href="{{ trans('footer.link') }}" target="_blank">{{ trans('footer.software') }}</a>
|
||||
<span class="material-icons align-middle text-black-300">code</span>
|
||||
{{ trans('footer.version') }} {{ version('short') }}
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
@stack('footer_end')
|
59
resources/views/components/layouts/signed/head.blade.php
Normal file
59
resources/views/components/layouts/signed/head.blade.php
Normal file
@ -0,0 +1,59 @@
|
||||
@props([
|
||||
'title',
|
||||
])
|
||||
|
||||
<head>
|
||||
@stack('head_start')
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; charset=ISO-8859-1"/>
|
||||
|
||||
<title>{!! $title !!} - @setting('company.name')</title>
|
||||
|
||||
<base href="{{ config('app.url') . '/' }}">
|
||||
|
||||
<x-layouts.pwa.head />
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ asset('public/img/favicon.ico') }}" type="image/png">
|
||||
|
||||
<!--Icons-->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/fonts/material-icons/style.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Font -->
|
||||
<link rel="stylesheet" href="{{ asset('public/vendor/quicksand/css/quicksand.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Css -->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/element.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/app.css') }}" type="text/css">
|
||||
|
||||
@stack('css')
|
||||
|
||||
@stack('stylesheet')
|
||||
|
||||
@livewireStyles
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
var url = '{{ url("/" . company_id()) }}';
|
||||
var app_url = '{{ config("app.url") }}';
|
||||
var aka_currency = {!! !empty($currency) ? $currency : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
@stack('js')
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
window.Laravel = <?php echo json_encode([
|
||||
'csrfToken' => csrf_token(),
|
||||
]); ?>;
|
||||
|
||||
var flash_notification = {!! (session()->has('flash_notification')) ? json_encode(session()->get('flash_notification')) : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
{{ session()->forget('flash_notification') }}
|
||||
|
||||
@stack('scripts')
|
||||
|
||||
@stack('head_end')
|
||||
</head>
|
33
resources/views/components/layouts/signed/header.blade.php
Normal file
33
resources/views/components/layouts/signed/header.blade.php
Normal file
@ -0,0 +1,33 @@
|
||||
@stack('header_start')
|
||||
|
||||
<div id="header" class="xl:pt-6">
|
||||
<div class="flex flex-col sm:flex-row flex-wrap items-start justify-between hide-empty-page">
|
||||
<div class="w-full sm:w-6/12 items-center mb-3 sm:mb-0">
|
||||
<div class="flex items-center">
|
||||
<h1 class="flex items-center text-2xl xl:text-5xl text-black font-light -ml-0.5">
|
||||
{!! $title !!}
|
||||
|
||||
@yield('dashboard_action')
|
||||
</h1>
|
||||
|
||||
{!! $status ?? '' !!}
|
||||
|
||||
{!! $favorite ?? '' !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="w-full sm:w-6/12">
|
||||
<div class="flex flex-wrap flex-col sm:flex-row sm:items-center justify-end sm:space-x-2 sm:rtl:space-x-reverse">
|
||||
@stack('header_button_start')
|
||||
|
||||
{!! $buttons !!}
|
||||
|
||||
@stack('header_button_end')
|
||||
|
||||
{!! $moreButtons !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stack('header_end')
|
13
resources/views/components/layouts/signed/scripts.blade.php
Normal file
13
resources/views/components/layouts/signed/scripts.blade.php
Normal file
@ -0,0 +1,13 @@
|
||||
@stack('scripts_start')
|
||||
@stack('body_css')
|
||||
|
||||
@stack('body_stylesheet')
|
||||
|
||||
@stack('body_js')
|
||||
|
||||
@stack('body_scripts')
|
||||
|
||||
@livewireScripts
|
||||
|
||||
<script src="{{ asset('public/vendor/alpinejs/alpine.min.js') }}"></script>
|
||||
@stack('scripts_end')
|
24
resources/views/components/layouts/wizard.blade.php
Normal file
24
resources/views/components/layouts/wizard.blade.php
Normal file
@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html dir="{{ language()->direction() }}" lang="{{ app()->getLocale() }}">
|
||||
<x-layouts.wizard.head>
|
||||
<x-slot name="title">
|
||||
{!! !empty($title->attributes->has('title')) ? $title->attributes->get('title') : $title !!}
|
||||
</x-slot>
|
||||
</x-layouts.wizard.head>
|
||||
|
||||
<body class="h-screen flex justify-center items-center">
|
||||
@stack('body_start')
|
||||
|
||||
<x-layouts.wizard.background />
|
||||
|
||||
<div class="container">
|
||||
<x-layouts.wizard.content>
|
||||
{!! $content !!}
|
||||
</x-layouts.wizard.content>
|
||||
</div>
|
||||
|
||||
@stack('body_end')
|
||||
|
||||
<x-layouts.wizard.scripts />
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,2 @@
|
||||
<div class="w-full h-full absolute left-0 right-0 top-0 bottom-0 bg-cover bg-no-repeat opacity-20"
|
||||
style="background-image:url({{ asset('public/img/dashboard.png') }});"></div>
|
11
resources/views/components/layouts/wizard/content.blade.php
Normal file
11
resources/views/components/layouts/wizard/content.blade.php
Normal file
@ -0,0 +1,11 @@
|
||||
@stack('content_start')
|
||||
<div id="app">
|
||||
@stack('content_content_start')
|
||||
|
||||
@include('flash::message')
|
||||
|
||||
{!! $slot !!}
|
||||
|
||||
@stack('content_content_end')
|
||||
</div>
|
||||
@stack('content_end')
|
57
resources/views/components/layouts/wizard/head.blade.php
Normal file
57
resources/views/components/layouts/wizard/head.blade.php
Normal file
@ -0,0 +1,57 @@
|
||||
@props([
|
||||
'title',
|
||||
])
|
||||
|
||||
<head>
|
||||
@stack('head_start')
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8; charset=ISO-8859-1"/>
|
||||
|
||||
<title>{!! $title !!} - @setting('company.name')</title>
|
||||
|
||||
<base href="{{ config('app.url') . '/' }}">
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" href="{{ asset('public/img/favicon.ico') }}" type="image/png">
|
||||
|
||||
<!--Icons-->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/fonts/material-icons/style.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Font -->
|
||||
<link rel="stylesheet" href="{{ asset('public/vendor/quicksand/css/quicksand.css?v=' . version('short')) }}" type="text/css">
|
||||
|
||||
<!-- Css -->
|
||||
<link rel="stylesheet" href="{{ asset('public/css/element.css?v=' . version('short')) }}" type="text/css">
|
||||
<link rel="stylesheet" href="{{ asset('public/css/app.css') }}" type="text/css">
|
||||
|
||||
@stack('css')
|
||||
|
||||
@stack('stylesheet')
|
||||
|
||||
@livewireStyles
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
var url = '{{ url("/" . company_id()) }}';
|
||||
var app_url = '{{ config("app.url") }}';
|
||||
var aka_currency = {!! !empty($currency) ? $currency : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
@stack('js')
|
||||
|
||||
<script type="text/javascript"><!--
|
||||
window.Laravel = <?php echo json_encode([
|
||||
'csrfToken' => csrf_token(),
|
||||
]); ?>;
|
||||
|
||||
var flash_notification = {!! (session()->has('flash_notification')) ? json_encode(session()->get('flash_notification')) : 'false' !!};
|
||||
//--></script>
|
||||
|
||||
{{ session()->forget('flash_notification') }}
|
||||
|
||||
@stack('scripts')
|
||||
|
||||
@stack('head_end')
|
||||
</head>
|
26
resources/views/components/layouts/wizard/scripts.blade.php
Normal file
26
resources/views/components/layouts/wizard/scripts.blade.php
Normal file
@ -0,0 +1,26 @@
|
||||
@stack('scripts_start')
|
||||
<!-- Core -->
|
||||
<script src="{{ asset('public/vendor/js-cookie/js.cookie.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
var wizard_translations = {!! json_encode($translations) !!};
|
||||
var wizard_company = {!! json_encode($company) !!};
|
||||
var wizard_countries = {!! json_encode(trans('countries')) !!};
|
||||
var wizard_currencies = {!! json_encode($currencies) !!};
|
||||
var wizard_currency_codes = {!! json_encode($currency_codes) !!};
|
||||
var wizard_taxes = {!! json_encode($taxes) !!};
|
||||
var wizard_modules = {!! json_encode($modules) !!};
|
||||
</script>
|
||||
|
||||
<script src="{{ asset('public/js/wizard/wizard.min.js?v=' . version('short')) }}"></script>
|
||||
|
||||
@stack('body_css')
|
||||
|
||||
@stack('body_stylesheet')
|
||||
|
||||
@stack('body_js')
|
||||
|
||||
@stack('body_scripts')
|
||||
|
||||
@livewireScripts
|
||||
@stack('scripts_end')
|
Reference in New Issue
Block a user