From 1c297c9c8ab94078fe6ff3bf6684e6aea3096e15 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Fri, 3 Nov 2023 16:12:15 +0700 Subject: [PATCH] Update Metronic v8.2.1 --- .DS_Store | Bin 0 -> 8196 bytes app/.DS_Store | Bin 0 -> 8196 bytes app/Actions/SamplePermissionApi.php | 100 ++ app/Actions/SampleRoleApi.php | 171 +++ app/Actions/SampleUserApi.php | 102 ++ app/DataTables/PermissionsDataTable.php | 6 +- app/DataTables/UsersAssignedRoleDataTable.php | 6 +- app/DataTables/UsersDataTable.php | 6 +- .../Apps/PermissionManagementController.php | 2 +- .../Apps/RoleManagementController.php | 4 +- .../Apps/UserManagementController.php | 4 +- .../Auth/AuthenticatedSessionController.php | 2 +- .../Auth/ConfirmablePasswordController.php | 2 +- .../EmailVerificationPromptController.php | 2 +- .../Auth/NewPasswordController.php | 2 +- .../Auth/PasswordResetLinkController.php | 2 +- .../Auth/RegisteredUserController.php | 2 +- app/Http/Controllers/DashboardController.php | 2 +- app/Http/Livewire/User/AddUserModal.php | 10 +- app/Models/Address.php | 11 + app/Models/User.php | 15 +- database/factories/AddressFactory.php | 33 + ...23_10_09_041104_create_addresses_table.php | 35 + database/seeders/DatabaseSeeder.php | 6 +- resources/_keenthemes/src/.DS_Store | Bin 6148 -> 8196 bytes .../_keenthemes/src/js/components/app.js | 9 +- .../_keenthemes/src/js/components/dialer.js | 13 +- .../_keenthemes/src/js/components/drawer.js | 24 +- .../_keenthemes/src/js/components/menu.js | 4 + .../src/js/custom/apps/calendar/calendar.js | 7 +- .../apps/ecommerce/catalog/save-product.js | 2 +- .../src/js/widgets/charts/widget-47.js | 156 +++ .../src/js/widgets/charts/widget-48.js | 156 +++ .../src/js/widgets/tables/widget-14.js | 5 +- .../media/svg/brand-logos/youtube-play-2.svg | 3 + .../src/plugins/keenicons/duotone/demo.html | 8 +- .../src/plugins/keenicons/duotone/style.css | 17 +- .../src/plugins/keenicons/outline/demo.html | 8 +- .../src/plugins/keenicons/solid/demo.html | 8 +- resources/_keenthemes/src/sass/.DS_Store | Bin 0 -> 6148 bytes resources/_keenthemes/src/sass/_init.scss | 1 + .../src/sass/components/_card.scss | 5 +- .../src/sass/components/_code.scss | 19 +- .../src/sass/components/_drawer.scss | 16 + .../src/sass/components/_root.scss | 22 +- .../src/sass/components/_scroll.scss | 64 +- .../src/sass/components/_tables.scss | 16 + .../src/sass/components/_timeline.scss | 35 +- .../src/sass/components/_tree.scss | 92 ++ .../src/sass/components/_utilities.scss | 4 + .../src/sass/components/_variables-dark.scss | 170 ++- .../sass/components/_variables.custom.scss | 57 - .../sass/components/_variables.override.scss | 15 + .../src/sass/components/_variables.scss | 127 +- .../src/sass/components/buttons/_base.scss | 2 +- .../src/sass/components/buttons/_theme.scss | 18 + .../sass/components/buttons_new/_base.scss | 74 + .../sass/components/buttons_new/_theme.scss | 21 + .../src/sass/components/components.scss | 1 + .../sass/components/helpers/_background.scss | 7 + .../src/sass/components/menu/_base.scss | 9 + .../src/sass/components/menu/_theme.scss | 9 + .../src/sass/components/stepper/_links.scss | 4 +- .../src/sass/components/stepper/_pills.scss | 4 +- .../src/sass/layout/_variables.custom.scss | 18 +- .../src/sass/layout/base/header/_header.scss | 10 + .../src/sass/layout/header/_header-dark.scss | 12 +- .../src/sass/layout/header/_header.scss | 7 + .../sass/layout/sidebar/_sidebar-dark.scss | 87 +- .../vendors/plugins/_daterangepicker.scss | 2 +- .../src/sass/vendors/plugins/_draggable.scss | 2 +- .../src/sass/vendors/plugins/_flatpickr.scss | 4 +- resources/_keenthemes/tools/gulp.config.js | 26 +- resources/_keenthemes/tools/gulp/compile.js | 2 +- resources/_keenthemes/tools/package.json | 85 +- resources/mix/.DS_Store | Bin 0 -> 6148 bytes resources/mix/plugins.js | 14 +- resources/mix/plugins.scss | 12 +- resources/mix/scripts.js | 4 +- resources/mix/vendors/.DS_Store | Bin 0 -> 6148 bytes .../vendors/datatables/datatables.bundle.js | 2 +- .../mix/vendors/draggable/draggable.bundle.js | 12 +- .../fullcalendar/fullcalendar.bundle.js | 3 +- .../fullcalendar/fullcalendar.bundle.scss | 2 +- resources/views/errors/404.blade.php | 2 +- resources/views/errors/500.blade.php | 2 +- resources/views/layout/_auth.blade.php | 2 +- resources/views/layout/master.blade.php | 8 +- .../partials/header-layout/_footer.blade.php | 2 +- .../header-layout/_page-title.blade.php | 2 +- .../header/_menu/__dashboards.blade.php | 2 +- .../partials/_advanced-options.blade.php | 2 +- .../search/partials/_form-dropdown.blade.php | 2 +- .../search/partials/_preferences.blade.php | 2 +- .../search/partials/_results.blade.php | 28 +- .../partials/sidebar-layout/_footer.blade.php | 17 +- .../sidebar-layout/_page-title.blade.php | 2 +- .../sidebar-layout/_sidebar.blade.php | 1 + .../header/_menu/__dashboards.blade.php | 2 +- .../header/_menu/_menu.blade.php | 1200 ++++++++++++++++- .../sidebar-layout/header/_navbar.blade.php | 33 +- .../partials/_advanced-options.blade.php | 2 +- .../search/partials/_empty.blade.php | 26 +- .../search/partials/_form-dropdown.blade.php | 60 +- .../search/partials/_main.blade.php | 240 ++-- .../search/partials/_preferences.blade.php | 106 +- .../search/partials/_results.blade.php | 28 +- .../sidebar-layout/sidebar/_logo.blade.php | 6 +- .../sidebar-layout/sidebar/_menu.blade.php | 132 +- .../livewire/user/add-user-modal.blade.php | 1 + .../apps/user-management/users/show.blade.php | 130 +- .../pages/auth/confirm-password.blade.php | 2 +- .../pages/auth/forgot-password.blade.php | 2 +- resources/views/pages/auth/login.blade.php | 2 +- resources/views/pages/auth/register.blade.php | 2 +- .../views/pages/auth/reset-password.blade.php | 2 +- .../views/pages/auth/verify-email.blade.php | 2 +- resources/views/partials/_drawers.blade.php | 10 +- resources/views/partials/_scrolltop.blade.php | 6 +- .../drawers/_activity-drawer.blade.php | 12 +- .../drawers/_chat-messenger.blade.php | 18 +- .../partials/drawers/_shopping-cart.blade.php | 14 +- .../views/partials/menus/_menu-2.blade.php | 132 +- .../menus/_notifications-menu.blade.php | 16 +- .../menus/_quick-links-menu.blade.php | 8 +- .../menus/_user-account-menu.blade.php | 129 ++ .../partials/modals/_new-target.blade.php | 306 ++--- .../partials/modals/_upgrade-plan.blade.php | 684 +++++----- .../partials/modals/_view-users.blade.php | 52 +- .../modals/create-app/_main.blade.php | 364 ++--- .../modals/create-app/steps/_step-1.blade.php | 210 +-- .../modals/create-app/steps/_step-2.blade.php | 240 ++-- .../modals/create-app/steps/_step-3.blade.php | 208 +-- .../modals/create-app/steps/_step-4.blade.php | 14 +- .../modals/create-app/steps/_step-5.blade.php | 2 +- .../create-campaign/steps/_step-1.blade.php | 2 +- .../create-campaign/steps/_step-2.blade.php | 2 +- .../create-campaign/steps/_step-3.blade.php | 2 +- .../create-campaign/steps/_step-4.blade.php | 2 +- .../create-campaign/steps/_step-5.blade.php | 2 +- .../create-project/steps/_budget.blade.php | 4 +- .../create-project/steps/_complete.blade.php | 2 +- .../create-project/steps/_files.blade.php | 2 +- .../create-project/steps/_settings.blade.php | 2 +- .../create-project/steps/_targets.blade.php | 2 +- .../create-project/steps/_team.blade.php | 2 +- .../create-project/steps/_type.blade.php | 2 +- .../modals/users-search/_main.blade.php | 120 +- .../views/partials/search/_dropdown.blade.php | 46 +- .../partials/_advanced-options.blade.php | 2 +- .../partials/search/partials/_empty.blade.php | 26 +- .../search/partials/_form-dropdown.blade.php | 60 +- .../partials/search/partials/_main.blade.php | 240 ++-- .../search/partials/_preferences.blade.php | 106 +- .../search/partials/_results.blade.php | 28 +- .../widgets/cards/_widget-17.blade.php | 160 +-- .../widgets/cards/_widget-18.blade.php | 10 +- .../widgets/cards/_widget-20.blade.php | 66 +- .../widgets/cards/_widget-7.blade.php | 4 +- .../widgets/charts/_widget-14.blade.php | 58 +- .../widgets/charts/_widget-20.blade.php | 158 +-- .../widgets/charts/_widget-24.blade.php | 58 +- .../widgets/charts/_widget-27.blade.php | 206 +-- .../widgets/charts/_widget-28.blade.php | 210 +-- .../widgets/charts/_widget-31.blade.php | 2 +- .../widgets/charts/_widget-35.blade.php | 906 ++++++------- .../widgets/charts/_widget-36.blade.php | 64 +- .../widgets/charts/_widget-8.blade.php | 456 +++---- .../widgets/lists/_widget-26.blade.php | 248 ++-- .../widgets/lists/_widget-7.blade.php | 476 +++---- .../widgets/lists/_widget-8.blade.php | 14 +- .../widgets/lists/_widget-9.blade.php | 14 +- .../widgets/tables/_widget-14.blade.php | 14 +- .../widgets/tables/_widget-16.blade.php | 56 +- routes/api.php | 91 ++ routes/web.php | 15 +- webpack.mix.js | 6 +- 177 files changed, 6577 insertions(+), 3887 deletions(-) create mode 100644 .DS_Store create mode 100644 app/.DS_Store create mode 100644 app/Actions/SamplePermissionApi.php create mode 100644 app/Actions/SampleRoleApi.php create mode 100644 app/Actions/SampleUserApi.php create mode 100644 app/Models/Address.php create mode 100644 database/factories/AddressFactory.php create mode 100644 database/migrations/2023_10_09_041104_create_addresses_table.php create mode 100644 resources/_keenthemes/src/js/widgets/charts/widget-47.js create mode 100644 resources/_keenthemes/src/js/widgets/charts/widget-48.js create mode 100644 resources/_keenthemes/src/media/svg/brand-logos/youtube-play-2.svg create mode 100644 resources/_keenthemes/src/sass/.DS_Store create mode 100644 resources/_keenthemes/src/sass/components/_tree.scss create mode 100644 resources/_keenthemes/src/sass/components/_variables.override.scss create mode 100644 resources/_keenthemes/src/sass/components/buttons_new/_base.scss create mode 100644 resources/_keenthemes/src/sass/components/buttons_new/_theme.scss create mode 100644 resources/mix/.DS_Store create mode 100644 resources/mix/vendors/.DS_Store diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c3de5b0942f13df74ca24830381daba4ac30d2bb GIT binary patch literal 8196 zcmeHMTWl0n7(U;$v@-*>r<6Uq~1-3T|xX$hjFkw2g?#ymM zLaZ8J6x8_QgW~PgX!Jo7Yc%>KiBDo<7Bnf6)Di{xGp~@d-5hb#xxxbLSP(}b zjzAoNI0A75;s`8;2+*A!H2F67zR<>f9Dz6j|H}vjzYj@z0-BEKl%U~H2X$cyK(v~~ zVWW2*ybw)BG#$|?K}kam!j-6SMO0!yxRX2?*`*^oC8%&`h>8zHGb5@{5YA5HCqr|F zw4iYxM<9;C!UzPldll1JffaI-H`njB<@u@9SCFczm((JZg`Xmbbhu5+kp2Kv#w zYnLV*FUuS9x}7iCx^H&dcE)}<2D1(o)3H*{dZc9e=XkR$hjZMmCDr2wt?5D6 z2xc*4{vM4(vo~u=?O34cEt=FDkwdF?uR7$>wq&jg!*+GEI&_APR^gtIbf{akVO!6c zw!#fDPnWt~8!e02Dttf)cd3oqSl*qOpe=feknPdBwTFUf59*#jSTLPnNmqofk96bS zX}xF;P7<`D740W!cw8h8ocayRcS9vb<6u(Ljt0YZ8%DT?rd6x!w8L6P=2vAp8OteK z1ZO&Nfoi!qy-^%a7}n-=N^lBYPHWg^x&-&L(u^l_{0Q#{P`*46TI)q`2 zU<~7gP=hdf3Koj+;1fX@Sx$*b3sdTcq-nA}wtxg>`=hI$=6fc4oIA zAy!3SM5BpDO_XTVNAWM3NYv;XQR9OlDw-I75?}Pe2cAq6&z(EV&lY?zgkYST%sq3@ zz2BXC&i&4uy|aulbQN-|8LMNAak_-mW>9s7BKpNOr6_@BI!O?oF^AdA%}luC8EeYu zP!W0{^g!r=&;y|dLJ!;s9-y2p3cpI;m%U*fdLZ<`|I!2E{Sc!|$V4C~rSxANRQX2$ zl9iz{kV_nF!>hls=T^l&1#-Py|N|NI3P!#Bh>{Ku$_2;S3Va5Ih;d2?hSs z2^aH+GbE%8>(B$C2c~*JoZYKfC(AOAnU|j5oecGy%8Xm4>$S9e1*M{L+Vm=3#b@w6 zeWT7qpO^LuZdW?LTeSKe$I6uM)0qL&m`G{0NyqlmrfuYXfSEIB$jG2+=bVWyr(ow? zAKNE8c!Wn%TK$nDt!p~kn`5h6;_;)+u_GO=EzPmEwQWa_M)(jM z@}8_?Z_gW|e=zG)L8bQ8?2En7MwCuh!!-mlnU1>LK z*g4bQzjMOOd85PRLEAI;nMOVmsYXq|ogOpJ%wJHa>Gk@;5=xG}h~-)XA1Y+bg9Xz& zET5sr7Du@D?nsW-wav+i8FPM*uE&;ezFX*%d4p=HR`tf^1W5P0WLmJym8&8V&Fw!x z+bp4Kyp2b++)gWm4`j3#;nd#QCs0n$8=&6U4I;VhiW~o{?TaHs(yv$xDaC^j^+)iOD*1IhsdXP&fbH z9lA~%W7^OUoonWuC z_t;15H2Z>`W#6*z*!S#b_8U9L{y-(Bp$Z(;sK-rMh(%~Z8`fYgy08UXu?@ZG#~$oO z3Tf$i^F&b591gf#S?fI&*6EzfY)#mZ{SV5jZg3?KEvnu8b9Di{DgD(6Mx~n z5>aZDCCY8eGNn;juEdpgrBg0lDaFk2<-}9Es9p9hpqQa=c_L<%gI9`~=-r!oZj6{Y zJ5xkSb-=I+BD+6Y~HFajcU`0_p;d-ZHj6Ng_~@yjJBv+1qD;Y$Ht>g zss=6_x2qkhR!Lzco9opLs>Vd5%XVip8P!CP{0q9i#ZIx0iLPgeuD`Hf+3)N;QFJ!y zh@MNa42@{U3ZiH`Ir_Y)qw7ApL=odArSu_Gi6KJoAIC{v_`{IyV?kdc ekdsnU50&fwA;1pv|D``y!~B134zB;T{Qozfrlgnv literal 0 HcmV?d00001 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 a36288530198c27301d3aba282889011ff556637..419dfbb970e3983cb06f6c3d66b1ec36e6c413df 100644 GIT binary patch literal 8196 zcmeHMU2GLa6rOKe=hg#umV;>8M5TA)CIRuFG*i&TD6q@^w8=eqaag>KmHmb-gz zK|-v8KBzI8Xw*cBMtv0jqA^B|z7aJ(7^0$y@h9;`AAI1+MDfhd-qIF$F~pFtlgyks zXXeb#eDj^1J9`;pNEh>~8LMTCamqsK)2O&g673>ik(9_%NfPAGvLpU**735We{e7HBM>7HBXA=iKxei{{2J%JY>mqpff#|C5&`jkNKzIu70FR4!&e6t;T3?S zxB`TU>bj_qOhz&l$x$h(g%YGIN$HB{iUH|P_GHvA70FR4r8`4(`9Sn!L^l+KPp9#d zVRwdCU0wR1Wna@nh{`mWQcG$7~psDE_C>51crdIJPK8+vf9`r`K12ZW4 zX|u3TXg!|iWXp9k+iP1R8NH_6a|6?MtwQKv=Pl~8zt48_-bmUjx_LkJ?UoH(MW6?~EzeU?v)yEo^#y9$KkJ34plIzMCPEM3#))by2X-_APLUenK6Zr*ke?-{Z4!QcQP z=LYs6+bXDPHF|qobI3YBZ+@+AEHD<9y=33ZzFe>4{l%<(v}gy%VJ4+IjcwHVoPr+b!9|X4-H` zYW-`@d0lF`+@BECx>S?YR63yywvtZ5PPU&}Y?vKqPq3HR8TJNypMAp4v9H(#_C5Q7 z{m6c0f3S<}FH~X*s=!f=1-JzZu?P)l#yYG=8r!i0JJE$69Kb>Uq`FDl ztm#a|xYXMc?Fn6k$A2K|+w4R3DG~KN5%o9rJNuJeB67||EfI4mmZ2VvSV81$K`S<5 z6SiP0I@f6T8RSbwQv)j#4Y`|68v8{r|c=D;^|9AV%QE zL;#f?-5uhmz_s4C;;x;fd_QH8M88ofLl-JU7hw;t<0QxaFr<1iYD-0OR7z^0^uK=y Upx=SzAG-1RAD{mr32(yUU(f#<#{d8T delta 141 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{MGpJ516xL+~GFTXj84`iGxGcCRFDE}Q9ViA8 zX98jn0I`8sfMN4|u?)tI4eo4<**Q1_nZc3_0^C5_6^K + + 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 0000000000000000000000000000000000000000..ab0243027c085607801869c243d1c1f2b87655ef GIT binary patch literal 6148 zcmeHKI|>3p3{6x-u(7n9D|mxJ^aNhOU%9Y_TG(ynxjdRL9|T!#1RHsQcu=ZI3SS$go ziCrKvFbyg&sG1{&1|9j5bv3aI47z9zADU0roKV!Cj{A$3i`GC!DnJEZ6&S{LX8nH+ z|1kf*lDMM+RN$`^(9vqMTH=+mxAtDndToJk;Z}2pn_=w~1aHScZ^zhJJDz({)D>If Wye4*mPDkG9K>iGvE;K6eYXu&T(G|Y{ literal 0 HcmV?d00001 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,IR|NC7Dz1*Cu!xKx3vpsV$zMCD5XDRA`)`2Eo6j$PrH7*_{} zXaR^zhQs(Cy#%p&fY=p|iHy)Jsl=pOwHTIk##`leg=1pUVR16|sgtcb6pPatZ;=k` z5;aNzDKJ%Fk<*RW|3~^C{r{AtnG}!$SEYb0cl+IzpH#JV_HkZo8~us?W6X_o4pEAU iQHnY7Qha}w*ZiI9UE!D*bjE{D)Q^DcB9j9Dp};pHz#CEk literal 0 HcmV?d00001 diff --git a/resources/mix/plugins.js b/resources/mix/plugins.js index 5d6e604..3bb242b 100644 --- a/resources/mix/plugins.js +++ b/resources/mix/plugins.js @@ -36,12 +36,12 @@ module.exports = [ // Select2 - Select2 is a jQuery based replacement for select boxes: https://select2.org/ 'node_modules/select2/dist/js/select2.full.js', - 'resources/_keenthemes/src/js/vendors/plugins/select2.init.js', + 'resources/_keenthemes/src/metronic/demo1/js/vendors/plugins/select2.init.js', // FormValidation - Best premium validation library for JavaScript. Zero dependencies. Learn more: https://formvalidation.io/ - "resources/_keenthemes/src/plugins/@form-validation/umd/bundle/popular.min.js", - "resources/_keenthemes/src/plugins/@form-validation/umd/bundle/full.min.js", - "resources/_keenthemes/src/plugins/@form-validation/umd/plugin-bootstrap5/index.min.js", + "resources/_keenthemes/src/metronic/demo1/plugins/@form-validation/umd/bundle/popular.min.js", + "resources/_keenthemes/src/metronic/demo1/plugins/@form-validation/umd/bundle/full.min.js", + "resources/_keenthemes/src/metronic/demo1/plugins/@form-validation/umd/plugin-bootstrap5/index.min.js", // Bootstrap Maxlength - This plugin integrates by default with Twitter bootstrap using badges to display the maximum length of the field where the user is inserting text: https://github.com/mimo84/bootstrap-maxlength 'node_modules/bootstrap-maxlength/src/bootstrap-maxlength.js', @@ -64,7 +64,7 @@ module.exports = [ // DropzoneJS - is an open source library that provides drag'n'drop file uploads with image previews: https://www.dropzonejs.com/ 'node_modules/dropzone/dist/min/dropzone.min.js', - 'resources/_keenthemes/src/js/vendors/plugins/dropzone.init.js', + 'resources/_keenthemes/src/metronic/demo1/js/vendors/plugins/dropzone.init.js', // Quill - is a free, open source WYSIWYG editor built for the modern web. Completely customize it for any need with its modular architecture and expressive API: https://quilljs.com/ 'node_modules/quill/dist/quill.js', @@ -74,7 +74,7 @@ module.exports = [ 'node_modules/@yaireo/tagify/dist/tagify.min.js', // Toastr - is a Javascript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended: https://github.com/CodeSeven/toastr - 'resources/_keenthemes/src/plugins/toastr/build/toastr.min.js', + 'resources/_keenthemes/src/metronic/demo1/plugins/toastr/build/toastr.min.js', // Apexcharts - modern charting library that helps developers to create beautiful and interactive visualizations for web pages: https://apexcharts.com/ 'node_modules/apexcharts/dist/apexcharts.min.js', @@ -84,7 +84,7 @@ module.exports = [ // Sweetalert2 - a beautiful, responsive, customizable and accessible (WAI-ARIA) replacement for JavaScript's popup boxes: https://sweetalert2.github.io/ 'node_modules/sweetalert2/dist/sweetalert2.min.js', - 'resources/_keenthemes/src/js/vendors/plugins/sweetalert2.init.js', + 'resources/_keenthemes/src/metronic/demo1/js/vendors/plugins/sweetalert2.init.js', // CountUp.js - is a dependency-free, lightweight JavaScript class that can be used to quickly create animations that display numerical data in a more interesting way. 'node_modules/countup.js/dist/countUp.umd.js', diff --git a/resources/mix/plugins.scss b/resources/mix/plugins.scss index f112cb7..6269f8f 100644 --- a/resources/mix/plugins.scss +++ b/resources/mix/plugins.scss @@ -12,7 +12,7 @@ @import "~apexcharts/dist/apexcharts.css"; // FormValidation - Best premium validation library for JavaScript. Zero dependencies. Learn more: https://formvalidation.io/ -@import "../_keenthemes/src/plugins/@form-validation/umd/styles/index.css"; +@import "../_keenthemes/src/metronic/demo1/plugins/@form-validation/umd/styles/index.css"; // Bootstrap Daterangepicker @import "~bootstrap-daterangepicker/daterangepicker.css"; @@ -35,7 +35,7 @@ @import "~@yaireo/tagify/dist/tagify.css"; // Toastr - is a Javascript library for non-blocking notifications. jQuery is required. The goal is to create a simple core library that can be customized and extended: https://github.com/CodeSeven/toastr -@import "../_keenthemes/src/plugins/toastr/build/toastr.css"; +@import "../_keenthemes/src/metronic/demo1/plugins/toastr/build/toastr.css"; // Sweetalert2 - a beautiful, responsive, customizable and accessible (WAI-ARIA) replacement for JavaScript's popup boxes: https://sweetalert2.github.io/ @import "~sweetalert2/dist/sweetalert2.css"; @@ -56,12 +56,12 @@ @import "~tiny-slider/dist/tiny-slider.css"; // Keenthemes Vendors customization -@import "../_keenthemes/src/sass/plugins"; +@import "../_keenthemes/src/metronic/demo1/sass/plugins"; // Keenicons - High quality and pixel perfect font icons available in 3 styles, duotone, outline and solid for Metronic elements -@import "../_keenthemes/src/plugins/keenicons/duotone/style.css"; -@import "../_keenthemes/src/plugins/keenicons/outline/style.css"; -@import "../_keenthemes/src/plugins/keenicons/solid/style.css"; +@import "../_keenthemes/src/metronic/demo1/plugins/keenicons/duotone/style.css"; +@import "../_keenthemes/src/metronic/demo1/plugins/keenicons/outline/style.css"; +@import "../_keenthemes/src/metronic/demo1/plugins/keenicons/solid/style.css"; // Tempus Dominus is the successor to the very popular Eonasdan/bootstrap-datetimepicker. The plugin provide a robust date and time picker designed to integrate into your Bootstrap project. @import "@eonasdan/tempus-dominus/dist/css/tempus-dominus.min.css"; diff --git a/resources/mix/scripts.js b/resources/mix/scripts.js index 759d52a..b355ef2 100644 --- a/resources/mix/scripts.js +++ b/resources/mix/scripts.js @@ -1,8 +1,8 @@ const glob = require('glob'); // Keenthemes' plugins -var componentJs = glob.sync(`resources/_keenthemes/src/js/components/*.js`) || []; -var coreLayoutJs = glob.sync(`resources/_keenthemes/src/js/layout/*.js`) || []; +var componentJs = glob.sync(`resources/_keenthemes/src/metronic/demo1/js/components/*.js`) || []; +var coreLayoutJs = glob.sync(`resources/_keenthemes/src/metronic/demo1/js/layout/*.js`) || []; module.exports = [ ...componentJs, diff --git a/resources/mix/vendors/.DS_Store b/resources/mix/vendors/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 - @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') -