| | |
| | | outline: none!important; |
| | | padding: 0!important; |
| | | } |
| | | |
| | | .dashboard > header { |
| | | justify-content: flex-end; |
| | | } |
| | | .dashboard > header img { |
| | | width: var(--height); |
| | | } |
| | | .dashboard h1:first-of-type { |
| | | margin-top: 0!important; |
| | | margin-top: 4rem!important; |
| | | } |
| | | main > footer { |
| | | max-width: 100%!important; |
| | |
| | | /******************************************** |
| | | GRID VIEW |
| | | ********************************************/ |
| | | .item-grid { |
| | | margin-bottom: 4rem; |
| | | } |
| | | .item-grid:has(.select-item:checked) .item { |
| | | padding: 2rem; |
| | | padding: .75rem; |
| | | opacity : .8; |
| | | filter: var(--filter); |
| | | } |
| | |
| | | gap: .25rem; |
| | | margin-left: 2rem; |
| | | } |
| | | .selected-count::before { |
| | | content: '{'; |
| | | } |
| | | .selected-count::after { |
| | | content: '}'; |
| | | } |
| | | .selected-count::before { |
| | | content: '{'; |
| | | } |
| | | .selected-count::after { |
| | | content: '}'; |
| | | } |
| | | |
| | | .bulk-edit-form .selected { |
| | | display: grid; |
| | |
| | | .controls .icon { |
| | | --w: 1.4rem; |
| | | } |
| | | .all-filters .btn + label, |
| | | .all-filters button { |
| | | height: fit-content; |
| | | padding: .5rem!important; |
| | | min-width: 0; |
| | | min-height: 0; |
| | | } |
| | | .all-filters .btn + label:hover, |
| | | .all-filters .btn + label:focus, |
| | | .all-filters button:hover, |
| | | .all-filters button:focus { |
| | | background-color: transparent; |
| | | color: var(--action-0); |
| | | border-color: var(--action-0); |
| | | } |
| | | /****************************************************** |
| | | SEARCH |
| | | ******************************************************/ |
| | |
| | | .tab-content h2 { |
| | | display: none; |
| | | } |
| | | /*********************************************************** |
| | | CREATE ITEM |
| | | ***********************************************************/ |
| | | .create-item { |
| | | left: auto!important; |
| | | right: 1rem; |
| | | bottom: var(--offHeight)!important; |
| | | } |
| | | |
| | | /********************************************************** |
| | | HOURS |
| | | **********************************************************/ |
| | |
| | | .dash [type=submit] { |
| | | width: 90%; |
| | | } |
| | | .dashboard.dash h2 { |
| | | text-transform: none; |
| | | font-size: var(--large); |
| | | } |
| | | .dashboard.dash .replace > ul { |
| | | display: flex; |
| | | list-style: none; |
| | | align-items: flex-start; |
| | | justify-content: flex-start; |
| | | flex-wrap: wrap; |
| | | gap: .5rem; |
| | | } |
| | | .dashboard.settings nav.tabs { |
| | | --height: 3.5rem; |
| | | --x: var(--offHeight); |
| | |
| | | transition: all var(--transition-base); |
| | | box-shadow: var(--shadow); |
| | | } |
| | | .integration.connected { |
| | | border-color: var(--success); |
| | | } |
| | | .integration.error, |
| | | .integration.disconnected { |
| | | border-color: var(--error); |
| | | } |
| | | .integration.hasChanges { |
| | | border-color: var(--warning); |
| | | } |
| | | .integration.connected { |
| | | border-color: var(--success); |
| | | } |
| | | .integration.error, |
| | | .integration.disconnected { |
| | | border-color: var(--error); |
| | | } |
| | | .integration.hasChanges { |
| | | border-color: var(--warning); |
| | | } |
| | | .integration .header { |
| | | margin-bottom: .75rem; |
| | | padding-bottom: .75rem; |
| | |
| | | .integration .setup .indicator { |
| | | font-size: var(--medium); |
| | | } |
| | | .integration .connected .indicator, |
| | | .integration .setup .connected { |
| | | color: var(--success); |
| | | } |
| | | .integration .disconnected .indicator, |
| | | .integration .setup .disconnected { |
| | | color: var(--error); |
| | | } |
| | | .integration.hasChanges .disconnected { |
| | | color: var(--warning); |
| | | } |
| | | .integration .connected .indicator, |
| | | .integration .setup .connected { |
| | | color: var(--success); |
| | | } |
| | | .integration .disconnected .indicator, |
| | | .integration .setup .disconnected { |
| | | color: var(--error); |
| | | } |
| | | .integration.hasChanges .disconnected { |
| | | color: var(--warning); |
| | | } |
| | | |
| | | .connection-status.connected { |
| | | background-color: var(--successBack); |
| | | color: var(--successText); |
| | | } |
| | | .connection-status.disconnected { |
| | | background-color: var(--errorBack); |
| | | color: var(--errorText); |
| | | } |
| | | .connection-status.connected { |
| | | background-color: var(--successBack); |
| | | color: var(--successText); |
| | | } |
| | | .connection-status.disconnected { |
| | | background-color: var(--errorBack); |
| | | color: var(--errorText); |
| | | } |
| | | |
| | | .integration code { |
| | | display: inline-block; |
| | | width: 90%; |
| | | margin: 0 .5rem; |
| | | user-select: all; |
| | | padding: .75rem; |
| | | border: 2px solid var(--base); |
| | | background-color: var(--base-200); |
| | | word-break: break-all; |
| | | } |
| | | .integration details + details { |
| | | margin-top: 1rem; |
| | | } |
| | | .integration .actions { |
| | | margin-top: 1rem; |
| | | } |
| | | .integration code { |
| | | display: inline-block; |
| | | width: 90%; |
| | | margin: 0 .5rem; |
| | | user-select: all; |
| | | padding: .75rem; |
| | | border: 2px solid var(--base); |
| | | background-color: var(--base-200); |
| | | word-break: break-all; |
| | | } |
| | | .integration details + details { |
| | | margin-top: 1rem; |
| | | } |
| | | .integration .actions { |
| | | margin-top: 1rem; |
| | | } |
| | | |
| | | .hint { |
| | | line-height: 1.2; |
| | | font-style: italic; |
| | | font-size: var(--small); |
| | | } |
| | | .hint { |
| | | line-height: 1.2; |
| | | font-style: italic; |
| | | font-size: var(--small); |
| | | } |
| | | |
| | | .hasChanges button[data-action=save_credentials] { |
| | | border-color: var(--warning); |
| | | animation: pulse-color 1s infinite; |
| | | animation-delay: 1s; |
| | | } |
| | | .hasChanges button[data-action=save_credentials] { |
| | | border-color: var(--warning); |
| | | animation: pulse-color 1s infinite; |
| | | animation-delay: 1s; |
| | | } |
| | | |
| | | .flash { |
| | | animation: flash .5s; |
| | | } |
| | | .flash.connected { |
| | | --b: var(--success); |
| | | } |
| | | .flash.disconnected { |
| | | --b: var(--error); |
| | | } |
| | | .flash.syncing { |
| | | --b: var(--success); |
| | | } |
| | | .flash.hasChanges, |
| | | .flash.error { |
| | | --b: var(--warning); |
| | | } |
| | | .flash { |
| | | animation: flash .5s; |
| | | } |
| | | .flash.connected { |
| | | --b: var(--success); |
| | | } |
| | | .flash.disconnected { |
| | | --b: var(--error); |
| | | } |
| | | .flash.syncing { |
| | | --b: var(--success); |
| | | } |
| | | .flash.hasChanges, |
| | | .flash.error { |
| | | --b: var(--warning); |
| | | } |
| | | |
| | | @keyframes flash { |
| | | 0%, 100% {border-color: inherit} |
| | | 50% {border-color: var(--b)} |
| | | } |
| | | @keyframes flash { |
| | | 0%, 100% {border-color: inherit} |
| | | 50% {border-color: var(--b)} |
| | | } |
| | | |
| | | .location.field { |
| | | width: 80vw; |
| | | } |
| | | .location.field > p { |
| | | text-align: center; |
| | | } |
| | | .location.field > p + p { |
| | | margin: 0 .5rem 0 0; |
| | | } |
| | | .location.field .location-map { |
| | | height: 20vh; |
| | | } |
| | | .location.field .location-links { |
| | | padding: .5rem 0; |
| | | display: flex; |
| | | justify-content: space-evenly; |
| | | } |
| | | |
| | | .item-grid .item, |
| | | .field.upload [data-upload-id] { |
| | | touch-action: none; |
| | | } |
| | | |
| | | .empty-state { |
| | | grid-column: 1/-1; |
| | | padding: 1rem 10vw; |
| | | margin: 0 10vw; |
| | | border-radius: var(--outerRadius); |
| | | background-color: var(--base-100); |
| | | } |
| | | |
| | | /****************** TEST ***/ |
| | | .jvb-oauth-connect { |
| | | position: relative; |
| | | transition: opacity 0.2s; |
| | | } |
| | | |
| | | .jvb-oauth-connect.loading { |
| | | opacity: 0.6; |
| | | pointer-events: none; |
| | | } |
| | | |
| | | .jvb-oauth-connect.loading::after { |
| | | content: ''; |
| | | position: absolute; |
| | | right: -30px; |
| | | top: 50%; |
| | | transform: translateY(-50%); |
| | | width: 16px; |
| | | height: 16px; |
| | | border: 2px solid #ccc; |
| | | border-top-color: #0073aa; |
| | | border-radius: 50%; |
| | | animation: oauth-spin 0.8s linear infinite; |
| | | } |
| | | |
| | | @keyframes oauth-spin { |
| | | to { transform: translateY(-50%) rotate(360deg); } |
| | | } |
| | | |
| | | /* Status Messages */ |
| | | .integration-status-message { |
| | | padding: 12px 16px; |
| | | margin: 16px 0; |
| | | border-radius: 4px; |
| | | display: none; |
| | | font-size: 14px; |
| | | line-height: 1.5; |
| | | } |
| | | |
| | | .integration-status-message.success { |
| | | display: block; |
| | | background: #d4edda; |
| | | color: #155724; |
| | | border-left: 4px solid #28a745; |
| | | } |
| | | |
| | | .integration-status-message.error { |
| | | display: block; |
| | | background: #f8d7da; |
| | | color: #721c24; |
| | | border-left: 4px solid #dc3545; |
| | | } |
| | | |
| | | .integration-status-message.info { |
| | | display: block; |
| | | background: #d1ecf1; |
| | | color: #0c5460; |
| | | border-left: 4px solid #17a2b8; |
| | | } |
| | | |
| | | /* Connection Status Indicator */ |
| | | .connection-status { |
| | | display: inline-flex; |
| | | align-items: center; |
| | | gap: 8px; |
| | | padding: 6px 12px; |
| | | border-radius: 4px; |
| | | font-size: 13px; |
| | | font-weight: 500; |
| | | } |
| | | |
| | | .connection-status.connected { |
| | | background: #d4edda; |
| | | color: #155724; |
| | | } |
| | | |
| | | .connection-status.disconnected { |
| | | background: #f8d7da; |
| | | color: #721c24; |
| | | } |
| | | |
| | | .status-indicator { |
| | | font-size: 10px; |
| | | line-height: 1; |
| | | } |
| | | |
| | | .connection-status.connected .status-indicator { |
| | | color: #28a745; |
| | | } |
| | | |
| | | .connection-status.disconnected .status-indicator { |
| | | color: #dc3545; |
| | | } |
| | | |