diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..c3de5b0 Binary files /dev/null and b/.DS_Store differ diff --git a/app/.DS_Store b/app/.DS_Store new file mode 100644 index 0000000..e395389 Binary files /dev/null and b/app/.DS_Store differ diff --git a/app/Actions/SamplePermissionApi.php b/app/Actions/SamplePermissionApi.php new file mode 100644 index 0000000..d11685d --- /dev/null +++ b/app/Actions/SamplePermissionApi.php @@ -0,0 +1,100 @@ +input('draw', 0); + $start = $request->input('start', 0); + $length = $request->input('length', 10); + $columns = $request->input('columns'); + $searchValue = $request->input('search.value'); + + $orderColumn = $request->input('order.0.column', 0); // Get the order column index + $orderDir = $request->input('order.0.dir', 'asc'); // Get the order direction (ASC or DESC) + + $query = Permission::query()->with('roles'); + + if ($searchValue) { + $searchColumns = ['name']; + $query->where(function ($query) use ($searchValue, $searchColumns) { + foreach ($searchColumns as $column) { + $query->orWhere(DB::raw("LOWER($column)"), 'LIKE', '%' . strtolower($searchValue) . '%'); + } + }); + } + + // Get the column name for ordering based on the orderColumn index + $orderColumnName = $columns[$orderColumn]['data'] ?? 'id'; + + // Apply ordering to the query + $query->orderBy($orderColumnName, $orderDir); + + $totalRecords = $query->count(); + + $records = $query->offset($start)->limit($length)->get(); + + $data = [ + 'draw' => $draw, + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $totalRecords, + 'data' => $records, + 'orderColumnName' => $orderColumnName, + ]; + + return $data; + } + + public function create(Request $request) + { + $permission = $request->all(); + + $rules = [ + 'name' => 'required|string', + ]; + + $validator = Validator::make($permission, $rules); + if ($validator->fails()) { + return response()->json(['errors' => $validator->errors()], 400); + } + + $updated = Permission::create($permission); + + return response()->json(['success' => $updated]); + } + + public function get($id) + { + return Permission::findOrFail($id); + } + + public function update($id, Request $request) + { + $permission = $request->all(); + + $rules = [ + 'name' => 'required|string', + ]; + + $validator = Validator::make($permission, $rules); + if ($validator->fails()) { + return response()->json(['errors' => $validator->errors()], 400); + } + + $updated = Permission::findOrFail($id)->update($permission); + + return response()->json(['success' => $updated]); + } + + public function delete($id) + { + return Permission::destroy($id); + } +} diff --git a/app/Actions/SampleRoleApi.php b/app/Actions/SampleRoleApi.php new file mode 100644 index 0000000..436a0bd --- /dev/null +++ b/app/Actions/SampleRoleApi.php @@ -0,0 +1,171 @@ + 'Best for business owners and company administrators', + 'developer' => 'Best for developers or people primarily using the API', + 'analyst' => 'Best for people who need full access to analytics data, but don\'t need to update business settings', + 'support' => 'Best for employees who regularly refund payments and respond to disputes', + 'trial' => 'Best for people who need to preview content data, but don\'t need to make any updates', + ]; + + public function datatableList(Request $request) + { + $draw = $request->input('draw', 0); + $start = $request->input('start', 0); + $length = $request->input('length', 10); + $columns = $request->input('columns'); + $searchValue = $request->input('search.value'); + + $orderColumn = $request->input('order.0.column', 0); // Get the order column index + $orderDir = $request->input('order.0.dir', 'asc'); // Get the order direction (ASC or DESC) + + $query = Role::query()->with('permissions')->with('users'); + + if ($searchValue) { + $searchColumns = ['name']; + $query->where(function ($query) use ($searchValue, $searchColumns) { + foreach ($searchColumns as $column) { + $query->orWhere(DB::raw("LOWER($column)"), 'LIKE', '%' . strtolower($searchValue) . '%'); + } + }); + } + + // Get the column name for ordering based on the orderColumn index + $orderColumnName = $columns[$orderColumn]['data'] ?? 'id'; + + // Apply ordering to the query + $query->orderBy($orderColumnName, $orderDir); + + $totalRecords = $query->count(); + + $records = $query->offset($start)->limit($length)->get(); + + foreach ($records as $i => $role) { + $records[$i]->description = $this->roles_description[$role->name] ?? ''; + } + + $data = [ + 'draw' => $draw, + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $totalRecords, + 'data' => $records, + 'orderColumnName' => $orderColumnName, + ]; + + return $data; + } + + public function usersDatatableList(Request $request) + { + $role_id = $request->input('id', 0); + $draw = $request->input('draw', 0); + $start = $request->input('start', 0); + $length = $request->input('length', 10); + $columns = $request->input('columns'); + $searchValue = $request->input('search.value'); + + $orderColumn = $request->input('order.0.column', 0); // Get the order column index + $orderDir = $request->input('order.0.dir', 'asc'); // Get the order direction (ASC or DESC) + + $query = User::whereHas('roles', function ($query) use ($role_id) { + $query->where('id', $role_id); + })->with('roles'); + + if ($searchValue) { + $searchColumns = ['name']; + $query->where(function ($query) use ($searchValue, $searchColumns) { + foreach ($searchColumns as $column) { + $query->orWhere(DB::raw("LOWER($column)"), 'LIKE', '%' . strtolower($searchValue) . '%'); + } + }); + } + + // Get the column name for ordering based on the orderColumn index + $orderColumnName = $columns[$orderColumn]['data'] ?? 'id'; + + // Apply ordering to the query + $query->orderBy($orderColumnName, $orderDir); + + $totalRecords = $query->count(); + + $records = $query->offset($start)->limit($length)->get(); + + $data = [ + 'role_id' => $role_id, + 'draw' => $draw, + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $totalRecords, + 'data' => $records, + 'orderColumnName' => $orderColumnName, + ]; + + return $data; + } + + public function create(Request $request) + { + $role = $request->all(); + + $rules = [ + 'name' => 'required|string', + ]; + + $validator = Validator::make($role, $rules); + if ($validator->fails()) { + return response()->json(['errors' => $validator->errors()], 400); + } + + $updated = Role::create($role); + + return response()->json(['success' => $updated]); + } + + public function get($id, $relations = ['permissions', 'users']) + { + return Role::with($relations)->findOrFail($id); + } + + public function update($id, Request $request) + { + $role = $request->all(); + + $rules = [ + 'name' => 'required|string', + ]; + + $validator = Validator::make($role, $rules); + if ($validator->fails()) { + return response()->json(['errors' => $validator->errors()], 400); + } + + $updated = Role::findOrFail($id)->update($role); + + return response()->json(['success' => $updated]); + } + + public function delete($id) + { + return Role::destroy($id); + } + + public function deleteUser($id, $user_id = null) + { + $user = User::find($user_id); + + if ($user) { + return $user->roles()->detach($id); + } + + return false; + } +} diff --git a/app/Actions/SampleUserApi.php b/app/Actions/SampleUserApi.php new file mode 100644 index 0000000..2e5e7be --- /dev/null +++ b/app/Actions/SampleUserApi.php @@ -0,0 +1,102 @@ +input('draw', 0); + $start = $request->input('start', 0); + $length = $request->input('length', 10); + $columns = $request->input('columns'); + $searchValue = $request->input('search.value'); + + $orderColumn = $request->input('order.0.column', 0); // Get the order column index + $orderDir = $request->input('order.0.dir', 'asc'); // Get the order direction (ASC or DESC) + + $query = User::query()->with('roles'); + + if ($searchValue) { + $searchColumns = ['name', 'email']; + $query->where(function ($query) use ($searchValue, $searchColumns) { + foreach ($searchColumns as $column) { + $query->orWhere(DB::raw("LOWER($column)"), 'LIKE', '%' . strtolower($searchValue) . '%'); + } + }); + } + + // Get the column name for ordering based on the orderColumn index + $orderColumnName = $columns[$orderColumn]['data'] ?? 'id'; + + // exclude core user for demo purpose + $query->whereNotIn('id', [1]); + + // Apply ordering to the query + $query->orderBy($orderColumnName, $orderDir); + + $totalRecords = $query->count(); + + $records = $query->offset($start)->limit($length)->get(); + + $data = [ + 'draw' => $draw, + 'recordsTotal' => $totalRecords, + 'recordsFiltered' => $totalRecords, + 'data' => $records, + 'orderColumnName' => $orderColumnName, + ]; + + return $data; + } + + public function create(Request $request) + { + $user = $request->all(); + + $rules = [ + 'name' => 'required|string', + 'email' => 'required|email|unique:users,email', + ]; + + $validator = Validator::make($user, $rules); + if ($validator->fails()) { + return response()->json(['errors' => $validator->errors()], 400); + } + + $updated = User::create($user); + + return response()->json(['success' => $updated]); + } + + public function get($id) + { + return User::findOrFail($id); + } + + public function update($id, Request $request) + { + $data = $request->validate([ + 'name' => 'required|string', + 'email' => 'required|email|unique:users,email,' . $id, + 'role' => 'required|string', + ]); + + $user = User::findOrFail($id); + $user->update($data); + + $user->assignRole($request->role); + + return response()->json(['success' => true]); + } + + public function delete($id) + { + return User::destroy($id); + } +} diff --git a/app/DataTables/PermissionsDataTable.php b/app/DataTables/PermissionsDataTable.php index 24ac9cc..4c35e0d 100644 --- a/app/DataTables/PermissionsDataTable.php +++ b/app/DataTables/PermissionsDataTable.php @@ -24,13 +24,13 @@ class PermissionsDataTable extends DataTable }) ->addColumn('assigned_to', function (Permission $permission) { $roles = $permission->roles; - return view('pages.apps.user-management.permissions.columns._assign-to', compact('roles')); + return view('pages/apps.user-management.permissions.columns._assign-to', compact('roles')); }) ->editColumn('created_at', function (Permission $permission) { return $permission->created_at->format('d M Y, h:i a'); }) ->addColumn('actions', function (Permission $permission) { - return view('pages.apps.user-management.permissions.columns._actions', compact('permission')); + return view('pages/apps.user-management.permissions.columns._actions', compact('permission')); }) ->setRowId('id'); } @@ -56,7 +56,7 @@ class PermissionsDataTable extends DataTable ->addTableClass('table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer text-gray-600 fw-semibold') ->setTableHeadClass('text-start text-muted fw-bold fs-7 text-uppercase gs-0') ->orderBy(0) - ->drawCallback("function() {" . file_get_contents(resource_path('views/pages//apps/user-management/permissions/columns/_draw-scripts.js')) . "}"); + ->drawCallback("function() {" . file_get_contents(resource_path('views/pages/apps/user-management/permissions/columns/_draw-scripts.js')) . "}"); } /** diff --git a/app/DataTables/UsersAssignedRoleDataTable.php b/app/DataTables/UsersAssignedRoleDataTable.php index fc1d859..39b2e7b 100644 --- a/app/DataTables/UsersAssignedRoleDataTable.php +++ b/app/DataTables/UsersAssignedRoleDataTable.php @@ -23,13 +23,13 @@ class UsersAssignedRoleDataTable extends DataTable return (new EloquentDataTable($query)) ->rawColumns(['user']) ->editColumn('user', function (User $user) { - return view('pages.apps.user-management.roles.columns._user', compact('user')); + return view('pages/apps.user-management.roles.columns._user', compact('user')); }) ->editColumn('created_at', function (User $user) { return $user->created_at->format('d M Y, h:i a'); }) ->addColumn('action', function (User $user) { - return view('pages.apps.user-management.roles.columns._actions', compact('user')); + return view('pages/apps.user-management.roles.columns._actions', compact('user')); }) ->setRowId('id'); } @@ -57,7 +57,7 @@ class UsersAssignedRoleDataTable extends DataTable ->addTableClass('table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer text-gray-600 fw-semibold') ->setTableHeadClass('text-start text-muted fw-bold fs-7 text-uppercase gs-0') ->orderBy(1) - ->drawCallback("function() {" . file_get_contents(resource_path('views/pages//apps/user-management/users/columns/_draw-scripts.js')) . "}"); + ->drawCallback("function() {" . file_get_contents(resource_path('views/pages/apps/user-management/users/columns/_draw-scripts.js')) . "}"); } /** diff --git a/app/DataTables/UsersDataTable.php b/app/DataTables/UsersDataTable.php index 0f10ede..885668f 100644 --- a/app/DataTables/UsersDataTable.php +++ b/app/DataTables/UsersDataTable.php @@ -21,7 +21,7 @@ class UsersDataTable extends DataTable return (new EloquentDataTable($query)) ->rawColumns(['user', 'last_login_at']) ->editColumn('user', function (User $user) { - return view('pages.apps.user-management.users.columns._user', compact('user')); + return view('pages/apps.user-management.users.columns._user', compact('user')); }) ->editColumn('role', function (User $user) { return ucwords($user->roles->first()?->name); @@ -33,7 +33,7 @@ class UsersDataTable extends DataTable return $user->created_at->format('d M Y, h:i a'); }) ->addColumn('action', function (User $user) { - return view('pages.apps.user-management.users.columns._actions', compact('user')); + return view('pages/apps.user-management.users.columns._actions', compact('user')); }) ->setRowId('id'); } @@ -60,7 +60,7 @@ class UsersDataTable extends DataTable ->addTableClass('table align-middle table-row-dashed fs-6 gy-5 dataTable no-footer text-gray-600 fw-semibold') ->setTableHeadClass('text-start text-muted fw-bold fs-7 text-uppercase gs-0') ->orderBy(2) - ->drawCallback("function() {" . file_get_contents(resource_path('views/pages//apps/user-management/users/columns/_draw-scripts.js')) . "}"); + ->drawCallback("function() {" . file_get_contents(resource_path('views/pages/apps/user-management/users/columns/_draw-scripts.js')) . "}"); } /** diff --git a/app/Http/Controllers/Apps/PermissionManagementController.php b/app/Http/Controllers/Apps/PermissionManagementController.php index a6eba11..959ec44 100644 --- a/app/Http/Controllers/Apps/PermissionManagementController.php +++ b/app/Http/Controllers/Apps/PermissionManagementController.php @@ -13,7 +13,7 @@ class PermissionManagementController extends Controller */ public function index(PermissionsDataTable $dataTable) { - return $dataTable->render('pages.apps.user-management.permissions.list'); + return $dataTable->render('pages/apps.user-management.permissions.list'); } /** diff --git a/app/Http/Controllers/Apps/RoleManagementController.php b/app/Http/Controllers/Apps/RoleManagementController.php index 07351d6..a6e9b79 100644 --- a/app/Http/Controllers/Apps/RoleManagementController.php +++ b/app/Http/Controllers/Apps/RoleManagementController.php @@ -14,7 +14,7 @@ class RoleManagementController extends Controller */ public function index() { - return view('pages.apps.user-management.roles.list'); + return view('pages/apps.user-management.roles.list'); } /** @@ -39,7 +39,7 @@ class RoleManagementController extends Controller public function show(Role $role, UsersAssignedRoleDataTable $dataTable) { return $dataTable->with('role', $role) - ->render('pages.apps.user-management.roles.show', compact('role')); + ->render('pages/apps.user-management.roles.show', compact('role')); } /** diff --git a/app/Http/Controllers/Apps/UserManagementController.php b/app/Http/Controllers/Apps/UserManagementController.php index 8c5ae18..5fcbf1b 100644 --- a/app/Http/Controllers/Apps/UserManagementController.php +++ b/app/Http/Controllers/Apps/UserManagementController.php @@ -14,7 +14,7 @@ class UserManagementController extends Controller */ public function index(UsersDataTable $dataTable) { - return $dataTable->render('pages.apps.user-management.users.list'); + return $dataTable->render('pages/apps.user-management.users.list'); } /** @@ -38,7 +38,7 @@ class UserManagementController extends Controller */ public function show(User $user) { - return view('pages.apps.user-management.users.show', compact('user')); + return view('pages/apps.user-management.users.show', compact('user')); } /** diff --git a/app/Http/Controllers/Auth/AuthenticatedSessionController.php b/app/Http/Controllers/Auth/AuthenticatedSessionController.php index 2d46878..12e315f 100644 --- a/app/Http/Controllers/Auth/AuthenticatedSessionController.php +++ b/app/Http/Controllers/Auth/AuthenticatedSessionController.php @@ -20,7 +20,7 @@ class AuthenticatedSessionController extends Controller { addJavascriptFile('assets/js/custom/authentication/sign-in/general.js'); - return view('pages.auth.login'); + return view('pages/auth.login'); } /** diff --git a/app/Http/Controllers/Auth/ConfirmablePasswordController.php b/app/Http/Controllers/Auth/ConfirmablePasswordController.php index 525bea3..f3290d1 100644 --- a/app/Http/Controllers/Auth/ConfirmablePasswordController.php +++ b/app/Http/Controllers/Auth/ConfirmablePasswordController.php @@ -17,7 +17,7 @@ class ConfirmablePasswordController extends Controller */ public function show() { - return view('pages.auth.confirm-password'); + return view('pages/auth.confirm-password'); } /** diff --git a/app/Http/Controllers/Auth/EmailVerificationPromptController.php b/app/Http/Controllers/Auth/EmailVerificationPromptController.php index 1f2efa3..3d7b3fa 100644 --- a/app/Http/Controllers/Auth/EmailVerificationPromptController.php +++ b/app/Http/Controllers/Auth/EmailVerificationPromptController.php @@ -18,6 +18,6 @@ class EmailVerificationPromptController extends Controller { return $request->user()->hasVerifiedEmail() ? redirect()->intended(RouteServiceProvider::HOME) - : view('pages.auth.verify-email'); + : view('pages/auth.verify-email'); } } diff --git a/app/Http/Controllers/Auth/NewPasswordController.php b/app/Http/Controllers/Auth/NewPasswordController.php index d12d28c..3bdaf62 100644 --- a/app/Http/Controllers/Auth/NewPasswordController.php +++ b/app/Http/Controllers/Auth/NewPasswordController.php @@ -22,7 +22,7 @@ class NewPasswordController extends Controller { addJavascriptFile('assets/js/custom/authentication/reset-password/new-password.js'); - return view('pages.auth.reset-password', ['request' => $request]); + return view('pages/auth.reset-password', ['request' => $request]); } /** diff --git a/app/Http/Controllers/Auth/PasswordResetLinkController.php b/app/Http/Controllers/Auth/PasswordResetLinkController.php index a4ab0ce..3832ce9 100644 --- a/app/Http/Controllers/Auth/PasswordResetLinkController.php +++ b/app/Http/Controllers/Auth/PasswordResetLinkController.php @@ -17,7 +17,7 @@ class PasswordResetLinkController extends Controller { addJavascriptFile('assets/js/custom/authentication/reset-password/reset-password.js'); - return view('pages.auth.forgot-password'); + return view('pages/auth.forgot-password'); } /** diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php index f4607c9..2524cc7 100644 --- a/app/Http/Controllers/Auth/RegisteredUserController.php +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -23,7 +23,7 @@ class RegisteredUserController extends Controller { addJavascriptFile('assets/js/custom/authentication/sign-up/general.js'); - return view('pages.auth.register'); + return view('pages/auth.register'); } /** diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 787adfc..d8cda01 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -8,6 +8,6 @@ class DashboardController extends Controller { addVendors(['amcharts', 'amcharts-maps', 'amcharts-stock']); - return view('pages.dashboards.index'); + return view('pages/dashboards.index'); } } diff --git a/app/Http/Livewire/User/AddUserModal.php b/app/Http/Livewire/User/AddUserModal.php index 202da84..50e379b 100644 --- a/app/Http/Livewire/User/AddUserModal.php +++ b/app/Http/Livewire/User/AddUserModal.php @@ -15,6 +15,7 @@ class AddUserModal extends Component { use WithFileUploads; + public $user_id; public $name; public $email; public $role; @@ -76,10 +77,16 @@ class AddUserModal extends Component } // Create a new user record in the database - $user = User::updateOrCreate([ + $user = $this->user_id ? User::find($this->user_id) : User::updateOrCreate([ 'email' => $this->email, ], $data); + if ($this->edit_mode) { + foreach ($data as $k => $v) { + $user->$k = $v; + } + } + if ($this->edit_mode) { // Assign selected role for user $user->syncRoles($this->role); @@ -123,6 +130,7 @@ class AddUserModal extends Component $user = User::find($id); + $this->user_id = $user->id; $this->saved_avatar = $user->profile_photo_url; $this->name = $user->name; $this->email = $user->email; diff --git a/app/Models/Address.php b/app/Models/Address.php new file mode 100644 index 0000000..14f5391 --- /dev/null +++ b/app/Models/Address.php @@ -0,0 +1,11 @@ +profile_photo_path; } + + public function addresses() + { + return $this->hasMany(Address::class); + } + + public function getDefaultAddressAttribute() + { + return $this->addresses?->first(); + } } diff --git a/database/factories/AddressFactory.php b/database/factories/AddressFactory.php new file mode 100644 index 0000000..cf06136 --- /dev/null +++ b/database/factories/AddressFactory.php @@ -0,0 +1,33 @@ + + */ +class AddressFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + $user = User::inRandomOrder()->first(); // Retrieve a random user + + return [ + 'user_id' => $user->id, + 'address_line_1' => $this->faker->address(), + 'address_line_2' => null, + 'city' => $this->faker->city(), + 'postal_code' => $this->faker->postcode(), + 'state' => $this->faker->state(), + 'country' => $this->faker->country(), + 'type' => 1, + ]; + } +} diff --git a/database/migrations/2023_10_09_041104_create_addresses_table.php b/database/migrations/2023_10_09_041104_create_addresses_table.php new file mode 100644 index 0000000..a911631 --- /dev/null +++ b/database/migrations/2023_10_09_041104_create_addresses_table.php @@ -0,0 +1,35 @@ +id(); + $table->unsignedBigInteger('user_id'); + $table->string('address_line_1'); + $table->string('address_line_2')->nullable(); + $table->string('city'); + $table->string('postal_code'); + $table->string('state'); + $table->string('country'); + $table->unsignedTinyInteger('type'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('addresses'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 526f992..5b762e7 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -3,6 +3,8 @@ namespace Database\Seeders; // use Illuminate\Database\Console\Seeds\WithoutModelEvents; + +use App\Models\Address; use Illuminate\Database\Seeder; class DatabaseSeeder extends Seeder @@ -19,7 +21,9 @@ class DatabaseSeeder extends Seeder RolesPermissionsSeeder::class, ]); - \App\Models\User::factory(10)->create(); + \App\Models\User::factory(20)->create(); + + Address::factory(20)->create(); // \App\Models\User::factory()->create([ // 'name' => 'Test User', diff --git a/resources/_keenthemes/src/.DS_Store b/resources/_keenthemes/src/.DS_Store index a362885..419dfbb 100644 Binary files a/resources/_keenthemes/src/.DS_Store and b/resources/_keenthemes/src/.DS_Store differ diff --git a/resources/_keenthemes/src/js/components/app.js b/resources/_keenthemes/src/js/components/app.js index 9ce55a8..41a04fc 100644 --- a/resources/_keenthemes/src/js/components/app.js +++ b/resources/_keenthemes/src/js/components/app.js @@ -248,7 +248,11 @@ var KTApp = function () { var parentEl = document.querySelector(element.getAttribute('data-dropdown-parent')); if (parentEl && parentEl.hasAttribute("data-kt-menu")) { - var menu = new KTMenu(parentEl); + var menu = KTMenu.getInstance(parentEl); + + if (!menu) { + menu = new KTMenu(parentEl); + } if (menu) { $(element).on('select2:unselect', function (e) { @@ -385,7 +389,8 @@ var KTApp = function () { return; } - initTinySlider(el); + const obj = initTinySlider(el); + KTUtil.data(el).set('tns', tns); el.setAttribute("data-kt-initialized", "1"); }); diff --git a/resources/_keenthemes/src/js/components/dialer.js b/resources/_keenthemes/src/js/components/dialer.js index e9620b1..a311732 100644 --- a/resources/_keenthemes/src/js/components/dialer.js +++ b/resources/_keenthemes/src/js/components/dialer.js @@ -16,6 +16,7 @@ var KTDialer = function(element, options) { min: null, max: null, step: 1, + currency: false, decimals: 0, prefix: "", suffix: "" @@ -46,6 +47,10 @@ var KTDialer = function(element, options) { the.inputElement = the.element.querySelector('input[type]'); // Set Values + if (_getOption('currency') === 'true') { + the.options.currency = true; + } + if (_getOption('decimals')) { the.options.decimals = parseInt(_getOption('decimals')); } @@ -176,7 +181,13 @@ var KTDialer = function(element, options) { // Format var _format = function(val){ - return the.options.prefix + parseFloat(val).toFixed(the.options.decimals) + the.options.suffix; + val = parseFloat(val).toFixed(the.options.decimals); + + if (the.options.currency) { + val = val.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); + } + + return the.options.prefix + val + the.options.suffix; } // Get option diff --git a/resources/_keenthemes/src/js/components/drawer.js b/resources/_keenthemes/src/js/components/drawer.js index 44b4654..d5d243a 100644 --- a/resources/_keenthemes/src/js/components/drawer.js +++ b/resources/_keenthemes/src/js/components/drawer.js @@ -42,6 +42,7 @@ var KTDrawer = function(element, options) { the.name = the.element.getAttribute('data-kt-drawer-name'); the.shown = false; the.lastWidth; + the.lastHeight; the.toggleElement = null; // Set initialized @@ -137,6 +138,7 @@ var KTDrawer = function(element, options) { var _update = function() { var width = _getWidth(); + var height = _getHeight(); var direction = _getOption('direction'); var top = _getOption('top'); @@ -156,8 +158,15 @@ var KTDrawer = function(element, options) { KTUtil.addClass(the.element, the.options.baseClass); KTUtil.addClass(the.element, the.options.baseClass + '-' + direction); - KTUtil.css(the.element, 'width', width, true); - the.lastWidth = width; + if (width) { + KTUtil.css(the.element, 'width', width, true); + the.lastWidth = width; + } + + if (height) { + KTUtil.css(the.element, 'height', height, true); + the.lastHeight = height; + } if (top) { KTUtil.css(the.element, 'top', top); @@ -187,6 +196,7 @@ var KTDrawer = function(element, options) { KTUtil.removeClass(the.element, the.options.baseClass + '-' + direction); KTUtil.css(the.element, 'width', ''); + KTUtil.css(the.element, 'height', ''); if (top) { KTUtil.css(the.element, 'top', ''); @@ -275,6 +285,16 @@ var KTDrawer = function(element, options) { return width; } + var _getHeight = function() { + var height = _getOption('height'); + + if ( height === 'auto') { + height = KTUtil.css(the.element, 'height'); + } + + return height; + } + var _destroy = function() { KTUtil.data(the.element).remove('drawer'); } diff --git a/resources/_keenthemes/src/js/components/menu.js b/resources/_keenthemes/src/js/components/menu.js index cbef2ed..0ae1019 100644 --- a/resources/_keenthemes/src/js/components/menu.js +++ b/resources/_keenthemes/src/js/components/menu.js @@ -61,6 +61,10 @@ var KTMenu = function(element, options) { // Event Handlers // Toggle handler var _click = function(element, e) { + if (element.hasAttribute('href') && element.getAttribute("href") !== "#") { + return; + } + e.preventDefault(); if (the.disabled === true) { diff --git a/resources/_keenthemes/src/js/custom/apps/calendar/calendar.js b/resources/_keenthemes/src/js/custom/apps/calendar/calendar.js index 7faaf52..4e62f6b 100644 --- a/resources/_keenthemes/src/js/custom/apps/calendar/calendar.js +++ b/resources/_keenthemes/src/js/custom/apps/calendar/calendar.js @@ -101,7 +101,7 @@ var KTAppCalendar = function () { start: YM + '-01', end: YM + '-02', description: 'Toto lorem ipsum dolor sit incid idunt ut', - className: "fc-event-danger fc-event-solid-warning", + className: "border-success bg-success text-inverse-success", location: 'Federation Square' }, { @@ -110,7 +110,7 @@ var KTAppCalendar = function () { start: YM + '-14T13:30:00', description: 'Lorem ipsum dolor incid idunt ut labore', end: YM + '-14T14:30:00', - className: "fc-event-success", + className: "border-warning bg-warning text-inverse-success", location: 'Meeting Room 7.03' }, { @@ -119,9 +119,8 @@ var KTAppCalendar = function () { start: YM + '-02', description: 'Lorem ipsum dolor sit tempor incid', end: YM + '-03', - className: "fc-event-primary", + className: "border-info bg-info text-info-success", location: 'Seoul, Korea' - }, { id: uid(), diff --git a/resources/_keenthemes/src/js/custom/apps/ecommerce/catalog/save-product.js b/resources/_keenthemes/src/js/custom/apps/ecommerce/catalog/save-product.js index 33cbe95..59a9296 100644 --- a/resources/_keenthemes/src/js/custom/apps/ecommerce/catalog/save-product.js +++ b/resources/_keenthemes/src/js/custom/apps/ecommerce/catalog/save-product.js @@ -297,7 +297,7 @@ var KTAppEcommerceSaveProduct = function () { } } }, - 'sku': { + 'barcode': { validators: { notEmpty: { message: 'Product barcode is required' diff --git a/resources/_keenthemes/src/js/widgets/charts/widget-47.js b/resources/_keenthemes/src/js/widgets/charts/widget-47.js new file mode 100644 index 0000000..c725001 --- /dev/null +++ b/resources/_keenthemes/src/js/widgets/charts/widget-47.js @@ -0,0 +1,156 @@ +"use strict"; + +// Class definition +var KTChartsWidget47 = function () { + var chart = { + self: null, + rendered: false + }; + + + // Private methods + var initChart = function(chart) { + var element = document.getElementById("kt_charts_widget_47"); + + if (!element) { + return; + } + + var height = parseInt(KTUtil.css(element, 'height')); + var baseColor = KTUtil.getCssVariableValue('--bs-white'); + var lightColor = KTUtil.getCssVariableValue('--bs-white'); + + var options = { + series: [{ + name: 'Sales', + data: [5, 5, 15, 15, 19, 16, 27, 24, 34, 25, 40, 30, 19, 17, 22, 10, 14, 14] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + } + }, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: "gradient", + gradient: { + shadeIntensity: 1, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 80, 100] + } + }, + stroke: { + curve: 'smooth', + show: true, + width: 2, + colors: [baseColor] + }, + xaxis: { + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false + }, + crosshairs: { + position: 'front', + stroke: { + color: baseColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: false + } + }, + yaxis: { + labels: { + show: false + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + enabled: false + }, + colors: [lightColor], + grid: { + yaxis: { + lines: { + show: false + } + } + }, + markers: { + strokeColor: baseColor, + strokeWidth: 2 + } + }; + + chart.self = new ApexCharts(element, options); + + // Set timeout to properly get the parent elements width + setTimeout(function() { + chart.self.render(); + chart.rendered = true; + }, 200); + } + + // Public methods + return { + init: function () { + initChart(chart); + + // Update chart on theme mode change + KTThemeMode.on("kt.thememode.change", function() { + if (chart.rendered) { + chart.self.destroy(); + } + + initChart(chart); + }); + } + } +}(); + +// Webpack support +if (typeof module !== 'undefined') { + module.exports = KTChartsWidget47; +} + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTChartsWidget47.init(); +}); \ No newline at end of file diff --git a/resources/_keenthemes/src/js/widgets/charts/widget-48.js b/resources/_keenthemes/src/js/widgets/charts/widget-48.js new file mode 100644 index 0000000..d509af2 --- /dev/null +++ b/resources/_keenthemes/src/js/widgets/charts/widget-48.js @@ -0,0 +1,156 @@ +"use strict"; + +// Class definition +var KTChartsWidget48 = function () { + var chart = { + self: null, + rendered: false + }; + + + // Private methods + var initChart = function(chart) { + var element = document.getElementById("kt_charts_widget_48"); + + if (!element) { + return; + } + + var height = parseInt(KTUtil.css(element, 'height')); + var baseColor = KTUtil.getCssVariableValue('--bs-danger'); + var lightColor = KTUtil.getCssVariableValue('--bs-danger'); + + var options = { + series: [{ + name: 'Sales', + data: [5, 5, 15, 15, 19, 16, 27, 24, 34, 25, 40, 30, 19, 17, 22, 10, 14, 14] + }], + chart: { + fontFamily: 'inherit', + type: 'area', + height: height, + toolbar: { + show: false + } + }, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + fill: { + type: "gradient", + gradient: { + shadeIntensity: 1, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 120, 50] + } + }, + stroke: { + curve: 'smooth', + show: true, + width: 2, + colors: [baseColor] + }, + xaxis: { + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + show: false + }, + crosshairs: { + position: 'front', + stroke: { + color: baseColor, + width: 1, + dashArray: 3 + } + }, + tooltip: { + enabled: false, + } + }, + yaxis: { + labels: { + show: false + } + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + enabled: false + }, + colors: [lightColor], + grid: { + yaxis: { + lines: { + show: false + } + } + }, + markers: { + strokeColor: baseColor, + strokeWidth: 2 + } + }; + + chart.self = new ApexCharts(element, options); + + // Set timeout to properly get the parent elements width + setTimeout(function() { + chart.self.render(); + chart.rendered = true; + }, 200); + } + + // Public methods + return { + init: function () { + initChart(chart); + + // Update chart on theme mode change + KTThemeMode.on("kt.thememode.change", function() { + if (chart.rendered) { + chart.self.destroy(); + } + + initChart(chart); + }); + } + } +}(); + +// Webpack support +if (typeof module !== 'undefined') { + module.exports = KTChartsWidget48; +} + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTChartsWidget48.init(); +}); \ No newline at end of file diff --git a/resources/_keenthemes/src/js/widgets/tables/widget-14.js b/resources/_keenthemes/src/js/widgets/tables/widget-14.js index 7db5d83..b305337 100644 --- a/resources/_keenthemes/src/js/widgets/tables/widget-14.js +++ b/resources/_keenthemes/src/js/widgets/tables/widget-14.js @@ -209,7 +209,4 @@ if (typeof module !== 'undefined') { // On document ready KTUtil.onDOMContentLoaded(function() { KTTablesWidget14.init(); -}); - - - \ No newline at end of file +}); \ No newline at end of file diff --git a/resources/_keenthemes/src/media/svg/brand-logos/youtube-play-2.svg b/resources/_keenthemes/src/media/svg/brand-logos/youtube-play-2.svg new file mode 100644 index 0000000..1ecf3f2 --- /dev/null +++ b/resources/_keenthemes/src/media/svg/brand-logos/youtube-play-2.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/_keenthemes/src/plugins/keenicons/duotone/demo.html b/resources/_keenthemes/src/plugins/keenicons/duotone/demo.html index a45579d..75f7642 100644 --- a/resources/_keenthemes/src/plugins/keenicons/duotone/demo.html +++ b/resources/_keenthemes/src/plugins/keenicons/duotone/demo.html @@ -9,10 +9,10 @@
-

