Calendar Sync V1

This commit is contained in:
2026-03-11 11:44:32 +01:00
parent 87f6839b0d
commit 2d5e9541c2
17 changed files with 3011 additions and 64 deletions

238
style.css
View File

@@ -646,3 +646,241 @@ div.luxtools-calendar td.luxtools-calendar-day:hover {
div.luxtools-calendar td.luxtools-calendar-day.luxtools-calendar-day-today:hover {
background-color: @ini_highlight;
}
/* ============================================================
* Calendar Widget Indicators
* Colored corner markers showing which slots have events on a day.
* Positions: general=top-left, maintenance=top-right,
* slot3=bottom-right, slot4=bottom-left (clockwise)
* ============================================================ */
div.luxtools-calendar td.luxtools-calendar-day {
position: relative;
}
.luxtools-calendar-indicators {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
pointer-events: none;
}
.luxtools-calendar-indicator {
position: absolute;
width: 6px;
height: 6px;
border-radius: 50%;
}
.luxtools-indicator-general {
top: 2px;
left: 2px;
}
.luxtools-indicator-maintenance {
top: 2px;
right: 2px;
}
.luxtools-indicator-slot3 {
bottom: 2px;
right: 2px;
}
.luxtools-indicator-slot4 {
bottom: 2px;
left: 2px;
}
/* ============================================================
* Chronological Events on Day Pages
* ============================================================ */
div.luxtools-chronological-events ul {
list-style: none;
padding-left: 0;
margin: 0.5em 0;
}
div.luxtools-chronological-events li {
padding: 0.35em 0.5em;
margin: 0.25em 0;
border-left: 3px solid @ini_border;
cursor: pointer;
}
div.luxtools-chronological-events li:hover {
background-color: @ini_background_alt;
}
div.luxtools-chronological-events li[data-luxtools-event] .luxtools-event-time {
font-weight: bold;
margin-right: 0.25em;
}
/* ============================================================
* Maintenance Tasks
* ============================================================ */
div.luxtools-chronological-maintenance li {
border-left-color: #e67e22;
}
li.luxtools-maintenance-task.luxtools-task-completed {
opacity: 0.5;
text-decoration: line-through;
}
button.luxtools-task-action,
button.luxtools-task-complete-btn {
margin-left: 0.5em;
padding: 0.15em 0.5em;
font-size: 0.85em;
border: 1px solid @ini_border;
border-radius: 0.2em;
background-color: @ini_background_alt;
cursor: pointer;
}
button.luxtools-task-action:hover,
button.luxtools-task-complete-btn:hover {
background-color: @ini_highlight;
}
button.luxtools-task-action:disabled,
button.luxtools-task-complete-btn:disabled {
opacity: 0.5;
cursor: wait;
}
/* ============================================================
* Maintenance Task List (syntax plugin)
* ============================================================ */
div.luxtools-maintenance-tasks {
margin: 1em 0;
}
ul.luxtools-maintenance-task-list {
list-style: none;
padding-left: 0;
}
ul.luxtools-maintenance-task-list li {
padding: 0.35em 0.5em;
margin: 0.25em 0;
border-left: 3px solid #e67e22;
}
li.luxtools-task-overdue .luxtools-task-date {
color: #c0392b;
font-weight: bold;
}
.luxtools-task-date {
font-family: monospace;
margin-right: 0.5em;
}
.luxtools-task-time {
font-weight: bold;
margin-right: 0.25em;
}
.luxtools-maintenance-task-item.luxtools-task-completed {
opacity: 0.5;
text-decoration: line-through;
}
/* ============================================================
* Event Popup
* ============================================================ */
.luxtools-event-popup-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.4);
z-index: 10000;
justify-content: center;
align-items: center;
}
.luxtools-event-popup {
background: @ini_background;
border: 1px solid @ini_border;
border-radius: 0.4em;
padding: 1.5em;
max-width: 500px;
width: 90%;
max-height: 80vh;
overflow-y: auto;
position: relative;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
}
.luxtools-event-popup-close {
position: absolute;
top: 0.5em;
right: 0.75em;
background: none;
border: none;
font-size: 1.5em;
cursor: pointer;
color: @ini_text;
line-height: 1;
}
.luxtools-event-popup-close:hover {
opacity: 0.7;
}
.luxtools-event-popup-title {
margin: 0 0 0.75em 0;
padding-right: 1.5em;
}
.luxtools-event-popup-field {
margin: 0.5em 0;
}
.luxtools-event-popup-description {
white-space: pre-wrap;
word-break: break-word;
}
.luxtools-event-popup-slot {
margin-top: 1em;
opacity: 0.6;
font-size: 0.9em;
}
/* ============================================================
* Notifications (fallback)
* ============================================================ */
.luxtools-notification {
position: fixed;
top: 1em;
right: 1em;
z-index: 10001;
padding: 0.75em 1em;
border-radius: 0.3em;
font-size: 0.9em;
max-width: 400px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}
.luxtools-notification-error {
background: #c0392b;
color: #fff;
}
.luxtools-notification-warning {
background: #e67e22;
color: #fff;
}