add homekeeper stack
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
ui <- function() {
|
||||
bslib::page(
|
||||
fillable = FALSE,
|
||||
theme = bslib::bs_theme(version = 5, primary = "#f59e0b"),
|
||||
lang = "de",
|
||||
title = "Beekeeper",
|
||||
|
||||
shiny::tags$style(shiny::HTML("
|
||||
body { background: #fafaf9; }
|
||||
.bk-header {
|
||||
background: #78350f; color: white;
|
||||
position: sticky; top: 0; z-index: 100;
|
||||
padding: .75rem 1rem;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,.3);
|
||||
min-height: 56px;
|
||||
}
|
||||
.bk-header h5 { color: white; margin: 0; font-size: 1.05rem; font-weight: 600; }
|
||||
.bk-header h4 { color: white; margin: 0; font-size: 1.2rem; font-weight: 700; letter-spacing: -.01em; }
|
||||
.bk-header .btn-link {
|
||||
color: rgba(255,255,255,.9) !important; text-decoration: none;
|
||||
}
|
||||
.bk-header-icon {
|
||||
padding: .35rem .45rem; border-radius: .4rem; line-height: 1; flex-shrink: 0;
|
||||
}
|
||||
.bk-header-icon:hover { background: rgba(255,255,255,.18) !important; color: white !important; }
|
||||
.collapse-toggle { cursor: pointer; user-select: none; }
|
||||
.collapse-toggle .collapse-chevron { transition: transform .2s ease; }
|
||||
.collapse-toggle:not(.collapsed) .collapse-chevron { transform: rotate(180deg); }
|
||||
.bk-content { max-width: 680px; margin: 0 auto; padding: 1rem 1rem 4rem; }
|
||||
.tap-card { cursor: pointer; transition: box-shadow .15s; }
|
||||
.tap-card:hover { box-shadow: 0 0 0 3px #f59e0b44; }
|
||||
.tap-card:active { box-shadow: 0 0 0 3px #f59e0b; }
|
||||
.action-btn {
|
||||
display: flex; flex-direction: column;
|
||||
align-items: center; justify-content: center;
|
||||
height: 80px; gap: .35rem;
|
||||
font-size: .82rem; font-weight: 600;
|
||||
border-radius: 12px;
|
||||
}
|
||||
.action-btn .fa, .action-btn .fas, .action-btn .far { font-size: 1.4rem; }
|
||||
.stepper-val {
|
||||
min-width: 2.8rem; display: inline-block;
|
||||
text-align: center; font-size: 1.3rem; font-weight: 700;
|
||||
}
|
||||
.bk-check .form-check { margin: 0; }
|
||||
.bk-check .form-check-input {
|
||||
width: 3em; height: 1.5em; margin-top: 0; cursor: pointer;
|
||||
}
|
||||
.add-dashed {
|
||||
border: 2px dashed #ccc; background: transparent;
|
||||
border-radius: 8px; cursor: pointer; width: 100%;
|
||||
min-height: 100px; color: #888;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
gap: .5rem; flex-direction: column; font-weight: 600;
|
||||
}
|
||||
.add-dashed:hover { border-color: #f59e0b; color: #f59e0b; background: #fffbeb; }
|
||||
.leaflet-container { border-radius: 8px; }
|
||||
.leaflet-top, .leaflet-bottom { z-index: 50 !important; }
|
||||
#ss-connect-dialog, .shiny-disconnected-overlay { display: none !important; }
|
||||
")),
|
||||
|
||||
shiny::tags$script(shiny::HTML("
|
||||
$(document).on('shown.bs.modal', function() {
|
||||
setTimeout(function() { window.dispatchEvent(new Event('resize')); }, 150);
|
||||
});
|
||||
|
||||
history.pushState({bk: true}, '');
|
||||
window.addEventListener('popstate', function() {
|
||||
history.pushState({bk: true}, '');
|
||||
if (window.Shiny) Shiny.setInputValue('nav_back', Date.now(), {priority: 'event'});
|
||||
});
|
||||
|
||||
setInterval(function() {
|
||||
if (window.Shiny && Shiny.shinyapp && Shiny.shinyapp.isConnected())
|
||||
Shiny.setInputValue('keepalive_ping', Date.now());
|
||||
}, 25000);
|
||||
")),
|
||||
shiny::uiOutput("nav_header"),
|
||||
shiny::div(class = "bk-content",
|
||||
shiny::uiOutput("screen_content")
|
||||
)
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user