Font Name: icomoon (Glyphs: 573)

+

Font Name: KeenIcons (Glyphs: 573)

-

Grid Size: Unknown

+

Grid Size: 24

@@ -8047,12 +8047,12 @@ -
  +
 
-

Generated by IcoMoon

+

Generated by IcoMoon

diff --git a/resources/_keenthemes/src/plugins/keenicons/duotone/style.css b/resources/_keenthemes/src/plugins/keenicons/duotone/style.css index fc5f2f7..83ec6f2 100644 --- a/resources/_keenthemes/src/plugins/keenicons/duotone/style.css +++ b/resources/_keenthemes/src/plugins/keenicons/duotone/style.css @@ -19,10 +19,23 @@ font-variant: normal; text-transform: none; line-height: 1; - position: relative; +/* Better Font Rendering =========== */ display: inline-flex; - direction: ltr; + direction: ltr; + position: relative; + display: inline-flex; + direction: ltr; + position: relative; + display: inline-flex; + direction: ltr; + position: relative; + display: inline-flex; + direction: ltr; + position: relative; + display: inline-flex; + direction: ltr; + position: relative; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } diff --git a/resources/_keenthemes/src/plugins/keenicons/outline/demo.html b/resources/_keenthemes/src/plugins/keenicons/outline/demo.html index d871ee8..502511d 100644 --- a/resources/_keenthemes/src/plugins/keenicons/outline/demo.html +++ b/resources/_keenthemes/src/plugins/keenicons/outline/demo.html @@ -9,10 +9,10 @@
-

