UNPKG

@betha-plataforma/estrutura-componentes

Version:

Coleção de Web Components para compor a estrutura de uma aplicação front-end da Betha Sistemas.

622 lines (602 loc) 17.2 kB
@charset "UTF-8"; *, *:after, *:before { padding: 0; margin: 0; box-sizing: border-box; line-height: 1.5; } * { font-family: var(--bth-app-font-family-primary); } a:focus { outline: 1px dotted var(--bth-app-gray-dark-30); } ::-webkit-scrollbar { -webkit-appearance: none; height: 6px; width: 6px; } ::-webkit-scrollbar-track { background: var(--bth-app-gray-light-30); } ::-webkit-scrollbar-corner { background: var(--bth-app-gray-light-40); } ::-webkit-scrollbar-thumb { background-color: var(--bth-app-gray); border-radius: 1px; } ::-webkit-scrollbar-thumb:hover { background-color: rgba(255, 255, 255, 0.3); } /** * Carta de Serviços Cidadão Digital * Controla visibilidade do menu-horizontal e menu-vertical através das variáveis * "--bth-app-carta-servicos-display" e "--bth-app-carta-servicos-visibility" */ .app { display: grid; height: 100vh; margin: 0; overflow: hidden; padding: 0 !important; background: transparent; font-size: 14px; grid-template: "banner banner" "menu-horizontal menu-horizontal" max-content "menu container" 1fr/minmax(0px, max-content) 1fr; } slot[name=container_contexto] { display: flex; flex-direction: row; align-items: center; border-bottom: 1px solid var(--bth-app-gray-light-10); margin: 0 16px; display: var(--bth-app-carta-servicos-display, flex); visibility: var(--bth-app-carta-servicos-visibility, unset); } .banner { display: flex; flex-direction: row; grid-area: banner; justify-content: center; align-items: center; overflow: hidden; padding: 0 16px; position: relative; transition: max-height var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1), padding var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1), height var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1), top var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); vertical-align: middle; width: 100%; height: 40px; max-height: 0px; } .banner--show { max-height: 40px; } .banner__content { line-height: 1.5; margin: 0 4px; max-width: 95%; } .banner__content > a { color: var(--bth-app-gray-dark-40); text-decoration: underline; margin-left: 24px; } .banner__content > span { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; max-width: 100%; } .banner__content > span ~ a { max-width: 85%; } .banner__content > button { background-color: transparent; border: 1px solid var(--bth-app-gray-dark-40); color: #222; text-transform: uppercase; text-align: center; padding: 0 12px; height: 28px; margin-left: 12px; cursor: pointer; } .banner__content > button:hover { background-color: #00000013; } .banner__icon { font-size: 18px; line-height: 1.5; margin: 0 4px; } .banner--warning { background-color: var(--bth-app-yellow-light-10); } .banner--info { background-color: var(--bth-app-aqua-light-20); } .banner--danger { background-color: var(--bth-app-red-light-20); } .app-container { grid-area: container; overflow: auto; } .menu-ferramentas__mobile { position: fixed; display: flex; flex-direction: column-reverse; justify-content: flex-end; background-color: var(--bth-app-gray-light-40); z-index: 1070; padding: 0px 16px; top: 50px; height: calc(100vh - 50px); width: 100%; transform: translateX(100%); transition: transform var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1), opacity var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); } .menu-ferramentas__mobile--banner { top: 125px; height: calc(100vh - 125px); } .menu-ferramentas__mobile--show { opacity: 1; transform: translateX(0); } .menu-horizontal { /** * @prop --bth-app-menu-bg-color: Cor de fundo do menu horizontal */ background-color: var(--bth-app-menu-bg-color); color: var(--bth-app-gray-light-40); height: 40px; grid-area: menu-horizontal; width: 100%; display: var(--bth-app-carta-servicos-display, unset); visibility: var(--bth-app-carta-servicos-visibility, unset); } .menu-horizontal__link--disabled { opacity: 0.5; pointer-events: none; } .menu-horizontal__body { width: 100%; height: 100%; } .menu-horizontal__list { display: flex; list-style: none; width: 100%; height: 100%; padding: 0px; } .menu-horizontal__list .menu-horizontal__item--has-list { flex: 1; } .menu-horizontal__list .menu-horizontal__item--has-list > .menu-horizontal__list { list-style: none; display: flex; justify-content: left; width: 100%; padding: 0 18px 0 0; } .menu-horizontal__list .menu-horizontal__item .menu-vertical__toggle { text-decoration: none; padding: 13px 15px 9px 15px; } .menu-horizontal__list .menu-horizontal__item .menu-vertical__toggle:before { content: "󰍜"; font-size: 20px; color: var(--bth-app-gray-light-40); font-family: var(--bth-app-font-family-icons); line-height: 40px; } .menu-horizontal__list .menu-horizontal__item .menu-vertical__toggle:hover, .menu-horizontal__list .menu-horizontal__item .menu-vertical__toggle:focus { background-color: rgba(255, 255, 255, 0.15); text-decoration: none; } .menu-horizontal__list .menu-horizontal__item .menu-vertical__toggle:focus { outline: 1px dotted var(--bth-app-gray-light-10); outline-offset: -2px; } .menu-horizontal__list .menu-horizontal__item .menu-ferramentas { list-style: none; display: flex; justify-content: flex-end; flex-direction: row; width: 100%; height: 100%; padding: 0; } .menu-horizontal__list .menu-horizontal__item .menu-ferramentas > li { position: relative; padding: 0px 6px; } .menu-horizontal__list .menu-horizontal__item .menu-ferramentas > li > a { text-decoration: none; } .menu-horizontal__list .menu-horizontal__item .menu-ferramentas > li > a > bth-icone { color: var(--bth-app-gray-light-40); font-size: 16px; margin: 11px 6px; } .menu-horizontal__list .menu-horizontal__item .menu-ferramentas > li > a .badge-danger--notificacao { font-size: 11px; font-weight: var(--bth-app-font-weight-semi-bold); padding: 2px 5px; position: absolute; right: 5px; top: 5px; } .menu-horizontal__list .menu-horizontal__item .menu-ferramentas > li:hover, .menu-horizontal__list .menu-horizontal__item .menu-ferramentas > li:focus { background-color: rgba(255, 255, 255, 0.15); text-decoration: none; } .menu-horizontal__list .menu-horizontal__item .menu-ferramentas > li:focus { outline: 1px dotted var(--bth-app-gray-dark-30); outline-offset: -1px; } .badge { background-color: var(--bth-app-gray-light-10); border-radius: 50px; color: var(--bth-app-gray-dark-30); font-size: 12px; font-weight: var(--bth-app-font-weight-light); padding: 3px 6px; text-align: center; } .badge.badge-danger { background-color: var(--bth-app-red); color: var(--bth-app-gray-light-40); } .badge.badge-danger--notificacao-small { padding: 0 2px; right: 14px; top: 10px; position: absolute; height: 11px; width: 11px; } .menu-vertical { background-color: var(--bth-app-gray-light-30); display: flex; flex-direction: column; grid-area: menu; transition: width var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); width: 230px; border-right: 1px solid var(--bth-app-gray-light-10); height: calc(100vh - 40px); top: 40px; display: var(--bth-app-carta-servicos-display, flex); visibility: var(--bth-app-carta-servicos-visibility, unset); } .menu-vertical__body { flex: 1; overflow-x: hidden; overflow-y: overlay; } .menu-vertical__footer { display: none; } .menu-vertical__footer--show { display: block; } .menu-vertical__list { list-style: none; margin: 0; padding: 0; } .menu-vertical__item { position: relative; } .menu-vertical__item > a { align-items: center; display: flex; width: 100%; color: var(--bth-app-gray-dark-20); font-weight: var(--bth-app-font-weight-regular); height: 44px; text-decoration: none; overflow: hidden; padding: 0px 9px 0px 0px; } .menu-vertical__item > a:focus { outline: 1px dotted var(--bth-app-gray-dark-30); outline-offset: -1px; } .menu-vertical__item > a:hover, .menu-vertical__item > a:focus { background-color: #e1e3e6; text-decoration: none; color: var(--bth-app-gray-dark-30); } .menu-vertical__item > a > bth-icone:first-child, .menu-vertical__item > a > bth-icone:last-child { display: block; margin: auto 16px; min-width: 18px; width: 18px; font-size: 18px; } .menu-vertical__item > a > span { flex: 1; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; max-width: 100%; } .menu-vertical__item > .menu-vertical__list { border-top: 0; max-height: 100vh; overflow: hidden; transition: max-height var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); } .menu-vertical__item--active { background-color: var(--bth-app-gray-light-10); } .menu-vertical__item--active > a bth-icone, .menu-vertical__item--active > a span { color: var(--bth-app-blue-dark-10); } .menu-vertical__item--active > a span { font-weight: var(--bth-app-font-weight-semi-bold); } .menu-vertical__item--active:before { content: ""; position: absolute; border: 2px var(--bth-app-blue) solid; top: 0; bottom: 0; z-index: 1; } .menu-vertical__item--collapsed bth-icone:last-child { transform: rotate(0.5turn); } .menu-vertical__item--collapsed > .menu-vertical__list { max-height: 0; } .menu-vertical__item--floating { background-color: var(--bth-app-gray-light-20); border-top: 0; } .menu-vertical__item--floating > a > span { opacity: 0; } .menu-vertical__item--floating > a:hover > bth-icone:last-of-type { transform: rotate(0.1turn); transition: transform var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); } .menu-vertical__item--floating > a:hover > span { opacity: 1; transition: opacity var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); } .menu-vertical--collapsed { width: 50px; position: absolute; z-index: 1049; } .menu-vertical--collapsed:not(:hover) { transition: width var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); } .menu-vertical--collapsed-hover { width: 230px; transition: width var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); } .menu-vertical--collapsed:not(.menu-vertical--floating) ~ .app-container { margin-left: 50px; } .menu-vertical--collapsed.menu-vertical--floating { width: 0; visibility: hidden; transition: width var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1), visibility var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); } .menu-vertical--collapsed.menu-vertical--floating .menu-vertical__item--floating bth-icone:last-child { display: none; } .menu-vertical--floating { position: absolute; z-index: 1069; } .menu-vertical--floating .menu-vertical__item--floating > a > bth-icone:last-of-type { transform: rotate(0.1turn); transition: transform var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); } .menu-vertical--floating .menu-vertical__item--floating > a > span { opacity: 0; transition: opacity var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); } .menu-vertical--floating .menu-vertical__item--floating > a:hover > bth-icone:last-of-type { transform: rotate(0turn); transition: transform var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); } .menu-vertical--floating .menu-vertical__item--floating > a:hover > span { opacity: 1; transition: opacity var(--bth-app-transition-delay) cubic-bezier(0.5, 0, 0.1, 1); } .banner--show ~ .menu-vertical { height: calc(100vh - 80px); top: 80px; } @media (max-width: 991px) { .menu-vertical { height: calc(100vh - 40px); top: 40px; width: 310px; } .menu-vertical--banner { height: calc(100vh - 115px); top: 115px !important; } .menu-vertical--floating { position: absolute; z-index: 1069; } .menu-vertical__item .menu-vertical__list .menu-vertical__item > a { height: 48px; font-size: 16px; } .menu-vertical__item > a { height: 54px; font-size: 18px; } .menu-vertical__item > a > bth-icone:first-child, .menu-vertical__item > a > bth-icone:last-child { font-size: 20px; } .menu-vertical__item > a > bth-icone > span { max-width: 100%; } .menu-vertical__item > a--floating { display: none; } .menu-vertical__item > a--has-children > a { font-weight: var(--bth-app-font-weight-regular); } .menu-vertical .banner ~ .menu-vertical { height: calc(100vh - 125px) !important; top: 125px !important; } .banner { height: 75px; } .banner--show { max-height: 75px; } .banner__content { margin: 9px 16px; max-width: 95%; } .banner__content > span { display: block; display: -webkit-box; max-width: 100%; min-height: 15.4px; margin: 0 auto; font-size: 14px; line-height: 1.1; -webkit-line-clamp: 2; /* autoprefixer: off */ -webkit-box-orient: vertical; /* autoprefixer: on */ overflow: hidden; text-overflow: ellipsis; white-space: unset; } .banner__content > a { vertical-align: top; } } @media (max-width: 991px) { .menu-vertical { width: 100%; height: calc(100vh - 50px); top: 50px; } .menu-horizontal { height: 50px; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-vertical__toggle { padding: 0 13px !important; width: 47px; align-items: center; display: flex; justify-content: center; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-vertical__toggle:before { font-size: 22px !important; line-height: 50px !important; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-vertical__toggle:after { content: "󰅖"; font-size: 22px; color: var(--bth-app-gray-light-40); font-family: var(--bth-app-font-family-icons); line-height: 50px; display: none; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-vertical__toggle--opened { background-color: rgba(255, 255, 255, 0.2); } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-vertical__toggle--opened:before { display: none; margin-right: 5px; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-vertical__toggle--opened:after { display: unset; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item--has-list { display: none; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-ferramentas > li { width: 47px; align-items: center; display: flex; justify-content: center; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-ferramentas > li > a > bth-icone { color: var(--bth-app-gray-light-40); font-size: 18px; margin: 6px 8px; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-ferramentas > li:last-child .menu-ferramentas__mobile-toggler { padding: 0px 13px; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-ferramentas > li:last-child .menu-ferramentas__mobile-toggler:before { content: "󰇙"; font-size: 22px; font-weight: 500; color: var(--bth-app-gray-light-40); font-family: var(--bth-app-font-family-icons); line-height: 50px; display: unset; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-ferramentas > li:last-child .menu-ferramentas__mobile-toggler:after { content: "󰅖"; font-size: 22px; font-weight: 500; color: var(--bth-app-gray-light-40); font-family: var(--bth-app-font-family-icons); line-height: 50px; display: none; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-ferramentas > li:last-child .menu-ferramentas__mobile-toggler--opened { background-color: rgba(255, 255, 255, 0.2); } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-ferramentas > li:last-child .menu-ferramentas__mobile-toggler--opened:before { display: none; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-ferramentas > li:last-child .menu-ferramentas__mobile-toggler--opened:after { display: unset; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-ferramentas > li:last-child .menu-ferramentas__mobile-toggler--opened .badge-danger--notificacao-small:empty { display: none; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-ferramentas > li:last-child .menu-ferramentas__mobile-toggler .badge-danger--notificacao-small { padding: 0px 4px; right: 14px; top: 10px; position: absolute; font-size: 11px; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item .menu-ferramentas > li:last-child .menu-ferramentas__mobile-toggler .badge-danger--notificacao-small:empty { display: inherit; } .menu-horizontal .menu-horizontal__body .menu-horizontal__item:last-child { flex: 1; } .banner--show ~ .menu-vertical { height: calc(100vh - 125px); top: 125px; } } @media print { .banner { display: none; } .menu-horizontal { display: none; } .menu-vertical { display: none; } }