From cab600ca2294c26d1e9fdc8c135463cc57a48b97 Mon Sep 17 00:00:00 2001 From: Ryan Scherler Date: Tue, 7 Apr 2020 14:17:04 -0700 Subject: [PATCH] continued roles build out --- database/data/permissions.php | 12 +++++ ...0_add_description_to_permissions_table.php | 43 ++++++++++++++++++ ..._100000_add_description_to_roles_table.php | 43 ++++++++++++++++++ dist/css/app.css | 2 +- dist/mix-manifest.json | 2 +- resources/views/components/table.blade.php | 33 ++++++++++++++ resources/views/livewire/roles.blade.php | 7 +-- resources/views/livewire/users.blade.php | 22 +++++---- resources/views/partials/links.blade.php | 2 +- routes/web.php | 3 +- src/Http/Components/Pill.php | 22 +++++++++ src/Http/Components/Table.php | 45 +++++++++++++++++++ src/Http/Livewire/Roles.php | 18 +++++++- 13 files changed, 237 insertions(+), 17 deletions(-) create mode 100644 database/migrations/2020_04_07_100000_add_description_to_permissions_table.php create mode 100644 database/migrations/2020_04_07_100000_add_description_to_roles_table.php create mode 100644 resources/views/components/table.blade.php create mode 100644 src/Http/Components/Pill.php create mode 100644 src/Http/Components/Table.php diff --git a/database/data/permissions.php b/database/data/permissions.php index baf01e7fde..a5d0b3eeac 100644 --- a/database/data/permissions.php +++ b/database/data/permissions.php @@ -14,30 +14,42 @@ return [ [ 'name' => 'view users', + 'description' => 'Allow a user to view users.', 'guard_name' => 'web', 'is_system' => 1, ], [ 'name' => 'edit users', + 'description' => 'Allow a user to edit users.', 'guard_name' => 'web', 'is_system' => 1, ], [ 'name' => 'create users', + 'description' => 'Allow a user to create users.', 'guard_name' => 'web', 'is_system' => 1, ], [ 'name' => 'edit user roles', + 'description' => 'Allow a user to edit user roles.', 'guard_name' => 'web', 'is_system' => 1, ], [ 'name' => 'view roles', + 'description' => 'Allow a user to view roles.', + 'guard_name' => 'web', + 'is_system' => 1, + ], + + [ + 'name' => 'create roles', + 'description' => 'Allow a user to create roles.', 'guard_name' => 'web', 'is_system' => 1, ], diff --git a/database/migrations/2020_04_07_100000_add_description_to_permissions_table.php b/database/migrations/2020_04_07_100000_add_description_to_permissions_table.php new file mode 100644 index 0000000000..33ac5d0f6a --- /dev/null +++ b/database/migrations/2020_04_07_100000_add_description_to_permissions_table.php @@ -0,0 +1,43 @@ +tableName, function (Blueprint $table) { + if (!Schema::hasColumn($this->tableName, 'description')) { + $table->text('description')->nullable()->after('name'); + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table($this->tableName, function (Blueprint $table) { + if (Schema::hasColumn($this->tableName, 'description')) { + $table->dropColumn('description'); + } + }); + } +} diff --git a/database/migrations/2020_04_07_100000_add_description_to_roles_table.php b/database/migrations/2020_04_07_100000_add_description_to_roles_table.php new file mode 100644 index 0000000000..6654fc8f0d --- /dev/null +++ b/database/migrations/2020_04_07_100000_add_description_to_roles_table.php @@ -0,0 +1,43 @@ +tableName, function (Blueprint $table) { + if (!Schema::hasColumn($this->tableName, 'description')) { + $table->text('description')->nullable()->after('name'); + } + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table($this->tableName, function (Blueprint $table) { + if (Schema::hasColumn($this->tableName, 'description')) { + $table->dropColumn('description'); + } + }); + } +} diff --git a/dist/css/app.css b/dist/css/app.css index 2ef8e3e6c3..32ab86699c 100644 --- a/dist/css/app.css +++ b/dist/css/app.css @@ -1 +1 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}a{background-color:transparent}b{font-weight:bolder}sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;top:-.5em}img{border-style:none}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[hidden]{display:none}dd,dl,h1,h2,p{margin:0}button{background-color:transparent;background-image:none;padding:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:Inter var,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #d2d6dc}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,select,textarea{padding:0;line-height:inherit;color:inherit}audio,img,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input:-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea:-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus{border-color:transparent}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}.dropdown{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-radius:.25rem;background-color:#fff;font-size:.875rem;line-height:1.25rem;color:#161e2e;overflow:hidden}.mode-dark .dropdown{color:#fff;background-color:#000}.dropdown>*+*{border-top-width:1px;border-color:#e5e7eb}.mode-dark .dropdown>*+*{border-color:#161e2e}.dropdown a,.dropdown button{display:inline-block;width:100%;padding:.5rem 1.25rem;text-align:left;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.dropdown a:hover,.dropdown button:hover{background-color:#f9fafb}.mode-dark .dropdown a:hover,.mode-dark .dropdown button:hover{background-color:#374151}.alert{margin-top:1rem;margin-bottom:1rem;padding:.5rem .75rem;border-radius:.25rem;color:#6b7280;border-width:1px;border-color:currentColor;font-size:.875rem;line-height:1.25rem}.alert-info{color:#6875f5}.alert-success{color:#0e9f6e}.label{font-weight:500;font-size:.875rem;line-height:1.25rem;cursor:pointer}.label-disabled{opacity:.5;cursor:not-allowed}.btn{display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;padding:.75rem 1.25rem;font-size:.875rem;line-height:1.25;font-weight:500;border-radius:.25rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);color:#fff;background-color:#5145cd;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);cursor:pointer}.btn:focus{outline:0;box-shadow:0 0 0 3px rgba(159,166,178,.45)}.btn-is-disabled,.btn[disabled]{opacity:.5;cursor:not-allowed}.btn:active,.btn:hover{background-color:#42389d}.btn-small{font-size:.75rem;padding:.5rem .75rem}.btn-action{box-shadow:none;color:#161e2e;border-width:1px;border-color:#e5e7eb;background-color:#f4f5f7}.btn-action:active,.btn-action:hover{border-color:#d2d6dc;background-color:#e5e7eb}.mode-dark .btn-action{color:#fff;border-color:#374151;background-color:#161e2e}.mode-dark .btn-action:active,.mode-dark .btn-action:hover{border-color:#4b5563}.btn-file-input{box-shadow:none;color:#6875f5;background-color:transparent;border:1px dashed}.btn-file-input:active,.btn-file-input:hover{background-color:transparent;color:#5850ec}.mode-dark .btn-file-input{color:#8da2fb}.mode-dark .btn-file-input:active,.mode-dark .btn-file-input:hover{color:#6875f5}.btn-with-dropdown{display:-webkit-inline-box;display:inline-flex;-webkit-box-pack:justify;justify-content:space-between;padding:0}.btn-primary-action{padding:.75rem 1.25rem;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.btn-primary-action:hover{background-color:#42389d}.btn-dropdown{position:relative}.btn-dropdown-actions{padding:.75rem;background-color:#5850ec;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.btn-dropdown-content{position:absolute;left:0;margin-top:.5rem;width:12rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.bg-white{background-color:#fff}.bg-black{background-color:#000}.bg-gray-50{background-color:#f9fafb}.bg-gray-100{background-color:#f4f5f7}.bg-gray-200{background-color:#e5e7eb}.bg-gray-700{background-color:#374151}.bg-gray-800{background-color:#252f3f}.bg-gray-900{background-color:#161e2e}.bg-indigo-600{background-color:#5850ec}.hover\:bg-gray-900:hover{background-color:#161e2e}.focus\:bg-gray-200:focus{background-color:#e5e7eb}.focus\:bg-gray-600:focus{background-color:#4b5563}.focus\:bg-gray-700:focus{background-color:#374151}.active\:bg-gray-100:active{background-color:#f4f5f7}.mode-dark .dark\:bg-transparent{background-color:transparent}.mode-dark .dark\:bg-black{background-color:#000}.mode-dark .dark\:bg-gray-500{background-color:#6b7280}.mode-dark .dark\:bg-gray-700{background-color:#374151}.mode-dark .dark\:bg-gray-800{background-color:#252f3f}.mode-dark .dark\:bg-gray-900{background-color:#161e2e}.border-transparent{border-color:transparent}.border-gray-200{border-color:#e5e7eb}.border-gray-300{border-color:#d2d6dc}.border-red-300{border-color:#f8b4b4}.focus\:border-red-500:focus{border-color:#f05252}.focus\:border-blue-300:focus{border-color:#a4cafe}.mode-dark .dark\:border-gray-700{border-color:#374151}.mode-dark .dark-focus\:border-red-500:focus,.mode-dark .dark\:border-red-500{border-color:#f05252}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-t{border-top-left-radius:.25rem}.rounded-r,.rounded-t{border-top-right-radius:.25rem}.rounded-r{border-bottom-right-radius:.25rem}.rounded-l{border-bottom-left-radius:.25rem}.rounded-l,.rounded-tl{border-top-left-radius:.25rem}.border-dashed{border-style:dashed}.border-2{border-width:2px}.border{border-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.flex{display:-webkit-box;display:flex}.inline-flex{display:-webkit-inline-box;display:inline-flex}.grid{display:grid}.hidden{display:none}.flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.items-start{-webkit-box-align:start;align-items:flex-start}.items-end{-webkit-box-align:end;align-items:flex-end}.items-center{-webkit-box-align:center;align-items:center}.justify-center{-webkit-box-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;flex:1 1 0%}.flex-grow{-webkit-box-flex:1;flex-grow:1}.flex-shrink-0{flex-shrink:0}.font-sans{font-family:Inter var,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-extrabold{font-weight:800}.h-0{height:0}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-96{height:24rem}.h-full{height:100%}.h-screen{height:100vh}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-tight{line-height:1.25}.mx-auto{margin-left:auto;margin-right:auto}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mr-3{margin-right:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mb-12{margin-bottom:3rem}.-mr-14{margin-right:-3.5rem}.-mb-px{margin-bottom:-1px}.-ml-px{margin-left:-1px}.-mt-0\.5{margin-top:-.125rem}.-ml-0\.5{margin-left:-.125rem}.max-w-xs{max-width:20rem}.max-w-sm{max-width:24rem}.max-w-7xl{max-width:80rem}.min-h-screen{min-height:100vh}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:0}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.pr-3{padding-right:.75rem}.pb-4{padding-bottom:1rem}.pt-5{padding-top:1.25rem}.pr-10{padding-right:2.5rem}.placeholder-red-500::-webkit-input-placeholder{color:#f05252}.placeholder-red-500::-moz-placeholder{color:#f05252}.placeholder-red-500:-ms-input-placeholder{color:#f05252}.placeholder-red-500::-ms-input-placeholder{color:#f05252}.placeholder-red-500::placeholder{color:#f05252}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.shadow-sm{box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-lg{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.focus\:shadow-outline:focus{box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{box-shadow:0 0 0 3px rgba(164,202,254,.45)}.focus\:shadow-outline-red:focus{box-shadow:0 0 0 3px rgba(248,180,180,.45)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{color:#fff}.text-gray-50{color:#f9fafb}.text-gray-200{color:#e5e7eb}.text-gray-300{color:#d2d6dc}.text-gray-400{color:#9fa6b2}.text-gray-500{color:#6b7280}.text-gray-700{color:#374151}.text-gray-800{color:#252f3f}.text-gray-900{color:#161e2e}.text-red-500{color:#f05252}.text-red-600{color:#e02424}.text-red-900{color:#771d1d}.text-green-500{color:#0e9f6e}.text-blue-500{color:#3f83f8}.text-indigo-600{color:#5850ec}.text-current{color:currentColor}.hover\:text-white:hover{color:#fff}.hover\:text-gray-300:hover{color:#d2d6dc}.hover\:text-gray-400:hover{color:#9fa6b2}.hover\:text-gray-500:hover{color:#6b7280}.hover\:text-gray-900:hover{color:#161e2e}.active\:text-gray-500:active{color:#6b7280}.active\:text-gray-700:active{color:#374151}.mode-dark .dark\:text-gray-50{color:#f9fafb}.mode-dark .dark\:text-gray-300{color:#d2d6dc}.mode-dark .dark\:text-gray-400{color:#9fa6b2}.mode-dark .dark-hover\:text-gray-300:hover{color:#d2d6dc}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-3xl{font-size:1.875rem}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-0{width:0}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-9{width:2.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-56{width:14rem}.w-64{width:16rem}.w-auto{width:auto}.w-full{width:100%}.z-0{z-index:0}.z-30{z-index:30}.z-40{z-index:40}.focus\:z-10:focus{z-index:10}.gap-2{grid-gap:.5rem;gap:.5rem}.gap-4{grid-gap:1rem;gap:1rem}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.col-span-4{grid-column:span 4/span 4}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.transform-none{-webkit-transform:none;transform:none}.origin-bottom-left{-webkit-transform-origin:bottom left;transform-origin:bottom left}.scale-90{--transform-scale-x:.9;--transform-scale-y:.9}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.translate-x-0{--transform-translate-x:0}.translate-x-5{--transform-translate-x:1.25rem}.-translate-x-full{--transform-translate-x:-100%}.translate-y-0{--transform-translate-y:0}.translate-y-2{--transform-translate-y:0.5rem}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-transform}.transition-colors{-webkit-transition-property:background-color,border-color,color,fill,stroke;transition-property:background-color,border-color,color,fill,stroke}.transition-opacity{-webkit-transition-property:opacity;transition-property:opacity}.transition-transform{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.ease-linear{-webkit-transition-timing-function:linear;transition-timing-function:linear}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{-webkit-transition-duration:75ms;transition-duration:75ms}.duration-100{-webkit-transition-duration:.1s;transition-duration:.1s}.duration-150{-webkit-transition-duration:.15s;transition-duration:.15s}.duration-200{-webkit-transition-duration:.2s;transition-duration:.2s}.duration-300{-webkit-transition-duration:.3s;transition-duration:.3s}.required:after{content:" *";font-size:.75rem;vertical-align:top;color:#9b1c1c}@media (min-width:640px){.sm\:items-start{-webkit-box-align:start;align-items:flex-start}.sm\:justify-end{-webkit-box-pack:end;justify-content:flex-end}.sm\:leading-5{line-height:1.25rem}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-md{max-width:28rem}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:text-sm{font-size:.875rem}.sm\:w-full{width:100%}.sm\:transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.sm\:transform-none{-webkit-transform:none;transform:none}.sm\:translate-x-0{--transform-translate-x:0}.sm\:translate-x-2{--transform-translate-x:0.5rem}.sm\:translate-y-0{--transform-translate-y:0}.sm\:transition-transform{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}}@media (min-width:1024px){.md\:flex{display:-webkit-box;display:flex}.md\:inline-flex{display:-webkit-inline-box;display:inline-flex}.md\:hidden{display:none}.md\:flex-shrink-0{flex-shrink:0}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:gap-3{grid-gap:.75rem;gap:.75rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-5{grid-column:span 5/span 5}.md\:transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.md\:transform-none{-webkit-transform:none;transform:none}.md\:transition-transform{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}}@media (min-width:1280px){.lg\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:text-2xl{font-size:1.5rem}.lg\:gap-8{grid-gap:2rem;gap:2rem}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.lg\:transform-none{-webkit-transform:none;transform:none}.lg\:transition-transform{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}}@media (min-width:1536px){.xl\:transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.xl\:transform-none{-webkit-transform:none;transform:none}.xl\:transition-transform{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}} \ No newline at end of file +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}a{background-color:transparent}b{font-weight:bolder}sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;top:-.5em}img{border-style:none}button,input,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[hidden]{display:none}dd,dl,h1,h2,p{margin:0}button{background-color:transparent;background-image:none;padding:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:Inter var,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #d2d6dc}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,select,textarea{padding:0;line-height:inherit;color:inherit}audio,img,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input:-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea:-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus{border-color:transparent}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}.dropdown{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-radius:.25rem;background-color:#fff;font-size:.875rem;line-height:1.25rem;color:#161e2e;overflow:hidden}.mode-dark .dropdown{color:#fff;background-color:#000}.dropdown>*+*{border-top-width:1px;border-color:#e5e7eb}.mode-dark .dropdown>*+*{border-color:#161e2e}.dropdown a,.dropdown button{display:inline-block;width:100%;padding:.5rem 1.25rem;text-align:left;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.dropdown a:hover,.dropdown button:hover{background-color:#f9fafb}.mode-dark .dropdown a:hover,.mode-dark .dropdown button:hover{background-color:#374151}.alert{margin-top:1rem;margin-bottom:1rem;padding:.5rem .75rem;border-radius:.25rem;color:#6b7280;border-width:1px;border-color:currentColor;font-size:.875rem;line-height:1.25rem}.alert-info{color:#6875f5}.alert-success{color:#0e9f6e}.label{font-weight:500;font-size:.875rem;line-height:1.25rem;cursor:pointer}.label-disabled{opacity:.5;cursor:not-allowed}.btn{display:-webkit-box;display:flex;-webkit-box-pack:center;justify-content:center;padding:.75rem 1.25rem;font-size:.875rem;line-height:1.25;font-weight:500;border-radius:.25rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);color:#fff;background-color:#5145cd;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);cursor:pointer}.btn:focus{outline:0;box-shadow:0 0 0 3px rgba(159,166,178,.45)}.btn-is-disabled,.btn[disabled]{opacity:.5;cursor:not-allowed}.btn:active,.btn:hover{background-color:#42389d}.btn-small{font-size:.75rem;padding:.5rem .75rem}.btn-action{box-shadow:none;color:#161e2e;border-width:1px;border-color:#e5e7eb;background-color:#f4f5f7}.btn-action:active,.btn-action:hover{border-color:#d2d6dc;background-color:#e5e7eb}.mode-dark .btn-action{color:#fff;border-color:#374151;background-color:#161e2e}.mode-dark .btn-action:active,.mode-dark .btn-action:hover{border-color:#4b5563}.btn-file-input{box-shadow:none;color:#6875f5;background-color:transparent;border:1px dashed}.btn-file-input:active,.btn-file-input:hover{background-color:transparent;color:#5850ec}.mode-dark .btn-file-input{color:#8da2fb}.mode-dark .btn-file-input:active,.mode-dark .btn-file-input:hover{color:#6875f5}.btn-with-dropdown{display:-webkit-inline-box;display:inline-flex;-webkit-box-pack:justify;justify-content:space-between;padding:0}.btn-primary-action{padding:.75rem 1.25rem;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.btn-primary-action:hover{background-color:#42389d}.btn-dropdown{position:relative}.btn-dropdown-actions{padding:.75rem;background-color:#5850ec;border-top-right-radius:.25rem;border-bottom-right-radius:.25rem;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.btn-dropdown-content{position:absolute;left:0;margin-top:.5rem;width:12rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.bg-white{background-color:#fff}.bg-black{background-color:#000}.bg-gray-50{background-color:#f9fafb}.bg-gray-100{background-color:#f4f5f7}.bg-gray-200{background-color:#e5e7eb}.bg-gray-700{background-color:#374151}.bg-gray-800{background-color:#252f3f}.bg-gray-900{background-color:#161e2e}.bg-green-100{background-color:#def7ec}.bg-indigo-600{background-color:#5850ec}.hover\:bg-gray-900:hover{background-color:#161e2e}.focus\:bg-gray-200:focus{background-color:#e5e7eb}.focus\:bg-gray-600:focus{background-color:#4b5563}.focus\:bg-gray-700:focus{background-color:#374151}.active\:bg-gray-100:active{background-color:#f4f5f7}.mode-dark .dark\:bg-transparent{background-color:transparent}.mode-dark .dark\:bg-black{background-color:#000}.mode-dark .dark\:bg-gray-500{background-color:#6b7280}.mode-dark .dark\:bg-gray-700{background-color:#374151}.mode-dark .dark\:bg-gray-800{background-color:#252f3f}.mode-dark .dark\:bg-gray-900{background-color:#161e2e}.border-transparent{border-color:transparent}.border-gray-200{border-color:#e5e7eb}.border-gray-300{border-color:#d2d6dc}.border-red-300{border-color:#f8b4b4}.focus\:border-red-500:focus{border-color:#f05252}.focus\:border-blue-300:focus{border-color:#a4cafe}.mode-dark .dark\:border-gray-700{border-color:#374151}.mode-dark .dark-focus\:border-red-500:focus,.mode-dark .dark\:border-red-500{border-color:#f05252}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-t{border-top-left-radius:.25rem}.rounded-r,.rounded-t{border-top-right-radius:.25rem}.rounded-r{border-bottom-right-radius:.25rem}.rounded-l{border-bottom-left-radius:.25rem}.rounded-l,.rounded-tl{border-top-left-radius:.25rem}.border-dashed{border-style:dashed}.border-2{border-width:2px}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.flex{display:-webkit-box;display:flex}.inline-flex{display:-webkit-inline-box;display:inline-flex}.grid{display:grid}.table{display:table}.hidden{display:none}.flex-col{-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}.items-start{-webkit-box-align:start;align-items:flex-start}.items-end{-webkit-box-align:end;align-items:flex-end}.items-center{-webkit-box-align:center;align-items:center}.justify-center{-webkit-box-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;flex:1 1 0%}.flex-grow{-webkit-box-flex:1;flex-grow:1}.flex-shrink-0{flex-shrink:0}.font-sans{font-family:Inter var,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-extrabold{font-weight:800}.h-0{height:0}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-96{height:24rem}.h-full{height:100%}.h-screen{height:100vh}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-tight{line-height:1.25}.mx-auto{margin-left:auto;margin-right:auto}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mr-3{margin-right:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mb-12{margin-bottom:3rem}.-mr-14{margin-right:-3.5rem}.-mb-px{margin-bottom:-1px}.-ml-px{margin-left:-1px}.-mt-0\.5{margin-top:-.125rem}.-ml-0\.5{margin-left:-.125rem}.max-w-xs{max-width:20rem}.max-w-sm{max-width:24rem}.max-w-7xl{max-width:80rem}.min-h-screen{min-height:100vh}.min-w-full{min-width:100%}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:0}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.pr-3{padding-right:.75rem}.pb-4{padding-bottom:1rem}.pt-5{padding-top:1.25rem}.pr-10{padding-right:2.5rem}.placeholder-red-500::-webkit-input-placeholder{color:#f05252}.placeholder-red-500::-moz-placeholder{color:#f05252}.placeholder-red-500:-ms-input-placeholder{color:#f05252}.placeholder-red-500::-ms-input-placeholder{color:#f05252}.placeholder-red-500::placeholder{color:#f05252}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.shadow-sm{box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-lg{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.focus\:shadow-outline:focus{box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{box-shadow:0 0 0 3px rgba(164,202,254,.45)}.focus\:shadow-outline-red:focus{box-shadow:0 0 0 3px rgba(248,180,180,.45)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{color:#fff}.text-gray-50{color:#f9fafb}.text-gray-200{color:#e5e7eb}.text-gray-300{color:#d2d6dc}.text-gray-400{color:#9fa6b2}.text-gray-500{color:#6b7280}.text-gray-700{color:#374151}.text-gray-800{color:#252f3f}.text-gray-900{color:#161e2e}.text-red-500{color:#f05252}.text-red-600{color:#e02424}.text-red-900{color:#771d1d}.text-green-500{color:#0e9f6e}.text-green-800{color:#03543f}.text-blue-500{color:#3f83f8}.text-indigo-500{color:#6875f5}.text-indigo-600{color:#5850ec}.text-current{color:currentColor}.hover\:text-white:hover{color:#fff}.hover\:text-gray-300:hover{color:#d2d6dc}.hover\:text-gray-400:hover{color:#9fa6b2}.hover\:text-gray-500:hover{color:#6b7280}.hover\:text-gray-900:hover{color:#161e2e}.hover\:text-indigo-700:hover{color:#5145cd}.active\:text-gray-500:active{color:#6b7280}.active\:text-gray-700:active{color:#374151}.mode-dark .dark\:text-white{color:#fff}.mode-dark .dark\:text-gray-50{color:#f9fafb}.mode-dark .dark\:text-gray-300{color:#d2d6dc}.mode-dark .dark\:text-gray-400{color:#9fa6b2}.mode-dark .dark\:text-indigo-400{color:#8da2fb}.mode-dark .dark-hover\:text-gray-300:hover{color:#d2d6dc}.mode-dark .dark-hover\:text-indigo-200:hover{color:#cddbfe}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-3xl{font-size:1.875rem}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.align-middle{vertical-align:middle}.whitespace-no-wrap{white-space:nowrap}.w-0{width:0}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-9{width:2.25rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-56{width:14rem}.w-64{width:16rem}.w-auto{width:auto}.w-full{width:100%}.z-0{z-index:0}.z-30{z-index:30}.z-40{z-index:40}.focus\:z-10:focus{z-index:10}.gap-2{grid-gap:.5rem;gap:.5rem}.gap-4{grid-gap:1rem;gap:1rem}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.col-span-4{grid-column:span 4/span 4}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.transform-none{-webkit-transform:none;transform:none}.origin-bottom-left{-webkit-transform-origin:bottom left;transform-origin:bottom left}.scale-90{--transform-scale-x:.9;--transform-scale-y:.9}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.translate-x-0{--transform-translate-x:0}.translate-x-5{--transform-translate-x:1.25rem}.-translate-x-full{--transform-translate-x:-100%}.translate-y-0{--transform-translate-y:0}.translate-y-2{--transform-translate-y:0.5rem}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-transform}.transition-colors{-webkit-transition-property:background-color,border-color,color,fill,stroke;transition-property:background-color,border-color,color,fill,stroke}.transition-opacity{-webkit-transition-property:opacity;transition-property:opacity}.transition-transform{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.ease-linear{-webkit-transition-timing-function:linear;transition-timing-function:linear}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{-webkit-transition-duration:75ms;transition-duration:75ms}.duration-100{-webkit-transition-duration:.1s;transition-duration:.1s}.duration-150{-webkit-transition-duration:.15s;transition-duration:.15s}.duration-200{-webkit-transition-duration:.2s;transition-duration:.2s}.duration-300{-webkit-transition-duration:.3s;transition-duration:.3s}.required:after{content:" *";font-size:.75rem;vertical-align:top;color:#9b1c1c}@media (min-width:640px){.sm\:items-start{-webkit-box-align:start;align-items:flex-start}.sm\:justify-end{-webkit-box-pack:end;justify-content:flex-end}.sm\:leading-5{line-height:1.25rem}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-md{max-width:28rem}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:text-sm{font-size:.875rem}.sm\:w-full{width:100%}.sm\:transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.sm\:transform-none{-webkit-transform:none;transform:none}.sm\:translate-x-0{--transform-translate-x:0}.sm\:translate-x-2{--transform-translate-x:0.5rem}.sm\:translate-y-0{--transform-translate-y:0}.sm\:transition-transform{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}}@media (min-width:1024px){.md\:flex{display:-webkit-box;display:flex}.md\:inline-flex{display:-webkit-inline-box;display:inline-flex}.md\:hidden{display:none}.md\:flex-shrink-0{flex-shrink:0}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:gap-3{grid-gap:.75rem;gap:.75rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-5{grid-column:span 5/span 5}.md\:transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.md\:transform-none{-webkit-transform:none;transform:none}.md\:transition-transform{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}}@media (min-width:1280px){.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:py-6{padding-top:1.5rem;padding-bottom:1.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:text-2xl{font-size:1.5rem}.lg\:gap-8{grid-gap:2rem;gap:2rem}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.lg\:transform-none{-webkit-transform:none;transform:none}.lg\:transition-transform{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}}@media (min-width:1536px){.xl\:transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.xl\:transform-none{-webkit-transform:none;transform:none}.xl\:transition-transform{-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}} \ No newline at end of file diff --git a/dist/mix-manifest.json b/dist/mix-manifest.json index 1ae96f606e..921da5d0c2 100644 --- a/dist/mix-manifest.json +++ b/dist/mix-manifest.json @@ -1,4 +1,4 @@ { "/js/app.js": "/js/app.js?id=f4941a7bc57a4dca4d67", - "/css/app.css": "/css/app.css?id=5c3f76d5f9f00bd976bf" + "/css/app.css": "/css/app.css?id=ad2238a40d3fb248114a" } diff --git a/resources/views/components/table.blade.php b/resources/views/components/table.blade.php new file mode 100644 index 0000000000..f93081831d --- /dev/null +++ b/resources/views/components/table.blade.php @@ -0,0 +1,33 @@ +
merge(['class' => 'flex flex-col']) }}> +
+
+ + + + @foreach($headers as $header) + + @endforeach + + + + @foreach ($rows as $row) + + @foreach($headers as $column => $header) + + @endforeach + @isset($row['row_action']) + + @endisset + + @endforeach + +
last && isset($rows[0]['row_action']) ? ' colspan="2"' : '' !!}> + {{ $header }} +
+ {{ $row[$column] }} + + {{ $row['row_action']['label'] }} +
+
+
+
\ No newline at end of file diff --git a/resources/views/livewire/roles.blade.php b/resources/views/livewire/roles.blade.php index 56420de78a..1364214890 100644 --- a/resources/views/livewire/roles.blade.php +++ b/resources/views/livewire/roles.blade.php @@ -1,8 +1,9 @@ @section('title', __('filament::admin.roles'))
- @foreach ($roles as $role) -
{{ $role->name }}
- @endforeach + + + {{ $roles->links('filament::partials.links') }} +
\ No newline at end of file diff --git a/resources/views/livewire/users.blade.php b/resources/views/livewire/users.blade.php index 41540d1faa..29aa794c8a 100644 --- a/resources/views/livewire/users.blade.php +++ b/resources/views/livewire/users.blade.php @@ -1,7 +1,7 @@ @section('title', __('filament::admin.users'))
-
- @if ($user->is_super_admin) -
- - {{ __('filament::permissions.super_admin') }} - -
- @endif + +
+ @if ($user->is_super_admin) + {{ __('filament::permissions.super_admin') }} + @elseif (count($user->roles)) +
    + @foreach($user->roles as $role) +
  • {{ $role->name }}
  • + @endforeach +
+ @endif +
diff --git a/resources/views/partials/links.blade.php b/resources/views/partials/links.blade.php index 20f45a1bbc..515763ae85 100644 --- a/resources/views/partials/links.blade.php +++ b/resources/views/partials/links.blade.php @@ -1,5 +1,5 @@ @if ($paginator->hasPages()) -