feat(scheduling): compose request editor from core UI

This commit is contained in:
2026-07-20 18:10:48 +02:00
parent 887e064ae9
commit ec538f524d
4 changed files with 702 additions and 675 deletions

View File

@@ -13,64 +13,61 @@
box-sizing: border-box;
}
.scheduling-shell {
display: grid;
grid-template-columns: minmax(300px, 360px) minmax(0, 1fr);
width: 100%;
height: 100%;
min-height: 0;
overflow: hidden;
border: var(--border-line);
background: var(--panel);
}
.scheduling-sidebar,
.scheduling-workspace,
.scheduling-full-editor {
width: 100%;
height: 100%;
min-width: 0;
min-height: 0;
display: flex;
flex-direction: column;
overflow: hidden;
border: var(--border-line);
background: var(--bg);
}
.scheduling-sidebar {
border-right: var(--border-line);
background: var(--panel-soft);
}
.scheduling-sidebar-bar,
.scheduling-topbar,
.scheduling-page-header {
min-height: 58px;
flex: 0 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 10px 14px;
border-bottom: var(--border-line);
background: var(--panel-header);
}
.scheduling-sidebar-bar,
.scheduling-topbar,
.scheduling-page-header,
.scheduling-section-heading,
.scheduling-sidebar-actions,
.scheduling-page-title,
.scheduling-page-actions,
.scheduling-card-actions,
.scheduling-actions,
.scheduling-title-line,
.scheduling-page-title,
.scheduling-status-row {
display: flex;
align-items: center;
gap: 8px;
}
.scheduling-sidebar-bar,
.scheduling-topbar,
.scheduling-page-header,
.scheduling-section-heading {
justify-content: space-between;
.scheduling-page-title {
min-width: 0;
}
.scheduling-page-title > div {
min-width: 0;
}
.scheduling-page-title h1 {
margin: 0;
color: var(--text-strong);
font-size: 19px;
}
.scheduling-page-title p {
margin: 3px 0 0;
color: var(--muted);
font-size: 12px;
}
.scheduling-sidebar-actions,
.scheduling-page-actions,
.scheduling-card-actions,
.scheduling-actions {
@@ -78,12 +75,14 @@
justify-content: flex-end;
}
.scheduling-sidebar-actions .btn,
.scheduling-page-actions {
margin-left: auto;
}
.scheduling-page-actions .btn,
.scheduling-card-actions .btn,
.scheduling-actions .btn,
.scheduling-section-heading .btn,
.scheduling-response-card .btn {
.scheduling-response-card + .btn {
min-height: 34px;
display: inline-flex;
align-items: center;
@@ -99,25 +98,51 @@
justify-content: center;
}
.scheduling-list {
.scheduling-alert,
.scheduling-success {
margin: 10px 14px 0;
padding: 9px 11px;
border: var(--border-line);
border-radius: 7px;
}
.scheduling-alert {
border-color: var(--danger);
color: var(--danger);
background: var(--danger-soft);
}
.scheduling-success {
border-color: var(--success);
color: var(--success);
background: color-mix(in srgb, var(--success) 10%, var(--panel));
}
.scheduling-detail,
.scheduling-editor-scroll {
min-width: 0;
min-height: 0;
overflow: auto;
padding: 8px;
padding: 14px;
}
.scheduling-list-group + .scheduling-list-group {
margin-top: 14px;
padding-top: 12px;
border-top: var(--border-line);
.scheduling-detail,
.scheduling-editor-scroll {
display: grid;
align-content: start;
gap: 12px;
}
.scheduling-list-group h2 {
margin: 0 8px 6px;
color: var(--muted);
font-size: 12px;
font-weight: 800;
letter-spacing: .025em;
text-transform: uppercase;
.scheduling-request-groups {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 12px;
}
.scheduling-list-group {
min-height: 52px;
max-height: 270px;
overflow: auto;
}
.scheduling-list-item {
@@ -146,14 +171,8 @@
background: color-mix(in srgb, var(--accent) 10%, var(--panel));
}
.scheduling-list-item > span,
.scheduling-title-line > div,
.scheduling-page-title > div,
.scheduling-section-heading > div {
min-width: 0;
}
.scheduling-list-item > span {
min-width: 0;
display: grid;
gap: 3px;
}
@@ -168,9 +187,6 @@
}
.scheduling-list-item small,
.scheduling-title-line small,
.scheduling-page-title p,
.scheduling-section-heading p,
.scheduling-note,
.scheduling-list-empty,
.scheduling-compact-row small {
@@ -179,95 +195,15 @@
}
.scheduling-list-status {
max-width: 110px;
max-width: 120px;
padding: 3px 7px;
border-radius: 999px;
background: var(--panel);
background: var(--panel-soft);
font-weight: 700;
}
.scheduling-list-empty {
margin: 3px 8px 8px;
}
.scheduling-workspace {
overflow: hidden;
}
.scheduling-title-line {
min-width: 0;
}
.scheduling-title-line > div {
display: grid;
gap: 2px;
}
.scheduling-alert,
.scheduling-success {
margin: 10px 14px 0;
padding: 9px 11px;
border: var(--border-line);
border-radius: 7px;
}
.scheduling-alert {
border-color: var(--danger);
color: var(--danger);
background: var(--danger-soft);
}
.scheduling-success {
border-color: var(--success);
color: var(--success);
background: color-mix(in srgb, var(--success) 10%, var(--panel));
}
.scheduling-detail,
.scheduling-editor-scroll {
min-height: 0;
overflow: auto;
padding: 14px;
}
.scheduling-detail {
display: grid;
align-content: start;
gap: 12px;
}
.scheduling-card {
width: 100%;
min-width: 0;
padding: 14px;
border: var(--border-line);
border-radius: 8px;
background: var(--panel);
}
.scheduling-card h2,
.scheduling-page-header h1,
.scheduling-section-heading h2 {
margin: 0;
color: var(--text-strong);
}
.scheduling-card h2,
.scheduling-section-heading h2 {
font-size: 15px;
}
.scheduling-page-header h1 {
font-size: 19px;
}
.scheduling-page-title p,
.scheduling-section-heading p {
margin: 3px 0 0;
}
.scheduling-summary-card > p:last-child {
margin-bottom: 0;
margin: 3px 0 8px;
}
.scheduling-status-row {
@@ -288,65 +224,10 @@
background: color-mix(in srgb, var(--accent) 18%, transparent);
}
.scheduling-table-card {
padding: 0;
overflow: hidden;
}
.scheduling-table-card > .scheduling-section-heading {
min-height: 52px;
padding: 9px 14px;
border-bottom: var(--border-line);
background: var(--panel-header);
}
.scheduling-table-scroll {
width: 100%;
overflow: auto;
}
.scheduling-table {
width: 100%;
border-collapse: collapse;
table-layout: auto;
}
.scheduling-table th,
.scheduling-table td {
padding: 9px 10px;
border-bottom: var(--border-line);
text-align: left;
vertical-align: middle;
}
.scheduling-table tr:last-child td {
border-bottom: 0;
}
.scheduling-table th {
color: var(--muted);
background: var(--panel-soft);
font-size: 12px;
font-weight: 800;
white-space: nowrap;
}
.scheduling-table td {
font-size: 13px;
}
.scheduling-table td:first-child {
min-width: 190px;
}
.scheduling-table td > strong {
display: block;
}
.scheduling-table-actions {
width: 1%;
text-align: right !important;
white-space: nowrap;
.scheduling-slot-title {
min-width: 0;
display: grid;
justify-items: start;
}
.scheduling-freebusy {
@@ -393,6 +274,10 @@
gap: 12px;
}
.scheduling-response-card > p {
margin: 0;
}
.scheduling-response-grid {
display: grid;
gap: 6px;
@@ -425,7 +310,7 @@
.scheduling-response-grid select,
.scheduling-field input,
.scheduling-field textarea,
.scheduling-edit-table input:not([type="checkbox"]) {
.scheduling-grid-input {
width: 100%;
min-height: 36px;
padding: 7px 9px;
@@ -436,13 +321,8 @@
font: inherit;
}
.scheduling-action-help summary {
cursor: pointer;
font-weight: 700;
}
.scheduling-action-help ul {
margin-bottom: 0;
.scheduling-action-help {
margin: 0;
}
.scheduling-empty {
@@ -455,26 +335,22 @@
background: var(--panel);
}
.scheduling-full-editor {
width: 100%;
height: 100%;
overflow: hidden;
border: var(--border-line);
background: var(--bg);
}
.scheduling-page-header {
flex: 0 0 auto;
}
.scheduling-page-actions {
margin-left: auto;
}
.scheduling-editor-scroll {
.scheduling-editor-layout {
min-width: 0;
min-height: 0;
flex: 1 1 auto;
display: grid;
align-content: start;
gap: 12px;
grid-template-columns: 198px minmax(0, 1fr);
overflow: hidden;
}
.scheduling-create-subnav {
min-height: 0;
}
.scheduling-create-section {
min-width: 0;
scroll-margin-top: 14px;
}
.scheduling-form-grid {
@@ -483,7 +359,6 @@
gap: 12px;
}
.scheduling-form-grid h2,
.scheduling-field-wide {
grid-column: 1 / -1;
}
@@ -499,35 +374,19 @@
font-weight: 800;
}
.scheduling-toggle {
display: inline-flex;
align-items: center;
gap: 7px;
font-weight: 700;
}
.scheduling-capability-note {
margin: 10px 0 0;
color: var(--muted);
font-size: 12px;
}
.scheduling-edit-table input[type="checkbox"] {
width: 18px;
height: 18px;
.scheduling-selected-calendar {
max-width: 520px;
}
@media (max-width: 1050px) {
.scheduling-shell {
grid-template-columns: minmax(260px, 310px) minmax(0, 1fr);
}
.scheduling-sidebar-bar {
align-items: flex-start;
}
.scheduling-sidebar-actions {
align-items: flex-end;
@media (max-width: 900px) {
.scheduling-editor-layout {
grid-template-columns: minmax(0, 1fr);
}
}
@@ -538,25 +397,12 @@
overflow: auto;
}
.scheduling-shell {
height: auto;
grid-template-columns: minmax(0, 1fr);
overflow: visible;
}
.scheduling-sidebar {
max-height: 46vh;
border-right: 0;
border-bottom: var(--border-line);
}
.scheduling-workspace,
.scheduling-full-editor {
overflow: visible;
}
.scheduling-full-editor,
.scheduling-editor-layout,
.scheduling-detail,
.scheduling-editor-scroll {
height: auto;
overflow: visible;
}
@@ -565,9 +411,7 @@
grid-template-columns: minmax(0, 1fr);
}
.scheduling-page-header,
.scheduling-topbar,
.scheduling-section-heading {
.scheduling-page-header {
align-items: flex-start;
flex-wrap: wrap;
}