initial files
This commit is contained in:
131
public/styles/colors.css
Normal file
131
public/styles/colors.css
Normal file
@@ -0,0 +1,131 @@
|
||||
/* #region OS */
|
||||
#desktop { background:var(--theme-desktop-backcolor); background-image:var(--theme-desktop-image); }
|
||||
#taskbar { background:var(--theme-taskbar-backcolor); color:var(--theme-taskbar-color); }
|
||||
#tutorial-tooltip {background:var(--theme-window-backcolor); color:var(--theme-window-color);}
|
||||
#tutorial-tooltip img {filter: invert(1);}
|
||||
|
||||
#start-btn { background:var(--theme-accent-default-backcolor); color:var(--theme-accent-default-color); }
|
||||
#start-btn:hover { background:var(--theme-accent-hover-backcolor); color:var(--theme-accent-hover-color); }
|
||||
#start-btn:active { background:var(--theme-accent-active-backcolor); color:var(--theme-accent-active-color); }
|
||||
|
||||
/* #start-menu, .submenu { background:var(--theme-taskbar-backcolor); color:var(--theme-taskbar-color); } */
|
||||
#start-menu { padding-bottom:10px; background:var(--theme-startmenu-backcolor); color:var(--theme-startmenu-color); border:3px solid rgb(128,128,128); }
|
||||
.start-submenu-head { background:var(--theme-startmenu-submenu-header-backcolor); color:var(--theme-startmenu-submenu-header-backcolor) }
|
||||
.start-icon { background:var(--theme-accent-default-backcolor); }
|
||||
|
||||
/* .start-item:hover, .start-sys-item:hover { color:var(--theme-accent-hover-color); background:var(--theme-accent-hover-backcolor); } */
|
||||
.start-item.has-submenu.open > .menu-label , .start-item:not(.has-submenu.open), .start-sys-item { background-color:var(--theme-startmenu-item-default-backcolor); color:var(--theme-startmenu-item-default-color); }
|
||||
.start-item:not(.has-submenu.open):not(.unload):hover, .start-sys-item:hover { background-color:var(--theme-startmenu-item-hover-backcolor); color:var(--theme-startmenu-item-hover-color); }
|
||||
.start-item:not(.has-submenu):not(.has-submenu.open):not(.unload):active, .start-sys-item:active { color:var(--theme-accent-active-color); background:var(--theme-accent-active-backcolor); }
|
||||
.start-item-sys-container { background:var(--theme-startmenu-syscontainer-backcolor);}
|
||||
.start-item .unload { background:var(--theme-startmenu-item-disabled-backcolor); color:var(--theme-startmenu-item-disabled-color); }
|
||||
/* #taskbar .taskbar-item { background:var(--theme-taskbar-item-backcolor); } */
|
||||
|
||||
.taskbar-item { position: relative;}
|
||||
.taskbar-item::before { background: var(--theme-accent-active-color); }
|
||||
.taskbar-item.focus::before { background: var(--theme-accent-active-backcolor); }
|
||||
/* .taskbar-item.minimized { background:var(--theme-taskbar-item-minimized-backcolor); color:var(--theme-taskbar-item-minimized-color); border-color:var(--theme-taskbar-item-minimized-border-color);} */
|
||||
.taskbar-item.default { background:var(--theme-taskbar-item-default-backcolor); color:var(--theme-taskbar-item-default-color); border-color:var(--theme-taskbar-item-default-border-color);}
|
||||
.taskbar-item:hover { background-color:var(--theme-startmenu-item-hover-backcolor); color:var(--theme-startmenu-item-hover-color); }
|
||||
|
||||
.window { border:2px solid var(--theme-window-titlebar-backcolor); background:var(--theme-window-backcolor); }
|
||||
.window-content { color:var(--theme-window-color); background:var(--theme-window-backcolor); }
|
||||
.window-titlebar { color:var(--theme-window-titlebar-color); background:var(--theme-window-titlebar-backcolor); }
|
||||
.window .controls button { color:var(--theme-window-titlebar-color); background:transparent; }
|
||||
.window .controls button:hover { color:var(--theme-accent-hover-color); background:var(--theme-accent-hover-backcolor); }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Table */
|
||||
table, tr, td, th { border-color:var(--theme-table-border-color); }
|
||||
table thead th { background-color:var(--theme-table-header-backcolor); color:var(--theme-table-header-color); border-color:var(--theme-table-border-color); }
|
||||
table tbody tr:nth-child(even) { background-color:var(--theme-table-rows-even-backcolor); color:var(--theme-table-rows-even-color); }
|
||||
table tbody tr:nth-child(odd) { background-color:var(--theme-table-rows-odd-backcolor); color:var(--theme-table-rows-odd-color); }
|
||||
table tbody tr:not(.grouprow):not(.no-hover):hover { color:var(--theme-accent-hover-color); background:var(--theme-accent-hover-backcolor); }
|
||||
table tbody tr.grouprow { background-color:var(--theme-table-rows-grouprow-backcolor); color:var(--theme-table-rows-grouprow-color); }
|
||||
table tbody tr.active, table tbody td.active { color:var(--theme-accent-active-color); background:var(--theme-accent-active-backcolor); }
|
||||
.table-filter-container { border-color:var(--theme-table-border-color); background-color:var(--theme-table-header-backcolor); color:var(--theme-table-header-color); }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Scrollbar */
|
||||
::-webkit-scrollbar-track, ::-webkit-scrollbar-corner { background:var(--theme-scrollbar-backcolor); }
|
||||
::-webkit-scrollbar-thumb { background-color:var(--theme-scrollbar-thumb-default-backcolor); border-color:var(--theme-scrollbar-thumb-default-border-color); }
|
||||
::-webkit-scrollbar-thumb:hover { background-color:var(--theme-scrollbar-thumb-hover-backcolor); border-color:var(--theme-scrollbar-thumb-hover-border-color); }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Tooltip */
|
||||
.global-tooltip { background:var(--theme-tooltip-backcolor); color:var(--theme-tooltip-color); border-color:var(--theme-tooltip-border-color) }
|
||||
/* #endregion */
|
||||
|
||||
/* #region feedbox */
|
||||
.feedbox { background:var(--theme-feedbox-backcolor); color:var(--theme-feedbox-color);box-shadow:0 5px 25px rgba(0,0,0,0.3); }
|
||||
.feedbox-overlay { background:rgba(0,0,0,0.5); }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Messagbox */
|
||||
.test, .test .countdown { color:var(--theme-message-test-color); background-color:var(--theme-message-test-backcolor); border-color:var(--theme-message-test-border-color); }
|
||||
.success, .success .countdown { color:var(--theme-message-success-color); background-color:var(--theme-message-success-backcolor); border-color:var(--theme-message-success-border-color); }
|
||||
.error, .error .countdown { color:var(--theme-message-error-color); background:var(--theme-message-error-backcolor); border-color:var(--theme-message-error-border-color); }
|
||||
.info, .info .countdown { color:var(--theme-message-info-color); background-color:var(--theme-message-info-backcolor); border-color:var(--theme-message-info-border-color); }
|
||||
.warn, .warn .countdown { color:var(--theme-message-warn-color); background-color:var(--theme-message-warn-backcolor); border-color:var(--theme-message-warn-border-color); }
|
||||
.throw_exception, .throw_exception .countdown { color:var(--theme-message-throw-color); background-color:var(--theme-message-throw-backcolor); border-color:var(--theme-message-throw-border-color); }
|
||||
.message { box-shadow:0 4px 10px rgba(0,0,0,0.3); } /* SHADOW? */
|
||||
/* #endregion */
|
||||
|
||||
.error-field { background:var(--theme-message-error-backcolor); border-color:var(--theme-message-error-border-color); color:var(--theme-message-error-color); }
|
||||
.success-field { background:var(--theme-message-success-backcolor); border-color: var(--theme-message-success-border-color); color:var(--theme-message-success-color); }
|
||||
|
||||
/* region Container*/
|
||||
.card { background:var(--theme-container-card-backcolor); border-color:var(--theme-container-card-border); }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Checkbox */
|
||||
.cb-box { border-color:var(--theme-checkbox-default-border-color); box-shadow:0 1px 2px var(--theme-checkbox-shadow-color) inset; }
|
||||
.cb input:checked + .cb-box { background:var(--theme-checkbox-default-thumb); border-color:var(--theme-checkbox-default-thumb); }
|
||||
.cb input:disabled + .cb-box { background:var(--theme-checkbox-disabled-backcolor); border-color:var(--theme-checkbox-disabled-border-color); }
|
||||
.cb-label { color:var(--theme-checkbox-color); }
|
||||
/* #endregion */
|
||||
|
||||
/* #region Switch */
|
||||
.cb-switch .cb-label { color:var(--theme-switch-color); }
|
||||
.switch-track { background:var(--theme-switch-backcolor); border-color:var(--theme-switch-border-color); }
|
||||
/* #endregion */
|
||||
|
||||
/* #region Required */
|
||||
.is-required-empty { border-width:2px; border-color:var(--theme-required-empty); border-style:solid; }
|
||||
.is-required-filled { border-color:var(--theme-required-accept); }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Tabs */
|
||||
.tabs { border-bottom-color: #ccc; }
|
||||
.tab-content { border-color: #ccc; }
|
||||
.tab:hover { background-color: var(--theme-accent-hover-backcolor); color: var(--theme-accent-hover-color); }
|
||||
.tab.active { background-color: var(--theme-accent-active-backcolor); color: var(--theme-accent-active-color); border-color: var(--theme-accent-active-border-color); border-bottom-color: var(--theme-accent-active-backcolor); }
|
||||
/* #endregion */
|
||||
|
||||
/* #region DOM */
|
||||
button:not(:disabled).monolyth { background-color:var(--theme-button-monolyth-default-backcolor); color:var(--theme-button-monolyth-default-color); }
|
||||
button:not(:disabled).monolyth:hover { background-color:var(--theme-button-monolyth-hover-backcolor); color:var(--theme-button-monolyth-hover-color); }
|
||||
button:not(:disabled).monolyth:hover, button:not(:disabled).bluebutton:hover, button:not(:disabled).redbutton:hover, button:not(:disabled).yellowbutton:hover, button:not(:disabled).greenbutton:hover { box-shadow:0 6px 8px rgba(0,0,0,0.15); }
|
||||
|
||||
select { background:var(--theme-select-default-backcolor); color:var(--theme-select-default-color); box-shadow:0 0 5px var(--theme-select-default-border-color); }
|
||||
input:hover, input[type="text"]:hover, input[type="email"]:hover, input[type="password"]:hover, input[type="number"]:hover, input[type="date"]:hover,textarea:hover, select:hover { background:var(--theme-input-hover-backcolor); color:var(--theme-input-hover-color); box-shadow:0 0 5px var(--theme-input-hover-border-color); }
|
||||
input:focus, input[type="text"]:focus, input[type="email"]:focus, input[type="password"]:focus, input[type="number"]:focus, input[type="date"]:focus, textarea:focus, select:focus { background:var(--theme-input-focus-backcolor); color:var(--theme-input-focus-color); box-shadow:0 0 5px var(--theme-input-focus-border-color); }
|
||||
input.valid { border: 2px solid var(--theme-input-accept-border-color); }
|
||||
input.invalid { border: 2px solid var(--theme-input-decline-border-color); }
|
||||
|
||||
*::placeholder, input[id="sAMAccountName"] { color:var(--theme-input-placeholder-color); }
|
||||
|
||||
textarea, input { border-color:var(--theme-input-default-border-color); background:var(--theme-input-default-backcolor); color:var(--theme-input-default-color); }
|
||||
textarea:not([required]):hover, input:not([required]):hover { border-color:var(--theme-input-hover-border-color); background-color:var(--theme-input-hover-backcolor); color:var(--theme-input-hover-color); }
|
||||
textarea:focus, input:focus { border-color:var(--theme-input-focus-border-color); background-color:var(--theme-input-focus-backcolor); color:var(--theme-input-focus-color); }
|
||||
|
||||
select, select option { border-color:var(--theme-select-border-color); background-color:var(--theme-select-backcolor); color:var(--theme-select-color); }
|
||||
select:focus, select:not([required]):hover, select:focus option,select:not([required]):hover option { border-color:var(--theme-select-hover-border-color); background-color:var(--theme-select-hover-backcolor); color:var(--theme-select-hover-color); }
|
||||
|
||||
/* #endregion */
|
||||
79
public/styles/contextMenu.css
Normal file
79
public/styles/contextMenu.css
Normal file
@@ -0,0 +1,79 @@
|
||||
.ctx-menu {
|
||||
position: fixed;
|
||||
min-width: 180px;
|
||||
background: var(--theme-contextmenu-backcolor);
|
||||
border: 1px solid var(--theme-contextmenu-border-color);
|
||||
color: var(--theme-contextmenu-color);
|
||||
border-radius: 6px;
|
||||
padding: 4px 0;
|
||||
box-shadow: 0 8px 20px rgba(0,0,0,0.15);
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.ctx-menu.hidden {
|
||||
opacity: 0;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.ctx-list {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.ctx-item {
|
||||
padding: 5px 7px 5px 20px;
|
||||
margin-left: 1px;
|
||||
white-space: nowrap;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.ctx-item:hover {
|
||||
background: var(--theme-contextmenu-hover-backcolor);
|
||||
color: var(--theme-contextmenu-hover-color);
|
||||
}
|
||||
|
||||
|
||||
.ctx-item .icon {
|
||||
display: inline-flex;
|
||||
position: relative;
|
||||
justify-content: flex-start;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
|
||||
.ctx-disabled {
|
||||
opacity: 0.5;
|
||||
/* cursor: default; */
|
||||
}
|
||||
|
||||
.ctx-divider {
|
||||
border-top: 1px solid var(--theme-contextmenu-divider);
|
||||
margin: 4px 0;
|
||||
}
|
||||
|
||||
.ctx-submenu {
|
||||
position: absolute;
|
||||
left: 100%;
|
||||
top: 0;
|
||||
min-width: 160px;
|
||||
background: var(--theme-contextmenu-backcolor);
|
||||
border: 1px solid var(--theme-contextmenu-border-color);
|
||||
color: var(--theme-contextmenu-color);
|
||||
padding: 4px 0;
|
||||
border-radius: 6px;
|
||||
display: none;
|
||||
z-index: 99999;
|
||||
}
|
||||
|
||||
.ctx-submenu.open {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.ctx-arrow {
|
||||
font-size: 11px;
|
||||
opacity: 0.6;
|
||||
}
|
||||
434
public/styles/default.css
Normal file
434
public/styles/default.css
Normal file
@@ -0,0 +1,434 @@
|
||||
/* #region DOM */
|
||||
*::placeholder { text-align:center; }
|
||||
* {
|
||||
user-select:none;
|
||||
cursor: var(--theme-cursor-default) 1 1, auto;
|
||||
}
|
||||
|
||||
|
||||
.selectable { user-select: text !important; cursor: var(--theme-cursor-pointer) 0 16, pointer; }
|
||||
|
||||
input, input[type="text"], input[type="email"], input[type="password"], input[type="search"], input[type="date"], textarea, select { border-width:2px; border-style:solid; font-size: var(--fontSize); font-family: var(--fontFamily); border-radius:10px; padding:10px 12px; outline:none; transition:all .5s ease; width:auto; }
|
||||
input.width\:100px { width:100px; }
|
||||
input.width\:90px { width:90px; }
|
||||
input.width\:75px { width:75px; }
|
||||
input.width\:50px { width:50px; }
|
||||
input.width\:25px { width:25px; }
|
||||
|
||||
*::placeholder, input[id="sAMAccountName"] { font-style:italic; font-weight:100; letter-spacing:3px; }
|
||||
|
||||
html, button { font-size: var(--fontSize); font-family: var(--fontFamily); }
|
||||
button.monolyth, button.bluebutton, button.greenbutton, button.yellowbutton, button.redbutton { display:inline-block; padding:8px 10px; margin:0.2rem 1.6rem; font-weight:600; text-align:center; text-decoration:none; color:rgb(255, 255, 255); border:none; border-radius:8px; box-shadow:0 4px 6px rgba(0,0,0,0.1); transition:all 0.2s ease; }
|
||||
button.monolyth { background-color:transparent; }
|
||||
button:not(:disabled).monolyth:hover { opacity:0.9; }
|
||||
button.bluebutton { color:var(--theme-button-blue-default-color); background:var(--theme-button-blue-default-backcolor); }
|
||||
button.greenbutton { color:var(--theme-button-green-default-color); background:var(--theme-button-green-default-backcolor); }
|
||||
button.yellowbutton { color:var(--theme-button-yellow-default-color); background:var(--theme-button-yellow-default-backcolor); }
|
||||
button.redbutton { color:var(--theme-button-red-default-color); background:var(--theme-button-red-default-backcolor); }
|
||||
button:disabled { color:var(--theme-button-disabled-color); background:var(--theme-button-disabled-backcolor); }
|
||||
button:not(:disabled).redbutton:hover { background:var(--theme-button-red-hover-color); background:var(--theme-button-red-hover-backcolor); }
|
||||
button:not(:disabled).greenbutton:hover { background:var(--theme-button-green-hover-color); background:var(--theme-button-green-hover-backcolor); }
|
||||
button:not(:disabled).bluebutton:hover { background:var(--theme-button-blue-hover-color); background:var(--theme-button-blue-hover-backcolor); }
|
||||
button:not(:disabled).yellowbutton:hover { background:var(--theme-button-yellow-hover-color); background:var(--theme-button-yellow-hover-backcolor); }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
|
||||
/* #region Container */
|
||||
.container.static { width:calc(100% - 20px); margin:10px auto; display:flex; gap:12px; min-height:0; overflow:auto; max-height:100%; flex-direction: column;}
|
||||
/* .card.static { display:flex; flex-direction:column;flex: 0 0 auto; } */
|
||||
.card.static.row { overflow:hidden; display:flex; flex-direction:row; flex-wrap: wrap;}
|
||||
.card.static { overflow:hidden; display:flex; flex-direction:column; }
|
||||
|
||||
.container { width:calc(100% - 20px); margin:10px auto; display:grid; grid-template-columns:100%; gap:12px; min-height:0; overflow:auto; max-height:100%; }
|
||||
.container:not(.static) * { box-sizing:border-box; }
|
||||
.card { border-width:1px; border-style:solid; border-radius:8px; padding:20px; }
|
||||
|
||||
.grid { display:grid; gap:16px; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr)); }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Copy icon */
|
||||
.copy-icon { transition:opacity .25s; cursor:var(--theme-cursor-pointer) -16 16, pointer; opacity:0.7; }
|
||||
.copy-icon:hover { opacity:1; }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Tooltip */
|
||||
.global-tooltip { position:fixed; padding:6px 8px; border-width:1px; border-style:solid; border-radius:10px; max-width:50vw; white-space:normal; z-index:999; pointer-events:none; opacity:0; transform:translateY(-30px); transition:opacity .12s ease; }
|
||||
.global-tooltip.visible { opacity:1; }
|
||||
/* #endregion*/
|
||||
|
||||
|
||||
/* #region Scrollbar */
|
||||
::-webkit-scrollbar { width:12px; height:12px; }
|
||||
::-webkit-scrollbar-track { border-radius:0px; }
|
||||
::-webkit-scrollbar-thumb { border-radius:6px; border-width:2px; border-style:solid; }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Messagebox */
|
||||
#message-container { position: fixed; top: 1rem; right: 1px; display: flex; flex-direction: column; gap: 0.5rem; z-index: 1000; max-height: 80vh; padding-left: 15px; overflow-y: auto; overflow-x: visible; scrollbar-width: none; -ms-overflow-style: none; }
|
||||
#message-container::-webkit-scrollbar { display: none; }
|
||||
.message { border-radius: 8px; margin: 8px 8px 8px 0; padding: 10px 14px; width: auto; max-width: 45vw; animation: slideIn 0.4s ease-out; transition: transform 0.2s ease; word-break: break-word; overflow-wrap: anywhere; }
|
||||
.message:hover { transform:scale(1.02); }
|
||||
.message-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; }
|
||||
.message-title { flex:1; font-weight:600; }
|
||||
.countdown { margin-right:8px; white-space:nowrap; }
|
||||
.pin-div { margin-left:8px; cursor:var(--theme-cursor-pointer) -16 16, pointer; user-select:none; transition:transform 0.2s ease, color 0.2s ease; }
|
||||
.pin-div:hover { transform:scale(1.2); }
|
||||
.pin-div.pinned { transform:scale(1.1); }
|
||||
@keyframes slideIn { 0% { opacity:0; transform:translateX(100%); } 60% { opacity:1; transform:translateX(-10px); } 80% { opacity:1; transform:translateX(5px); } 100% { opacity:1; transform:translateX(-10px); } }
|
||||
@keyframes slideOut { 0% { opacity:1; transform:translateX(0); } 100% { opacity:1; transform:translateX(100%); } }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Toggle switch */
|
||||
/*
|
||||
<label class="cb cb-switch">
|
||||
<input data-status="{{name}}" type="checkbox" {{#if active}}checked{{/if}} >
|
||||
<span class="switch-track" aria-hidden="true">
|
||||
<span class="switch-thumb" aria-hidden="true"></span>
|
||||
</span>
|
||||
<span class="cb-label">Ein / Aus</span>
|
||||
</label>
|
||||
*/
|
||||
.cb-switch { --w:45px; --h:27px; display:inline-flex; align-items:center; }
|
||||
.cb-switch input { position:absolute; opacity:0; width:0; height:0; pointer-events:none; }
|
||||
.switch-track { width:var(--w); height:var(--h); border-radius:999px; padding:3px; border-width:1px; border-style:solid; box-sizing:border-box; display:inline-flex; align-items:center; transition:background .18s ease, transform .12s ease, border-color .25s ease; }
|
||||
.switch-thumb { min-width:calc(var(--h) - 2 * 3px); width:calc(var(--h) - 2 * 3px); height:calc(var(--h) - 2 * 3px); background:var(--theme-switch-thumb); border-radius:50%; box-shadow:0 2px 6px rgba(0,0,0,.15); transform:translateX(-1px); transition:transform .25s cubic-bezier(.2,.9,.2,1), background .18s ease }
|
||||
|
||||
|
||||
|
||||
.cb-switch input:disabled + .switch-track { background-color: dimgray;}
|
||||
.cb-switch input:disabled + .switch-track .switch-thumb { background-color: rgb(54, 50, 50); }
|
||||
|
||||
.cb-switch input:not(:disabled):checked + .switch-track { background:var(--theme-switch-active); }
|
||||
|
||||
.cb-switch input:not(:disabled):hover + .switch-track { border-color:var(--theme-switch-hover); }
|
||||
|
||||
.cb-switch input:focus-visible + .switch-track { box-shadow:0 0 0 6px rgba(6,193,103,0.12); }
|
||||
.cb-switch input:checked + .switch-track .switch-thumb { transform:translateX(calc(var(--w) - var(--h))); }
|
||||
.cb-switch label { width: calc(100% - var(--w)); }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region CheckBox */
|
||||
/*
|
||||
<label class="cb cb-modern">
|
||||
<input data-status="{{name}}" type="checkbox" {{#if active}}checked{{/if}} disabled>
|
||||
<span class="cb-box" aria-hidden="true"></span>
|
||||
</label>
|
||||
*/
|
||||
.cb { display:inline-flex; align-items:center; gap:10px; user-select:none; transform:translateY(2px); }
|
||||
.cb input { position:absolute; opacity:0; width:0; height:0; pointer-events:none; }
|
||||
.cb-box { width:20px; height:20px; border-radius:6px; background:var(--theme-checkbox-backcolor); border-width:2px; border-style:solid; display:inline-grid; place-items:center; transition:transform .12s ease, border-color .12s ease, background .12s ease; }
|
||||
.cb-box::after { content:""; width:12px; height:8px; transform:scale(0) translateY(-2px); background-repeat:no-repeat; background-position:center; background-size:contain; background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 4L4 7l7-7' stroke='%23fff' stroke-width='2' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); transition:transform .18s cubic-bezier(.2,.9,.2,1); }
|
||||
.cb input:checked + .cb-box { transform:translateY(-1px); }
|
||||
.cb input:checked + .cb-box::after { transform:scale(1) translate(-1px, 1px); }
|
||||
table .cb input:checked + .cb-box::after { transform:scale(1) translate(1px, 1px); }
|
||||
.cb input:focus-visible + .cb-box { outline:none; }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Required */
|
||||
.is-required-empty { border-width:2px; border-style:solid; }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Tabs */
|
||||
.tabs { display: flex; margin-bottom: 10px; border-bottom-width: 2px; border-bottom-style: solid; }
|
||||
.tab { padding: 10px 20px; border: 1px solid transparent; border-top-left-radius: 5px; border-top-right-radius: 5px; margin-right: 5px; transition: background .25s, color .25s, border-color .25s; }
|
||||
.tab-content { border-width: 1px; border-style: solid; border-radius: 5px; padding: 15px; }
|
||||
.item { margin-bottom: 5px; }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region Feebox */
|
||||
.feedbox-overlay { position:fixed; top:0; left:0; width:100vw; height:100vh; display:flex; align-items:center; justify-content:center; z-index:999; }
|
||||
.feedbox { border-radius:8px; max-width:50vw; width:100%; padding:20px; animation:feedboxFadeIn 0.2s ease-out; max-height:80vh; display:flex; flex-direction:column; overflow:hidden; }
|
||||
.feedbox h3 { margin:0 0 10px 0; }
|
||||
.feedbox-message { margin-bottom:20px; line-height:1.4; flex:1; overflow-y: auto; /* font-size:1rem; */ }
|
||||
.feedbox-actions { display:flex; justify-content:flex-end; gap:10px; flex-wrap:wrap; flex-shrink:0; }
|
||||
@keyframes feedboxFadeIn { from { transform:translateY(-20px); opacity:0; } to { transform:translateY(0); opacity:1; } }
|
||||
|
||||
.feedbox-btn {
|
||||
padding:6px 14px;
|
||||
/* font-size:0.95rem; */
|
||||
border-radius:4px;
|
||||
border:1px solid #ccc;
|
||||
background:#f5f5f5;
|
||||
transition:all 0.15s;
|
||||
}
|
||||
|
||||
.feedbox-btn:hover {
|
||||
background:#e5e5e5;
|
||||
}
|
||||
|
||||
.feedbox-btn.primary {
|
||||
background:#4a90e2;
|
||||
color:#fff;
|
||||
border-color:#4a90e2;
|
||||
}
|
||||
|
||||
.feedbox-btn.primary:hover {
|
||||
background:#357ABD;
|
||||
}
|
||||
|
||||
.feedbox-btn.danger {
|
||||
background:#e94e3c;
|
||||
color:#fff;
|
||||
border-color:#e94e3c;
|
||||
}
|
||||
|
||||
.feedbox-btn.danger:hover {
|
||||
background:#c0392b;
|
||||
}
|
||||
|
||||
.feedbox-input {
|
||||
width:100%;
|
||||
padding:6px 8px;
|
||||
/* font-size:0.95rem; */
|
||||
margin-top:8px;
|
||||
margin-bottom:12px;
|
||||
border:1px solid #ccc;
|
||||
border-radius:4px;
|
||||
box-sizing:border-box;
|
||||
}
|
||||
|
||||
.feedbox-btn:focus, .feedbox-input:focus {
|
||||
outline:2px solid #4a90e2;
|
||||
outline-offset:2px;
|
||||
}
|
||||
|
||||
/* Responsive Small Screens */
|
||||
@media (max-width:400px) {
|
||||
.feedbox {
|
||||
padding:15px;
|
||||
}
|
||||
|
||||
.feedbox-actions {
|
||||
flex-direction:column-reverse;
|
||||
gap:8px;
|
||||
}
|
||||
|
||||
.feedbox-btn {
|
||||
width:100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* #endregion */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.select-wrapper {
|
||||
position: relative;
|
||||
width: 250px;
|
||||
}
|
||||
|
||||
.select-wrapper select {
|
||||
width: 100%;
|
||||
padding: 12px 40px 12px 14px;
|
||||
font-size: 16px;
|
||||
border: 2px solid #ddd;
|
||||
border-radius: 10px;
|
||||
background-color: #fff;
|
||||
color: #333;
|
||||
appearance: none; /* entfernt Standard-Styling */
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
/* Hover / Focus */
|
||||
.select-wrapper select:hover {
|
||||
border-color: #999;
|
||||
}
|
||||
|
||||
.select-wrapper select:focus {
|
||||
outline: none;
|
||||
border-color: #4a90e2;
|
||||
box-shadow: 0 0 0 3px rgba(74,144,226,0.2);
|
||||
}
|
||||
|
||||
/* Custom Pfeil */
|
||||
.select-wrapper::after {
|
||||
content: "▾";
|
||||
position: absolute;
|
||||
right: 14px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
pointer-events: none;
|
||||
font-size: 14px;
|
||||
color: #666;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.error-field { padding:12px 16px; border-radius:10px; border-width:1px; border-style:solid; }
|
||||
.success-field { border-width: 1px; border-style: solid; padding:12px 16px; border-radius:10px; }
|
||||
|
||||
label { color:var(--muted); display:block; margin-bottom:6px; }
|
||||
|
||||
|
||||
/* #region Dropzone */
|
||||
.dropzone {
|
||||
max-width:360px;
|
||||
padding:12px;
|
||||
box-shadow:0 6px 18px rgba(0,0,0,.08);
|
||||
|
||||
background:var(--theme-dropzone-default-backcolor);
|
||||
|
||||
border:1px dashed #aaa;
|
||||
border-radius:8px;
|
||||
padding:10px;
|
||||
/* font-size:13px; */
|
||||
text-align:center;
|
||||
margin-bottom:8px;
|
||||
color:var(--theme-dropzone-default-color);
|
||||
}
|
||||
|
||||
.dropzone.active {
|
||||
border-color:var(--theme-dropzone-active-border-color);
|
||||
color:var(--theme-dropzone-active-color);
|
||||
background:var(--theme-dropzone-active-backcolor);
|
||||
}
|
||||
|
||||
|
||||
.dropzone-area ul {
|
||||
list-style:none;
|
||||
padding:0;
|
||||
margin:0;
|
||||
max-height:120px;
|
||||
overflow-y:auto;
|
||||
}
|
||||
|
||||
.dropzone-area li {
|
||||
display:flex;
|
||||
justify-content:space-between;
|
||||
align-items:center;
|
||||
/* font-size:13px; */
|
||||
padding:4px 0;
|
||||
border-bottom:1px solid #eee;
|
||||
}
|
||||
|
||||
button.removeButton {
|
||||
border:none;
|
||||
background:none;
|
||||
color:#d11a2a;
|
||||
cursor:var(--theme-cursor-pointer) -16 16, pointer;
|
||||
/* font-size:14px; */
|
||||
}
|
||||
|
||||
input[type="file"] {
|
||||
display:none;
|
||||
}
|
||||
|
||||
tr.drop-hover {
|
||||
outline:3px dashed var(--theme-dropzone-active-border-color);
|
||||
/* outline:2px dashed var(--primary-color, #4a90e2);
|
||||
background:rgba(74, 144, 226, 0.08); */
|
||||
}
|
||||
|
||||
tr.no-drop-hover {
|
||||
outline:3px dashed red;
|
||||
cursor:no-drop !important;
|
||||
/* outline:2px dashed var(--primary-color, #4a90e2);
|
||||
background:rgba(74, 144, 226, 0.08); */
|
||||
}
|
||||
|
||||
/* #endregion */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* #region Multiselect textbox */
|
||||
.mst-wrapper {
|
||||
position:relative;
|
||||
display:block;
|
||||
border-radius:4px;
|
||||
padding:4px 8px;
|
||||
background:var(--theme-window-backcolor);
|
||||
|
||||
cursor:text;
|
||||
width:300px; /* optional, je nach gewünschter Breite */
|
||||
}
|
||||
|
||||
/* Eingabefeld oben */
|
||||
.mst-input {
|
||||
width:100%;
|
||||
border:none;
|
||||
outline:none;
|
||||
/* font-size:14px; */
|
||||
padding:4px 0;
|
||||
}
|
||||
|
||||
/* Container für Chips unterhalb des Inputs */
|
||||
.mst-chips-container {
|
||||
display:flex;
|
||||
flex-wrap:wrap; /* Chips umbrechen */
|
||||
gap:4px;
|
||||
margin-top:4px;
|
||||
}
|
||||
|
||||
/* Einzelner Chip */
|
||||
.mst-chip {
|
||||
display:inline-flex;
|
||||
align-items:center;
|
||||
background-color:#007bff;
|
||||
color:#fff;
|
||||
border-radius:8px;
|
||||
padding:8px 8px;
|
||||
/* font-size:13px; */
|
||||
}
|
||||
|
||||
/* Entfernen-Button im Chip */
|
||||
.mst-chip-remove {
|
||||
margin-left:4px;
|
||||
cursor:var(--theme-cursor-pointer) -16 16, pointer;
|
||||
font-weight:bold;
|
||||
}
|
||||
|
||||
/* Dropdown-Liste */
|
||||
.mst-dropdown {
|
||||
position:absolute;
|
||||
top:100%;
|
||||
left:0;
|
||||
right:0;
|
||||
max-height:200px;
|
||||
overflow-y:auto;
|
||||
border:1px solid #ccc;
|
||||
background:inherit;
|
||||
z-index:1000;
|
||||
}
|
||||
|
||||
.mst-item {
|
||||
padding:6px 8px;
|
||||
cursor:var(--theme-cursor-pointer) -16 16, pointer;
|
||||
}
|
||||
|
||||
.mst-item:hover {
|
||||
background-color:var(--theme-accent-hover-backcolor);
|
||||
}
|
||||
|
||||
.mst-item.new {
|
||||
font-style:italic;
|
||||
color:#555;
|
||||
}
|
||||
|
||||
/* #endregion */
|
||||
|
||||
|
||||
.tutorial-highlight {
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
79
public/styles/jsonTree.css
Normal file
79
public/styles/jsonTree.css
Normal file
@@ -0,0 +1,79 @@
|
||||
.json-controls {
|
||||
position: sticky;
|
||||
top: -8px;
|
||||
backdrop-filter: blur(5px);
|
||||
padding: 8px;
|
||||
border-bottom: 2px solid var(--theme-window-titlebar-backcolor);
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.json-controls button {
|
||||
background: var(--theme-window-backcolor) !important;
|
||||
color: var(--theme-window-color) !important;
|
||||
}
|
||||
|
||||
.json-line {
|
||||
padding: 3px 0;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
.json-key {
|
||||
color: #d73a49;
|
||||
}
|
||||
|
||||
.json-input {
|
||||
padding: 3px 8px;
|
||||
border: none;
|
||||
background: transparent;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.json-input.string {
|
||||
color: #032f62;
|
||||
}
|
||||
|
||||
.json-input.number {
|
||||
color: #005cc5;
|
||||
}
|
||||
|
||||
.json-toggle {
|
||||
cursor:var(--theme-cursor-pointer) -16 16, pointer;
|
||||
color: #6f42c1;
|
||||
}
|
||||
|
||||
.json-children {
|
||||
padding: 3px 0;
|
||||
}
|
||||
|
||||
.json-children.collapsed {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.json-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.json-add {
|
||||
cursor:var(--theme-cursor-pointer) -16 16, pointer;
|
||||
color: #28a745;
|
||||
opacity: 0.7;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.json-add:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.json-remove {
|
||||
cursor:var(--theme-cursor-pointer) -16 16, pointer;
|
||||
color: #dc3545;
|
||||
opacity: 0.6;
|
||||
margin-left: 6px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.json-remove:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
217
public/styles/os.css
Normal file
217
public/styles/os.css
Normal file
@@ -0,0 +1,217 @@
|
||||
/* public/css/desktop.css */
|
||||
body, html { margin:0; padding:0; height:100%; overflow: hidden; font-family: var(--fontFamily); font-size: var(--fontSize); }
|
||||
#desktop { position:relative; height:100vh; overflow:hidden; background-size:var(--theme-desktop-background-size); background-repeat: no-repeat; background-position: center; touch-action: none; }
|
||||
|
||||
#windows { z-index: 1; position:absolute; inset:0; padding:8px; box-sizing:border-box; }
|
||||
.window { position:absolute; width: 800px; height: 600px; border-radius:6px; box-shadow: 0 6px 20px rgba(0,0,0,0.4); overflow:hidden; top:50px; left:50px; display:flex; flex-direction:column; resize:both; }
|
||||
.window-titlebar { padding: 0 0 1px 0; height: 28px; display:flex; justify-content:space-between; align-items:center; }
|
||||
.window-icon { height: 20px; background-size:contain; transform: translate(1px, -1px); background-repeat: no-repeat; background-position: left; background-color: rgb(144, 179, 144); padding:4px;border-radius: 8px;}
|
||||
.window-content { display: flex; flex-direction: column; flex:1; padding:8px; overflow: auto; }
|
||||
.window .controls button { transition: background-color .3s, color .3s; padding: 6px 10px; border:none; }
|
||||
.window[class="max"] .window-resize-handle { display: none; }
|
||||
.window-resize-handle { position:absolute; right:0; bottom:0; width:12px; height:12px; cursor:se-resize; z-index: 10; }
|
||||
.window-resize-n { top: -4px; left: 0; right: 0; height: 8px; cursor: n-resize; }
|
||||
.window-resize-s { bottom: -4px; left: 0; right: 0; height: 8px; cursor: s-resize; }
|
||||
.window-resize-e { right: -4px; top: 0; bottom: 0; width: 8px; cursor: e-resize; }
|
||||
.window-resize-w { left: -4px; top: 0; bottom: 0; width: 8px; cursor: w-resize; }
|
||||
.window-resize-ne { top: -4px; right: -4px; width: 12px; height: 12px; cursor: ne-resize; }
|
||||
.window-resize-nw { top: -4px; left: -4px; width: 12px; height: 12px; cursor: nw-resize; }
|
||||
.window-resize-se { bottom: -4px; right: -4px; width: 12px; height: 12px; cursor: se-resize; }
|
||||
.window-resize-sw { bottom: -4px; left: -4px; width: 12px; height: 12px; cursor: sw-resize; }
|
||||
|
||||
|
||||
#taskbar { z-index: 2; position: absolute; width:100%; bottom:0; left:0; height:42px; overflow:visible; display:flex; flex: 0 0 auto; min-width:0; align-items:center; padding:0 8px; box-sizing:border-box; }
|
||||
#start-btn { transition: background-color 0.3s ease; padding: 8px 15px; border-radius: 5px; border: none; margin-right:8px; }
|
||||
#taskbar-windows { display:flex; gap:6px; align-items:center; flex:1; overflow-y:hidden;overflow-x: auto; min-width: 0; }
|
||||
.taskbar-item { display: flex; position: relative; padding:7px 10px; border-radius:4px; }
|
||||
.taskbar-item::before { content: ''; position: absolute; bottom:1px; left:50%; width:40%; height: 4px; border-radius:4px; transform:translateX(-50%) scaleX(0); transform-origin:center; transition:transform 0.3s ease; }
|
||||
.taskbar-item.focus::before { transform: translateX(-50%) scaleX(1); }
|
||||
|
||||
.notify-button { margin-left:auto; flex: 0 0 auto; display: flex; align-items: center; justify-content: center; }
|
||||
.notify-button.resume, .notify-button.pulse { animation: pulse 1.5s infinite; animation-play-state: running; }
|
||||
.notify-button.pause, .notify-button.pause *, .notify-button.active, .notify-button.active * { animation-play-state: paused; }
|
||||
|
||||
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
transform: scale(1);
|
||||
}
|
||||
50% {
|
||||
transform: scale(1.1);
|
||||
}
|
||||
100% {
|
||||
transform: scale(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.hidden { opacity: 0; pointer-events: none; }
|
||||
|
||||
/* Open submenu vertical */
|
||||
#start-menu { z-index: 2; transition: opacity 0.3s; display:flex; flex-direction:column; position: absolute; bottom: 50px; left: 8px; width: auto; min-width: 300px; border-radius: 8px; overflow: hidden; }
|
||||
.start-header { display: flex; align-items: center; padding: 8px; font-weight: 600; }
|
||||
.start-header > img { height: 24px; width: 24px; margin-right: 5px; }
|
||||
.start-list { list-style: none; margin: 0; padding: 8px 0; height: 60vh; overflow-y: auto; }
|
||||
.start-item { padding: 8px 12px 16px 20px; display: flex; gap: 8px; transition: background 0.2s; border-radius: 4px; }
|
||||
.start-item:not(:has(.submenu)) { padding: 12px;align-items:center; }
|
||||
.start-icon, #start-menu-icon { height: 20px; width: 20px; border-radius: 8px; padding:4px; }
|
||||
.menu-label { display: block; margin-top: 4px; padding-bottom: 0; margin-left: 26px }
|
||||
.start-item.has-submenu { position: relative; display: flex; flex-direction: column; padding-bottom: 8px; }
|
||||
.start-item.has-submenu > .submenu { width: 100%; list-style: none; padding-left: 2px; max-height: 0; overflow: hidden; transition: max-height 0.3s ease; margin: 2px 0 0 8px; }
|
||||
|
||||
.start-item-sys-container { position: relative; left:0; bottom: -8px; padding: 5px 0px; width:100%; display:flex; height:30px; flex-direction:row; justify-content:flex-end; }
|
||||
.start-sys-item { margin: 0 10px 0 8px !important; }
|
||||
|
||||
.start-submenu-head { position: relative; margin-left: 16px; height:32px; display:flex; flex-direction: row; align-items: center; gap:8px; }
|
||||
.start-item.has-submenu > .menu-label::after { content: ""; position: absolute; right: 14px; transform: translateY(50%) rotate(0deg); border: 5px solid transparent; border-top-color: #aaa; transition: transform 0.3s; }
|
||||
.start-item.has-submenu.open > .menu-label::after { content: ""; position: absolute; right: 14px; transform: translateY(50%) rotate(180deg); border: 5px solid transparent; border-top-color: #aaa; transition: transform 0.3s; }
|
||||
.start-item.has-submenu.open > .submenu { max-height: 500px; }
|
||||
.start-item.has-submenu > .submenu li { opacity: 0; transform: translateY(-5px); transition: opacity 0.2s, transform 0.2s; }
|
||||
.start-item.has-submenu.open > .submenu li { opacity: 1; transform: translateY(0); }
|
||||
|
||||
|
||||
img.icon { width: auto; height:20px; object-fit: contain; filter: var(--theme-notifybubble-filter); transform: translate(2px, 2px) }
|
||||
|
||||
|
||||
|
||||
|
||||
@media (max-width: 768px) {
|
||||
|
||||
body, html {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#desktop {
|
||||
height: 100dvh;
|
||||
}
|
||||
|
||||
/* Fenster = Fullscreen */
|
||||
.window {
|
||||
width: 100% !important;
|
||||
height: calc(100% - 54px) !important;
|
||||
top: 0 !important;
|
||||
left: 0 !important;
|
||||
border-radius: 0;
|
||||
resize: none;
|
||||
}
|
||||
|
||||
.window-resize-handle {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.window-titlebar {
|
||||
height: 29px;
|
||||
padding: 0 0px;
|
||||
}
|
||||
|
||||
.window-content {
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
/* Taskbar größer für Touch */
|
||||
#taskbar {
|
||||
height: 50px;
|
||||
padding: 0 6px;
|
||||
}
|
||||
|
||||
#start-btn {
|
||||
padding: 10px 14px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.taskbar-item {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.start-list { list-style: none; margin: 0; padding: 8px 0; height: 100%; overflow-y: auto; }
|
||||
|
||||
#start-menu {
|
||||
bottom: 50px !important;
|
||||
height: calc(100dvh - 65px) !important;
|
||||
width: calc(100dvw - 5px);
|
||||
left: 0 !important;
|
||||
border-radius: 0 !important;
|
||||
} */
|
||||
|
||||
.start-item {
|
||||
padding: 14px;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.start-icon {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
}
|
||||
|
||||
.start-item.has-submenu > .menu-label { margin: 8px 0 0 40px; }
|
||||
|
||||
.start-item-sys-container { margin:auto; bottom: -10px; }
|
||||
|
||||
|
||||
|
||||
/* Buttons besser klickbar */
|
||||
.window .controls button {
|
||||
padding: 10px 12px;
|
||||
}
|
||||
|
||||
/* Notify Button */
|
||||
.notify-button {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media (max-width: 1000px) AND (orientation: landscape) {
|
||||
|
||||
body, html {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#desktop {
|
||||
height: 100dvh;
|
||||
}
|
||||
/* Fenster IMMER fullscreen */
|
||||
.window {
|
||||
width: 100% !important;
|
||||
height: calc(100dvh - 46px) !important;
|
||||
top: 0 !important;
|
||||
left: 0 !important;
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
/* Resize komplett aus */
|
||||
.window-resize-handle {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.window-titlebar {
|
||||
height: 30px;
|
||||
padding: 0 0px;
|
||||
}
|
||||
|
||||
|
||||
/* Startmenü bis ganz oben */
|
||||
#start-menu {
|
||||
bottom: 44px !important;
|
||||
height: calc(100dvh - 60px) !important;
|
||||
width: 300px;
|
||||
max-width: 35dvw;
|
||||
left: 0 !important;
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
/* Taskbar bleibt sichtbar, aber oben drüber sauber */
|
||||
#taskbar {
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
/* Startliste nutzt volle Höhe */
|
||||
.start-list {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.start-item-sys-container { bottom: -10px;}
|
||||
|
||||
|
||||
.start-item.has-submenu > .menu-label { margin: 8px 0 0 28px; }
|
||||
}
|
||||
86
public/styles/table.css
Normal file
86
public/styles/table.css
Normal file
@@ -0,0 +1,86 @@
|
||||
/* .table-wrapper { display:grid; grid-column:auto; overflow:auto; min-height:0; min-width:0;} */
|
||||
.table-wrapper { overflow:auto; min-width:0; }
|
||||
|
||||
.table-wrapper.fit-table { grid-template-columns:calc(1fr - 150px); }
|
||||
/* .table-wrapper { flex:1 1 auto; overflow-y:auto; } */
|
||||
/* .table-wrapper.fit-table { width:100%; max-width:100%; } */
|
||||
/* .table-wrapper.fit-table th.word-wrap, .table-wrapper.fit-table td.word-wrap { white-space:normal; word-wrap:break-word; word-break:break-word; overflow-wrap:anywhere; } */
|
||||
|
||||
|
||||
/* #region Dont's */
|
||||
th.no-wrap, td.no-wrap { white-space:nowrap !important; }
|
||||
th.wrap, td.wrap { white-space:wrap; word-wrap: break-word; word-break: keep-all; }
|
||||
table.no-background tr, table.no-background td { background:none !important; }
|
||||
|
||||
table.border * { border:1px solid white; }
|
||||
/* #endregion */
|
||||
|
||||
|
||||
/* #region performance optimizing */
|
||||
table thead { position:sticky; top:0; z-index:20; will-change:transform; transform:translateZ(0);}
|
||||
|
||||
|
||||
/* #endregion */
|
||||
/* echte Tabelle */
|
||||
table { width:calc(100%); border-spacing:0 5px; }
|
||||
table th, table td { min-width:100px; max-width:250px; overflow:hidden; white-space:nowrap; }
|
||||
|
||||
table tr.grouprow:hover { background: rgba(0,0,0,0.05);}
|
||||
|
||||
/* Header sticky — aber innerhalb echter Tabelle */
|
||||
thead th { position:sticky; top:var(--filter-height); }
|
||||
|
||||
/* KEIN display:block mehr! */
|
||||
thead, tbody { display:table-row-group; }
|
||||
|
||||
|
||||
table thead th { padding:5px; }
|
||||
/* table tbody td { padding:5px 0px 5px 20px; } */
|
||||
table tbody td:not(:first-child):not(:last-child), table thead th:not(:first-child):not(:last-child) { border-width:0; border-style:solid; }
|
||||
table tbody tr.grouprow { font-weight:700; }
|
||||
|
||||
table .text-align\:center { text-align:center; }
|
||||
table .text-align\:right { text-align:right; }
|
||||
table .text-align\:left { text-align:left; }
|
||||
|
||||
td { overflow:hidden; text-overflow:ellipsis; /* verhindert, dass Inhalt die Zelle sprengt */ }
|
||||
|
||||
.table-filter-container {
|
||||
border-bottom-width:8px;
|
||||
border-bottom-style:solid;
|
||||
display:flex;
|
||||
justify-content:flex-start;
|
||||
flex-direction:column;
|
||||
flex-wrap:wrap;
|
||||
gap:10px;
|
||||
|
||||
position:sticky;
|
||||
left:0px;
|
||||
top:0px;
|
||||
/* z-index:20; */
|
||||
padding:5px 10px;
|
||||
border-radius:var(--border-raduis) var(--border-raduis) 0 0;
|
||||
}
|
||||
.table-filter-container .live-counter { position:absolute; right:18px; margin-left:auto; font-weight:bold; }
|
||||
.table-filter-container input, .table-filter-container select { padding:5px !important; }
|
||||
|
||||
|
||||
th.sort-asc::after {
|
||||
content:" ▲";
|
||||
}
|
||||
|
||||
th.sort-desc::after {
|
||||
content:" ▼";
|
||||
}
|
||||
|
||||
|
||||
td.vote { width:28px; height:28px; position:relative; padding:0; }
|
||||
|
||||
td.vote:hover { background:rgba(0,0,0,0.05); /* cursor:pointer;*/ }
|
||||
td.vote::before,
|
||||
td.vote::after { position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); }
|
||||
td.yes::before { content:""; width:8px; height:16px; border:solid #2ecc71; border-width:0 3px 3px 0; transform:translate(-50%, -60%) rotate(45deg); }
|
||||
td.no::before, td.no::after { content:""; width:3px; height:18px; background:#e74c3c; }
|
||||
td.no::before { transform:translate(-50%, -50%) rotate(45deg); }
|
||||
td.no::after { transform:translate(-50%, -50%) rotate(-45deg); }
|
||||
td.maybe::before { content:""; width:0px; height:0px; border-radius:50%; border:10px solid #f1c40f; transform:translate(-50%, -50%); }
|
||||
67
public/styles/userNotification.css
Normal file
67
public/styles/userNotification.css
Normal file
@@ -0,0 +1,67 @@
|
||||
/* Bubble-Container */
|
||||
#notify-bubble {
|
||||
position: absolute;
|
||||
bottom: 125%;
|
||||
right: 3px;
|
||||
min-width: 200px;
|
||||
max-height: 50vh;
|
||||
width: max-content; /* 🔑 wächst mit Inhalt */
|
||||
max-width: 600px; /* aber capped */
|
||||
background: var(--theme-taskbar-tray-backcolor);
|
||||
color: var(--theme-taskbar-tray-color);
|
||||
border-color: var(--theme-taskbar-tray-border-color);
|
||||
border-radius: 10px;
|
||||
overflow-y: auto; /* vertikal scrollen */
|
||||
overflow-x: hidden; /* horizontal verhindern */
|
||||
box-shadow: 0 8px 20px rgba(0,0,0,0.4);
|
||||
padding: 10px 10px 6px 10px;
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transform: translateY(10px);
|
||||
transition: all 0.25s ease;
|
||||
z-index: 99999999;
|
||||
text-align: end;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Bubble-Items als Grid */
|
||||
.bubble-item {
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, auto) 250px;
|
||||
gap: 10px;
|
||||
padding: 6px 8px;
|
||||
border-radius: 6px;
|
||||
/* cursor: pointer; */
|
||||
align-items: center;
|
||||
transition: transform 0.25s;
|
||||
|
||||
}
|
||||
|
||||
/* linke Spalte */
|
||||
.bubble-item > :nth-child(1) {
|
||||
min-width: 0; /* wichtig für Grid Shrink */
|
||||
white-space: normal; /* Text darf umbrechen */
|
||||
overflow-wrap: normal; /* Wörter nur bei Bedarf umbrechen */
|
||||
word-break: normal; /* nicht mitten in Wörtern */
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* rechte Spalte fix */
|
||||
.bubble-item > :nth-child(2) {
|
||||
width: 250px;
|
||||
height: 50px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* hover Effekt */
|
||||
.bubble-item:hover {
|
||||
background: rgba(64,64,64,0.4);
|
||||
transform: scale(1.01);
|
||||
}
|
||||
|
||||
/* Bubble sichtbar machen */
|
||||
.notify-button.active #notify-bubble {
|
||||
pointer-events: auto;
|
||||
opacity:1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
Reference in New Issue
Block a user