Font Name: icomoon (Glyphs: 573)

+

Font Name: KeenIcons (Glyphs: 573)

-

Grid Size: Unknown

+

Grid Size: 24

@@ -8047,12 +8047,12 @@ -
  +
 
-

Generated by IcoMoon

+

Generated by IcoMoon

diff --git a/resources/_keenthemes/src/plugins/keenicons/solid/demo.html b/resources/_keenthemes/src/plugins/keenicons/solid/demo.html index 3c0d416..69e3cd6 100644 --- a/resources/_keenthemes/src/plugins/keenicons/solid/demo.html +++ b/resources/_keenthemes/src/plugins/keenicons/solid/demo.html @@ -9,10 +9,10 @@
-

Font Name: icomoon (Glyphs: 573)

+

Font Name: KeenIcons (Glyphs: 573)

-

Grid Size: Unknown

+

Grid Size: 24

@@ -8047,12 +8047,12 @@ -
  +
 
-

Generated by IcoMoon

+

Generated by IcoMoon

diff --git a/resources/_keenthemes/src/sass/.DS_Store b/resources/_keenthemes/src/sass/.DS_Store new file mode 100644 index 0000000..ab02430 Binary files /dev/null and b/resources/_keenthemes/src/sass/.DS_Store differ diff --git a/resources/_keenthemes/src/sass/_init.scss b/resources/_keenthemes/src/sass/_init.scss index 04a714d..e0fa29e 100644 --- a/resources/_keenthemes/src/sass/_init.scss +++ b/resources/_keenthemes/src/sass/_init.scss @@ -13,6 +13,7 @@ @import "components/variables.custom"; @import "components/variables"; @import "components/variables-dark"; +@import "components/variables.override"; // Bootstrap initializaton @import "bootstrap/scss/functions"; diff --git a/resources/_keenthemes/src/sass/components/_card.scss b/resources/_keenthemes/src/sass/components/_card.scss index 50e3155..6ab6fbb 100644 --- a/resources/_keenthemes/src/sass/components/_card.scss +++ b/resources/_keenthemes/src/sass/components/_card.scss @@ -4,6 +4,9 @@ // Base .card { + --#{$prefix}card-box-shadow: var(--#{$prefix}root-card-box-shadow); + --#{$prefix}card-border-color: var(--#{$prefix}root-card-border-color); + @if ($card-border-enabled) { border: $card-border-width $card-border-style var(--#{$prefix}card-border-color); } @else { @@ -59,7 +62,7 @@ .card-label { font-weight: 500; font-size: 1.275rem; - color: var(--#{$prefix}text-dark); + color: var(--#{$prefix}text-gray-900); } .card-label { diff --git a/resources/_keenthemes/src/sass/components/_code.scss b/resources/_keenthemes/src/sass/components/_code.scss index 3ea1fa9..a22b2e1 100644 --- a/resources/_keenthemes/src/sass/components/_code.scss +++ b/resources/_keenthemes/src/sass/components/_code.scss @@ -5,11 +5,20 @@ code:not([class*="language-"]) { font-weight: $code-font-weight; color: var(--#{$prefix}code-color); - line-height: inherit; - font-size: inherit; + border: 1px solid var(--#{$prefix}code-border-color); background-color: var(--#{$prefix}code-bg); - padding: $code-padding; - margin: $code-margin; - box-shadow: var(--#{$prefix}code-box-shadow); @include border-radius($code-border-radius); + line-height: inherit; + font-size: $code-font-size; + padding: $code-padding; + margin: $code-margin; + box-shadow: $code-shadow; + + @each $name, $value in $theme-colors { + &.code-#{$name} { + color: var(--#{$prefix}#{$name}); + background-color: var(--#{$prefix}#{$name}-light); + border: 1px solid var(--#{$prefix}#{$name}); + } + } } diff --git a/resources/_keenthemes/src/sass/components/_drawer.scss b/resources/_keenthemes/src/sass/components/_drawer.scss index d88c826..97d22f3 100644 --- a/resources/_keenthemes/src/sass/components/_drawer.scss +++ b/resources/_keenthemes/src/sass/components/_drawer.scss @@ -23,6 +23,22 @@ transform: translateX(100%); } + &.drawer-bottom { + bottom: 0; + top: auto; + left: 0; + right: 0; + transform: translateY(100%); + } + + &.drawer-top { + top: 0; + bottom: auto; + left: 0; + right: 0; + transform: translateY(-100%); + } + &.drawer-on { transform: none; box-shadow: var(--#{$prefix}drawer-box-shadow); diff --git a/resources/_keenthemes/src/sass/components/_root.scss b/resources/_keenthemes/src/sass/components/_root.scss index 479a4dd..2557df3 100644 --- a/resources/_keenthemes/src/sass/components/_root.scss +++ b/resources/_keenthemes/src/sass/components/_root.scss @@ -48,6 +48,11 @@ --#{$prefix}#{$name}-inverse: #{$value}; } + // Contextual clarity state colors + @each $name, $value in $theme-clarity-colors { + --#{$prefix}#{$name}-clarity: #{$value}; + } + // Contextual rbg colors @each $name, $value in $theme-colors { --#{$prefix}#{$name}-rgb: #{to-rgb($value)}; @@ -83,6 +88,9 @@ --#{$prefix}input-solid-bg-focus: #{$input-solid-bg-focus}; --#{$prefix}input-solid-placeholder-color: #{$input-solid-placeholder-color}; + // Card + --#{$prefix}root-card-box-shadow: #{$card-box-shadow}; + --#{$prefix}root-card-border-color: #{$card-border-color}; // Tooltip --#{$prefix}tooltip-box-shadow: #{$tooltip-box-shadow-dark}; @@ -97,7 +105,8 @@ // Code --#{$prefix}code-bg: #{$code-bg}; - --#{$prefix}code-box-shadow: #{$code-box-shadow}; + --#{$prefix}code-shadow: #{$code-shadow}; + --#{$prefix}code-border-color: #{$code-border-color}; --#{$prefix}code-color: #{$code-color}; // Symbol @@ -195,6 +204,11 @@ --#{$prefix}#{$name}-inverse: #{$value}; } + // Contextual clarity state colors + @each $name, $value in $theme-clarity-colors-dark { + --#{$prefix}#{$name}-clarity: #{$value}; + } + // Contextual rbg colors @each $name, $value in $theme-colors-dark { --#{$prefix}#{$name}-rgb: #{to-rgb($value)}; @@ -234,7 +248,8 @@ --#{$prefix}tooltip-box-shadow: #{$tooltip-box-shadow-dark}; // Card - --#{$prefix}card-box-shadow: #{$card-box-shadow-dark}; + --#{$prefix}root-card-box-shadow: #{$card-box-shadow-dark}; + --#{$prefix}root-card-border-color: #{$card-border-color-dark}; // Table --#{$prefix}table-striped-bg: #{$table-striped-bg-dark}; @@ -246,7 +261,8 @@ // Code --#{$prefix}code-bg: #{$code-bg-dark}; - --#{$prefix}code-box-shadow: #{$code-box-shadow-dark}; + --#{$prefix}code-shadow: #{$code-shadow-dark}; + --#{$prefix}code-border-color: #{$code-border-color-dark}; --#{$prefix}code-color: #{$code-color-dark}; // Symbol diff --git a/resources/_keenthemes/src/sass/components/_scroll.scss b/resources/_keenthemes/src/sass/components/_scroll.scss index c4a3de1..22ef30b 100644 --- a/resources/_keenthemes/src/sass/components/_scroll.scss +++ b/resources/_keenthemes/src/sass/components/_scroll.scss @@ -79,33 +79,41 @@ @include scrollbar-color(transparent, var(--#{$prefix}scrollbar-color)); } -// Utilities -.scroll-ps { - padding-left: var(--#{$prefix}scrollbar-size) !important; +// Utilities +@each $breakpoint in map-keys($grid-breakpoints) { + @include media-breakpoint-up($breakpoint) { + $infix: breakpoint-infix($breakpoint, $grid-breakpoints); + + .scroll#{$infix}-ps { + padding-left: var(--#{$prefix}scrollbar-size) !important; + } + + .scroll#{$infix}-ms { + margin-left: var(--#{$prefix}scrollbar-size) !important; + } + + .scroll#{$infix}-mb { + margin-bottom: var(--#{$prefix}scrollbar-size) !important; + } + + .scroll#{$infix}-pe { + padding-right: var(--#{$prefix}scrollbar-size) !important; + } + + .scroll#{$infix}-me { + margin-right: var(--#{$prefix}scrollbar-size) !important; + } + + .scroll#{$infix}-px { + padding-left: var(--#{$prefix}scrollbar-size) !important; + padding-right: var(--#{$prefix}scrollbar-size) !important; + } + + .scroll#{$infix}-mx { + margin-left: var(--#{$prefix}scrollbar-size) !important; + margin-right: var(--#{$prefix}scrollbar-size) !important; + } + } } -.scroll-ms { - margin-left: var(--#{$prefix}scrollbar-size) !important; -} - -.scroll-mb { - margin-bottom: var(--#{$prefix}scrollbar-size) !important; -} - -.scroll-pe { - padding-right: var(--#{$prefix}scrollbar-size) !important; -} - -.scroll-me { - margin-right: var(--#{$prefix}scrollbar-size) !important; -} - -.scroll-px { - padding-left: var(--#{$prefix}scrollbar-size) !important; - padding-right: var(--#{$prefix}scrollbar-size) !important; -} - -.scroll-mx { - margin-left: var(--#{$prefix}scrollbar-size) !important; - margin-right: var(--#{$prefix}scrollbar-size) !important; -} \ No newline at end of file + diff --git a/resources/_keenthemes/src/sass/components/_tables.scss b/resources/_keenthemes/src/sass/components/_tables.scss index 06eb3ab..0e95798 100644 --- a/resources/_keenthemes/src/sass/components/_tables.scss +++ b/resources/_keenthemes/src/sass/components/_tables.scss @@ -59,6 +59,22 @@ border-collapse: separate; } + // Row Rounded + &.table-rows-rounded { + th,td { + &:first-child { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; + } + + &:last-child { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; + } + } + + } + // Flush &.table-flush { tr, th, td { diff --git a/resources/_keenthemes/src/sass/components/_timeline.scss b/resources/_keenthemes/src/sass/components/_timeline.scss index 08eca86..df24b1d 100644 --- a/resources/_keenthemes/src/sass/components/_timeline.scss +++ b/resources/_keenthemes/src/sass/components/_timeline.scss @@ -4,6 +4,10 @@ // Base .timeline { + // Variables + --#{$prefix}timeline-icon-size: #{$timeline-icon-size}; + --#{$prefix}timeline-icon-space: #{$timeline-icon-space}; + // Item .timeline-item { position: relative; @@ -27,17 +31,15 @@ position: absolute; z-index: 0; left: 0; - top:0; + top: var(--#{$prefix}timeline-icon-size); bottom: 0; transform: translate(50%); border-left-width: 1px; - border-left-style: dashed; + border-left-style: solid; border-left-color: var(--#{$prefix}gray-300); - } - - // Line solid - .timeline-line-solid { - border-left-style: solid !important; + width: var(--#{$prefix}timeline-icon-size); + margin-top: var(--#{$prefix}timeline-icon-space); + margin-bottom: var(--#{$prefix}timeline-icon-space); } // Icon @@ -45,6 +47,14 @@ z-index: 1; flex-shrink: 0; margin-right: 1rem; + width: var(--#{$prefix}timeline-icon-size); + height: var(--#{$prefix}timeline-icon-size); + display: flex; + text-align: center; + align-items: center; + justify-content: center; + border: 1px solid var(--#{$prefix}gray-300); + border-radius: 50%; } // Content @@ -72,4 +82,15 @@ } } } + + // Line solid + &.timeline-border-dashed { + .timeline-line { + border-left-style: dashed !important; + } + + .timeline-icon { + border-style: dashed !important; + } + } } diff --git a/resources/_keenthemes/src/sass/components/_tree.scss b/resources/_keenthemes/src/sass/components/_tree.scss new file mode 100644 index 0000000..ab56bc6 --- /dev/null +++ b/resources/_keenthemes/src/sass/components/_tree.scss @@ -0,0 +1,92 @@ +// +// Tree +// + +.tree { + // Css variables + --#{$prefix}tree-icon-size: #{$tree-icon-size}; + --#{$prefix}tree-icon-gap: #{$tree-icon-gap}; + --#{$prefix}tree-icon-color-open: var(--#{$prefix}success); + --#{$prefix}tree-icon-color-default: var(--#{$prefix}gray-500); + --#{$prefix}tree-icon-color-close: var(--#{$prefix}gray-500); + --#{$prefix}tree-line-color: var(--#{$prefix}gray-200); + + .tree-node { + padding-left: $tree-node-padding-x; + display: flex; + flex-direction: column; + align-items: start; + } + + .tree-sub { + padding: $tree-node-padding-y 0; + } + + .tree-content { + display: flex; + align-items: center; + padding: $tree-node-padding-y 0; + } + + .tree-wrapper { + padding-left: calc(var(--#{$prefix}tree-icon-size) + var(--#{$prefix}tree-icon-size)); + } + + .tree-section { + display: flex; + align-items: baseline; + padding-left: var(--#{$prefix}tree-icon-gap); + } + + .tree-toggle { + display: flex; + align-items: center; + width: var(--#{$prefix}tree-icon-size); + + .tree-icon-default { + font-size: 1.5rem; + color: var(--#{$prefix}tree-icon-color-default); + } + + .tree-icon-open { + font-size: 1.5rem; + color: var(--#{$prefix}tree-icon-color-open); + } + + .tree-icon-close { + font-size: 1.5rem; + color: var(--#{$prefix}tree-icon-color-close); + } + + &.collapsed { + .tree-icon-close { + display: flex; + } + + .tree-icon-open { + display: none; + } + } + + &:not(.collapsed) { + .tree-icon-close { + display: none; + } + + .tree-icon-open { + display: flex; + } + } + } + + & > .tree-node { + padding-left: 0 !important; + } + + &.tree-line { + .tree-sub { + border-left: 1px solid var(--#{$prefix}tree-line-color); + margin-left: calc(var(--#{$prefix}tree-icon-size) / 2); + } + } +} \ No newline at end of file diff --git a/resources/_keenthemes/src/sass/components/_utilities.scss b/resources/_keenthemes/src/sass/components/_utilities.scss index dfb48f5..3b60a2e 100644 --- a/resources/_keenthemes/src/sass/components/_utilities.scss +++ b/resources/_keenthemes/src/sass/components/_utilities.scss @@ -5,6 +5,10 @@ $utilities: map-merge( $utilities, ( + "cursor": ( + property: cursor, + values: help wait crosshair not-allowed zoom-in grab pointer + ), "position": ( property: position, responsive: true, diff --git a/resources/_keenthemes/src/sass/components/_variables-dark.scss b/resources/_keenthemes/src/sass/components/_variables-dark.scss index 6866423..a12139c 100644 --- a/resources/_keenthemes/src/sass/components/_variables-dark.scss +++ b/resources/_keenthemes/src/sass/components/_variables-dark.scss @@ -1,17 +1,19 @@ +// Bootstrap color system + // // Bootstrap & Custom Variables // Safely override any variable in _variables.custom.scss // -$gray-100-dark: #1b1b29 !default; -$gray-200-dark: #2B2B40 !default; -$gray-300-dark: #323248 !default; -$gray-400-dark: #474761 !default; -$gray-500-dark: #565674 !default; -$gray-600-dark: #6D6D80 !default; -$gray-700-dark: #92929F !default; -$gray-800-dark: #CDCDDE !default; -$gray-900-dark: #FFFFFF !default; +$gray-100-dark: #1B1C22 !default; +$gray-200-dark: #26272F !default; +$gray-300-dark: #363843 !default; +$gray-400-dark: #464852 !default; +$gray-500-dark: #636674 !default; +$gray-600-dark: #808290 !default; +$gray-700-dark: #9A9CAE !default; +$gray-800-dark: #B5B7C8 !default; +$gray-900-dark: #F5F5F5 !default; $grays-dark: ( "100": $gray-100-dark, @@ -30,90 +32,131 @@ $text-muted-dark: $gray-500-dark !default; // Bootstrap contextual colors // Primary colors -$primary-light-dark: #212E48 !default; +$primary-dark: #006AE6 !default; +$primary-active-dark: #107EFF !default; +$primary-light-dark: #172331 !default; +$primary-clarity-dark: rgba(#006AE6, 0.2) !default; +$primary-inverse-dark: $white !default; // Secondary colors -$secondary-dark: $gray-300-dark !default; -$secondary-active-dark: $gray-400-dark !default; -$secondary-light-dark: $gray-100-dark !default; -$secondary-inverse-dark: $gray-700-dark !default; +$secondary-dark: $gray-300-dark !default; +$secondary-active-dark: $gray-400-dark !default; +$secondary-light-dark: $gray-300-dark !default; +$secondary-clarity-dark: rgba($gray-300-dark, 0.2) !default; +$secondary-inverse-dark: $white !default; // Light colors -$light-dark: $gray-200-dark !default; -$light-active-dark: $gray-300-dark !default; -$light-inverse-dark: $gray-600-dark !default; +$light-dark: $gray-100-dark !default; +$light-active-dark: #1F212A !default; +$light-light-dark: #1F212A !default; +$light-clarity-dark: rgba(31, 33, 42, 0.20) !default; +$light-inverse-dark: $gray-600-dark !default; // Success colors -$success-light-dark: #1C3833 !default; +$success-dark: #00A261 !default; +$success-active-dark: #01BF73 !default; +$success-light-dark: #1F212A !default; +$success-clarity-dark: rgba(#00A261, 0.2) !default; +$success-inverse-dark: $white !default; // Info colors -$info-light-dark: #2F264F !default; +$info-dark: #883FFF !default; +$info-active-dark: #9E63FF !default; +$info-light-dark: #272134 !default; +$info-clarity-dark: rgba(#883FFF, 0.2) !default; +$info-inverse-dark: $white !default; // Warning colors -$warning-light-dark: #392F28 !default; +$warning-dark: #C59A00 !default; +$warning-active-dark: #D9AA00 !default; +$warning-light-dark: #242320 !default; +$warning-clarity-dark: rgba(#C59A00, 0.2) !default; +$warning-inverse-dark: $white !default; // Danger colors -$danger-light-dark: #3A2434 !default; +$danger-dark: #E42855 !default; +$danger-active-dark: #FF3767 !default; +$danger-light-dark: #302024 !default; +$danger-clarity-dark: rgba(#E42855, 0.2) !default; +$danger-inverse-dark: $white !default; // Dark colors -$dark-dark: $gray-900-dark !default; -$dark-active-dark: lighten($gray-900-dark, 3%) !default; -$dark-light-dark: $gray-200-dark !default; -$dark-inverse-dark: $gray-100-dark !default; +$dark-dark: #272A34 !default; +$dark-active-dark: #2D2F39 !default; +$dark-light-dark: #1E2027 !default; +$dark-clarity-dark: rgba(#272A34, 0.2) !default; +$dark-inverse-dark: $white !default; +// Contextual colors $theme-colors-dark: ( - "white": $white, // custom color type "light": $light-dark, - "primary": $primary, - "success": $success, - "info": $info, - "warning": $warning, - "danger": $danger, - "dark": $dark-dark, + "primary": $primary-dark, "secondary": $secondary-dark, + "success": $success-dark, + "info": $info-dark, + "warning": $warning-dark, + "danger": $danger-dark, + "dark": $dark-dark ) !default; - + +// Contextual active state colors $theme-active-colors-dark: ( - "primary": $primary-active, + "primary": $primary-active-dark, "secondary": $secondary-active-dark, "light": $light-active-dark, - "success": $success-active, - "info": $info-active, - "warning": $warning-active, - "danger": $danger-active, + "success": $success-active-dark, + "info": $info-active-dark, + "warning": $warning-active-dark, + "danger": $danger-active-dark, "dark": $dark-active-dark -) !default; +) !default; +// Contextual inverse state colors $theme-inverse-colors-dark: ( - "primary": $primary-inverse, + "primary": $primary-inverse-dark, "secondary": $secondary-inverse-dark, - "light": $light-inverse, - "success": $success-inverse, - "info": $info-inverse, - "warning": $warning-inverse, - "danger": $danger-inverse, + "light": $light-inverse-dark, + "success": $success-inverse-dark, + "info": $info-inverse-dark, + "warning": $warning-inverse-dark, + "danger": $danger-inverse-dark, "dark": $dark-inverse-dark -) !default; +) !default; +// Contextual light state colors $theme-light-colors-dark: ( "primary": $primary-light-dark, + "secondary": $secondary-light-dark, "success": $success-light-dark, "info": $info-light-dark, "warning": $warning-light-dark, "danger": $danger-light-dark, "dark": $dark-light-dark, - "secondary": $secondary-light-dark + "light": $light-light-dark ) !default; - + +// Contextual light state colors +$theme-clarity-colors-dark: ( + "primary": $primary-clarity-dark, + "secondary": $secondary-clarity-dark, + "success": $success-clarity-dark, + "info": $info-clarity-dark, + "warning": $warning-clarity-dark, + "danger": $danger-clarity-dark, + "dark": $dark-clarity-dark, + "light": $light-clarity-dark, +) !default; + +// Text colors $theme-text-colors-dark: ( "white": $white, - "primary": $primary, + "primary": $primary-dark, "secondary": $secondary-dark, "light": $light-dark, - "success": $success, - "info": $info, - "warning": $warning, - "danger": $danger, + "success": $success-dark, + "info": $info-dark, + "warning": $warning-dark, + "danger": $danger-dark, "dark": $dark-dark, "muted": $text-muted-dark, "gray-100": $gray-100-dark, @@ -131,7 +174,7 @@ $theme-text-colors-dark: ( // Body // // Settings for the `` element. -$body-bg-dark: #1e1e2d !default; +$body-bg-dark: #1C1D22 !default; $body-bg-rgb-dark: to-rgb($body-bg-dark) !default; $body-color-dark: $gray-900-dark !default; @@ -139,7 +182,7 @@ $body-color-dark: $gray-900-dark !default; // Links // // Style anchor elements. -$link-color-dark: $primary !default; +$link-color-dark: $primary-dark !default; // Components @@ -149,16 +192,16 @@ $border-color-dark: $gray-200-dark !default; $border-dashed-color-dark: $gray-300-dark !default; // Keenthemes hover states -$component-hover-color-dark: $primary !default; +$component-hover-color-dark: $primary-dark !default; $component-hover-bg-dark: $gray-100-dark !default; // Keenthemes active states $component-active-color-dark: $primary-inverse !default; -$component-active-bg-dark: $primary !default; +$component-active-bg-dark: $primary-dark !default; // Keenthemes checked states $component-checked-color-dark: $primary-inverse !default; -$component-checked-bg-dark: $primary !default; +$component-checked-bg-dark: $primary-dark !default; $headings-color-dark: $gray-900-dark !default; $blockquote-footer-color-dark: $gray-600-dark !default; @@ -174,7 +217,7 @@ $box-shadow-inset-dark: inset 0 1px 2px rgba($black, .075) !default; // Card $card-box-shadow-dark: null !default; - +$card-border-color-dark: $border-color-dark !default; // Tables $table-striped-bg-dark: rgba($gray-100-dark, 0.75) !default; @@ -191,7 +234,7 @@ $form-switch-bg-image-solid-dark: url("data:image/svg+xml,") !default; $accordion-button-active-icon-dark: url("data:image/svg+xml,") !default; @@ -216,9 +259,10 @@ $tooltip-bg-dark: $gray-200-dark !default; $tooltip-box-shadow-dark: 0px 0px 30px rgba(0, 0, 0, 0.15) !default; // Code -$code-bg-dark: $gray-200-dark !default; -$code-color-dark: #b93993 !default; -$code-box-shadow-dark: 0px 3px 9px rgba(0, 0, 0, 0.08) !default; +$code-bg-dark: #2b2b40 !default; +$code-shadow-dark: rgba(0, 0, 0, 0.08) 0px 3px 9px 0px !default; +$code-color-dark: #b93993 !default; +$code-border-color-dark: transparent !default; // Symbol $symbol-border-color-dark: rgba($body-bg, 0.5); diff --git a/resources/_keenthemes/src/sass/components/_variables.custom.scss b/resources/_keenthemes/src/sass/components/_variables.custom.scss index df1eee5..c013a04 100644 --- a/resources/_keenthemes/src/sass/components/_variables.custom.scss +++ b/resources/_keenthemes/src/sass/components/_variables.custom.scss @@ -4,60 +4,3 @@ // are not accessible in this file but you can override any global variable as shown below: // -// Bootstrap color system -$white: #ffffff; - -// Gray colors -$gray-100-dark: #1b1b29; -$gray-200-dark: #2B2B40; -$gray-300-dark: #323248; -$gray-400-dark: #474761; -$gray-500-dark: #565674; -$gray-600-dark: #6D6D80; -$gray-700-dark: #92929F; -$gray-800-dark: #CDCDDE; -$gray-900-dark: #FFFFFF; - -// Theme colors -// Primary -$primary: #3E97FF; -$primary-active: #0095e8; -$primary-light: #f1faff; -$primary-light-dark: #212e48; -$primary-inverse: $white; - -// Success -$success: #50cd89; -$success-active: #47be7d; -$success-light: #e8fff3; -$success-light-dark: #1c3238; -$success-inverse: $white; - -// Info -$info: #7239ea; -$info-active: #5014d0; -$info-light: #f8f5ff; -$info-light-dark: #2f264f; -$info-inverse: $white; - -// Danger -$danger: #f1416c; -$danger-active: #d9214e; -$danger-light: #fff5f8; -$danger-light-dark: #3a2434; -$danger-inverse: $white; - -// Warning -$warning: #ffc700; -$warning-active: #f1bc00; -$warning-light: #fff8dd; -$warning-light-dark: #392f28; -$warning-inverse: $white; - -// Card Box Shadow -$card-border-enabled: true; -$card-box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.03); -$card-box-shadow-dark: none; - -// Body -$body-bg-dark: #1c1c1c; \ No newline at end of file diff --git a/resources/_keenthemes/src/sass/components/_variables.override.scss b/resources/_keenthemes/src/sass/components/_variables.override.scss new file mode 100644 index 0000000..8774439 --- /dev/null +++ b/resources/_keenthemes/src/sass/components/_variables.override.scss @@ -0,0 +1,15 @@ +// +// To make future updates easier consider overriding the global variables from _variables.bootstrap.scss and _variables.custom.scss for current demo in this file. +// Note that this file is included first and variables defined in _variables.bootstrap.scss and _variables.custom.scss +// are not accessible in this file but you can override any global variable as shown below: +// + +// Body bg +$body-bg-dark: $coal-100; + +// Card +$card-box-shadow: 0px 3px 4px 0px rgba(0, 0, 0, 0.03); +$card-box-shadow-dark: none; +$card-border-enabled: true; +$card-border-color: $gray-200; +$card-border-color-dark: $dark-light-dark; \ No newline at end of file diff --git a/resources/_keenthemes/src/sass/components/_variables.scss b/resources/_keenthemes/src/sass/components/_variables.scss index 60f2a60..629381d 100644 --- a/resources/_keenthemes/src/sass/components/_variables.scss +++ b/resources/_keenthemes/src/sass/components/_variables.scss @@ -6,6 +6,16 @@ // Prefix for :root CSS variables $prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix` +// Custom coal colors +$coal-100: #15171C !default; +$coal-200: #13141A !default; +$coal-300: #111217 !default; +$coal-400: #0F1014 !default; +$coal-500: #0D0E12 !default; +$coal-600: #0B0C10 !default; +$coal-black: #000000 !default; +$coal-clarity: rgba(#18191F, 50) !default; + // Bootstrap color system $white: #ffffff !default; @@ -13,9 +23,9 @@ $black:#000000 !default; // Bootstrap grey colors $gray-100: #F9F9F9 !default; -$gray-200: #F1F1F2 !default; +$gray-200: #F1F1F4 !default; $gray-300: #DBDFE9 !default; -$gray-400: #B5B5C3 !default; +$gray-400: #C4CADA !default; $gray-500: #99A1B7 !default; $gray-600: #78829D !default; $gray-700: #4B5675 !default; @@ -40,52 +50,59 @@ $grays: ( // Bootstrap contextual colors // Primary colors -$primary: #3699FF !default; -$primary-active: #187DE4 !default; -$primary-light: #F1FAFF !default; -$primary-inverse: $white !default; +$primary: #1B84FF !default; +$primary-active: #056EE9 !default; +$primary-light: #E9F3FF !default; +$primary-clarity: rgba(#1B84FF, 0.2) !default; +$primary-inverse: $white !default; // Secondary colors -$secondary: $gray-300 !default; -$secondary-active: $gray-400 !default; -$secondary-light: $gray-100 !default; -$secondary-inverse: $gray-700 !default; +$secondary: #F9F9F9 !default; +$secondary-active: $gray-300 !default; +$secondary-light: #F9F9F9 !default; +$secondary-clarity: rgba(#F9F9F9, 0.2) !default; +$secondary-inverse: $gray-800 !default; // Light colors $light: $gray-100 !default; -$light-active: $gray-200 !default; -$light-light: gba($gray-100, 0.75) !default; -$light-inverse: $gray-600 !default; - +$light-active: #FCFCFC !default; +$light-light: #ffffff !default; +$light-clarity: rgba($white, 0.2) !default; +$light-inverse: $gray-800 !default; // Success colors -$success: #1BC5BD !default; -$success-active: #0BB7AF !default; -$success-light: #C9F7F5 !default; +$success: #17C653 !default; +$success-active: #04B440 !default; +$success-light: #DFFFEA !default; +$success-clarity: rgba(#17C653, 0.2) !default; $success-inverse: $white !default; // Info colors -$info: #8950FC !default; -$info-active: #7337EE !default; -$info-light: #EEE5FF !default; +$info: #7239EA !default; +$info-active: #5014D0 !default; +$info-light: #F8F5FF !default; +$info-clarity: rgba(#7239EA, 0.2) !default; $info-inverse: $white !default; // Warning colors -$warning: #FFA800 !default; -$warning-active: #EE9D01 !default; -$warning-light: #FFF4DE !default; +$warning: #F6C000 !default; +$warning-active: #DEAD00 !default; +$warning-light: #FFF8DD !default; +$warning-clarity: rgba(#F6C000, 0.2) !default; $warning-inverse: $white !default; // Danger colors -$danger: #F64E60 !default; -$danger-active: #EE2D41 !default; -$danger-light: #FFE2E5 !default; +$danger: #F8285A !default; +$danger-active: #D81A48 !default; +$danger-light: #FFEEF3 !default; +$danger-clarity: rgba(#F8285A, 0.2) !default; $danger-inverse: $white !default; // Dark colors -$dark: $gray-900 !default; -$dark-active: darken($gray-900, 3%) !default; -$dark-light: $gray-200 !default; +$dark: #1E2129 !default; +$dark-active: #111318 !default; +$dark-light: #F9F9F9 !default; +$dark-clarity: rgba(#1E2129, 0.2) !default; $dark-inverse: $white !default; // Contextual colors @@ -132,7 +149,20 @@ $theme-light-colors: ( "info": $info-light, "warning": $warning-light, "danger": $danger-light, - "dark": $dark-light + "dark": $dark-light, + "light": $light-light +) !default; + +// Contextual light state colors +$theme-clarity-colors: ( + "primary": $primary-clarity, + "secondary": $secondary-clarity, + "success": $success-clarity, + "info": $info-clarity, + "warning": $warning-clarity, + "danger": $danger-clarity, + "dark": $dark-clarity, + "light": $light-clarity, ) !default; // Text colors @@ -335,6 +365,7 @@ $font-family-sans-serif: Inter, Helvetica, "sans-serif" !default; $font-size-base: 1rem !default; // Assumes the browser default, typically `13px` $font-size-lg: $font-size-base * 1.075 !default; // 14.04px +$font-size-xl: $font-size-base * 1.21 !default; // 16.04px $font-size-sm: $font-size-base * .95 !default; // 12.025px $font-weight-lighter: lighter !default; @@ -380,6 +411,7 @@ $font-sizes: ( sm: $font-size-sm, base: $font-size-base, // 13px lg: $font-size-lg, + xl: $font-size-xl, fluid: 100%, // 100% @@ -500,7 +532,7 @@ $btn-line-height: $input-btn-line-height !default; $btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping $btn-padding-y-sm: $input-btn-padding-y-sm !default; -$btn-padding-x-sm: 1.25rem !default; +$btn-padding-x-sm: 1rem !default; $btn-font-size-sm: $input-btn-font-size-sm !default; $btn-padding-y-lg: $input-btn-padding-y-lg !default; @@ -510,11 +542,11 @@ $btn-font-size-lg: $input-btn-font-size-lg !default; $btn-border-width: $input-btn-border-width !default; $btn-font-weight: $font-weight-semibold !default; -$btn-box-shadow: null !default; +$btn-box-shadow: none !default; $btn-focus-width: $input-btn-focus-width !default; -$btn-focus-box-shadow: null !default; +$btn-focus-box-shadow: none !default; $btn-disabled-opacity: .65 !default; -$btn-active-box-shadow: null !default; +$btn-active-box-shadow: none !default; $btn-link-color: var(--#{$prefix}link-color) !default; $btn-link-hover-color: var(--#{$prefix}link-hover-color) !default; @@ -747,7 +779,7 @@ $pagination-disabled-border-color: transparent !default; // Card $card-box-shadow: 0px 0px 20px 0px rgba(76,87,125,0.02) !default; -$card-border-color: var(--#{$prefix}border-color) !default; +$card-border-color: $border-color !default; $card-border-width: 1px !default; $card-border-style: solid !default; $card-border-dashed-color: var(--#{$prefix}border-dashed-color) !default; @@ -759,8 +791,8 @@ $card-border-radius: $border-radius-lg !default; $card-header-py: 0.5rem !default; $card-header-height: 70px !default; $card-border-enabled: false !default; - - +$card-title-color: var(--#{$prefix}gray-900) !default; + // Accordion $accordion-color: var(--#{$prefix}body-color) !default; $accordion-bg: var(--#{$prefix}body-bg) !default; @@ -840,7 +872,6 @@ $badge-size: 1.75rem !default; $badge-size-sm: 1.5rem !default; $badge-size-lg: 2rem !default; - // Modals // Padding applied to the modal body $modal-inner-padding: 1.75rem !default; @@ -940,13 +971,15 @@ $btn-close-bg: url("data:image/svg+xml, - @include('pages.system.not_found') + @include('pages/system.not_found') diff --git a/resources/views/errors/500.blade.php b/resources/views/errors/500.blade.php index 8e1ab2e..43fe841 100644 --- a/resources/views/errors/500.blade.php +++ b/resources/views/errors/500.blade.php @@ -1,3 +1,3 @@ - @include('pages.system.error') + @include('pages/system.error') diff --git a/resources/views/layout/_auth.blade.php b/resources/views/layout/_auth.blade.php index 144880a..e938cbf 100644 --- a/resources/views/layout/_auth.blade.php +++ b/resources/views/layout/_auth.blade.php @@ -47,7 +47,7 @@ - + diff --git a/resources/views/layout/master.blade.php b/resources/views/layout/master.blade.php index ac01768..6dd123e 100644 --- a/resources/views/layout/master.blade.php +++ b/resources/views/layout/master.blade.php @@ -38,8 +38,7 @@ @endforeach - @yield('styles') - + @livewireStyles @@ -69,13 +68,10 @@ @endforeach @stack('scripts') -@yield('scripts') -@stack('customscript') -