structure updates
This commit is contained in:
@@ -11,6 +11,7 @@ use Illuminate\Database\QueryException;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Livewire\Attributes\Layout;
|
||||
use Livewire\Component;
|
||||
use Livewire\WithPagination;
|
||||
use Modules\Helpdesk\Models\AutomationRule;
|
||||
@@ -1034,9 +1035,12 @@ final class SettingsManager extends Component
|
||||
$this->checklistTemplateForm = ['id' => null, 'category_id' => null, 'project_id' => null, 'name' => '', 'slug' => '', 'items_text' => '', 'is_active' => true];
|
||||
}
|
||||
|
||||
#[Layout('layouts.app')]
|
||||
public function render(): View
|
||||
{
|
||||
return view('modules.helpdesk.livewire.settings-manager', [
|
||||
return view()->file(
|
||||
resource_path('themes/backend/views/modules/helpdesk/livewire/settings-manager.blade.php'),
|
||||
[
|
||||
'statuses' => $this->orderedStatuses(),
|
||||
'priorities' => $this->orderedPriorities(),
|
||||
'categories' => $this->orderedCategories(),
|
||||
@@ -1088,7 +1092,8 @@ final class SettingsManager extends Component
|
||||
->orderBy('name')
|
||||
->paginate(10, ['*'], 'checksPage'),
|
||||
'colourOptions' => Color::options(),
|
||||
])->layout('layouts.app');
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
private function orderedStatuses(): mixed
|
||||
|
||||
@@ -1017,3 +1017,378 @@ span.flatpickr-weekday {
|
||||
padding-inline: 0.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Professional coloured headers for Helpdesk settings modals */
|
||||
.hd-settings-modal-header {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
margin-bottom: 1.35rem;
|
||||
padding: 1.05rem 1.2rem;
|
||||
border: 1px solid rgba(255, 255, 255, 0.10);
|
||||
border-radius: 0.9rem;
|
||||
box-shadow:
|
||||
inset 0 1px 0 rgba(255, 255, 255, 0.08),
|
||||
0 12px 30px rgba(0, 0, 0, 0.14);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header::after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -3.5rem;
|
||||
right: -2rem;
|
||||
width: 11rem;
|
||||
height: 11rem;
|
||||
border-radius: 9999px;
|
||||
background: rgba(255, 255, 255, 0.08);
|
||||
filter: blur(1px);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.hd-settings-modal-header [data-flux-heading],
|
||||
.hd-settings-modal-header h1,
|
||||
.hd-settings-modal-header h2,
|
||||
.hd-settings-modal-header h3 {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
color: #fff !important;
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.015em;
|
||||
}
|
||||
|
||||
.hd-settings-modal-header [data-flux-subheading],
|
||||
.hd-settings-modal-header p {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
color: rgba(255, 255, 255, 0.74) !important;
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--status {
|
||||
background: linear-gradient(135deg, #075985 0%, #0369a1 48%, #0e7490 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--priority {
|
||||
background: linear-gradient(135deg, #7f1d1d 0%, #b91c1c 48%, #c2410c 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--category {
|
||||
background: linear-gradient(135deg, #3730a3 0%, #4f46e5 48%, #7c3aed 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--team {
|
||||
background: linear-gradient(135deg, #1e3a8a 0%, #1d4ed8 48%, #0369a1 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--project {
|
||||
background: linear-gradient(135deg, #155e75 0%, #0e7490 48%, #0f766e 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--board {
|
||||
background: linear-gradient(135deg, #78350f 0%, #b45309 48%, #d97706 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--git {
|
||||
background: linear-gradient(135deg, #1f2937 0%, #374151 52%, #475569 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--workflow {
|
||||
background: linear-gradient(135deg, #115e59 0%, #0f766e 48%, #047857 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--canned {
|
||||
background: linear-gradient(135deg, #164e63 0%, #0891b2 48%, #0284c7 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--sla {
|
||||
background: linear-gradient(135deg, #7c2d12 0%, #c2410c 48%, #ea580c 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--automation {
|
||||
background: linear-gradient(135deg, #581c87 0%, #7e22ce 48%, #9333ea 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--checklist {
|
||||
background: linear-gradient(135deg, #365314 0%, #4d7c0f 48%, #65a30d 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--tag {
|
||||
background: linear-gradient(135deg, #831843 0%, #be185d 48%, #db2777 100%);
|
||||
}
|
||||
|
||||
.hd-settings-modal-header--product {
|
||||
background: linear-gradient(135deg, #312e81 0%, #4338ca 48%, #6366f1 100%);
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.hd-settings-modal-header {
|
||||
padding: 0.95rem 1rem;
|
||||
border-radius: 0.8rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Settings modal shell alignment + typography */
|
||||
.hd-settings-modal,
|
||||
.hd-settings-modal * {
|
||||
font-family: "Instrument Sans", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
|
||||
}
|
||||
|
||||
.hd-settings-modal {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/*
|
||||
* Flux supplies the modal body padding. Pull the coloured banner back over
|
||||
* that padding so it visually becomes the modal's own top header rather than
|
||||
* looking like a card floating inside the dialog.
|
||||
*/
|
||||
.hd-settings-modal .hd-settings-modal-header {
|
||||
margin-top: -1.5rem;
|
||||
margin-right: -1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
margin-left: -1.5rem;
|
||||
padding: 1.35rem 1.5rem 1.3rem;
|
||||
border-top: 0;
|
||||
border-right: 0;
|
||||
border-left: 0;
|
||||
border-radius: 1rem 1rem 0 0;
|
||||
box-shadow:
|
||||
inset 0 1px 0 rgba(255, 255, 255, 0.08),
|
||||
0 10px 26px rgba(0, 0, 0, 0.16);
|
||||
}
|
||||
|
||||
.hd-settings-modal .hd-settings-modal-header [data-flux-heading],
|
||||
.hd-settings-modal .hd-settings-modal-header h1,
|
||||
.hd-settings-modal .hd-settings-modal-header h2,
|
||||
.hd-settings-modal .hd-settings-modal-header h3 {
|
||||
margin: 0;
|
||||
font-family: inherit !important;
|
||||
font-size: 1.25rem !important;
|
||||
font-weight: 700 !important;
|
||||
line-height: 1.35 !important;
|
||||
letter-spacing: -0.02em !important;
|
||||
}
|
||||
|
||||
.hd-settings-modal .hd-settings-modal-header [data-flux-subheading],
|
||||
.hd-settings-modal .hd-settings-modal-header p {
|
||||
margin-top: 0.45rem !important;
|
||||
margin-bottom: 0 !important;
|
||||
font-family: inherit !important;
|
||||
font-size: 0.95rem !important;
|
||||
font-weight: 400 !important;
|
||||
line-height: 1.5 !important;
|
||||
letter-spacing: 0 !important;
|
||||
}
|
||||
|
||||
.hd-settings-modal input,
|
||||
.hd-settings-modal select,
|
||||
.hd-settings-modal textarea,
|
||||
.hd-settings-modal button {
|
||||
font-family: inherit !important;
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.hd-settings-modal .hd-settings-modal-header {
|
||||
margin-top: -1rem;
|
||||
margin-right: -1rem;
|
||||
margin-left: -1rem;
|
||||
padding: 1.1rem 1rem;
|
||||
border-radius: 0.85rem 0.85rem 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Kanban-style settings form rhythm */
|
||||
.hd-settings-modal {
|
||||
color: rgb(244 244 245);
|
||||
}
|
||||
|
||||
.hd-settings-modal :is(label, [data-flux-label]) {
|
||||
font-family: "Instrument Sans", ui-sans-serif, system-ui, sans-serif !important;
|
||||
font-size: 0.95rem !important;
|
||||
font-weight: 600 !important;
|
||||
line-height: 1.35 !important;
|
||||
letter-spacing: -0.01em !important;
|
||||
text-transform: none !important;
|
||||
}
|
||||
|
||||
.hd-settings-modal :is(input:not([type="checkbox"]):not([type="radio"]):not([type="color"]), select, textarea) {
|
||||
min-height: 3rem;
|
||||
font-family: "Instrument Sans", ui-sans-serif, system-ui, sans-serif !important;
|
||||
font-size: 1rem !important;
|
||||
font-weight: 500 !important;
|
||||
line-height: 1.4 !important;
|
||||
letter-spacing: -0.01em !important;
|
||||
color: rgb(244 244 245) !important;
|
||||
background: rgb(39 39 42) !important;
|
||||
border-color: rgb(82 82 91) !important;
|
||||
border-radius: 0.75rem !important;
|
||||
}
|
||||
|
||||
.hd-settings-modal :is(input, select, textarea):focus {
|
||||
border-color: rgb(59 130 246) !important;
|
||||
box-shadow: 0 0 0 3px rgb(59 130 246 / 0.16) !important;
|
||||
}
|
||||
|
||||
.hd-settings-modal textarea {
|
||||
min-height: 7.5rem;
|
||||
padding-top: 0.85rem !important;
|
||||
padding-bottom: 0.85rem !important;
|
||||
}
|
||||
|
||||
.hd-settings-modal button,
|
||||
.hd-settings-modal [role="button"] {
|
||||
font-family: "Instrument Sans", ui-sans-serif, system-ui, sans-serif !important;
|
||||
font-weight: 650 !important;
|
||||
letter-spacing: -0.01em !important;
|
||||
}
|
||||
|
||||
/* Shared horizontal colour control for Status, Priority, Category, Team, Project and Tag editors. */
|
||||
.hd-colour-control {
|
||||
width: 100%;
|
||||
padding: 1rem 1.1rem;
|
||||
border: 1px solid rgb(63 63 70);
|
||||
border-radius: 0.9rem;
|
||||
background: rgb(24 24 27 / 0.78);
|
||||
box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.025);
|
||||
}
|
||||
|
||||
.hd-colour-control__label {
|
||||
margin-bottom: 0.65rem;
|
||||
font-family: "Instrument Sans", ui-sans-serif, system-ui, sans-serif;
|
||||
font-size: 0.95rem;
|
||||
font-weight: 650;
|
||||
line-height: 1.35;
|
||||
letter-spacing: -0.01em;
|
||||
color: rgb(228 228 231);
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
.hd-colour-control__row {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(18rem, 1fr) minmax(7.5rem, auto) auto 3.25rem minmax(8rem, 10rem);
|
||||
align-items: center;
|
||||
gap: 0.8rem;
|
||||
}
|
||||
|
||||
.hd-colour-control__select,
|
||||
.hd-colour-control__value {
|
||||
height: 3rem;
|
||||
min-width: 0;
|
||||
border: 1px solid rgb(82 82 91);
|
||||
border-radius: 0.75rem;
|
||||
background: rgb(39 39 42);
|
||||
color: rgb(244 244 245);
|
||||
font-family: "Instrument Sans", ui-sans-serif, system-ui, sans-serif;
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
outline: none;
|
||||
transition: border-color 150ms ease, box-shadow 150ms ease;
|
||||
}
|
||||
|
||||
.hd-colour-control__select {
|
||||
width: 100%;
|
||||
padding: 0 0.95rem;
|
||||
}
|
||||
|
||||
.hd-colour-control__value {
|
||||
width: 100%;
|
||||
padding: 0 0.9rem;
|
||||
}
|
||||
|
||||
.hd-colour-control__select:focus,
|
||||
.hd-colour-control__value:focus {
|
||||
border-color: rgb(59 130 246);
|
||||
box-shadow: 0 0 0 3px rgb(59 130 246 / 0.16);
|
||||
}
|
||||
|
||||
.hd-colour-control__badge {
|
||||
display: inline-flex;
|
||||
height: 3rem;
|
||||
min-width: 7.5rem;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 0 1rem;
|
||||
border-radius: 0.75rem;
|
||||
font-family: "Instrument Sans", ui-sans-serif, system-ui, sans-serif;
|
||||
font-size: 0.95rem;
|
||||
font-weight: 700;
|
||||
box-shadow: inset 0 0 0 1px rgb(255 255 255 / 0.12);
|
||||
}
|
||||
|
||||
.hd-colour-control__swatches {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
align-items: center;
|
||||
gap: 0.45rem;
|
||||
}
|
||||
|
||||
.hd-colour-control__swatch {
|
||||
width: 1.75rem;
|
||||
height: 1.75rem;
|
||||
flex: 0 0 auto;
|
||||
border: 2px solid rgb(228 228 231 / 0.86);
|
||||
border-radius: 9999px;
|
||||
box-shadow: 0 0 0 1px rgb(0 0 0 / 0.28);
|
||||
transition: transform 120ms ease, box-shadow 120ms ease;
|
||||
}
|
||||
|
||||
.hd-colour-control__swatch:hover {
|
||||
transform: translateY(-1px) scale(1.06);
|
||||
box-shadow: 0 0 0 3px rgb(59 130 246 / 0.14);
|
||||
}
|
||||
|
||||
.hd-colour-control__picker {
|
||||
width: 3.25rem;
|
||||
height: 3rem;
|
||||
padding: 0.35rem;
|
||||
cursor: pointer;
|
||||
border: 1px solid rgb(82 82 91);
|
||||
border-radius: 0.75rem;
|
||||
background: rgb(39 39 42);
|
||||
}
|
||||
|
||||
@media (max-width: 1180px) {
|
||||
.hd-colour-control__row {
|
||||
grid-template-columns: minmax(16rem, 1fr) minmax(7rem, auto) auto;
|
||||
}
|
||||
|
||||
.hd-colour-control__picker,
|
||||
.hd-colour-control__value {
|
||||
grid-row: 2;
|
||||
}
|
||||
|
||||
.hd-colour-control__value {
|
||||
grid-column: 2 / 4;
|
||||
max-width: 13rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 720px) {
|
||||
.hd-colour-control {
|
||||
padding: 0.9rem;
|
||||
}
|
||||
|
||||
.hd-colour-control__row {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.hd-colour-control__select {
|
||||
flex: 1 1 100%;
|
||||
}
|
||||
|
||||
.hd-colour-control__badge {
|
||||
flex: 1 1 8rem;
|
||||
}
|
||||
|
||||
.hd-colour-control__swatches {
|
||||
order: 5;
|
||||
width: 100%;
|
||||
overflow-x: auto;
|
||||
padding-top: 0.15rem;
|
||||
}
|
||||
|
||||
.hd-colour-control__value {
|
||||
flex: 1 1 8rem;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user